refactor: barrier spawners. (#26866)

* refactor: barrier spawners.

* set script PR number
This commit is contained in:
warriorstar-orion
2024-10-07 17:18:17 -04:00
committed by GitHub
parent a01f41e904
commit bcd5b0b4c4
13 changed files with 487 additions and 491 deletions
@@ -76,6 +76,8 @@
var/loot_spawned = 0
var/pixel_divider = FLOOR(spawn_random_offset_max_pixels / spawn_loot_split_pixel_offsets, 1)
while((spawn_loot_count-loot_spawned) && length(loot))
loot_spawned++
var/lootspawn = pick_weight_recursive(loot)
if(!spawn_loot_double)
loot.Remove(lootspawn)
@@ -84,6 +86,10 @@
if(spawn_scatter_radius > 0 && length(spawn_locations))
spawn_loc = pick(spawn_locations)
if(ispath(lootspawn, /turf))
spawn_loc.ChangeTurf(lootspawn)
continue
var/atom/movable/spawned_loot = make_item(spawn_loc, lootspawn)
spawned_loot.setDir(dir)
@@ -100,7 +106,6 @@
var/column = FLOOR(loot_spawned / pixel_divider, 1)
spawned_loot.pixel_x = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + (column * spawn_loot_split_pixel_offsets)
spawned_loot.pixel_y = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider)
loot_spawned++
/**
* Makes the actual item related to our spawner. If `record_spawn` is `TRUE`,
@@ -1,72 +1,58 @@
/obj/effect/spawner/random_barrier
name = "random tile"
icon = 'icons/effects/spawner_icons.dmi'
icon_state = "questionmark"
var/list/result = list(
/turf/simulated/floor/plasteel = 1,
/turf/simulated/wall = 1,
/obj/structure/falsewall = 1,
/obj/effect/spawner/window/reinforced = 1,
/obj/machinery/door/airlock = 1,
/obj/machinery/door/airlock/welded = 1,
/obj/structure/barricade/wooden = 1)
/obj/effect/spawner/random/barrier
name = "random barrier spawner"
icon = 'icons/effects/random_spawners.dmi'
icon_state = "barrier"
loot = list(
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/airlock,
/obj/machinery/door/airlock/welded,
/obj/structure/barricade/wooden,
/obj/structure/falsewall,
/turf/simulated/floor/plasteel,
/turf/simulated/wall,
)
// This needs to come before the initialization wave because
// the thing it creates might need to be initialized too
/obj/effect/spawner/random_barrier/Initialize()
. = ..()
var/turf/T = get_turf(src)
if(!T)
CRASH("Barrier spawner placed in nullspace!")
var/thing_to_place = pickweight(result)
if(ispath(thing_to_place, /turf))
T.ChangeTurf(thing_to_place)
else
new thing_to_place(T)
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/random_barrier/wall_probably
/obj/effect/spawner/random/barrier/wall_probably
name = "probably a wall"
icon_state = "girder"
result = list(
/turf/simulated/wall = 9,
/obj/structure/falsewall = 1)
icon_state = "wall"
loot = list(
/obj/structure/falsewall = 1,
/turf/simulated/wall = 9,
)
/obj/effect/spawner/random_barrier/floor_probably
name = "probably a floor"
result = list(
/turf/simulated/floor/plasteel = 3,
/turf/simulated/wall = 1)
/obj/effect/spawner/random_barrier/obstruction
/obj/effect/spawner/random/barrier/obstruction
name = "obstruction"
icon_state = "barrier"
result = list(
/turf/simulated/wall = 1,
/obj/structure/falsewall = 1,
/obj/structure/barricade/wooden = 1,
/obj/machinery/door/airlock/welded = 1)
loot = list(
/obj/machinery/door/airlock/welded,
/obj/structure/barricade/wooden,
/obj/structure/falsewall,
/turf/simulated/wall,
)
/// these have no access restrictions, so for internal maintenance only
/obj/effect/spawner/random_barrier/possibly_welded_airlock
/obj/effect/spawner/random/barrier/possibly_welded_airlock
name = "possibly welded airlock"
icon_state = "airlock"
result = list(
/obj/machinery/door/airlock = 3,
/obj/machinery/door/airlock/welded = 1)
loot = list(
/obj/machinery/door/airlock = 3,
/obj/machinery/door/airlock/welded = 1,
)
/obj/effect/spawner/random_spawners/grille_often
/obj/effect/spawner/random/barrier/grille_often
name = "grille often"
icon_state = "grille"
result = list(
/obj/structure/grille = 8,
/obj/structure/grille/broken = 4,
/turf/simulated/floor/plating = 2)
loot = list(
/obj/structure/grille = 8,
/obj/structure/grille/broken = 4,
/turf/simulated/floor/plating = 2,
)
/obj/effect/spawner/random_spawners/grille_maybe
/obj/effect/spawner/random/barrier/grille_maybe
name = "grille maybe"
icon_state = "grille"
result = list(
/obj/structure/grille = 2,
/obj/structure/grille/broken = 2,
/turf/simulated/floor/plating = 5)
loot = list(
/obj/structure/grille = 2,
/obj/structure/grille/broken = 2,
/turf/simulated/floor/plating = 5,
)