mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
[MIRROR] Security modsuit update [MDB IGNORE] (#13914)
* Security modsuit update (#67131) * Security modsuit update Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
This commit is contained in:
co-authored by
Fikou
Tom
Gandalf
parent
9ff9ded26f
commit
80ef449df1
@@ -1266,13 +1266,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/starboard)
|
||||
"apK" = (
|
||||
/obj/machinery/computer/prisoner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/command/heads_quarters/hos)
|
||||
"apL" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/crowbar,
|
||||
@@ -8098,6 +8091,16 @@
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/virology)
|
||||
"cdT" = (
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/mod/module/plasma_stabilizer,
|
||||
/obj/item/mod/module/thermal_regulator,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"cec" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -16140,14 +16143,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/checkpoint/medical)
|
||||
"eyX" = (
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"ezd" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -30431,20 +30426,6 @@
|
||||
/obj/structure/table/glass,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"iuQ" = (
|
||||
/obj/machinery/door/window/brigdoor/security/cell/right/directional/west{
|
||||
id = "brig1";
|
||||
name = "Cell 1";
|
||||
req_access = list("brig")
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/brig)
|
||||
"ivd" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -40173,6 +40154,13 @@
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/prison)
|
||||
"kZE" = (
|
||||
/obj/machinery/computer/prisoner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/command/heads_quarters/hos)
|
||||
"kZP" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/grimy,
|
||||
@@ -50274,20 +50262,6 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/storage)
|
||||
"nKk" = (
|
||||
/obj/machinery/door/window/brigdoor/security/cell/right/directional/west{
|
||||
id = "brig2";
|
||||
name = "Cell 2";
|
||||
req_access = list("brig")
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/brig)
|
||||
"nKD" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -54573,16 +54547,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/lab)
|
||||
"oPY" = (
|
||||
/obj/structure/closet/secure_closet/bar{
|
||||
req_access = list("bar")
|
||||
},
|
||||
/obj/item/storage/photo_album/bar,
|
||||
/obj/item/radio/intercom/directional/east,
|
||||
/obj/item/storage/dice,
|
||||
/obj/machinery/light/small/directional/east,
|
||||
/turf/open/floor/iron/checker,
|
||||
/area/station/service/bar)
|
||||
"oQp" = (
|
||||
/obj/structure/chair/office/light{
|
||||
dir = 1
|
||||
@@ -61755,6 +61719,14 @@
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/surgery/theatre)
|
||||
"qMh" = (
|
||||
/obj/structure/closet/secure_closet/bar,
|
||||
/obj/item/storage/photo_album/bar,
|
||||
/obj/item/radio/intercom/directional/east,
|
||||
/obj/item/storage/dice,
|
||||
/obj/machinery/light/small/directional/east,
|
||||
/turf/open/floor/iron/checker,
|
||||
/area/station/service/bar)
|
||||
"qMm" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/secure/safe/directional/north,
|
||||
@@ -62534,19 +62506,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark/airless,
|
||||
/area/station/science/mixing/chamber)
|
||||
"qZM" = (
|
||||
/obj/machinery/light/directional/north,
|
||||
/obj/structure/sign/nanotrasen{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/camera/directional/north{
|
||||
c_tag = "Security - Office Fore"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"qZQ" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
dir = 8
|
||||
@@ -72865,6 +72824,19 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos)
|
||||
"tHH" = (
|
||||
/obj/machinery/door/window/brigdoor/security/cell/right/directional/west{
|
||||
id = "brig2";
|
||||
name = "Cell 2"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/brig)
|
||||
"tHK" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -74071,6 +74043,19 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"tWJ" = (
|
||||
/obj/machinery/door/window/brigdoor/security/cell/right/directional/west{
|
||||
id = "brig1";
|
||||
name = "Cell 1"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/brig)
|
||||
"tWU" = (
|
||||
/obj/effect/turf_decal/siding/green{
|
||||
dir = 1
|
||||
@@ -87692,6 +87677,20 @@
|
||||
/obj/machinery/duct,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/station/service/kitchen/coldroom)
|
||||
"xAy" = (
|
||||
/obj/machinery/light/directional/north,
|
||||
/obj/structure/sign/nanotrasen{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/machinery/camera/directional/north{
|
||||
c_tag = "Security - Office Fore"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/kirbyplants/random,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"xAB" = (
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron,
|
||||
@@ -128940,7 +128939,7 @@ qAV
|
||||
qAV
|
||||
qAV
|
||||
jfn
|
||||
oPY
|
||||
qMh
|
||||
cfp
|
||||
qAV
|
||||
oAC
|
||||
@@ -141044,11 +141043,11 @@ qIH
|
||||
qIH
|
||||
qIH
|
||||
iDc
|
||||
iuQ
|
||||
tWJ
|
||||
iDc
|
||||
fJq
|
||||
iDc
|
||||
nKk
|
||||
tHH
|
||||
iDc
|
||||
fJq
|
||||
vGn
|
||||
@@ -143084,7 +143083,7 @@ eXG
|
||||
qWZ
|
||||
aaa
|
||||
cjN
|
||||
qZM
|
||||
xAy
|
||||
sHr
|
||||
oYP
|
||||
upa
|
||||
@@ -143341,7 +143340,7 @@ kAx
|
||||
omM
|
||||
aad
|
||||
cjN
|
||||
eyX
|
||||
cdT
|
||||
nsG
|
||||
fzl
|
||||
dLg
|
||||
@@ -146173,7 +146172,7 @@ kOA
|
||||
obW
|
||||
bVP
|
||||
fbW
|
||||
apK
|
||||
kZE
|
||||
vWh
|
||||
kOA
|
||||
kOA
|
||||
|
||||
@@ -22667,6 +22667,15 @@
|
||||
/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/atmos/pumproom)
|
||||
"hoZ" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/mod/module/plasma_stabilizer,
|
||||
/obj/item/mod/module/thermal_regulator,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/turf/open/floor/iron/dark/textured_half{
|
||||
dir = 1
|
||||
},
|
||||
/area/station/security/office)
|
||||
"hpd" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/engine_smes)
|
||||
@@ -32426,6 +32435,31 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/underground/explored)
|
||||
"kss" = (
|
||||
/obj/machinery/camera/directional/west{
|
||||
c_tag = "Security - HoS Office"
|
||||
},
|
||||
/obj/item/flashlight/lamp/green{
|
||||
on = 0;
|
||||
pixel_x = -6;
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = 8;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/stamp/hos{
|
||||
pixel_x = 10;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/machinery/recharger{
|
||||
pixel_x = -4;
|
||||
pixel_y = -1
|
||||
},
|
||||
/obj/machinery/airalarm/directional/west,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/command/heads_quarters/hos)
|
||||
"ksu" = (
|
||||
/mob/living/simple_animal/hostile/asteroid/gutlunch,
|
||||
/turf/open/misc/asteroid/snow/icemoon,
|
||||
@@ -49004,31 +49038,6 @@
|
||||
/obj/effect/spawner/structure/window,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/science/xenobiology)
|
||||
"pNb" = (
|
||||
/obj/machinery/camera/directional/west{
|
||||
c_tag = "Security - HoS Office"
|
||||
},
|
||||
/obj/item/flashlight/lamp/green{
|
||||
on = 0;
|
||||
pixel_x = -6;
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = 8;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/stamp/hos{
|
||||
pixel_x = 10;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/machinery/recharger{
|
||||
pixel_x = -4;
|
||||
pixel_y = -1
|
||||
},
|
||||
/obj/machinery/airalarm/directional/west,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/command/heads_quarters/hos)
|
||||
"pNj" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -50939,13 +50948,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/vacant_room/commissary)
|
||||
"qsX" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/turf/open/floor/iron/dark/textured_half{
|
||||
dir = 1
|
||||
},
|
||||
/area/station/security/office)
|
||||
"qta" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/turf/open/floor/plating,
|
||||
@@ -233626,7 +233628,7 @@ nbp
|
||||
mhx
|
||||
jeF
|
||||
egm
|
||||
qsX
|
||||
hoZ
|
||||
wGW
|
||||
tJN
|
||||
cBJ
|
||||
@@ -234917,7 +234919,7 @@ nbp
|
||||
mgU
|
||||
ffJ
|
||||
oxJ
|
||||
pNb
|
||||
kss
|
||||
azx
|
||||
tDw
|
||||
sVW
|
||||
|
||||
@@ -2157,6 +2157,18 @@
|
||||
/obj/structure/grille,
|
||||
/turf/open/openspace,
|
||||
/area/station/hallway/primary/tram/center)
|
||||
"aZP" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"aZX" = (
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/line{
|
||||
dir = 1
|
||||
@@ -7605,6 +7617,15 @@
|
||||
/obj/effect/spawner/random/engineering/flashlight,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/maintenance/starboard/lesser)
|
||||
"cGf" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"cGm" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
@@ -12930,6 +12951,16 @@
|
||||
/obj/machinery/airalarm/directional/south,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/dorms)
|
||||
"esN" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/mapping_helpers/airlock/unres{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"esQ" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/obj/effect/turf_decal/siding/thinplating/dark{
|
||||
@@ -13801,14 +13832,6 @@
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/command)
|
||||
"eJo" = (
|
||||
/obj/structure/closet/secure_closet/bar{
|
||||
req_access = list("bar")
|
||||
},
|
||||
/obj/item/stack/spacecash/c100,
|
||||
/obj/item/stack/spacecash/c10,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/bar)
|
||||
"eJI" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
@@ -15800,6 +15823,18 @@
|
||||
/obj/item/clothing/mask/breath,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos)
|
||||
"fvo" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/center)
|
||||
"fvA" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/table,
|
||||
@@ -16799,19 +16834,6 @@
|
||||
/obj/machinery/firealarm/directional/north,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/xenobiology)
|
||||
"fOd" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"fOs" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/flashlight/lamp,
|
||||
@@ -18092,19 +18114,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"glk" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/center)
|
||||
"glm" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/obj/machinery/firealarm/directional/west,
|
||||
@@ -23980,16 +23989,6 @@
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/service/chapel/monastery)
|
||||
"ila" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"ilh" = (
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line{
|
||||
dir = 8
|
||||
@@ -24567,14 +24566,6 @@
|
||||
/obj/effect/turf_decal/trimline/purple/filled/corner,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/research)
|
||||
"ivZ" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"iwh" = (
|
||||
/obj/effect/turf_decal/sand/plating,
|
||||
/obj/structure/sign/poster/contraband/rebels_unite{
|
||||
@@ -26950,6 +26941,12 @@
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/security/armory)
|
||||
"jlY" = (
|
||||
/obj/structure/closet/secure_closet/bar,
|
||||
/obj/item/stack/spacecash/c100,
|
||||
/obj/item/stack/spacecash/c10,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/bar)
|
||||
"jmA" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -28648,14 +28645,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/prison)
|
||||
"jOF" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/hallway/primary/tram/right)
|
||||
"jOM" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
dir = 4
|
||||
@@ -32200,16 +32189,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"kVw" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/toy/crayon/spraycan{
|
||||
pixel_x = -4
|
||||
},
|
||||
/obj/machinery/light/directional/west,
|
||||
/turf/open/floor/iron/grimy,
|
||||
/area/station/service/library/lounge)
|
||||
"kVy" = (
|
||||
/obj/structure/extinguisher_cabinet/directional/north,
|
||||
/turf/open/floor/iron/dark,
|
||||
@@ -50847,17 +50826,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/engineering/engine_smes)
|
||||
"rjD" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/mapping_helpers/airlock/unres{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"rkd" = (
|
||||
/obj/effect/turf_decal/trimline/green/filled/line{
|
||||
dir = 8
|
||||
@@ -54314,19 +54282,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/storage)
|
||||
"srb" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch";
|
||||
req_one_access = null
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/center)
|
||||
"sre" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible,
|
||||
@@ -54593,6 +54548,13 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/dorms)
|
||||
"swk" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/hallway/primary/tram/left)
|
||||
"swo" = (
|
||||
/obj/machinery/requests_console/directional/west,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -58862,6 +58824,18 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/fitness/recreation)
|
||||
"tSV" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Ladder Access Hatch"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/catwalk_floor,
|
||||
/area/station/hallway/primary/tram/center)
|
||||
"tTp" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/structure/grille,
|
||||
@@ -67026,6 +67000,12 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"wKy" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/mod/module/plasma_stabilizer,
|
||||
/obj/item/mod/module/thermal_regulator,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"wKF" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
@@ -67997,6 +67977,16 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/maintenance/radshelter/service)
|
||||
"xcw" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/toy/crayon/spraycan{
|
||||
pixel_x = -4
|
||||
},
|
||||
/obj/machinery/light/directional/west,
|
||||
/turf/open/floor/iron/grimy,
|
||||
/area/station/service/library/lounge)
|
||||
"xcC" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/wrench,
|
||||
@@ -68217,10 +68207,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/room)
|
||||
"xfW" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"xgb" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
@@ -105047,7 +105033,7 @@ rBQ
|
||||
hFr
|
||||
dhe
|
||||
sDo
|
||||
eJo
|
||||
jlY
|
||||
hmZ
|
||||
gpr
|
||||
sDo
|
||||
@@ -152640,7 +152626,7 @@ iOi
|
||||
iOi
|
||||
iOi
|
||||
rAS
|
||||
kVw
|
||||
xcw
|
||||
gsT
|
||||
uJk
|
||||
mNV
|
||||
@@ -154665,7 +154651,7 @@ lWh
|
||||
jYE
|
||||
kXI
|
||||
fMN
|
||||
ivZ
|
||||
swk
|
||||
yiM
|
||||
ook
|
||||
ook
|
||||
@@ -154675,7 +154661,7 @@ ook
|
||||
ook
|
||||
ook
|
||||
yiM
|
||||
rjD
|
||||
esN
|
||||
yiM
|
||||
fsZ
|
||||
jsO
|
||||
@@ -158998,7 +158984,7 @@ xWk
|
||||
uYx
|
||||
oUx
|
||||
ljw
|
||||
xfW
|
||||
wKy
|
||||
ljw
|
||||
ufY
|
||||
wwO
|
||||
@@ -159291,7 +159277,7 @@ rBK
|
||||
eIX
|
||||
vPD
|
||||
yiM
|
||||
fOd
|
||||
aZP
|
||||
yiM
|
||||
yiM
|
||||
cFs
|
||||
@@ -159301,7 +159287,7 @@ vVY
|
||||
cFs
|
||||
yiM
|
||||
yiM
|
||||
ila
|
||||
cGf
|
||||
yiM
|
||||
lTj
|
||||
mPq
|
||||
@@ -166744,7 +166730,7 @@ xAu
|
||||
pFP
|
||||
dqQ
|
||||
dJJ
|
||||
srb
|
||||
fvo
|
||||
izU
|
||||
izU
|
||||
eSz
|
||||
@@ -171370,7 +171356,7 @@ vpY
|
||||
wHg
|
||||
jaz
|
||||
dJJ
|
||||
glk
|
||||
tSV
|
||||
izU
|
||||
izU
|
||||
eSz
|
||||
@@ -183449,7 +183435,7 @@ vPB
|
||||
vrV
|
||||
pUv
|
||||
bMb
|
||||
jOF
|
||||
qDK
|
||||
bMb
|
||||
vUE
|
||||
vUE
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
/// Called when a projectile dampener captures an object.
|
||||
#define COMSIG_DAMPENER_CAPTURE "dampener_capture"
|
||||
/// Called when a projectile dampener releases an object.
|
||||
#define COMSIG_DAMPENER_RELEASE "dampener_release"
|
||||
+40
-37
@@ -1,7 +1,7 @@
|
||||
|
||||
//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second.
|
||||
//Only use square radius for this!
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener
|
||||
/datum/proximity_monitor/advanced/projectile_dampener
|
||||
var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south")
|
||||
var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north")
|
||||
var/static/image/edgeturf_west = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west")
|
||||
@@ -11,43 +11,33 @@
|
||||
var/static/image/northeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast")
|
||||
var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast")
|
||||
var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic")
|
||||
var/obj/item/borg/projectile_dampen/projector = null
|
||||
var/list/obj/projectile/tracked = list()
|
||||
var/list/obj/projectile/staging = list()
|
||||
// lazylist that keeps track of the overlays added to the edge of the field
|
||||
var/list/edgeturf_effects
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, obj/item/borg/projectile_dampen/projector)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector)
|
||||
..()
|
||||
src.projector = projector
|
||||
RegisterSignal(projector, COMSIG_PARENT_QDELETING, .proc/on_projector_del)
|
||||
recalculate_field()
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/Destroy()
|
||||
projector = null
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/Destroy()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
for(var/obj/projectile/projectile in tracked)
|
||||
release_projectile(projectile)
|
||||
return ..()
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/process()
|
||||
if(!istype(projector))
|
||||
qdel(src)
|
||||
return
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/process()
|
||||
var/list/ranged = list()
|
||||
for(var/obj/projectile/P in range(current_range, get_turf(host)))
|
||||
ranged += P
|
||||
for(var/obj/projectile/P in tracked)
|
||||
if(!(P in ranged) || !P.loc)
|
||||
release_projectile(P)
|
||||
for(var/mob/living/silicon/robot/R in range(current_range, get_turf(host)))
|
||||
if(R.has_buckled_mobs())
|
||||
for(var/mob/living/L in R.buckled_mobs)
|
||||
L.visible_message(span_warning("[L] is knocked off of [R] by the charge in [R]'s chassis induced by the hyperkinetic dampener field!")) //I know it's bad.
|
||||
L.Paralyze(10)
|
||||
R.unbuckle_mob(L)
|
||||
do_sparks(5, 0, L)
|
||||
for(var/obj/projectile/projectile in range(current_range, get_turf(host)))
|
||||
ranged += projectile
|
||||
for(var/obj/projectile/projectile in tracked)
|
||||
if(!(projectile in ranged) || !projectile.loc)
|
||||
release_projectile(projectile)
|
||||
..()
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/setup_edge_turf(turf/target)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/setup_edge_turf(turf/target)
|
||||
. = ..()
|
||||
var/image/overlay = get_edgeturf_overlay(get_edgeturf_direction(target))
|
||||
var/obj/effect/abstract/effect = new(target) // Makes the field visible to players.
|
||||
@@ -58,14 +48,14 @@
|
||||
effect.plane = ABOVE_GAME_PLANE
|
||||
LAZYSET(edgeturf_effects, target, effect)
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/cleanup_edge_turf(turf/target)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/cleanup_edge_turf(turf/target)
|
||||
. = ..()
|
||||
var/obj/effect/abstract/effect = LAZYACCESS(edgeturf_effects, target)
|
||||
LAZYREMOVE(edgeturf_effects, target)
|
||||
if(effect)
|
||||
qdel(effect)
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/proc/get_edgeturf_overlay(direction)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/proc/get_edgeturf_overlay(direction)
|
||||
switch(direction)
|
||||
if(NORTH)
|
||||
return edgeturf_north
|
||||
@@ -86,24 +76,37 @@
|
||||
else
|
||||
return generic_edge
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/proc/capture_projectile(obj/projectile/P, track_projectile = TRUE)
|
||||
if(P in tracked)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/proc/capture_projectile(obj/projectile/projectile)
|
||||
if(projectile in tracked)
|
||||
return
|
||||
projector.dampen_projectile(P, track_projectile)
|
||||
if(track_projectile)
|
||||
tracked += P
|
||||
SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, projectile)
|
||||
tracked += projectile
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/proc/release_projectile(obj/projectile/P)
|
||||
projector.restore_projectile(P)
|
||||
tracked -= P
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/proc/release_projectile(obj/projectile/projectile)
|
||||
SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, projectile)
|
||||
tracked -= projectile
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_uncrossed(atom/movable/movable, turf/location)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
qdel(src)
|
||||
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/location)
|
||||
if(istype(movable, /obj/projectile) && get_dist(movable, host) > current_range)
|
||||
if(movable in tracked)
|
||||
release_projectile(movable)
|
||||
else
|
||||
capture_projectile(movable, FALSE)
|
||||
|
||||
/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_crossed(atom/movable/movable, turf/location)
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location)
|
||||
if(istype(movable, /obj/projectile) && !(movable in tracked))
|
||||
capture_projectile(movable)
|
||||
|
||||
/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/process(delta_time)
|
||||
for(var/mob/living/silicon/robot/borg in range(current_range, get_turf(host)))
|
||||
if(!borg.has_buckled_mobs())
|
||||
continue
|
||||
for(var/mob/living/buckled_mob in borg.buckled_mobs)
|
||||
buckled_mob.visible_message(span_warning("[buckled_mob] is knocked off of [borg] by the charge in [borg]'s chassis induced by the hyperkinetic dampener field!")) //I know it's bad.
|
||||
buckled_mob.Paralyze(1 SECONDS)
|
||||
borg.unbuckle_mob(buckled_mob)
|
||||
do_sparks(5, 0, buckled_mob)
|
||||
..()
|
||||
@@ -20,11 +20,12 @@
|
||||
deploy_bodybag(user, target)
|
||||
|
||||
/obj/item/bodybag/proc/deploy_bodybag(mob/user, atom/location)
|
||||
var/obj/structure/closet/body_bag/R = new unfoldedbag_path(location)
|
||||
R.open(user)
|
||||
R.add_fingerprint(user)
|
||||
R.foldedbag_instance = src
|
||||
var/obj/structure/closet/body_bag/item_bag = new unfoldedbag_path(location)
|
||||
item_bag.open(user)
|
||||
item_bag.add_fingerprint(user)
|
||||
item_bag.foldedbag_instance = src
|
||||
moveToNullspace()
|
||||
return item_bag
|
||||
|
||||
/obj/item/bodybag/suicide_act(mob/user)
|
||||
if(isopenturf(user.loc))
|
||||
@@ -62,15 +63,16 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/bodybag/bluespace/deploy_bodybag(mob/user, atom/location)
|
||||
var/obj/structure/closet/body_bag/R = new unfoldedbag_path(location)
|
||||
for(var/atom/movable/A in contents)
|
||||
A.forceMove(R)
|
||||
if(isliving(A))
|
||||
to_chat(A, span_notice("You suddenly feel air around you! You're free!"))
|
||||
R.open(user)
|
||||
R.add_fingerprint(user)
|
||||
R.foldedbag_instance = src
|
||||
var/obj/structure/closet/body_bag/item_bag = new unfoldedbag_path(location)
|
||||
for(var/atom/movable/inside in contents)
|
||||
inside.forceMove(item_bag)
|
||||
if(isliving(inside))
|
||||
to_chat(inside, span_notice("You suddenly feel air around you! You're free!"))
|
||||
item_bag.open(user)
|
||||
item_bag.add_fingerprint(user)
|
||||
item_bag.foldedbag_instance = src
|
||||
moveToNullspace()
|
||||
return item_bag
|
||||
|
||||
/obj/item/bodybag/bluespace/container_resist_act(mob/living/user)
|
||||
if(user.incapacitated())
|
||||
@@ -113,10 +115,14 @@
|
||||
icon_state = "prisonerenvirobag_folded"
|
||||
unfoldedbag_path = /obj/structure/closet/body_bag/environmental/prisoner
|
||||
|
||||
/obj/item/bodybag/environmental/prisoner/pressurized
|
||||
name = "pressurized prisoner transport bag"
|
||||
unfoldedbag_path = /obj/structure/closet/body_bag/environmental/prisoner/pressurized
|
||||
|
||||
/obj/item/bodybag/environmental/prisoner/syndicate
|
||||
name = "syndicate prisoner transport bag"
|
||||
desc = "An alteration of Nanotrasen's environmental protection bag which has been used in several high-profile kidnappings. Designed to keep a victim unconscious, alive, and secured until they are transported to a required location."
|
||||
icon = 'icons/obj/bodybag.dmi'
|
||||
icon_state = "syndieenvirobag_folded"
|
||||
unfoldedbag_path = /obj/structure/closet/body_bag/environmental/prisoner/syndicate
|
||||
unfoldedbag_path = /obj/structure/closet/body_bag/environmental/prisoner/pressurized/syndicate
|
||||
resistance_flags = ACID_PROOF | FIRE_PROOF | FREEZE_PROOF | LAVA_PROOF
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#define PKBORG_DAMPEN_CYCLE_DELAY (2 SECONDS)
|
||||
#define PKBORG_DAMPEN_CYCLE_DELAY 2 SECONDS
|
||||
|
||||
/obj/item/cautery/prt //it's a subtype of cauteries so that it inherits the cautery sprites and behavior and stuff, because I'm too lazy to make sprites for this thing
|
||||
name = "plating repair tool"
|
||||
@@ -30,7 +30,7 @@
|
||||
/// The owner of the dampener
|
||||
var/mob/living/silicon/robot/host = null
|
||||
/// The field
|
||||
var/datum/proximity_monitor/advanced/peaceborg_dampener/dampening_field
|
||||
var/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/dampening_field
|
||||
var/projectile_damage_coefficient = 0.5
|
||||
/// Energy cost per tracked projectile damage amount per second
|
||||
var/projectile_damage_tick_ecost_coefficient = 10
|
||||
@@ -96,6 +96,8 @@
|
||||
QDEL_NULL(dampening_field)
|
||||
var/mob/living/silicon/robot/owner = get_host()
|
||||
dampening_field = new(owner, field_radius, TRUE, src)
|
||||
RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, .proc/dampen_projectile)
|
||||
RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, .proc/restore_projectile)
|
||||
owner?.model.allow_riding = FALSE
|
||||
active = TRUE
|
||||
|
||||
@@ -158,11 +160,8 @@
|
||||
host.cell.use(energy_recharge * delta_time * energy_recharge_cyborg_drain_coefficient)
|
||||
energy += energy_recharge * delta_time
|
||||
|
||||
/obj/item/borg/projectile_dampen/proc/dampen_projectile(obj/projectile/projectile, track_projectile = TRUE)
|
||||
if(tracked[projectile])
|
||||
return
|
||||
if(track_projectile)
|
||||
tracked[projectile] = projectile.damage
|
||||
/obj/item/borg/projectile_dampen/proc/dampen_projectile(obj/projectile/projectile)
|
||||
tracked[projectile] = projectile.damage
|
||||
projectile.damage *= projectile_damage_coefficient
|
||||
projectile.speed *= projectile_speed_coefficient
|
||||
projectile.add_overlay(projectile_effect)
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
mob_storage_capacity = 1
|
||||
contents_pressure_protection = 0.8
|
||||
contents_thermal_insulation = 0.5
|
||||
foldedbag_path = /obj/item/bodybag/environmental/
|
||||
foldedbag_path = /obj/item/bodybag/environmental
|
||||
var/list/weather_protection = list(TRAIT_ASHSTORM_IMMUNE, TRAIT_RADSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE, TRAIT_VOIDSTORM_IMMUNE) // Does not protect against lava or the The Floor Is Lava spell.
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/Initialize(mapload)
|
||||
@@ -181,7 +181,7 @@
|
||||
icon_state = "ntenvirobag"
|
||||
contents_pressure_protection = 1
|
||||
contents_thermal_insulation = 1
|
||||
foldedbag_path = /obj/item/bodybag/environmental/nanotrasen/
|
||||
foldedbag_path = /obj/item/bodybag/environmental/nanotrasen
|
||||
weather_protection = list(TRAIT_WEATHER_IMMUNE)
|
||||
|
||||
/// Securable enviro. bags
|
||||
@@ -191,7 +191,7 @@
|
||||
desc = "Intended for transport of prisoners through hazardous environments, this environmental protection bag comes with straps to keep an occupant secure."
|
||||
icon = 'icons/obj/bodybag.dmi'
|
||||
icon_state = "prisonerenvirobag"
|
||||
foldedbag_path = /obj/item/bodybag/environmental/prisoner/
|
||||
foldedbag_path = /obj/item/bodybag/environmental/prisoner
|
||||
breakout_time = 4 MINUTES // because it's probably about as hard to get out of this as it is to get out of a straightjacket.
|
||||
/// How long it takes to sinch the bag.
|
||||
var/sinch_time = 10 SECONDS
|
||||
@@ -301,7 +301,55 @@
|
||||
log_game("[key_name(user)] [sinched ? "sinched":"unsinched"] secure environmental bag [src] at [AREACOORD(src)]")
|
||||
update_appearance()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized
|
||||
name = "pressurized prisoner transport bag"
|
||||
foldedbag_path = /obj/item/bodybag/environmental/prisoner/pressurized
|
||||
/// The contents of the gas to be distributed to an occupant once sinched down. Set in Initialize()
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/Initialize(mapload)
|
||||
. = ..()
|
||||
refresh_air()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/proc/refresh_air()
|
||||
air_contents = null
|
||||
air_contents = new(50) //liters
|
||||
air_contents.temperature = T20C
|
||||
|
||||
air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen)
|
||||
air_contents.gases[/datum/gas/oxygen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
|
||||
air_contents.gases[/datum/gas/nitrogen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/Destroy()
|
||||
if(air_contents)
|
||||
QDEL_NULL(air_contents)
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/return_air()
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/remove_air(amount)
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents.remove(amount) // The internals for this bag are bottomless.
|
||||
return ..(amount)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/return_analyzable_air()
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/togglelock(mob/living/user, silent)
|
||||
. = ..()
|
||||
if(sinched)
|
||||
for(var/mob/living/target in contents)
|
||||
to_chat(target, span_warning("You hear a faint hiss, and a white mist fills your vision..."))
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/syndicate
|
||||
name = "syndicate prisoner transport bag"
|
||||
desc = "An alteration of Nanotrasen's environmental protection bag which has been used in several high-profile kidnappings. Designed to keep a victim unconscious, alive, and secured during transport."
|
||||
icon = 'icons/obj/bodybag.dmi'
|
||||
@@ -312,14 +360,8 @@
|
||||
weather_protection = list(TRAIT_WEATHER_IMMUNE)
|
||||
breakout_time = 8 MINUTES
|
||||
sinch_time = 20 SECONDS
|
||||
// The contents of the gas to be distributed to an occupant once sinched down. Set in Initialize()
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
refresh_air()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/proc/refresh_air()
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/syndicate/refresh_air()
|
||||
air_contents = null
|
||||
air_contents = new(50) //liters
|
||||
air_contents.temperature = T20C
|
||||
@@ -327,33 +369,3 @@
|
||||
air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrous_oxide)
|
||||
air_contents.gases[/datum/gas/oxygen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
|
||||
air_contents.gases[/datum/gas/nitrous_oxide][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/Destroy()
|
||||
if(air_contents)
|
||||
QDEL_NULL(air_contents)
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/return_air()
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/remove_air(amount)
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents.remove(amount) // The internals for this bag are bottomless. Syndicate bluespace trickery.
|
||||
return ..(amount)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/return_analyzable_air()
|
||||
if(sinched)
|
||||
refresh_air()
|
||||
return air_contents
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/togglelock(mob/living/user, silent)
|
||||
. = ..()
|
||||
if(sinched)
|
||||
for(var/mob/living/target in contents)
|
||||
to_chat(target, span_warning("You hear a faint hiss, and a white mist fills your vision..."))
|
||||
|
||||
@@ -76,3 +76,11 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/illusion/escape/AttackingTarget()
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/illusion/mirage
|
||||
AIStatus = AI_OFF
|
||||
density = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/illusion/mirage/death(gibbed)
|
||||
do_sparks(rand(3, 6), FALSE, src)
|
||||
return ..()
|
||||
|
||||
@@ -615,8 +615,7 @@
|
||||
leading to an overall lower capacity for modules."
|
||||
default_skin = "security"
|
||||
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 25, BIO = 100, FIRE = 75, ACID = 75, WOUND = 15)
|
||||
siemens_coefficient = 0
|
||||
complexity_max = DEFAULT_MAX_COMPLEXITY - 5
|
||||
complexity_max = DEFAULT_MAX_COMPLEXITY - 3
|
||||
slowdown_inactive = 1
|
||||
slowdown_active = 0.5
|
||||
allowed_suit_storage = list(
|
||||
@@ -671,8 +670,6 @@
|
||||
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 40, BIO = 100, FIRE = 100, ACID = 95, WOUND = 15)
|
||||
resistance_flags = FIRE_PROOF
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
siemens_coefficient = 0
|
||||
complexity_max = DEFAULT_MAX_COMPLEXITY - 5
|
||||
slowdown_inactive = 0.75
|
||||
slowdown_active = 0.25
|
||||
allowed_suit_storage = list(
|
||||
|
||||
@@ -109,6 +109,8 @@
|
||||
/obj/item/mod/module/magnetic_harness,
|
||||
/obj/item/mod/module/flashlight,
|
||||
/obj/item/mod/module/pepper_shoulders,
|
||||
/obj/item/mod/module/criminalcapture,
|
||||
/obj/item/mod/module/dispenser/mirage,
|
||||
)
|
||||
|
||||
/obj/item/mod/control/pre_equipped/safeguard
|
||||
@@ -119,6 +121,8 @@
|
||||
/obj/item/mod/module/magnetic_harness,
|
||||
/obj/item/mod/module/flashlight,
|
||||
/obj/item/mod/module/jetpack,
|
||||
/obj/item/mod/module/megaphone,
|
||||
/obj/item/mod/module/projectile_dampener,
|
||||
/obj/item/mod/module/pepper_shoulders,
|
||||
)
|
||||
|
||||
|
||||
@@ -317,6 +317,7 @@
|
||||
balloon_alert(mod.wearer, "[dispensed] dispensed")
|
||||
playsound(src, 'sound/machines/click.ogg', 100, TRUE)
|
||||
drain_power(use_power_cost)
|
||||
return dispensed
|
||||
|
||||
///Longfall - Nullifies fall damage, removing charge instead.
|
||||
/obj/item/mod/module/longfall
|
||||
|
||||
@@ -219,3 +219,196 @@
|
||||
/obj/item/mod/module/holster/Destroy()
|
||||
QDEL_NULL(holstered)
|
||||
return ..()
|
||||
|
||||
///Megaphone - Lets you speak loud.
|
||||
/obj/item/mod/module/megaphone
|
||||
name = "MOD megaphone module"
|
||||
desc = "A microchip megaphone linked to a MODsuit, for very important purposes, like: loudness."
|
||||
icon_state = "megaphone"
|
||||
module_type = MODULE_TOGGLE
|
||||
complexity = 1
|
||||
use_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
|
||||
incompatible_modules = list(/obj/item/mod/module/megaphone)
|
||||
cooldown_time = 0.5 SECONDS
|
||||
/// List of spans we add to the speaker.
|
||||
var/list/voicespan = list(SPAN_COMMAND)
|
||||
|
||||
/obj/item/mod/module/megaphone/on_activation()
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
RegisterSignal(mod.wearer, COMSIG_MOB_SAY, .proc/handle_speech)
|
||||
|
||||
/obj/item/mod/module/megaphone/on_deactivation(display_message = TRUE, deleting = FALSE)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
UnregisterSignal(mod.wearer, COMSIG_MOB_SAY)
|
||||
|
||||
/obj/item/mod/module/megaphone/proc/handle_speech(datum/source, list/speech_args)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
speech_args[SPEECH_SPANS] |= voicespan
|
||||
drain_power(use_power_cost)
|
||||
|
||||
///Criminal Capture - Lets you put people in transport bags.
|
||||
/obj/item/mod/module/criminalcapture
|
||||
name = "MOD criminal capture module"
|
||||
desc = "The private security that had orders to take in people dead were quite \
|
||||
happy with their space-proofed suit, but for those who wanted to bring back \
|
||||
whomever their targets were still breathing needed a way to \"share\" the \
|
||||
space-proofing. And thus: criminal capture! Creates a prisoner transport bag \
|
||||
around the apprehended that has breathable atmos and even stabilizes critical \
|
||||
conditions."
|
||||
icon_state = "criminalcapture"
|
||||
module_type = MODULE_ACTIVE
|
||||
complexity = 2
|
||||
use_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
|
||||
incompatible_modules = list(/obj/item/mod/module/criminalcapture)
|
||||
cooldown_time = 0.5 SECONDS
|
||||
/// Max bag capacity.
|
||||
var/max_capacity = 3
|
||||
/// Time to capture a prisoner.
|
||||
var/capture_time = 1 SECONDS
|
||||
/// Time to pack a bodybag up.
|
||||
var/packup_time = 0.5 SECONDS
|
||||
/// List of our capture bags.
|
||||
var/list/criminal_capture_bags = list()
|
||||
|
||||
/obj/item/mod/module/criminalcapture/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/i in 1 to max_capacity)
|
||||
criminal_capture_bags += new /obj/structure/closet/body_bag/environmental/prisoner/pressurized(src)
|
||||
|
||||
/obj/item/mod/module/criminalcapture/on_select_use(atom/target)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(!mod.wearer.Adjacent(target))
|
||||
return
|
||||
if(isliving(target))
|
||||
var/mob/living/living_target = target
|
||||
var/turf/target_turf = get_turf(living_target)
|
||||
playsound(src, 'sound/items/zip.ogg', 25, TRUE)
|
||||
if(!do_after(mod.wearer, capture_time, target = living_target))
|
||||
balloon_alert(mod.wearer, "interrupted!")
|
||||
return
|
||||
var/obj/structure/closet/body_bag/environmental/prisoner/dropped_bag = pop(criminal_capture_bags)
|
||||
dropped_bag.forceMove(target_turf)
|
||||
dropped_bag.close()
|
||||
living_target.forceMove(dropped_bag)
|
||||
else if(istype(target, /obj/structure/closet/body_bag/environmental/prisoner) || istype(target, /obj/item/bodybag/environmental/prisoner))
|
||||
var/obj/item/bodybag/environmental/prisoner/bag = target
|
||||
if(criminal_capture_bags.len >= max_capacity)
|
||||
balloon_alert(mod.wearer, "bag limit reached!")
|
||||
return
|
||||
playsound(src, 'sound/items/zip.ogg', 25, TRUE)
|
||||
if(!do_after(mod.wearer, packup_time, target = bag))
|
||||
balloon_alert(mod.wearer, "interrupted!")
|
||||
return
|
||||
if(criminal_capture_bags.len >= max_capacity)
|
||||
balloon_alert(mod.wearer, "bag limit reached!")
|
||||
return
|
||||
if(locate(/mob/living) in bag)
|
||||
balloon_alert(mod.wearer, "living creatures inside!")
|
||||
return
|
||||
if(istype(bag, /obj/item/bodybag/environmental/prisoner))
|
||||
bag = bag.deploy_bodybag(mod.wearer, get_turf(bag))
|
||||
var/obj/structure/closet/body_bag/environmental/prisoner/structure_bag = bag
|
||||
if(!structure_bag.opened)
|
||||
structure_bag.open(mod.wearer, force = TRUE)
|
||||
bag.forceMove(src)
|
||||
criminal_capture_bags += bag
|
||||
balloon_alert(mod.wearer, "bag stored")
|
||||
else
|
||||
balloon_alert(mod.wearer, "invalid target!")
|
||||
|
||||
///Mirage grenade dispenser - Dispenses grenades that copy the user's appearance.
|
||||
/obj/item/mod/module/dispenser/mirage
|
||||
name = "MOD mirage grenade dispenser module"
|
||||
desc = "This module can create mirage grenades at the user's liking. These grenades create holographic copies of the user."
|
||||
icon_state = "mirage_grenade"
|
||||
cooldown_time = 20 SECONDS
|
||||
overlay_state_inactive = "module_mirage_grenade"
|
||||
dispense_type = /obj/item/grenade/mirage
|
||||
|
||||
/obj/item/mod/module/dispenser/mirage/on_use()
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
var/obj/item/grenade/mirage/grenade = .
|
||||
grenade.arm_grenade(mod.wearer)
|
||||
|
||||
/obj/item/grenade/mirage
|
||||
name = "mirage grenade"
|
||||
desc = "A special device that, when activated, produces a holographic copy of the user."
|
||||
icon_state = "mirage"
|
||||
inhand_icon_state = "flashbang"
|
||||
det_time = 3 SECONDS
|
||||
/// Mob that threw the grenade.
|
||||
var/mob/living/thrower
|
||||
|
||||
/obj/item/grenade/mirage/arm_grenade(mob/user, delayoverride, msg, volume)
|
||||
. = ..()
|
||||
thrower = user
|
||||
|
||||
/obj/item/grenade/mirage/detonate(mob/living/lanced_by)
|
||||
. = ..()
|
||||
do_sparks(rand(3, 6), FALSE, src)
|
||||
if(thrower)
|
||||
var/mob/living/simple_animal/hostile/illusion/mirage/mirage = new(get_turf(src))
|
||||
mirage.Copy_Parent(thrower, 15 SECONDS)
|
||||
qdel(src)
|
||||
|
||||
///Projectile Dampener - Weakens projectiles in range.
|
||||
/obj/item/mod/module/projectile_dampener
|
||||
name = "MOD projectile dampener module"
|
||||
desc = "Using technology from peaceborgs, this module weakens all projectiles in nearby range."
|
||||
icon_state = "projectile_dampener"
|
||||
module_type = MODULE_TOGGLE
|
||||
complexity = 3
|
||||
active_power_cost = DEFAULT_CHARGE_DRAIN
|
||||
incompatible_modules = list(/obj/item/mod/module/projectile_dampener)
|
||||
cooldown_time = 1.5 SECONDS
|
||||
/// Radius of the dampening field.
|
||||
var/field_radius = 2
|
||||
/// Damage multiplier on projectiles.
|
||||
var/damage_multiplier = 0.75
|
||||
/// Speed multiplier on projectiles, higher means slower.
|
||||
var/speed_multiplier = 2.5
|
||||
/// List of all tracked projectiles.
|
||||
var/list/tracked_projectiles = list()
|
||||
/// Effect image on projectiles.
|
||||
var/image/projectile_effect
|
||||
/// The dampening field
|
||||
var/datum/proximity_monitor/advanced/projectile_dampener/dampening_field
|
||||
|
||||
/obj/item/mod/module/projectile_dampener/Initialize(mapload)
|
||||
. = ..()
|
||||
projectile_effect = image('icons/effects/fields.dmi', "projectile_dampen_effect")
|
||||
|
||||
/obj/item/mod/module/projectile_dampener/on_activation()
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(istype(dampening_field))
|
||||
QDEL_NULL(dampening_field)
|
||||
dampening_field = new(mod.wearer, field_radius, TRUE, src)
|
||||
RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, .proc/dampen_projectile)
|
||||
RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, .proc/release_projectile)
|
||||
|
||||
/obj/item/mod/module/projectile_dampener/on_deactivation(display_message, deleting = FALSE)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
QDEL_NULL(dampening_field)
|
||||
|
||||
/obj/item/mod/module/projectile_dampener/proc/dampen_projectile(datum/source, obj/projectile/projectile)
|
||||
projectile.damage *= damage_multiplier
|
||||
projectile.speed *= speed_multiplier
|
||||
projectile.add_overlay(projectile_effect)
|
||||
|
||||
/obj/item/mod/module/projectile_dampener/proc/release_projectile(datum/source, obj/projectile/projectile)
|
||||
projectile.damage /= damage_multiplier
|
||||
projectile.speed /= speed_multiplier
|
||||
projectile.cut_overlay(projectile_effect)
|
||||
|
||||
@@ -1071,6 +1071,7 @@
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/uranium = 2000, /datum/material/glass = 1000, /datum/material/plasma = 1000)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
|
||||
research_icon_state = "security-plating"
|
||||
build_type = PROTOLATHE
|
||||
|
||||
/datum/design/mod_plating/cosmohonk
|
||||
id = "mod_plating_cosmohonk"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 40 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
+2
-1
@@ -234,6 +234,7 @@
|
||||
#include "code\__DEFINES\dcs\signals\signals_object.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_operating_computer.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_painting.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_proxmonitor.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_radiation.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_reagent.dm"
|
||||
#include "code\__DEFINES\dcs\signals\signals_restaurant.dm"
|
||||
@@ -1180,7 +1181,7 @@
|
||||
#include "code\datums\proximity_monitor\field.dm"
|
||||
#include "code\datums\proximity_monitor\proximity_monitor.dm"
|
||||
#include "code\datums\proximity_monitor\fields\gravity.dm"
|
||||
#include "code\datums\proximity_monitor\fields\peaceborg_dampener.dm"
|
||||
#include "code\datums\proximity_monitor\fields\projectile_dampener.dm"
|
||||
#include "code\datums\proximity_monitor\fields\timestop.dm"
|
||||
#include "code\datums\quirks\_quirk.dm"
|
||||
#include "code\datums\quirks\good.dm"
|
||||
|
||||
Reference in New Issue
Block a user