From bde5755916327f0d5c88a4a2755015ba1f084a1a Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 29 Jul 2016 13:24:09 -0400 Subject: [PATCH 1/5] Implements Fire System --- .../unary_devices/heat_exchanger.dm | 1 + code/__DEFINES/misc.dm | 6 ++ code/controllers/Processes/fires.dm | 23 ++++++ code/datums/spells/ethereal_jaunt.dm | 1 + .../miniantags/slaughter/bloodcrawl.dm | 1 + code/game/gamemodes/wizard/artefact.dm | 4 +- code/game/machinery/syndicatebomb.dm | 1 + code/game/mecha/combat/marauder.dm | 1 + code/game/mecha/working/ripley.dm | 1 + code/game/objects/buckling.dm | 7 ++ .../objects/effects/decals/Cleanable/misc.dm | 4 + code/game/objects/effects/decals/cleanable.dm | 5 +- .../game/objects/effects/decals/contraband.dm | 1 + code/game/objects/items.dm | 16 ++++ code/game/objects/items/candle.dm | 4 + code/game/objects/items/devices/guitar.dm | 2 + .../objects/items/devices/taperecorder.dm | 6 ++ code/game/objects/items/devices/violin.dm | 4 +- code/game/objects/items/flag.dm | 75 ++----------------- .../objects/items/stacks/sheets/mineral.dm | 14 ++++ .../items/stacks/sheets/sheet_types.dm | 3 + .../objects/items/stacks/tiles/tile_types.dm | 4 + code/game/objects/items/toys.dm | 42 ++++++----- code/game/objects/items/trash.dm | 4 + code/game/objects/items/weapons/cash.dm | 1 + code/game/objects/items/weapons/cigs.dm | 3 + code/game/objects/items/weapons/courtroom.dm | 2 + .../objects/items/weapons/gift_wrappaper.dm | 2 + .../objects/items/weapons/grenades/grenade.dm | 2 + code/game/objects/items/weapons/mop.dm | 1 + code/game/objects/items/weapons/paint.dm | 2 + code/game/objects/items/weapons/scrolls.dm | 1 + code/game/objects/items/weapons/shields.dm | 1 + code/game/objects/items/weapons/signs.dm | 1 + code/game/objects/items/weapons/staff.dm | 1 + .../objects/items/weapons/storage/backpack.dm | 12 +++ .../objects/items/weapons/storage/bags.dm | 8 +- .../objects/items/weapons/storage/bible.dm | 1 + .../objects/items/weapons/storage/boxes.dm | 1 + .../items/weapons/storage/briefcase.dm | 2 + .../objects/items/weapons/storage/fancy.dm | 1 + .../objects/items/weapons/storage/storage.dm | 8 +- .../objects/items/weapons/storage/wallets.dm | 1 + .../objects/items/weapons/table_rack_parts.dm | 1 + .../objects/items/weapons/tanks/watertank.dm | 3 +- code/game/objects/objs.dm | 34 ++++++++- code/game/objects/structures/artstuff.dm | 3 + code/game/objects/structures/bedsheet_bin.dm | 13 ++++ .../crates_lockers/closets/cardboardbox.dm | 2 + .../crates_lockers/closets/coffin.dm | 2 + .../crates_lockers/closets/gimmick.dm | 2 + .../crates_lockers/closets/secure/bar.dm | 2 + .../crates_lockers/closets/secure/personal.dm | 2 + .../crates_lockers/closets/secure/security.dm | 2 + code/game/objects/structures/flora.dm | 5 ++ code/game/objects/structures/mineral_doors.dm | 2 + code/game/objects/structures/signs.dm | 1 + .../structures/stool_bed_chair_nest/bed.dm | 3 + .../structures/stool_bed_chair_nest/chairs.dm | 5 ++ code/game/objects/structures/tables_racks.dm | 2 + code/game/objects/structures/watercloset.dm | 6 +- code/modules/clothing/clothing.dm | 6 ++ code/modules/clothing/gloves/color.dm | 5 ++ code/modules/clothing/gloves/miscellaneous.dm | 2 + code/modules/clothing/head/collectable.dm | 3 + code/modules/clothing/head/hardhat.dm | 1 + code/modules/clothing/head/helmet.dm | 1 + code/modules/clothing/head/misc.dm | 1 + code/modules/clothing/head/misc_special.dm | 1 + code/modules/clothing/masks/breath.dm | 1 + code/modules/clothing/masks/gasmask.dm | 8 ++ code/modules/clothing/masks/voice.dm | 1 + code/modules/clothing/shoes/magboots.dm | 1 + code/modules/clothing/shoes/miscellaneous.dm | 4 + code/modules/clothing/suits/armor.dm | 4 +- code/modules/clothing/suits/bio.dm | 2 + code/modules/clothing/suits/jobs.dm | 1 + code/modules/clothing/suits/miscellaneous.dm | 5 ++ code/modules/clothing/suits/utility.dm | 7 +- code/modules/clothing/suits/wiz_robe.dm | 7 +- .../clothing/under/accessories/accessory.dm | 1 + code/modules/clothing/under/chameleon.dm | 1 + code/modules/clothing/under/color.dm | 1 + .../clothing/under/jobs/engineering.dm | 3 + code/modules/clothing/under/miscellaneous.dm | 4 + code/modules/food_and_drinks/drinks/drinks.dm | 1 + .../drinks/drinks/drinkingglass.dm | 11 +++ code/modules/food_and_drinks/food.dm | 1 + .../kitchen_machinery/cooker.dm | 6 +- code/modules/hydroponics/grown.dm | 1 + code/modules/hydroponics/grown_inedible.dm | 8 +- code/modules/hydroponics/seed_packets.dm | 2 +- code/modules/library/lib_items.dm | 3 + code/modules/mining/money_bag.dm | 2 + code/modules/mob/living/carbon/_defines.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 7 +- code/modules/mob/living/carbon/human/life.dm | 15 ++-- code/modules/mob/living/living_defense.dm | 22 ++++-- .../mob/living/simple_animal/simple_animal.dm | 16 +++- code/modules/paperwork/clipboard.dm | 1 + code/modules/paperwork/folders.dm | 3 +- code/modules/paperwork/paper.dm | 54 +++++++------ code/modules/paperwork/paperbin.dm | 34 +++++---- code/modules/paperwork/photography.dm | 6 +- code/modules/power/singularity/singularity.dm | 1 + code/modules/projectiles/projectile.dm | 1 + .../modules/projectiles/projectile/bullets.dm | 4 +- .../modules/reagents/newchem/Blob-Reagents.dm | 2 +- code/modules/reagents/newchem/pyro.dm | 32 +++----- .../oldchem/reagents/reagents_water.dm | 16 +--- code/modules/recycling/sortingmachinery.dm | 1 + .../research/xenobiology/xenobiology.dm | 1 + paradise.dme | 1 + 113 files changed, 483 insertions(+), 213 deletions(-) create mode 100644 code/controllers/Processes/fires.dm diff --git a/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm index d837af98739..8b871847b23 100644 --- a/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary_devices/heat_exchanger.dm @@ -10,6 +10,7 @@ var/obj/machinery/atmospherics/unary/heat_exchanger/partner = null var/update_cycle + burn_state = LAVA_PROOF /obj/machinery/atmospherics/unary/heat_exchanger/update_icon() if(node) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index f6ddb6a5a6a..ff0b5bf72fa 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -273,3 +273,9 @@ // Used by radios to indicate that they have sent a message via something other than subspace #define RADIO_CONNECTION_FAIL 0 #define RADIO_CONNECTION_NON_SUBSPACE 1 + +//Fire stuff, for burn_state +#define LAVA_PROOF -2 +#define FIRE_PROOF -1 +#define FLAMMABLE 0 +#define ON_FIRE 1 \ No newline at end of file diff --git a/code/controllers/Processes/fires.dm b/code/controllers/Processes/fires.dm new file mode 100644 index 00000000000..ab723221367 --- /dev/null +++ b/code/controllers/Processes/fires.dm @@ -0,0 +1,23 @@ +var/global/datum/controller/process/fire/fire_master + +/datum/controller/process/fire + var/list/burning = list() + +/datum/controller/process/fire/setup() + name = "fire" + schedule_interval = 20 //every 2 seconds + fire_master = src + log_startup_progress("Fire process starting up.") + +/datum/controller/process/fire/statProcess() + ..() + stat(null, "[burning.len] burning objects") + +/datum/controller/process/fire/doWork() + for(var/obj/burningobj in burning) + if(burningobj && (burningobj.burn_state == ON_FIRE)) + if(burningobj.burn_world_time < world.time) + burningobj.burn() + SCHECK + else + burning.Remove(burningobj) \ No newline at end of file diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index eba2aa895f4..b75cba1f858 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -98,6 +98,7 @@ var/canmove = 1 density = 0 anchored = 1 + burn_state = LAVA_PROOF /obj/effect/dummy/spell_jaunt/Destroy() // Eject contents if deleted somehow diff --git a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm index 5977f362bdc..73165079b6e 100644 --- a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm +++ b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm @@ -159,6 +159,7 @@ density = 0 anchored = 1 invisibility = 60 + burn_state = LAVA_PROOF /obj/effect/dummy/slaughter/relaymove(mob/user, direction) forceMove(get_step(src,direction)) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index b7c1d7920e1..8b9cb6eb0e9 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -766,8 +766,8 @@ var/global/list/multiverse = list() var/obj/item/link = null var/cooldown_time = 30 //3s var/cooldown = 0 - - + burntime = 0 + burn_state = FLAMMABLE /obj/item/voodoo/attackby(obj/item/I as obj, mob/user as mob, params) if(target && cooldown < world.time) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index db4cb0271c0..bf4300351fa 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -182,6 +182,7 @@ item_state = "eshield0" w_class = 3 origin_tech = "syndicate=6;combat=5" + burn_state = FLAMMABLE //Burnable (but the casing isn't) var/adminlog = null /obj/item/weapon/bombcore/ex_act(severity) //Little boom can chain a big boom diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 386afc0710c..b34897764e2 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -8,6 +8,7 @@ deflect_chance = 25 damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7) max_temperature = 60000 + burn_state = LAVA_PROOF infra_luminosity = 3 var/zoom = 0 var/thrusters = 0 diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index c4916306ac2..2a4f6adf189 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -68,6 +68,7 @@ initial_icon = "firefighter" max_temperature = 65000 health = 250 + burn_state = LAVA_PROOF lights_power = 7 damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.7,"laser"=0.7,"energy"=1,"bomb"=0.4) max_equip = 5 // More armor, less tools diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index ada2399f20d..cead6e33ffd 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -49,6 +49,13 @@ M.throw_alert("buckled", /obj/screen/alert/restrained/buckled, new_master = src) return 1 +/obj/buckle_mob(mob/living/M) + . = ..() + if(.) + if(burn_state == ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect + M.adjust_fire_stacks(1) + M.IgniteMob() + /atom/movable/proc/unbuckle_mob() if(buckled_mob && buckled_mob.buckled == src && buckled_mob.can_unbuckle(usr)) . = buckled_mob diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 2aa7a997834..3c0a712a311 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -84,6 +84,10 @@ layer = 3 icon = 'icons/effects/effects.dmi' icon_state = "cobweb1" + burntime = 1 + +/obj/effect/decal/cleanable/cobweb/fire_act() + qdel(src) /obj/effect/decal/cleanable/molten_item name = "gooey grey mass" diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 878adf6688b..0d6bf3255a5 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -38,6 +38,7 @@ ..() /obj/effect/decal/cleanable/fire_act() - reagents.chem_temp += 30 - reagents.handle_reactions() + if(reagents) + reagents.chem_temp += 30 + reagents.handle_reactions() ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 6658838a5d3..9c3dd867c74 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -18,6 +18,7 @@ var/serial_number = 0 var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor var/subtype = 0 + burn_state = FLAMMABLE /obj/item/weapon/contraband/poster/New(turf/loc, given_serial = 0) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 111f7c4dc33..82412c8e883 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -192,6 +192,22 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d to_chat(user, "You try to move your [temp.name], but cannot!") return 0 + if(burn_state == ON_FIRE) + var/mob/living/carbon/human/H = user + if(istype(H)) + if(H.gloves && (H.gloves.max_heat_protection_temperature > 360)) + extinguish() + to_chat(user, "You put out the fire on [src].") + else + to_chat(user, "You burn your hand on [src]!") + var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") + if(affecting && affecting.take_damage(0, 5)) // 5 burn damage + H.UpdateDamageIcon() + H.updatehealth() + return + else + extinguish() + if(istype(src.loc, /obj/item/weapon/storage)) //If the item is in a storage item, take it out var/obj/item/weapon/storage/S = src.loc diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 9a46a843a56..2b4ba234300 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -44,6 +44,10 @@ light() + fire_act() + if(!lit) + light() //honk + light(var/flavor_text = "\red [usr] lights the [name].") if(!src.lit) src.lit = 1 diff --git a/code/game/objects/items/devices/guitar.dm b/code/game/objects/items/devices/guitar.dm index dc9067c34e4..b95cea0aae3 100644 --- a/code/game/objects/items/devices/guitar.dm +++ b/code/game/objects/items/devices/guitar.dm @@ -7,6 +7,8 @@ icon_state = "guitar" item_state = "guitar" force = 10 + burn_state = FLAMMABLE + burntime = 20 var/datum/song/handheld/song hitsound = 'sound/effects/guitarsmash.ogg' diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 9ea2f17378a..97a999fb161 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -42,6 +42,10 @@ update_icon() +/obj/item/device/taperecorder/fire_act() + mytape.ruin() //Fires destroy the tape + return ..() + /obj/item/device/taperecorder/attack_hand(mob/user) if(loc == user) if(mytape) @@ -253,6 +257,8 @@ var/list/timestamp = list() var/ruined = 0 +/obj/item/device/tape/fire_act() + ruin() /obj/item/device/tape/attack_self(mob/user) if(!ruined) diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm index 9c4d5e9ddb4..c0cc320fdc3 100644 --- a/code/game/objects/items/devices/violin.dm +++ b/code/game/objects/items/devices/violin.dm @@ -7,6 +7,8 @@ icon_state = "violin" item_state = "violin" force = 10 + burn_state = FLAMMABLE + burntime = 20 hitsound = 'sound/weapons/smash.ogg' var/datum/song/handheld/song @@ -18,7 +20,7 @@ qdel(song) song = null return ..() - + /obj/item/device/violin/initialize() song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded ..() diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 879a6846639..ea018289e0f 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -1,77 +1,14 @@ /obj/item/flag icon = 'icons/obj/flag.dmi' w_class = 4 - var/lit = 0 - var/burntime = 30 + burntime = 20 + burn_state = FLAMMABLE -/obj/item/flag/fire_act(null, temperature, volume) - if(!lit) - Ignite() - return - -/obj/item/flag/proc/Ignite() - if(lit) return - lit = 1 - update_icons() - processing_objects.Add(src) - -/obj/item/flag/process() - burntime-- - if(burntime < 1) - processing_objects.Remove(src) - if(istype(src.loc,/turf)) - new /obj/effect/decal/cleanable/ash(src.loc) - new /obj/item/stack/rods(src.loc) - qdel(src) - return - if(istype(src.loc,/mob/living/carbon)) - var/mob/living/carbon/C = src.loc - var/turf/location = get_turf(C) - new /obj/effect/decal/cleanable/ash(location) - new /obj/item/stack/rods(location) - qdel(src) - return - else - qdel(src) - return - -/obj/item/flag/attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/obj/item/flag/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 while lighting their cig with a welding tool - light("[user] casually lights the [name] with [W], what a badass.") - - else if(istype(W, /obj/item/weapon/lighter/zippo)) - var/obj/item/weapon/lighter/zippo/Z = W - if(Z.lit) - light("With a single flick of their wrist, [user] smoothly lights the [name] with their [W]. Damn they're cool.") - - else if(istype(W, /obj/item/weapon/lighter)) - var/obj/item/weapon/lighter/L = W - if(L.lit) - light("After some fiddling, [user] manages to light the [name] with [W].") - - else if(istype(W, /obj/item/weapon/match)) - var/obj/item/weapon/match/M = W - if(M.lit) - light("[user] lights the [name] with their [W].") - - else if(istype(W, /obj/item/weapon/melee/energy/sword/saber)) - var/obj/item/weapon/melee/energy/sword/saber/S = W - if(S.active) - light("[user] swings their [W], barely missing their nose. They light the [name] in the process.") - - else if(istype(W, /obj/item/device/assembly/igniter)) - light("[user] fiddles with [W], and manages to light the [name].") - -/obj/item/flag/proc/light(var/flavor_text = "[usr] lights the [name].") - if(!src.lit) - src.lit = 1 - var/turf/T = get_turf(src) - T.visible_message(flavor_text) - update_icons() - processing_objects.Add(src) + if(is_hot(W) && burn_state != ON_FIRE) + user.visible_message("[user] lights the [name] with [W].") + fire_act() /obj/item/flag/proc/update_icons() overlays = null diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 55fda54267f..f509f74d79b 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -125,11 +125,25 @@ var/global/list/datum/stack_recipe/mime_recipes = list ( \ origin_tech = "plasmatech=2;materials=2" sheettype = "plasma" materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) + burn_state = FLAMMABLE + burntime = 5 /obj/item/stack/sheet/mineral/plasma/New() ..() recipes = plasma_recipes +/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/weapon/W, mob/user, params) + if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite + message_admins("Plasma sheets ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") + fire_act() + else + return ..() + +/obj/item/stack/sheet/mineral/plasma/fire_act() + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, amount*10) + qdel(src) + /obj/item/stack/sheet/mineral/plastic name = "Plastic" icon_state = "sheet-plastic" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 98fa7a955ab..31d1140d821 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -155,6 +155,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ singular_name = "wood plank" icon_state = "sheet-wood" origin_tech = "materials=1;biotech=1" + burn_state = FLAMMABLE /obj/item/stack/sheet/wood/New(var/loc, var/amount=null) recipes = wood_recipes @@ -169,6 +170,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ singular_name = "cloth roll" icon_state = "sheet-cloth" origin_tech = "materials=2" + burn_state = FLAMMABLE /* * Cardboard @@ -193,6 +195,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ singular_name = "cardboard sheet" icon_state = "sheet-card" origin_tech = "materials=1" + burn_state = FLAMMABLE /obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) recipes = cardboard_recipes diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index d7fcf1bcb53..bfbd0a4ccb6 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -37,6 +37,7 @@ icon_state = "tile_grass" origin_tech = "biotech=1" turf_type = /turf/simulated/floor/grass + burn_state = FLAMMABLE /* * Wood @@ -48,6 +49,7 @@ desc = "an easy to fit wood floor tile" icon_state = "tile-wood" turf_type = /turf/simulated/floor/wood + burn_state = FLAMMABLE /* * Carpets @@ -58,6 +60,7 @@ desc = "A piece of carpet. It is the same size as a floor tile" icon_state = "tile-carpet" turf_type = /turf/simulated/floor/carpet + burn_state = FLAMMABLE /* * Plasteel @@ -100,6 +103,7 @@ desc = "A piece of carpet with a convincing star pattern." icon_state = "tile_space" turf_type = /turf/simulated/floor/fakespace + burn_state = FLAMMABLE /obj/item/stack/tile/fakespace/loaded amount = 30 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ec524314b71..7e38c7a6e4e 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -257,31 +257,31 @@ icon = 'icons/obj/toy.dmi' icon_state = "snappop" w_class = 1 + var/ash_type = /obj/effect/decal/cleanable/ash -/obj/item/toy/snappop/throw_impact(atom/hit_atom) - ..() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(3, 1, src) +/obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1) + var/datum/effect/system/spark_spread/s = new() + s.set_up(n, c, src) s.start() - new /obj/effect/decal/cleanable/ash(src.loc) - visible_message("The [src.name] explodes!","You hear a snap!") + new ash_type(loc) + visible_message("[src] explodes!", + "You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) +/obj/item/toy/snappop/fire_act() + pop_burst() + +/obj/item/toy/snappop/throw_impact(atom/hit_atom) + ..() + pop_burst() + /obj/item/toy/snappop/Crossed(H as mob|obj) - if((ishuman(H))) //i guess carp and shit shouldn't set them off + if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H - if(M.m_intent == "run") - to_chat(M, "You step on the snap pop!") - - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(2, 0, src) - s.start() - new /obj/effect/decal/cleanable/ash(src.loc) - visible_message("The [name] explodes!","You hear a snap!") - playsound(src, 'sound/effects/snap.ogg', 50, 1) - qdel(src) - + if(issilicon(H) || M.m_intent == "run") + to_chat(M, "You step on the snap pop!") + pop_burst(2, 0) /* @@ -394,6 +394,8 @@ obj/item/toy/cards + burn_state = FLAMMABLE + burntime = 5 var/parentdeck = null var/deckstyle = "nanotrasen" var/card_hitsound = null @@ -749,6 +751,7 @@ obj/item/toy/cards/deck/syndicate card_throw_speed = 3 card_throw_range = 20 card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") + burn_state = FIRE_PROOF /* || Custom card decks || @@ -884,6 +887,7 @@ obj/item/toy/cards/deck/syndicate/black icon_state = "carpplushie" attack_verb = list("bitten", "eaten", "fin slapped") var/bitesound = 'sound/weapons/bite.ogg' + burn_state = FLAMMABLE // Attack mob /obj/item/toy/carpplushie/attack(mob/M as mob, mob/user as mob) @@ -946,6 +950,7 @@ obj/item/toy/cards/deck/syndicate/black icon = 'icons/obj/toy.dmi' var/poof_sound = 'sound/weapons/thudswoosh.ogg' attack_verb = list("poofed", "bopped", "whapped","cuddled","fluffed") + burn_state = FLAMMABLE /obj/item/toy/plushie/attack(mob/M as mob, mob/user as mob) playsound(loc, poof_sound, 20, 1) // Play the whoosh sound in local area @@ -1071,6 +1076,7 @@ obj/item/toy/cards/deck/syndicate/black item_state = "arm_blade" attack_verb = list("pricked", "absorbed", "gored") w_class = 2 + burn_state = FLAMMABLE /* * Toy/fake flash diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 928eba59a6a..dc538674993 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/trash.dmi' w_class = 1 desc = "This is rubbish." + burn_state = FLAMMABLE /obj/item/trash/raisins name = "4no raisins" @@ -42,6 +43,7 @@ /obj/item/trash/plate name = "Plate" icon_state = "plate" + burn_state = FIRE_PROOF /obj/item/trash/snack_bowl name = "Snack bowl" @@ -58,6 +60,7 @@ /obj/item/trash/tray name = "Tray" icon_state = "tray" + burn_state = FIRE_PROOF /obj/item/trash/candle name = "candle" @@ -73,6 +76,7 @@ icon_state = "cola" var/is_glass = 0 var/is_plastic = 0 + burn_state = FIRE_PROOF /obj/item/trash/gum name = "chewed gum" diff --git a/code/game/objects/items/weapons/cash.dm b/code/game/objects/items/weapons/cash.dm index 7c1432bb772..3608d7861f3 100644 --- a/code/game/objects/items/weapons/cash.dm +++ b/code/game/objects/items/weapons/cash.dm @@ -23,6 +23,7 @@ var/global/list/moneytypes=list( throw_speed = 1 throw_range = 2 w_class = 1 + burn_state = FLAMMABLE var/access = list() access = access_crate_cash var/worth = 1 // Per chip diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index a06619fcca4..6f56b07ca77 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -59,6 +59,9 @@ LIGHTERS ARE IN LIGHTERS.DM return ..() +/obj/item/clothing/mask/cigarette/fire_act() + light() + /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() if(istype(W, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index f070a1fe4ad..055faa03a8c 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -11,6 +11,7 @@ throwforce = 6.0 w_class = 2 attack_verb = list("bashed", "battered", "judged", "whacked") + burn_state = FLAMMABLE /obj/item/weapon/gavelhammer/suicide_act(mob/user) user.visible_message("[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.") @@ -25,6 +26,7 @@ force = 2.0 throwforce = 2.0 w_class = 1 + burn_state = FLAMMABLE /obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/gavelhammer)) diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 0ec893b53a6..6dcbef385b0 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -13,6 +13,7 @@ icon = 'icons/obj/items.dmi' icon_state = "gift1" item_state = "gift1" + burn_state = FLAMMABLE /obj/item/weapon/a_gift/New() ..() @@ -139,6 +140,7 @@ flags = NOBLUDGEON amount = 25 max_amount = 25 + burn_state = FLAMMABLE /obj/item/stack/wrapping_paper/attack_self(mob/user) to_chat(user, "You need to use it on a package that has already been wrapped!") diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 8cbd76041bd..af855e63016 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -9,6 +9,8 @@ throw_range = 20 flags = CONDUCT slot_flags = SLOT_BELT + burn_state = FLAMMABLE + burntime = 5 var/active = 0 var/det_time = 50 var/display_timer = 1 diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 8b5baf79a35..12219eadd0b 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -11,6 +11,7 @@ throw_range = 7 w_class = 3 attack_verb = list("mopped", "bashed", "bludgeoned", "whacked") + burn_state = FLAMMABLE var/mopping = 0 var/mopcount = 0 var/mopcap = 5 diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index a7741267d09..67d4f078264 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -8,6 +8,8 @@ item_state = "paintcan" materials = list(MAT_METAL=200) w_class = 3 + burn_state = FLAMMABLE + burntime = 5 amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5,10,20,30,50,70) volume = 70 diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 90c98c6fdac..de419dc1b7d 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -9,6 +9,7 @@ throw_speed = 4 throw_range = 20 origin_tech = "bluespace=4" + burn_state = FLAMMABLE /obj/item/weapon/teleportation_scroll/apprentice name = "lesser scroll of teleportation" diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 809bf0d298d..be831bbe0d1 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -44,6 +44,7 @@ icon_state = "buckler" item_state = "buckler" materials = list() + burn_state = FLAMMABLE block_chance = 30 /obj/item/weapon/shield/energy diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 00ac859528d..fa68b09135e 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -6,6 +6,7 @@ force = 5 w_class = 4 attack_verb = list("bashed","smacked") + burn_state = FLAMMABLE var/delayed = 0 //used to do delays diff --git a/code/game/objects/items/weapons/staff.dm b/code/game/objects/items/weapons/staff.dm index ffaadb59d59..19c771873ce 100644 --- a/code/game/objects/items/weapons/staff.dm +++ b/code/game/objects/items/weapons/staff.dm @@ -10,6 +10,7 @@ w_class = 2 armour_penetration = 100 attack_verb = list("bludgeoned", "whacked", "disciplined") + burn_state = FLAMMABLE /obj/item/weapon/twohanded/staff/broom name = "broom" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index fa8de4f51bf..7e4a084d424 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -15,6 +15,8 @@ max_w_class = 3 max_combined_w_class = 21 storage_slots = 21 + burn_state = FLAMMABLE + burntime = 20 species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/back.dmi' @@ -35,6 +37,7 @@ icon_state = "holdingpack" max_w_class = 5 max_combined_w_class = 35 + burn_state = FIRE_PROOF New() ..() @@ -123,12 +126,14 @@ desc = "It's a special backpack made exclusively for Nanotrasen officers." icon_state = "captainpack" item_state = "captainpack" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/industrial name = "industrial backpack" desc = "It's a tough backpack for the daily grind of station life." icon_state = "engiepack" item_state = "engiepack" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/botany name = "botany backpack" @@ -153,6 +158,7 @@ desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." icon_state = "toxpack" item_state = "toxpack" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/virology name = "virology backpack" @@ -168,6 +174,7 @@ name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/satcheldeluxe name = "leather satchel" @@ -188,6 +195,7 @@ name = "industrial satchel" desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel_med name = "medical satchel" @@ -213,6 +221,7 @@ name = "scientist satchel" desc = "Useful for holding research materials." icon_state = "satchel-tox" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel_sec name = "security satchel" @@ -228,6 +237,7 @@ name = "captain's satchel" desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel_flat name = "smuggler's satchel" @@ -346,6 +356,7 @@ desc = "A duffelbag designed to hold large quantities of condoms." icon_state = "duffel-captain" item_state = "duffel-captain" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/duffel/security name = "security duffelbag" @@ -388,6 +399,7 @@ desc = "A duffelbag designed to hold tools." icon_state = "duffel-eng" item_state = "duffel-eng" + burn_state = FIRE_PROOF /obj/item/weapon/storage/backpack/duffel/hydro name = "hydroponics duffelbag" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index af4d9aa6008..395d27d0300 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -162,7 +162,7 @@ max_w_class = 3 w_class = 1 can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/grown","/obj/item/seeds","/obj/item/weapon/grown", "/obj/item/stack/tile/grass","/obj/item/stack/medical/ointment/aloe","/obj/item/stack/medical/bruise_pack/comfrey", "/obj/item/weapon/reagent_containers/honeycomb") - + burn_state = FLAMMABLE /obj/item/weapon/storage/bag/plants/portaseeder name = "portable seed extractor" @@ -376,6 +376,7 @@ max_w_class = 3 w_class = 4 //Bigger than a book because physics can_hold = list("/obj/item/weapon/book", "/obj/item/weapon/storage/bible", "/obj/item/weapon/tome", "/obj/item/weapon/spellbook") + burn_state = FLAMMABLE /* * Trays - Agouri @@ -484,7 +485,7 @@ max_combined_w_class = 200 w_class = 1 can_hold = list("/obj/item/weapon/reagent_containers/food/pill","/obj/item/weapon/reagent_containers/glass/beaker","/obj/item/weapon/reagent_containers/glass/bottle") - + burn_state = FLAMMABLE /* * Biowaste bag (mostly for xenobiologists) */ @@ -497,4 +498,5 @@ storage_slots = 25 max_combined_w_class = 200 w_class = 1 - can_hold = list("/obj/item/slime_extract","/obj/item/weapon/reagent_containers/food/snacks/monkeycube","/obj/item/weapon/reagent_containers/syringe","/obj/item/weapon/reagent_containers/glass/beaker","/obj/item/weapon/reagent_containers/glass/bottle","/obj/item/weapon/reagent_containers/blood","/obj/item/weapon/reagent_containers/hypospray/autoinjector") \ No newline at end of file + can_hold = list("/obj/item/slime_extract","/obj/item/weapon/reagent_containers/food/snacks/monkeycube","/obj/item/weapon/reagent_containers/syringe","/obj/item/weapon/reagent_containers/glass/beaker","/obj/item/weapon/reagent_containers/glass/bottle","/obj/item/weapon/reagent_containers/blood","/obj/item/weapon/reagent_containers/hypospray/autoinjector") + burn_state = FLAMMABLE \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 57332ae24d6..b98805e3275 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -5,6 +5,7 @@ throw_speed = 1 throw_range = 5 w_class = 3 + burn_state = FLAMMABLE var/mob/affecting = null var/deity_name = "Christ" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 76cbc9ab102..bfdc3a80727 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -24,6 +24,7 @@ desc = "It's just an ordinary box." icon_state = "box" item_state = "syringe_kit" + burn_state = FLAMMABLE foldable = /obj/item/stack/sheet/cardboard //BubbleWrap /obj/item/weapon/storage/box/large diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 543865aa592..7f2a91054c1 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -12,6 +12,8 @@ max_w_class = 3 max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + burn_state = FLAMMABLE + burntime = 20 /obj/item/weapon/storage/briefcase/New() ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 367874b0d7d..c4488216b12 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -17,6 +17,7 @@ icon = 'icons/obj/food/food.dmi' icon_state = "donutbox6" name = "donut box" + burn_state = FLAMMABLE var/icon_type = "donut" /obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index e2324fcb434..878adcaa414 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -323,7 +323,7 @@ return 1 //Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target -/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location) +/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location, burn = 0) if(!istype(W)) return 0 if(istype(src, /obj/item/weapon/storage/fancy)) @@ -357,8 +357,14 @@ W.on_exit_storage(src) update_icon() W.mouse_opacity = initial(W.mouse_opacity) + if(burn) + W.fire_act() return 1 +/obj/item/weapon/storage/empty_object_contents(burn, loc) + for(var/obj/item/Item in contents) + remove_from_storage(Item, loc, burn) + //This proc is called when you want to place an item into the storage item. /obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob, params) ..() diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index e34f9687d7e..5bc1ae65e84 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/wallets.dmi' icon_state = "wallet" w_class = 2 + burn_state = FLAMMABLE can_hold = list( "/obj/item/weapon/spacecash", "/obj/item/weapon/card", diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 62c2f7aabfd..3073125bae0 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -40,6 +40,7 @@ icon_state = "wood_tableparts" flags = null upgradable = 0 + burn_state = FLAMMABLE result = /obj/structure/table/woodentable parts = list( /obj/item/stack/sheet/wood, diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index e6e88563d4b..9068460ae80 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -373,7 +373,8 @@ V.visible_message("[V] was frozen shut!") for(var/mob/living/L in T) L.ExtinguishMob() - return + for(var/obj/item/Item in T) + Item.extinguish() /datum/effect/system/freezing_smoke_spread diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 4e318d26fed..7c5fe09dd06 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -16,7 +16,9 @@ var/Mtoollink = 0 // variable to decide if an object should show the multitool menu linking menu, not all objects use it - + var/burn_state = FIRE_PROOF // LAVA_PROOF | FIRE_PROOF | FLAMMABLE | ON_FIRE + var/burntime = 10 //How long it takes to burn to ashes, in seconds + var/burn_world_time //What world time the object will burn up completely var/being_shocked = 0 var/on_blueprints = FALSE //Are we visible on the station blueprints at roundstart? @@ -288,4 +290,32 @@ a { being_shocked = 0 /obj/proc/CanAStarPass() - . = !density \ No newline at end of file + . = !density + +/obj/fire_act(global_overlay=1) + if(!burn_state) + burn_state = ON_FIRE + fire_master.burning += src + burn_world_time = world.time + burntime*rand(10,20) + if(global_overlay) + overlays += fire_overlay + return 1 + +/obj/proc/burn() + empty_object_contents(1, loc) + var/obj/effect/decal/cleanable/ash/A = new(loc) + A.desc = "Looks like this used to be a [name] some time ago." + fire_master.burning -= src + qdel(src) + +/obj/proc/extinguish() + if(burn_state == ON_FIRE) + burn_state = FLAMMABLE + overlays -= fire_overlay + fire_master.burning -= src + +/obj/proc/empty_object_contents(burn = 0, new_loc = loc) + for(var/obj/item/Item in contents) //Empty out the contents + Item.forceMove(new_loc) + if(burn) + Item.fire_act() //Set them on fire, too \ No newline at end of file diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 9251890dc6e..045f58d577d 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -15,6 +15,8 @@ icon = 'icons/obj/artstuff.dmi' icon_state = "easel" density = 1 + burn_state = FLAMMABLE + burntime = 15 var/obj/item/weapon/canvas/painting = null @@ -56,6 +58,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES] desc = "Draw out your soul on this canvas! Only crayons can draw on it. Examine it to focus on the canvas." icon = 'icons/obj/artstuff.dmi' icon_state = "11x11" + burn_state = FLAMMABLE var/whichGlobalBackup = 1 //List index /obj/item/weapon/canvas/nineteenXnineteen diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 31958409954..10f09401ba5 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -16,6 +16,7 @@ LINEN BINS throw_range = 2 w_class = 1 item_color = "white" + burn_state = FLAMMABLE slot_flags = SLOT_BACK @@ -161,6 +162,8 @@ LINEN BINS icon = 'icons/obj/structures.dmi' icon_state = "linenbin-full" anchored = 1 + burn_state = FLAMMABLE + burntime = 20 var/amount = 20 var/list/sheets = list() var/obj/item/hidden = null @@ -184,6 +187,16 @@ LINEN BINS else icon_state = "linenbin-full" +/obj/structure/bedsheetbin/fire_act() + if(!amount) + return + ..() + +/obj/structure/bedsheetbin/burn() + amount = 0 + extinguish() + update_icon() + /obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weapon/bedsheet)) user.drop_item() diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 45c2f538e26..e859c0348f1 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -5,6 +5,8 @@ icon_opened = "cardboard_open" icon_closed = "cardboard" health = 10 + burn_state = FLAMMABLE + burntime = 20 sound = 'sound/effects/rustle2.ogg' material_drop = /obj/item/stack/sheet/cardboard cutting_sound = 'sound/items/poster_ripped.ogg' diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 03337e6a260..c7aaa8cd84d 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -4,6 +4,8 @@ icon_state = "coffin" icon_closed = "coffin" icon_opened = "coffin_open" + burn_state = FLAMMABLE + burntime = 20 /obj/structure/closet/coffin/update_icon() if(!opened) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index bff3228dbc9..169179ca375 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -4,6 +4,8 @@ icon_state = "cabinet_closed" icon_closed = "cabinet_closed" icon_opened = "cabinet_open" + burn_state = FLAMMABLE + burntime = 20 /obj/structure/closet/cabinet/update_icon() if(!opened) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index af6424571ca..49006fb7fb5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -7,6 +7,8 @@ icon_opened = "cabinetdetective_open" icon_broken = "cabinetdetective_broken" icon_off = "cabinetdetective_broken" + burn_state = FLAMMABLE + burntime = 20 New() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 51e3e8d06c3..7eab1e6de85 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -33,6 +33,8 @@ icon_opened = "cabinetdetective_open" icon_broken = "cabinetdetective_broken" icon_off = "cabinetdetective_broken" + burn_state = FLAMMABLE + burntime = 20 /obj/structure/closet/secure_closet/personal/cabinet/update_icon() if(broken) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 66c470882c8..7ca75725dd9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -317,6 +317,8 @@ icon_opened = "cabinetdetective_open" icon_broken = "cabinetdetective_broken" icon_off = "cabinetdetective_broken" + burn_state = FLAMMABLE + burntime = 20 New() ..() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index e4f8acd2c5b..23c6e096748 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -1,3 +1,7 @@ +/obj/structure/flora + burn_state = FLAMMABLE + burntime = 30 + //trees /obj/structure/flora/tree name = "tree" @@ -230,6 +234,7 @@ desc = "a rock" icon_state = "rock1" icon = 'icons/obj/flora/rocks.dmi' + burn_state = FIRE_PROOF anchored = 1 /obj/structure/flora/rock/New() diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 9ce9e59e423..b9af7b2d032 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -219,6 +219,8 @@ /obj/structure/mineral_door/wood mineralType = "wood" hardness = 1 + burn_state = FLAMMABLE + burntime = 30 Open() isSwitchingStates = 1 diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 24ea6b5a358..bfb5d584965 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -41,6 +41,7 @@ desc = "" icon = 'icons/obj/decals.dmi' w_class = 3 //big + burn_state = FLAMMABLE var/sign_state = "" /obj/item/sign/attackby(obj/item/tool as obj, mob/user as mob) //construction diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index f13bffb9d44..c5a3b2f15ba 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,6 +13,8 @@ icon_state = "bed" can_buckle = 1 buckle_lying = 1 + burn_state = FLAMMABLE + burntime = 30 var/movable = 0 // For mobility checks /obj/structure/stool/bed/MouseDrop(atom/over_object) @@ -46,6 +48,7 @@ name = "roller bed" icon = 'icons/obj/rollerbed.dmi' icon_state = "down" + burn_state = FIRE_PROOF anchored = 0 /obj/structure/stool/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index a12f804d308..1c3c3f8e793 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -3,6 +3,7 @@ desc = "You sit in this. Either by will or force." icon_state = "chair" buckle_lying = 0 //you sit in a chair, not lay + burn_state = FIRE_PROOF var/propelled = 0 // Check for fire-extinguisher-driven chairs @@ -76,6 +77,8 @@ // Chair types /obj/structure/stool/bed/chair/wood + burn_state = FLAMMABLE + burntime = 20 // TODO: Special ash subtype that looks like charred chair legs /obj/structure/stool/bed/chair/wood/normal @@ -103,6 +106,8 @@ desc = "It looks comfy." icon_state = "comfychair" color = rgb(255,255,255) + burn_state = FLAMMABLE + burntime = 30 var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 285b1da8aa5..48193933a66 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -369,6 +369,8 @@ parts = /obj/item/weapon/table_parts/wood health = 50 canSmoothWith = list(/obj/structure/table/woodentable, /obj/structure/table/woodentable/poker) + burn_state = FLAMMABLE + burntime = 20 var/canPokerize = 1 /obj/structure/table/woodentable/attackby(obj/item/I as obj, mob/user as mob, params) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 5d8c98be329..b27d3f6e4f8 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -249,12 +249,16 @@ /obj/machinery/shower/proc/wash(atom/movable/O as obj|mob) if(!on) return + if(istype(O, /obj/item)) + var/obj/item/I = O + I.extinguish() + O.water_act(100, convertHeat(), src) if(isliving(O)) var/mob/living/L = O L.ExtinguishMob() - L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily + L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily to_chat(L, "You've been drenched in water!") if(iscarbon(O)) var/mob/living/carbon/M = O diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index afc11b0acf8..8eb21419ea9 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,5 +1,6 @@ /obj/item/clothing name = "clothing" + burn_state = FLAMMABLE var/list/species_restricted = null //Only these species can wear this kit. var/rig_restrict_helmet = 0 // Stops the user from equipping a rig helmet without attaching it to the suit first. var/scan_reagents = 0 //Can the wearer see reagents while it's equipped? @@ -82,6 +83,7 @@ w_class = 1 throwforce = 2 slot_flags = SLOT_EARS + burn_state = FIRE_PROOF /obj/item/clothing/ears/attack_hand(mob/user as mob) if(!user) return @@ -139,6 +141,7 @@ flags = EARBANGPROTECT strip_delay = 15 put_on_delay = 25 + burn_state = FLAMMABLE //Glasses /obj/item/clothing/glasses @@ -155,6 +158,7 @@ var/color_view = null//overrides client.color while worn strip_delay = 20 // but seperated to allow items to protect but not impair vision, like space helmets put_on_delay = 25 + burn_state = FIRE_PROOF species_restricted = list("exclude","Kidan") /* SEE_SELF // can see self, no matter what @@ -510,6 +514,7 @@ BLIND // can't see anything flash_protect = 2 strip_delay = 50 put_on_delay = 50 + burn_state = FIRE_PROOF /obj/item/clothing/suit/space name = "Space suit" @@ -531,6 +536,7 @@ BLIND // can't see anything max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT strip_delay = 80 put_on_delay = 80 + burn_state = FIRE_PROOF species_restricted = list("exclude","Diona","Vox","Wryn") //Under clothing diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 76bfbdfd394..4d8b9fcfd9c 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -6,6 +6,7 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 item_color="yellow" + burn_state = FIRE_PROOF /obj/item/clothing/gloves/color/yellow/power description_antag = "These are a pair of power gloves, and can be used to fire bolts of electricity while standing over powered power cables." @@ -45,6 +46,7 @@ siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 item_color="yellow" + burn_state = FIRE_PROOF New() siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5) @@ -59,6 +61,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = FIRE_PROOF var/can_be_cut = 1 @@ -101,6 +104,7 @@ desc = "These gloves will protect the wearer from electric shock." siemens_coefficient = 0 permeability_coefficient = 0.05 + burn_state = FIRE_PROOF /obj/item/clothing/gloves/color/rainbow name = "rainbow gloves" @@ -171,6 +175,7 @@ permeability_coefficient = 0.01 item_color="white" transfer_prints = TRUE + burn_state = FIRE_PROOF /obj/item/clothing/gloves/color/latex/nitrile name = "nitrile gloves" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index feae32b9085..8888b749484 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -28,6 +28,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = FIRE_PROOF /obj/item/clothing/gloves/botanic_leather desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." @@ -39,6 +40,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = FIRE_PROOF /obj/item/clothing/gloves/batmangloves desc = "Used for handling all things bat related." diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 977a3969a93..bbaf5b34e8b 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -58,6 +58,7 @@ desc = "A Collectable Welding Helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this Helmet is done so at the owner's own risk!" icon_state = "welding" item_state = "welding" + burn_state = FIRE_PROOF species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi', @@ -117,12 +118,14 @@ desc = "Go Red! I mean Green! I mean Red! No Green!" icon_state = "thunderdome" item_state = "thunderdome" + burn_state = FIRE_PROOF /obj/item/clothing/head/collectable/swat name = "collectable SWAT helmet" desc = "Now you can be in the Deathsquad too!" icon_state = "swat" item_state = "swat" + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi' diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 5cc5af80abb..c73a6f21306 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -10,6 +10,7 @@ armor = list(melee = 15, bullet = 5, laser = 20, energy = 10, bomb = 20, bio = 10, rad = 20) flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) + burn_state = FIRE_PROOF /obj/item/clothing/head/hardhat/attack_self(mob/user) on = !on diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index b7b0cc71b81..f31a6434001 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -11,6 +11,7 @@ heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi', diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 6e53e8a9b04..c6879cb2945 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -342,6 +342,7 @@ throw_range = 5 w_class = 2 attack_verb = list("warned", "cautioned", "smashed") + burn_state = FIRE_PROOF /obj/item/clothing/head/griffin name = "griffon head" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 703f36cf1fd..eb04efcc380 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -23,6 +23,7 @@ armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) actions_types = list(/datum/action/item_action/toggle) + burn_state = FIRE_PROOF species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/head.dmi', diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 5b3ab335cbe..295ec84c4af 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -8,6 +8,7 @@ gas_transfer_coefficient = 0.10 permeability_coefficient = 0.50 actions_types = list(/datum/action/item_action/adjust) + burn_state = FIRE_PROOF species_fit = list("Vox", "Vox Armalis", "Unathi", "Tajaran", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 72b4b6febb7..0df0f7550fc 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -8,6 +8,7 @@ item_state = "gas_alt" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 + burn_state = FIRE_PROOF species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', @@ -95,6 +96,7 @@ icon_state = "clown" item_state = "clown_hat" flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user) @@ -130,24 +132,28 @@ desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." icon_state = "sexyclown" item_state = "sexyclown" + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/mime name = "mime mask" desc = "The traditional mime's mask. It has an eerie facial posture." icon_state = "mime" item_state = "mime" + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." icon_state = "monkeymask" item_state = "monkeymask" + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" desc = "A traditional female mime's mask." icon_state = "sexymime" item_state = "sexymime" + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/death_commando name = "Death Commando Mask" @@ -158,12 +164,14 @@ name = "cyborg visor" desc = "Beep boop" icon_state = "death" + burn_state = FLAMMABLE /obj/item/clothing/mask/gas/owl_mask name = "owl mask" desc = "Twoooo!" icon_state = "owl" flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | NODROP + burn_state = FLAMMABLE actions_types = list(/datum/action/item_action/hoot) /obj/item/clothing/mask/gas/owl_mask/attack_self() diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm index 190804d1a92..8655c2b7541 100644 --- a/code/modules/clothing/masks/voice.dm +++ b/code/modules/clothing/masks/voice.dm @@ -9,6 +9,7 @@ // desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." var/obj/item/voice_changer/changer origin_tech = "syndicate=4" + burn_state = FIRE_PROOF /obj/item/clothing/mask/gas/voice/verb/Toggle_Voice_Changer() set category = "Object" diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 2c6bdeddf87..b036946e4ae 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -8,6 +8,7 @@ actions_types = list(/datum/action/item_action/toggle) strip_delay = 70 put_on_delay = 70 + burn_state = FIRE_PROOF /obj/item/clothing/shoes/magboots/attack_self(mob/user) if(magpulse) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 2330f439547..f9aef32e067 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -6,6 +6,7 @@ permeability_coefficient = 0.05 flags = NOSLIP origin_tech = "syndicate=3" + burn_state = FIRE_PROOF var/list/clothing_choices = list() silence_steps = 1 @@ -22,6 +23,7 @@ item_state = "jackboots" armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0) strip_delay = 70 + burn_state = FIRE_PROOF /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT shoes" @@ -51,6 +53,7 @@ slowdown = SHOES_SLOWDOWN+1 strip_delay = 50 put_on_delay = 50 + burn_state = FIRE_PROOF /obj/item/clothing/shoes/galoshes/dry name = "absorbent galoshes" @@ -82,6 +85,7 @@ item_color = "hosred" strip_delay = 50 put_on_delay = 50 + burn_state = FIRE_PROOF var/footstep = 1 silence_steps = 1 shoe_sound = "jackboot" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8b5ea0d9af5..d46d7f83d1d 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -7,6 +7,7 @@ max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT strip_delay = 60 put_on_delay = 40 + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' @@ -148,6 +149,7 @@ cold_protection = UPPER_TORSO|LOWER_TORSO|HANDS heat_protection = UPPER_TORSO|LOWER_TORSO|HANDS strip_delay = 70 + burn_state = FLAMMABLE /obj/item/clothing/suit/armor/vest/warden/alt name = "warden's jacket" @@ -235,7 +237,7 @@ blood_overlay_type = "armor" flags_size = ONESIZEFITSALL allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder) - + burn_state = FLAMMABLE //Reactive armor /obj/item/clothing/suit/armor/reactive diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 06fbf32b056..4286064262f 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -7,6 +7,7 @@ flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR | THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + burn_state = FIRE_PROOF /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -25,6 +26,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL strip_delay = 70 put_on_delay = 70 + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index a8fd6ea4c49..5124e1d1adf 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -189,6 +189,7 @@ item_state = "hazard" blood_overlay_type = "armor" allowed = list (/obj/item/device/flashlight, /obj/item/device/t_scanner, /obj/item/weapon/tank/emergency_oxygen) + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 676800f8f48..6a8908506b8 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -17,6 +17,7 @@ blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' @@ -30,6 +31,7 @@ blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO allowed = list (/obj/item/weapon/gun/energy/laser/redtag) + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' @@ -136,6 +138,7 @@ w_class = 3 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + burn_state = FIRE_PROOF /obj/item/clothing/suit/hastur @@ -515,6 +518,7 @@ desc = "A long, thick black leather coat." icon_state = "leathercoat" item_state = "leathercoat" + burn_state = FIRE_PROOF /obj/item/clothing/suit/browncoat name = "brown leather coat" @@ -748,6 +752,7 @@ ignore_suitadjust = 1 actions_types = list() adjust_flavour = null + burn_state = FIRE_PROOF /obj/item/clothing/suit/officercoat name = "Clown Officer's Coat" diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 2178821e3fa..44a2f5b1c49 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -28,6 +28,7 @@ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT strip_delay = 60 put_on_delay = 60 + burn_state = FIRE_PROOF /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" @@ -72,6 +73,7 @@ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 70 put_on_delay = 70 + burn_state = FIRE_PROOF /obj/item/clothing/suit/bomb_suit name = "bomb suit" @@ -92,6 +94,7 @@ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT strip_delay = 70 put_on_delay = 70 + burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' @@ -119,6 +122,7 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 60, rad = 100) strip_delay = 60 put_on_delay = 60 + burn_state = FIRE_PROOF /obj/item/clothing/suit/radiation name = "Radiation suit" @@ -135,4 +139,5 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 60, rad = 100) flags_inv = HIDEJUMPSUIT|HIDETAIL strip_delay = 60 - put_on_delay = 60 \ No newline at end of file + put_on_delay = 60 + burn_state = FIRE_PROOF \ No newline at end of file diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index c36a3f3ecea..b8ee1c3c896 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -6,6 +6,7 @@ permeability_coefficient = 0.01 armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) unacidable = 1 + burn_state = FIRE_PROOF //Not given any special protective value since the magic robes are full-body protection --NEO strip_delay = 50 put_on_delay = 50 @@ -65,6 +66,7 @@ unacidable = 1 strip_delay = 50 put_on_delay = 50 + burn_state = FIRE_PROOF /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" @@ -117,6 +119,7 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) unacidable = 0 + burn_state = FLAMMABLE /obj/item/clothing/head/wizard/marisa/fake name = "Witch Hat" @@ -126,6 +129,7 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) unacidable = 0 + burn_state = FLAMMABLE /obj/item/clothing/suit/wizrobe/marisa/fake name = "Witch Robe" @@ -135,4 +139,5 @@ gas_transfer_coefficient = 1 permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - unacidable = 0 \ No newline at end of file + unacidable = 0 + burn_state = FLAMMABLE \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index e417c899f7f..8e8e046ef1b 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -166,6 +166,7 @@ icon_state = "bronze" item_color = "bronze" materials = list(MAT_METAL=1000) + burn_state = FIRE_PROOF /obj/item/clothing/accessory/medal/conduct name = "distinguished conduct medal" diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 8f5a540f3c3..8d7a92e3e8a 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -7,6 +7,7 @@ desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." origin_tech = "syndicate=3" var/list/clothing_choices = list() + burn_state = FIRE_PROOF armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) New() diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 886d48932aa..7b6b85326c3 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -17,6 +17,7 @@ item_state = "bl_suit" item_color = "black" flags_size = ONESIZEFITSALL + burn_state = FIRE_PROOF /obj/item/clothing/under/color/blackf name = "feminine black jumpsuit" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 9b604da7277..2e01d170f3d 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -7,6 +7,7 @@ item_color = "chief" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10) flags_size = ONESIZEFITSALL + burn_state = FIRE_PROOF /obj/item/clothing/under/rank/chief_engineer/skirt desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief engineer\". It has minor radiation shielding." @@ -23,6 +24,7 @@ item_state = "atmos_suit" item_color = "atmos" flags_size = ONESIZEFITSALL + burn_state = FIRE_PROOF /obj/item/clothing/under/rank/atmospheric_technician/skirt desc = "It's a jumpskirt worn by atmospheric technicians." @@ -40,6 +42,7 @@ item_color = "engine" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10) flags_size = ONESIZEFITSALL + burn_state = FIRE_PROOF /obj/item/clothing/under/rank/engineer/skirt diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index d912a2e289d..c37d6340609 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -146,6 +146,7 @@ min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT heat_protection = UPPER_TORSO | LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT + burn_state = FIRE_PROOF /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" @@ -163,6 +164,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT slowdown = -10 siemens_coefficient = 0 + burn_state = LAVA_PROOF /obj/item/clothing/under/johnny name = "johnny~~ jumpsuit" @@ -334,6 +336,7 @@ item_state = "gladiator" item_color = "gladiator" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + burn_state = FIRE_PROOF //dress @@ -467,6 +470,7 @@ item_color = "roman" item_state = "armor" strip_delay = 100 + burn_state = FIRE_PROOF /obj/item/clothing/under/maid name = "maid costume" diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index aae17abc961..15ce27b7d5c 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -10,6 +10,7 @@ consume_sound = 'sound/items/drink.ogg' possible_transfer_amounts = list(5,10,15,20,25,30,50) volume = 50 + burn_state = FIRE_PROOF /obj/item/weapon/reagent_containers/food/drinks/New() ..() diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index ebdd151a4b5..bc1442038e9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -10,6 +10,8 @@ lefthand_file = 'icons/goonstation/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/goonstation/mob/inhands/items_righthand.dmi' materials = list(MAT_GLASS=500) + burn_state = FLAMMABLE + burntime = 5 /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs @@ -25,6 +27,15 @@ else ..() +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fire_act() + if(!reagents.total_volume) + return + ..() + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/burn() + reagents.clear_reagents() + extinguish() + /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/on_reagent_change() // *scream if(reagents.reagent_list.len > 0) switch(reagents.get_master_reagent_id()) diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 3e0cfb8f867..f14c0d19254 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -11,6 +11,7 @@ var/apply_method = "swallow" var/transfer_efficiency = 1.0 var/instant_application = 0 //if we want to bypass the forcedfeed delay + burn_state = FLAMMABLE /obj/item/weapon/reagent_containers/food/New() ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm index 706ea0e367b..381525a13ae 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm @@ -59,8 +59,8 @@ // Burns the food with a chance of starting a fire - for if you try cooking something that's already been cooked that way // if burns = 0 then it'll just tell you that the item is already that foodtype and it would do nothing -// if you wanted a different side effect set burns to 1 and override burn() -/obj/machinery/cooker/proc/burn(mob/user, obj/item/weapon/reagent_containers/props) +// if you wanted a different side effect set burns to 1 and override burn_food() +/obj/machinery/cooker/proc/burn_food(mob/user, obj/item/weapon/reagent_containers/props) var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/burnt = new(get_turf(src)) setRegents(props, burnt) to_chat(user, "You smell burning coming from the [src]!") @@ -130,7 +130,7 @@ return if(istype(I, /obj/item/weapon/reagent_containers/food/snacks)) if(checkCooked(I)) - burn(user, I) + burn_food(user, I) turnoff(I) return var/obj/item/weapon/reagent_containers/food/snacks/newfood = gettype() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 23a5447f1d4..81d489d9da1 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -10,6 +10,7 @@ var/datum/seed/seed var/potency = -1 var/awakening = 0 + burn_state = FLAMMABLE /obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc,planttype) diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index 39e94160275..d68740eaf47 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -7,6 +7,7 @@ icon = 'icons/obj/weapons.dmi' var/plantname var/potency = 1 + burn_state = FLAMMABLE /obj/item/weapon/grown/New(newloc,planttype) @@ -170,8 +171,11 @@ to_chat(M, "[user] smacks you with a [name]!FLOWER POWER") to_chat(user, " Your [name]'s FLOWER POWER strikes [M]") if(istype(M, /mob/living)) - to_chat(M, "You are heated by the warmth of the of the [name]!") - M.bodytemperature += potency/2 * TEMPERATURE_DAMAGE_COEFFICIENT + to_chat(M, "You are lit on fire from the intense heat of the [name]!") + M.adjust_fire_stacks(potency / 20) + if(M.IgniteMob()) + message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") + log_game("[key_name(user)] set [key_name(M)] on fire") /obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 1749181b329..244b9fef8f3 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -6,7 +6,7 @@ var/global/list/plant_seed_sprites = list() icon = 'icons/obj/seeds.dmi' icon_state = "blank" w_class = 2 - + burn_state = FLAMMABLE var/seed_type var/datum/seed/seed var/modified = 0 diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index aa7d9ea4607..d4ccee6e50f 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -18,6 +18,8 @@ anchored = 1 density = 1 opacity = 1 + burn_state = FLAMMABLE + burntime = 30 var/health = 50 var/tmp/busy = 0 var/list/allowed_books = list(/obj/item/weapon/book, /obj/item/weapon/spellbook, /obj/item/weapon/storage/bible, /obj/item/weapon/tome) //Things allowed in the bookcase @@ -167,6 +169,7 @@ throw_range = 5 w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) attack_verb = list("bashed", "whacked", "educated") + burn_state = FLAMMABLE var/dat // Actual page content var/due_date = 0 // Game time in 1/10th seconds diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 8972b675e1a..4a2acd645df 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -7,6 +7,8 @@ flags = CONDUCT force = 10.0 throwforce = 0 + burn_state = FLAMMABLE + burntime = 20 w_class = 4 /obj/item/weapon/moneybag/attack_hand(user as mob) diff --git a/code/modules/mob/living/carbon/_defines.dm b/code/modules/mob/living/carbon/_defines.dm index 2abbbf91cbc..163ce8f7c8d 100644 --- a/code/modules/mob/living/carbon/_defines.dm +++ b/code/modules/mob/living/carbon/_defines.dm @@ -4,7 +4,7 @@ #define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point #define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point +#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 1000K point #define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point #define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3c18cddb18f..a4381ebf7a6 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -551,12 +551,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, visible_message("[src] has thrown [thrown_thing].") newtonian_move(get_dir(target, src)) thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src) -/* -/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ..() - src.IgniteMob() - bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10) -*/ + /mob/living/carbon/can_use_hands() if(handcuffed) return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b2b71d60545..1800adb31a8 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -487,14 +487,15 @@ return if(RESIST_HEAT in mutations) return - var/thermal_protection = get_thermal_protection() + if(on_fire) + var/thermal_protection = get_thermal_protection() - if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) - return - if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) - bodytemperature += 11 - else - bodytemperature += BODYTEMP_HEATING_MAX + if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) + return + if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) + bodytemperature += 11 + else + bodytemperature += (BODYTEMP_HEATING_MAX + (fire_stacks * 12)) /mob/living/carbon/human/proc/get_thermal_protection() var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2049d5fd21d..bbd3fee69c9 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -151,9 +151,13 @@ /mob/living/proc/IgniteMob() if(fire_stacks > 0 && !on_fire) on_fire = 1 + visible_message("[src] catches fire!", \ + "You're set on fire!") set_light(light_range + 3,l_color = "#ED9200") throw_alert("fire", /obj/screen/alert/fire) update_fire() + return 1 + return 0 /mob/living/proc/ExtinguishMob() if(on_fire) @@ -167,23 +171,29 @@ return /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person - fire_stacks = Clamp(fire_stacks + add_fire_stacks, -20, 20) + fire_stacks = Clamp(fire_stacks + add_fire_stacks, -20, 20) + if(on_fire && fire_stacks <= 0) + ExtinguishMob() /mob/living/proc/handle_fire() - if(fire_stacks < 0) - fire_stacks++ //If we've doused ourselves in water to avoid fire, dry off slowly - fire_stacks = min(0, fire_stacks)//So we dry ourselves back to default, nonflammable. + if(fire_stacks < 0) //If we've doused ourselves in water to avoid fire, dry off slowly + fire_stacks = min(0, fire_stacks + 1)//So we dry ourselves back to default, nonflammable. if(!on_fire) return 1 + if(fire_stacks > 0) + adjust_fire_stacks(-0.1) //the fire is slowly consumed + else + ExtinguishMob() + return var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment - if(G.oxygen < 1) + if(!G.oxygen || G.oxygen < 1) ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire return var/turf/location = get_turf(src) location.hotspot_expose(700, 50, 1) /mob/living/fire_act() - adjust_fire_stacks(0.5) + adjust_fire_stacks(3) IgniteMob() //Mobs on Fire end diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d2dbd5f14f2..2d08100e5e7 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -560,16 +560,24 @@ return 0 return 1 +/mob/living/simple_animal/handle_fire() + return + +/mob/living/simple_animal/update_fire() + return + +/mob/living/simple_animal/IgniteMob() + return 0 + +/mob/living/simple_animal/ExtinguishMob() + return + /mob/living/simple_animal/proc/attack_threshold_check(damage, damagetype = BRUTE) if(damage <= force_threshold || !damage_coeff[damagetype]) visible_message("[src] looks unharmed from the damage.") else apply_damage(damage, damagetype) - -/mob/living/simple_animal/update_fire() - return - /mob/living/simple_animal/update_transform() var/matrix/ntransform = matrix(transform) //aka transform.Copy() var/changed = 0 diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index e8db4c58110..513233912f2 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -10,6 +10,7 @@ var/obj/item/weapon/pen/haspen //The stored pen. var/obj/item/weapon/toppaper //The topmost piece of paper. slot_flags = SLOT_BELT + burn_state = FLAMMABLE /obj/item/weapon/clipboard/New() update_icon() diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 12f9e13a4e9..0dcff2dcee2 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -5,6 +5,7 @@ icon_state = "folder" w_class = 2 pressure_resistance = 2 + burn_state = FLAMMABLE /obj/item/weapon/folder/blue desc = "A blue folder." @@ -39,7 +40,7 @@ if(!n_name) return n_name = sanitize(copytext(n_name, 1, MAX_NAME_LEN)) - + if((loc == usr || Adjacent(usr)) && usr.stat == 0) name = "folder[(n_name ? text("- '[n_name]'") : null)]" return diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index a3ec39243a9..b6a723a7e69 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -16,6 +16,8 @@ pressure_resistance = 0 slot_flags = SLOT_HEAD body_parts_covered = HEAD + burn_state = FLAMMABLE + burntime = 5 attack_verb = list("bapped") var/info //What's actually written on the paper. @@ -289,30 +291,6 @@ \[hr\] : Adds a horizontal rule. "}, "window=paper_help") -/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/lighter/P, mob/user) - var/class = "" - - if(P.lit && !user.restrained()) - if(istype(P, /obj/item/weapon/lighter/zippo)) - class = "" - - user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ - "[class]You hold \the [P] up to \the [src], burning it slowly.") - - spawn(20) - if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) - user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ - "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") - - if(user.get_inactive_hand() == src) - user.unEquip(src) - - new /obj/effect/decal/cleanable/ash(get_turf(src)) - qdel(src) - - else - to_chat(user, "\red You must hold \the [P] steady to burn \the [src].") - /obj/item/weapon/paper/Topic(href, href_list) ..() if(!usr || (usr.stat || usr.restrained())) @@ -361,8 +339,12 @@ update_icon() -/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob, params) +/obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/living/user, params) ..() + + if(burn_state == ON_FIRE) + return + var/clown = 0 if(user.mind && (user.mind.assigned_role == "Clown")) clown = 1 @@ -443,11 +425,27 @@ to_chat(user, "You stamp the paper with your rubber stamp.") - else if(istype(P, /obj/item/weapon/lighter)) - burnpaper(P, user) + if(is_hot(P)) + if((CLUMSY in user.mutations) && prob(10)) + user.visible_message("[user] accidentally ignites themselves!", \ + "You miss the paper and accidentally light yourself on fire!") + user.unEquip(P) + user.adjust_fire_stacks(1) + user.IgniteMob() + return + + if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper + return + + user.unEquip(src) + user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!") + fire_act() add_fingerprint(user) - return + +/obj/item/weapon/paper/fire_act() + ..() + info = "[stars(info)]" /obj/item/weapon/paper/proc/stamp(var/obj/item/weapon/stamp/S) stamps += (!stamps || stamps == "" ? "
" : "") + "" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 2c5c154bca8..9770fb8c523 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -8,23 +8,27 @@ throw_speed = 3 throw_range = 7 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. -/* - autoignition_temperature = 519.15 // Kelvin + 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.Cut() + return ..() + +/obj/item/weapon/paper_bin/burn() + amount = 0 + extinguish() + update_icon() -/obj/item/weapon/paper_bin/ignite(var/temperature) - on_fire=1 - visible_message("\The [src]'s paper bursts into flame!") - overlays += fire_sprite - spawn(rand(3,10) SECONDS) - if(!on_fire) - return - new ashtype(src.loc) - papers=0 - amount=0 - update_icon() -*///LINDA shit figure out later /obj/item/weapon/paper_bin/MouseDrop(atom/over_object) var/mob/M = usr if(M.restrained() || M.stat || !Adjacent(M)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index a09589f22ee..364f7b50f02 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -16,6 +16,7 @@ icon_state = "film" item_state = "electropack" w_class = 1 + burn_state = FLAMMABLE /******** @@ -27,6 +28,8 @@ icon_state = "photo" item_state = "paper" w_class = 2 + burn_state = FLAMMABLE + burntime = 5 var/icon/img //Big photo image var/scribble //Scribble on the back. var/icon/tiny @@ -106,7 +109,8 @@ icon = 'icons/obj/items.dmi' icon_state = "album" item_state = "briefcase" - can_hold = list("/obj/item/weapon/photo",) + can_hold = list("/obj/item/weapon/photo") + burn_state = FLAMMABLE /obj/item/weapon/storage/photo_album/MouseDrop(obj/over_object as obj) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index ce0d22c4165..e13e84de488 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -27,6 +27,7 @@ var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six allow_spin = 0 + burn_state = LAVA_PROOF /obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0) //CARN: admin-alert for chuckle-fuckery. diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5a8fa77e268..42a7c6a9c7b 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -11,6 +11,7 @@ hitsound = 'sound/weapons/pierce.ogg' var/hitsound_wall = "" pressure_resistance = INFINITY + burn_state = LAVA_PROOF var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it var/obj/item/ammo_casing/ammo_casing = null diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index ecb54b9c1f0..8c40044ad2d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -56,8 +56,8 @@ /obj/item/projectile/bullet/incendiary /obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0) - ..() - if(istype(target, /mob/living/carbon)) + . = ..() + if(iscarbon(target)) var/mob/living/carbon/M = target M.adjust_fire_stacks(4) M.IgniteMob() diff --git a/code/modules/reagents/newchem/Blob-Reagents.dm b/code/modules/reagents/newchem/Blob-Reagents.dm index d3ebcc447b5..fa5e9747e34 100644 --- a/code/modules/reagents/newchem/Blob-Reagents.dm +++ b/code/modules/reagents/newchem/Blob-Reagents.dm @@ -31,7 +31,7 @@ /datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - M.adjust_fire_stacks(round(volume/12)) + M.adjust_fire_stacks(round(volume/10)) volume = ..() M.apply_damage(0.6*volume, BURN) M.IgniteMob() diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 7afdc564647..db96b63c5cc 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -37,8 +37,9 @@ min_temp = 424 /datum/reagent/clf3/on_mob_life(mob/living/M) - M.adjust_fire_stacks(4) - M.adjustFireLoss(0.35*M.fire_stacks) + M.adjust_fire_stacks(2) + var/burndmg = max(0.3*M.fire_stacks, 0.3) + M.adjustFireLoss(burndmg) ..() /datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) @@ -66,7 +67,7 @@ /datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - M.adjust_fire_stacks(5) + M.adjust_fire_stacks(min(volume/5, 10)) M.IgniteMob() M.bodytemperature += 30 @@ -418,8 +419,8 @@ /datum/reagent/phlogiston/on_mob_life(mob/living/M) M.adjust_fire_stacks(1) - M.IgniteMob() - M.adjustFireLoss(0.2*M.fire_stacks) + var/burndmg = max(0.3*M.fire_stacks, 0.3) + M.adjustFireLoss(burndmg) ..() /datum/reagent/napalm @@ -436,7 +437,7 @@ /datum/reagent/napalm/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - M.adjust_fire_stacks(7) + M.adjust_fire_stacks(min(volume/4, 20)) /datum/chemical_reaction/napalm name = "Napalm" @@ -539,8 +540,11 @@ // Put out fire if(method == TOUCH) M.adjust_fire_stacks(-(volume / 5)) // more effective than water - if(M.fire_stacks <= 0) - M.ExtinguishMob() + M.ExtinguishMob() + +/datum/reagent/firefighting_foam/reaction_obj(obj/O, volume) + if(istype(O)) + O.extinguish() /datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -555,18 +559,6 @@ T.assume_air(lowertemp) qdel(hotspot) -/datum/reagent/firefighting_foam/reaction_obj(obj/O, volume) - var/turf/simulated/T = get_turf(O) - if(!istype(T)) - return - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot) - var/datum/gas_mixture/lowertemp = T.remove_air(T.air.total_moles()) - lowertemp.temperature = max(min(lowertemp.temperature-2000,lowertemp.temperature / 2), 0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) - /datum/chemical_reaction/clf3_firefighting name = "clf3_firefighting" id = "clf3_firefighting" diff --git a/code/modules/reagents/oldchem/reagents/reagents_water.dm b/code/modules/reagents/oldchem/reagents/reagents_water.dm index a2ec51f1811..ca3106e1815 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_water.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_water.dm @@ -20,9 +20,7 @@ // Put out fire if(method == TOUCH) M.adjust_fire_stacks(-(volume / 10)) - if(M.fire_stacks <= 0) - M.ExtinguishMob() - return + M.ExtinguishMob() /datum/reagent/water/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -42,15 +40,9 @@ qdel(hotspot) /datum/reagent/water/reaction_obj(obj/O, volume) - var/turf/simulated/T = get_turf(O) - if(istype(T)) - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot) - var/datum/gas_mixture/lowertemp = T.remove_air( T.air.total_moles() ) - lowertemp.temperature = max(min(lowertemp.temperature-2000,lowertemp.temperature / 2), 0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) + if(istype(O)) + O.extinguish() + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O if(!cube.wrapped) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 02b13b903f2..ddcb3f2f399 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -117,6 +117,7 @@ flags = NOBLUDGEON amount = 25 max_amount = 25 + burn_state = FLAMMABLE /obj/item/stack/packageWrap/afterattack(var/obj/target as obj, mob/user as mob, proximity) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index e3a59183abf..9c8d1cab95d 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -342,6 +342,7 @@ C.color = "#000080" C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT C.heat_protection = C.body_parts_covered + C.burn_state = FIRE_PROOF uses -- if(!uses) qdel(src) diff --git a/paradise.dme b/paradise.dme index d79069d135d..a09397b0a07 100644 --- a/paradise.dme +++ b/paradise.dme @@ -166,6 +166,7 @@ #include "code\controllers\Processes\alarm.dm" #include "code\controllers\Processes\diseases.dm" #include "code\controllers\Processes\event.dm" +#include "code\controllers\Processes\fires.dm" #include "code\controllers\Processes\garbage.dm" #include "code\controllers\Processes\inactivity.dm" #include "code\controllers\Processes\lighting.dm" From 731600a21f1fcb537e12ed20d09a1c3c17063ea7 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 29 Jul 2016 17:07:25 -0400 Subject: [PATCH 2/5] tweaks --- code/game/objects/items/candle.dm | 137 +++++++++++----------- code/game/objects/items/weapons/cigs.dm | 14 ++- code/modules/mob/living/living_defense.dm | 2 +- 3 files changed, 80 insertions(+), 73 deletions(-) diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 2b4ba234300..f0c3ee84e98 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -1,85 +1,90 @@ /obj/item/candle name = "red candle" - desc = "a candle" + desc = "In Greek myth, Prometheus stole fire from the Gods and gave it to humankind. The jewelry he kept for himself." icon = 'icons/obj/candle.dmi' icon_state = "candle1" item_state = "candle1" w_class = 1 - - light_color = "#E09D37" - var/wax = 200 var/lit = 0 - proc - light(var/flavor_text = "\red [usr] lights the [name].") + var/infinite = 0 + var/start_lit = 0 + light_color = "#E09D37" + +/obj/item/candle/New() + ..() + if(start_lit) + // No visible message + light(show_message = 0) + +/obj/item/candle/update_icon() + var/i + if(wax>150) + i = 1 + else if(wax>80) + i = 2 + else i = 3 + icon_state = "candle[i][lit ? "_lit" : ""]" - update_icon() - var/i - if(wax>150) - i = 1 - else if(wax>80) - i = 2 - else i = 3 - icon_state = "candle[i][lit ? "_lit" : ""]" +/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 [src] with [WT], what a badass.") + else if(istype(W, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = W + if(L.lit) + light("After some fiddling, [user] manages to light [src] with [L].") + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit) + light("[user] lights [src] with [M]") + else if(istype(W, /obj/item/candle)) + var/obj/item/candle/C = W + if(C.lit) + light("[user] tilts [C] and lights [src] with it.") - attackby(obj/item/weapon/W as obj, mob/user as mob, 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("\red [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() +/obj/item/candle/fire_act() + if(!lit) + light() //honk - - fire_act() - if(!lit) - light() //honk - - light(var/flavor_text = "\red [usr] lights the [name].") - if(!src.lit) - src.lit = 1 - //src.damtype = "fire" - for(var/mob/O in viewers(usr, null)) - O.show_message(flavor_text, 1) - set_light(CANDLE_LUM) - processing_objects.Add(src) - - - process() - if(!lit) - return - wax-- - if(!wax) - new/obj/item/trash/candle(src.loc) - if(istype(src.loc, /mob)) - var/mob/M = src.loc - M.unEquip(src, 1) //src is being deleted anyway - qdel(src) +/obj/item/candle/proc/light(show_message) + if(!lit) + lit = 1 + if(show_message) + usr.visible_message(show_message) + set_light(CANDLE_LUM) + processing_objects.Add(src) update_icon() - if(istype(loc, /turf)) //start a fire if possible - var/turf/T = loc - T.hotspot_expose(700, 5) - attack_self(mob/user as mob) - if(lit) - lit = 0 - update_icon() - set_light(0) +/obj/item/candle/process() + if(!lit) + return + if(!infinite) + wax-- + if(!wax) + new/obj/item/trash/candle(src.loc) + if(istype(src.loc, /mob)) + var/mob/M = src.loc + M.unEquip(src, 1) //src is being deleted anyway + qdel(src) + update_icon() + if(isturf(loc)) //start a fire if possible + var/turf/T = loc + T.hotspot_expose(700, 5) + + +/obj/item/candle/attack_self(mob/user) + if(lit) + user.visible_message("[user] snuffs out [src].") + lit = 0 + update_icon() + set_light(0) /obj/item/candle/eternal desc = "A candle. This one seems to have an odd quality about the wax." - wax = 10000 \ No newline at end of file + infinite = 1 \ No newline at end of file diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 6f56b07ca77..8449e17a9db 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -113,7 +113,7 @@ LIGHTERS ARE IN LIGHTERS.DM to_chat(user, "[src] is full.") -/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].") +/obj/item/clothing/mask/cigarette/proc/light(flavor_text = null) if(!src.lit) src.lit = 1 damtype = "fire" @@ -139,8 +139,9 @@ LIGHTERS ARE IN LIGHTERS.DM reagents.handle_reactions() icon_state = icon_on item_state = icon_on - var/turf/T = get_turf(src) - T.visible_message(flavor_text) + if(flavor_text) + var/turf/T = get_turf(src) + T.visible_message(flavor_text) set_light(2, 0.25, "#E38F46") processing_objects.Add(src) @@ -324,14 +325,15 @@ LIGHTERS ARE IN LIGHTERS.DM ..() reagents.add_reagent("nicotine", chem_volume) -/obj/item/clothing/mask/cigarette/pipe/light(var/flavor_text = "[usr] lights the [name].") +/obj/item/clothing/mask/cigarette/pipe/light(flavor_text = null) if(!src.lit) src.lit = 1 damtype = "fire" icon_state = icon_on item_state = icon_on - var/turf/T = get_turf(src) - T.visible_message(flavor_text) + if(flavor_text) + var/turf/T = get_turf(src) + T.visible_message(flavor_text) processing_objects.Add(src) /obj/item/clothing/mask/cigarette/pipe/process() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index bbd3fee69c9..50576bcecad 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -186,7 +186,7 @@ ExtinguishMob() return var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment - if(!G.oxygen || G.oxygen < 1) + if(G.oxygen < 1) ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire return var/turf/location = get_turf(src) From 95dcbbc77b238bf94d4fb96abd25e238974b0914 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 29 Jul 2016 18:01:59 -0400 Subject: [PATCH 3/5] cleaning up old code --- code/game/objects/structures/window.dm | 8 -------- code/game/turfs/simulated/floor.dm | 11 ----------- code/game/turfs/simulated/walls.dm | 6 ------ code/game/turfs/turf.dm | 3 --- 4 files changed, 28 deletions(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 7ae2ddcd27d..051dbe55495 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -425,11 +425,6 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f hit(round(exposed_volume / 1000), 0) ..() -/obj/structure/window/plasmabasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 32000) - hit(round(exposed_volume / 1000), 0) - ..() - /obj/structure/window/plasmabasic/BlockSuperconductivity() return 1 @@ -457,9 +452,6 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f /obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) return -/obj/structure/window/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return - /obj/structure/window/plasmareinforced/BlockSuperconductivity() return 1 //okay this SHOULD MAKE THE TOXINS CHAMBER WORK diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 3c73c0789e7..b8a6635225a 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -80,17 +80,6 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," src.hotspot_expose(1000,CELL_VOLUME) return -/turf/simulated/floor/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(!burnt && prob(5)) - burn_tile() - -/turf/simulated/floor/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume) - var/dir_to = get_dir(src, adj_turf) - - for(var/obj/structure/window/W in src) - if(W.dir == dir_to || W.is_fulltile()) //Same direction or diagonal (full tile) - W.fire_act(adj_air, adj_temp, adj_volume) - /turf/simulated/floor/is_shielded() for(var/obj/structure/A in contents) if(A.level == 3) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 4d7c8ccd5da..f38f21dbac4 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -110,13 +110,7 @@ update_icon() return -/* -/turf/simulated/wall/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume) - if(adj_temp > max_temperature) - take_damage(rand(10, 20) * (adj_temp / max_temperature)) - return ..() -*/ /turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0) if(istype(src,/turf/simulated/wall/r_wall)) if(!devastated) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d76791e7f97..d72698971ed 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -135,9 +135,6 @@ loopsanity-- A.HasProximity(M, 1) -/turf/proc/adjacent_fire_act(turf/simulated/floor/source, temperature, volume) - return - /turf/proc/levelupdate() for(var/obj/O in src) if(O.level == 1) From 1da7d26b1e9b7ad44f67d7b572581018b7adaff6 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 31 Jul 2016 11:56:42 -0400 Subject: [PATCH 4/5] tweaks --- code/controllers/Processes/fires.dm | 2 +- code/modules/reagents/newchem/pyro.dm | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/controllers/Processes/fires.dm b/code/controllers/Processes/fires.dm index ab723221367..4566143a906 100644 --- a/code/controllers/Processes/fires.dm +++ b/code/controllers/Processes/fires.dm @@ -15,7 +15,7 @@ var/global/datum/controller/process/fire/fire_master /datum/controller/process/fire/doWork() for(var/obj/burningobj in burning) - if(burningobj && (burningobj.burn_state == ON_FIRE)) + if(burningobj.burn_state == ON_FIRE) if(burningobj.burn_world_time < world.time) burningobj.burn() SCHECK diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index db96b63c5cc..6dece72544c 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -417,6 +417,10 @@ for(var/turf/simulated/turf in range(min(created_volume/10,4),T)) new /obj/effect/hotspot(turf) +/datum/reagent/phlogiston/reaction_mob(mob/living/M, method=TOUCH, volume) + M.IgniteMob() + ..() + /datum/reagent/phlogiston/on_mob_life(mob/living/M) M.adjust_fire_stacks(1) var/burndmg = max(0.3*M.fire_stacks, 0.3) From bf5a4676973c65dd8f23ca57ee9adca7fec9ff4d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 31 Jul 2016 16:13:19 -0400 Subject: [PATCH 5/5] better check --- code/modules/paperwork/paper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index b6a723a7e69..492ea726739 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -434,7 +434,7 @@ user.IgniteMob() return - if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper + if(!Adjacent(user)) //to prevent issues as a result of telepathically lighting a paper return user.unEquip(src)