diff --git a/code/TriDimension/Turfs.dm b/code/TriDimension/Turfs.dm
index 43e33ed3c2..12f7bc7c12 100644
--- a/code/TriDimension/Turfs.dm
+++ b/code/TriDimension/Turfs.dm
@@ -114,10 +114,10 @@
ReplaceWithLattice()
return
- if (istype(C, /obj/item/stack/tile/plasteel))
+ if (istype(C, /obj/item/stack/tile/steel))
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
if(L)
- var/obj/item/stack/tile/plasteel/S = C
+ var/obj/item/stack/tile/steel/S = C
if (S.get_amount() < 1)
return
qdel(L)
diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm
index 27011dc7b3..d752e14593 100644
--- a/code/ZAS/Fire.dm
+++ b/code/ZAS/Fire.dm
@@ -226,14 +226,15 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
//Returns the firelevel
/datum/gas_mixture/proc/zburn(zone/zone, force_burn, no_check = 0)
- #ifdef FIREDBG
- log_debug("***************** FIREDBG *****************")
- if(zone) log_debug("Burning [zone.name]!")
- #endif
-
. = 0
if((temperature > PHORON_MINIMUM_BURN_TEMPERATURE || force_burn) && (no_check ||check_recombustability(zone? zone.fuel_objs : null)))
- var/gas_fuel = 0 //in the case of mixed gas/liquid fires, the gas burns first.
+
+ #ifdef FIREDBG
+ log_debug("***************** FIREDBG *****************")
+ log_debug("Burning [zone? zone.name : "zoneless gas_mixture"]!")
+ #endif
+
+ var/gas_fuel = 0
var/liquid_fuel = 0
var/total_fuel = 0
var/total_oxidizers = 0
@@ -269,23 +270,27 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
//calculate the firelevel.
var/firelevel = calculate_firelevel(total_fuel, total_oxidizers, reaction_limit)
+ var/firelevel_ratio = firelevel / vsc.fire_firelevel_multiplier
-
- //vapour fuels are extremely volatile! The reaction progress is a percentage of the total fuel (similar to old zburn).
- var/gas_reaction_progress = min(0.2, (firelevel/vsc.fire_firelevel_multiplier))*gas_fuel*FIRE_GAS_BURNRATE_MULT
+ //vapour fuels are extremely volatile! The reaction progress is a percentage of the total fuel (similar to old zburn).)
+ var/min_burn = 0.30*volume*group_multiplier/CELL_VOLUME //in moles - so that fires with very small gas concentrations burn out fast
+ var/gas_reaction_progress = max(min_burn, firelevel_ratio*gas_fuel)*FIRE_GAS_BURNRATE_MULT
//liquid fuels are not as volatile, and the reaction progress depends on the size of the area that is burning. Limit the burn rate to a certain amount per area.
- var/liquid_reaction_progress = ((firelevel/vsc.fire_firelevel_multiplier)*0.2 + 0.05)*fuel_area*FIRE_LIQUID_BURNRATE_MULT
+ var/liquid_reaction_progress = (firelevel_ratio*0.2 + 0.05)*fuel_area*FIRE_LIQUID_BURNRATE_MULT
var/total_reaction_progress = gas_reaction_progress + liquid_reaction_progress
var/used_fuel = min(total_reaction_progress, reaction_limit)
var/used_oxidizers = used_fuel*(FIRE_REACTION_OXIDIZER_AMOUNT/FIRE_REACTION_FUEL_AMOUNT)
#ifdef FIREDBG
+ log_debug("gas_fuel = [gas_fuel], liquid_fuel = [liquid_fuel], total_oxidizers = [total_oxidizers]")
+ log_debug("fuel_area = [fuel_area], total_fuel = [total_fuel], reaction_limit = [reaction_limit]")
log_debug("firelevel -> [firelevel] / [vsc.fire_firelevel_multiplier]")
log_debug("liquid_reaction_progress = [liquid_reaction_progress]")
log_debug("gas_reaction_progress = [gas_reaction_progress]")
- log_debug("used_fuel = [used_fuel]; used_oxidizers = [used_oxidizers]; reaction_limit=[reaction_limit]")
+ log_debug("total_reaction_progress = [total_reaction_progress]")
+ log_debug("used_fuel = [used_fuel], used_oxidizers = [used_oxidizers]; ")
#endif
//if the reaction is progressing too slow then it isn't self-sustaining anymore and burns out
@@ -297,8 +302,8 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
//*** Remove fuel and oxidizer, add carbon dioxide and heat
//remove and add gasses as calculated
- var/used_gas_fuel = between(0.25, used_fuel*(gas_reaction_progress/total_reaction_progress), gas_fuel) //remove in proportion to the relative reaction progress
- var/used_liquid_fuel = between(0.25, used_fuel-used_gas_fuel, liquid_fuel)
+ var/used_gas_fuel = min(max(0.25, used_fuel*(gas_reaction_progress/total_reaction_progress)), gas_fuel) //remove in proportion to the relative reaction progress
+ var/used_liquid_fuel = min(max(0.25, used_fuel-used_gas_fuel), liquid_fuel)
//remove_by_flag() and adjust_gas() handle the group_multiplier for us.
remove_by_flag(XGM_GAS_OXIDIZER, used_oxidizers)
@@ -309,10 +314,10 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
zone.remove_liquidfuel(used_liquid_fuel, !check_combustability())
//calculate the energy produced by the reaction and then set the new temperature of the mix
- temperature = (starting_energy + vsc.fire_fuel_energy_release * used_fuel) / heat_capacity()
+ temperature = (starting_energy + vsc.fire_fuel_energy_release * (used_gas_fuel + used_liquid_fuel)) / heat_capacity()
#ifdef FIREDBG
- log_debug("used_gas_fuel = [used_gas_fuel]; used_liquid_fuel = [used_liquid_fuel]; total = [used_gas_fuel+used_liquid_fuel]")
+ log_debug("used_gas_fuel = [used_gas_fuel]; used_liquid_fuel = [used_liquid_fuel]; total = [used_fuel]")
log_debug("new temperature = [temperature]")
#endif
@@ -353,7 +358,7 @@ datum/gas_mixture/proc/check_recombustability(list/fuel_objs)
. = 0
for(var/g in gas)
- if(gas_data.flags[g] & XGM_GAS_FUEL && QUANTIZE(gas[g] * vsc.fire_consuption_rate) >= 0.1)
+ if(gas_data.flags[g] & XGM_GAS_FUEL && QUANTIZE(gas[g] * vsc.fire_consuption_rate) >= 0.005)
. = 1
break
diff --git a/code/ZAS/_gas_mixture_xgm.dm b/code/ZAS/_gas_mixture_xgm.dm
index 1cdc1f1061..62f47a36bd 100644
--- a/code/ZAS/_gas_mixture_xgm.dm
+++ b/code/ZAS/_gas_mixture_xgm.dm
@@ -234,6 +234,7 @@
gas[g] = gas[g] * (1 - ratio)
removed.temperature = temperature
+ removed.volume = volume * group_multiplier / out_group_multiplier
update_values()
removed.update_values()
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index 009d1c7694..80d9ea8643 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -10,7 +10,7 @@
var/list/mode = list("dismantle"=0,"laying"=0,"collect"=0)
/obj/machinery/floorlayer/New()
- T = new/obj/item/stack/tile/plasteel(src)
+ T = new/obj/item/stack/tile/steel(src)
..()
/obj/machinery/floorlayer/Move(new_turf,M_Dir)
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 6882f9affa..d34c185d08 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -259,7 +259,7 @@ Alien plants should do something if theres a lot of poison
/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 300)
+ if(exposed_temperature > 300 + T0C)
health -= 5
healthcheck()
@@ -430,7 +430,7 @@ Alien plants should do something if theres a lot of poison
Burst()
/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 500)
+ if(exposed_temperature > 500 + T0C)
health -= 5
healthcheck()
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 03b5c922d8..62c13c7e61 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -48,7 +48,7 @@
qdel(src)
/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 300)
+ if(exposed_temperature > 300 + T0C)
health -= 5
healthcheck()
diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm
index 43bc58261b..415a5ec200 100644
--- a/code/game/objects/items/devices/floor_painter.dm
+++ b/code/game/objects/items/devices/floor_painter.dm
@@ -21,7 +21,7 @@
if(istype(A, /turf/simulated/floor))
var/turf/simulated/floor/F = A
- if(F.is_plasteel_floor()) // only tiled floors
+ if(F.is_steel_floor()) // only tiled floors
if(tile_dir_mode)
var/D = get_dir(usr, F)
if(usr.loc == F)
diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm
index 86af65a2fa..548173e52c 100644
--- a/code/game/objects/items/stacks/tiles/plasteel.dm
+++ b/code/game/objects/items/stacks/tiles/plasteel.dm
@@ -1,7 +1,7 @@
-/obj/item/stack/tile/plasteel
+/obj/item/stack/tile/steel
name = "floor tile"
singular_name = "floor tile"
- desc = "Those could work as a pretty decent throwing weapon"
+ desc = "Those could work as a pretty decent throwing weapon" //why?
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
@@ -10,24 +10,24 @@
throw_range = 20
flags = CONDUCT
-/obj/item/stack/tile/plasteel/New(var/loc, var/amount=null)
+/obj/item/stack/tile/steel/New(var/loc, var/amount=null)
..()
src.pixel_x = rand(1, 14)
src.pixel_y = rand(1, 14)
return
-/obj/item/stack/tile/plasteel/cyborg
+/obj/item/stack/tile/steel/cyborg
name = "floor tile synthesizer"
desc = "A device that makes floor tiles."
gender = NEUTER
matter = null
uses_charge = 1
charge_costs = list(250)
- stacktype = /obj/item/stack/tile/plasteel
- build_type = /obj/item/stack/tile/plasteel
+ stacktype = /obj/item/stack/tile/steel
+ build_type = /obj/item/stack/tile/steel
/*
-/obj/item/stack/tile/plasteel/attack_self(mob/user as mob)
+/obj/item/stack/tile/steel/attack_self(mob/user as mob)
if (usr.stat)
return
var/T = user.loc
@@ -43,7 +43,7 @@
return
*/
-/obj/item/stack/tile/plasteel/proc/build(turf/S as turf)
+/obj/item/stack/tile/steel/proc/build(turf/S as turf)
if (istype(S,/turf/space))
S.ChangeTurf(/turf/simulated/floor/plating/airless)
else
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index dcac154442..47134c0e75 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -26,7 +26,7 @@
throwforce = 1.0
throw_speed = 5
throw_range = 20
- flags = CONDUCT
+ flags = 0
origin_tech = "biotech=1"
/*
@@ -41,7 +41,7 @@
throwforce = 1.0
throw_speed = 5
throw_range = 20
- flags = CONDUCT
+ flags = 0
/obj/item/stack/tile/wood/cyborg
name = "wood floor tile synthesizer"
@@ -63,4 +63,4 @@
throwforce = 1.0
throw_speed = 5
throw_range = 20
- flags = CONDUCT
+ flags = 0
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 078f4bc06b..f90bc29b2c 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -53,7 +53,7 @@
/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
- if (istype(C, /obj/item/stack/tile/plasteel))
+ if (istype(C, /obj/item/stack/tile/steel))
var/turf/T = get_turf(src)
T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
return
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index b34144fc39..6cfdbf4470 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -29,7 +29,7 @@ var/list/wood_icons = list("wood","wood-broken")
/turf/simulated/floor
//Note to coders, the 'intact' var can no longer be used to determine if the floor is a plating or not.
- //Use the is_plating(), is_plasteel_floor() and is_light_floor() procs instead. --Errorage
+ //Use the is_plating(), is_steel_floor() and is_light_floor() procs instead. --Errorage
name = "floor"
icon = 'icons/turf/floors.dmi'
icon_state = "floor"
@@ -42,7 +42,7 @@ var/list/wood_icons = list("wood","wood-broken")
var/broken = 0
var/burnt = 0
var/mineral = DEFAULT_WALL_MATERIAL
- var/floor_type = /obj/item/stack/tile/plasteel
+ var/floor_type = /obj/item/stack/tile/steel
var/lightfloor_state // for light floors, this is the state of the tile. 0-7, 0x4 is on-bit - use the helper procs below
proc/get_lightfloor_state()
@@ -102,13 +102,23 @@ var/list/wood_icons = list("wood","wood-broken")
return
/turf/simulated/floor/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+
+ var/temp_destroy = get_damage_temperature()
if(!burnt && prob(5))
- burn_tile()
- else if(prob(1) && !is_plating())
- make_plating()
- burn_tile()
+ burn_tile(exposed_temperature)
+ else if(temp_destroy && exposed_temperature >= (temp_destroy + 100) && prob(1) && !is_plating())
+ make_plating() //destroy the tile, exposing plating
+ burn_tile(exposed_temperature)
return
+//should be a little bit lower than the temperature required to destroy the material
+/turf/simulated/floor/proc/get_damage_temperature()
+ if(is_steel_floor()) return T0C+1400
+ if(is_wood_floor()) return T0C+200
+ if(is_carpet_floor()) return T0C+200
+ if(is_grass_floor()) return T0C+80
+ return null
+
/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)
@@ -122,7 +132,7 @@ var/list/wood_icons = list("wood","wood-broken")
turf/simulated/floor/proc/update_icon()
if(lava)
return
- else if(is_plasteel_floor())
+ else if(is_steel_floor())
if(!broken && !burnt)
icon_state = icon_regular_floor
else if(is_plating())
@@ -237,8 +247,8 @@ turf/simulated/floor/proc/update_icon()
make_plating()
break_tile()
-/turf/simulated/floor/is_plasteel_floor()
- if(ispath(floor_type, /obj/item/stack/tile/plasteel))
+/turf/simulated/floor/is_steel_floor()
+ if(ispath(floor_type, /obj/item/stack/tile/steel))
return 1
else
return 0
@@ -277,7 +287,7 @@ turf/simulated/floor/proc/update_icon()
if(istype(src,/turf/simulated/floor/mech_bay_recharge_floor))
src.ChangeTurf(/turf/simulated/floor/plating)
if(broken) return
- if(is_plasteel_floor())
+ if(is_steel_floor())
src.icon_state = "damaged[pick(1,2,3,4,5)]"
broken = 1
else if(is_light_floor())
@@ -296,28 +306,38 @@ turf/simulated/floor/proc/update_icon()
src.icon_state = "sand[pick("1","2","3")]"
broken = 1
-/turf/simulated/floor/proc/burn_tile()
+/turf/simulated/floor/proc/burn_tile(var/exposed_temperature)
if(istype(src,/turf/simulated/floor/engine)) return
if(istype(src,/turf/simulated/floor/plating/airless/asteroid)) return//Asteroid tiles don't burn
- if(broken || burnt) return
- if(is_plasteel_floor())
- src.icon_state = "damaged[pick(1,2,3,4,5)]"
- burnt = 1
- else if(is_plasteel_floor())
+
+ var/damage_temp = get_damage_temperature()
+
+ if(broken) return
+ if(burnt)
+ if(is_steel_floor() && exposed_temperature >= damage_temp) //allow upgrading from scorched tiles to damaged tiles
+ src.icon_state = "damaged[pick(1,2,3,4,5)]"
+ broken = 1
+ return
+
+ if(is_steel_floor() && exposed_temperature >= T0C+300) //enough to char the floor, but not hot enough to actually burn holes in it
src.icon_state = "floorscorched[pick(1,2)]"
burnt = 1
- else if(is_plating())
- src.icon_state = "panelscorched"
- burnt = 1
- else if(is_wood_floor())
- src.icon_state = "wood-broken"
- burnt = 1
- else if(is_carpet_floor())
- src.icon_state = "carpet-broken"
- burnt = 1
- else if(is_grass_floor())
- src.icon_state = "sand[pick("1","2","3")]"
- burnt = 1
+ else if(exposed_temperature >= damage_temp)
+ if(is_steel_floor())
+ src.icon_state = "damaged[pick(1,2,3,4,5)]"
+ burnt = 1
+ else if(is_plating())
+ src.icon_state = "panelscorched"
+ burnt = 1
+ else if(is_wood_floor())
+ src.icon_state = "wood-broken"
+ burnt = 1
+ else if(is_carpet_floor())
+ src.icon_state = "carpet-broken"
+ burnt = 1
+ else if(is_grass_floor())
+ src.icon_state = "sand[pick("1","2","3")]"
+ burnt = 1
//This proc will set floor_type to null and the update_icon() proc will then change the icon_state of the turf
//This proc auto corrects the grass tiles' siding.
@@ -351,13 +371,13 @@ turf/simulated/floor/proc/update_icon()
//This proc will make the turf a plasteel floor tile. The expected argument is the tile to make the turf with
//If none is given it will make a new object. dropping or unequipping must be handled before or after calling
//this proc.
-/turf/simulated/floor/proc/make_plasteel_floor(var/obj/item/stack/tile/plasteel/T = null)
+/turf/simulated/floor/proc/make_plasteel_floor(var/obj/item/stack/tile/steel/T = null)
broken = 0
burnt = 0
intact = 1
set_light(0)
if(T)
- if(istype(T,/obj/item/stack/tile/plasteel))
+ if(istype(T,/obj/item/stack/tile/steel))
floor_type = T.type
if (icon_regular_floor)
icon_state = icon_regular_floor
@@ -368,7 +388,7 @@ turf/simulated/floor/proc/update_icon()
levelupdate()
return
//if you gave a valid parameter, it won't get thisf ar.
- floor_type = /obj/item/stack/tile/plasteel
+ floor_type = /obj/item/stack/tile/steel
icon_state = "floor"
icon_regular_floor = icon_state
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index b3c545053c..35ca29d2d5 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -39,10 +39,10 @@ var/list/accessible_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" =
ReplaceWithLattice()
return
- if (istype(C, /obj/item/stack/tile/plasteel))
+ if (istype(C, /obj/item/stack/tile/steel))
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
if(L)
- var/obj/item/stack/tile/plasteel/S = C
+ var/obj/item/stack/tile/steel/S = C
if (S.get_amount() < 1)
return
qdel(L)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 65d9050617..a99a9265d5 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -2,7 +2,7 @@
icon = 'icons/turf/floors.dmi'
level = 1.0
- //for floors, use is_plating(), is_plasteel_floor() and is_light_floor()
+ //for floors, use is_plating(), is_steel_floor() and is_light_floor()
var/intact = 1
//Properties for open tiles (/floor)
@@ -160,7 +160,7 @@
return 0
/turf/proc/is_asteroid_floor()
return 0
-/turf/proc/is_plasteel_floor()
+/turf/proc/is_steel_floor()
return 0
/turf/proc/is_light_floor()
return 0
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 0552892f21..ef9c5c6376 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -641,13 +641,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/stack/tile/steel(M), slot_in_backpack)
if ("pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm
index c24490d6db..ab528d9644 100644
--- a/code/modules/materials/material_recipes.dm
+++ b/code/modules/materials/material_recipes.dm
@@ -46,7 +46,7 @@
recipes += new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0)
- recipes += new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20)
+ recipes += new/datum/stack_recipe("floor tile", /obj/item/stack/tile/steel, 1, 4, 20)
recipes += new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60)
recipes += new/datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1)
diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm
index 2098c7c776..2f2be81dfa 100644
--- a/code/modules/materials/materials.dm
+++ b/code/modules/materials/materials.dm
@@ -69,7 +69,7 @@ var/list/name_to_material
// Attributes
var/cut_delay = 0 // Delay in ticks when cutting through this wall.
var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings.
- var/ignition_point // Point at which the material catches on fire.
+ var/ignition_point // K, point at which the material catches on fire.
var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this
var/integrity = 150 // General-use HP value for products.
var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors.
@@ -249,7 +249,7 @@ var/list/name_to_material
/material/phoron
name = "phoron"
stack_type = /obj/item/stack/material/phoron
- ignition_point = 100
+ ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE
icon_base = "stone"
icon_colour = "#FC2BC5"
shard_type = SHARD_SHARD
@@ -432,7 +432,7 @@ var/list/name_to_material
name = "phoron glass"
stack_type = /obj/item/stack/material/glass/phoronglass
flags = MATERIAL_BRITTLE
- ignition_point = 300
+ ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE+300
integrity = 200 // idk why but phoron windows are strong, so.
icon_colour = "#FC2BC5"
stack_origin_tech = "materials=3;phorontech=2"
@@ -458,6 +458,7 @@ var/list/name_to_material
icon_colour = "#CCCCCC"
hardness = 10
weight = 12
+ melting_point = T0C+371 //assuming heat resistant plastic
stack_origin_tech = "materials=3"
/material/plastic/holographic
@@ -521,6 +522,8 @@ var/list/name_to_material
shard_can_repair = 0 // you can't weld splinters back into planks
hardness = 15
weight = 18
+ melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood
+ ignition_point = T0C+288
stack_origin_tech = "materials=1;biotech=1"
dooropen_noise = 'sound/effects/doorcreaky.ogg'
door_icon_base = "wood"
@@ -542,6 +545,8 @@ var/list/name_to_material
icon_colour = "#AAAAAA"
hardness = 1
weight = 1
+ ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough
+ melting_point = T0C+232 //temperature at which cardboard walls would be destroyed
stack_origin_tech = "materials=1"
door_icon_base = "wood"
destruction_desc = "crumples"
@@ -550,6 +555,8 @@ var/list/name_to_material
name = "cloth"
stack_origin_tech = "materials=2"
door_icon_base = "wood"
+ ignition_point = T0C+232
+ melting_point = T0C+300
flags = MATERIAL_PADDING
/material/cult
@@ -578,6 +585,7 @@ var/list/name_to_material
icon_colour = "#E85DD8"
dooropen_noise = 'sound/effects/attackblob.ogg'
door_icon_base = "resin"
+ melting_point = T0C+300
/material/resin/can_open_material_door(var/mob/living/user)
var/mob/living/carbon/M = user
@@ -591,6 +599,8 @@ var/list/name_to_material
icon_colour = "#5C4831"
stack_origin_tech = "materials=2"
flags = MATERIAL_PADDING
+ ignition_point = T0C+300
+ melting_point = T0C+300
/material/carpet
name = "carpet"
@@ -598,12 +608,16 @@ var/list/name_to_material
use_name = "red upholstery"
icon_colour = "#DA020A"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cotton
name = "cotton"
display_name ="cotton"
icon_colour = "#FFFFFF"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_teal
name = "teal"
@@ -611,6 +625,8 @@ var/list/name_to_material
use_name = "teal cloth"
icon_colour = "#00EAFA"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_black
name = "black"
@@ -618,6 +634,8 @@ var/list/name_to_material
use_name = "black cloth"
icon_colour = "#505050"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_green
name = "green"
@@ -625,6 +643,8 @@ var/list/name_to_material
use_name = "green cloth"
icon_colour = "#01C608"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_puple
name = "purple"
@@ -632,6 +652,8 @@ var/list/name_to_material
use_name = "purple cloth"
icon_colour = "#9C56C4"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_blue
name = "blue"
@@ -639,6 +661,8 @@ var/list/name_to_material
use_name = "blue cloth"
icon_colour = "#6B6FE3"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_beige
name = "beige"
@@ -646,6 +670,8 @@ var/list/name_to_material
use_name = "beige cloth"
icon_colour = "#E8E7C8"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
/material/cloth_lime
name = "lime"
@@ -653,3 +679,5 @@ var/list/name_to_material
use_name = "lime cloth"
icon_colour = "#62E36C"
flags = MATERIAL_PADDING
+ ignition_point = T0C+232
+ melting_point = T0C+300
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index 8d61d0bb03..80d6d69df8 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -148,7 +148,7 @@
if(!target && amount < maxAmount && eattiles || maketiles) // Eat tiles
if(eattiles)
- for(var/obj/item/stack/tile/plasteel/T in view(src))
+ for(var/obj/item/stack/tile/steel/T in view(src))
if(T in ignorelist)
continue
target = T
@@ -215,7 +215,7 @@
if(A && (locate(/obj/structure/lattice, A) && building == 1 || !locate(/obj/structure/lattice, A) && building == 2)) // Make sure that it still needs repairs
var/obj/item/I
if(building == 1)
- I = new /obj/item/stack/tile/plasteel(src)
+ I = new /obj/item/stack/tile/steel(src)
else
I = PoolOrNew(/obj/item/stack/rods, src)
A.attackby(I, src)
@@ -230,14 +230,14 @@
visible_message("[src] begins to improve the floor.")
if(do_after(src, 50))
if(!F.floor_type)
- var/obj/item/stack/tile/plasteel/T = new /obj/item/stack/tile/plasteel(src)
+ var/obj/item/stack/tile/steel/T = new /obj/item/stack/tile/steel(src)
F.attackby(T, src)
addTiles(-1)
target = null
repairing = 0
update_icons()
- else if(istype(A, /obj/item/stack/tile/plasteel) && amount < maxAmount)
- var/obj/item/stack/tile/plasteel/T = A
+ else if(istype(A, /obj/item/stack/tile/steel) && amount < maxAmount)
+ var/obj/item/stack/tile/steel/T = A
visible_message("[src] begins to collect tiles.")
repairing = 1
update_icons()
@@ -269,7 +269,7 @@
new /obj/item/device/assembly/prox_sensor(Tsec)
if(prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
- var/obj/item/stack/tile/plasteel/T = new /obj/item/stack/tile/plasteel(Tsec)
+ var/obj/item/stack/tile/steel/T = new /obj/item/stack/tile/steel(Tsec)
T.amount = amount
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
@@ -285,8 +285,8 @@
/* Assembly */
-/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/plasteel/T, mob/user as mob)
- if(!istype(T, /obj/item/stack/tile/plasteel))
+/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/steel/T, mob/user as mob)
+ if(!istype(T, /obj/item/stack/tile/steel))
..()
return
if(contents.len >= 1)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index abc8352297..f59fa5bf56 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -381,7 +381,8 @@
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
- bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10)
+ var/temp_inc = max(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), 0)
+ bodytemperature = min(bodytemperature + temp_inc, exposed_temperature)
/mob/living/carbon/can_use_hands()
if(handcuffed)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index b8cb5b1539..18c9acd465 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -764,7 +764,7 @@
return thermal_protection_flags
- proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to.
+ get_heat_protection(temperature) //Temperature is the temperature you're being exposed to.
var/thermal_protection_flags = get_heat_protection_flags(temperature)
var/thermal_protection = 0.0
@@ -821,7 +821,7 @@
return thermal_protection_flags
- proc/get_cold_protection(temperature)
+ get_cold_protection(temperature)
if(COLD_RESISTANCE in mutations)
return 1 //Fully protected from the cold.
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 32b0235009..986ab14cec 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -239,6 +239,12 @@
adjust_fire_stacks(2)
IgniteMob()
+/mob/living/proc/get_cold_protection()
+ return 0
+
+/mob/living/proc/get_heat_protection()
+ return 0
+
//Finds the effective temperature that the mob is burning at.
/mob/living/proc/fire_burn_temperature()
if (fire_stacks <= 0)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 527ce35df2..5e6b949a65 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -372,7 +372,7 @@ var/global/list/robot_modules = list(
C.synths = list(wire)
src.modules += C
- var/obj/item/stack/tile/plasteel/cyborg/S = new /obj/item/stack/tile/plasteel/cyborg(src)
+ var/obj/item/stack/tile/steel/cyborg/S = new /obj/item/stack/tile/steel/cyborg(src)
S.synths = list(metal)
src.modules += S
@@ -695,7 +695,7 @@ var/global/list/robot_modules = list(
C.synths = list(wire)
src.modules += C
- var/obj/item/stack/tile/plasteel/cyborg/S = new /obj/item/stack/tile/plasteel/cyborg(src)
+ var/obj/item/stack/tile/steel/cyborg/S = new /obj/item/stack/tile/steel/cyborg(src)
S.synths = list(metal)
src.modules += S
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 185f6b1342..7fc8ebf8ab 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -165,7 +165,7 @@
explosion(src.loc,1,2,4)
else if (reagents.total_volume > 100)
explosion(src.loc,0,1,3)
- else
+ else if (reagents.total_volume > 50)
explosion(src.loc,-1,1,2)
if(src)
qdel(src)