Fixes issues:

#2632 Fire Issues (Fire doors work, Flamethrower reverted to making a flamethrower liquid fuel subtype, flame grenades now make a puddle of welder fuel that is lit aflame with napalm)
#2630 (The code has been calling (turf).temperature_expose when it was supposed to be hotspot_expose), #1865 (aqain)(Added a check to remove trace gas fuel under a certain point).
Also: added a flashpoint value for plasma, which is the temperature at which it self-ignites (Currently 246C or 519K which is equal to gasoline)
Partial-tile firedoors now default to full-tile firedoors as the part-tile ones were breaking ZAS zones entirely.  Possible cause of #2627 and maybe #2451, but those need tested and I did not have time.
This commit is contained in:
SkyMarshal
2013-04-18 09:56:49 -07:00
parent b366998eeb
commit f05b8e0083
7 changed files with 30 additions and 37 deletions
+8 -12
View File
@@ -84,11 +84,11 @@ obj
var/turf/simulated/floor/S = loc
if(!S.zone) del src //Cannot exist where zones are broken.
if(istype(S,/turf/simulated/floor))
if(istype(S))
var
datum/gas_mixture/air_contents = S.return_air()
//Get whatever trace fuels are in the area
datum/gas/volatile_fuel/fuel = locate(/datum/gas/volatile_fuel/) in air_contents.trace_gases
datum/gas/volatile_fuel/fuel = locate() in air_contents.trace_gases
//Also get liquid fuels on the ground.
obj/effect/decal/cleanable/liquid_fuel/liquid = locate() in S
@@ -115,7 +115,7 @@ obj
//Spread the fire.
if(!(locate(/obj/fire) in enemy_tile))
if( prob( firelevel*10 ) )
if( prob( firelevel*10 ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0))
new/obj/fire(enemy_tile,firelevel)
if(flow)
@@ -136,6 +136,8 @@ obj
//Burn the gas mixture.
flow.zburn(liquid)
if(fuel && fuel.moles <= 0.00001)
del fuel
else
@@ -160,14 +162,12 @@ obj
New(newLoc,fl)
..()
if(!istype(loc, /turf) || !loc.CanPass(null, loc, 0, 0))
if(!istype(loc, /turf))
del src
dir = pick(cardinal)
//sd_SetLuminosity(3,2,0)
firelevel = fl
for(var/mob/living/carbon/human/M in loc)
M.FireBurn(min(max(0.1,firelevel / 20),10)) //Burn the humans!
air_master.active_hotspots.Add(src)
Del()
@@ -195,12 +195,8 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid)
if(fuel)
//Volatile Fuel
if(fuel.moles < 0.01)
trace_gases.Remove(fuel)
fuel = null
else
total_fuel += fuel.moles
fuel_sources++
total_fuel += fuel.moles
fuel_sources++
if(liquid)
//Liquid Fuel
+3 -3
View File
@@ -200,7 +200,7 @@ zone/proc/process()
progress = "problem with an inbuilt byond function: some conditional checks"
//Only run through the individual turfs if there's reason to.
if(air.graphic != air.graphic_archived || air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
if(air.graphic != air.graphic_archived || air.temperature > PLASMA_FLASHPOINT)
progress = "problem with: turf/simulated/update_visuals()"
@@ -215,10 +215,10 @@ zone/proc/process()
progress = "problem with: item or turf temperature_expose()"
//Expose stuff to extreme heat.
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
if(air.temperature > PLASMA_FLASHPOINT)
for(var/atom/movable/item in S)
item.temperature_expose(air, air.temperature, CELL_VOLUME)
S.temperature_expose(air, air.temperature, CELL_VOLUME)
S.hotspot_expose(air, air.temperature, CELL_VOLUME)
progress = "problem with: calculating air graphic"