The Chandlery Update (feat. wax crafting) (#35863)
* Chandlery * derp * herp * color * that just makes sense * recycle candles * alright * IT'S A FEATURE * it just makes sense * offset * This way we can also blow off the flame of flammin drinks * blood candle food * water will extinguish candles on snacks too
@@ -14,3 +14,5 @@
|
||||
#define COLOR_LINEN "#E5E4DC"
|
||||
#define COLOR_RADIUM "#61F09A"
|
||||
#define COLOR_GLUE "#FFFFCC"
|
||||
#define COLOR_BEESWAX "#FFB700"
|
||||
#define COLOR_DEFAULT_CANDLE "#BE0000"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#define MAT_CARDBOARD "$cardboard"
|
||||
#define MAT_WOOD "$wood"
|
||||
#define MAT_FABRIC "$fabric"
|
||||
#define MAT_WAX "$wax"
|
||||
#define MAT_BRASS "$brass"
|
||||
#define MAT_RALLOY "$ralloy"
|
||||
#define MAT_ICE "$ice"
|
||||
@@ -44,6 +45,9 @@
|
||||
#define VALUE_MYTHRIL 1
|
||||
#define VALUE_TELECRYSTAL 1
|
||||
|
||||
//wax sheets
|
||||
#define WAX_PER_HONEYCOMB 4
|
||||
#define WAX_SHEETS_PER_POWDER 0.2
|
||||
|
||||
#define CC_PER_SHEET_MISC 2000
|
||||
|
||||
@@ -65,6 +69,7 @@
|
||||
#define CC_PER_SHEET_CARDBOARD CC_PER_SHEET_METAL
|
||||
#define CC_PER_SHEET_WOOD CC_PER_SHEET_METAL
|
||||
#define CC_PER_SHEET_FABRIC CC_PER_SHEET_METAL
|
||||
#define CC_PER_SHEET_WAX CC_PER_SHEET_METAL
|
||||
#define CC_PER_SHEET_BRASS CC_PER_SHEET_METAL
|
||||
#define CC_PER_SHEET_RALLOY CC_PER_SHEET_METAL
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#define MELTPOINT_PLASMA (MELTPOINT_STEEL+500)
|
||||
#define MELTPOINT_SILICON 1687 // KELVIN
|
||||
#define MELTPOINT_PLASTIC (180+T0C)
|
||||
#define MELTPOINT_WAX (65+T0C)
|
||||
#define MELTPOINT_SNOW 304.15 //about 30°C
|
||||
#define MELTPOINT_CARBON (T0C+3550)
|
||||
#define MELTPOINT_GOLD (T0C+1064)
|
||||
|
||||
@@ -530,6 +530,7 @@
|
||||
#define ACETONE "acetone"
|
||||
#define NANOPAINT "nano_paint"
|
||||
#define FLAXOIL "flax_oil"
|
||||
#define WAX "wax"
|
||||
|
||||
// How many units of reagent are consumed per tick, by default.
|
||||
#define REAGENTS_METABOLISM 0.2
|
||||
|
||||
@@ -1114,6 +1114,7 @@ var/default_colour_matrix = list(1,0,0,0,\
|
||||
#define RECYK_WOOD 6
|
||||
#define RECYK_PLASTIC 7
|
||||
#define RECYK_FABRIC 8
|
||||
#define RECYK_WAX 9
|
||||
|
||||
////////////////
|
||||
// job.info_flags
|
||||
@@ -1895,3 +1896,8 @@ var/list/weekend_days = list("Friday", "Saturday", "Sunday")
|
||||
#define PAINTLIGHT_NONE 0 //regular paint
|
||||
#define PAINTLIGHT_LIMITED 1 //radium, lights up on canvas, limited color mixing
|
||||
#define PAINTLIGHT_FULL 2 //nano paint, lights up floors as well
|
||||
|
||||
//Candles on snacks
|
||||
#define CANDLES_NONE 0
|
||||
#define CANDLES_UNLIT 1
|
||||
#define CANDLES_LIT 2
|
||||
|
||||
@@ -1919,19 +1919,26 @@ var/list/arcane_tomes = list()
|
||||
desc = "A candle made out of blood moth wax, burns much longer than regular candles. Used for moody lighting and occult rituals."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "bloodcandle"
|
||||
item_state = "bloodcandle"
|
||||
food_candle = "foodbloodcandle"
|
||||
color = null
|
||||
|
||||
wax = 1200 // 20 minutes
|
||||
wax = 3600 // 60 minutes
|
||||
trashtype = /obj/item/trash/blood_candle
|
||||
|
||||
/obj/item/candle/blood/update_icon()
|
||||
overlays.len = 0
|
||||
var/i
|
||||
if(wax > 800)
|
||||
i = 1
|
||||
else if(wax > 400)
|
||||
i = 2
|
||||
else i = 3
|
||||
icon_state = "bloodcandle[i]"
|
||||
if (wax == initial(wax))
|
||||
icon_state = "bloodcandle"
|
||||
else
|
||||
var/i
|
||||
if(wax > 2400)
|
||||
i = 1
|
||||
else if(wax > 1200)
|
||||
i = 2
|
||||
else i = 3
|
||||
icon_state = "bloodcandle[i]"
|
||||
update_blood_overlay()
|
||||
if (lit)
|
||||
var/image/I = image(icon,src,"[icon_state]_lit")
|
||||
I.blend_mode = BLEND_ADD
|
||||
@@ -1941,6 +1948,16 @@ var/list/arcane_tomes = list()
|
||||
I.plane = ABOVE_HUD_PLANE // inventory
|
||||
overlays += I
|
||||
|
||||
//dynamic in-hands
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, "bloodcandle_lit")
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, "bloodcandle_lit")
|
||||
left_I.blend_mode = BLEND_ADD
|
||||
left_I.plane = ABOVE_LIGHTING_PLANE
|
||||
right_I.blend_mode = BLEND_ADD
|
||||
right_I.plane = ABOVE_LIGHTING_PLANE
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
|
||||
/obj/item/trash/blood_candle
|
||||
name = "blood candle"
|
||||
desc = "A candle made out of blood moth wax, burns much longer than regular candles. Used for moody lighting and occult rituals."
|
||||
|
||||
@@ -630,7 +630,7 @@
|
||||
else
|
||||
var/choices = list(
|
||||
list("Talisman", "radial_paraphernalia_talisman", "Can absorb runes (or attune to them in some cases), allowing you to carry their power in your pocket. Has a few other miscellaneous uses."),
|
||||
list("Blood Candle", "radial_paraphernalia_candle", "A candle that can burn up to 20 minutes. Offers moody lighting."),
|
||||
list("Blood Candle", "radial_paraphernalia_candle", "A candle that can burn up to a full hour. Offers moody lighting."),
|
||||
list("Tempting Goblet", "radial_paraphernalia_goblet", "A classy holder for your beverage of choice. Prank your enemies by hitting them with a goblet full of blood."),
|
||||
list("Coffer", "radial_paraphernalia_coffer", "Keep your occult lab orderly by storing your cult paraphernalia in those coffers."),
|
||||
list("Ritual Knife", "radial_paraphernalia_knife", "A long time ago a wizard enchanted one of those to infiltrate the realm of Nar-Sie and steal some soul stone shards. Now it's just a cool knife. Don't rely on it in a fight though."),
|
||||
|
||||
@@ -333,11 +333,11 @@ var/list/apiaries_list = list()
|
||||
H.reagents.clear_reagents()
|
||||
H.reagents.add_reagent(NUTRIMENT, 0.5)
|
||||
H.icon_state = "[species.prefix]honeycomb-base"
|
||||
H.overlays.len = 0 // removing the one added in the honeycomb's New()
|
||||
H.overlays += I
|
||||
H.extra_food_overlay.overlays.len = 0 // removing the one added in the honeycomb's New()
|
||||
H.extra_food_overlay.overlays += I
|
||||
H.update_icon()
|
||||
reagents.trans_to(H,reagents_per_honeycomb)
|
||||
H.authentify()
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/apiary/proc/empty_beehive()
|
||||
|
||||
@@ -458,6 +458,8 @@
|
||||
return
|
||||
|
||||
/obj/machinery/microwave/proc/adjust_cooked_food_reagents_temperature(atom/cooked, datum/recipe/cookedrecipe)
|
||||
if (!cooked.reagents)
|
||||
return
|
||||
//Put the energy used during the cooking into heating the reagents of the food.
|
||||
|
||||
var/cooktime = 10 SECONDS //Use a default to account for burned messes, etc.
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
var/time = 40
|
||||
|
||||
/datum/food_processor_process/proc/process(loc, what)
|
||||
if (src.output && loc)
|
||||
new src.output(loc)
|
||||
if (output && loc)
|
||||
new output(loc)
|
||||
if (what)
|
||||
QDEL_NULL(what)
|
||||
|
||||
@@ -97,10 +97,21 @@
|
||||
|
||||
|
||||
/datum/food_processor_process/food/process(loc, var/obj/what)
|
||||
var/processed = new src.output(loc)
|
||||
var/processed = new output(loc)
|
||||
what.reagents.trans_to(processed, what.reagents.total_volume)
|
||||
qdel(what)
|
||||
|
||||
/* beeswax */
|
||||
/datum/food_processor_process/beeswax
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/honeycomb
|
||||
output = /obj/item/stack/sheet/wax
|
||||
|
||||
/datum/food_processor_process/beeswax/process(loc, var/obj/what)
|
||||
var/obj/item/stack/sheet/wax/processed_wax = new (loc)
|
||||
processed_wax.amount = WAX_PER_HONEYCOMB
|
||||
processed_wax.color = mix_color_from_reagents(what.reagents.reagent_list)
|
||||
qdel(what)
|
||||
|
||||
/* mobs */
|
||||
/datum/food_processor_process/mob/slime
|
||||
input = /mob/living/carbon/slime
|
||||
|
||||
@@ -1333,7 +1333,21 @@ var/global/objects_thrown_when_explode = FALSE
|
||||
had_blood = TRUE
|
||||
return TRUE //we applied blood to the item
|
||||
|
||||
|
||||
/obj/item/proc/copy_blood_from_item(var/obj/item/other_item)
|
||||
virus2 = virus_copylist(other_item.virus2)
|
||||
if (!other_item.blood_overlay)
|
||||
return
|
||||
blood_color = other_item.blood_color
|
||||
blood_DNA = other_item.blood_DNA.Copy()
|
||||
had_blood = TRUE
|
||||
if(!blood_overlays["[type][icon_state]"])
|
||||
set_blood_overlay()
|
||||
if(!blood_overlay)
|
||||
blood_overlay = blood_overlays["[type][icon_state]"]
|
||||
else
|
||||
overlays.Remove(blood_overlay)
|
||||
blood_overlay.color = blood_color
|
||||
overlays += blood_overlay
|
||||
|
||||
var/global/list/image/blood_overlays = list()
|
||||
/obj/item/proc/set_blood_overlay() /* If your item needs to update its blood overlay when its icon_state changes, use this one. update_blood_overlay() is simply a helper proc for this one. */
|
||||
|
||||
@@ -1,25 +1,33 @@
|
||||
/obj/item/candle
|
||||
name = "red candle"
|
||||
name = "candle"
|
||||
desc = "A candle made out of wax, used for moody lighting and solar flares."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candle"
|
||||
item_state = "candle1"
|
||||
item_state = "candle"
|
||||
var/food_candle = "foodcandle"
|
||||
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/candles.dmi', "right_hand" = 'icons/mob/in-hand/right/candles.dmi')
|
||||
w_class = W_CLASS_TINY
|
||||
heat_production = 1000
|
||||
source_temperature = TEMPERATURE_FLAME
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
autoignition_temperature = AUTOIGNITION_FABRIC //idk the wick lmao
|
||||
w_type = RECYK_WAX
|
||||
melt_temperature = MELTPOINT_WAX
|
||||
starting_materials = list(MAT_WAX = CC_PER_SHEET_WAX)
|
||||
color = COLOR_DEFAULT_CANDLE
|
||||
|
||||
var/wax = 900
|
||||
var/wax = 1800 // 30 minutes
|
||||
var/lit = 0
|
||||
var/flavor_text
|
||||
var/trashtype = /obj/item/trash/candle
|
||||
var/image/wick
|
||||
var/flickering = 0
|
||||
|
||||
/obj/item/candle/New(turf/loc)
|
||||
..()
|
||||
wick = image(icon,src,"candle-wick")
|
||||
wick.appearance_flags = RESET_COLOR
|
||||
if(world.has_round_started())
|
||||
initialize()
|
||||
update_icon()
|
||||
|
||||
/obj/item/candle/initialize()
|
||||
..()
|
||||
@@ -29,15 +37,24 @@
|
||||
|
||||
/obj/item/candle/update_icon()
|
||||
overlays.len = 0
|
||||
var/i
|
||||
if(wax > 150)
|
||||
i = 1
|
||||
else if(wax > 80)
|
||||
i = 2
|
||||
else i = 3
|
||||
icon_state = "candle[i]"
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = null
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = null
|
||||
if (wax == initial(wax))
|
||||
icon_state = "candle"
|
||||
else
|
||||
var/i
|
||||
if(wax > 1200)
|
||||
i = 1
|
||||
else if(wax > 600)
|
||||
i = 2
|
||||
else i = 3
|
||||
icon_state = "candle[i]"
|
||||
wick.icon_state = "[icon_state]-wick"
|
||||
overlays += wick
|
||||
update_blood_overlay()
|
||||
if (lit)
|
||||
var/image/I = image(icon,src,"[icon_state]_lit")
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.blend_mode = BLEND_ADD
|
||||
if (isturf(loc))
|
||||
I.plane = ABOVE_LIGHTING_PLANE
|
||||
@@ -45,6 +62,21 @@
|
||||
I.plane = ABOVE_HUD_PLANE // inventory
|
||||
overlays += I
|
||||
|
||||
//dynamic in-hands
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, "candle_lit")
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, "candle_lit")
|
||||
left_I.appearance_flags = RESET_COLOR
|
||||
left_I.blend_mode = BLEND_ADD
|
||||
left_I.plane = ABOVE_LIGHTING_PLANE
|
||||
right_I.appearance_flags = RESET_COLOR
|
||||
right_I.blend_mode = BLEND_ADD
|
||||
right_I.plane = ABOVE_LIGHTING_PLANE
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/candle/dropped()
|
||||
..()
|
||||
update_icon()
|
||||
@@ -118,7 +150,7 @@
|
||||
update_icon()
|
||||
return
|
||||
if(!wax)
|
||||
new trashtype(src.loc)
|
||||
new trashtype(src.loc, src)
|
||||
if(istype(src.loc, /mob))
|
||||
src.dropped()
|
||||
qdel(src)
|
||||
@@ -132,6 +164,10 @@
|
||||
lit = 0
|
||||
update_icon()
|
||||
set_light(0)
|
||||
to_chat(user, "<span class='warning'>You pinch \the [src]'s wick.</span>")
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/candle/is_hot()
|
||||
if(lit)
|
||||
@@ -151,22 +187,59 @@
|
||||
if(P.get_damage() != 0)
|
||||
light("", 1)
|
||||
|
||||
/obj/item/candle/afterattack(obj/target, mob/user , flag, params)
|
||||
if(flag == 0)
|
||||
return 0
|
||||
if(istype(target, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/snack = target
|
||||
var/list/params_list = params2list(params)
|
||||
var/image/I = image(icon,snack,food_candle)
|
||||
I.color = color
|
||||
I.pixel_x = clamp(text2num(params_list["icon-x"]) - WORLD_ICON_SIZE/2 - pixel_x,-WORLD_ICON_SIZE/2,WORLD_ICON_SIZE/2)
|
||||
I.pixel_y = clamp(text2num(params_list["icon-y"]) - WORLD_ICON_SIZE/2 - pixel_y,-WORLD_ICON_SIZE/2,WORLD_ICON_SIZE/2)
|
||||
snack.candles += I
|
||||
if (lit && snack.candles_state == CANDLES_UNLIT)
|
||||
to_chat(user, "<span class='notice'>You place \the [name] on top of \the [target], lighting up the other candles in the process.</span>")
|
||||
snack.candles_state = CANDLES_LIT
|
||||
else if (!lit && snack.candles_state == CANDLES_LIT)
|
||||
to_chat(user, "<span class='notice'>You light \the [name] using the other lit candles and add it on top of \the [target].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You place \the [name] on top of \the [target].</span>")
|
||||
if (snack.candles_state == CANDLES_NONE)
|
||||
if (lit)
|
||||
snack.candles_state = CANDLES_LIT
|
||||
else
|
||||
snack.candles_state = CANDLES_UNLIT
|
||||
snack.update_icon()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/candle/holo
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/holocandle
|
||||
name = "holo candle"
|
||||
desc = "A small disk projecting the image of a candle, used for futuristic lighting. It has a multitool port on it for changing colors."
|
||||
icon_state = "holocandle_base"
|
||||
//item_state = "candle1"
|
||||
heat_production = 0
|
||||
source_temperature = 0
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
w_class = W_CLASS_TINY
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
wax = "red" //Repurposed var for the "wax" color.
|
||||
w_type = RECYK_METAL
|
||||
melt_temperature = MELTPOINT_STEEL
|
||||
starting_materials = list(MAT_IRON = 50)
|
||||
|
||||
/obj/item/candle/holo/New()
|
||||
var/wax = "red"
|
||||
var/lit = 0
|
||||
var/flickering = 0
|
||||
|
||||
/obj/item/holocandle/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/candle/holo/update_icon()
|
||||
/obj/item/holocandle/emp_act()
|
||||
lit = 0
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
/obj/item/holocandle/update_icon()
|
||||
overlays.len = 0
|
||||
switch(wax)
|
||||
if("red")
|
||||
@@ -191,24 +264,23 @@
|
||||
I_stick.plane = ABOVE_HUD_PLANE
|
||||
overlays += I_stick
|
||||
|
||||
/obj/item/candle/holo/attack_self(mob/user)
|
||||
/obj/item/holocandle/attack_self(mob/user)
|
||||
lit = !lit
|
||||
update_icon()
|
||||
playsound(src, 'sound/machines/dial_tick.ogg', 10, 1)
|
||||
light("<span class='notice'>[user] flips \the [src]'s switch.</span>")
|
||||
|
||||
/obj/item/candle/holo/attackby(obj/item/weapon/W, mob/user)
|
||||
/obj/item/holocandle/attackby(obj/item/weapon/W, mob/user)
|
||||
var/list/choices = list("red","blue","purple","green","yellow")
|
||||
if(W.is_multitool(user))
|
||||
wax = input("What color would do you want?","Color Selection") as anything in choices
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/candle/holo/light(var/flavor_text = "<span class='notice'>[usr] lights [src].</span>", var/quiet = 0)
|
||||
/obj/item/holocandle/proc/light(var/flavor_text = "<span class='notice'>[usr] lights [src].</span>", var/quiet = 0)
|
||||
if(lit)
|
||||
set_light(CANDLE_LUM,2,light_color)
|
||||
else
|
||||
set_light(0)
|
||||
update_icon()
|
||||
visible_message(flavor_text)
|
||||
|
||||
/obj/item/candle/holo/Crossed()
|
||||
return
|
||||
|
||||
@@ -56,3 +56,28 @@
|
||||
..()
|
||||
new /obj/item/stack/sheet/cloth(loc, 50)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/stack/sheet/wax/times_two/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 2, color)
|
||||
qdel(src)
|
||||
/obj/item/stack/sheet/wax/times_three/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 3, color)
|
||||
qdel(src)
|
||||
/obj/item/stack/sheet/wax/times_four/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 4, color)
|
||||
qdel(src)
|
||||
/obj/item/stack/sheet/wax/times_ten/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 10, color)
|
||||
qdel(src)
|
||||
/obj/item/stack/sheet/wax/bigstack/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 20, color)
|
||||
qdel(src)
|
||||
/obj/item/stack/sheet/wax/biggerstack/New()
|
||||
..()
|
||||
new /obj/item/stack/sheet/wax(get_turf(src), 50, color)
|
||||
qdel(src)
|
||||
|
||||
@@ -294,6 +294,64 @@
|
||||
to_chat(usr, "<span class='info'>Can be used on its own to produce some basic items and clothing, but more can be made using the proper tools.</span>")
|
||||
|
||||
|
||||
/*
|
||||
* Wax
|
||||
*/
|
||||
/obj/item/stack/sheet/wax
|
||||
name = "wax"
|
||||
desc = "Some wax cake, made out of beeswax."
|
||||
singular_name = "wax cake"
|
||||
icon_state = "sheet-wax"
|
||||
item_state = "sheet-wax"
|
||||
origin_tech = Tc_MATERIALS + "=2;" + Tc_BIOTECH + "=2"
|
||||
melt_temperature = MELTPOINT_WAX
|
||||
siemens_coefficient = 0.1
|
||||
w_type = RECYK_WAX
|
||||
starting_materials = list(MAT_FABRIC = CC_PER_SHEET_WAX)
|
||||
mat_type = MAT_WAX
|
||||
perunit = CC_PER_SHEET_WAX
|
||||
color = COLOR_BEESWAX
|
||||
var/image/glint
|
||||
|
||||
/obj/item/stack/sheet/wax/New(loc, amount, var/param_color = null)
|
||||
..()
|
||||
if (param_color)
|
||||
color = param_color
|
||||
if (isobj(loc))
|
||||
var/obj/O = loc
|
||||
if (O.reagents)//most likely a microwave
|
||||
var/datum/reagent/wax/W = O.reagents.get_reagent(WAX)
|
||||
if (W)
|
||||
amount = max(1,round(W.volume * WAX_SHEETS_PER_POWDER))
|
||||
color = W.data["color"]
|
||||
recipes = wax_recipes
|
||||
//adding a glint to both the object
|
||||
glint = image('icons/obj/stacks_sheets.dmi',src,"sheet-wax-glint")
|
||||
glint.blend_mode = BLEND_ADD
|
||||
overlays += glint
|
||||
//and the dynamic in-hand overlay
|
||||
var/image/glintleft = image(inhand_states["left_hand"], src, "sheet-wax-glint")
|
||||
var/image/glintright = image(inhand_states["right_hand"], src, "sheet-wax-glint")
|
||||
glintleft.blend_mode = BLEND_ADD
|
||||
glintright.blend_mode = BLEND_ADD
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = glintleft
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = glintright
|
||||
|
||||
/obj/item/stack/sheet/wax/can_stack_with(obj/item/other_stack)
|
||||
if(ispath(other_stack) && (src.type == other_stack))
|
||||
return (uppertext(color) == COLOR_BEESWAX)
|
||||
|
||||
if (src.type == other_stack.type)
|
||||
if (src.color == other_stack.color)
|
||||
return TRUE
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You cannot stack wax cakes of different colors.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/stack/sheet/wax/copy_evidences(var/obj/item/stack/from)
|
||||
..(from)
|
||||
color = from.color
|
||||
|
||||
/*
|
||||
* Cardboard
|
||||
*/
|
||||
|
||||
@@ -611,6 +611,19 @@ var/list/datum/stack_recipe/cloth_recipes_with_tool = list (
|
||||
new_clothing.update_icon()
|
||||
return R
|
||||
|
||||
/* =========================================================================
|
||||
WAX RECIPES
|
||||
========================================================================= */
|
||||
var/list/datum/stack_recipe/wax_recipes = list (
|
||||
new/datum/stack_recipe/wax("candle", /obj/item/candle ),
|
||||
)
|
||||
|
||||
/datum/stack_recipe/wax/finish_building(var/mob/usr, var/obj/item/stack/S, var/obj/R)
|
||||
R.color = S.color
|
||||
if (R.color in colors_all)
|
||||
R.name = "[colors_all[R.color]] [R.name]"
|
||||
return R
|
||||
|
||||
/* ========================================================================
|
||||
LEATHER RECIPES
|
||||
======================================================================== */
|
||||
|
||||
@@ -211,6 +211,18 @@
|
||||
name = "candle"
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candle4"
|
||||
starting_materials = list(MAT_WAX = (4*CC_PER_SHEET_WAX/5))
|
||||
var/image/wick
|
||||
|
||||
/obj/item/trash/candle/New(turf/loc, var/obj/item/candle/source)
|
||||
..()
|
||||
if (source)
|
||||
color = source.color
|
||||
else
|
||||
color = COLOR_DEFAULT_CANDLE
|
||||
wick = image(icon,src,"candle4-wick")
|
||||
wick.appearance_flags = RESET_COLOR
|
||||
overlays += wick
|
||||
|
||||
/obj/item/trash/liquidfood
|
||||
name = "\improper \"LiquidFood\" ration"
|
||||
|
||||
@@ -73,6 +73,11 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
|
||||
//Also updates the name, the damage and item_state for good measure
|
||||
/obj/item/weapon/match/update_icon()
|
||||
overlays.len = 0
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = null
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = null
|
||||
update_blood_overlay()
|
||||
|
||||
switch(lit)
|
||||
if(1)
|
||||
name = "lit [base_name]"
|
||||
@@ -80,6 +85,22 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
item_state = icon_state
|
||||
damtype = BURN
|
||||
attack_verb = lit_attack_verb
|
||||
|
||||
var/image/I = image(icon,src,"match-light")
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.blend_mode = BLEND_ADD
|
||||
I.plane = LIGHTING_PLANE
|
||||
overlays += I
|
||||
|
||||
//dynamic in-hands
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, "match-light")
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, "match-light")
|
||||
left_I.blend_mode = BLEND_ADD
|
||||
left_I.plane = LIGHTING_PLANE
|
||||
right_I.blend_mode = BLEND_ADD
|
||||
right_I.plane = LIGHTING_PLANE
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
if(0)
|
||||
name = "[base_name]"
|
||||
icon_state = "[base_icon]_unlit"
|
||||
@@ -201,6 +222,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
var/base_icon = "cig"
|
||||
var/burn_on_end = FALSE
|
||||
surgerysound = 'sound/items/cautery.ogg'
|
||||
var/light_icon = "cig-light"
|
||||
|
||||
/obj/item/clothing/mask/cigarette/New()
|
||||
base_name = name
|
||||
@@ -227,6 +249,11 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
|
||||
//Also updates the name, the damage and item_state for good measure
|
||||
/obj/item/clothing/mask/cigarette/update_icon()
|
||||
overlays.len = 0
|
||||
dynamic_overlay["[FACEMASK_LAYER]"] = null
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = null
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = null
|
||||
update_blood_overlay()
|
||||
|
||||
switch(lit)
|
||||
if(1)
|
||||
@@ -235,6 +262,26 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
icon_state = "[base_icon]on"
|
||||
damtype = BURN
|
||||
attack_verb = lit_attack_verb
|
||||
|
||||
var/image/I = image(icon,src,light_icon)
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.blend_mode = BLEND_ADD
|
||||
I.plane = LIGHTING_PLANE
|
||||
overlays += I
|
||||
|
||||
//dynamic in-hands
|
||||
var/image/face_I = image('icons/mob/mask.dmi', src, light_icon)
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, light_icon)
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, light_icon)
|
||||
face_I.blend_mode = BLEND_ADD
|
||||
face_I.plane = LIGHTING_PLANE
|
||||
left_I.blend_mode = BLEND_ADD
|
||||
left_I.plane = LIGHTING_PLANE
|
||||
right_I.blend_mode = BLEND_ADD
|
||||
right_I.plane = LIGHTING_PLANE
|
||||
dynamic_overlay["[FACEMASK_LAYER]"] = face_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
if(0)
|
||||
name = filling ? "[filling] [base_name]" : "[base_name]"
|
||||
item_state = "[base_icon]off"
|
||||
@@ -529,6 +576,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
overlay_on = "ntstandardlit"
|
||||
slot_flags = SLOT_MASK
|
||||
type_butt = /obj/item/trash/cigbutt/ntstandardbutt
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
|
||||
/obj/item/clothing/mask/cigarette/spaceport
|
||||
name = "\improper Spaceport cigarette"
|
||||
@@ -583,12 +631,14 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
desc = "There's little more you could want from a cigar."
|
||||
icon_state = "cigar2"
|
||||
overlay_on = "cigar2lit"
|
||||
light_icon = "cig2-light"
|
||||
species_fit = list(VOX_SHAPED, GREY_SHAPED, INSECT_SHAPED)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/cigar/havana
|
||||
name = "\improper Premium Havanian Cigar"
|
||||
desc = "A cigar fit for only the best for the best."
|
||||
icon_state = "cigar2"
|
||||
light_icon = "cig2-light"
|
||||
overlay_on = "cigar2lit"
|
||||
smoketime = 7200
|
||||
chem_volume = 30
|
||||
@@ -682,6 +732,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
name = "blunt"
|
||||
desc = "A special homemade cigar. Light it up and pass it around."
|
||||
icon_state = "blunt"
|
||||
light_icon = "blunt-light"
|
||||
overlay_on = "bluntlit"
|
||||
type_butt = /obj/item/trash/cigbutt/bluntbutt
|
||||
slot_flags = SLOT_MASK
|
||||
@@ -846,6 +897,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
var/lit = 0
|
||||
var/base_icon = "lighter"
|
||||
surgerysound = 'sound/items/cautery.ogg'
|
||||
var/light_icon = "lighter-light"
|
||||
|
||||
/obj/item/weapon/lighter/New()
|
||||
..()
|
||||
@@ -879,6 +931,11 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
|
||||
//Also updates the name, the damage and item_state for good measure
|
||||
/obj/item/weapon/lighter/update_icon()
|
||||
overlays.len = 0
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = null
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = null
|
||||
update_blood_overlay()
|
||||
|
||||
switch(lit)
|
||||
if(1)
|
||||
initial_name = name
|
||||
@@ -887,6 +944,22 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
item_state = icon_state
|
||||
damtype = BURN
|
||||
attack_verb = lit_attack_verb
|
||||
|
||||
var/image/I = image(icon,src,light_icon)
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.blend_mode = BLEND_ADD
|
||||
I.plane = LIGHTING_PLANE
|
||||
overlays += I
|
||||
|
||||
//dynamic in-hands
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, light_icon)
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, light_icon)
|
||||
left_I.blend_mode = BLEND_ADD
|
||||
left_I.plane = LIGHTING_PLANE
|
||||
right_I.blend_mode = BLEND_ADD
|
||||
right_I.plane = LIGHTING_PLANE
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
if(0)
|
||||
if(!initial_name)
|
||||
initial_name = name
|
||||
@@ -997,6 +1070,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
var/open_sound = list('sound/items/zippo_open.ogg')
|
||||
var/close_sound = list('sound/items/zippo_close.ogg')
|
||||
fuel = 100 //Zippos da bes
|
||||
light_icon = "zippo-light"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/attack_self(mob/living/user)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -132,24 +132,60 @@
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box
|
||||
name = "Candle pack"
|
||||
desc = "A pack of red candles."
|
||||
desc = "A pack of candles."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candlebox5"
|
||||
icon_type = "candle"
|
||||
item_state = "candlebox5"
|
||||
icon_state = "candlebox"
|
||||
item_state = "candlebox"
|
||||
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/candles.dmi', "right_hand" = 'icons/mob/in-hand/right/candles.dmi')
|
||||
foldable = /obj/item/stack/sheet/cardboard
|
||||
starting_materials = list(MAT_CARDBOARD = 3750)
|
||||
w_type = RECYK_MISC
|
||||
storage_slots = 5
|
||||
storage_slots = 14
|
||||
throwforce = 2
|
||||
flags = null
|
||||
slot_flags = SLOT_BELT
|
||||
var/obj/item/candle/waxtype = /obj/item/candle
|
||||
var/candlesprite = "candlebox_candle"
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/empty
|
||||
empty = TRUE
|
||||
icon_state = "candlebox0"
|
||||
item_state = "candlebox0" //i don't know what this does but it seems like this should go here
|
||||
icon_state = "candlebox"
|
||||
item_state = "candlebox" //i don't know what this does but it seems like this should go here
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/update_icon()
|
||||
overlays.len = 0
|
||||
|
||||
for (var/i=0,i<contents.len,i++)
|
||||
var/obj/O = contents[i+1]
|
||||
var/image/I = image(icon, src, "[icon_state]_candle")
|
||||
I.color = O.color
|
||||
I.pixel_x = (i%5)*3
|
||||
overlays += I
|
||||
overlays += "[icon_state]_cover"
|
||||
update_blood_overlay()
|
||||
|
||||
//dynamic in-hands
|
||||
var/inhand_candles = 0
|
||||
switch (contents.len)
|
||||
if (1 to 5)
|
||||
inhand_candles = 1
|
||||
if (6 to 10)
|
||||
inhand_candles = 2
|
||||
if (1 to 14)
|
||||
inhand_candles = 3
|
||||
if (inhand_candles)
|
||||
var/obj/O = contents[1]
|
||||
var/image/left_I = image(inhand_states["left_hand"], src, "[icon_state]_[inhand_candles]")
|
||||
left_I.color = O.color
|
||||
var/image/right_I = image(inhand_states["right_hand"], src, "[icon_state]_[inhand_candles]")
|
||||
right_I.color = O.color
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_LEFT_HAND]"] = left_I
|
||||
dynamic_overlay["[HAND_LAYER]-[GRASP_RIGHT_HAND]"] = right_I
|
||||
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/New()
|
||||
..()
|
||||
@@ -157,14 +193,15 @@
|
||||
return
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new waxtype(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/holo
|
||||
name = "Holo candle pack"
|
||||
desc = "A pack of holo candles."
|
||||
icon_state = "holocandlebox5"
|
||||
icon_type = "holocandle"
|
||||
//item_state = "candlebox5"
|
||||
waxtype = /obj/item/candle/holo
|
||||
icon_state = "holocandlebox"
|
||||
item_state = "holocandlebox"
|
||||
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/candles.dmi', "right_hand" = 'icons/mob/in-hand/right/candles.dmi')
|
||||
waxtype = /obj/item/holocandle
|
||||
|
||||
/*
|
||||
* Crayon Box
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
else
|
||||
F.item_state = snack.icon_state
|
||||
F.particles = snack.particles
|
||||
F.update_icon()
|
||||
if (plates.len > 0)
|
||||
user.put_in_hands(F)
|
||||
var/obj/item/trash/plate/plate = plates[plates.len]
|
||||
@@ -394,6 +395,18 @@
|
||||
extra_food_overlay.overlays += generateFilling(S, params)
|
||||
if(fullyCustom)
|
||||
icon_state = S.plate_icon
|
||||
copy_blood_from_item(S)
|
||||
//candles
|
||||
always_candles = S.always_candles
|
||||
candles = S.candles.Copy()
|
||||
for (var/image/C in candles)
|
||||
C.pixel_x += candle_offset_x
|
||||
C.pixel_y += candle_offset_y
|
||||
candles_state = S.candles_state
|
||||
if(S.candles_state == CANDLES_LIT)
|
||||
S.candles_state = CANDLES_NONE
|
||||
S.set_light(0)
|
||||
set_light(CANDLE_LUM,1,LIGHT_COLOR_FIRE)
|
||||
if(addTop)
|
||||
drawTopping()
|
||||
update_icon()
|
||||
@@ -406,6 +419,15 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/generateFilling(var/obj/item/weapon/reagent_containers/food/snacks/S, params)
|
||||
var/image/I
|
||||
if(fullyCustom)
|
||||
//putting a snack on a plate?
|
||||
fingerprints = S.fingerprints.Copy()
|
||||
//let's start by removing the overlays that aren't actually part of the food item (candles, ice, blood stains,....)
|
||||
S.overlays.len = 0
|
||||
S.overlays += S.extra_food_overlay
|
||||
//but lets keep fire because permanently burning food is hilarious
|
||||
if (S.on_fire && S.fire_overlay)
|
||||
S.overlays += S.fire_overlay
|
||||
//now we can copy the snack's appearance.
|
||||
I = image(S.icon,src,S.icon_state)
|
||||
I.appearance = S.appearance
|
||||
I.plane = FLOAT_PLANE
|
||||
@@ -434,6 +456,8 @@
|
||||
else
|
||||
I.pixel_x = 2 * PIXEL_MULTIPLIER
|
||||
|
||||
candle_offset_x = I.pixel_x
|
||||
candle_offset_y = I.pixel_y
|
||||
return I
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/updateName()
|
||||
|
||||
@@ -2742,6 +2742,26 @@
|
||||
)
|
||||
result = /obj/item/claypot
|
||||
|
||||
//I hate this please for the love of god someone enable microwaves to batch produce items
|
||||
/datum/recipe/waxcake
|
||||
reagents = list(WAX = 5)
|
||||
result = /obj/item/stack/sheet/wax
|
||||
/datum/recipe/waxcake_times_two
|
||||
reagents = list(WAX = 10)
|
||||
result = /obj/item/stack/sheet/wax/times_two
|
||||
/datum/recipe/waxcake_times_three
|
||||
reagents = list(WAX = 15)
|
||||
result = /obj/item/stack/sheet/wax/times_three
|
||||
/datum/recipe/waxcake_times_four
|
||||
reagents = list(WAX = 20)
|
||||
result = /obj/item/stack/sheet/wax/times_four
|
||||
/datum/recipe/waxcake_times_ten
|
||||
reagents = list(WAX = 50)
|
||||
result = /obj/item/stack/sheet/wax/times_ten
|
||||
/datum/recipe/waxcake_times_twenty
|
||||
reagents = list(WAX = 100)
|
||||
result = /obj/item/stack/sheet/wax/bigstack
|
||||
|
||||
/datum/recipe/cinnamonroll
|
||||
reagents = list(MILK = 5, SUGARS = 10, FLOUR = 5, CINNAMON = 5)
|
||||
items = list(
|
||||
|
||||
@@ -409,6 +409,16 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
cc_per_sheet = CC_PER_SHEET_FABRIC
|
||||
color = COLOR_LINEN
|
||||
|
||||
/datum/material/wax
|
||||
name="Wax"
|
||||
id=MAT_WAX
|
||||
value=0
|
||||
oretype=null
|
||||
sheettype=/obj/item/stack/sheet/wax
|
||||
cointype=null
|
||||
cc_per_sheet = CC_PER_SHEET_WAX
|
||||
color = COLOR_BEESWAX
|
||||
|
||||
/datum/material/brass
|
||||
name = "Brass"
|
||||
id = MAT_BRASS
|
||||
|
||||
@@ -140,6 +140,13 @@
|
||||
)
|
||||
yieldtype = /obj/item/stack/sheet/cloth
|
||||
|
||||
/datum/smelting_recipe/wax
|
||||
name = "Wax"
|
||||
ingredients=list(
|
||||
MAT_WAX = CC_PER_SHEET_WAX
|
||||
)
|
||||
yieldtype = /obj/item/stack/sheet/wax
|
||||
|
||||
/datum/smelting_recipe/mythril
|
||||
name = "Mythril"
|
||||
ingredients=list(
|
||||
|
||||
@@ -224,6 +224,7 @@
|
||||
name = "honeycomb"
|
||||
icon_state = "honeycomb"
|
||||
desc = "Dripping with sugary sweetness. Grind it to separate the honey."
|
||||
starting_materials = list(MAT_WAX = 4*CC_PER_SHEET_WAX)
|
||||
var/list/authentic = list()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeycomb/New()
|
||||
|
||||
@@ -41,6 +41,9 @@ var/global/list/juice_items = list (
|
||||
/obj/item/stack/sheet/mineral/gold = list(GOLD = 20),
|
||||
/obj/item/stack/sheet/mineral/diamond = list(DIAMONDDUST = 20),
|
||||
/obj/item/stack/sheet/mineral/phazon = list(PHAZON = 1),
|
||||
/obj/item/stack/sheet/wax = list(WAX = 5),
|
||||
/obj/item/candle = list(WAX = 1.25),
|
||||
/obj/item/trash/candle = list(WAX = 1),
|
||||
/obj/item/weapon/grown/nettle = list(FORMIC_ACID = 0),
|
||||
/obj/item/weapon/grown/deathnettle = list(PHENOL = 0),
|
||||
/obj/item/stack/sheet/charcoal = list("charcoal" = 20),
|
||||
@@ -520,7 +523,7 @@ var/global/list/juice_items = list (
|
||||
for(var/r_id in allowed)
|
||||
if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
beaker.reagents.add_reagent(r_id, allowed[r_id])
|
||||
beaker.reagents.add_reagent(r_id, allowed[r_id], additional_data = list("color" = O.color))
|
||||
if(O.gcDestroyed)
|
||||
holdingitems -= O
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/MiddleAltClick(var/mob/living/user)
|
||||
if(!is_holder_of(user, src))
|
||||
if(!Adjacent(user, src))
|
||||
return
|
||||
if(!reagents || !reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>\The [src] is desperately empty.</span>")
|
||||
@@ -90,6 +90,7 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
|
||||
to_chat(user, "<span class='warning'>You stare at \the [src] intently. Wishing you had a mouth to interact with it.</span>")
|
||||
return
|
||||
thermal_entropy()
|
||||
blow_act(user)
|
||||
playsound(user, 'sound/effects/blow.ogg', 5, 1, -2)
|
||||
var/can_it_burn = round(user.get_splash_burn_damage(amount_per_imbibe, reagents.chem_temp))
|
||||
if (can_it_burn)
|
||||
@@ -99,6 +100,9 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
|
||||
else
|
||||
user.visible_message("[user] blows on \the [src].","You blow on \the [src], helping it reach room temperature faster. <span class='notice'>Temperature seems safe...</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/proc/blow_act(var/mob/living/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/New()
|
||||
..()
|
||||
create_reagents(volume)
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
I.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
snack.extra_food_overlay.overlays += I
|
||||
snack.overlays += I
|
||||
snack.visible_condiments[condiment_overlay] = I.color
|
||||
else if(isfloor(target))
|
||||
if (amount_per_transfer_from_this > 1)
|
||||
transfer(target, user, splashable_units = amount_per_transfer_from_this)
|
||||
|
||||
@@ -2251,6 +2251,14 @@
|
||||
flammable = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/blow_act(var/mob/living/user)
|
||||
if(lit)
|
||||
lit = 0
|
||||
visible_message("<span class='rose'>The light on \the [name] goes out.</span>")
|
||||
processing_objects.Remove(src)
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/proc/update_brightness(var/mob/user = null)
|
||||
if(lit)
|
||||
set_light(src.brightness_lit)
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
var/base_crumb_chance = 10
|
||||
var/time_last_eaten
|
||||
|
||||
var/candles_state = CANDLES_NONE
|
||||
var/list/candles = list()
|
||||
var/always_candles = ""
|
||||
var/candle_offset_x = 0
|
||||
var/candle_offset_y = 0
|
||||
|
||||
var/valid_utensils = UTENSILE_FORK //| UTENSILE_SPOON
|
||||
|
||||
volume = 100 //Double amount snacks can carry, so that food prepared from excellent items can contain all the nutriments it deserves
|
||||
@@ -219,9 +225,64 @@
|
||||
if (random_filling_colors?.len > 0)
|
||||
filling_color = pick(random_filling_colors)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/light(var/flavor_text = "<span class='notice'>[usr] lights [src].</span>", var/quiet = 0)
|
||||
if(candles_state == CANDLES_UNLIT)
|
||||
candles_state = CANDLES_LIT
|
||||
visible_message(flavor_text)
|
||||
set_light(CANDLE_LUM,1,LIGHT_COLOR_FIRE)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/blow_act(var/mob/living/user)
|
||||
if(candles_state == CANDLES_LIT)
|
||||
candles_state = CANDLES_UNLIT
|
||||
visible_message("<span class='rose'>The candle[(candles.len > 1) ? "s" : ""] on \the [name] go[(candles.len > 1) ? "" : "es"] out.</span>")
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clean_act(var/cleanliness)
|
||||
..()
|
||||
if(candles_state == CANDLES_LIT)
|
||||
candles_state = CANDLES_UNLIT
|
||||
visible_message("<span class='rose'>The candle[(candles.len > 1) ? "s" : ""] on \the [name] go[(candles.len > 1) ? "" : "es"] out.</span>")
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/update_icon()
|
||||
overlays.len = 0//no choice here but to redraw everything in the correct order so condiments etc don't appear over ice and fire.
|
||||
overlays += extra_food_overlay
|
||||
|
||||
if (candles_state != CANDLES_NONE)
|
||||
for (var/image/I in candles)
|
||||
overlays += I
|
||||
if (candles_state == CANDLES_LIT)
|
||||
for (var/image/I in candles)
|
||||
var/image/M = image(I)
|
||||
M.appearance = I.appearance
|
||||
M.color = null
|
||||
M.icon_state = "[M.icon_state]_lit"
|
||||
M.appearance_flags = RESET_COLOR
|
||||
M.blend_mode = BLEND_ADD
|
||||
if (isturf(loc))
|
||||
M.plane = ABOVE_LIGHTING_PLANE
|
||||
else
|
||||
M.plane = ABOVE_HUD_PLANE // inventory
|
||||
overlays += M
|
||||
|
||||
if (always_candles)//birthday cake and its slices
|
||||
var/image/I = image('icons/obj/food.dmi',src,"[always_candles]_lit")
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.blend_mode = BLEND_ADD
|
||||
I.pixel_y = candle_offset_y
|
||||
if (isturf(loc))
|
||||
I.plane = ABOVE_LIGHTING_PLANE
|
||||
else
|
||||
I.plane = ABOVE_HUD_PLANE // inventory
|
||||
overlays += I
|
||||
|
||||
update_temperature_overlays()
|
||||
update_blood_overlay()//re-applying blood stains
|
||||
if (on_fire && fire_overlay)
|
||||
@@ -535,7 +596,7 @@
|
||||
slices_lost = rand(1, min(1, round(slices_num/2))) //Randomly lose a few slices along the way, but at least one and up to half
|
||||
var/reagents_per_slice = reagents.total_volume/slices_num //Figure out how much reagents each slice inherits (losing slices loses reagents)
|
||||
for(var/i = 1 to (slices_num - slices_lost)) //Transfer those reagents
|
||||
var/obj/slice = new slice_path(src.loc)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/slice = new slice_path(src.loc)
|
||||
if(istype(src, /obj/item/weapon/reagent_containers/food/snacks/customizable)) //custom sliceable foods have overlays we need to apply
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/C = src
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/customizable/S = slice
|
||||
@@ -547,6 +608,24 @@
|
||||
var/obj/item/sliceItem = slice
|
||||
sliceItem.luckiness += luckiness / slices_num
|
||||
reagents.trans_to(slice, reagents_per_slice)
|
||||
for (var/C in visible_condiments)
|
||||
var/image/I = image('icons/obj/condiment_overlays.dmi',slice,C)
|
||||
I.color = visible_condiments[C]
|
||||
slice.extra_food_overlay.overlays += I
|
||||
slice.overlays += I
|
||||
if (candles.len > 0)
|
||||
var/image/candle = pick(candles)
|
||||
candles.Remove(candle)
|
||||
candle.pixel_x = 0
|
||||
candle.pixel_y = 0
|
||||
slice.candles += candle
|
||||
slice.candles_state = candles_state
|
||||
if (slice.candles_state == CANDLES_LIT)
|
||||
slice.set_light(CANDLE_LUM,0.5,LIGHT_COLOR_FIRE)
|
||||
else if (always_candles)
|
||||
slice.candles_state = candles_state
|
||||
if (slice.candles_state == CANDLES_LIT)
|
||||
slice.set_light(CANDLE_LUM,0.5,LIGHT_COLOR_FIRE)
|
||||
slice.update_icon() //So hot slices start steaming right away
|
||||
qdel(src) //So long and thanks for all the fish
|
||||
return 1
|
||||
@@ -556,6 +635,13 @@
|
||||
visible_message("<span class='warning'>The items sloppily placed within fall out of \the [src]!</span>")
|
||||
return 1
|
||||
|
||||
if (istype(W, /obj/item/candle)) //candles added on afterattack
|
||||
return 0
|
||||
|
||||
if((candles_state == CANDLES_UNLIT) && (W.is_hot() || W.sharpness_flags & (HOT_EDGE)))
|
||||
light("<span class='notice'>[user] lights \the [src] with \the [W].</span>")
|
||||
return 1
|
||||
|
||||
//Slipping items into food. Because this is below slicing, sharp items can't go into food. No knife-bread, sorry.
|
||||
if(can_hold(W))
|
||||
if(!iscarbon(user)) //Presumably so robots can't put their modules inside?
|
||||
@@ -4023,6 +4109,8 @@
|
||||
storage_slots = 3
|
||||
w_class = W_CLASS_MEDIUM
|
||||
food_flags = FOOD_SWEET | FOOD_ANIMAL | FOOD_LACTOSE
|
||||
candles_state = CANDLES_UNLIT
|
||||
always_candles = "birthdaycake"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake/New()
|
||||
..()
|
||||
@@ -4037,6 +4125,8 @@
|
||||
bitesize = 2
|
||||
food_flags = FOOD_SWEET | FOOD_ANIMAL | FOOD_LACTOSE
|
||||
plate_icon = "bluecustom"
|
||||
candles_state = CANDLES_UNLIT
|
||||
always_candles = "birthdaycakeslice"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
|
||||
name = "bread"
|
||||
|
||||
@@ -170,3 +170,54 @@
|
||||
T.reagents.remove_reagent(id, 1)
|
||||
else if(amount > 0)
|
||||
T.reagents.remove_reagent(id, amount)
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
/datum/reagent/wax
|
||||
name = "Wax Powder"
|
||||
id = WAX
|
||||
description = "Wax that has been grinded into a powder form. Its colour may change from the surrounding pigments."
|
||||
color = "#FFB700"
|
||||
reagent_state = REAGENT_STATE_LIQUID
|
||||
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||
density = 0.84
|
||||
specheatcap = 2.1
|
||||
data = list(
|
||||
"color" = "#FFB700",
|
||||
)
|
||||
|
||||
/datum/reagent/wax/handle_data_mix(var/list/added_data=null, var/added_volume, var/mob/admin)
|
||||
var/base_color = data["color"]
|
||||
var/added_color = base_color
|
||||
if (added_data)
|
||||
added_color = added_data["color"]
|
||||
data["color"] = BlendRYB(added_color, base_color, added_volume / (added_volume+volume))
|
||||
color = data["color"]
|
||||
|
||||
/datum/reagent/wax/handle_data_copy(var/list/added_data=null, var/added_volume, var/mob/admin)
|
||||
if (added_data)
|
||||
data["color"] = added_data["color"]
|
||||
color = data["color"]
|
||||
|
||||
/datum/reagent/wax/special_behaviour()
|
||||
var/list/pigments = list()
|
||||
for (var/datum/reagent/R in holder.reagent_list)
|
||||
if (R.id == BLEACH)
|
||||
data["color"] = "#FFFFFF"
|
||||
color = data["color"]
|
||||
return
|
||||
else if (R.flags & CHEMFLAG_PIGMENT)
|
||||
pigments += R
|
||||
if (pigments.len <= 0)
|
||||
return
|
||||
var/target_color = mix_color_from_reagents(pigments)
|
||||
if (data["color"] == "#FFFFFF")//if you bleach the wax first, it's easier to dye
|
||||
data["color"] = target_color
|
||||
else
|
||||
data["color"] = BlendRYB(data["color"], target_color, 0.5)
|
||||
color = data["color"]
|
||||
|
||||
/datum/reagent/wax/handle_additional_data(var/list/additional_data=null)
|
||||
if ("color" in additional_data)
|
||||
data["color"] = additional_data["color"]
|
||||
color = data["color"]
|
||||
|
||||
@@ -385,8 +385,8 @@
|
||||
/obj/machinery/sorting_machine/recycling
|
||||
name = "Recycling Sorting Machine"
|
||||
|
||||
var/list/selected_types = list("Glasses", "Metals/Minerals", "Electronics", "Plastic", "Fabric")
|
||||
var/list/types[8]
|
||||
var/list/selected_types = list("Glasses", "Metals/Minerals", "Electronics", "Plastic", "Fabric", "Wax")
|
||||
var/list/types[9]
|
||||
|
||||
/obj/machinery/sorting_machine/recycling/New()
|
||||
. = ..()
|
||||
@@ -408,6 +408,7 @@
|
||||
types[RECYK_METAL] = "Metals/Minerals"
|
||||
types[RECYK_PLASTIC] = "Plastic"
|
||||
types[RECYK_FABRIC] = "Fabric"
|
||||
types[RECYK_WAX] = "Wax"
|
||||
types[RECYK_MISC] = "Miscellaneous"
|
||||
|
||||
/obj/machinery/sorting_machine/recycling/process()
|
||||
|
||||
BIN
icons/mob/in-hand/left/candles.dmi
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
BIN
icons/mob/in-hand/right/candles.dmi
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 251 KiB After Width: | Height: | Size: 252 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |