Files
Cody BrittainandGitHub 9b5f89a717 Ports Turf Fires (#21659)
Adds turf fires (ported from Baystation, which ported them from
Shiptest), which are now used instead of ZAS fires for fuel decals and
flamethrowers. They also supplement ZAS fires in especially bad atmos
fires.

This makes flamethrowers and related objects more suitable for AOE
denial, rather than cooking the room (including yourself). They still do
the latter, but less so than a gaseous fire.

To make flamethrowers actually useful against them, simple mobs now take
brute damage when on fire.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| sound/weapons/flamethrower/flamethrower1.ogg |
[rye-rice](https://github.com/rye-rice) (Shiptest) | CC-BY-SA 3.0 |
| sound/weapons/flamethrower/flamethrower2.ogg |
[rye-rice](https://github.com/rye-rice) (Shiptest) | CC-BY-SA 3.0 |
| sound/weapons/flamethrower/flamethrower3.ogg |
[rye-rice](https://github.com/rye-rice) (Shiptest) | CC-BY-SA 3.0 |
| sound/weapons/flamethrower/flamethrower_empty.ogg |
[rye-rice](https://github.com/rye-rice) (Shiptest) | CC-BY-SA 3.0 |
| icons/effects/particles/smoke.dmi |
[rye-rice](https://github.com/shiptest-ss13/Shiptest/commits?author=rye-rice)
(Shiptest) | CC-BY-SA 3.0 |
| icons/effects/turf_fire.dmi | CM Dev (cmss13) | CC-BY-SA 3.0 |
2026-01-31 01:41:11 +00:00

133 lines
3.2 KiB
Plaintext

/turf/simulated/floor
name = "plating"
desc = "The naked hull."
icon = 'icons/turf/flooring/plating.dmi'
icon_state = "plating"
is_outside = OUTSIDE_AREA
explosion_resistance = 1
// Damage to flooring.
var/broken
var/burnt
var/broken_overlay
var/burned_overlay
// Flooring data.
var/flooring_override
var/initial_flooring
var/singleton/flooring/flooring
var/mineral = DEFAULT_WALL_MATERIAL
thermal_conductivity = 0.040
heat_capacity = 10000
var/lava = 0
/// If the turf should generate details. Default: TRUE
var/has_edge_icon = TRUE
/turf/simulated/floor/disassembly_hints(mob/user, distance, is_adjacent)
. += ..()
if(flooring)
var/list/can_remove_with = list()
if(flooring.flags & TURF_REMOVE_CROWBAR)
can_remove_with += "crowbars"
if(flooring.flags & TURF_IS_FRAGILE)
can_remove_with += SPAN_WARNING("crowbars")
if(flooring.flags & TURF_REMOVE_SCREWDRIVER)
can_remove_with += "screwdrivers"
if(flooring.flags & TURF_REMOVE_SHOVEL)
can_remove_with += "shovels"
if(flooring.flags & TURF_REMOVE_WRENCH)
can_remove_with += "wrenches"
if(flooring.flags & TURF_REMOVE_WELDER)
can_remove_with += "welding tools"
if(!length(can_remove_with))
can_remove_with = "nothing!"
. += SPAN_NOTICE("\The [src] can be removed with: [english_list(can_remove_with)].")
/turf/simulated/floor/is_plating()
return !flooring
/turf/simulated/floor/Initialize(mapload, var/floortype)
. = ..()
if(!floortype && initial_flooring)
floortype = initial_flooring
if(floortype)
set_flooring(GET_SINGLETON(floortype), mapload)
/turf/simulated/floor/proc/set_flooring(singleton/flooring/newflooring, mapload)
if (!mapload)
make_plating(defer_icon_update = 1)
flooring = newflooring
if (mapload)
queue_icon_update()
else
queue_icon_update(1)
levelupdate()
//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.
/turf/simulated/floor/proc/make_plating(var/place_product, var/defer_icon_update)
ClearOverlays()
if(islist(decals))
decals.Cut()
decals = null
name = base_name
desc = base_desc
icon = base_icon
icon_state = base_icon_state
color = base_color
if(flooring)
flooring.on_remove()
if(flooring.build_type && place_product)
new flooring.build_type(src)
flooring = null
broken = null
burnt = null
flooring_override = null
levelupdate()
// Set light to zero, so glowing turfs cease to glow if turned into plating.
set_light(0)
// Check if this still needs to have starlight - if it does, it'll be given back its starlight.
update_starlight()
if(!defer_icon_update)
update_icon(1)
/turf/simulated/floor/levelupdate()
for(var/obj/O in src)
O.hide(O.hides_under_flooring() && src.flooring)
if(flooring)
layer = TURF_LAYER
else
layer = PLATING_LAYER
/turf/simulated/floor/is_floor()
return TRUE
/turf/simulated/floor/reset_color()
if(flooring)
color = flooring.color
else
..()
/turf/simulated/floor/shuttle_ceiling
name = "hull plating"
icon = 'icons/turf/flooring/tiles.dmi'
icon_state = "reinforced_light"
/turf/simulated/IgniteTurf(power, fire_color)
if(turf_fire)
turf_fire.AddPower(power)
return
new /obj/turf_fire(src, power, fire_color)