mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Adds the Nuclear training bomb, second try (#25352)
* Adds the Nuclear training bomb * boxstation * other maps * moved camera * missing cable * last fixes * delta, last fix * Update code/datums/wires/nuclearbomb_wires.dm Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> * cyberiad missing floor --------- Signed-off-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: Charlie Nolan <funnyman3595@gmail.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
co-authored by
Charlie Nolan
Burzah
parent
69f20e250b
commit
9e04910ce6
@@ -258,6 +258,10 @@
|
||||
/obj/item/target,
|
||||
/obj/item/target,
|
||||
/obj/item/target,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/target/syndicate,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"acD" = (
|
||||
@@ -453,7 +457,6 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Firing Range"
|
||||
},
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
@@ -466,7 +469,7 @@
|
||||
name = "east bump";
|
||||
pixel_x = 24
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"adn" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
@@ -522,9 +525,8 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/radio/intercom/department/security{
|
||||
pixel_y = -28
|
||||
},
|
||||
/obj/machinery/nuclearbomb/training,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"adE" = (
|
||||
@@ -537,13 +539,34 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"adG" = (
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_y = -2;
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/nuclear_guide_spacing{
|
||||
pixel_x = 10;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_defusing{
|
||||
pixel_x = 9;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_operating{
|
||||
pixel_x = 8;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"adH" = (
|
||||
@@ -1696,10 +1719,22 @@
|
||||
/area/station/command/office/hos)
|
||||
"aij" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/rack,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/target/syndicate,
|
||||
/obj/item/storage/toolbox/mechanical{
|
||||
pixel_x = 3;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/multitool{
|
||||
pixel_y = -5;
|
||||
pixel_x = 5
|
||||
},
|
||||
/obj/item/clothing/head/welding{
|
||||
pixel_y = -2;
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/radio/intercom/department/security{
|
||||
pixel_x = 28
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"aio" = (
|
||||
|
||||
@@ -2486,13 +2486,6 @@
|
||||
/obj/machinery/ai_status_display,
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/turret_protected/aisat/interior)
|
||||
"apu" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/station/maintenance/fore2)
|
||||
"apw" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/toolbox/emergency,
|
||||
@@ -2752,37 +2745,41 @@
|
||||
/turf/simulated/floor/plating/asteroid/ancient,
|
||||
/area/station/maintenance/fpmaint)
|
||||
"ard" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/small,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 9
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/machinery/light,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"arh" = (
|
||||
/obj/item/vending_refill/cola,
|
||||
/obj/item/multitool,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/spawner/grouped_spawner{
|
||||
group_id = "tunnelbats";
|
||||
max_per_spawner = 1;
|
||||
name = "bat spawner";
|
||||
path_to_spawn = /mob/living/simple_animal/hostile/scarybat;
|
||||
total_amount = 20
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_y = -2;
|
||||
pixel_x = -7
|
||||
},
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/nuclear_guide_spacing{
|
||||
pixel_x = 10;
|
||||
pixel_y = 7
|
||||
},
|
||||
/area/station/maintenance/fore2)
|
||||
"ark" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
/obj/item/paper/nuclear_guide_defusing{
|
||||
pixel_x = 9;
|
||||
pixel_y = 4
|
||||
},
|
||||
/area/station/maintenance/fore2)
|
||||
"arl" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fore2)
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_operating{
|
||||
pixel_x = 8;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "redcorner"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"arm" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Fore Asteroid Maintenance Access"
|
||||
@@ -5829,6 +5826,13 @@
|
||||
"aMC" = (
|
||||
/turf/simulated/mineral/ancient,
|
||||
/area/station/medical/break_room)
|
||||
"aME" = (
|
||||
/obj/machinery/door/airlock/maintenance,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"aMJ" = (
|
||||
/obj/machinery/firealarm{
|
||||
dir = 1;
|
||||
@@ -12062,19 +12066,21 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -2
|
||||
},
|
||||
/obj/item/clothing/glasses/sunglasses,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"bsP" = (
|
||||
/obj/item/radio/intercom{
|
||||
pixel_y = -28;
|
||||
name = "custom placement"
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/glasses/sunglasses{
|
||||
pixel_x = 3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"bsP" = (
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/structure/closet/bombclosetsecurity,
|
||||
/obj/item/radio/intercom{
|
||||
pixel_y = -28;
|
||||
name = "custom placement"
|
||||
/obj/item/clothing/glasses/sunglasses,
|
||||
/obj/item/storage/box/flashbangs{
|
||||
pixel_x = -16
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
@@ -25812,13 +25818,16 @@
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/legal/magistrate)
|
||||
"cKZ" = (
|
||||
/obj/machinery/door/airlock/maintenance,
|
||||
/obj/effect/mapping_helpers/airlock/access/all/security/general,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/obj/item/radio/intercom{
|
||||
name = "custom placement";
|
||||
pixel_y = 28
|
||||
},
|
||||
/area/station/maintenance/fore2)
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Defusal Workshop"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"cLa" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -28999,6 +29008,23 @@
|
||||
icon_state = "darkyellow"
|
||||
},
|
||||
/area/station/engineering/atmos)
|
||||
"cZi" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 2;
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/obj/machinery/power/apc/directional/west,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "redcorner"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"cZr" = (
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
@@ -29371,13 +29397,11 @@
|
||||
/area/station/security/prison/cell_block/A)
|
||||
"ddl" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable/orange,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 4;
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"ddn" = (
|
||||
@@ -33955,6 +33979,17 @@
|
||||
icon_state = "yellowcorner"
|
||||
},
|
||||
/area/station/hallway/primary/central/east)
|
||||
"dEa" = (
|
||||
/obj/machinery/light_switch{
|
||||
name = "north bump";
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/alarm/directional/west,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "redcorner"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"dEi" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/ammo_box/shotgun/beanbag,
|
||||
@@ -34819,6 +34854,24 @@
|
||||
icon_state = "bluered"
|
||||
},
|
||||
/area/station/hallway/secondary/entry/west)
|
||||
"dQG" = (
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Defusal Workshop"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/security/general,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 4;
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"dQR" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Aft Asteroid Maintenance"
|
||||
@@ -36720,15 +36773,6 @@
|
||||
/obj/machinery/hologram/holopad,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/secondary/exit)
|
||||
"eAn" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/firecloset,
|
||||
/obj/item/crowbar/red,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fore2)
|
||||
"eAu" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/recharge_station,
|
||||
@@ -41487,6 +41531,25 @@
|
||||
/obj/effect/spawner/random_spawners/dirt_often,
|
||||
/turf/simulated/floor/transparent/glass/reinforced,
|
||||
/area/station/maintenance/apmaint)
|
||||
"gmV" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/head/welding{
|
||||
pixel_x = 12;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/multitool{
|
||||
pixel_x = -4;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/storage/toolbox/mechanical{
|
||||
pixel_x = -3;
|
||||
pixel_y = -2
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"gmZ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 5
|
||||
@@ -42842,6 +42905,21 @@
|
||||
icon_state = "whitebluecorner"
|
||||
},
|
||||
/area/station/medical/surgery/secondary)
|
||||
"gLb" = (
|
||||
/obj/item/vending_refill/cola,
|
||||
/obj/item/multitool,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/spawner/grouped_spawner{
|
||||
group_id = "tunnelbats";
|
||||
max_per_spawner = 1;
|
||||
name = "bat spawner";
|
||||
path_to_spawn = /mob/living/simple_animal/hostile/scarybat;
|
||||
total_amount = 20
|
||||
},
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"gLj" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/spawner/lootdrop/maintenance/eight,
|
||||
@@ -43849,6 +43927,15 @@
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/station/security/storage)
|
||||
"hcm" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/firecloset,
|
||||
/obj/item/crowbar/red,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"hco" = (
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 4;
|
||||
@@ -44431,6 +44518,14 @@
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/turret_protected/aisat/interior/secondary)
|
||||
"hnL" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/obj/machinery/firealarm{
|
||||
name = "north bump";
|
||||
pixel_y = 24
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"hoa" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 6
|
||||
@@ -50739,12 +50834,12 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/hallway/primary/central/west)
|
||||
"jjh" = (
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 2;
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/permabrig)
|
||||
"jjp" = (
|
||||
@@ -53865,20 +53960,6 @@
|
||||
temperature = 80
|
||||
},
|
||||
/area/station/science/xenobiology)
|
||||
"khV" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/brig)
|
||||
"kic" = (
|
||||
/obj/structure/closet/wardrobe/grey,
|
||||
/turf/simulated/floor/mineral/titanium/blue,
|
||||
@@ -59525,6 +59606,15 @@
|
||||
icon_state = "cafeteria"
|
||||
},
|
||||
/area/station/service/kitchen)
|
||||
"lQa" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"lQy" = (
|
||||
/obj/machinery/optable,
|
||||
/obj/machinery/light{
|
||||
@@ -60954,11 +61044,6 @@
|
||||
/obj/effect/spawner/random_spawners/dirt_often,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/disposal/external/southwest)
|
||||
"moQ" = (
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/fore2)
|
||||
"moY" = (
|
||||
/obj/structure/closet/secure_closet/medical3,
|
||||
/obj/machinery/light,
|
||||
@@ -62522,15 +62607,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/brig)
|
||||
"mSf" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"mSh" = (
|
||||
/obj/structure/girder,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -62825,13 +62901,12 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/maintcentral)
|
||||
"mVr" = (
|
||||
/obj/item/clothing/shoes/orange,
|
||||
/obj/item/clothing/under/color/orange/prison,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
/obj/machinery/nuclearbomb/training,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 4;
|
||||
icon_state = "redcorner"
|
||||
},
|
||||
/area/station/maintenance/fore2)
|
||||
/area/station/security/defusal)
|
||||
"mVs" = (
|
||||
/obj/structure/disposalpipe/segment/corner{
|
||||
dir = 8;
|
||||
@@ -63272,6 +63347,16 @@
|
||||
/obj/structure/sign/securearea,
|
||||
/turf/simulated/wall,
|
||||
/area/station/engineering/tech_storage)
|
||||
"nde" = (
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 2;
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"ndl" = (
|
||||
/obj/effect/spawner/window/reinforced/polarized/grilled{
|
||||
id = "rd"
|
||||
@@ -65368,6 +65453,11 @@
|
||||
icon_state = "neutralcorner"
|
||||
},
|
||||
/area/station/hallway/primary/fore/east)
|
||||
"nNB" = (
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"nNF" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Service SMES Access"
|
||||
@@ -65403,6 +65493,10 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/hallway/primary/port/north)
|
||||
"nOr" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"nOu" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -69524,6 +69618,9 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/station/turret_protected/ai)
|
||||
"peU" = (
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/security/defusal)
|
||||
"pfe" = (
|
||||
/obj/structure/chair/wood{
|
||||
dir = 1
|
||||
@@ -77318,6 +77415,30 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/public/locker)
|
||||
"rGv" = (
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/station/security/brig)
|
||||
"rGw" = (
|
||||
/obj/structure/disposalpipe/segment/corner,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
|
||||
@@ -83573,16 +83694,18 @@
|
||||
/area/station/maintenance/port)
|
||||
"tFL" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/structure/cable/orange{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable/orange{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/structure/cable/orange,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/permabrig)
|
||||
"tFY" = (
|
||||
@@ -91618,6 +91741,14 @@
|
||||
icon_state = "darkyellow"
|
||||
},
|
||||
/area/station/engineering/control)
|
||||
"weh" = (
|
||||
/obj/item/clothing/shoes/orange,
|
||||
/obj/item/clothing/under/color/orange/prison,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"weN" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
@@ -92002,6 +92133,13 @@
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/hallway/primary/aft/west)
|
||||
"wiU" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"wiV" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -28
|
||||
@@ -98575,6 +98713,7 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/closet/bombclosetsecurity,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -118888,7 +119027,7 @@ rHj
|
||||
cDb
|
||||
rHj
|
||||
aQL
|
||||
aQL
|
||||
nde
|
||||
tFL
|
||||
rNK
|
||||
rNK
|
||||
@@ -119146,10 +119285,10 @@ gLk
|
||||
cVR
|
||||
amO
|
||||
myY
|
||||
tFL
|
||||
lQa
|
||||
rNK
|
||||
rNK
|
||||
khV
|
||||
lPn
|
||||
yfX
|
||||
fOj
|
||||
awv
|
||||
@@ -119403,11 +119542,11 @@ dpC
|
||||
rHj
|
||||
adc
|
||||
rHj
|
||||
mSf
|
||||
rNK
|
||||
rNK
|
||||
lPn
|
||||
yfX
|
||||
peU
|
||||
peU
|
||||
peU
|
||||
peU
|
||||
wGz
|
||||
uaJ
|
||||
awB
|
||||
uqz
|
||||
@@ -119660,12 +119799,12 @@ rHj
|
||||
rHj
|
||||
vNP
|
||||
sFU
|
||||
afd
|
||||
afd
|
||||
afd
|
||||
afd
|
||||
wGz
|
||||
uaJ
|
||||
peU
|
||||
dEa
|
||||
cZi
|
||||
dQG
|
||||
dsy
|
||||
rGv
|
||||
dtr
|
||||
uqz
|
||||
aLp
|
||||
@@ -119917,10 +120056,10 @@ rHj
|
||||
cgX
|
||||
tkn
|
||||
dqz
|
||||
tkn
|
||||
rHj
|
||||
peU
|
||||
hnL
|
||||
ard
|
||||
afd
|
||||
peU
|
||||
daG
|
||||
sVX
|
||||
daG
|
||||
@@ -120170,13 +120309,13 @@ aTz
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
rHj
|
||||
aTz
|
||||
aTz
|
||||
afd
|
||||
afd
|
||||
cKZ
|
||||
aME
|
||||
mYJ
|
||||
peU
|
||||
cKZ
|
||||
gmV
|
||||
fqh
|
||||
eBm
|
||||
krP
|
||||
@@ -120427,11 +120566,11 @@ afd
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
afd
|
||||
vXM
|
||||
tkn
|
||||
weh
|
||||
gLb
|
||||
peU
|
||||
mVr
|
||||
arh
|
||||
fqh
|
||||
@@ -120684,13 +120823,13 @@ abW
|
||||
abW
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
afd
|
||||
eAn
|
||||
moQ
|
||||
ark
|
||||
hcm
|
||||
nNB
|
||||
adc
|
||||
peU
|
||||
peU
|
||||
peU
|
||||
fqh
|
||||
xax
|
||||
pZs
|
||||
@@ -120939,15 +121078,15 @@ rNK
|
||||
cRv
|
||||
abW
|
||||
abW
|
||||
abW
|
||||
afd
|
||||
aTz
|
||||
afd
|
||||
vNP
|
||||
wiU
|
||||
nOr
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
afd
|
||||
vrQ
|
||||
apu
|
||||
arl
|
||||
asu
|
||||
atc
|
||||
eZh
|
||||
@@ -121196,15 +121335,15 @@ rNK
|
||||
cRv
|
||||
cRv
|
||||
cRv
|
||||
abW
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
aTz
|
||||
afd
|
||||
afd
|
||||
aTz
|
||||
afd
|
||||
aTz
|
||||
aTz
|
||||
fqh
|
||||
bOR
|
||||
gyQ
|
||||
|
||||
@@ -28019,6 +28019,34 @@
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/hallway/primary/port/north)
|
||||
"bDD" = (
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_y = -2;
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/nuclear_guide_spacing{
|
||||
pixel_x = 10;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_defusing{
|
||||
pixel_x = 9;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_operating{
|
||||
pixel_x = 8;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/alarm/directional/south,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"bDE" = (
|
||||
/obj/item/kirbyplants,
|
||||
/obj/machinery/status_display{
|
||||
@@ -35212,7 +35240,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/table,
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/item/toy/figure/crew/secofficer,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -40235,6 +40263,16 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"cju" = (
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"cjv" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cjw" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/recharger{
|
||||
pixel_x = -6;
|
||||
@@ -40247,27 +40285,8 @@
|
||||
pixel_x = 7;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"cjv" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cjw" = (
|
||||
/obj/structure/sign/securearea{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cjx" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cjy" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -40863,9 +40882,6 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
@@ -40901,10 +40917,13 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
|
||||
dir = 1
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"clf" = (
|
||||
@@ -41413,7 +41432,6 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"cmC" = (
|
||||
@@ -41437,18 +41455,8 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cmF" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/alarm/directional/south,
|
||||
/obj/item/gun/energy/laser/practice,
|
||||
/obj/item/gun/energy/laser/practice,
|
||||
/obj/item/clothing/ears/earmuffs,
|
||||
/obj/item/clothing/ears/earmuffs,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/nuclearbomb/training,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"cmG" = (
|
||||
@@ -44275,13 +44283,6 @@
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/hallway/primary/starboard/south)
|
||||
"cut" = (
|
||||
/obj/machinery/light,
|
||||
/obj/structure/sign/securearea{
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/range)
|
||||
"cuu" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
@@ -59862,6 +59863,14 @@
|
||||
icon_state = "whitebluefull"
|
||||
},
|
||||
/area/station/maintenance/starboard)
|
||||
"dxV" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/gun/energy/laser/practice,
|
||||
/obj/item/gun/energy/laser/practice,
|
||||
/obj/item/clothing/ears/earmuffs,
|
||||
/obj/item/clothing/ears/earmuffs,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"dyb" = (
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/theatre)
|
||||
@@ -67079,6 +67088,23 @@
|
||||
/obj/structure/cable,
|
||||
/turf/simulated/floor/plasteel/white,
|
||||
/area/station/science/explab)
|
||||
"eOg" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/obj/item/clothing/head/welding{
|
||||
pixel_x = 9;
|
||||
pixel_y = 10
|
||||
},
|
||||
/obj/item/multitool{
|
||||
pixel_x = -6;
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/item/storage/toolbox/mechanical{
|
||||
pixel_y = -2;
|
||||
pixel_x = -3
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"eOt" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/structure/cable{
|
||||
@@ -69896,6 +69922,19 @@
|
||||
dir = 5
|
||||
},
|
||||
/area/space/nearstation)
|
||||
"gAP" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"gAR" = (
|
||||
/obj/structure/closet/wardrobe/pjs,
|
||||
/obj/structure/cable{
|
||||
@@ -80599,7 +80638,6 @@
|
||||
"ngl" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/fancy/donut_box,
|
||||
/obj/item/toy/figure/crew/secofficer,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -92501,7 +92539,8 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/range)
|
||||
"tVV" = (
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -152270,9 +152309,9 @@ cgr
|
||||
hFc
|
||||
cgr
|
||||
jIs
|
||||
cjv
|
||||
iCU
|
||||
cjv
|
||||
eOg
|
||||
gAP
|
||||
bDD
|
||||
cjr
|
||||
brS
|
||||
bHF
|
||||
@@ -152529,7 +152568,7 @@ ccL
|
||||
jIs
|
||||
cjw
|
||||
tVO
|
||||
cjz
|
||||
dxV
|
||||
cjr
|
||||
eeN
|
||||
lnU
|
||||
@@ -152784,9 +152823,9 @@ ccM
|
||||
ceC
|
||||
cgo
|
||||
jIs
|
||||
cjx
|
||||
tVO
|
||||
cut
|
||||
cjv
|
||||
iCU
|
||||
cjv
|
||||
cjr
|
||||
cpa
|
||||
cqI
|
||||
|
||||
@@ -47039,13 +47039,25 @@
|
||||
/turf/simulated/floor/wood,
|
||||
/area/station/service/bar)
|
||||
"exm" = (
|
||||
/obj/effect/spawner/window/reinforced/grilled,
|
||||
/obj/structure/cable{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
/obj/machinery/door/airlock/security/glass,
|
||||
/obj/effect/mapping_helpers/airlock/autoname,
|
||||
/obj/effect/mapping_helpers/airlock/access/any/security/general,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/security/main)
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "redfull"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"exI" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/hand_labeler,
|
||||
@@ -48601,6 +48613,37 @@
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/legal/lawoffice)
|
||||
"ffH" = (
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_y = -2;
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_spacing{
|
||||
pixel_x = 10;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_defusing{
|
||||
pixel_x = 9;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/disk/nuclear/training{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/paper/nuclear_guide_operating{
|
||||
pixel_x = 8;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Defusal Workshop"
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 4;
|
||||
pixel_x = 24;
|
||||
name = "east bump"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"fga" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -49971,6 +50014,24 @@
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/station/maintenance/starboard)
|
||||
"fFo" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/radio/intercom{
|
||||
name = "south bump";
|
||||
pixel_y = -28
|
||||
},
|
||||
/obj/item/clothing/head/welding{
|
||||
pixel_x = -4;
|
||||
pixel_y = 19
|
||||
},
|
||||
/obj/item/multitool{
|
||||
pixel_x = 7;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/machinery/alarm/directional/east,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"fFL" = (
|
||||
/obj/machinery/atmospherics/meter,
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
|
||||
@@ -50216,12 +50277,12 @@
|
||||
/area/station/hallway/primary/central/north)
|
||||
"fJr" = (
|
||||
/obj/machinery/disposal,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/disposalpipe/trunk,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "darkred"
|
||||
},
|
||||
@@ -59769,6 +59830,23 @@
|
||||
"jKj" = (
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/engineering/ai_transit_tube)
|
||||
"jKG" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 10
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"jKP" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -60570,6 +60648,14 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/medical/virology)
|
||||
"jXY" = (
|
||||
/obj/machinery/nuclearbomb/training,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"jYj" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
|
||||
dir = 8;
|
||||
@@ -69542,6 +69628,9 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/external,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/engineering/control)
|
||||
"nEV" = (
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/security/defusal)
|
||||
"nFf" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
@@ -79380,6 +79469,21 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/station/security/permabrig)
|
||||
"rOj" = (
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/machinery/light_switch{
|
||||
dir = 4;
|
||||
name = "west bump";
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "red"
|
||||
},
|
||||
/area/station/security/defusal)
|
||||
"rOp" = (
|
||||
/obj/machinery/door/airlock/tranquillite{
|
||||
name = "Old Mime's Storage"
|
||||
@@ -79608,6 +79712,22 @@
|
||||
icon_state = "whitebluefull"
|
||||
},
|
||||
/area/station/medical/exam_room)
|
||||
"rUg" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/book/manual/wiki/hacking{
|
||||
pixel_x = 3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/machinery/power/apc/directional/east,
|
||||
/obj/structure/cable{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/station/security/defusal)
|
||||
"rUl" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
|
||||
@@ -83827,10 +83947,6 @@
|
||||
icon_state = "cafeteria"
|
||||
},
|
||||
/area/station/service/kitchen)
|
||||
"tNe" = (
|
||||
/obj/effect/spawner/random_spawners/wall_rusted_probably,
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/station/maintenance/fore)
|
||||
"tNg" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/simulated/floor/plasteel{
|
||||
@@ -88699,15 +88815,6 @@
|
||||
},
|
||||
/area/station/medical/surgery/observation)
|
||||
"vVR" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/screwdriver{
|
||||
pixel_x = -2;
|
||||
pixel_y = 18
|
||||
},
|
||||
/obj/item/wirecutters{
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_state = "red"
|
||||
@@ -124916,7 +125023,7 @@ aaa
|
||||
aaa
|
||||
laH
|
||||
aaa
|
||||
apO
|
||||
sRw
|
||||
fJr
|
||||
hwP
|
||||
vgv
|
||||
@@ -125174,11 +125281,11 @@ aaa
|
||||
laH
|
||||
abq
|
||||
apO
|
||||
jSU
|
||||
apO
|
||||
nEV
|
||||
nEV
|
||||
exm
|
||||
apO
|
||||
apO
|
||||
nEV
|
||||
nEV
|
||||
xyP
|
||||
apO
|
||||
apO
|
||||
@@ -125431,11 +125538,11 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
laH
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
tNe
|
||||
nEV
|
||||
jXY
|
||||
jKG
|
||||
rOj
|
||||
nEV
|
||||
oQV
|
||||
ajg
|
||||
jiR
|
||||
@@ -125688,11 +125795,11 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
laH
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
ahH
|
||||
nEV
|
||||
ffH
|
||||
rUg
|
||||
fFo
|
||||
nEV
|
||||
alW
|
||||
akR
|
||||
aDY
|
||||
@@ -125945,11 +126052,11 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
laH
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
ahH
|
||||
nEV
|
||||
nEV
|
||||
nEV
|
||||
nEV
|
||||
nEV
|
||||
aDY
|
||||
wLB
|
||||
cnV
|
||||
@@ -126207,8 +126314,8 @@ abq
|
||||
abq
|
||||
abq
|
||||
ajg
|
||||
ajg
|
||||
aVY
|
||||
ahH
|
||||
ahH
|
||||
ajg
|
||||
aWv
|
||||
cXu
|
||||
|
||||
@@ -46,9 +46,11 @@
|
||||
#define WIRE_BOMB_ACTIVATE "Activate" // Will start a bombs timer if pulsed, will hint if pulsed while already active, will stop a timer a bomb on cut.
|
||||
|
||||
// Nuclear bomb
|
||||
#define WIRE_BOMB_LIGHT "Bomb Light"
|
||||
#define WIRE_BOMB_TIMING "Bomb Timing"
|
||||
#define WIRE_BOMB_SAFETY "Bomb Safety"
|
||||
#define WIRE_NUKE_SAFETY "Safety"
|
||||
#define WIRE_NUKE_DETONATOR "Detonator"
|
||||
#define WIRE_NUKE_DISARM "Disarm"
|
||||
#define WIRE_NUKE_LIGHT "Lights"
|
||||
#define WIRE_NUKE_CONTROL "Control Panel"
|
||||
|
||||
// Particle accelerator
|
||||
#define WIRE_PARTICLE_POWER "Power Toggle" // Toggles whether the PA is on or not.
|
||||
|
||||
@@ -35,6 +35,9 @@ GLOBAL_LIST_EMPTY(beacons)
|
||||
GLOBAL_LIST_EMPTY(shuttle_caller_list) //list of all communication consoles, comms consoles circuit and AIs, for automatic shuttle calls when there are none.
|
||||
GLOBAL_LIST_EMPTY(tracked_implants) //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
|
||||
GLOBAL_LIST_EMPTY(pinpointer_list) //list of all pinpointers. Used to change stuff they are pointing to all at once.
|
||||
GLOBAL_LIST_EMPTY(nuke_list) //list of (real) nukes
|
||||
GLOBAL_LIST_EMPTY(syndi_nuke_list) //list of syndicate nukes
|
||||
GLOBAL_LIST_EMPTY(nad_list) //list of (real) nuclear authentication disks
|
||||
GLOBAL_LIST_EMPTY(nuclear_uplink_list) //list of all existing nuke ops uplinks
|
||||
GLOBAL_LIST_EMPTY(abductor_equipment) //list of all abductor equipment
|
||||
GLOBAL_LIST_EMPTY(global_intercoms) //list of all intercomms, across all z-levels
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
/datum/wires/nuclearbomb
|
||||
holder_type = /obj/machinery/nuclearbomb
|
||||
labelled = TRUE
|
||||
randomize = TRUE
|
||||
wire_count = 7 // 3 actual, 4 duds.
|
||||
wire_count = 5
|
||||
proper_name = "Nuclear bomb"
|
||||
|
||||
/datum/wires/nuclearbomb/New(atom/_holder)
|
||||
wires = list(WIRE_BOMB_LIGHT, WIRE_BOMB_TIMING, WIRE_BOMB_SAFETY)
|
||||
wires = list(WIRE_NUKE_SAFETY, WIRE_NUKE_DETONATOR, WIRE_NUKE_DISARM, WIRE_NUKE_LIGHT, WIRE_NUKE_CONTROL)
|
||||
return ..()
|
||||
|
||||
/datum/wires/nuclearbomb/interactable(mob/user)
|
||||
@@ -18,39 +19,64 @@
|
||||
. = ..()
|
||||
var/obj/machinery/nuclearbomb/N = holder
|
||||
. += "The device is [N.timing ? "shaking!" : "still."]"
|
||||
. += "The device is [N.safety ? "quiet" : "whirring"]."
|
||||
. += "The lights are [N.lighthack ? "static" : "functional"]."
|
||||
. += "The control panel is [is_cut(WIRE_NUKE_CONTROL) ? "turned off" : "functional"]."
|
||||
. += "The disarm controls are [is_cut(WIRE_NUKE_DISARM) || is_cut(WIRE_NUKE_CONTROL) ? "disabled" : "functional"]."
|
||||
. += "The safety controls are [is_cut(WIRE_NUKE_SAFETY) || is_cut(WIRE_NUKE_CONTROL) ? "disabled" : "functional"]."
|
||||
. += "The lights are [is_cut(WIRE_NUKE_LIGHT) ? "static" : "functional"]."
|
||||
|
||||
/datum/wires/nuclearbomb/on_pulse(wire)
|
||||
var/obj/machinery/nuclearbomb/N = holder
|
||||
switch(wire)
|
||||
if(WIRE_BOMB_LIGHT)
|
||||
N.lighthack = !N.lighthack
|
||||
addtimer(CALLBACK(N, TYPE_PROC_REF(/obj/machinery/nuclearbomb, reset_lighthack_callback)), 10 SECONDS)
|
||||
if(WIRE_NUKE_SAFETY)
|
||||
if(!is_cut(WIRE_NUKE_CONTROL))
|
||||
N.audible_message("<span class='notice'>The safety controls flicker.</span>", hearing_distance = 1)
|
||||
|
||||
if(WIRE_BOMB_TIMING)
|
||||
if(WIRE_NUKE_DETONATOR)
|
||||
if(N.timing)
|
||||
message_admins("[key_name_admin(usr)] pulsed a nuclear bomb's detonation wire, causing it to explode (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
|
||||
if(!N.training)
|
||||
message_admins("[key_name_admin(usr)] pulsed a nuclear bomb's detonator wire, causing it to explode (<a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
|
||||
N.explode()
|
||||
else
|
||||
N.audible_message("<span class='warning'>[N] whirrs ominously.</span>", hearing_distance = 1)
|
||||
|
||||
if(WIRE_BOMB_SAFETY)
|
||||
N.safety = !N.safety
|
||||
addtimer(CALLBACK(N, TYPE_PROC_REF(/obj/machinery/nuclearbomb, reset_safety_callback)), 10 SECONDS)
|
||||
if(WIRE_NUKE_DISARM)
|
||||
if(N.timing && is_cut(WIRE_NUKE_CONTROL))
|
||||
if(!is_cut(WIRE_NUKE_LIGHT))
|
||||
N.icon_state = N.sprite_prefix + "nuclearbomb1"
|
||||
N.timing = FALSE
|
||||
N.audible_message("<span class='boldnotice'>The timer on [N] stops!</span>", hearing_distance = 1)
|
||||
N.update_icon(UPDATE_OVERLAYS)
|
||||
if(!N.training)
|
||||
GLOB.bomb_set = FALSE
|
||||
if(!N.is_syndicate && !N.training)
|
||||
SSsecurity_level.set_level(N.previous_level)
|
||||
else if(N.timing && !is_cut(WIRE_NUKE_CONTROL))
|
||||
N.audible_message("<span class='boldnotice'>The disarm controls flash with an error. You need to disable the control panel first!</span>", hearing_distance = 1)
|
||||
else if(!is_cut(WIRE_NUKE_CONTROL))
|
||||
N.audible_message("<span class='notice'>The disarm controls flicker.</span>", hearing_distance = 1)
|
||||
|
||||
if(WIRE_NUKE_LIGHT)
|
||||
N.audible_message("<span class='notice'>The lights on [N] flicker.</span>", hearing_distance = 1)
|
||||
flick(N.sprite_prefix + "nuclearbombc", N)
|
||||
|
||||
if(WIRE_NUKE_CONTROL)
|
||||
N.audible_message("<span class='notice'>[N]'s control panel flickers.</span>", hearing_distance = 1)
|
||||
|
||||
/datum/wires/nuclearbomb/on_cut(wire, mend)
|
||||
var/obj/machinery/nuclearbomb/N = holder
|
||||
switch(wire)
|
||||
if(WIRE_BOMB_SAFETY)
|
||||
if(N.timing)
|
||||
message_admins("[key_name_admin(usr)] cut a nuclear bomb's timing wire, causing it to explode (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
|
||||
if(WIRE_NUKE_DETONATOR)
|
||||
if(N.timing && !mend)
|
||||
if(!N.training)
|
||||
message_admins("[key_name_admin(usr)] cut a nuclear bomb's detonator wire, causing it to explode (<a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
|
||||
N.explode()
|
||||
|
||||
if(WIRE_BOMB_TIMING)
|
||||
if(!N.lighthack)
|
||||
if(N.icon_state == "nuclearbomb2")
|
||||
N.icon_state = "nuclearbomb1"
|
||||
N.timing = FALSE
|
||||
GLOB.bomb_set = FALSE
|
||||
|
||||
if(WIRE_BOMB_LIGHT)
|
||||
N.lighthack = !N.lighthack
|
||||
if(WIRE_NUKE_LIGHT)
|
||||
if(!mend)
|
||||
N.icon_state = N.sprite_prefix + "nuclearbomb0"
|
||||
if(mend)
|
||||
if(N.timing)
|
||||
N.icon_state = N.sprite_prefix + "nuclearbomb2"
|
||||
else
|
||||
N.icon_state = N.sprite_prefix + "nuclearbomb1"
|
||||
N.update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
/datum/wires
|
||||
/// TRUE if the wires will be different every time a new wire datum is created.
|
||||
var/randomize = FALSE
|
||||
/// TRUE if the wires are labelled for every user
|
||||
var/labelled = FALSE
|
||||
/// The atom the wires belong too. For example: an airlock.
|
||||
var/atom/holder
|
||||
/// The holder type; used to make sure that the holder is the correct type.
|
||||
@@ -281,6 +283,8 @@
|
||||
var/can_probably_see_wires = FALSE
|
||||
var/obj/item/held_item = user.get_active_hand()
|
||||
var/obj/item/offhand = user.get_inactive_hand()
|
||||
if(labelled)
|
||||
can_probably_see_wires = TRUE
|
||||
if(istype(held_item) && HAS_TRAIT(held_item, TRAIT_SHOW_WIRE_INFO))
|
||||
can_probably_see_wires = TRUE
|
||||
if(istype(offhand) && HAS_TRAIT(offhand, TRAIT_SHOW_WIRE_INFO))
|
||||
|
||||
@@ -106,6 +106,10 @@
|
||||
name = "\improper Firing Range"
|
||||
icon_state = "firingrange"
|
||||
|
||||
/area/station/security/defusal
|
||||
name = "\improper Defusal Workshop"
|
||||
icon_state = "defusal"
|
||||
|
||||
// Checkpoints
|
||||
|
||||
/area/station/security/checkpoint
|
||||
|
||||
@@ -15,7 +15,7 @@ GLOBAL_VAR(bomb_set)
|
||||
name = "\improper Nuclear Fission Explosive"
|
||||
desc = "Uh oh. RUN!!!!"
|
||||
icon = 'icons/obj/nuclearbomb.dmi'
|
||||
icon_state = "nuclearbomb0"
|
||||
icon_state = "nuclearbomb1"
|
||||
density = TRUE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
flags_2 = NO_MALF_EFFECT_2 | CRITICAL_ATOM_2
|
||||
@@ -25,8 +25,6 @@ GLOBAL_VAR(bomb_set)
|
||||
|
||||
/// Are our bolts *supposed* to be in the floor, may not actually cause anchoring if the bolts are cut
|
||||
var/extended = TRUE
|
||||
/// If true, prevents the lights on the nuke
|
||||
var/lighthack = FALSE
|
||||
/// Countdown to boom
|
||||
var/timeleft = 120
|
||||
/// Are we counting down?
|
||||
@@ -55,6 +53,10 @@ GLOBAL_VAR(bomb_set)
|
||||
var/core_stage = NUKE_CORE_EVERYTHING_FINE
|
||||
///How many sheets of various metals we need to fix it
|
||||
var/sheets_to_fix = 5
|
||||
/// Is this a training bomb?
|
||||
var/training = FALSE
|
||||
/// Prefix to add, if any, on icon states for this bomb
|
||||
var/sprite_prefix = ""
|
||||
///Bombs Internal Radio
|
||||
var/obj/item/radio/radio
|
||||
|
||||
@@ -70,9 +72,10 @@ GLOBAL_VAR(bomb_set)
|
||||
. = ..()
|
||||
r_code = rand(10000, 99999) // Creates a random code upon object spawn.
|
||||
wires = new/datum/wires/nuclearbomb(src)
|
||||
ADD_TRAIT(src, TRAIT_OBSCURED_WIRES, ROUNDSTART_TRAIT)
|
||||
previous_level = SSsecurity_level.get_current_level_as_text()
|
||||
GLOB.poi_list |= src
|
||||
if(!training)
|
||||
GLOB.poi_list |= src
|
||||
GLOB.nuke_list |= src
|
||||
core = new /obj/item/nuke_core/plutonium(src)
|
||||
STOP_PROCESSING(SSobj, core) //Let us not irradiate the vault by default.
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
@@ -81,14 +84,26 @@ GLOBAL_VAR(bomb_set)
|
||||
radio.follow_target = src
|
||||
radio.config(list("Special Ops" = 0))
|
||||
|
||||
/obj/machinery/nuclearbomb/syndicate/Initialize()
|
||||
. = ..()
|
||||
wires.labelled = FALSE
|
||||
ADD_TRAIT(src, TRAIT_OBSCURED_WIRES, ROUNDSTART_TRAIT)
|
||||
GLOB.syndi_nuke_list |= src
|
||||
|
||||
/obj/machinery/nuclearbomb/Destroy()
|
||||
SStgui.close_uis(wires)
|
||||
QDEL_NULL(wires)
|
||||
QDEL_NULL(core)
|
||||
QDEL_NULL(radio)
|
||||
GLOB.poi_list.Remove(src)
|
||||
if(!training)
|
||||
GLOB.poi_list.Remove(src)
|
||||
GLOB.nuke_list.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/nuclearbomb/syndicate/Destroy()
|
||||
GLOB.syndi_nuke_list.Remove(src)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/nuclearbomb/process()
|
||||
if(timing)
|
||||
GLOB.bomb_set = TRUE // So long as there is one nuke timing, it means one nuke is armed.
|
||||
@@ -99,6 +114,8 @@ GLOBAL_VAR(bomb_set)
|
||||
|
||||
/obj/machinery/nuclearbomb/examine(mob/user)
|
||||
. = ..()
|
||||
if(training)
|
||||
. += "<span class='notice'><b>Alt-Click</b> to reset the bomb.</span>"
|
||||
if(!panel_open)
|
||||
. += "<span class='notice'>The outer panel is <b>screwed shut</b>.</span>"
|
||||
switch(removal_stage)
|
||||
@@ -126,15 +143,15 @@ GLOBAL_VAR(bomb_set)
|
||||
underlays.Cut()
|
||||
set_light(0)
|
||||
|
||||
if(!lighthack)
|
||||
underlays += emissive_appearance(icon, "nuclearbomb_lightmask")
|
||||
if(!wires.is_cut(WIRE_NUKE_LIGHT))
|
||||
underlays += emissive_appearance(icon, sprite_prefix + "nukelights_lightmask")
|
||||
set_light(1, LIGHTING_MINIMUM_POWER)
|
||||
|
||||
if(panel_open)
|
||||
. += "hackpanel_open"
|
||||
. += sprite_prefix + "hackpanel_open"
|
||||
|
||||
if(anchored) // Using anchored due to removal_stage deanchoring having multiple steps
|
||||
. += "nukebolts"
|
||||
. += sprite_prefix + "nukebolts"
|
||||
|
||||
// Selected stage lets us show the open core, even if the front panel is closed
|
||||
var/selected_stage = removal_stage
|
||||
@@ -151,6 +168,12 @@ GLOBAL_VAR(bomb_set)
|
||||
/obj/machinery/nuclearbomb/attackby(obj/item/O as obj, mob/user as mob, params)
|
||||
if(istype(O, /obj/item/disk/nuclear))
|
||||
if(extended)
|
||||
if(auth)
|
||||
to_chat(user, "<span class='warning'>There's already a disk in the slot!</span>")
|
||||
return
|
||||
if((istype(O, /obj/item/disk/nuclear/training) && !training) || (training && !istype(O, /obj/item/disk/nuclear/training)))
|
||||
to_chat(user, "<span class='warning'>[O] doesn't fit into [src]!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
to_chat(user, "<span class='notice'>[O] is stuck to your hand!</span>")
|
||||
return
|
||||
@@ -212,12 +235,15 @@ GLOBAL_VAR(bomb_set)
|
||||
if(!I.tool_use_check(user, 0))
|
||||
return
|
||||
if(removal_stage == NUKE_COVER_OFF)
|
||||
user.visible_message("[user] starts forcing open the bolt covers on [src].", "You start forcing open the anchoring bolt covers with [I]...")
|
||||
user.visible_message("<span class='notice'>[user] starts forcing open the bolt covers on [src].</span>", "<span class='notice'>You start forcing open the anchoring bolt covers with [I]...</span>")
|
||||
if(!I.use_tool(src, user, 15, volume = I.tool_volume) || removal_stage != NUKE_COVER_OFF)
|
||||
return
|
||||
user.visible_message("[user] forces open the bolt covers on [src].", "You force open the bolt covers.")
|
||||
user.visible_message("<span class='notice'>[user] forces open the bolt covers on [src].</span>", "<span class='notice'>You force open the bolt covers.</span>")
|
||||
removal_stage = NUKE_COVER_OPEN
|
||||
if(removal_stage == NUKE_CORE_EVERYTHING_FINE)
|
||||
if(training)
|
||||
to_chat(user, "<span class='notice'>This is where you'd take off the plate to access the internal core, but this training bomb doesn't have one.</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] starts removing [src]'s outer core plate...</span>", "<span class='notice'>You start removing [src]'s outer core plate...</span>")
|
||||
if(!I.use_tool(src, user, 4 SECONDS, volume = I.tool_volume) || removal_stage != NUKE_CORE_EVERYTHING_FINE)
|
||||
return
|
||||
@@ -235,10 +261,10 @@ GLOBAL_VAR(bomb_set)
|
||||
if(core)
|
||||
START_PROCESSING(SSobj, core)
|
||||
if(removal_stage == NUKE_UNWRENCHED)
|
||||
user.visible_message("[user] begins lifting [src] off of the anchors.", "You begin lifting the device off the anchors...")
|
||||
user.visible_message("<span class='notice'>[user] begins lifting [src] off of the anchors.</span>", "<span class='notice'>You begin lifting the device off the anchors...</span>")
|
||||
if(!I.use_tool(src, user, 8 SECONDS, volume = I.tool_volume) || removal_stage != NUKE_UNWRENCHED)
|
||||
return
|
||||
user.visible_message("[user] crowbars [src] off of the anchors. It can now be moved.", "You jam the crowbar under the nuclear device and lift it off its anchors. You can now move it!")
|
||||
user.visible_message("<span class='notice'>[user] crowbars [src] off of the anchors. It can now be moved.</span>", "<span class='notice'>You jam the crowbar under the nuclear device and lift it off its anchors. You can now move it!</span>")
|
||||
anchored = FALSE
|
||||
removal_stage = NUKE_MOBILE
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
@@ -251,10 +277,10 @@ GLOBAL_VAR(bomb_set)
|
||||
. = TRUE
|
||||
if(!I.tool_use_check(user, 0))
|
||||
return
|
||||
user.visible_message("[user] begins unwrenching the anchoring bolts on [src].", "You begin unwrenching the anchoring bolts...")
|
||||
user.visible_message("<span class='notice'>[user] begins unwrenching the anchoring bolts on [src].</span>", "<span class='notice'>You begin unwrenching the anchoring bolts...</span>")
|
||||
if(!I.use_tool(src, user, 50, volume = I.tool_volume) || removal_stage != NUKE_SEALANT_OPEN)
|
||||
return
|
||||
user.visible_message("[user] unwrenches the anchoring bolts on [src].", "You unwrench the anchoring bolts.")
|
||||
user.visible_message("<span class='notice'>[user] unwrenches the anchoring bolts on [src].</span>", "<span class='notice'>You unwrench the anchoring bolts.</span>")
|
||||
removal_stage = NUKE_UNWRENCHED
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
@@ -273,23 +299,23 @@ GLOBAL_VAR(bomb_set)
|
||||
if(auth || (istype(I, /obj/item/screwdriver/nuke) && !is_syndicate))
|
||||
if(!panel_open)
|
||||
panel_open = TRUE
|
||||
to_chat(user, "You unscrew the control panel of [src].")
|
||||
to_chat(user, "<span class='notice'>You unscrew the control panel of [src].</span>")
|
||||
anchor_stage = removal_stage
|
||||
removal_stage = core_stage
|
||||
else
|
||||
panel_open = FALSE
|
||||
to_chat(user, "You screw the control panel of [src] back on.")
|
||||
to_chat(user, "<span class='notice'>You screw the control panel of [src] back on.</span>")
|
||||
core_stage = removal_stage
|
||||
removal_stage = anchor_stage
|
||||
else
|
||||
if(!panel_open)
|
||||
to_chat(user, "[src] emits a buzzing noise, the panel staying locked in.")
|
||||
to_chat(user, "<span class='warning'>[src] emits a buzzing noise, the panel staying locked in.</span>")
|
||||
if(panel_open)
|
||||
panel_open = FALSE
|
||||
to_chat(user, "You screw the control panel of [src] back on.")
|
||||
to_chat(user, "<span class='notice'>You screw the control panel of [src] back on.</span>")
|
||||
core_stage = removal_stage
|
||||
removal_stage = anchor_stage
|
||||
flick("nuclearbombc", src)
|
||||
flick(sprite_prefix + "nuclearbombc", src)
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/machinery/nuclearbomb/wirecutter_act(mob/user, obj/item/I)
|
||||
@@ -397,6 +423,8 @@ GLOBAL_VAR(bomb_set)
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/is_auth(mob/user)
|
||||
if(auth)
|
||||
if(istype(auth, /obj/item/disk/nuclear/training) && !training)
|
||||
return FALSE
|
||||
return TRUE
|
||||
else if(user.can_admin_interact())
|
||||
return TRUE
|
||||
@@ -409,6 +437,9 @@ GLOBAL_VAR(bomb_set)
|
||||
. = TRUE
|
||||
if(exploded)
|
||||
return
|
||||
if(wires.is_cut(WIRE_NUKE_CONTROL))
|
||||
to_chat(usr, "<span class='warning'>The control panel isn't responding! Something must be wrong with its wiring!</span>")
|
||||
return FALSE
|
||||
switch(action)
|
||||
if("deploy")
|
||||
if(removal_stage != NUKE_MOBILE)
|
||||
@@ -416,9 +447,9 @@ GLOBAL_VAR(bomb_set)
|
||||
visible_message("<span class='warning'>With a steely snap, bolts slide out of [src] and anchor it to the flooring!</span>")
|
||||
else
|
||||
visible_message("<span class='warning'>[src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.</span>")
|
||||
if(!lighthack)
|
||||
flick("nuclearbombc", src)
|
||||
icon_state = "nuclearbomb1"
|
||||
if(!wires.is_cut(WIRE_NUKE_LIGHT))
|
||||
flick(sprite_prefix + "nuclearbombc", src)
|
||||
icon_state = sprite_prefix + "nuclearbomb1"
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
extended = TRUE
|
||||
return
|
||||
@@ -433,6 +464,8 @@ GLOBAL_VAR(bomb_set)
|
||||
else
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/disk/nuclear))
|
||||
if((istype(I, /obj/item/disk/nuclear/training) && !training) || (training && !istype(I, /obj/item/disk/nuclear/training)))
|
||||
return
|
||||
usr.drop_item()
|
||||
I.forceMove(src)
|
||||
auth = I
|
||||
@@ -491,43 +524,57 @@ GLOBAL_VAR(bomb_set)
|
||||
return
|
||||
timeleft = time
|
||||
if("toggle_safety")
|
||||
if(wires.is_cut(WIRE_NUKE_SAFETY))
|
||||
to_chat(usr, "<span class='warning'>The safety isn't responding! Something must be wrong with its wiring!</span>")
|
||||
return FALSE
|
||||
safety = !(safety)
|
||||
if(safety)
|
||||
if(!is_syndicate)
|
||||
if(!is_syndicate && !training)
|
||||
SSsecurity_level.set_level(previous_level)
|
||||
timing = FALSE
|
||||
GLOB.bomb_set = FALSE
|
||||
if(!training)
|
||||
GLOB.bomb_set = FALSE
|
||||
if("toggle_armed")
|
||||
if(safety)
|
||||
to_chat(usr, "<span class='notice'>The safety is still on.</span>")
|
||||
return
|
||||
if(!core)
|
||||
if(!core && !training)
|
||||
to_chat(usr, "<span class='danger'>[src]'s screen blinks red! There is no plutonium core in [src]!</span>")
|
||||
return
|
||||
timing = !(timing)
|
||||
if(timing)
|
||||
if(!lighthack)
|
||||
icon_state = "nuclearbomb2"
|
||||
if(!timing)
|
||||
if(wires.is_cut(WIRE_NUKE_DETONATOR))
|
||||
to_chat(usr, "<span class='warning'>[src] isn't arming! Something must be wrong with its wiring!</span>")
|
||||
return FALSE
|
||||
timing = TRUE
|
||||
if(!wires.is_cut(WIRE_NUKE_LIGHT))
|
||||
icon_state = sprite_prefix + "nuclearbomb2"
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
if(!safety)
|
||||
if(!safety && !training)
|
||||
message_admins("[key_name_admin(usr)] engaged a nuclear bomb [ADMIN_JMP(src)]")
|
||||
if(!is_syndicate && SSsecurity_level.get_current_level_as_number() != SEC_LEVEL_EPSILON)
|
||||
SSsecurity_level.set_level(SEC_LEVEL_DELTA)
|
||||
GLOB.bomb_set = TRUE // There can still be issues with this resetting when there are multiple bombs. Not a big deal though for Nuke
|
||||
if(SSsecurity_level.get_current_level_as_number() == SEC_LEVEL_EPSILON)
|
||||
radio.autosay("<span class='reallybig'>The Nuclear Bomb has been armed, retreat from the station immediately!</span>", name, "Special Ops")
|
||||
else
|
||||
else if(!training)
|
||||
GLOB.bomb_set = TRUE
|
||||
else
|
||||
if(!is_syndicate)
|
||||
if(wires.is_cut(WIRE_NUKE_DISARM))
|
||||
to_chat(usr, "<span class='warning'>[src] isn't disarming! Something must be wrong with its wiring!</span>")
|
||||
return FALSE
|
||||
timing = FALSE
|
||||
if(!is_syndicate && !training)
|
||||
SSsecurity_level.set_level(previous_level)
|
||||
GLOB.bomb_set = FALSE
|
||||
if(!lighthack)
|
||||
icon_state = "nuclearbomb1"
|
||||
if(!training)
|
||||
GLOB.bomb_set = FALSE
|
||||
if(!wires.is_cut(WIRE_NUKE_LIGHT))
|
||||
icon_state = sprite_prefix + "nuclearbomb1"
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
|
||||
/obj/machinery/nuclearbomb/blob_act(obj/structure/blob/B)
|
||||
if(training)
|
||||
qdel(src)
|
||||
return
|
||||
if(exploded)
|
||||
return
|
||||
if(timing) //boom
|
||||
@@ -567,16 +614,19 @@ GLOBAL_VAR(bomb_set)
|
||||
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/explode()
|
||||
if(training)
|
||||
atom_say("You've triggered the detonate wire. You are dead.")
|
||||
return
|
||||
if(safety)
|
||||
timing = FALSE
|
||||
return
|
||||
exploded = TRUE
|
||||
yes_code = FALSE
|
||||
safety = TRUE
|
||||
if(!lighthack)
|
||||
icon_state = "nuclearbomb3"
|
||||
if(!wires.is_cut(WIRE_NUKE_LIGHT))
|
||||
icon_state = sprite_prefix + "nuclearbomb3"
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
playsound(src,'sound/machines/alarm.ogg',100,0,5)
|
||||
playsound(src, 'sound/machines/alarm.ogg', 100, FALSE, 5)
|
||||
if(SSticker && SSticker.mode)
|
||||
SSticker.mode.explosion_in_progress = TRUE
|
||||
SSticker.event_blackbox(outcome = ROUND_END_NUCLEAR)
|
||||
@@ -618,23 +668,6 @@ GLOBAL_VAR(bomb_set)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/reset_lighthack_callback()
|
||||
lighthack = !lighthack
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/reset_safety_callback()
|
||||
safety = !safety
|
||||
if(safety == 1)
|
||||
if(!is_syndicate)
|
||||
SSsecurity_level.set_level(previous_level)
|
||||
visible_message("<span class='notice'>[src] quiets down.</span>")
|
||||
if(!lighthack)
|
||||
if(icon_state == "nuclearbomb2")
|
||||
icon_state = "nuclearbomb1"
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
else
|
||||
visible_message("<span class='notice'>[src] emits a quiet whirling noise!</span>")
|
||||
|
||||
//==========DAT FUKKEN DISK===============
|
||||
/obj/item/disk/nuclear
|
||||
name = "nuclear authentication disk"
|
||||
@@ -645,6 +678,8 @@ GLOBAL_VAR(bomb_set)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
/// Is the disk restricted to the station? If true, also respawns the disk when deleted
|
||||
var/restricted_to_station = TRUE
|
||||
/// Is this a training disk?
|
||||
var/training = FALSE
|
||||
|
||||
/obj/item/disk/nuclear/unrestricted
|
||||
name = "unrestricted nuclear authentication disk"
|
||||
@@ -655,7 +690,9 @@ GLOBAL_VAR(bomb_set)
|
||||
..()
|
||||
if(restricted_to_station)
|
||||
START_PROCESSING(SSobj, src)
|
||||
GLOB.poi_list |= src
|
||||
if(!training)
|
||||
GLOB.poi_list |= src
|
||||
GLOB.nad_list |= src
|
||||
|
||||
/obj/item/disk/nuclear/process()
|
||||
if(!restricted_to_station)
|
||||
@@ -682,26 +719,32 @@ GLOBAL_VAR(bomb_set)
|
||||
/obj/item/disk/nuclear/Destroy(force)
|
||||
var/turf/diskturf = get_turf(src)
|
||||
|
||||
if(training)
|
||||
return ..()
|
||||
|
||||
if(force)
|
||||
message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]).")
|
||||
message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]).")
|
||||
log_game("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]).")
|
||||
GLOB.poi_list.Remove(src)
|
||||
GLOB.nad_list.Remove(src)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
if(!restricted_to_station) // Non-restricted NADs should be allowed to be deleted, otherwise it becomes a restricted NAD when teleported
|
||||
message_admins("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]). It will not respawn.")
|
||||
message_admins("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]). It will not respawn.")
|
||||
log_game("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]). It will not respawn.")
|
||||
GLOB.poi_list.Remove(src)
|
||||
GLOB.nad_list.Remove(src)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
var/turf/new_spawn = find_respawn()
|
||||
if(new_spawn)
|
||||
GLOB.poi_list.Remove(src)
|
||||
GLOB.nad_list.Remove(src)
|
||||
var/obj/item/disk/nuclear/NEWDISK = new(new_spawn)
|
||||
transfer_fingerprints_to(NEWDISK)
|
||||
message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[NEWDISK.x];Y=[NEWDISK.y];Z=[NEWDISK.z]'>JMP</a>).")
|
||||
message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[NEWDISK.x];Y=[NEWDISK.y];Z=[NEWDISK.z]'>JMP</a>).")
|
||||
log_game("[src] has been destroyed in ([diskturf.x], [diskturf.y], [diskturf.z]). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z]).")
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW // We want this to be deleted ASAP, but we want refs properly cleared too
|
||||
@@ -720,6 +763,54 @@ GLOBAL_VAR(bomb_set)
|
||||
if(length(open_turfs))
|
||||
return pick(open_turfs)
|
||||
|
||||
/// MARK: TRAINING NUKE
|
||||
|
||||
/obj/machinery/nuclearbomb/training
|
||||
name = "training nuclear bomb"
|
||||
desc = "A fake nuke used to practice nuclear device operations. \
|
||||
The '1' key on the keypad appears to be significantly more worn than the other keys."
|
||||
icon_state = "t_nuclearbomb1"
|
||||
resistance_flags = null
|
||||
training = TRUE
|
||||
sprite_prefix = "t_"
|
||||
|
||||
/obj/machinery/nuclearbomb/training/Initialize()
|
||||
. = ..()
|
||||
r_code = 11111 //Uuh.. one!
|
||||
qdel(core)
|
||||
|
||||
/obj/machinery/nuclearbomb/training/process()
|
||||
if(timing)
|
||||
timeleft = max(timeleft - 2, 0) // 2 seconds per process()
|
||||
if(timeleft <= 0)
|
||||
INVOKE_ASYNC(src, PROC_REF(training_detonation))
|
||||
|
||||
/obj/machinery/nuclearbomb/training/blob_act(obj/structure/blob/B)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/nuclearbomb/training/AltClick(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='notice'>You hit the reset button on [src].</span>")
|
||||
training_reset()
|
||||
|
||||
/obj/machinery/nuclearbomb/training/proc/training_detonation()
|
||||
atom_say("Nuclear device detonated. Resetting...")
|
||||
training_reset()
|
||||
|
||||
/obj/machinery/nuclearbomb/training/proc/training_reset()
|
||||
if(auth)
|
||||
auth.forceMove(get_turf(src))
|
||||
new /obj/machinery/nuclearbomb/training(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/disk/nuclear/training
|
||||
name = "training authentication disk"
|
||||
desc = "The code is 11111."
|
||||
icon_state = "trainingdisk"
|
||||
resistance_flags = null
|
||||
restricted_to_station = FALSE
|
||||
training = TRUE
|
||||
|
||||
#undef NUKE_INTACT
|
||||
#undef NUKE_COVER_OFF
|
||||
#undef NUKE_COVER_OPEN
|
||||
|
||||
@@ -96,15 +96,15 @@
|
||||
|
||||
/obj/item/pinpointer/proc/scandisk()
|
||||
if(!the_disk)
|
||||
the_disk = locate() in GLOB.poi_list
|
||||
the_disk = locate() in GLOB.nad_list
|
||||
|
||||
/obj/item/pinpointer/proc/scanbomb()
|
||||
if(!syndicate)
|
||||
if(!the_bomb)
|
||||
the_bomb = locate() in GLOB.poi_list
|
||||
the_bomb = locate() in GLOB.nuke_list
|
||||
else
|
||||
if(!the_s_bomb)
|
||||
the_s_bomb = locate() in GLOB.poi_list
|
||||
the_s_bomb = locate() in GLOB.syndi_nuke_list
|
||||
|
||||
/obj/item/pinpointer/proc/point_at_target(atom/target)
|
||||
if(!target)
|
||||
|
||||
@@ -106,6 +106,11 @@
|
||||
protected_jobs = list("Captain")
|
||||
location_override = "the Captain's Office"
|
||||
|
||||
/datum/theft_objective/nukedisc/check_special_completion(obj/item/I)
|
||||
if(istype(I, /obj/item/disk/nuclear/training)) //Haha no
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/theft_objective/reactive
|
||||
name = "any type of reactive armor"
|
||||
typepath = /obj/item/clothing/suit/armor/reactive
|
||||
|
||||
@@ -660,6 +660,42 @@
|
||||
header = "<p><img style='display: block; margin-left: auto; margin-right: auto;' src='ntlogo.png' width='220' height='135' /></p><hr />"
|
||||
info = ""
|
||||
|
||||
/obj/item/paper/nuclear_guide_operating
|
||||
name = "nuclear guide : 'Operating the Nuclear Device'"
|
||||
info = "<b>ARMING THE NUCLEAR DEVICE</b><hr /> \
|
||||
1. Insert the NAD. <br> \
|
||||
2. Enter the code provided by Central Command. For this training device, the code is 11111.<br> \
|
||||
3. (Optional) Set a specific timer for detonation. Default and minimum is 2 minutes.<br> \
|
||||
4. Disable the safety.<br> \
|
||||
5. Arm the nuclear device.<br> \
|
||||
6. Take out the NAD to ensure the device stays armed.<hr /> \
|
||||
<b>DISARMING THE NUCLEAR DEVICE</b><hr /> \
|
||||
Follow step 1 and 2, then hit the disarm. If you have the NAD but don't know the code, refer to the Defusing guide. If you have neither, refer to the Spacing guide."
|
||||
|
||||
/obj/item/paper/nuclear_guide_defusing
|
||||
name = "nuclear guide : 'Defusing the Nuclear Device'"
|
||||
info = "<b>DEFUSING THE NUCLEAR DEVICE</b><hr /> \
|
||||
<b>IF YOU DON'T HAVE THE NAD :</b> Refer to the Spacing guide, you cannot defuse the nuclear device.<hr /> \
|
||||
1. Insert the NAD. <br> \
|
||||
2. Use a SCREWDRIVER and open the device's panel.<br> \
|
||||
3. CUT the CONTROL wire using WIRECUTTERS to short out the control panel and bypass it.<br>\
|
||||
4. PULSE the DISARM wire using a MULTITOOL to stop the bomb's timer.<hr /> \
|
||||
<b>WARNING</b> : Nuclear devices deployed by hostile operatives will likely have unlabelled wires.<br> \
|
||||
PULSING or CUTTING the DETONATOR wire will prematurely detonate the bomb if the timer is active.<br> \
|
||||
Depending on the timer left on the bomb, try your luck or refer to the Spacing guide."
|
||||
|
||||
/obj/item/paper/nuclear_guide_spacing
|
||||
name = "nuclear guide : 'Spacing the Nuclear Device'"
|
||||
info = "<b>SPACING THE NUCLEAR DEVICE</b><hr /> \
|
||||
To be used on assets of hostile operatives only. Any loss of NT nuclear devices following this guide will be charged as Grand Theft per Space Law.<hr /> \
|
||||
1. Ensure the device's access panel is closed. Use a screwdriver to close it if it isn't. <br> \
|
||||
2. Use a WELDING TOOL to cut the anchoring bolt covers.<br> \
|
||||
3. Use a CROWBAR to pry the bolts open.<br> \
|
||||
4. Use a WELDING TOOL to cut the anchoring system sealant.<br> \
|
||||
5. Use a WRENCH to unwrench the anchoring bolts.<br> \
|
||||
6. Use a CROWBAR to pry the nuclear device off its anchors.<br> \
|
||||
7. DRAG the nuclear device to the closest opening to SPACE, and PUSH it away from the station."
|
||||
|
||||
/obj/item/paper/central_command
|
||||
name = "paper"
|
||||
header ="<p><img style='display: block; margin-left: auto; margin-right: auto;' src='ntlogo.png' alt='' width='220' height='135' /></p><hr /><h3 style='text-align: center;font-family: Verdana;'><b> Nanotrasen Central Command</h3><p style='text-align: center;font-family:Verdana;'>Official Expedited Memorandum</p></b><hr />"
|
||||
|
||||
@@ -51,6 +51,16 @@
|
||||
build_path = /obj/item/disk/tech_disk
|
||||
category = list("Miscellaneous")
|
||||
|
||||
/datum/design/training_disk
|
||||
name = "Training Authentification Disk"
|
||||
desc = "Replacement authentication disk for the nuclear training bomb."
|
||||
id = "training_nad"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/disk/nuclear/training
|
||||
category = list("Miscellaneous")
|
||||
|
||||
/datum/design/digital_camera
|
||||
name = "Digital Camera"
|
||||
desc = "Produce an enhanced version of the standard issue camera."
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user