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
+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
+8 -7
View File
@@ -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
+15 -5
View File
@@ -151,9 +151,13 @@
/mob/living/proc/IgniteMob()
if(fire_stacks > 0 && !on_fire)
on_fire = 1
visible_message("<span class='warning'>[src] catches fire!</span>", \
"<span class='userdanger'>You're set on fire!</span>")
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,14 +171,20 @@
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)
ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
@@ -183,7 +193,7 @@
location.hotspot_expose(700, 50, 1)
/mob/living/fire_act()
adjust_fire_stacks(0.5)
adjust_fire_stacks(3)
IgniteMob()
//Mobs on Fire end
@@ -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("<span class='warning'>[src] looks unharmed from the damage.</span>")
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
+1
View File
@@ -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()
+2 -1
View File
@@ -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
+26 -28
View File
@@ -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.
</BODY></HTML>"}, "window=paper_help")
/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/lighter/P, mob/user)
var/class = "<span class='warning'>"
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/lighter/zippo))
class = "<span class='rose'>"
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, "<span class='notice'>You stamp the paper with your rubber stamp.</span>")
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("<span class='warning'>[user] accidentally ignites themselves!</span>", \
"<span class='userdanger'>You miss the paper and accidentally light yourself on fire!</span>")
user.unEquip(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
if(!Adjacent(user)) //to prevent issues as a result of telepathically lighting a paper
return
user.unEquip(src)
user.visible_message("<span class='danger'>[user] lights [src] ablaze with [P]!</span>", "<span class='danger'>You light [src] on fire!</span>")
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 == "" ? "<HR>" : "") + "<img src=large_[S.icon_state].png>"
+19 -15
View File
@@ -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))
+5 -1
View File
@@ -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)
@@ -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.
+1
View File
@@ -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
@@ -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()
@@ -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()
+16 -20
View File
@@ -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
@@ -416,10 +417,14 @@
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)
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 +441,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 +544,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 +563,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"
@@ -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)
@@ -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)
@@ -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)