[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:
SkyratBot
2022-05-27 18:02:42 +01:00
committed by GitHub
co-authored by Fikou Tom Gandalf
parent 9ff9ded26f
commit 80ef449df1
18 changed files with 533 additions and 317 deletions
+71 -72
View File
@@ -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
+36 -34
View File
@@ -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
+94 -108
View File
@@ -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"
@@ -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)
..()
+19 -13
View File
@@ -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
+6 -7
View File
@@ -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 ..()
+1 -4
View File
@@ -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(
+4
View File
@@ -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
View File
@@ -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"