Merge remote-tracking branch 'citadel/master' into shield_refactor
This commit is contained in:
@@ -718,8 +718,7 @@
|
|||||||
},
|
},
|
||||||
/obj/machinery/firealarm{
|
/obj/machinery/firealarm{
|
||||||
dir = 4;
|
dir = 4;
|
||||||
pixel_x = -26;
|
pixel_x = -26
|
||||||
pixel_y = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/showroomfloor,
|
/turf/open/floor/plasteel/showroomfloor,
|
||||||
/area/security/main)
|
/area/security/main)
|
||||||
@@ -1167,8 +1166,7 @@
|
|||||||
},
|
},
|
||||||
/obj/machinery/firealarm{
|
/obj/machinery/firealarm{
|
||||||
dir = 8;
|
dir = 8;
|
||||||
pixel_x = 28;
|
pixel_x = 28
|
||||||
pixel_y = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/crew_quarters/heads/hos)
|
/area/crew_quarters/heads/hos)
|
||||||
@@ -4085,8 +4083,7 @@
|
|||||||
/obj/effect/turf_decal/bot,
|
/obj/effect/turf_decal/bot,
|
||||||
/obj/machinery/camera{
|
/obj/machinery/camera{
|
||||||
c_tag = "Brig Infirmary";
|
c_tag = "Brig Infirmary";
|
||||||
dir = 4;
|
dir = 4
|
||||||
network = list("ss13")
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -4658,8 +4655,7 @@
|
|||||||
},
|
},
|
||||||
/obj/machinery/camera{
|
/obj/machinery/camera{
|
||||||
c_tag = "Brig Central";
|
c_tag = "Brig Central";
|
||||||
dir = 8;
|
dir = 8
|
||||||
network = list("ss13")
|
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||||
dir = 8
|
dir = 8
|
||||||
@@ -4683,8 +4679,7 @@
|
|||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
"aiK" = (
|
"aiK" = (
|
||||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/processing)
|
/area/security/processing)
|
||||||
@@ -5087,8 +5082,7 @@
|
|||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/structure/disposalpipe/segment{
|
/obj/structure/disposalpipe/segment{
|
||||||
dir = 4
|
dir = 4
|
||||||
@@ -6516,8 +6510,7 @@
|
|||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
"amU" = (
|
"amU" = (
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/structure/chair/office/dark{
|
/obj/structure/chair/office/dark{
|
||||||
dir = 8
|
dir = 8
|
||||||
@@ -6673,7 +6666,6 @@
|
|||||||
/obj/machinery/door/firedoor,
|
/obj/machinery/door/firedoor,
|
||||||
/obj/machinery/door/airlock/security{
|
/obj/machinery/door/airlock/security{
|
||||||
name = "Evidence Storage";
|
name = "Evidence Storage";
|
||||||
req_access = null;
|
|
||||||
req_access_txt = "3"
|
req_access_txt = "3"
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/showroomfloor,
|
/turf/open/floor/plasteel/showroomfloor,
|
||||||
@@ -6743,8 +6735,7 @@
|
|||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -6830,8 +6821,7 @@
|
|||||||
pixel_y = -36
|
pixel_y = -36
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/structure/bed,
|
/obj/structure/bed,
|
||||||
/obj/item/bedsheet/blue,
|
/obj/item/bedsheet/blue,
|
||||||
@@ -7552,7 +7542,6 @@
|
|||||||
normaldoorcontrol = 1;
|
normaldoorcontrol = 1;
|
||||||
pixel_x = -24;
|
pixel_x = -24;
|
||||||
pixel_y = -40;
|
pixel_y = -40;
|
||||||
req_access = null;
|
|
||||||
req_access_txt = "2"
|
req_access_txt = "2"
|
||||||
},
|
},
|
||||||
/obj/machinery/button/door{
|
/obj/machinery/button/door{
|
||||||
@@ -7561,7 +7550,6 @@
|
|||||||
normaldoorcontrol = 1;
|
normaldoorcontrol = 1;
|
||||||
pixel_x = -24;
|
pixel_x = -24;
|
||||||
pixel_y = -24;
|
pixel_y = -24;
|
||||||
req_access = null;
|
|
||||||
req_access_txt = "2"
|
req_access_txt = "2"
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/showroomfloor,
|
/turf/open/floor/plasteel/showroomfloor,
|
||||||
@@ -8324,9 +8312,7 @@
|
|||||||
"ary" = (
|
"ary" = (
|
||||||
/obj/machinery/power/apc{
|
/obj/machinery/power/apc{
|
||||||
areastring = "/area/security/warden";
|
areastring = "/area/security/warden";
|
||||||
dir = 2;
|
|
||||||
name = "Brig Control APC";
|
name = "Brig Control APC";
|
||||||
pixel_x = 0;
|
|
||||||
pixel_y = -24
|
pixel_y = -24
|
||||||
},
|
},
|
||||||
/obj/machinery/button/door{
|
/obj/machinery/button/door{
|
||||||
@@ -8334,7 +8320,6 @@
|
|||||||
name = "Cell Shutters";
|
name = "Cell Shutters";
|
||||||
pixel_x = 6;
|
pixel_x = 6;
|
||||||
pixel_y = -40;
|
pixel_y = -40;
|
||||||
req_access = null;
|
|
||||||
req_access_txt = "2"
|
req_access_txt = "2"
|
||||||
},
|
},
|
||||||
/obj/machinery/button/door{
|
/obj/machinery/button/door{
|
||||||
@@ -8392,8 +8377,7 @@
|
|||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -8512,8 +8496,7 @@
|
|||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -8580,8 +8563,7 @@
|
|||||||
/area/hallway/primary/fore)
|
/area/hallway/primary/fore)
|
||||||
"asb" = (
|
"asb" = (
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/machinery/camera{
|
/obj/machinery/camera{
|
||||||
c_tag = "Brig Evidence Storage";
|
c_tag = "Brig Evidence Storage";
|
||||||
@@ -8735,8 +8717,7 @@
|
|||||||
},
|
},
|
||||||
/obj/machinery/firealarm{
|
/obj/machinery/firealarm{
|
||||||
dir = 8;
|
dir = 8;
|
||||||
pixel_x = 28;
|
pixel_x = 28
|
||||||
pixel_y = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -8754,7 +8735,6 @@
|
|||||||
name = "Brig Control Shutters";
|
name = "Brig Control Shutters";
|
||||||
pixel_x = 6;
|
pixel_x = 6;
|
||||||
pixel_y = -40;
|
pixel_y = -40;
|
||||||
req_access = null;
|
|
||||||
req_access_txt = "2"
|
req_access_txt = "2"
|
||||||
},
|
},
|
||||||
/obj/machinery/button/door{
|
/obj/machinery/button/door{
|
||||||
@@ -8805,8 +8785,7 @@
|
|||||||
},
|
},
|
||||||
/obj/machinery/firealarm{
|
/obj/machinery/firealarm{
|
||||||
dir = 8;
|
dir = 8;
|
||||||
pixel_x = 28;
|
pixel_x = 28
|
||||||
pixel_y = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/processing)
|
/area/security/processing)
|
||||||
@@ -33788,9 +33767,9 @@
|
|||||||
"bCG" = (
|
"bCG" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/folder/white,
|
/obj/item/folder/white,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/item/reagent_containers/dropper,
|
/obj/item/reagent_containers/dropper,
|
||||||
/obj/item/soap/nanotrasen,
|
/obj/item/soap/nanotrasen,
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white,
|
/turf/open/floor/plasteel/white,
|
||||||
/area/medical/sleeper)
|
/area/medical/sleeper)
|
||||||
"bCH" = (
|
"bCH" = (
|
||||||
@@ -35592,6 +35571,7 @@
|
|||||||
pixel_y = 2
|
pixel_y = 2
|
||||||
},
|
},
|
||||||
/obj/item/clothing/neck/stethoscope,
|
/obj/item/clothing/neck/stethoscope,
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white,
|
/turf/open/floor/plasteel/white,
|
||||||
/area/medical/sleeper)
|
/area/medical/sleeper)
|
||||||
"bGT" = (
|
"bGT" = (
|
||||||
@@ -54412,8 +54392,7 @@
|
|||||||
/area/security/prison)
|
/area/security/prison)
|
||||||
"eXz" = (
|
"eXz" = (
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/processing)
|
/area/security/processing)
|
||||||
@@ -54973,8 +54952,7 @@
|
|||||||
"gDP" = (
|
"gDP" = (
|
||||||
/obj/machinery/firealarm{
|
/obj/machinery/firealarm{
|
||||||
dir = 8;
|
dir = 8;
|
||||||
pixel_x = 28;
|
pixel_x = 28
|
||||||
pixel_y = 0
|
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||||
dir = 6
|
dir = 6
|
||||||
@@ -55524,6 +55502,11 @@
|
|||||||
},
|
},
|
||||||
/turf/closed/wall/r_wall,
|
/turf/closed/wall/r_wall,
|
||||||
/area/engine/gravity_generator)
|
/area/engine/gravity_generator)
|
||||||
|
"iLJ" = (
|
||||||
|
/obj/item/reagent_containers/glass/bucket,
|
||||||
|
/mob/living/simple_animal/pet/bumbles,
|
||||||
|
/turf/open/floor/plasteel,
|
||||||
|
/area/hydroponics)
|
||||||
"iMv" = (
|
"iMv" = (
|
||||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||||
dir = 9
|
dir = 9
|
||||||
@@ -56598,8 +56581,7 @@
|
|||||||
/obj/machinery/door/airlock/security/glass{
|
/obj/machinery/door/airlock/security/glass{
|
||||||
id_tag = "innerbrig";
|
id_tag = "innerbrig";
|
||||||
name = "Brig Infirmary";
|
name = "Brig Infirmary";
|
||||||
req_access_txt = "2";
|
req_access_txt = "2"
|
||||||
req_one_access_txt = "0"
|
|
||||||
},
|
},
|
||||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||||
dir = 1
|
dir = 1
|
||||||
@@ -56720,8 +56702,7 @@
|
|||||||
pixel_y = -36
|
pixel_y = -36
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/structure/bed,
|
/obj/structure/bed,
|
||||||
/obj/item/bedsheet/yellow,
|
/obj/item/bedsheet/yellow,
|
||||||
@@ -57070,7 +57051,6 @@
|
|||||||
"nEj" = (
|
"nEj" = (
|
||||||
/obj/effect/spawner/structure/window/reinforced,
|
/obj/effect/spawner/structure/window/reinforced,
|
||||||
/obj/structure/sign/warning/vacuum/external{
|
/obj/structure/sign/warning/vacuum/external{
|
||||||
pixel_x = 0;
|
|
||||||
pixel_y = 32
|
pixel_y = 32
|
||||||
},
|
},
|
||||||
/turf/open/floor/plating,
|
/turf/open/floor/plating,
|
||||||
@@ -57287,8 +57267,7 @@
|
|||||||
pixel_y = -36
|
pixel_y = -36
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/obj/structure/bed,
|
/obj/structure/bed,
|
||||||
/obj/item/bedsheet/green,
|
/obj/item/bedsheet/green,
|
||||||
@@ -58087,8 +58066,7 @@
|
|||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||||
dir = 1;
|
dir = 1
|
||||||
pixel_x = 0
|
|
||||||
},
|
},
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/security/brig)
|
/area/security/brig)
|
||||||
@@ -60615,7 +60593,6 @@
|
|||||||
"xWq" = (
|
"xWq" = (
|
||||||
/obj/effect/spawner/structure/window/reinforced,
|
/obj/effect/spawner/structure/window/reinforced,
|
||||||
/obj/structure/sign/warning/vacuum/external{
|
/obj/structure/sign/warning/vacuum/external{
|
||||||
pixel_x = 0;
|
|
||||||
pixel_y = -32
|
pixel_y = -32
|
||||||
},
|
},
|
||||||
/turf/open/floor/plating,
|
/turf/open/floor/plating,
|
||||||
@@ -102207,7 +102184,7 @@ aSU
|
|||||||
aXo
|
aXo
|
||||||
aXo
|
aXo
|
||||||
aXo
|
aXo
|
||||||
aYO
|
iLJ
|
||||||
bap
|
bap
|
||||||
ikm
|
ikm
|
||||||
aYV
|
aYV
|
||||||
|
|||||||
@@ -90569,7 +90569,6 @@
|
|||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
/obj/item/storage/box/syringes,
|
/obj/item/storage/box/syringes,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/machinery/status_display/evac{
|
/obj/machinery/status_display/evac{
|
||||||
pixel_x = -32
|
pixel_x = -32
|
||||||
},
|
},
|
||||||
@@ -90581,6 +90580,7 @@
|
|||||||
/obj/effect/turf_decal/tile/neutral{
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
dir = 4
|
dir = 4
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/medical/storage)
|
/area/medical/storage)
|
||||||
"cWv" = (
|
"cWv" = (
|
||||||
@@ -99195,7 +99195,7 @@
|
|||||||
/obj/structure/table/reinforced,
|
/obj/structure/table/reinforced,
|
||||||
/obj/machinery/light/small,
|
/obj/machinery/light/small,
|
||||||
/obj/structure/bedsheetbin,
|
/obj/structure/bedsheetbin,
|
||||||
/obj/item/gun/syringe,
|
/obj/item/gun/syringe/dart,
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/obj/effect/turf_decal/tile/neutral{
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
dir = 1
|
dir = 1
|
||||||
@@ -106576,11 +106576,11 @@
|
|||||||
/obj/item/clothing/mask/muzzle,
|
/obj/item/clothing/mask/muzzle,
|
||||||
/obj/item/clothing/glasses/sunglasses/blindfold,
|
/obj/item/clothing/glasses/sunglasses/blindfold,
|
||||||
/obj/item/clothing/ears/earmuffs,
|
/obj/item/clothing/ears/earmuffs,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/item/clothing/glasses/eyepatch,
|
/obj/item/clothing/glasses/eyepatch,
|
||||||
/obj/effect/turf_decal/tile/blue{
|
/obj/effect/turf_decal/tile/blue{
|
||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white,
|
/turf/open/floor/plasteel/white,
|
||||||
/area/medical/surgery)
|
/area/medical/surgery)
|
||||||
"dyE" = (
|
"dyE" = (
|
||||||
@@ -126360,6 +126360,20 @@
|
|||||||
},
|
},
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/science/mixing)
|
/area/science/mixing)
|
||||||
|
"jwo" = (
|
||||||
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
|
dir = 1
|
||||||
|
},
|
||||||
|
/obj/effect/turf_decal/tile/neutral,
|
||||||
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
|
dir = 4
|
||||||
|
},
|
||||||
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
|
dir = 8
|
||||||
|
},
|
||||||
|
/mob/living/simple_animal/pet/bumbles,
|
||||||
|
/turf/open/floor/plasteel,
|
||||||
|
/area/hydroponics)
|
||||||
"jBE" = (
|
"jBE" = (
|
||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/obj/effect/turf_decal/tile/neutral{
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
@@ -160698,7 +160712,7 @@ bjt
|
|||||||
bli
|
bli
|
||||||
bnk
|
bnk
|
||||||
boB
|
boB
|
||||||
bnj
|
jwo
|
||||||
bnj
|
bnj
|
||||||
bnh
|
bnh
|
||||||
bvB
|
bvB
|
||||||
|
|||||||
@@ -22793,9 +22793,6 @@
|
|||||||
pixel_y = 4
|
pixel_y = 4
|
||||||
},
|
},
|
||||||
/obj/item/storage/box/beakers,
|
/obj/item/storage/box/beakers,
|
||||||
/obj/item/gun/syringe{
|
|
||||||
pixel_y = 5
|
|
||||||
},
|
|
||||||
/obj/item/reagent_containers/spray/cleaner,
|
/obj/item/reagent_containers/spray/cleaner,
|
||||||
/obj/effect/turf_decal/tile/neutral,
|
/obj/effect/turf_decal/tile/neutral,
|
||||||
/obj/effect/turf_decal/tile/neutral{
|
/obj/effect/turf_decal/tile/neutral{
|
||||||
@@ -22804,6 +22801,7 @@
|
|||||||
/obj/machinery/light_switch{
|
/obj/machinery/light_switch{
|
||||||
pixel_y = 24
|
pixel_y = 24
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/dark,
|
/turf/open/floor/plasteel/dark,
|
||||||
/area/medical/storage)
|
/area/medical/storage)
|
||||||
"aKZ" = (
|
"aKZ" = (
|
||||||
@@ -43879,18 +43877,6 @@
|
|||||||
/obj/effect/decal/cleanable/dirt,
|
/obj/effect/decal/cleanable/dirt,
|
||||||
/turf/open/floor/plating,
|
/turf/open/floor/plating,
|
||||||
/area/maintenance/central)
|
/area/maintenance/central)
|
||||||
"bqG" = (
|
|
||||||
/obj/effect/turf_decal/tile/green{
|
|
||||||
dir = 8
|
|
||||||
},
|
|
||||||
/obj/effect/turf_decal/tile/green{
|
|
||||||
dir = 1
|
|
||||||
},
|
|
||||||
/obj/effect/turf_decal/tile/blue{
|
|
||||||
dir = 1
|
|
||||||
},
|
|
||||||
/turf/open/floor/plasteel,
|
|
||||||
/area/hydroponics)
|
|
||||||
"bqH" = (
|
"bqH" = (
|
||||||
/obj/effect/turf_decal/tile/green{
|
/obj/effect/turf_decal/tile/green{
|
||||||
dir = 4
|
dir = 4
|
||||||
@@ -88232,6 +88218,19 @@
|
|||||||
"whw" = (
|
"whw" = (
|
||||||
/turf/closed/wall/rust,
|
/turf/closed/wall/rust,
|
||||||
/area/medical/surgery)
|
/area/medical/surgery)
|
||||||
|
"whZ" = (
|
||||||
|
/obj/effect/turf_decal/tile/green{
|
||||||
|
dir = 8
|
||||||
|
},
|
||||||
|
/obj/effect/turf_decal/tile/green{
|
||||||
|
dir = 1
|
||||||
|
},
|
||||||
|
/obj/effect/turf_decal/tile/blue{
|
||||||
|
dir = 1
|
||||||
|
},
|
||||||
|
/mob/living/simple_animal/pet/bumbles,
|
||||||
|
/turf/open/floor/plasteel,
|
||||||
|
/area/hydroponics)
|
||||||
"wmX" = (
|
"wmX" = (
|
||||||
/turf/closed/wall/rust,
|
/turf/closed/wall/rust,
|
||||||
/area/quartermaster/qm)
|
/area/quartermaster/qm)
|
||||||
@@ -122394,7 +122393,7 @@ aZd
|
|||||||
bqh
|
bqh
|
||||||
bnJ
|
bnJ
|
||||||
bpl
|
bpl
|
||||||
bqG
|
whZ
|
||||||
bsL
|
bsL
|
||||||
buw
|
buw
|
||||||
bwH
|
bwH
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -54133,7 +54133,6 @@
|
|||||||
/obj/item/clothing/glasses/hud/health,
|
/obj/item/clothing/glasses/hud/health,
|
||||||
/obj/item/clothing/glasses/hud/health,
|
/obj/item/clothing/glasses/hud/health,
|
||||||
/obj/item/clothing/glasses/hud/health,
|
/obj/item/clothing/glasses/hud/health,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/structure/window/reinforced{
|
/obj/structure/window/reinforced{
|
||||||
dir = 1
|
dir = 1
|
||||||
},
|
},
|
||||||
@@ -54146,6 +54145,7 @@
|
|||||||
/obj/effect/turf_decal/tile/blue{
|
/obj/effect/turf_decal/tile/blue{
|
||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white,
|
/turf/open/floor/plasteel/white,
|
||||||
/area/medical/storage)
|
/area/medical/storage)
|
||||||
"cds" = (
|
"cds" = (
|
||||||
@@ -59207,13 +59207,13 @@
|
|||||||
},
|
},
|
||||||
/obj/item/clothing/suit/straight_jacket,
|
/obj/item/clothing/suit/straight_jacket,
|
||||||
/obj/item/clothing/mask/muzzle,
|
/obj/item/clothing/mask/muzzle,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/item/clothing/glasses/eyepatch,
|
/obj/item/clothing/glasses/eyepatch,
|
||||||
/obj/item/clothing/glasses/sunglasses/blindfold,
|
/obj/item/clothing/glasses/sunglasses/blindfold,
|
||||||
/obj/item/clothing/ears/earmuffs,
|
/obj/item/clothing/ears/earmuffs,
|
||||||
/obj/item/storage/belt/medical{
|
/obj/item/storage/belt/medical{
|
||||||
pixel_y = 2
|
pixel_y = 2
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white/side,
|
/turf/open/floor/plasteel/white/side,
|
||||||
/area/medical/surgery)
|
/area/medical/surgery)
|
||||||
"cnu" = (
|
"cnu" = (
|
||||||
@@ -61843,7 +61843,7 @@
|
|||||||
"csa" = (
|
"csa" = (
|
||||||
/obj/structure/table,
|
/obj/structure/table,
|
||||||
/obj/item/restraints/handcuffs/cable/white,
|
/obj/item/restraints/handcuffs/cable/white,
|
||||||
/obj/item/gun/syringe,
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plating,
|
/turf/open/floor/plating,
|
||||||
/area/maintenance/starboard/aft)
|
/area/maintenance/starboard/aft)
|
||||||
"csb" = (
|
"csb" = (
|
||||||
@@ -82724,6 +82724,14 @@
|
|||||||
/obj/structure/grille,
|
/obj/structure/grille,
|
||||||
/turf/open/floor/plating/airless,
|
/turf/open/floor/plating/airless,
|
||||||
/area/space/nearstation)
|
/area/space/nearstation)
|
||||||
|
"soe" = (
|
||||||
|
/obj/effect/turf_decal/tile/green,
|
||||||
|
/obj/effect/turf_decal/tile/green{
|
||||||
|
dir = 4
|
||||||
|
},
|
||||||
|
/mob/living/simple_animal/pet/bumbles,
|
||||||
|
/turf/open/floor/plasteel,
|
||||||
|
/area/hydroponics)
|
||||||
"soh" = (
|
"soh" = (
|
||||||
/obj/structure/cable/yellow{
|
/obj/structure/cable/yellow{
|
||||||
icon_state = "4-8"
|
icon_state = "4-8"
|
||||||
@@ -117831,7 +117839,7 @@ bSV
|
|||||||
bUk
|
bUk
|
||||||
bVv
|
bVv
|
||||||
bWQ
|
bWQ
|
||||||
bWQ
|
soe
|
||||||
bWQ
|
bWQ
|
||||||
caL
|
caL
|
||||||
ccv
|
ccv
|
||||||
|
|||||||
@@ -27696,12 +27696,12 @@
|
|||||||
pixel_y = 3
|
pixel_y = 3
|
||||||
},
|
},
|
||||||
/obj/item/storage/box/syringes,
|
/obj/item/storage/box/syringes,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/item/reagent_containers/hypospray/CMO,
|
/obj/item/reagent_containers/hypospray/CMO,
|
||||||
/obj/item/storage/belt/medical,
|
/obj/item/storage/belt/medical,
|
||||||
/obj/item/storage/belt/medical,
|
/obj/item/storage/belt/medical,
|
||||||
/obj/item/clothing/neck/stethoscope,
|
/obj/item/clothing/neck/stethoscope,
|
||||||
/obj/item/clothing/neck/stethoscope,
|
/obj/item/clothing/neck/stethoscope,
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/medical/medbay/zone3)
|
/area/medical/medbay/zone3)
|
||||||
"aXR" = (
|
"aXR" = (
|
||||||
|
|||||||
@@ -22504,14 +22504,6 @@
|
|||||||
/obj/effect/turf_decal/tile/green,
|
/obj/effect/turf_decal/tile/green,
|
||||||
/turf/open/floor/plasteel,
|
/turf/open/floor/plasteel,
|
||||||
/area/hydroponics)
|
/area/hydroponics)
|
||||||
"bbe" = (
|
|
||||||
/obj/structure/chair/stool,
|
|
||||||
/obj/effect/turf_decal/tile/green,
|
|
||||||
/obj/effect/turf_decal/tile/green{
|
|
||||||
dir = 8
|
|
||||||
},
|
|
||||||
/turf/open/floor/plasteel,
|
|
||||||
/area/hydroponics)
|
|
||||||
"bbg" = (
|
"bbg" = (
|
||||||
/obj/effect/landmark/start/cook,
|
/obj/effect/landmark/start/cook,
|
||||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||||
@@ -39520,7 +39512,6 @@
|
|||||||
"bMK" = (
|
"bMK" = (
|
||||||
/obj/item/soap/nanotrasen,
|
/obj/item/soap/nanotrasen,
|
||||||
/obj/item/clothing/neck/stethoscope,
|
/obj/item/clothing/neck/stethoscope,
|
||||||
/obj/item/gun/syringe,
|
|
||||||
/obj/structure/table/glass,
|
/obj/structure/table/glass,
|
||||||
/obj/effect/turf_decal/tile/blue{
|
/obj/effect/turf_decal/tile/blue{
|
||||||
dir = 1
|
dir = 1
|
||||||
@@ -39529,6 +39520,7 @@
|
|||||||
/obj/effect/turf_decal/tile/blue{
|
/obj/effect/turf_decal/tile/blue{
|
||||||
dir = 8
|
dir = 8
|
||||||
},
|
},
|
||||||
|
/obj/item/gun/syringe/dart,
|
||||||
/turf/open/floor/plasteel/white,
|
/turf/open/floor/plasteel/white,
|
||||||
/area/medical/medbay/central)
|
/area/medical/medbay/central)
|
||||||
"bMM" = (
|
"bMM" = (
|
||||||
@@ -59851,6 +59843,15 @@
|
|||||||
},
|
},
|
||||||
/turf/open/floor/plating,
|
/turf/open/floor/plating,
|
||||||
/area/science/xenobiology)
|
/area/science/xenobiology)
|
||||||
|
"ttS" = (
|
||||||
|
/obj/structure/chair/stool,
|
||||||
|
/obj/effect/turf_decal/tile/green,
|
||||||
|
/obj/effect/turf_decal/tile/green{
|
||||||
|
dir = 8
|
||||||
|
},
|
||||||
|
/mob/living/simple_animal/pet/bumbles,
|
||||||
|
/turf/open/floor/plasteel,
|
||||||
|
/area/hydroponics)
|
||||||
"tue" = (
|
"tue" = (
|
||||||
/obj/structure/cable{
|
/obj/structure/cable{
|
||||||
icon_state = "2-4"
|
icon_state = "2-4"
|
||||||
@@ -90071,7 +90072,7 @@ aRN
|
|||||||
aXZ
|
aXZ
|
||||||
aYQ
|
aYQ
|
||||||
aXS
|
aXS
|
||||||
bbe
|
ttS
|
||||||
bcd
|
bcd
|
||||||
bdo
|
bdo
|
||||||
ben
|
ben
|
||||||
|
|||||||
@@ -47,9 +47,9 @@
|
|||||||
|
|
||||||
/datum/brain_trauma/special/imaginary_friend/proc/get_ghost()
|
/datum/brain_trauma/special/imaginary_friend/proc/get_ghost()
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s imaginary friend?", ROLE_PAI, null, null, 75, friend, POLL_IGNORE_IMAGINARYFRIEND)
|
var/list/candidates = pollCandidatesForMob("Do you want to play as [owner]'s imaginary friend?", ROLE_PAI, null, null, 75, friend, POLL_IGNORE_IMAGINARYFRIEND)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
C.transfer_ckey(friend, FALSE)
|
C.transfer_ckey(friend, FALSE)
|
||||||
friend_initialized = TRUE
|
friend_initialized = TRUE
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -27,9 +27,9 @@
|
|||||||
|
|
||||||
/datum/brain_trauma/severe/split_personality/proc/get_ghost()
|
/datum/brain_trauma/severe/split_personality/proc/get_ghost()
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", ROLE_PAI, null, null, 75, stranger_backseat, POLL_IGNORE_SPLITPERSONALITY)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", ROLE_PAI, null, null, 75, stranger_backseat, POLL_IGNORE_SPLITPERSONALITY)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
C.transfer_ckey(stranger_backseat, FALSE)
|
C.transfer_ckey(stranger_backseat, FALSE)
|
||||||
log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.")
|
log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.")
|
||||||
message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.")
|
message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.")
|
||||||
|
|||||||
@@ -76,9 +76,9 @@
|
|||||||
/datum/disease/transformation/proc/replace_banned_player(var/mob/living/new_mob) // This can run well after the mob has been transferred, so need a handle on the new mob to kill it if needed.
|
/datum/disease/transformation/proc/replace_banned_player(var/mob/living/new_mob) // This can run well after the mob has been transferred, so need a handle on the new mob to kill it if needed.
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
|
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [affected_mob.name]?", bantype, null, bantype, 50, affected_mob)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as [affected_mob.name]?", bantype, null, bantype, 50, affected_mob)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
to_chat(affected_mob, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")
|
to_chat(affected_mob, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")
|
||||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbaned player.")
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbaned player.")
|
||||||
affected_mob.ghostize(0)
|
affected_mob.ghostize(0)
|
||||||
|
|||||||
@@ -41,16 +41,9 @@
|
|||||||
var/count = 0
|
var/count = 0
|
||||||
|
|
||||||
/datum/sabotage_objective/processing/power_sink/check_condition_processing()
|
/datum/sabotage_objective/processing/power_sink/check_condition_processing()
|
||||||
count += 1
|
for(var/s in GLOB.power_sinks)
|
||||||
if(count==10 || sink_found) // doesn't need to fire that often unless a sink exists
|
var/obj/item/powersink/sink = s
|
||||||
var/sink_found_this_time = FALSE
|
won = max(won,sink.power_drained/1e8)
|
||||||
for(var/datum/powernet/PN in GLOB.powernets)
|
|
||||||
for(var/obj/item/powersink/sink in PN.nodes)
|
|
||||||
sink_found_this_time = TRUE
|
|
||||||
won = max(won,sink.power_drained/1e8)
|
|
||||||
sink_found = sink_found_this_time
|
|
||||||
count = 0
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
/obj/item/paper/guides/antag/supermatter_sabotage
|
/obj/item/paper/guides/antag/supermatter_sabotage
|
||||||
info = "Ways to sabotage a supermatter:<br>\
|
info = "Ways to sabotage a supermatter:<br>\
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
var/list/candidates = pollCandidatesForMob("Do you want to play as [clonename]'s defective clone?", null, null, null, 100, H)
|
var/list/candidates = pollCandidatesForMob("Do you want to play as [clonename]'s defective clone?", null, null, null, 100, H)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
H.key = C.key
|
H.key = C.key
|
||||||
|
|
||||||
if(grab_ghost_when == CLONER_FRESH_CLONE)
|
if(grab_ghost_when == CLONER_FRESH_CLONE)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
// Powersink - used to drain station power
|
// Powersink - used to drain station power
|
||||||
|
|
||||||
|
GLOBAL_LIST_EMPTY(power_sinks)
|
||||||
|
|
||||||
/obj/item/powersink
|
/obj/item/powersink
|
||||||
desc = "A nulling power sink which drains energy from electrical systems."
|
desc = "A nulling power sink which drains energy from electrical systems."
|
||||||
name = "power sink"
|
name = "power sink"
|
||||||
@@ -26,6 +28,14 @@
|
|||||||
|
|
||||||
var/obj/structure/cable/attached // the attached cable
|
var/obj/structure/cable/attached // the attached cable
|
||||||
|
|
||||||
|
/obj/item/powersink/Initialize()
|
||||||
|
. = ..()
|
||||||
|
GLOB.power_sinks += src
|
||||||
|
|
||||||
|
/obj/item/powersink/Destroy()
|
||||||
|
GLOB.power_sinks -= src
|
||||||
|
. = ..()
|
||||||
|
|
||||||
/obj/item/powersink/update_icon_state()
|
/obj/item/powersink/update_icon_state()
|
||||||
icon_state = "powersink[mode == OPERATING]"
|
icon_state = "powersink[mode == OPERATING]"
|
||||||
|
|
||||||
|
|||||||
@@ -463,6 +463,16 @@
|
|||||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||||
var/possessed = FALSE
|
var/possessed = FALSE
|
||||||
|
|
||||||
|
/obj/item/nullrod/scythe/talking/process()
|
||||||
|
for(var/mob/living/simple_animal/shade/S in contents)
|
||||||
|
if(S.mind)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
qdel(S)
|
||||||
|
possessed = FALSE
|
||||||
|
visible_message("<span class='warning'>The blade makes a short sigh. The spirit within seems to have passed on...</span>")
|
||||||
|
return PROCESS_KILL
|
||||||
|
|
||||||
/obj/item/nullrod/scythe/talking/relaymove(mob/user)
|
/obj/item/nullrod/scythe/talking/relaymove(mob/user)
|
||||||
return //stops buckled message spam for the ghost.
|
return //stops buckled message spam for the ghost.
|
||||||
|
|
||||||
@@ -484,6 +494,8 @@
|
|||||||
S.ckey = C.ckey
|
S.ckey = C.ckey
|
||||||
S.status_flags |= GODMODE
|
S.status_flags |= GODMODE
|
||||||
S.language_holder = user.language_holder.copy(S)
|
S.language_holder = user.language_holder.copy(S)
|
||||||
|
S.AddElement(/datum/element/ghost_role_eligibility)
|
||||||
|
START_PROCESSING(SSprocessing,src)
|
||||||
var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)
|
var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)
|
||||||
|
|
||||||
if(src && input)
|
if(src && input)
|
||||||
|
|||||||
@@ -282,7 +282,6 @@
|
|||||||
throwforce = 5
|
throwforce = 5
|
||||||
stamforce = 25
|
stamforce = 25
|
||||||
hitcost = 1000
|
hitcost = 1000
|
||||||
knockdown = FALSE
|
|
||||||
throw_hit_chance = 10
|
throw_hit_chance = 10
|
||||||
slot_flags = ITEM_SLOT_BACK
|
slot_flags = ITEM_SLOT_BACK
|
||||||
var/obj/item/assembly/igniter/sparkler
|
var/obj/item/assembly/igniter/sparkler
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
var/question = "Would you like to be [group_name]?"
|
var/question = "Would you like to be [group_name]?"
|
||||||
var/list/candidates = pollCandidatesForMobs(question, ROLE_PAI, null, FALSE, 100, bodies)
|
var/list/candidates = pollCandidatesForMobs(question, ROLE_PAI, null, FALSE, 100, bodies)
|
||||||
while(LAZYLEN(candidates) && LAZYLEN(bodies))
|
while(LAZYLEN(candidates) && LAZYLEN(bodies))
|
||||||
var/mob/dead/observer/C = pick_n_take(candidates)
|
var/mob/C = pick_n_take(candidates)
|
||||||
var/mob/living/body = pick_n_take(bodies)
|
var/mob/living/body = pick_n_take(bodies)
|
||||||
|
|
||||||
to_chat(body, "Your mob has been taken over by a ghost!")
|
to_chat(body, "Your mob has been taken over by a ghost!")
|
||||||
|
|||||||
@@ -220,4 +220,17 @@
|
|||||||
/proc/_instantiate_at(thing, location)
|
/proc/_instantiate_at(thing, location)
|
||||||
new thing(location)
|
new thing(location)
|
||||||
|
|
||||||
|
/// Locating turfs
|
||||||
|
/proc/_turf_in_offset(s = usr, x = 0, y = 0, z = 0)
|
||||||
|
var/turf/T = get_turf(s)
|
||||||
|
return locate(clamp(T.x + x, 1, world.maxx), clamp(T.y + y, 1, world.maxy), clamp(T.z + z, 1, world.maxz))
|
||||||
|
|
||||||
|
/proc/_random_turf_in_range(s = usr, r = 7)
|
||||||
|
return _turf_in_offset(s, rand(-r, r), rand(-r, r))
|
||||||
|
|
||||||
|
/proc/_random_turf_in_view(s = usr, r = 7)
|
||||||
|
var/list/v = view(s, r)
|
||||||
|
. = list()
|
||||||
|
for(var/turf/T in v)
|
||||||
|
. += T
|
||||||
|
return pick(.)
|
||||||
|
|||||||
@@ -84,9 +84,9 @@ GLOBAL_LIST_EMPTY(antagonists)
|
|||||||
/datum/antagonist/proc/replace_banned_player()
|
/datum/antagonist/proc/replace_banned_player()
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
|
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", "[name]", null, job_rank, 50, owner.current)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as a [name]?", "[name]", null, job_rank, 50, owner.current)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")
|
to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")
|
||||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.")
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.")
|
||||||
owner.current.ghostize(0)
|
owner.current.ghostize(0)
|
||||||
|
|||||||
@@ -248,7 +248,7 @@
|
|||||||
if(used || QDELETED(src))
|
if(used || QDELETED(src))
|
||||||
return
|
return
|
||||||
used = TRUE
|
used = TRUE
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
spawn_antag(C.client, get_turf(src), initial(demon_type.name),user.mind)
|
spawn_antag(C.client, get_turf(src), initial(demon_type.name),user.mind)
|
||||||
to_chat(user, shatter_msg)
|
to_chat(user, shatter_msg)
|
||||||
to_chat(user, veil_msg)
|
to_chat(user, veil_msg)
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
|
|
||||||
B.naut = TRUE //temporary placeholder to prevent creation of more than one per factory.
|
B.naut = TRUE //temporary placeholder to prevent creation of more than one per factory.
|
||||||
to_chat(src, "<span class='notice'>You attempt to produce a blobbernaut.</span>")
|
to_chat(src, "<span class='notice'>You attempt to produce a blobbernaut.</span>")
|
||||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a [blobstrain.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly
|
var/list/mob/candidates = pollGhostCandidates("Do you want to play as a [blobstrain.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly
|
||||||
if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now.
|
if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now.
|
||||||
B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health
|
B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health
|
||||||
B.obj_integrity = min(B.obj_integrity, B.max_integrity)
|
B.obj_integrity = min(B.obj_integrity, B.max_integrity)
|
||||||
|
|||||||
@@ -352,9 +352,9 @@
|
|||||||
break
|
break
|
||||||
if(!L.client || L.client.is_afk())
|
if(!L.client || L.client.is_afk())
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [L.name], an inactive clock cultist?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, 50, L)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as a [L.name], an inactive clock cultist?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, 50, L)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
to_chat(L, "<span class='userdanger'>Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form!</span>")
|
to_chat(L, "<span class='userdanger'>Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form!</span>")
|
||||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(L)]) to replace an inactive clock cultist.")
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(L)]) to replace an inactive clock cultist.")
|
||||||
L.ghostize(0)
|
L.ghostize(0)
|
||||||
|
|||||||
@@ -569,9 +569,9 @@ structure_check() searches for nearby cultist structures required for the invoca
|
|||||||
mob_to_revive.grab_ghost()
|
mob_to_revive.grab_ghost()
|
||||||
if(!mob_to_revive.client || mob_to_revive.client.is_afk())
|
if(!mob_to_revive.client || mob_to_revive.client.is_afk())
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.")
|
to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.")
|
||||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.")
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.")
|
||||||
mob_to_revive.ghostize(0)
|
mob_to_revive.ghostize(0)
|
||||||
|
|||||||
@@ -397,7 +397,7 @@
|
|||||||
inert = TRUE
|
inert = TRUE
|
||||||
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
||||||
return
|
return
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
C.transfer_ckey(revenant.key, FALSE)
|
C.transfer_ckey(revenant.key, FALSE)
|
||||||
if(!revenant.key)
|
if(!revenant.key)
|
||||||
qdel(revenant)
|
qdel(revenant)
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
if (.)
|
if (.)
|
||||||
to_chat(user, "<span class='notice'>The uplink vibrates quietly, connecting to nearby agents...</span>")
|
to_chat(user, "<span class='notice'>The uplink vibrates quietly, connecting to nearby agents...</span>")
|
||||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Contractor Support Unit for [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_CONTRACTOR_SUPPORT)
|
var/list/mob/candidates = pollGhostCandidates("Do you want to play as the Contractor Support Unit for [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_CONTRACTOR_SUPPORT)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/dead/observer/C = pick(candidates)
|
||||||
spawn_contractor_partner(user, C.key)
|
spawn_contractor_partner(user, C.key)
|
||||||
|
|||||||
@@ -266,6 +266,7 @@
|
|||||||
M.equipOutfit(ctf_gear)
|
M.equipOutfit(ctf_gear)
|
||||||
M.dna.species.punchdamagehigh = 25
|
M.dna.species.punchdamagehigh = 25
|
||||||
M.dna.species.punchdamagelow = 25
|
M.dna.species.punchdamagelow = 25
|
||||||
|
M.AddElement(/datum/element/ghost_role_eligibility)
|
||||||
spawned_mobs += M
|
spawned_mobs += M
|
||||||
|
|
||||||
/obj/machinery/capture_the_flag/Topic(href, href_list)
|
/obj/machinery/capture_the_flag/Topic(href, href_list)
|
||||||
|
|||||||
@@ -127,10 +127,10 @@
|
|||||||
|
|
||||||
if(!current_wizard)
|
if(!current_wizard)
|
||||||
return
|
return
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", ROLE_WIZARD, null, ROLE_WIZARD, 50, current_wizard)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", ROLE_WIZARD, null, ROLE_WIZARD, 50, current_wizard)
|
||||||
|
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender")
|
message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender")
|
||||||
current_wizard.ghostize() // on the off chance braindead defender gets back in
|
current_wizard.ghostize() // on the off chance braindead defender gets back in
|
||||||
C.transfer_ckey(current_wizard, FALSE)
|
C.transfer_ckey(current_wizard, FALSE)
|
||||||
@@ -269,9 +269,9 @@
|
|||||||
A.setup_master(user)
|
A.setup_master(user)
|
||||||
servant_mind.transfer_to(H)
|
servant_mind.transfer_to(H)
|
||||||
|
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H)
|
var/list/mob/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H)
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant")
|
message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant")
|
||||||
C.transfer_ckey(H, FALSE)
|
C.transfer_ckey(H, FALSE)
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
var/spawned_animals = 0
|
var/spawned_animals = 0
|
||||||
while(spawned_animals < animals && candidates.len && potential.len)
|
while(spawned_animals < animals && candidates.len && potential.len)
|
||||||
var/mob/living/simple_animal/SA = pick_n_take(potential)
|
var/mob/living/simple_animal/SA = pick_n_take(potential)
|
||||||
var/mob/dead/observer/SG = pick_n_take(candidates)
|
var/mob/SG = pick_n_take(candidates)
|
||||||
|
|
||||||
spawned_animals++
|
spawned_animals++
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
SA.del_on_death = FALSE
|
SA.del_on_death = FALSE
|
||||||
|
|
||||||
spawned_mobs += SA
|
spawned_mobs += SA
|
||||||
|
SA.AddElement(/datum/element/ghost_role_eligibility)
|
||||||
to_chat(SA, "<span class='userdanger'>Hello world!</span>")
|
to_chat(SA, "<span class='userdanger'>Hello world!</span>")
|
||||||
to_chat(SA, "<span class='warning'>Due to freak radiation and/or chemicals \
|
to_chat(SA, "<span class='warning'>Due to freak radiation and/or chemicals \
|
||||||
and/or lucky chance, you have gained human level intelligence \
|
and/or lucky chance, you have gained human level intelligence \
|
||||||
|
|||||||
@@ -653,6 +653,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
transfer_ckey(target, FALSE)
|
transfer_ckey(target, FALSE)
|
||||||
|
target.AddElement(/datum/element/ghost_role_eligibility)
|
||||||
target.faction = list("neutral")
|
target.faction = list("neutral")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -707,7 +707,7 @@
|
|||||||
|
|
||||||
/mob/living/carbon/human/wash_cream()
|
/mob/living/carbon/human/wash_cream()
|
||||||
if(creamed) //clean both to prevent a rare bug
|
if(creamed) //clean both to prevent a rare bug
|
||||||
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_lizard"))
|
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_snout"))
|
||||||
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
|
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
|
||||||
creamed = FALSE
|
creamed = FALSE
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
icon_living = "bumbles"
|
icon_living = "bumbles"
|
||||||
icon_dead = "bumbles_dead"
|
icon_dead = "bumbles_dead"
|
||||||
turns_per_move = 1
|
turns_per_move = 1
|
||||||
response_help = "shoos"
|
response_help = "pets"
|
||||||
response_disarm = "brushes aside"
|
response_disarm = "brushes aside"
|
||||||
response_harm = "squashes"
|
response_harm = "squashes"
|
||||||
speak_emote = list("bzzzs")
|
speak_emote = list("buzzes")
|
||||||
maxHealth = 100
|
maxHealth = 100
|
||||||
health = 100
|
health = 100
|
||||||
harm_intent_damage = 1
|
harm_intent_damage = 1
|
||||||
@@ -20,10 +20,12 @@
|
|||||||
mob_size = MOB_SIZE_TINY
|
mob_size = MOB_SIZE_TINY
|
||||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||||
gold_core_spawnable = FRIENDLY_SPAWN
|
gold_core_spawnable = FRIENDLY_SPAWN
|
||||||
verb_say = "bzzs"
|
verb_say = "buzzs"
|
||||||
verb_ask = "bzzs inquisitively"
|
verb_ask = "buzzes inquisitively"
|
||||||
verb_exclaim = "bzzs intensely"
|
verb_exclaim = "buzzes intensely"
|
||||||
verb_yell = "bzzs intensely"
|
verb_yell = "buzzes intensely"
|
||||||
|
emote_see = list("buzzes.", "makes a loud buzz.", "rolls several times.", "buzzes happily.")
|
||||||
|
speak_chance = 1
|
||||||
|
|
||||||
/mob/living/simple_animal/pet/bumbles/Initialize()
|
/mob/living/simple_animal/pet/bumbles/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -44,3 +46,22 @@
|
|||||||
|
|
||||||
/mob/living/simple_animal/pet/bumbles/bee_friendly()
|
/mob/living/simple_animal/pet/bumbles/bee_friendly()
|
||||||
return TRUE //treaty signed at the Beeneeva convention
|
return TRUE //treaty signed at the Beeneeva convention
|
||||||
|
|
||||||
|
/mob/living/simple_animal/pet/bumbles/handle_automated_movement()
|
||||||
|
. = ..()
|
||||||
|
if(!isturf(loc) || !CHECK_MOBILITY(src, MOBILITY_MOVE) || buckled)
|
||||||
|
return
|
||||||
|
if(!resting && prob(1))
|
||||||
|
emote("me", EMOTE_VISIBLE, pick("curls up on the surface below ", "is looking very sleepy.", "buzzes softly ", "looks around for a flower nap "))
|
||||||
|
set_resting(TRUE)
|
||||||
|
else if (resting && prob(1))
|
||||||
|
emote("me", EMOTE_VISIBLE, pick("wakes up with a smiling buzz.", "rolls upside down before waking up.", "stops resting."))
|
||||||
|
set_resting(FALSE)
|
||||||
|
/mob/living/simple_animal/pet/bumbles/update_mobility()
|
||||||
|
. = ..()
|
||||||
|
if(stat != DEAD)
|
||||||
|
if(!CHECK_MOBILITY(src, MOBILITY_STAND))
|
||||||
|
icon_state = "[icon_living]_rest"
|
||||||
|
else
|
||||||
|
icon_state = "[icon_living]"
|
||||||
|
regenerate_icons()
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
|
|||||||
INVOKE_ASYNC(src, .proc/arena_checks)
|
INVOKE_ASYNC(src, .proc/arena_checks)
|
||||||
if(TUMOR_INACTIVE)
|
if(TUMOR_INACTIVE)
|
||||||
activity = TUMOR_ACTIVE
|
activity = TUMOR_ACTIVE
|
||||||
var/mob/dead/observer/elitemind = null
|
var/mob/elitemind = null
|
||||||
visible_message("<span class='boldwarning'>[src] begins to convulse. Your instincts tell you to step back.</span>")
|
visible_message("<span class='boldwarning'>[src] begins to convulse. Your instincts tell you to step back.</span>")
|
||||||
activator = user
|
activator = user
|
||||||
if(!boosted)
|
if(!boosted)
|
||||||
|
|||||||
@@ -443,10 +443,10 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
|||||||
var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/)
|
var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/)
|
||||||
if(A)
|
if(A)
|
||||||
poll_message = "[poll_message] Status:[A.name]."
|
poll_message = "[poll_message] Status:[A.name]."
|
||||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M)
|
var/list/mob/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M)
|
||||||
|
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
to_chat(M, "Your mob has been taken over by a ghost!")
|
to_chat(M, "Your mob has been taken over by a ghost!")
|
||||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)])")
|
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)])")
|
||||||
M.ghostize(FALSE, TRUE)
|
M.ghostize(FALSE, TRUE)
|
||||||
|
|||||||
@@ -339,7 +339,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
|||||||
else
|
else
|
||||||
// Pass all the gas related code an empty gas container
|
// Pass all the gas related code an empty gas container
|
||||||
removed = new()
|
removed = new()
|
||||||
damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
|
|
||||||
damage_archived = damage
|
damage_archived = damage
|
||||||
if(!removed || !removed.total_moles() || isspaceturf(T)) //we're in space or there is no gas to process
|
if(!removed || !removed.total_moles() || isspaceturf(T)) //we're in space or there is no gas to process
|
||||||
if(takes_damage)
|
if(takes_damage)
|
||||||
|
|||||||
@@ -680,7 +680,7 @@
|
|||||||
|
|
||||||
var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm
|
var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm
|
||||||
if(LAZYLEN(candidates))
|
if(LAZYLEN(candidates))
|
||||||
var/mob/dead/observer/C = pick(candidates)
|
var/mob/C = pick(candidates)
|
||||||
C.transfer_ckey(SM, FALSE)
|
C.transfer_ckey(SM, FALSE)
|
||||||
SM.mind.enslave_mind_to_creator(user)
|
SM.mind.enslave_mind_to_creator(user)
|
||||||
SM.sentience_act()
|
SM.sentience_act()
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Xantholne"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "Bumbles is now actually in every station's hydroponics."
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
author: "Putnam3145"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "CTF spawns, random animals and possessed blades can now be pinged for ghost roles."
|
||||||
|
- bugfix: "A bunch of polls now work with ghost role eligible non-observers."
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "kevinz000"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- balance: "stunprods knockdown again."
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Detective-Google"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- balance: "Medical no longer spawns with syringe guns, Medical now spawns with medidart guns."
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Putnam3145"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Removes superfluous line in supermatter processing."
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Putnam3145"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- code_imp: "Power sink objective processing now makes sense."
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Xantholne"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Bumbles will now actually rest, sit up, and buzz"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Ghommie"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Fixed permanent slapstick comedy pie'd overlay for snouted humanoids."
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
author: "dapnee"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "Robotic's APC, a few missing buttons (bridge shutters and crematorium), paramedic has spawn locations now, two rapid cable deployers to engineering"
|
||||||
|
- tweak: "Renamed some doors and edited engineering to be a bit more open in one spot"
|
||||||
|
- bugfix: "a few APCs with bad area tags, access on maintenance doors fixed, engine APC is now connected to the grid instead of power created by the engine"
|
||||||
|
- rscdel: "the two syringe guns in medical were removed"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
author: "dapnee"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "couple gas masks around atmos"
|
||||||
|
- bugfix: "direction on turbine plasma pressure tank, cloning actually has a cloning console now"
|
||||||
Reference in New Issue
Block a user