diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index fb2b874454d..2ce6abca4a9 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -567,11 +567,24 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
else
. = pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg')
-/obj/item/proc/open_flame()
+/obj/item/proc/open_flame(flame_heat=700)
var/turf/location = loc
if(ismob(location))
var/mob/M = location
- if(M.l_hand == src || M.r_hand == src)
+ var/success = FALSE
+ if(src == M.get_item_by_slot(slot_l_hand))
+ success = TRUE
+ else if(src == M.get_item_by_slot(slot_r_hand))
+ success = TRUE
+ else if(src == M.get_item_by_slot(slot_wear_mask))
+ success = TRUE
+ if(success)
location = get_turf(M)
if(isturf(location))
- location.hotspot_expose(700, 5)
+ location.hotspot_expose(flame_heat, 5)
+
+/obj/item/proc/ignition_effect(atom/A, mob/user)
+ if(is_hot())
+ . = "[user] lights [A] with [src]."
+ else
+ . = ""
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index f6605a6fef0..c5ae2345881 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -31,39 +31,20 @@
/obj/item/candle/attackby(obj/item/weapon/W, mob/user, params)
..()
- if(istype(W, /obj/item/weapon/weldingtool))
- var/obj/item/weapon/weldingtool/WT = W
- if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
- light("[user] casually lights the [name] with [W], what a badass.")
- else if(istype(W, /obj/item/weapon/lighter))
- var/obj/item/weapon/lighter/L = W
- if(L.lit)
- light()
- else if(istype(W, /obj/item/weapon/match))
- var/obj/item/weapon/match/M = W
- if(M.lit)
- light()
- else if(istype(W, /obj/item/candle))
- var/obj/item/candle/C = W
- if(C.lit)
- light()
- else if(istype(W, /obj/item/clothing/mask/cigarette))
- var/obj/item/clothing/mask/cigarette/M = W
- if(M.lit)
- light()
+ var/msg = W.ignition_effect(src, user)
+ if(msg)
+ light(msg)
/obj/item/candle/fire_act()
if(!src.lit)
light() //honk
- return
/obj/item/candle/proc/light(show_message)
if(!src.lit)
src.lit = TRUE
//src.damtype = "fire"
if(show_message)
- usr.visible_message(
- "[usr] lights the [name].")
+ usr.visible_message(show_message)
SetLuminosity(CANDLE_LUMINOSITY)
START_PROCESSING(SSobj, src)
update_icon()
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index 621d8df12fb..4aaebba55c0 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -5,6 +5,7 @@
icon = 'icons/obj/cardboard_cutout.dmi'
icon_state = "cutout_basic"
w_class = 4
+ burn_state = FLAMMABLE
var/list/possible_appearances = list("Assistant", "Clown", "Mime", "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", \
"Ash Walker", "Deathsquad Officer", "Ian") //Possible restyles for the cutout; add an entry in change_appearance() if you add to here
var/pushed_over = FALSE //If the cutout is pushed over and has to be righted
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index dd03f04863f..2cbe518d65d 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -199,9 +199,7 @@ obj/item/device/flashlight/lamp/bananalamp
..()
/obj/item/device/flashlight/flare/process()
- var/turf/pos = get_turf(src)
- if(pos)
- pos.hotspot_expose(produce_heat, 5)
+ open_flame(heat)
fuel = max(fuel - 1, 0)
if(!fuel || !on)
turn_off()
@@ -209,6 +207,13 @@ obj/item/device/flashlight/lamp/bananalamp
icon_state = "[initial(icon_state)]-empty"
STOP_PROCESSING(SSobj, src)
+/obj/item/device/flashlight/flare/ignition_effect(atom/A, mob/user)
+ if(fuel && on)
+ . = "[user] lights [A] with [src] like a real \
+ badass."
+ else
+ . = ""
+
/obj/item/device/flashlight/flare/proc/turn_off()
on = 0
force = initial(src.force)
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index cce7af5ab06..c7de7be5915 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -27,14 +27,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
heat = 1000
/obj/item/weapon/match/process()
- var/turf/location = get_turf(src)
smoketime--
if(smoketime < 1)
matchburnout()
- return
- if(location)
- location.hotspot_expose(700, 5)
- return
+ else
+ open_flame(heat)
/obj/item/weapon/match/fire_act()
matchignite()
@@ -134,8 +131,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
. = ..()
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W, mob/user, params)
- if(!lit && smoketime > 0 && W.is_hot())
- var/lighting_text = is_lighter(W,user)
+ if(!lit && smoketime > 0)
+ var/lighting_text = W.ignition_effect(src, user)
if(lighting_text)
light(lighting_text)
else
@@ -154,29 +151,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else
user << "[src] is full."
-/obj/item/clothing/mask/cigarette/proc/is_lighter(obj/item/O, mob/user)
- var/lighting_text = null
- if(istype(O, /obj/item/weapon/weldingtool))
- lighting_text = "[user] casually lights the [name] with [O], what a badass."
- else if(istype(O, /obj/item/weapon/lighter/greyscale)) // we have to check for this first -- zippo lighters are default
- lighting_text = "After some fiddling, [user] manages to light their [name] with [O]."
- else if(istype(O, /obj/item/weapon/lighter))
- lighting_text = "With a single flick of their wrist, [user] smoothly lights their [name] with [O]. Damn they're cool."
- else if(istype(O, /obj/item/weapon/melee/energy))
- var/in_mouth = ""
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- if(C.wear_mask == src)
- in_mouth = ", barely missing their nose"
- lighting_text = "[user] swings their \
- [O][in_mouth]. They light their [name] in the process."
- else if(istype(O, /obj/item/device/assembly/igniter))
- lighting_text = "[user] fiddles with [O], and manages to light their [name]."
- else if(istype(O, /obj/item/device/flashlight/flare))
- lighting_text = "[user] lights their [name] with [O] like a real badass."
- else if(O.is_hot())
- lighting_text = "[user] lights their [name] with [O]."
- return lighting_text
/obj/item/clothing/mask/cigarette/proc/light(flavor_text = null)
if(lit)
@@ -407,7 +381,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
open_flame()
if(reagents && reagents.total_volume) // check if it has any reagents at all
handle_reagents()
- return
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/O, mob/user, params)
@@ -427,7 +400,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else
user << "It is already packed!"
else
- var/lighting_text = is_lighter(O,user)
+ var/lighting_text = O.ignition_effect(src,user)
if(lighting_text)
if(smoketime > 0)
light(lighting_text)
@@ -489,6 +462,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
I.color = color2hex(randomColor(1))
add_overlay(I)
+/obj/item/weapon/lighter/greyscale/ignition_effect(atom/A, mob/user)
+ . = "After some fiddling, [user] manages to \
+ light [A] with [src]."
+
+/obj/item/weapon/lighter/ignition_effect(atom/A, mob/user)
+ . = "With a single flick of their wrist, [user] \
+ smoothly lights [A] with [src]. Damn they're cool."
+
/obj/item/weapon/lighter/update_icon()
icon_state = lit ? "[icon_state]_on" : "[initial(icon_state)]"
@@ -548,18 +529,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
..()
/obj/item/weapon/lighter/process()
- var/turf/location = get_turf(src)
- if(location)
- location.hotspot_expose(700, 5)
- return
+ open_flame()
/obj/item/weapon/lighter/pickup(mob/user)
..()
if(lit)
SetLuminosity(0)
user.AddLuminosity(1)
- return
-
/obj/item/weapon/lighter/dropped(mob/user)
..()
@@ -567,7 +543,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(user)
user.AddLuminosity(-1)
SetLuminosity(1)
- return
/obj/item/weapon/lighter/is_hot()
return lit * heat
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index c3512dfc983..fc5ffa9c2b9 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -177,4 +177,3 @@
theturf.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
user.visible_message("[user] empties out \the [src] onto the floor using the release valve.", "You quietly empty out \the [src] using its release valve.")
- return
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 15c710b40de..0cc98cd62a3 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -63,6 +63,16 @@
if(item_color == null)
item_color = pick("red", "blue", "green", "purple")
+/obj/item/weapon/melee/energy/sword/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
+/obj/item/weapon/melee/energy/sword/process()
+ if(active)
+ open_flame()
+ else
+ STOP_PROCESSING(SSobj, src)
+
/obj/item/weapon/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
if(active)
return ..()
@@ -87,6 +97,7 @@
w_class = w_class_on
playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
user << "[src] is now active."
+ START_PROCESSING(SSobj, src)
else
force = initial(force)
throwforce = initial(throwforce)
@@ -98,11 +109,26 @@
w_class = initial(w_class)
playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
user << "[src] can now be concealed."
+ STOP_PROCESSING(SSobj, src)
add_fingerprint(user)
/obj/item/weapon/melee/energy/is_hot()
return active * heat
+/obj/item/weapon/melee/energy/ignition_effect(atom/A, mob/user)
+ if(!active)
+ return ""
+
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "[user] swings their \
+ [src][in_mouth]. They light [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+
/obj/item/weapon/melee/energy/sword/cyborg
var/hitcost = 50
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index e831ed3fd98..3d5d9cf99e9 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -342,11 +342,11 @@
check_fuel()
if(M)
M.flash_eyes(light_intensity)
- return 1
+ return TRUE
else
if(M)
M << "You need more welding fuel to complete this task!"
- return 0
+ return FALSE
//Returns whether or not the welding tool is currently on.
@@ -424,7 +424,13 @@
user.put_in_hands(F)
else
user << "You need one rod to start building a flamethrower!"
- return
+
+/obj/item/weapon/weldingtool/ignition_effect(atom/A, mob/user)
+ if(welding && remove_fuel(1, user))
+ . = "[user] casually lights [A] with [src], \
+ what a badass."
+ else
+ . = ""
/obj/item/weapon/weldingtool/largetank
name = "industrial welding tool"
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 7d8fcc93fb5..d1be98828ea 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -211,15 +211,19 @@
var/hacked = 0
/obj/item/weapon/twohanded/dualsaber/New()
+ ..()
item_color = pick("red", "blue", "green", "purple")
+/obj/item/weapon/twohanded/dualsaber/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
/obj/item/weapon/twohanded/dualsaber/update_icon()
if(wielded)
icon_state = "dualsaber[item_color][wielded]"
else
icon_state = "dualsaber0"
clean_blood()//blood overlays get weird otherwise, because the sprite changes.
- return
/obj/item/weapon/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user)
if(user.has_dna())
@@ -232,12 +236,14 @@
impale(user)
return
if((wielded) && prob(50))
- spawn(0)
- for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2))
- user.setDir(i)
- if(i == 8)
- user.emote("flip")
- sleep(1)
+ addtimer(src, "jedi_spin", 0, TRUE, user)
+
+/obj/item/weapon/twohanded/dualsaber/proc/jedi_spin(mob/living/user)
+ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2))
+ user.setDir(i)
+ if(i == 8)
+ user.emote("flip")
+ sleep(1)
/obj/item/weapon/twohanded/dualsaber/proc/impale(mob/living/user)
user << "You twirl around a bit before losing your balance and impaling yourself on \the [src]."
@@ -265,17 +271,41 @@
w_class = w_class_on
..()
hitsound = 'sound/weapons/blade1.ogg'
+ START_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/dualsaber/unwield() //Specific unwield () to switch hitsounds.
sharpness = initial(sharpness)
w_class = initial(w_class)
..()
hitsound = "swing_hit"
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/weapon/twohanded/dualsaber/process()
+ if(wielded)
+ open_flame()
+ else
+ STOP_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/dualsaber/IsReflect()
if(wielded)
return 1
+/obj/item/weapon/twohanded/dualsaber/ignition_effect(atom/A, mob/user)
+ // same as /obj/item/weapon/melee/energy, mostly
+ if(!wielded)
+ return ""
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "[user] swings their \
+ [src][in_mouth]. They light [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+ // Light your candles while spinning around the room
+ addtimer(src, "jedi_spin", 0, TRUE, user)
+
/obj/item/weapon/twohanded/dualsaber/green/New()
item_color = "green"
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 99d92289cbf..7e5a331af87 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -219,5 +219,3 @@
/obj/proc/CanAStarPass()
. = !density
-
-
diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm
new file mode 100644
index 00000000000..4da513ce352
--- /dev/null
+++ b/code/game/objects/structures/fireplace.dm
@@ -0,0 +1,153 @@
+#define LOG_BURN_TIMER 150
+#define PAPER_BURN_TIMER 5
+#define MAXIMUM_BURN_TIMER 3000
+
+/obj/structure/fireplace
+ name = "fireplace"
+ desc = "A large stone brick fireplace."
+ icon = 'icons/obj/fireplace.dmi'
+ icon_state = "fireplace"
+ density = FALSE
+ anchored = TRUE
+ pixel_x = -16
+ burn_state = FIRE_PROOF
+ var/lit = FALSE
+
+ var/fuel_added = 0
+ var/flame_expiry_timer
+
+/obj/structure/fireplace/New()
+ ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/structure/fireplace/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
+/obj/structure/fireplace/proc/try_light(obj/item/O, mob/user)
+ if(lit)
+ user << "It's already lit!"
+ return FALSE
+ if(!fuel_added)
+ user << "[src] needs some fuel to burn!"
+ return FALSE
+ var/msg = O.ignition_effect(src, user)
+ if(msg)
+ visible_message(msg)
+ ignite()
+ return TRUE
+
+/obj/structure/fireplace/attackby(obj/item/T, mob/user)
+ if(istype(T,/obj/item/stack/sheet/mineral/wood))
+ var/obj/item/stack/sheet/mineral/wood/wood = T
+ var/space_remaining = MAXIMUM_BURN_TIMER - burn_time_remaining()
+ var/space_for_logs = round(space_remaining / LOG_BURN_TIMER)
+ if(space_for_logs < 1)
+ user << "You can't fit any more of [T] in \
+ [src]!"
+ return
+ var/logs_used = min(space_for_logs, wood.amount)
+ wood.use(logs_used)
+ adjust_fuel_timer(LOG_BURN_TIMER * logs_used)
+ user.visible_message("[user] tosses some \
+ wood into [src].", "You add \
+ some fuel to [src].")
+ else if(istype(T, /obj/item/weapon/paper_bin))
+ var/obj/item/weapon/paper_bin/paper_bin = T
+ user.visible_message("[user] throws [T] into \
+ [src].", "You add [T] to [src].\
+ ")
+ adjust_fuel_timer(PAPER_BURN_TIMER * paper_bin.amount)
+ qdel(paper_bin)
+ else if(istype(T, /obj/item/weapon/paper))
+ user.visible_message("[user] throws [T] into \
+ [src].", "You throw [T] into [src].\
+ ")
+ adjust_fuel_timer(PAPER_BURN_TIMER)
+ qdel(T)
+ else if(try_light(T,user))
+ return
+ else
+ . = ..()
+
+/obj/structure/fireplace/update_icon()
+ cut_overlays()
+ if(lit)
+ switch(burn_time_remaining())
+ if(0 to 500)
+ add_overlay("fireplace_fire0")
+ if(500 to 1000)
+ add_overlay("fireplace_fire1")
+ if(1000 to 1500)
+ add_overlay("fireplace_fire2")
+ if(1500 to 2000)
+ add_overlay("fireplace_fire3")
+ if(2000 to MAXIMUM_BURN_TIMER)
+ add_overlay("fireplace_fire4")
+ add_overlay("fireplace_glow")
+
+/obj/structure/fireplace/proc/adjust_light()
+ if(!lit)
+ SetLuminosity(0)
+ return
+
+ switch(burn_time_remaining())
+ if(0 to 500)
+ SetLuminosity(1)
+ if(500 to 1000)
+ SetLuminosity(2)
+ if(1000 to 1500)
+ SetLuminosity(3)
+ if(1500 to 2000)
+ SetLuminosity(4)
+ if(2000 to MAXIMUM_BURN_TIMER)
+ SetLuminosity(6)
+
+/obj/structure/fireplace/process()
+ if(!lit)
+ return
+ if(world.time > flame_expiry_timer)
+ put_out()
+ return
+
+ playsound(src, 'sound/effects/comfyfire.ogg',50,0, 0, 1)
+ var/turf/T = get_turf(src)
+ T.hotspot_expose(700, 5)
+ update_icon()
+ adjust_light()
+
+/obj/structure/fireplace/extinguish()
+ if(lit)
+ var/fuel = burn_time_remaining()
+ flame_expiry_timer = 0
+ put_out()
+ adjust_fuel_timer(fuel)
+ . = ..()
+
+/obj/structure/fireplace/proc/adjust_fuel_timer(amount)
+ if(lit)
+ flame_expiry_timer += amount
+ if(burn_time_remaining() < MAXIMUM_BURN_TIMER)
+ flame_expiry_timer = world.time + MAXIMUM_BURN_TIMER
+ else
+ fuel_added = Clamp(fuel_added + amount, 0, MAXIMUM_BURN_TIMER)
+
+/obj/structure/fireplace/proc/burn_time_remaining()
+ if(lit)
+ return max(0, flame_expiry_timer - world.time)
+ else
+ return max(0, fuel_added)
+
+/obj/structure/fireplace/proc/ignite()
+ lit = TRUE
+ desc = "A large stone brick fireplace, warm and cozy."
+ flame_expiry_timer = world.time + fuel_added
+ fuel_added = 0
+ update_icon()
+ adjust_light()
+
+/obj/structure/fireplace/proc/put_out()
+ lit = FALSE
+ update_icon()
+ adjust_light()
+ desc = initial(desc)
diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm
index 0431f5b222c..bdb0f4a52b8 100644
--- a/code/modules/assembly/igniter.dm
+++ b/code/modules/assembly/igniter.dm
@@ -15,8 +15,7 @@
/obj/item/device/assembly/igniter/Destroy()
qdel(sparks)
sparks = null
- return ..()
-
+ . = ..()
/obj/item/device/assembly/igniter/activate()
if(!..())
@@ -27,8 +26,12 @@
sparks.start()
return 1
-
/obj/item/device/assembly/igniter/attack_self(mob/user)
activate()
add_fingerprint(user)
- return
+
+/obj/item/device/assembly/igniter/ignition_effect(atom/A, mob/user)
+ . = "[user] fiddles with [src], and manages to \
+ light [A]."
+ activate()
+ add_fingerprint(user)
diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm
index 6f5ba2a4d64..2f386c471e2 100644
--- a/code/modules/awaymissions/mission_code/Cabin.dm
+++ b/code/modules/awaymissions/mission_code/Cabin.dm
@@ -17,58 +17,59 @@
name = "Lumbermill"
icon_state = "away3"
-
-
-
-
-/*Cabin code*/
-/obj/structure/fireplace
- name = "fireplace"
+/obj/structure/firepit
+ name = "firepit"
desc = "warm and toasty"
- icon = 'icons/obj/stationobjs.dmi'
- icon_state = "fireplace-active"
+ icon = 'icons/obj/fireplace.dmi'
+ icon_state = "firepit-active"
density = 0
var/active = 1
-/obj/structure/fireplace/initialize()
+/obj/structure/firepit/initialize()
..()
- toggleFireplace()
+ toggleFirepit()
-/obj/structure/fireplace/attack_hand(mob/living/user)
+/obj/structure/firepit/attack_hand(mob/living/user)
if(active)
active = 0
- toggleFireplace()
+ toggleFirepit()
else
..()
-/obj/structure/fireplace/attackby(obj/item/W,mob/living/user,params)
+/obj/structure/firepit/attackby(obj/item/W,mob/living/user,params)
if(!active)
- if(W.is_hot())
- active = 1
- toggleFireplace()
+ var/msg = W.ignition_effect(src, user)
+ if(msg)
+ active = TRUE
+ visible_message(msg)
+ toggleFirepit()
else
return ..()
else
W.fire_act()
-/obj/structure/fireplace/proc/toggleFireplace()
+/obj/structure/firepit/proc/toggleFirepit()
if(active)
SetLuminosity(8)
- icon_state = "fireplace-active"
+ icon_state = "firepit-active"
else
SetLuminosity(0)
- icon_state = "fireplace"
+ icon_state = "firepit"
-/obj/structure/fireplace/extinguish()
+/obj/structure/firepit/extinguish()
if(active)
- active = 0
- toggleFireplace()
+ active = FALSE
+ toggleFirepit()
-/obj/structure/fireplace/fire_act()
+/obj/structure/firepit/fire_act()
if(!active)
- active = 1
- toggleFireplace()
+ active = TRUE
+ toggleFirepit()
+
+
+
+//other Cabin Stuff//
/obj/machinery/recycler/lumbermill
name = "lumbermill saw"
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 24bc2f9fa1a..08f1f9bd76f 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -11,18 +11,24 @@
pressure_resistance = 8
burn_state = FLAMMABLE
var/amount = 30 //How much paper is in the bin.
- var/list/papers = new/list() //List of papers put in the bin for reference.
+ var/list/papers = list() //List of papers put in the bin for reference.
/obj/item/weapon/paper_bin/fire_act()
if(!amount)
return
..()
+/obj/item/weapon/paper_bin/Destroy()
+ if(papers)
+ for(var/i in papers)
+ qdel(i)
+ papers = null
+ . = ..()
+
/obj/item/weapon/paper_bin/burn()
amount = 0
extinguish()
update_icon()
- return
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
var/mob/living/M = usr
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 2c3366a401c..b2e0b8fb995 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -125,7 +125,6 @@
G.temperature = max(min(G.temperature-(CT*1000),G.temperature/CT),0)
G.react()
qdel(hotspot)
- return
/*
* Water reaction to an object
diff --git a/icons/obj/fireplace.dmi b/icons/obj/fireplace.dmi
new file mode 100644
index 00000000000..6c99925cdd9
Binary files /dev/null and b/icons/obj/fireplace.dmi differ
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index 15ab4676d5e..b38f1031947 100644
Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ
diff --git a/sound/effects/comfyfire.ogg b/sound/effects/comfyfire.ogg
new file mode 100644
index 00000000000..9b796219b3b
Binary files /dev/null and b/sound/effects/comfyfire.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index ea4713aba5b..8d1afe94f43 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -740,6 +740,7 @@
#include "code\game\objects\structures\extinguisher.dm"
#include "code\game\objects\structures\false_walls.dm"
#include "code\game\objects\structures\fireaxe.dm"
+#include "code\game\objects\structures\fireplace.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\fluff.dm"
#include "code\game\objects\structures\ghost_role_spawners.dm"