mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 18:13:34 +01:00
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:
+8
-12
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -223,6 +223,8 @@
|
||||
|
||||
|
||||
/obj/machinery/door/firedoor/border_only
|
||||
//These are playing merry hell on ZAS. Sorry fellas :(
|
||||
/*
|
||||
icon = 'icons/obj/doors/edge_Doorfire.dmi'
|
||||
glass = 1 //There is a glass window so you can see through the door
|
||||
//This is needed due to BYOND limitations in controlling visibility
|
||||
@@ -257,3 +259,4 @@
|
||||
if(istype(source)) air_master.tiles_to_update += source
|
||||
if(istype(destination)) air_master.tiles_to_update += destination
|
||||
return 1
|
||||
*/
|
||||
@@ -209,15 +209,17 @@
|
||||
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target)
|
||||
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.05)
|
||||
air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100))
|
||||
//air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.toxins,get_dir(loc,target))
|
||||
air_transfer.toxins = 0
|
||||
target.assume_air(air_transfer)
|
||||
//Burn it based on transfered gas
|
||||
//target.hotspot_expose(part4.air_contents.temperature*2,300)
|
||||
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/full/New(var/loc)
|
||||
..()
|
||||
weldtool = new /obj/item/weapon/weldingtool(src)
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
activate(mob/user as mob)
|
||||
if(active) return
|
||||
|
||||
|
||||
if(detonator)
|
||||
if(!isigniter(detonator.a_left))
|
||||
detonator.a_left.activate()
|
||||
@@ -216,9 +216,11 @@
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("aluminum", 25)
|
||||
B2.reagents.add_reagent("plasma", 25)
|
||||
B2.reagents.add_reagent("sacid", 25)
|
||||
B1.reagents.add_reagent("aluminum", 15)
|
||||
B1.reagents.add_reagent("fuel",20)
|
||||
B2.reagents.add_reagent("plasma", 15)
|
||||
B2.reagents.add_reagent("sacid", 15)
|
||||
B1.reagents.add_reagent("fuel",20)
|
||||
|
||||
detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
|
||||
|
||||
|
||||
@@ -1121,26 +1121,15 @@ datum
|
||||
reagent_state = LIQUID
|
||||
color = "#660000" // rgb: 102, 0, 0
|
||||
|
||||
//Commenting this out as it's horribly broken. It's a neat effect though, so it might be worth making a new reagent (that is less common) with similar effects. -Pete
|
||||
/*
|
||||
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
src = null
|
||||
var/turf/the_turf = get_turf(O)
|
||||
if(!the_turf)
|
||||
return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
|
||||
var/datum/gas_mixture/napalm = new
|
||||
var/datum/gas/volatile_fuel/fuel = new
|
||||
fuel.moles = 15
|
||||
napalm.trace_gases += fuel
|
||||
the_turf.assume_air(napalm)
|
||||
new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume)
|
||||
reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
var/datum/gas_mixture/napalm = new
|
||||
var/datum/gas/volatile_fuel/fuel = new
|
||||
fuel.moles = 15
|
||||
napalm.trace_gases += fuel
|
||||
T.assume_air(napalm)
|
||||
return*/
|
||||
new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
|
||||
return
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
|
||||
//Plasma fire properties
|
||||
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
|
||||
#define PLASMA_FLASHPOINT 246+T0C
|
||||
#define PLASMA_UPPER_TEMPERATURE 1370+T0C
|
||||
#define PLASMA_MINIMUM_OXYGEN_NEEDED 2
|
||||
#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 20
|
||||
|
||||
Reference in New Issue
Block a user