Merge pull request #5251 from Fox-McCloud/fire-system

Implements Fire System
This commit is contained in:
TheDZD
2016-08-01 19:39:50 -04:00
committed by GitHub
117 changed files with 561 additions and 308 deletions
@@ -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)
+6
View File
@@ -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
+23
View File
@@ -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.burn_state == ON_FIRE)
if(burningobj.burn_world_time < world.time)
burningobj.burn()
SCHECK
else
burning.Remove(burningobj)
+1
View File
@@ -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
@@ -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))
+2 -2
View File
@@ -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)
+1
View File
@@ -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
+1
View File
@@ -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
+1
View File
@@ -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
+7
View File
@@ -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
@@ -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"
@@ -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()
..()
@@ -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)
+16
View File
@@ -192,6 +192,22 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
to_chat(user, "<span class='warning'>You try to move your [temp.name], but cannot!</span>")
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, "<span class='notice'>You put out the fire on [src].</span>")
else
to_chat(user, "<span class='warning'>You burn your hand on [src]!</span>")
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
+71 -62
View File
@@ -1,81 +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("<span class='notice'>[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("<span class='notice'>After some fiddling, [user] manages to light [src] with [L].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights [src] with [M]</span>")
else if(istype(W, /obj/item/candle))
var/obj/item/candle/C = W
if(C.lit)
light("<span class='notice'>[user] tilts [C] and lights [src] with it.</span>")
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
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("<span class='notice'>[user] snuffs out [src].</span>")
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
infinite = 1
@@ -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'
@@ -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)
+3 -1
View File
@@ -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
..()
+6 -69
View File
@@ -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("<span class='notice'>[user] casually lights the [name] with [W], what a badass.</span>")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With a single flick of their wrist, [user] smoothly lights the [name] with their [W]. Damn they're cool.</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
light("<span class='notice'>After some fiddling, [user] manages to light the [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights the [name] with their [W].</span>")
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("<span class='warning'>[user] swings their [W], barely missing their nose. They light the [name] in the process.</span>")
else if(istype(W, /obj/item/device/assembly/igniter))
light("<span class='notice'>[user] fiddles with [W], and manages to light the [name].</span>")
/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("<span class='notice'>[user] lights the [name] with [W].</span>")
fire_act()
/obj/item/flag/proc/update_icons()
overlays = null
@@ -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)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",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"
@@ -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
@@ -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
+24 -18
View File
@@ -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("<span class='warning'>The [src.name] explodes!</span>","<span class='warning'>You hear a snap!</span>")
new ash_type(loc)
visible_message("<span class='warning'>[src] explodes!</span>",
"<span class='italics'>You hear a snap!</span>")
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, "<span class='warning'>You step on the snap pop!</span>")
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("<span class='warning'>The [name] explodes!</span>","<span class='warning'>You hear a snap!</span>")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
if(issilicon(H) || M.m_intent == "run")
to_chat(M, "<span class='danger'>You step on the snap pop!</span>")
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
+4
View File
@@ -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"
+1
View File
@@ -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
+11 -6
View File
@@ -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))
@@ -110,7 +113,7 @@ LIGHTERS ARE IN LIGHTERS.DM
to_chat(user, "<span class='notice'>[src] is full.</span>")
/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"
@@ -136,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)
@@ -321,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()
@@ -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("<span class='warning'>[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.</span>")
@@ -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))
@@ -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, "<span class='notice'>You need to use it on a package that has already been wrapped!</span>")
@@ -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
+1
View File
@@ -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
+2
View File
@@ -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
@@ -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"
@@ -44,6 +44,7 @@
icon_state = "buckler"
item_state = "buckler"
materials = list()
burn_state = FLAMMABLE
block_chance = 30
/obj/item/weapon/shield/energy
+1
View File
@@ -6,6 +6,7 @@
force = 5
w_class = 4
attack_verb = list("bashed","smacked")
burn_state = FLAMMABLE
var/delayed = 0 //used to do delays
+1
View File
@@ -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"
@@ -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"
@@ -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")
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
@@ -5,6 +5,7 @@
throw_speed = 1
throw_range = 5
w_class = 3
burn_state = FLAMMABLE
var/mob/affecting = null
var/deity_name = "Christ"
@@ -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
@@ -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()
..()
@@ -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)
@@ -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)
..()
@@ -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",
@@ -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,
@@ -373,7 +373,8 @@
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
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
+32 -2
View File
@@ -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
. = !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
+3
View File
@@ -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
@@ -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()
@@ -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'
@@ -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)
@@ -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)
@@ -7,6 +7,8 @@
icon_opened = "cabinetdetective_open"
icon_broken = "cabinetdetective_broken"
icon_off = "cabinetdetective_broken"
burn_state = FLAMMABLE
burntime = 20
New()
@@ -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)
@@ -317,6 +317,8 @@
icon_opened = "cabinetdetective_open"
icon_broken = "cabinetdetective_broken"
icon_off = "cabinetdetective_broken"
burn_state = FLAMMABLE
burntime = 20
New()
..()
+5
View File
@@ -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()
@@ -219,6 +219,8 @@
/obj/structure/mineral_door/wood
mineralType = "wood"
hardness = 1
burn_state = FLAMMABLE
burntime = 30
Open()
isSwitchingStates = 1
+1
View File
@@ -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
@@ -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)
@@ -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()
@@ -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)
+5 -1
View File
@@ -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, "<span class='warning'>You've been drenched in water!</span>")
if(iscarbon(O))
var/mob/living/carbon/M = O
-8
View File
@@ -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
-11
View File
@@ -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)
-6
View File
@@ -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)
-3
View File
@@ -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)
+6
View File
@@ -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
@@ -526,6 +530,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"
@@ -547,6 +552,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
+5
View File
@@ -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
@@ -102,6 +105,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"
@@ -172,6 +176,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"
@@ -29,6 +29,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."
@@ -40,6 +41,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."
@@ -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'
+1
View File
@@ -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
+1
View File
@@ -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',
+1
View File
@@ -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"
@@ -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',
+1
View File
@@ -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',
+8
View File
@@ -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()
+1
View File
@@ -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"
+1
View File
@@ -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)
@@ -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"
+3 -1
View File
@@ -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
+2
View File
@@ -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'
+1
View File
@@ -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'
@@ -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"
+6 -1
View File
@@ -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
put_on_delay = 60
burn_state = FIRE_PROOF
+6 -1
View File
@@ -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
unacidable = 0
burn_state = FLAMMABLE
@@ -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"
+1
View File
@@ -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()
+1
View File
@@ -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"
@@ -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
@@ -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"
@@ -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()
..()
@@ -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())
+1
View File
@@ -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()
..()
@@ -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, "<span class='warning'>You smell burning coming from the [src]!</span>")
@@ -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()
+1
View File
@@ -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)
+6 -2
View File
@@ -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, "<font color='green'>[user] smacks you with a [name]!</font><font color='yellow'><b>FLOWER POWER</b></font>")
to_chat(user, "<font color='green'> Your [name]'s </font><font color='yellow'><b>FLOWER POWER</b></font><font color='green'> strikes [M]</font>")
if(istype(M, /mob/living))
to_chat(M, "<span class='warning'>You are heated by the warmth of the of the [name]!</span>")
M.bodytemperature += potency/2 * TEMPERATURE_DAMAGE_COEFFICIENT
to_chat(M, "<span class='danger'>You are lit on fire from the intense heat of the [name]!</span>")
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)
+1 -1
View File
@@ -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
+3
View File
@@ -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
+2
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -6
View File
@@ -551,12 +551,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
visible_message("<span class='danger'>[src] has thrown [thrown_thing].</span>")
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

Some files were not shown because too many files have changed in this diff Show More