Merge pull request #6588 from Crazylemon64/random_barrier

Adds a random barrier for use in mapping
This commit is contained in:
Fox McCloud
2017-02-26 17:27:20 -05:00
committed by GitHub
3 changed files with 70 additions and 11 deletions
+14 -11
View File
@@ -34,7 +34,7 @@
var/main_power_timer = null
var/backup_power_timer = null
var/spawnPowerRestoreRunning = 0
var/welded = null
var/welded = FALSE
var/locked = 0
var/lights = 1 // bolt lights show by default
var/datum/wires/airlock/wires = null
@@ -90,6 +90,9 @@
icon = 'icons/obj/doors/Doorext.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_ext
/obj/machinery/door/airlock/welded
welded = 1
/obj/machinery/door/airlock/glass
name = "Glass Airlock"
icon = 'icons/obj/doors/Doorglass.dmi'
@@ -557,8 +560,8 @@ About the new airlock wires panel:
return
/obj/machinery/door/airlock/attack_ghost(mob/user)
ui_interact(user)
ui_interact(user)
/obj/machinery/door/airlock/attack_ai(mob/user)
ui_interact(user)
@@ -987,17 +990,17 @@ About the new airlock wires panel:
update_icon()
return 1
/obj/machinery/door/airlock/New()
..()
/obj/machinery/door/airlock/initialize()
. = ..()
wires = new(src)
if(closeOtherId != null)
spawn (5)
for(var/obj/machinery/door/airlock/A in airlocks)
if(A.closeOtherId == closeOtherId && A != src)
closeOther = A
break
for(var/obj/machinery/door/airlock/A in airlocks)
if(A.closeOtherId == closeOtherId && A != src)
closeOther = A
break
if(frozen)
welded = 1
welded = TRUE
if(welded)
update_icon()
/obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob, params)
@@ -0,0 +1,55 @@
/obj/effect/spawner/random_barrier
name = "random tile"
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)
// This needs to come before the initialization wave because
// the thing it creates might need to be initialized too
/obj/effect/spawner/random_barrier/New()
. = ..()
var/turf/T = get_turf(src)
if(!T)
log_runtime(EXCEPTION("Barrier spawner placed in nullspace!"), src)
return
var/thing_to_place = pickweight(result)
if(ispath(thing_to_place, /turf))
T.ChangeTurf(thing_to_place)
else
new thing_to_place(T)
qdel(src)
/obj/effect/spawner/random_barrier/wall_probably
name = "probably a wall"
result = list(
/turf/simulated/wall = 9,
/obj/structure/falsewall = 1
)
/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
name = "obstruction"
result = list(
/turf/simulated/wall = 1,
/obj/structure/falsewall = 1,
/obj/structure/barricade/wooden = 1,
/obj/machinery/door/airlock/welded = 1
)
/obj/effect/spawner/random_barrier/possibly_welded_airlock
name = "possibly welded airlock"
result = list(
/obj/machinery/door/airlock = 3,
/obj/machinery/door/airlock/welded = 1
)
+1
View File
@@ -691,6 +691,7 @@
#include "code\game\objects\effects\spawners\bombspawner.dm"
#include "code\game\objects\effects\spawners\gibspawner.dm"
#include "code\game\objects\effects\spawners\lootdrop.dm"
#include "code\game\objects\effects\spawners\random_barrier.dm"
#include "code\game\objects\effects\spawners\vaultspawner.dm"
#include "code\game\objects\effects\spawners\windowspawner.dm"
#include "code\game\objects\items\ashtray.dm"