mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-22 21:38:47 +01:00
310ed9b4c0
Reworked how napalm works to make it more powerful with the new turf fires. Instead of directly creating a turf fire, it'll instead process a slower burning, but deadly turf fire. Also added a military-grade flamethrower, which can use the new napalm. This will create napalm pools on the ground and ignite them, instead of directly creating turf fires. ### Asset Licenses The following assets that **have not** been created by myself are included in this PR: | Path | Original Author | License | | --- | --- | --- | | icons/obj/item/military_flamethrower.dmi | electricpants#6824 ([Shiptest](https://github.com/shiptest-ss13/Shiptest)) | CC-BY-SA 3.0 |
103 lines
3.1 KiB
Plaintext
103 lines
3.1 KiB
Plaintext
/obj/effect/decal/cleanable/liquid_fuel
|
|
//Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles.
|
|
name = "liquid fuel"
|
|
desc = "Some kind of sticky, flammable liquid."
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "fuel"
|
|
layer = BLOOD_LAYER
|
|
anchored = 1
|
|
var/amount = 1
|
|
|
|
/obj/effect/decal/cleanable/liquid_fuel/Initialize(mapload, amt = 1, nologs = 0)
|
|
. = ..()
|
|
if(!nologs && !mapload)
|
|
log_and_message_admins("spilled liquid fuel", user = usr, location = get_turf(src))
|
|
src.amount = amt
|
|
|
|
var/has_spread = 0
|
|
//Be absorbed by any other liquid fuel in the tile.
|
|
for(var/obj/effect/decal/cleanable/liquid_fuel/other in loc)
|
|
if(other != src)
|
|
other.amount += src.amount
|
|
other.Spread()
|
|
has_spread = 1
|
|
break
|
|
|
|
if(!has_spread)
|
|
Spread()
|
|
else
|
|
qdel(src)
|
|
|
|
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread(exclude=list())
|
|
//Allows liquid fuels to sometimes flow into other tiles.
|
|
if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
|
|
var/turf/simulated/S = loc
|
|
if(!istype(S)) return
|
|
for(var/d in GLOB.cardinals)
|
|
var/turf/simulated/target = get_step(src,d)
|
|
var/turf/simulated/origin = get_turf(src)
|
|
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
|
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
|
|
if(other_fuel)
|
|
other_fuel.amount += amount*0.25
|
|
if(!(other_fuel in exclude))
|
|
exclude += src
|
|
other_fuel.Spread(exclude)
|
|
else
|
|
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
|
|
amount *= 0.75
|
|
|
|
/obj/effect/decal/cleanable/foam //Copied from liquid fuel
|
|
name = "foam"
|
|
desc = "Some kind of extinguishing foam."
|
|
gender = PLURAL
|
|
density = 0
|
|
anchored = 1
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "white_foam"
|
|
var/amount = 1
|
|
|
|
/obj/effect/decal/cleanable/foam/Initialize(mapload, amt = 1, nologs = 0)
|
|
SHOULD_CALL_PARENT(FALSE)
|
|
|
|
if(flags_1 & INITIALIZED_1)
|
|
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
|
flags_1 |= INITIALIZED_1
|
|
|
|
src.amount = amt
|
|
|
|
var/has_spread = 0
|
|
//Be absorbed by any other liquid fuel in the tile.
|
|
for(var/obj/effect/decal/cleanable/foam/other in loc)
|
|
if(other != src)
|
|
other.amount += src.amount
|
|
other.Spread()
|
|
has_spread = 1
|
|
break
|
|
|
|
if(!has_spread)
|
|
Spread()
|
|
QDEL_IN(src, 2 MINUTES)
|
|
return INITIALIZE_HINT_NORMAL
|
|
else
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
|
|
/obj/effect/decal/cleanable/foam/proc/Spread(exclude=list())
|
|
if(amount < 15) return
|
|
var/turf/simulated/S = loc
|
|
if(!istype(S)) return
|
|
for(var/d in GLOB.cardinals)
|
|
var/turf/simulated/target = get_step(src,d)
|
|
var/turf/simulated/origin = get_turf(src)
|
|
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
|
var/obj/effect/decal/cleanable/foam/other_foam = locate() in target
|
|
if(other_foam)
|
|
other_foam.amount += amount*0.25
|
|
if(!(other_foam in exclude))
|
|
exclude += src
|
|
other_foam.Spread(exclude)
|
|
else
|
|
new/obj/effect/decal/cleanable/foam(target, amount*0.25,1)
|
|
amount *= 0.75
|