mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 16:44:33 +01:00
refactor: barrier spawners. (#26866)
* refactor: barrier spawners. * set script PR number
This commit is contained in:
committed by
GitHub
parent
a01f41e904
commit
bcd5b0b4c4
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user