Due to recent shutdowns of the Exploration and Colonization department shortly after this gateway was delivered on-site during station construction, this room has been condemmed and an engineering team will be on-site within the next few months to recollect the gate. Thank you for your cooperation.";
name = "NOTICE - GATEWAY STATUS"
},
/obj/effect/turf_decal/stripes/asteroid/line{
@@ -41030,7 +41022,7 @@
/obj/machinery/door/window{
dir = 8;
icon_state = "right";
- name = "Hydroponics Delievery Chute";
+ name = "Hydroponics Delivery Chute";
opacity = 1;
req_access_txt = "33"
},
@@ -44069,7 +44061,7 @@
/area/engine/atmos)
"bDT" = (
/obj/machinery/door/airlock/maintenance{
- name = "Atmospehrics Maintenance";
+ name = "Atmospherics Maintenance";
req_access_txt = "12;24"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -51225,7 +51217,7 @@
/obj/machinery/door/window{
dir = 8;
icon_state = "right";
- name = "Engineering Delievery Chute";
+ name = "Engineering Delivery Chute";
opacity = 1;
req_access_txt = "10"
},
@@ -70547,7 +70539,7 @@
/obj/machinery/door/window{
dir = 8;
icon_state = "right";
- name = "Research Delievery Chute";
+ name = "Research Delivery Chute";
opacity = 1;
req_access_txt = "55"
},
@@ -72160,10 +72152,9 @@
},
/area/quartermaster/sorting)
"cEr" = (
-/obj/machinery/door/window/brigdoor/westleft{
+/obj/machinery/door/window/brigdoor/security/cell/westleft{
id = "Cell 3";
- name = "Cell Door 3";
- req_access_txt = "1"
+ name = "Cell Door 3"
},
/turf/open/floor/plasteel/red{
baseturf = /turf/open/floor/plating/asteroid/airless
@@ -73586,9 +73577,8 @@
d2 = 8;
icon_state = "1-8"
},
-/obj/machinery/door/window/brigdoor{
- name = "Holding Cell";
- req_access_txt = "2"
+/obj/machinery/door/window/brigdoor/security/holding{
+ name = "Holding Cell"
},
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/airless
@@ -73672,7 +73662,7 @@
"cHq" = (
/obj/structure/disposalpipe/trunk,
/obj/machinery/disposal/deliveryChute{
- desc = "A chute for big and small crimnals alike!";
+ desc = "A chute for big and small criminals alike!";
dir = 1;
name = "Criminal Delivery Chute"
},
@@ -75086,7 +75076,7 @@
dir = 8
},
/obj/machinery/disposal/deliveryChute{
- desc = "A chute for big and small crimnals alike!";
+ desc = "A chute for big and small criminals alike!";
dir = 1;
name = "Criminal Delivery Chute"
},
@@ -76293,7 +76283,7 @@
"cMw" = (
/obj/machinery/power/apc{
dir = 1;
- name = "Port Asteroid Maintence APC";
+ name = "Port Asteroid Maintenance APC";
pixel_y = 24
},
/obj/structure/cable/orange{
@@ -84559,7 +84549,7 @@
/obj/machinery/atmospherics/components/trinary/filter{
dir = 2;
filter_type = "n2";
- name = "nitogren filter";
+ name = "nitrogen filter";
on = 1
},
/obj/structure/window/reinforced{
@@ -88013,7 +88003,7 @@
},
/area/security/prison)
"dmi" = (
-/obj/machinery/door/window/brigdoor/northleft{
+/obj/machinery/door/window/brigdoor/security/cell/northleft{
id = "Cell 5";
name = "Cell Door 5"
},
@@ -88432,7 +88422,7 @@
},
/area/security/prison)
"dnc" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 7";
name = "Cell Door 7"
},
@@ -90911,10 +90901,9 @@
},
/area/security/armory)
"drT" = (
-/obj/machinery/door/window/brigdoor/westleft{
+/obj/machinery/door/window/brigdoor/security/cell/westleft{
id = "Cell 1";
- name = "Cell Door 1";
- req_access_txt = "1"
+ name = "Cell Door 1"
},
/turf/open/floor/plasteel/red{
baseturf = /turf/open/floor/plating/asteroid/airless
@@ -90931,7 +90920,7 @@
},
/area/security/prison)
"drV" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 10";
name = "Cell Door 10"
},
diff --git a/_maps/map_files/Cerestation/cerestation.dmm.rej b/_maps/map_files/Cerestation/cerestation.dmm.rej
new file mode 100644
index 0000000000..b003bc1f30
--- /dev/null
+++ b/_maps/map_files/Cerestation/cerestation.dmm.rej
@@ -0,0 +1,10 @@
+diff a/_maps/map_files/Cerestation/cerestation.dmm b/_maps/map_files/Cerestation/cerestation.dmm (rejected hunks)
+@@ -94667,7 +94667,7 @@
+ "dzo" = (
+ /obj/machinery/power/apc{
+ dir = 2;
+- name = "Starboard Asteroid Maintenace APC";
++ name = "Starboard Asteroid Maintenance APC";
+ pixel_y = -24
+ },
+ /obj/effect/turf_decal/stripes/end{
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 7f26536fb2..574dcbb095 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -6245,7 +6245,7 @@
/obj/machinery/conveyor_switch/oneway{
convdir = -1;
id = "garbage";
- name = "disposal coveyor"
+ name = "disposal conveyor"
},
/obj/structure/disposalpipe/segment{
dir = 4
@@ -15501,7 +15501,7 @@
/obj/machinery/conveyor_switch/oneway{
convdir = -1;
id = "cargodeliver";
- name = "delivery coveyor";
+ name = "delivery conveyor";
pixel_x = -12
},
/turf/open/floor/plasteel/loadingarea,
@@ -24362,7 +24362,7 @@
icon_state = "1-2"
},
/obj/machinery/door/airlock/maintenance_hatch{
- name = "Hydroponic's Maintenance";
+ name = "Hydroponics Maintenance";
req_access_txt = "35"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -28752,7 +28752,7 @@
/obj/machinery/atmospherics/components/trinary/filter{
dir = 1;
filter_type = "n2";
- name = "nitogren filter";
+ name = "nitrogen filter";
on = 1
},
/turf/open/floor/plasteel/red/side{
@@ -33965,7 +33965,7 @@
icon_state = "2-8"
},
/obj/machinery/door/airlock/glass_security{
- name = "Security Transfering Control";
+ name = "Security Transferring Control";
req_access_txt = "63"
},
/obj/structure/disposalpipe/segment{
@@ -35473,7 +35473,7 @@
/obj/structure/cable/white,
/obj/machinery/power/apc{
dir = 2;
- name = "Security Transfering APC";
+ name = "Security Transferring APC";
pixel_y = -26
},
/turf/open/floor/plasteel/red/side,
@@ -36206,7 +36206,7 @@
icon_state = "2-4"
},
/obj/machinery/door/airlock/glass_security{
- name = "Security Transfering Control";
+ name = "Security Transferring Control";
req_access_txt = "63"
},
/obj/structure/disposalpipe/segment,
@@ -37255,7 +37255,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/bonfire,
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice{
- desc = "For the weary spacemen on their quest to rekindle the first plasmafire.";
+ desc = "For the weary spacemen on their quest to rekindle the first plasma fire.";
name = "Carton of Estus"
},
/obj/item/weapon/nullrod/claymore/glowing{
@@ -37921,7 +37921,7 @@
"bwk" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security{
- name = "Security Transfering Center";
+ name = "Security Transferring Center";
req_access_txt = "63"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -41242,7 +41242,7 @@
},
/obj/machinery/door/airlock/glass_security{
id_tag = "gulagdoor";
- name = "Security Transfering Center";
+ name = "Security Transferring Center";
req_access_txt = "63"
},
/turf/open/floor/plasteel/red/side{
@@ -43257,10 +43257,9 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/window/brigdoor/westright{
+/obj/machinery/door/window/brigdoor/security/cell/westright{
id = "brig1";
- name = "Cell 1";
- req_access_txt = "2"
+ name = "Cell 1"
},
/turf/open/floor/plasteel/red/side{
dir = 8
@@ -43900,7 +43899,7 @@
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
- name = "Telecoms Control Room";
+ name = "Telecomms Control Room";
req_access = null;
req_access_txt = "19; 61"
},
@@ -44937,7 +44936,7 @@
/obj/machinery/power/apc{
cell_type = 10000;
dir = 1;
- name = "Telecoms Monitoring APC";
+ name = "Telecomms Monitoring APC";
pixel_y = 28
},
/obj/item/weapon/twohanded/required/kirbyplants/random,
@@ -47264,10 +47263,9 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/window/brigdoor/westright{
+/obj/machinery/door/window/brigdoor/security/cell/westright{
id = "brig2";
- name = "Cell 2";
- req_access_txt = "2"
+ name = "Cell 2"
},
/turf/open/floor/plasteel/red/side{
dir = 8
@@ -49260,7 +49258,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
cyclelinkeddir = 2;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -51821,7 +51819,7 @@
},
/obj/machinery/door/airlock/command{
cyclelinkeddir = 1;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -54542,7 +54540,7 @@
"bZV" = (
/obj/machinery/power/apc{
dir = 8;
- name = "Telecoms Server Room APC";
+ name = "Telecomms Server Room APC";
pixel_x = -26
},
/obj/structure/cable/white,
@@ -56006,9 +56004,8 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/window/brigdoor/westright{
- name = "Holding Cell";
- req_access_txt = "63"
+/obj/machinery/door/window/brigdoor/security/holding/westright{
+ name = "Holding Cell"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -57407,7 +57404,7 @@
},
/obj/machinery/door/airlock/command{
cyclelinkeddir = 2;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -58821,7 +58818,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
cyclelinkeddir = 1;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -61058,7 +61055,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
cyclelinkeddir = 0;
- name = "Telecoms Foyer";
+ name = "Telecomms Foyer";
req_access = null;
req_access_txt = "61"
},
@@ -78301,7 +78298,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemisttop";
- name = "Chemisty Lobby Shutters"
+ name = "Chemistry Lobby Shutters"
},
/turf/open/floor/plating,
/area/medical/medbay/central)
@@ -78309,7 +78306,7 @@
/obj/structure/grille,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemisttop";
- name = "Chemisty Lobby Shutters"
+ name = "Chemistry Lobby Shutters"
},
/obj/structure/window/reinforced/fulltile,
/turf/open/floor/plating,
@@ -78319,7 +78316,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemisttop";
- name = "Chemisty Lobby Shutters"
+ name = "Chemistry Lobby Shutters"
},
/obj/machinery/door/window/southleft{
name = "Chemistry Desk";
@@ -79208,7 +79205,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Side Shutters"
+ name = "Chemistry Side Shutters"
},
/turf/open/floor/plating,
/area/medical/chemistry)
@@ -82122,7 +82119,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Side Shutters"
+ name = "Chemistry Side Shutters"
},
/obj/structure/disposalpipe/segment{
dir = 4
@@ -82706,7 +82703,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Side Shutters"
+ name = "Chemistry Side Shutters"
},
/obj/machinery/door/window/southleft{
dir = 4;
@@ -93226,6 +93223,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/aug_manipulator,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"dxQ" = (
@@ -96171,7 +96169,7 @@
/area/science/test_area)
"dDJ" = (
/obj/machinery/doppler_array{
- dir = 4
+ dir = 8
},
/obj/structure/extinguisher_cabinet{
pixel_x = -26;
@@ -109056,7 +109054,7 @@
/obj/structure/table/reinforced,
/obj/machinery/microwave{
desc = "It looks really dirty.";
- name = "maint microwave";
+ name = "maintenance microwave";
pixel_y = 5
},
/obj/structure/sign/poster/official/help_others{
@@ -110520,7 +110518,7 @@
},
/obj/machinery/power/apc{
dir = 4;
- name = "Starboard Quarter Maintenace APC";
+ name = "Starboard Quarter Maintenance APC";
pixel_x = 26
},
/turf/open/floor/plating,
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm.rej b/_maps/map_files/Deltastation/DeltaStation2.dmm.rej
new file mode 100644
index 0000000000..4b97f76ae0
--- /dev/null
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm.rej
@@ -0,0 +1,37 @@
+diff a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm (rejected hunks)
+@@ -156131,16 +156132,16 @@ cim
+ brN
+ brN
+ bqq
+-coe
++bkT
+ cpL
+-cqZ
++brH
+ csr
+-cub
++bmI
+ cvE
+ cwY
+-cqZ
+-cqZ
+-cqZ
++brH
++brH
++brH
+ brH
+ bkT
+ cFG
+@@ -156166,10 +156167,10 @@ djZ
+ dlM
+ dnc
+ doh
+-dpQ
++dnc
+ drt
+ dsT
+-dpQ
++dnc
+ ego
+ dwO
+ dyc
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index c63e8b3f37..a7db1e0909 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -4282,7 +4282,7 @@
/obj/machinery/conveyor_switch/oneway{
convdir = -1;
id = "garbage";
- name = "disposal coveyor"
+ name = "disposal conveyor"
},
/turf/open/floor/plating,
/area/maintenance/disposal)
@@ -12890,10 +12890,9 @@
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 1";
- name = "Cell 1";
- req_access_txt = "2"
+ name = "Cell 1"
},
/turf/open/floor/plasteel/red/side,
/area/security/brig)
@@ -12925,10 +12924,9 @@
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 2";
- name = "Cell 2";
- req_access_txt = "2"
+ name = "Cell 2"
},
/turf/open/floor/plasteel/red/side,
/area/security/brig)
@@ -12948,10 +12946,9 @@
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 3";
- name = "Cell 3";
- req_access_txt = "2"
+ name = "Cell 3"
},
/turf/open/floor/plasteel/red/side,
/area/security/brig)
@@ -13009,10 +13006,9 @@
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/holding{
id = "Holding Cell";
- name = "Holding Cell";
- req_access_txt = "2"
+ name = "Holding Cell"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/red/side,
@@ -33818,7 +33814,7 @@
/area/quartermaster/office)
"bmj" = (
/obj/structure/sign/directions/engineering{
- desc = "A direction sign, pointing out which way the Suuply department is.";
+ desc = "A direction sign, pointing out which way the Supply department is.";
dir = 1;
icon_state = "direction_supply";
name = "cargo department";
@@ -38107,7 +38103,7 @@
/area/tcommsat/computer)
"btN" = (
/obj/machinery/door/airlock/hatch{
- name = "Telecoms Control Room";
+ name = "Telecomms Control Room";
req_one_access_txt = "19; 61"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -38989,7 +38985,7 @@
/obj/item/device/radio/intercom{
dir = 8;
freerange = 1;
- name = "Station Intercom (Telecoms)";
+ name = "Station Intercom (Telecomms)";
pixel_y = 30
},
/obj/structure/table/wood,
@@ -39938,7 +39934,7 @@
"bxs" = (
/obj/machinery/computer/security/telescreen{
dir = 8;
- name = "Telecoms Camera Monitor";
+ name = "Telecomms Camera Monitor";
network = list("tcomm");
pixel_x = 26
},
@@ -41032,7 +41028,7 @@
/obj/machinery/power/apc{
cell_type = 5000;
dir = 4;
- name = "Telecoms Control Room APC";
+ name = "Telecomms Control Room APC";
pixel_x = 26
},
/obj/machinery/computer/telecomms/server{
@@ -41770,9 +41766,9 @@
"bBa" = (
/obj/machinery/requests_console{
announcementConsole = 1;
- department = "Telecoms Admin";
+ department = "Telecomms Admin";
departmentType = 5;
- name = "Telecoms RC";
+ name = "Telecomms RC";
pixel_y = -30
},
/obj/machinery/firealarm{
@@ -42548,7 +42544,7 @@
/area/tcommsat/server)
"bCF" = (
/obj/machinery/door/airlock/hatch{
- name = "Telecoms Server Room"
+ name = "Telecomms Server Room"
},
/obj/structure/cable/yellow{
d1 = 1;
@@ -43264,7 +43260,7 @@
"bEf" = (
/obj/machinery/telecomms/processor/preset_one,
/obj/machinery/camera{
- c_tag = "Telecoms - Server Room - Fore-Port";
+ c_tag = "Telecomms - Server Room - Fore-Port";
dir = 2;
network = list("SS13","tcomm")
},
@@ -43314,7 +43310,7 @@
"bEk" = (
/obj/machinery/telecomms/processor/preset_three,
/obj/machinery/camera{
- c_tag = "Telecoms - Server Room - Fore-Starboard";
+ c_tag = "Telecomms - Server Room - Fore-Starboard";
dir = 2;
network = list("SS13","tcomm")
},
@@ -45976,7 +45972,7 @@
/obj/item/weapon/folder,
/obj/item/weapon/folder,
/obj/machinery/camera{
- c_tag = "Telecoms - Control Room";
+ c_tag = "Telecomms - Control Room";
dir = 1;
network = list("SS13","tcomm")
},
@@ -46611,7 +46607,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/engineering{
- name = "Telecoms Storage";
+ name = "Telecomms Storage";
req_access_txt = "61"
},
/obj/structure/cable/yellow{
@@ -47378,7 +47374,7 @@
dir = 1
},
/obj/machinery/camera{
- c_tag = "Telecoms - Storage";
+ c_tag = "Telecomms - Storage";
dir = 4;
network = list("SS13")
},
@@ -47552,7 +47548,7 @@
dir = 8
},
/obj/machinery/camera{
- c_tag = "Telecoms - Server Room - Aft-Port";
+ c_tag = "Telecomms - Server Room - Aft-Port";
dir = 4;
network = list("SS13","tcomm")
},
@@ -47599,14 +47595,14 @@
/obj/machinery/power/apc{
cell_type = 5000;
dir = 4;
- name = "Telecoms Server Room APC";
+ name = "Telecomms Server Room APC";
pixel_x = 25
},
/obj/machinery/light/small{
dir = 4
},
/obj/machinery/camera{
- c_tag = "Telecoms - Server Room - Aft-Starboard";
+ c_tag = "Telecomms - Server Room - Aft-Starboard";
dir = 8;
network = list("SS13","tcomm")
},
@@ -47974,7 +47970,7 @@
/area/bridge/showroom/corporate)
"bNb" = (
/obj/structure/sign/atmosplaque{
- desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern repair drones, as well as the development of the uncorruptable cyborg servants of tomorrow, available today.";
+ desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today.";
icon_state = "kiddieplaque";
name = "\improper 'Perfect Drone' sign";
pixel_y = 32
@@ -48362,7 +48358,7 @@
},
/obj/machinery/power/apc{
dir = 8;
- name = "Telecoms Storage APC";
+ name = "Telecomms Storage APC";
pixel_x = -28
},
/obj/structure/cable/yellow{
@@ -48500,7 +48496,7 @@
"bNZ" = (
/obj/machinery/light/small,
/obj/machinery/camera{
- c_tag = "Telecoms - Server Room - Aft";
+ c_tag = "Telecomms - Server Room - Aft";
dir = 1;
network = list("SS13","tcomm")
},
@@ -49561,7 +49557,7 @@
"bQj" = (
/obj/machinery/cell_charger,
/obj/item/weapon/stock_parts/cell/crap{
- name = "\improper NanoTrasen-brand rechargable AA battery"
+ name = "\improper NanoTrasen-brand rechargeable AA battery"
},
/obj/structure/table/wood,
/turf/open/floor/carpet,
@@ -50234,9 +50230,7 @@
pixel_x = -4;
pixel_y = 1
},
-/obj/item/clothing/mask/cigarette/cigar/cohiba{
- name = "cohiba robusto cigar"
- },
+/obj/item/clothing/mask/cigarette/cigar/cohiba,
/obj/structure/table/wood,
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
@@ -50247,7 +50241,7 @@
icon_state = "4-8"
},
/obj/structure/showcase{
- desc = "A slightly battered looking TV. Vaious Nanotrasen infomercials play on a loop, accompanied by a jaunty tune.";
+ desc = "A slightly battered looking TV. Various Nanotrasen infomercials play on a loop, accompanied by a jaunty tune.";
dir = 1;
icon = 'icons/obj/computer.dmi';
icon_state = "television";
@@ -71207,6 +71201,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/machinery/aug_manipulator,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"cFe" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm.rej b/_maps/map_files/MetaStation/MetaStation.dmm.rej
new file mode 100644
index 0000000000..553b988622
--- /dev/null
+++ b/_maps/map_files/MetaStation/MetaStation.dmm.rej
@@ -0,0 +1,37 @@
+diff a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm (rejected hunks)
+@@ -45922,7 +45922,7 @@
+ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ dir = 8;
+ frequency = 1441;
+- id_tag = "n2o_out"
++ id_tag = "n2o_out";
+ name = "n2o out"
+ },
+ /turf/open/floor/engine/n2o,
+@@ -49223,7 +49223,7 @@
+ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ dir = 8;
+ frequency = 1441;
+- id_tag = "tox_out"
++ id_tag = "tox_out";
+ name = "toxin out"
+ },
+ /turf/open/floor/engine/plasma,
+@@ -52023,7 +52023,7 @@
+ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ dir = 8;
+ frequency = 1441;
+- id_tag = "co2_out"
++ id_tag = "co2_out";
+ name = "co2 out"
+ },
+ /turf/open/floor/engine/co2,
+@@ -58890,7 +58890,7 @@
+ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ dir = 1;
+ frequency = 1441;
+- id_tag = "n2_out"
++ id_tag = "n2_out";
+ name = "n2 out"
+ },
+ /turf/open/floor/engine/n2,
diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm
index d5d795af3c..f8bf06a40c 100644
--- a/_maps/map_files/Mining/Lavaland.dmm
+++ b/_maps/map_files/Mining/Lavaland.dmm
@@ -62,7 +62,7 @@
/turf/closed/mineral/random/volcanic,
/area/lavaland/surface/outdoors)
"aj" = (
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"ak" = (
/turf/closed/mineral/random/volcanic,
@@ -82,27 +82,19 @@
/area/lavaland/surface/outdoors)
"ap" = (
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"aq" = (
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/laborcamp)
"ar" = (
/obj/structure/table,
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"as" = (
/obj/structure/table,
/obj/item/weapon/storage/firstaid/regular,
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"at" = (
/obj/structure/bed,
@@ -112,9 +104,7 @@
dir = 8;
network = list("Labor")
},
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"au" = (
/obj/structure/rack{
@@ -124,9 +114,7 @@
/obj/item/weapon/pickaxe,
/obj/item/device/flashlight,
/obj/item/clothing/glasses/meson,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"av" = (
/obj/structure/rack{
@@ -136,39 +124,29 @@
/obj/item/device/flashlight,
/obj/item/weapon/pickaxe,
/obj/item/clothing/glasses/meson,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aw" = (
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors/explored)
"ax" = (
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"ay" = (
/obj/machinery/light/small{
dir = 4
},
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"az" = (
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aA" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/machinery/light/small{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aB" = (
/obj/machinery/door/airlock/glass_medical{
@@ -176,9 +154,7 @@
name = "Infirmary";
req_access_txt = "0"
},
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"aC" = (
/obj/structure/closet/crate/internals,
@@ -190,9 +166,7 @@
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aD" = (
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -205,78 +179,59 @@
pixel_y = 24;
prison_radio = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aF" = (
/obj/machinery/door/airlock{
name = "Labor Camp Storage"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aG" = (
/obj/structure/table,
/obj/item/trash/plate,
/obj/item/weapon/kitchen/fork,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aH" = (
/obj/structure/chair{
dir = 8
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aI" = (
/obj/machinery/door/airlock{
name = "Labor Camp External Access"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aJ" = (
/obj/machinery/light/small{
dir = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aK" = (
/obj/structure/chair{
dir = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aL" = (
/obj/machinery/door/airlock{
name = "Vending"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aM" = (
/obj/machinery/light/small,
/turf/open/floor/plasteel/loadingarea{
- dir = 4;
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ dir = 4
},
/area/mine/laborcamp)
"aN" = (
/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aO" = (
/obj/machinery/camera{
@@ -288,17 +243,13 @@
/area/lavaland/surface/outdoors)
"aP" = (
/obj/machinery/vending/sustenance,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aQ" = (
/obj/machinery/light/small{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aR" = (
/obj/machinery/shower{
@@ -314,9 +265,7 @@
input_dir = 1;
output_dir = 2
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"aT" = (
/obj/structure/ore_box,
@@ -326,28 +275,14 @@
/obj/machinery/flasher{
id = "Labor"
},
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
-/area/mine/laborcamp)
-"aV" = (
-/obj/structure/sink/kitchen{
- dir = 4;
- icon_state = "sink_alt";
- pixel_x = -13
- },
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/laborcamp)
"aW" = (
/obj/machinery/conveyor{
dir = 2;
id = "gulag"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"aX" = (
/obj/structure/closet/crate,
@@ -358,9 +293,7 @@
name = "Labor Camp Shuttle Security Airlock";
req_access_txt = "2"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"aZ" = (
/obj/machinery/light/small{
@@ -372,76 +305,56 @@
pixel_y = 28;
req_access_txt = "2"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"ba" = (
/obj/machinery/door/poddoor/preopen{
id = "Labor";
name = "labor camp blast door"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bb" = (
/obj/machinery/camera{
c_tag = "Labor Camp Central";
network = list("Labor")
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bc" = (
/obj/machinery/conveyor_switch/oneway{
id = "gulag"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bd" = (
/obj/machinery/mineral/processing_unit_console{
dir = 2;
machinedir = 4
},
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/laborcamp)
"be" = (
/obj/machinery/mineral/processing_unit{
dir = 1;
output_dir = 2
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"bf" = (
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/eva)
"bg" = (
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/eva)
"bh" = (
/obj/machinery/computer/shuttle/labor/one_way,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bi" = (
/obj/structure/gulag_beacon,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bj" = (
/obj/machinery/status_display{
@@ -449,13 +362,10 @@
layer = 4;
pixel_y = 32
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bk" = (
/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/laborcamp)
@@ -464,18 +374,14 @@
dir = 8;
id = "gulag"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"bm" = (
/obj/machinery/conveyor{
dir = 10;
id = "gulag"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"bn" = (
/obj/structure/table,
@@ -485,34 +391,27 @@
/obj/item/device/gps/mining,
/obj/item/device/gps/mining,
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 9
},
/area/mine/eva)
"bo" = (
/obj/machinery/suit_storage_unit/mining,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/eva)
"bp" = (
/obj/machinery/suit_storage_unit/mining,
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 5
},
/area/mine/eva)
"bq" = (
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/production)
"br" = (
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"bs" = (
/obj/machinery/camera{
@@ -533,21 +432,17 @@
pixel_y = -1
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/eva)
"bt" = (
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bu" = (
/obj/machinery/light_switch{
pixel_x = 27
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/eva)
@@ -562,9 +457,7 @@
name = "Labor Camp Shuttle Prisoner Airlock";
req_access_txt = "0"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"by" = (
/obj/structure/cable{
@@ -572,9 +465,7 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bz" = (
/obj/structure/cable{
@@ -582,9 +473,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bA" = (
/obj/machinery/door/airlock/glass_security{
@@ -596,9 +485,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bB" = (
/obj/machinery/power/apc{
@@ -615,9 +502,7 @@
icon_state = "0-2";
d2 = 2
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bC" = (
/obj/machinery/airalarm{
@@ -628,7 +513,6 @@
req_access = "0"
},
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/production)
@@ -636,21 +520,16 @@
/obj/structure/closet/crate,
/obj/item/weapon/dice/d4,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/production)
"bE" = (
/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/production)
"bF" = (
/obj/effect/spawner/structure/window,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/eva)
"bG" = (
/obj/structure/table,
@@ -659,28 +538,22 @@
/obj/item/stack/packageWrap,
/obj/item/weapon/hand_labeler,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/eva)
"bH" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bI" = (
/obj/structure/tank_dispenser/oxygen,
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/eva)
"bJ" = (
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/eva)
@@ -692,9 +565,7 @@
/obj/machinery/shower{
dir = 8
},
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/eva)
"bL" = (
/obj/machinery/door/airlock/glass_security{
@@ -706,9 +577,7 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp)
"bM" = (
/obj/machinery/door/airlock/maintenance{
@@ -720,9 +589,7 @@
d2 = 10;
icon_state = "1-10"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"bN" = (
/obj/structure/sign/securearea{
@@ -730,21 +597,16 @@
name = "KEEP CLEAR: DOCKING AREA"
},
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"bO" = (
/obj/item/device/radio/beacon,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
"bP" = (
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"bQ" = (
/obj/structure/cable{
@@ -755,9 +617,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"bR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -769,7 +629,6 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -786,9 +645,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bT" = (
/obj/structure/cable{
@@ -805,7 +662,6 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/eva)
@@ -818,21 +674,16 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bW" = (
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/eva)
@@ -843,13 +694,10 @@
opacity = 0;
req_access_txt = "54"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/eva)
"bY" = (
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/eva)
@@ -857,9 +705,7 @@
/turf/closed/mineral/random/volcanic,
/area/lavaland/surface/outdoors/explored)
"ca" = (
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/laborcamp/security)
"cb" = (
/obj/structure/table,
@@ -867,9 +713,7 @@
/obj/machinery/light/small{
dir = 8
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"cc" = (
/obj/structure/chair/office/dark,
@@ -882,9 +726,7 @@
desc = "Powered by the tears and sweat of laborers.";
name = "Prison Ofitser"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"cd" = (
/obj/structure/table,
@@ -906,9 +748,7 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"ce" = (
/obj/structure/cable{
@@ -921,9 +761,7 @@
d2 = 6;
icon_state = "5-6"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cf" = (
/obj/machinery/power/terminal,
@@ -931,22 +769,16 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cg" = (
/obj/machinery/light/small{
dir = 1
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"ch" = (
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cj" = (
/obj/machinery/door/airlock/external{
@@ -955,13 +787,10 @@
opacity = 0;
req_access_txt = "0"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"ck" = (
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -969,9 +798,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"cm" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -982,13 +809,10 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"cn" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -1002,40 +826,32 @@
/obj/structure/cable,
/obj/machinery/recharge_station,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/eva)
"cp" = (
/obj/machinery/mech_bay_recharge_port,
/obj/structure/cable,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/eva)
"cq" = (
-/turf/open/floor/mech_bay_recharge_floor{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/mech_bay_recharge_floor,
/area/mine/eva)
"cr" = (
/obj/machinery/computer/mech_bay_power_console,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/eva)
"cs" = (
/obj/structure/closet/emcloset,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/eva)
"ct" = (
/obj/structure/ore_box,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/eva)
@@ -1049,33 +865,25 @@
/area/lavaland/surface/outdoors)
"cw" = (
/obj/machinery/computer/secure_data,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"cx" = (
/obj/machinery/computer/security{
name = "Labor Camp Monitoring";
network = list("Labor")
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"cy" = (
/obj/machinery/computer/prisoner,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"cz" = (
/obj/machinery/power/port_gen/pacman{
anchored = 1
},
/obj/structure/cable,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cA" = (
/obj/machinery/power/smes{
@@ -1090,25 +898,18 @@
d2 = 9;
icon_state = "0-9"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cB" = (
/obj/machinery/portable_atmospherics/canister/air,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cC" = (
/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp)
"cD" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/production)
@@ -1119,31 +920,24 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"cF" = (
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
"cG" = (
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/laborcamp/security)
"cH" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
"cI" = (
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -1152,28 +946,20 @@
name = "Closet";
req_access_txt = "0"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"cK" = (
/obj/machinery/light/small{
dir = 1
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"cL" = (
/obj/machinery/space_heater,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"cM" = (
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/living_quarters)
"cN" = (
/obj/structure/sign/securearea{
@@ -1181,9 +967,7 @@
icon_state = "shock";
name = "HIGH VOLTAGE"
},
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/living_quarters)
"cO" = (
/obj/item/device/radio/intercom{
@@ -1192,7 +976,6 @@
pixel_x = -28
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -1201,20 +984,15 @@
pixel_x = 30
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
"cQ" = (
-/turf/closed/wall/r_wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall/r_wall,
/area/mine/maintenance)
"cR" = (
/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cS" = (
/obj/machinery/power/smes{
@@ -1224,9 +1002,7 @@
icon_state = "0-4";
d2 = 4
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cT" = (
/obj/structure/cable{
@@ -1238,9 +1014,7 @@
dir = 1
},
/obj/structure/closet/crate/secure/loot,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cU" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
@@ -1249,20 +1023,14 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cV" = (
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cW" = (
/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"cX" = (
/obj/machinery/power/apc{
@@ -1279,7 +1047,6 @@
dir = 8
},
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -1295,14 +1062,11 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"cZ" = (
/obj/machinery/mineral/equipment_vendor,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 5
},
/area/mine/production)
@@ -1310,16 +1074,13 @@
/obj/machinery/mineral/mint{
input_dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"db" = (
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -1330,9 +1091,7 @@
pixel_y = 23
},
/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dd" = (
/obj/structure/extinguisher_cabinet{
@@ -1345,27 +1104,19 @@
info = "A hastily written note has been scribbled here...
Please use the ore redemption machine in the cargo office for smelting. PLEASE!
--The Research Staff";
name = "URGENT!"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"de" = (
/obj/structure/ore_box,
/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"df" = (
/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dg" = (
-/turf/open/floor/circuit{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/circuit,
/area/mine/maintenance)
"dh" = (
/obj/structure/cable{
@@ -1379,9 +1130,7 @@
pixel_x = 1;
pixel_y = 25
},
-/turf/open/floor/plasteel/black{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/black,
/area/mine/maintenance)
"di" = (
/obj/machinery/telecomms/relay/preset/mining,
@@ -1389,23 +1138,18 @@
dir = 1
},
/turf/open/floor/plasteel/vault{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/maintenance)
"dj" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/plasteel/black{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/black,
/area/mine/maintenance)
"dk" = (
/obj/machinery/airalarm{
pixel_y = 24
},
-/turf/open/floor/circuit{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/circuit,
/area/mine/maintenance)
"dl" = (
/obj/machinery/light/small{
@@ -1417,13 +1161,11 @@
},
/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whiteblue/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
"dm" = (
/turf/open/floor/plasteel/whiteblue/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
@@ -1434,7 +1176,6 @@
pixel_y = 3
},
/turf/open/floor/plasteel/whiteblue/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 5
},
/area/mine/living_quarters)
@@ -1446,9 +1187,7 @@
icon_state = "0-2";
d2 = 2
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dp" = (
/obj/structure/cable{
@@ -1459,26 +1198,20 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dq" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dr" = (
/obj/machinery/atmospherics/components/unary/tank/air{
dir = 8
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"ds" = (
/obj/machinery/mineral/equipment_vendor,
@@ -1489,19 +1222,14 @@
"dt" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"du" = (
-/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/loadingarea,
/area/mine/production)
"dv" = (
/turf/open/floor/plasteel/loadingarea{
- dir = 4;
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ dir = 4
},
/area/mine/production)
"dw" = (
@@ -1509,9 +1237,7 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dx" = (
/obj/structure/cable{
@@ -1519,9 +1245,7 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/open/floor/circuit{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/circuit,
/area/mine/maintenance)
"dy" = (
/obj/structure/cable{
@@ -1532,9 +1256,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/turf/open/floor/plasteel/black{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/black,
/area/mine/maintenance)
"dz" = (
/obj/machinery/light_switch{
@@ -1543,9 +1265,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/turf/open/floor/circuit{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/circuit,
/area/mine/maintenance)
"dA" = (
/obj/machinery/camera{
@@ -1553,9 +1273,7 @@
dir = 8;
network = list("MINE")
},
-/turf/open/floor/circuit{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/circuit,
/area/mine/maintenance)
"dB" = (
/obj/structure/closet/crate/freezer,
@@ -1586,26 +1304,19 @@
dir = 1;
network = list("MINE")
},
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
"dC" = (
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
"dD" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
"dE" = (
/obj/structure/table,
/obj/item/weapon/storage/firstaid/regular,
/turf/open/floor/plasteel/whiteblue/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
@@ -1619,9 +1330,7 @@
/obj/machinery/power/port_gen/pacman{
anchored = 1
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dG" = (
/obj/machinery/power/port_gen/pacman{
@@ -1631,9 +1340,7 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dH" = (
/obj/structure/cable{
@@ -1644,21 +1351,16 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dI" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dJ" = (
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -1676,7 +1378,6 @@
pixel_y = 1
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -1686,15 +1387,11 @@
opened = 1
},
/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dM" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dN" = (
/obj/machinery/camera{
@@ -1708,7 +1405,6 @@
pixel_x = 28
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -1722,9 +1418,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"dP" = (
/obj/machinery/door/airlock/maintenance{
@@ -1737,15 +1431,11 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/maintenance)
"dQ" = (
/obj/effect/spawner/structure/window,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dR" = (
/obj/machinery/door/airlock/glass_medical{
@@ -1754,9 +1444,7 @@
req_access_txt = "0"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/white{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
"dS" = (
/obj/structure/cable{
@@ -1774,32 +1462,23 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/living_quarters)
"dT" = (
/turf/open/floor/plasteel/brown/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/production)
"dU" = (
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/production)
"dV" = (
/obj/effect/spawner/structure/window,
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"dW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"dX" = (
/obj/machinery/conveyor_switch/oneway{
@@ -1807,7 +1486,6 @@
name = "mining conveyor"
},
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -1819,18 +1497,13 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"dZ" = (
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ea" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
@@ -1842,13 +1515,11 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
"ec" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
@@ -1857,23 +1528,18 @@
c_tag = "Crew Area Hallway West";
network = list("MINE")
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ee" = (
/obj/machinery/airalarm{
frequency = 1439;
pixel_y = 23
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ef" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
@@ -1889,18 +1555,14 @@
pixel_y = 1;
d2 = 2
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eh" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
pixel_y = 30
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ei" = (
/obj/structure/cable{
@@ -1910,7 +1572,6 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
@@ -1920,38 +1581,30 @@
network = list("MINE")
},
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
"ek" = (
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/living_quarters)
"el" = (
/obj/machinery/door/airlock/glass_mining{
name = "Processing Area";
req_access_txt = "48"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"em" = (
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
"en" = (
/obj/machinery/mineral/processing_unit_console,
-/turf/closed/wall{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/closed/wall,
/area/mine/production)
"eo" = (
/obj/machinery/mineral/processing_unit{
@@ -1961,17 +1614,13 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"ep" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eq" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
@@ -1980,9 +1629,7 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"er" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -1993,9 +1640,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"es" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
@@ -2004,9 +1649,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"et" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -2022,9 +1665,7 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eu" = (
/obj/structure/cable{
@@ -2038,9 +1679,7 @@
icon_state = "1-8"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ev" = (
/obj/structure/cable{
@@ -2051,9 +1690,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ew" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -2065,7 +1702,6 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
@@ -2082,9 +1718,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"ey" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -2096,7 +1730,6 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/living_quarters)
@@ -2109,9 +1742,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eA" = (
/obj/structure/cable{
@@ -2126,9 +1757,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eB" = (
/obj/structure/cable{
@@ -2140,7 +1769,6 @@
dir = 4
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -2151,24 +1779,19 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eE" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/production)
@@ -2180,16 +1803,13 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -2197,52 +1817,39 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/corner,
/area/mine/production)
"eI" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/brown,
/area/mine/production)
"eJ" = (
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 6
},
/area/mine/production)
"eK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/brown,
/area/mine/living_quarters)
"eL" = (
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/living_quarters)
"eM" = (
/obj/machinery/light,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eO" = (
/obj/machinery/light/small,
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
@@ -2250,9 +1857,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/production)
"eQ" = (
/obj/machinery/door/airlock/mining{
@@ -2260,9 +1865,7 @@
req_access_txt = "48"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -2271,9 +1874,7 @@
name = "Break Room";
opacity = 0
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eS" = (
/obj/machinery/airalarm{
@@ -2284,9 +1885,7 @@
icon_state = "crateopen";
opened = 1
},
-/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/side,
/area/mine/production)
"eT" = (
/obj/structure/closet/crate{
@@ -2294,15 +1893,11 @@
opened = 1
},
/obj/machinery/light,
-/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/brown,
/area/mine/production)
"eU" = (
/obj/structure/closet/crate,
-/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/side,
/area/mine/production)
"eV" = (
/obj/structure/closet/crate{
@@ -2310,13 +1905,11 @@
opened = 1
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 6
},
/area/mine/production)
"eW" = (
/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/production)
@@ -2329,9 +1922,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"eY" = (
/obj/machinery/conveyor{
@@ -2341,9 +1932,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"eZ" = (
/obj/machinery/conveyor{
@@ -2356,15 +1945,12 @@
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
-/turf/open/floor/plating{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plating,
/area/mine/production)
"fa" = (
/obj/machinery/mineral/equipment_vendor,
/turf/open/floor/plasteel/brown{
- dir = 9;
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ dir = 9
},
/area/mine/living_quarters)
"fb" = (
@@ -2376,7 +1962,6 @@
pixel_y = 30
},
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
@@ -2386,7 +1971,6 @@
pixel_y = 23
},
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
@@ -2398,7 +1982,6 @@
},
/obj/structure/reagent_dispensers/watertank,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 5
},
/area/mine/living_quarters)
@@ -2409,17 +1992,13 @@
frequency = 1439;
pixel_y = 23
},
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"ff" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"fg" = (
/obj/machinery/door/airlock{
@@ -2429,16 +2008,13 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/living_quarters)
@@ -2446,49 +2022,36 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fj" = (
/obj/machinery/vending/snack,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fk" = (
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fm" = (
/obj/machinery/vending/cigarette,
/obj/machinery/newscaster{
pixel_y = 32
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fn" = (
/obj/structure/table,
/obj/machinery/microwave{
pixel_y = 6
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fo" = (
/obj/structure/ore_box,
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 8
},
/area/mine/living_quarters)
@@ -2496,9 +2059,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fq" = (
/obj/item/device/radio/intercom{
@@ -2507,15 +2068,12 @@
pixel_x = 28
},
/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 4
},
/area/mine/living_quarters)
"fr" = (
/obj/structure/table,
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"fs" = (
/obj/machinery/light/small{
@@ -2529,9 +2087,7 @@
req_access_txt = "0";
specialfunctions = 4
},
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"ft" = (
/obj/machinery/camera{
@@ -2540,53 +2096,40 @@
network = list("MINE")
},
/turf/open/floor/plasteel/purple/corner{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1
},
/area/mine/living_quarters)
"fu" = (
/obj/structure/chair,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fv" = (
/obj/structure/table,
/obj/machinery/reagentgrinder,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fx" = (
/obj/structure/ore_box,
/turf/open/floor/plasteel/brown{
- dir = 10;
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ dir = 10
},
/area/mine/living_quarters)
"fy" = (
/obj/machinery/recharge_station,
-/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/side,
/area/mine/living_quarters)
"fz" = (
/obj/structure/closet/secure_closet/miner,
-/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/brown,
/area/mine/living_quarters)
"fA" = (
/obj/structure/closet/secure_closet/miner,
-/turf/open/floor/plasteel/purple/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/purple/side,
/area/mine/living_quarters)
"fB" = (
/obj/structure/closet/secure_closet/miner,
/turf/open/floor/plasteel/brown{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 6
},
/area/mine/living_quarters)
@@ -2594,9 +2137,7 @@
/obj/structure/chair{
dir = 4
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fD" = (
/obj/structure/table,
@@ -2614,9 +2155,7 @@
/obj/item/weapon/reagent_containers/food/drinks/beer{
pixel_x = -8
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fE" = (
/obj/structure/chair{
@@ -2625,24 +2164,18 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fF" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fG" = (
/obj/structure/table,
/obj/item/weapon/storage/box/donkpockets,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fH" = (
/obj/machinery/door/airlock{
@@ -2652,9 +2185,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fI" = (
/obj/item/device/radio/intercom{
@@ -2662,9 +2193,7 @@
name = "Station Intercom (General)";
pixel_x = -28
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fJ" = (
/obj/machinery/camera{
@@ -2676,27 +2205,21 @@
pixel_y = -32
},
/obj/machinery/light,
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fK" = (
/obj/machinery/airalarm{
dir = 1;
pixel_y = -22
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fL" = (
/obj/structure/sink{
dir = 4;
pixel_x = 11
},
-/turf/open/floor/plasteel/bar{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel/bar,
/area/mine/living_quarters)
"fM" = (
/obj/machinery/light/small{
@@ -2710,18 +2233,14 @@
req_access_txt = "0";
specialfunctions = 4
},
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"fN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/light{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fO" = (
/obj/machinery/door/airlock{
@@ -2731,9 +2250,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fP" = (
/obj/machinery/light/small{
@@ -2747,9 +2264,7 @@
req_access_txt = "0";
specialfunctions = 4
},
-/turf/open/floor/carpet{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
- },
+/turf/open/floor/carpet,
/area/mine/living_quarters)
"fQ" = (
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -2803,7 +2318,7 @@
/area/lavaland/surface/outdoors)
"go" = (
/obj/structure/stone_tile/block,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"gr" = (
/obj/structure/stone_tile{
@@ -2886,13 +2401,13 @@
/obj/structure/stone_tile/block{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"gO" = (
/obj/structure/stone_tile/block{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"gP" = (
/obj/structure/stone_tile/slab,
@@ -2908,7 +2423,7 @@
"gY" = (
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
- baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ baseturf_type = /turf/open/lava/smooth/lava_land_surface;
dir = 8;
dwidth = 2;
height = 5;
@@ -2929,7 +2444,7 @@
/obj/structure/stone_tile/block{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"hH" = (
/obj/structure/stone_tile/block{
@@ -3118,7 +2633,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"jH" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3129,7 +2644,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"jL" = (
/obj/structure/stone_tile/surrounding_tile,
@@ -3140,7 +2655,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"jN" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3151,7 +2666,7 @@
},
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/center/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"jQ" = (
/obj/structure/stone_tile{
@@ -3216,7 +2731,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"kD" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3229,7 +2744,7 @@
dir = 8
},
/obj/structure/stone_tile/center,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"kH" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3240,7 +2755,7 @@
dir = 4
},
/obj/structure/stone_tile/center/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"kJ" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3253,7 +2768,7 @@
dir = 1
},
/obj/structure/stone_tile/center,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"kM" = (
/obj/structure/stone_tile/block/cracked{
@@ -3339,7 +2854,7 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lu" = (
/obj/structure/stone_tile/block/cracked{
@@ -3358,17 +2873,17 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lw" = (
/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"ly" = (
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lz" = (
/obj/structure/stone_tile/cracked{
@@ -3377,7 +2892,7 @@
/obj/structure/stone_tile/block{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lD" = (
/obj/structure/stone_tile/block/cracked{
@@ -3386,7 +2901,7 @@
/obj/structure/stone_tile/block/cracked{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lE" = (
/obj/structure/stone_tile/block/cracked{
@@ -3395,7 +2910,7 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lF" = (
/obj/structure/stone_tile/block/cracked{
@@ -3407,7 +2922,7 @@
/obj/structure/stone_tile{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lG" = (
/obj/structure/stone_tile/block/cracked{
@@ -3420,7 +2935,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lP" = (
/obj/structure/stone_tile/block/cracked{
@@ -3435,7 +2950,7 @@
/obj/structure/stone_tile/surrounding/cracked{
dir = 6
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lR" = (
/obj/structure/stone_tile/block/cracked{
@@ -3457,14 +2972,14 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lW" = (
/obj/structure/stone_tile/block/cracked,
/obj/structure/stone_tile/block/cracked{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"lZ" = (
/obj/structure/stone_tile/block/cracked{
@@ -3473,7 +2988,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"ma" = (
/obj/structure/stone_tile/block/cracked{
@@ -3492,7 +3007,7 @@
/obj/structure/stone_tile/block{
dir = 8
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"mk" = (
/obj/structure/stone_tile/block/cracked{
@@ -3508,7 +3023,7 @@
dir = 8
},
/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"mn" = (
/obj/structure/stone_tile/block/cracked,
@@ -3570,7 +3085,7 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"mw" = (
/obj/structure/stone_tile{
@@ -3579,11 +3094,11 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"mx" = (
/obj/structure/stone_tile,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"my" = (
/obj/structure/stone_tile/cracked{
@@ -3616,7 +3131,7 @@
/obj/structure/stone_tile{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
+/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"mD" = (
/obj/structure/stone_tile,
@@ -3862,7 +3377,7 @@
"Uq" = (
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
- baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ baseturf_type = /turf/open/lava/smooth/lava_land_surface;
dir = 2;
dwidth = 11;
height = 22;
@@ -3876,7 +3391,7 @@
"Wp" = (
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
- baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ baseturf_type = /turf/open/lava/smooth/lava_land_surface;
dir = 8;
dwidth = 3;
height = 5;
@@ -3887,6 +3402,18 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
+"Wt" = (
+/obj/effect/baseturf_helper,
+/turf/closed/wall,
+/area/mine/laborcamp/security)
+"Wu" = (
+/obj/effect/baseturf_helper,
+/turf/closed/wall,
+/area/mine/laborcamp)
+"Ww" = (
+/obj/effect/baseturf_helper,
+/turf/open/floor/plasteel,
+/area/mine/living_quarters)
(1,1,1) = {"
aa
@@ -9249,7 +8776,7 @@ az
az
aq
ca
-ca
+Wt
ca
aj
aj
@@ -10012,7 +9539,7 @@ aE
az
az
az
-aV
+az
az
aQ
bk
@@ -10277,7 +9804,7 @@ aq
bA
aq
aq
-aq
+Wu
aq
aj
aj
@@ -11313,7 +10840,7 @@ dg
dg
cQ
dZ
-dZ
+Ww
dZ
cM
fa
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index a14cc8ac17..66b8bd0708 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -6041,10 +6041,9 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/window/brigdoor/westright{
+/obj/machinery/door/window/brigdoor/security/cell/westright{
id = "brig1";
- name = "Cell 1";
- req_access_txt = "2"
+ name = "Cell 1"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -6514,7 +6513,6 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel{
- desc = "";
icon_state = "L13"
},
/area/hallway/primary/central{
@@ -7949,10 +7947,9 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/window/brigdoor/westright{
+/obj/machinery/door/window/brigdoor/security/cell/westright{
id = "brig2";
- name = "Cell 2";
- req_access_txt = "2"
+ name = "Cell 2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -8826,7 +8823,6 @@
},
/obj/effect/landmark/start/shaft_miner,
/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/space;
dir = 8
},
/area/quartermaster/miningdock)
@@ -11609,7 +11605,7 @@
/obj/machinery/atmospherics/components/trinary/filter{
dir = 2;
filter_type = "n2";
- name = "nitogren filter";
+ name = "nitrogen filter";
on = 1
},
/obj/structure/window/reinforced{
@@ -15260,7 +15256,7 @@
/obj/machinery/power/apc{
cell_type = 5000;
dir = 1;
- name = "Central Starborad Maintenance APC";
+ name = "Central Starboard Maintenance APC";
pixel_y = 25
},
/obj/effect/turf_decal/stripes/line,
@@ -23285,7 +23281,7 @@
"aML" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
- name = "Telecoms Control Room";
+ name = "Telecomms Control Room";
req_access = null;
req_access_txt = "19; 61"
},
@@ -25212,7 +25208,7 @@
"aPH" = (
/obj/machinery/door/airlock/command{
cyclelinkeddir = 2;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -25623,7 +25619,6 @@
dir = 1
},
/turf/open/floor/plasteel{
- desc = "";
icon_state = "L14"
},
/area/hallway/primary/central)
@@ -25772,7 +25767,7 @@
},
/obj/machinery/door/airlock/command{
cyclelinkeddir = 2;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -25996,7 +25991,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Privacy Shutters"
+ name = "Chemistry Privacy Shutters"
},
/turf/open/floor/plating,
/area/medical/chemistry)
@@ -26009,7 +26004,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Privacy Shutters"
+ name = "Chemistry Privacy Shutters"
},
/obj/machinery/door/window/southleft{
name = "Chemistry Desk";
@@ -26025,7 +26020,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemisttop";
- name = "Chemisty Lobby Shutters"
+ name = "Chemistry Lobby Shutters"
},
/turf/open/floor/plating,
/area/medical/chemistry)
@@ -26806,7 +26801,7 @@
"aSM" = (
/obj/machinery/door/airlock/command{
cyclelinkeddir = 2;
- name = "Telecoms Server Room";
+ name = "Telecomms Server Room";
req_access = null;
req_access_txt = "61"
},
@@ -27133,7 +27128,7 @@
/obj/item/weapon/pen,
/obj/machinery/door/poddoor/shutters/preopen{
id = "chemistbot";
- name = "Chemisty Privacy Shutters"
+ name = "Chemistry Privacy Shutters"
},
/obj/machinery/door/window/southleft{
dir = 8;
@@ -33611,7 +33606,7 @@
"bfw" = (
/obj/structure/bonfire,
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice{
- desc = "For the weary spacemen on their quest to rekindle the first plasmafire.";
+ desc = "For the weary spacemen on their quest to rekindle the first plasma fire.";
name = "Carton of Estus"
},
/obj/item/weapon/nullrod/claymore/glowing{
@@ -37360,7 +37355,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bnx" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
icon_state = "diagonalWall3"
},
@@ -37393,7 +37387,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bnF" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
dir = 4;
icon_state = "diagonalWall3"
@@ -37432,7 +37425,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bnM" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
dir = 4;
icon_state = "diagonalWall3"
@@ -37806,7 +37798,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bpq" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
dir = 1;
icon_state = "diagonalWall3"
@@ -38535,7 +38526,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bsb" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
icon_state = "diagonalWall3"
},
@@ -38556,7 +38546,6 @@
/turf/open/floor/plating/airless,
/area/shuttle/syndicate)
"bsf" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
dir = 4;
icon_state = "diagonalWall3"
@@ -38590,7 +38579,6 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"bsl" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
icon_state = "diagonalWall3"
},
@@ -38639,7 +38627,6 @@
/turf/open/floor/plating,
/area/shuttle/syndicate)
"bsu" = (
-/turf/open/space,
/turf/closed/wall/mineral/plastitanium{
dir = 4;
icon_state = "diagonalWall3"
@@ -39636,7 +39623,7 @@
/obj/machinery/telecomms/bus/preset_one/birdstation,
/obj/machinery/power/apc{
dir = 8;
- name = "Telecoms Server Room APC";
+ name = "Telecomms Server Room APC";
pixel_x = -26
},
/obj/structure/cable{
diff --git a/_maps/map_files/OmegaStation/job_changes.dm b/_maps/map_files/OmegaStation/job_changes.dm
index dc6a461432..f360be7f99 100644
--- a/_maps/map_files/OmegaStation/job_changes.dm
+++ b/_maps/map_files/OmegaStation/job_changes.dm
@@ -38,8 +38,8 @@
MAP_JOB_CHECK
total_positions = 3
spawn_positions = 3
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
/datum/outfit/job/officer/New()
..()
@@ -49,8 +49,8 @@
/datum/job/detective/New()
..()
MAP_JOB_CHECK
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
/datum/outfit/job/detective/New()
..()
@@ -65,8 +65,8 @@
selection_color = "#ffffff"
total_positions = 3
spawn_positions = 3
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_genetics)
- minimal_access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_genetics)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
//Engineering
@@ -75,8 +75,8 @@
MAP_JOB_CHECK
total_positions = 2
spawn_positions = 2
- access = list(GLOB.access_eva, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels, GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics, GLOB.access_tcomsat)
- minimal_access = list(GLOB.access_eva, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels, GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics, GLOB.access_tcomsat)
+ access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT)
+ minimal_access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT)
/datum/outfit/job/engineer/New()
..()
@@ -96,8 +96,8 @@
MAP_JOB_CHECK
total_positions = 3
spawn_positions = 3
- access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom, GLOB.access_tech_storage)
- minimal_access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom, GLOB.access_tech_storage)
+ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
+ minimal_access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
//Cargo
@@ -106,16 +106,16 @@
MAP_JOB_CHECK
total_positions = 2
spawn_positions = 2
- access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
/datum/job/mining/New()
..()
MAP_JOB_CHECK
total_positions = 2
spawn_positions = 2
- access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/mining/New()
..()
@@ -126,27 +126,27 @@
/datum/job/bartender/New()
..()
MAP_JOB_CHECK
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
- minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
+ minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
/datum/job/cook/New()
..()
MAP_JOB_CHECK
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
- minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
+ minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
/datum/job/hydro/New()
..()
MAP_JOB_CHECK
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
- minimal_access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
// they get maint access because of all the hydro content in maint
/datum/job/janitor/New()
..()
MAP_JOB_CHECK
- access = list(GLOB.access_janitor, GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
- minimal_access = list(GLOB.access_janitor, GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_maint_tunnels)
+ access = list(ACCESS_JANITOR, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_JANITOR, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
//Civilian
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 63475a027b..9d5192484f 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -7432,10 +7432,9 @@
/turf/open/floor/plating,
/area/security/brig)
"aql" = (
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 1";
- name = "Cell 1";
- req_access_txt = "1"
+ name = "Cell 1"
},
/obj/structure/cable{
d1 = 4;
@@ -7486,10 +7485,9 @@
/turf/open/floor/plating,
/area/security/brig)
"aqp" = (
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 2";
- name = "Cell 2";
- req_access_txt = "1"
+ name = "Cell 2"
},
/obj/structure/cable{
d1 = 4;
@@ -7507,10 +7505,9 @@
/turf/closed/wall,
/area/security/brig)
"aqr" = (
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 3";
- name = "Cell 3";
- req_access_txt = "1"
+ name = "Cell 3"
},
/obj/structure/cable{
d1 = 4;
@@ -15799,7 +15796,7 @@
/obj/machinery/conveyor_switch/oneway{
convdir = 1;
id = "garbagestacked";
- name = "disposal coveyor"
+ name = "disposal conveyor"
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating{
@@ -17808,7 +17805,7 @@
/obj/machinery/conveyor_switch/oneway{
convdir = -1;
id = "garbage";
- name = "disposal coveyor"
+ name = "disposal conveyor"
},
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -26269,7 +26266,7 @@
/area/science/explab)
"bft" = (
/obj/structure/sign/atmosplaque{
- desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the uncorruptable cyborg servants of tomorrow, available today.";
+ desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today.";
icon_state = "kiddieplaque";
name = "\improper 'Perfect Drone' sign";
pixel_y = 32
@@ -29042,7 +29039,7 @@
/area/science/xenobiology)
"ble" = (
/obj/machinery/computer/security/telescreen{
- name = "Test Chamber Moniter";
+ name = "Test Chamber Monitor";
network = list("Xeno");
pixel_y = 2
},
@@ -34759,7 +34756,7 @@
/obj/item/device/radio/intercom{
dir = 8;
freerange = 1;
- name = "Station Intercom (Telecoms)";
+ name = "Station Intercom (Telecomms)";
pixel_y = -26
},
/turf/open/floor/plasteel/red/side,
@@ -35993,7 +35990,7 @@
/obj/item/device/radio/intercom{
dir = 8;
freerange = 1;
- name = "Station Intercom (Telecoms)";
+ name = "Station Intercom (Telecomms)";
pixel_y = 26
},
/turf/open/floor/plasteel/whitegreen/side{
@@ -37940,7 +37937,7 @@
/obj/item/device/radio/intercom{
dir = 8;
freerange = 1;
- name = "Station Intercom (Telecoms)";
+ name = "Station Intercom (Telecomms)";
pixel_y = 26
},
/turf/open/floor/plasteel,
@@ -41800,9 +41797,9 @@
/area/engine/atmos)
"bLN" = (
/obj/machinery/camera{
- c_tag = "Telecoms External Fore";
+ c_tag = "Telecomms External Fore";
dir = 1;
- network = list("SS13, Telecoms");
+ network = list("SS13, Telecomms");
start_active = 1
},
/turf/open/space,
@@ -41997,9 +41994,9 @@
/area/engine/atmos)
"bMm" = (
/obj/machinery/camera/motion{
- c_tag = "Telecoms External Access";
+ c_tag = "Telecomms External Access";
dir = 1;
- network = list("SS13","Telecoms")
+ network = list("SS13","Telecomms")
},
/turf/open/floor/plasteel,
/area/tcommsat/computer)
@@ -42040,9 +42037,9 @@
"bMs" = (
/obj/structure/lattice,
/obj/machinery/camera/motion{
- c_tag = "Telecoms External Port";
+ c_tag = "Telecomms External Port";
dir = 8;
- network = list("Telecoms")
+ network = list("Telecomms")
},
/turf/open/space,
/area/space)
@@ -42064,9 +42061,9 @@
"bMv" = (
/obj/structure/lattice,
/obj/machinery/camera/motion{
- c_tag = "Telecoms External Starboard";
+ c_tag = "Telecomms External Starboard";
dir = 4;
- network = list("Telecoms")
+ network = list("Telecomms")
},
/turf/open/space,
/area/space)
@@ -43992,7 +43989,7 @@
/area/engine/engineering)
"bQD" = (
/obj/machinery/camera{
- c_tag = "Engineering Telecoms Access";
+ c_tag = "Engineering Telecomms Access";
dir = 8;
network = list("Labor")
},
@@ -44000,11 +43997,11 @@
dir = 4
},
/obj/machinery/computer/security/telescreen{
- desc = "Used for watching telecoms.";
+ desc = "Used for watching telecomms.";
dir = 8;
layer = 4;
- name = "Telecoms Telescreen";
- network = list("Telecoms");
+ name = "Telecomms Telescreen";
+ network = list("Telecomms");
pixel_x = 30
},
/turf/open/floor/plasteel,
@@ -44081,18 +44078,18 @@
"bQL" = (
/obj/structure/lattice,
/obj/machinery/camera/motion{
- c_tag = "Telecoms External Port Aft";
+ c_tag = "Telecomms External Port Aft";
dir = 2;
- network = list("Telecoms")
+ network = list("Telecomms")
},
/turf/open/space,
/area/space)
"bQM" = (
/obj/structure/lattice,
/obj/machinery/camera/motion{
- c_tag = "Telecoms External Starboard Aft";
+ c_tag = "Telecomms External Starboard Aft";
dir = 2;
- network = list("Telecoms")
+ network = list("Telecomms")
},
/turf/open/space,
/area/space)
@@ -44938,9 +44935,9 @@
"bSS" = (
/obj/machinery/requests_console{
announcementConsole = 1;
- department = "Telecoms Admin";
+ department = "Telecomms Admin";
departmentType = 5;
- name = "Telecoms RC";
+ name = "Telecomms RC";
pixel_y = 30
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -44971,9 +44968,9 @@
pixel_y = 26
},
/obj/machinery/camera/motion{
- c_tag = "Telecoms Monitoring";
+ c_tag = "Telecomms Monitoring";
dir = 2;
- network = list("SS13","Telecoms")
+ network = list("SS13","Telecomms")
},
/turf/open/floor/plasteel/yellow/side{
dir = 1
@@ -44999,7 +44996,7 @@
"bSW" = (
/obj/machinery/power/apc{
dir = 1;
- name = "Telecoms Monitoring APC";
+ name = "Telecomms Monitoring APC";
pixel_y = 25
},
/obj/structure/cable{
@@ -45214,7 +45211,7 @@
cell_type = 5000;
dir = 1;
layer = 4;
- name = "Telecoms Server APC";
+ name = "Telecomms Server APC";
pixel_y = 24
},
/obj/structure/cable,
@@ -45503,9 +45500,9 @@
/area/tcommsat/server)
"bUe" = (
/obj/machinery/camera/motion{
- c_tag = "Telecoms Server Room";
+ c_tag = "Telecomms Server Room";
dir = 1;
- network = list("SS13","Telecoms")
+ network = list("SS13","Telecomms")
},
/turf/open/floor/plasteel/black{
initial_gas_mix = "n2=100;TEMP=80"
diff --git a/_maps/map_files/PubbyStation/job_changes.dm b/_maps/map_files/PubbyStation/job_changes.dm
index d366a15ae3..6bb5276d9c 100644
--- a/_maps/map_files/PubbyStation/job_changes.dm
+++ b/_maps/map_files/PubbyStation/job_changes.dm
@@ -3,20 +3,20 @@
/datum/job/hos/New()
..()
MAP_JOB_CHECK
- access += GLOB.access_crematorium
- minimal_access += GLOB.access_crematorium
+ access += ACCESS_CREMATORIUM
+ minimal_access += ACCESS_CREMATORIUM
/datum/job/warden/New()
..()
MAP_JOB_CHECK
- access += GLOB.access_crematorium
- minimal_access += GLOB.access_crematorium
+ access += ACCESS_CREMATORIUM
+ minimal_access += ACCESS_CREMATORIUM
/datum/job/officer/New()
..()
MAP_JOB_CHECK
- access += GLOB.access_crematorium
- minimal_access += GLOB.access_crematorium
+ access += ACCESS_CREMATORIUM
+ minimal_access += ACCESS_CREMATORIUM
MAP_REMOVE_JOB(curator)
MAP_REMOVE_JOB(lawyer)
\ No newline at end of file
diff --git a/_maps/map_files/generic/Centcomm.dmm b/_maps/map_files/generic/Centcomm.dmm
index 47ce47729a..1840fb2d80 100644
--- a/_maps/map_files/generic/Centcomm.dmm
+++ b/_maps/map_files/generic/Centcomm.dmm
@@ -10673,7 +10673,7 @@
color = "#008000";
dir = 1
},
-/turf/open/floor/plating/lava,
+/turf/open/lava,
/area/wizard_station)
"BH" = (
/obj/structure/rack,
@@ -10728,7 +10728,7 @@
color = "#008000";
dir = 1
},
-/turf/open/floor/plating/lava/airless,
+/turf/open/lava/airless,
/area/wizard_station)
"BP" = (
/obj/structure/rack,
@@ -14389,6 +14389,11 @@ aa
aa
aa
aa
+Gf
+Gv
+GF
+GR
+GX
aa
aa
aa
@@ -14411,6 +14416,11 @@ aa
aa
aa
aa
+Gf
+Gv
+GF
+GR
+GX
aa
aa
aa
@@ -14436,6 +14446,11 @@ aa
aa
aa
aa
+Gf
+Gv
+GF
+GR
+GX
aa
aa
aa
@@ -14464,26 +14479,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Gf
+Gv
+GF
+GR
+GX
aa
aa
HM
@@ -14645,6 +14645,13 @@ aa
aa
aa
aa
+Ga
+Gg
+GA
+GG
+GS
+GY
+He
aa
aa
aa
@@ -14665,6 +14672,13 @@ aa
aa
aa
aa
+Ga
+Gg
+Hu
+GG
+GS
+GY
+He
aa
aa
aa
@@ -14688,6 +14702,13 @@ aa
aa
aa
aa
+Ga
+Gg
+Gw
+GG
+GS
+GY
+He
aa
aa
aa
@@ -14714,34 +14735,13 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Ga
+Gg
+Ht
+GG
+GS
+GY
+He
aa
HM
HN
@@ -14902,6 +14902,13 @@ aa
aa
aa
aa
+Gb
+Gm
+Gx
+GM
+Gx
+GZ
+Hf
aa
aa
aa
@@ -14922,6 +14929,13 @@ aa
aa
aa
aa
+Gb
+Hq
+Gx
+HA
+Gx
+GZ
+Hf
aa
aa
aa
@@ -14945,6 +14959,13 @@ aa
aa
aa
aa
+Gb
+Gh
+Gx
+GH
+Gx
+GZ
+Hf
aa
aa
aa
@@ -14971,34 +14992,13 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Gb
+Hn
+Gx
+Hy
+Gx
+GZ
+Hf
aa
HM
HN
@@ -15159,6 +15159,13 @@ aa
aa
aa
aa
+Gc
+Gn
+Gx
+GI
+Gx
+Ha
+Hg
aa
aa
aa
@@ -15179,6 +15186,13 @@ aa
aa
aa
aa
+Gc
+Hr
+Gx
+GI
+Gx
+Ha
+Hg
aa
aa
aa
@@ -15202,6 +15216,13 @@ aa
aa
aa
aa
+Gc
+Gi
+Gx
+GI
+Gx
+Ha
+Hg
aa
aa
aa
@@ -15228,34 +15249,13 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Gc
+Ho
+Gx
+GI
+Gx
+Ha
+Hg
aa
HM
HN
@@ -15416,6 +15416,13 @@ aa
aa
aa
aa
+Gd
+Go
+Gx
+GN
+Gx
+Hb
+Hh
aa
aa
aa
@@ -15436,6 +15443,13 @@ aa
aa
aa
aa
+Gd
+Hs
+Gx
+HB
+Gx
+Hb
+Hh
aa
aa
aa
@@ -15459,6 +15473,13 @@ aa
aa
aa
aa
+Gd
+Gj
+Gx
+GJ
+Gx
+Hb
+Hh
aa
aa
aa
@@ -15485,34 +15506,13 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Gd
+Hp
+Gx
+Hz
+Gx
+Hb
+Hh
aa
HM
HN
@@ -15673,6 +15673,13 @@ aa
aa
aa
aa
+Ge
+Gk
+Gy
+GK
+Gy
+Hc
+Hi
aa
aa
aa
@@ -15693,6 +15700,13 @@ aa
aa
aa
aa
+Ge
+Gk
+Gy
+GK
+Gy
+Hc
+Hi
aa
aa
aa
@@ -15716,6 +15730,13 @@ aa
aa
aa
aa
+Ge
+Gk
+Gy
+GK
+Gy
+Hc
+Hi
aa
aa
aa
@@ -15742,34 +15763,13 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Ge
+Gk
+Gy
+GK
+Gy
+Hc
+Hi
aa
HM
HN
@@ -15931,6 +15931,11 @@ aa
aa
aa
aa
+Gl
+Gz
+GL
+GT
+Hd
aa
aa
aa
@@ -15953,6 +15958,11 @@ aa
aa
aa
aa
+Gl
+Gz
+GL
+GT
+Hd
aa
aa
aa
@@ -15978,6 +15988,11 @@ aa
aa
aa
aa
+Gl
+Gz
+GL
+GT
+Hd
aa
aa
aa
@@ -16006,26 +16021,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Gl
+Gz
+GL
+GT
+Hd
aa
aa
HM
@@ -32970,19 +32970,19 @@ aa
aa
aa
aa
-Gf
-Gv
-GF
-GR
-GX
aa
aa
aa
-Gf
-Gv
-GF
-GR
-GX
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33226,21 +33226,21 @@ aa
aa
aa
aa
-Ga
-Gg
-Gw
-GG
-GS
-GY
-He
aa
-Ga
-Gg
-Ht
-GG
-GS
-GY
-He
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33483,21 +33483,21 @@ aa
aa
aa
aa
-Gb
-Gh
-Gx
-GH
-Gx
-GZ
-Hf
aa
-Gb
-Hn
-Gx
-Hy
-Gx
-GZ
-Hf
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33740,21 +33740,21 @@ aa
aa
aa
aa
-Gc
-Gi
-Gx
-GI
-Gx
-Ha
-Hg
aa
-Gc
-Ho
-Gx
-GI
-Gx
-Ha
-Hg
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33997,21 +33997,21 @@ aa
aa
aa
aa
-Gd
-Gj
-Gx
-GJ
-Gx
-Hb
-Hh
aa
-Gd
-Hp
-Gx
-Hz
-Gx
-Hb
-Hh
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -34254,21 +34254,21 @@ aa
aa
aa
aa
-Ge
-Gk
-Gy
-GK
-Gy
-Hc
-Hi
aa
-Ge
-Gk
-Gy
-GK
-Gy
-Hc
-Hi
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -34512,19 +34512,19 @@ aa
aa
aa
aa
-Gl
-Gz
-GL
-GT
-Hd
aa
aa
aa
-Gl
-Gz
-GL
-GT
-Hd
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -35026,19 +35026,19 @@ aa
aa
aa
aa
-Gf
-Gv
-GF
-GR
-GX
aa
aa
aa
-Gf
-Gv
-GF
-GR
-GX
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -35282,21 +35282,21 @@ aa
aa
aa
aa
-Ga
-Gg
-GA
-GG
-GS
-GY
-He
aa
-Ga
-Gg
-Hu
-GG
-GS
-GY
-He
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -35539,21 +35539,21 @@ aa
aa
aa
aa
-Gb
-Gm
-Gx
-GM
-Gx
-GZ
-Hf
aa
-Gb
-Hq
-Gx
-HA
-Gx
-GZ
-Hf
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -35796,21 +35796,21 @@ aa
aa
aa
aa
-Gc
-Gn
-Gx
-GI
-Gx
-Ha
-Hg
aa
-Gc
-Hr
-Gx
-GI
-Gx
-Ha
-Hg
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -36053,21 +36053,21 @@ aa
aa
aa
aa
-Gd
-Go
-Gx
-GN
-Gx
-Hb
-Hh
aa
-Gd
-Hs
-Gx
-HB
-Gx
-Hb
-Hh
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -36310,21 +36310,21 @@ aa
aa
aa
aa
-Ge
-Gk
-Gy
-GK
-Gy
-Hc
-Hi
aa
-Ge
-Gk
-Gy
-GK
-Gy
-Hc
-Hi
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -36568,19 +36568,19 @@ aa
aa
aa
aa
-Gl
-Gz
-GL
-GT
-Hd
aa
aa
aa
-Gl
-Gz
-GL
-GT
-Hd
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
diff --git a/_maps/shuttles/emergency_arena.dmm b/_maps/shuttles/emergency_arena.dmm
index 504ef9be87..ec6182aaa5 100644
--- a/_maps/shuttles/emergency_arena.dmm
+++ b/_maps/shuttles/emergency_arena.dmm
@@ -10,7 +10,7 @@
/turf/open/indestructible/necropolis/air,
/area/shuttle_arena)
"d" = (
-/turf/open/floor/plating/lava/smooth,
+/turf/open/lava/smooth,
/area/shuttle_arena)
"e" = (
/obj/effect/landmark/shuttle_arena_entrance,
diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm
index 3d5943ed1e..b426bf0953 100644
--- a/_maps/shuttles/emergency_delta.dmm
+++ b/_maps/shuttles/emergency_delta.dmm
@@ -355,7 +355,7 @@
name = "emergency shower"
},
/turf/open/floor/plasteel/whiteblue/side{
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ baseturf = /turf/open/lava/smooth/lava_land_surface;
dir = 4
},
/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm
index eff25a891f..96ceb67871 100644
--- a/_maps/shuttles/emergency_wabbajack.dmm
+++ b/_maps/shuttles/emergency_wabbajack.dmm
@@ -317,11 +317,11 @@
/obj/structure/window/reinforced{
dir = 1
},
-/turf/open/floor/plating/lava/smooth/airless,
+/turf/open/lava/smooth/airless,
/area/shuttle/escape)
"bf" = (
/obj/structure/shuttle/engine/heater,
-/turf/open/floor/plating/lava/smooth/airless,
+/turf/open/lava/smooth/airless,
/area/shuttle/escape)
"bg" = (
/obj/structure/shuttle/engine/propulsion,
diff --git a/code/__DATASTRUCTURES/linked_lists.dm b/code/__DATASTRUCTURES/linked_lists.dm
index eccc3c422a..1d2e8d78a6 100644
--- a/code/__DATASTRUCTURES/linked_lists.dm
+++ b/code/__DATASTRUCTURES/linked_lists.dm
@@ -78,7 +78,7 @@
//If you specify a value the FIRST ONE is removed
/datum/linked_list/proc/Remove(node)
var/datum/linked_node/removing
- if(istype(node,/datum/linked_node))
+ if(istype(node, /datum/linked_node))
removing = node
else
//optimise removing head and tail, no point looping for them, especially the tail
diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm
new file mode 100644
index 0000000000..e557a55e7c
--- /dev/null
+++ b/code/__DEFINES/access.dm
@@ -0,0 +1,96 @@
+#define ACCESS_SECURITY 1 // Security equipment
+#define ACCESS_BRIG 2 // Brig timers and permabrig
+#define ACCESS_ARMORY 3
+#define ACCESS_FORENSICS_LOCKERS 4
+#define ACCESS_MEDICAL 5
+#define ACCESS_MORGUE 6
+#define ACCESS_TOX 7
+#define ACCESS_TOX_STORAGE 8
+#define ACCESS_GENETICS 9
+#define ACCESS_ENGINE 10
+#define ACCESS_ENGINE_EQUIP 11
+#define ACCESS_MAINT_TUNNELS 12
+#define ACCESS_EXTERNAL_AIRLOCKS 13
+#define ACCESS_EMERGENCY_STORAGE 14
+#define ACCESS_CHANGE_IDS 15
+#define ACCESS_AI_UPLOAD 16
+#define ACCESS_TELEPORTER 17
+#define ACCESS_EVA 18
+#define ACCESS_HEADS 19
+#define ACCESS_CAPTAIN 20
+#define ACCESS_ALL_PERSONAL_LOCKERS 21
+#define ACCESS_CHAPEL_OFFICE 22
+#define ACCESS_TECH_STORAGE 23
+#define ACCESS_ATMOSPHERICS 24
+#define ACCESS_BAR 25
+#define ACCESS_JANITOR 26
+#define ACCESS_CREMATORIUM 27
+#define ACCESS_KITCHEN 28
+#define ACCESS_ROBOTICS 29
+#define ACCESS_RD 30
+#define ACCESS_CARGO 31
+#define ACCESS_CONSTRUCTION 32
+#define ACCESS_CHEMISTRY 33
+#define ACCESS_CARGO_BOT 34
+#define ACCESS_HYDROPONICS 35
+#define ACCESS_MANUFACTURING 36
+#define ACCESS_LIBRARY 37
+#define ACCESS_LAWYER 38
+#define ACCESS_VIROLOGY 39
+#define ACCESS_CMO 40
+#define ACCESS_QM 41
+#define ACCESS_COURT 42
+#define ACCESS_SURGERY 45
+#define ACCESS_THEATRE 46
+#define ACCESS_RESEARCH 47
+#define ACCESS_MINING 48
+#define ACCESS_MINING_OFFICE 49 //not in use
+#define ACCESS_MAILSORTING 50
+#define ACCESS_MINT 51
+#define ACCESS_MINT_VAULT 52
+#define ACCESS_HEADS_VAULT 53
+#define ACCESS_MINING_STATION 54
+#define ACCESS_XENOBIOLOGY 55
+#define ACCESS_CE 56
+#define ACCESS_HOP 57
+#define ACCESS_HOS 58
+#define ACCESS_RC_ANNOUNCE 59 //Request console announcements
+#define ACCESS_KEYCARD_AUTH 60 //Used for events which require at least two people to confirm them
+#define ACCESS_TCOMSAT 61 // has access to the entire telecomms satellite / machinery
+#define ACCESS_GATEWAY 62
+#define ACCESS_SEC_DOORS 63 // Security front doors
+#define ACCESS_MINERAL_STOREROOM 64
+#define ACCESS_MINISAT 65
+#define ACCESS_WEAPONS 66 //Weapon authorization for secbots
+#define ACCESS_NETWORK 67
+#define ACCESS_CLONING 68 //Cloning room
+
+ //BEGIN CENTCOM ACCESS
+ /*Should leave plenty of room if we need to add more access levels.
+ Mostly for admin fun times.*/
+#define ACCESS_CENT_GENERAL 101//General facilities.
+#define ACCESS_CENT_THUNDER 102//Thunderdome.
+#define ACCESS_CENT_SPECOPS 103//Special Ops.
+#define ACCESS_CENT_MEDICAL 104//Medical/Research
+#define ACCESS_CENT_LIVING 105//Living quarters.
+#define ACCESS_CENT_STORAGE 106//Generic storage areas.
+#define ACCESS_CENT_TELEPORTER 107//Teleporter.
+#define ACCESS_CENT_CAPTAIN 109//Captain's office/ID comp/AI.
+#define ACCESS_CENT_BAR 110 // The non-existent Centcom Bar
+
+ //The Syndicate
+#define ACCESS_SYNDICATE 150//General Syndicate Access
+#define ACCESS_SYNDICATE_LEADER 151//Nuke Op Leader Access
+
+ //Away Missions or Ruins
+ /*For generic away-mission/ruin access. Why would normal crew have access to a long-abandoned derelict
+ or a 2000 year-old temple? */
+#define ACCESS_AWAY_GENERAL 200//General facilities.
+#define ACCESS_AWAY_MAINT 201//Away maintenance
+#define ACCESS_AWAY_MED 202//Away medical
+#define ACCESS_AWAY_SEC 203//Away security
+#define ACCESS_AWAY_ENGINE 204//Away engineering
+#define ACCESS_AWAY_GENERIC1 205//Away generic access
+#define ACCESS_AWAY_GENERIC2 206
+#define ACCESS_AWAY_GENERIC3 207
+#define ACCESS_AWAY_GENERIC4 208
\ No newline at end of file
diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 5ce803fa3c..a79850b04f 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -67,8 +67,8 @@
#define PLASMA_MINIMUM_OXYGEN_NEEDED 2
#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30
#define PLASMA_OXYGEN_FULLBURN 10
-#define MIN_PLASMA_DAMAGE 1
-#define MAX_PLASMA_DAMAGE 10
+#define MIN_TOXIC_GAS_DAMAGE 1
+#define MAX_TOXIC_GAS_DAMAGE 10
#define MOLES_PLASMA_VISIBLE 0.5 //Moles in a standard cell after which plasma is visible
//Plasma fusion properties
#define PLASMA_BINDING_ENERGY 3000000
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 6ca2d80974..c088e81c4a 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -1,147 +1,150 @@
-/*ALL DEFINES RELATED TO COMBAT GO HERE*/
-
-//Damage and status effect defines
-
-//Damage defines //TODO: merge these down to reduce on defines
-#define BRUTE "brute"
-#define BURN "fire"
-#define TOX "tox"
-#define OXY "oxy"
-#define CLONE "clone"
-#define STAMINA "stamina"
-//citadel code
-#define AROUSAL "arousal"
-
-//bitflag damage defines used for suicide_act
-#define BRUTELOSS 1
-#define FIRELOSS 2
-#define TOXLOSS 4
-#define OXYLOSS 8
-#define SHAME 16
-//citadel code
-#define AROUSAL 32
-
-#define STUN "stun"
-#define KNOCKDOWN "knockdown"
-#define UNCONSCIOUS "unconscious"
-#define IRRADIATE "irradiate"
-#define STUTTER "stutter"
-#define SLUR "slur"
-#define EYE_BLUR "eye_blur"
-#define DROWSY "drowsy"
-#define JITTER "jitter"
-
-//Bitflags defining which status effects could be or are inflicted on a mob
-#define CANSTUN 1
-#define CANKNOCKDOWN 2
-#define CANUNCONSCIOUS 4
-#define CANPUSH 8
-#define IGNORESLOWDOWN 16
-#define GOTTAGOFAST 32
-#define GOTTAGOREALLYFAST 64
-#define GODMODE 4096
-#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath
-#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system
-#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy.
-
-//Health Defines
-#define HEALTH_THRESHOLD_CRIT 0
-#define HEALTH_THRESHOLD_DEAD -100
-
-//Actual combat defines
-
-//click cooldowns, in tenths of a second, used for various combat actions
-#define CLICK_CD_MELEE 8
-#define CLICK_CD_RANGE 4
-#define CLICK_CD_RAPID 2
-#define CLICK_CD_CLICK_ABILITY 6
-#define CLICK_CD_BREAKOUT 100
-#define CLICK_CD_HANDCUFFED 10
-#define CLICK_CD_RESIST 20
-#define CLICK_CD_GRABBING 10
-
-//Cuff resist speeds
-#define FAST_CUFFBREAK 1
-#define INSTANT_CUFFBREAK 2
-
-//Grab levels
-#define GRAB_PASSIVE 0
-#define GRAB_AGGRESSIVE 1
-#define GRAB_NECK 2
-#define GRAB_KILL 3
-
-//Attack types for checking shields/hit reactions
-#define MELEE_ATTACK 1
-#define UNARMED_ATTACK 2
-#define PROJECTILE_ATTACK 3
-#define THROWN_PROJECTILE_ATTACK 4
-#define LEAP_ATTACK 5
-
-//attack visual effects
-#define ATTACK_EFFECT_PUNCH "punch"
-#define ATTACK_EFFECT_KICK "kick"
-#define ATTACK_EFFECT_SMASH "smash"
-#define ATTACK_EFFECT_CLAW "claw"
-#define ATTACK_EFFECT_DISARM "disarm"
-#define ATTACK_EFFECT_BITE "bite"
-#define ATTACK_EFFECT_MECHFIRE "mech_fire"
-#define ATTACK_EFFECT_MECHTOXIN "mech_toxin"
-#define ATTACK_EFFECT_BOOP "boop" //Honk
-
-//intent defines
-#define INTENT_HELP "help"
-#define INTENT_GRAB "grab"
-#define INTENT_DISARM "disarm"
-#define INTENT_HARM "harm"
-//NOTE: INTENT_HOTKEY_* defines are not actual intents!
-//they are here to support hotkeys
-#define INTENT_HOTKEY_LEFT "left"
-#define INTENT_HOTKEY_RIGHT "right"
-
-//the define for visible message range in combat
-#define COMBAT_MESSAGE_RANGE 3
-
-//Combat object defines
-
-//Embedded objects
-#define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user)
-#define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object)
-#define EMBED_CHANCE 45 //Chance for an object to embed into somebody when thrown (if it's sharp)
-#define EMBEDDED_PAIN_MULTIPLIER 2 //Coefficient of multiplication for the damage the item does while embedded (this*item.w_class)
-#define EMBEDDED_FALL_PAIN_MULTIPLIER 5 //Coefficient of multiplication for the damage the item does when it falls out (this*item.w_class)
-#define EMBEDDED_IMPACT_PAIN_MULTIPLIER 4 //Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class)
-#define EMBED_THROWSPEED_THRESHOLD 4 //The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1)
-#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 8 //Coefficient of multiplication for the damage the item does when removed without a surgery (this*item.w_class)
-#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 //A Time in ticks, total removal time = (this*item.w_class)
-
-//Gun Stuff
-#define SAWN_INTACT 0
-#define SAWN_OFF 1
-//Gun weapon weight
-#define WEAPON_DUAL_WIELD 0
-#define WEAPON_LIGHT 1
-#define WEAPON_MEDIUM 2
-#define WEAPON_HEAVY 3
-//Gun trigger guards
-#define TRIGGER_GUARD_ALLOW_ALL -1
-#define TRIGGER_GUARD_NONE 0
-#define TRIGGER_GUARD_NORMAL 1
-
-//Object/Item sharpness
-#define IS_BLUNT 0
-#define IS_SHARP 1
-#define IS_SHARP_ACCURATE 2
-
-//His Grace.
-#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
-#define HIS_GRACE_PECKISH 20 //Slightly hungry.
-#define HIS_GRACE_HUNGRY 60 //Getting closer. Increases damage up to a minimum of 20.
-#define HIS_GRACE_FAMISHED 100 //Dangerous. Increases damage up to a minimum of 25 and cannot be dropped.
-#define HIS_GRACE_STARVING 120 //Incredibly close to breaking loose. Increases damage up to a minimum of 30.
-#define HIS_GRACE_CONSUME_OWNER 140 //His Grace consumes His owner at this point and becomes aggressive.
-#define HIS_GRACE_FALL_ASLEEP 160 //If it reaches this point, He falls asleep and resets.
-
-#define HIS_GRACE_FORCE_BONUS 4 //How much force is gained per kill.
+/*ALL DEFINES RELATED TO COMBAT GO HERE*/
+
+//Damage and status effect defines
+
+//Damage defines //TODO: merge these down to reduce on defines
+#define BRUTE "brute"
+#define BURN "fire"
+#define TOX "tox"
+#define OXY "oxy"
+#define CLONE "clone"
+#define STAMINA "stamina"
+#define BRAIN "brain"
+
+//Citadel code
+#define AROUSAL "arousal"
+
+//bitflag damage defines used for suicide_act
+#define BRUTELOSS 1
+#define FIRELOSS 2
+#define TOXLOSS 4
+#define OXYLOSS 8
+#define SHAME 16
+
+//Citadel code
+#define AROUSAL 32
+
+#define STUN "stun"
+#define KNOCKDOWN "knockdown"
+#define UNCONSCIOUS "unconscious"
+#define IRRADIATE "irradiate"
+#define STUTTER "stutter"
+#define SLUR "slur"
+#define EYE_BLUR "eye_blur"
+#define DROWSY "drowsy"
+#define JITTER "jitter"
+
+//Bitflags defining which status effects could be or are inflicted on a mob
+#define CANSTUN 1
+#define CANKNOCKDOWN 2
+#define CANUNCONSCIOUS 4
+#define CANPUSH 8
+#define IGNORESLOWDOWN 16
+#define GOTTAGOFAST 32
+#define GOTTAGOREALLYFAST 64
+#define GODMODE 4096
+#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath
+#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system
+#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy.
+
+//Health Defines
+#define HEALTH_THRESHOLD_CRIT 0
+#define HEALTH_THRESHOLD_DEAD -100
+
+//Actual combat defines
+
+//click cooldowns, in tenths of a second, used for various combat actions
+#define CLICK_CD_MELEE 8
+#define CLICK_CD_RANGE 4
+#define CLICK_CD_RAPID 2
+#define CLICK_CD_CLICK_ABILITY 6
+#define CLICK_CD_BREAKOUT 100
+#define CLICK_CD_HANDCUFFED 10
+#define CLICK_CD_RESIST 20
+#define CLICK_CD_GRABBING 10
+
+//Cuff resist speeds
+#define FAST_CUFFBREAK 1
+#define INSTANT_CUFFBREAK 2
+
+//Grab levels
+#define GRAB_PASSIVE 0
+#define GRAB_AGGRESSIVE 1
+#define GRAB_NECK 2
+#define GRAB_KILL 3
+
+//Attack types for checking shields/hit reactions
+#define MELEE_ATTACK 1
+#define UNARMED_ATTACK 2
+#define PROJECTILE_ATTACK 3
+#define THROWN_PROJECTILE_ATTACK 4
+#define LEAP_ATTACK 5
+
+//attack visual effects
+#define ATTACK_EFFECT_PUNCH "punch"
+#define ATTACK_EFFECT_KICK "kick"
+#define ATTACK_EFFECT_SMASH "smash"
+#define ATTACK_EFFECT_CLAW "claw"
+#define ATTACK_EFFECT_DISARM "disarm"
+#define ATTACK_EFFECT_BITE "bite"
+#define ATTACK_EFFECT_MECHFIRE "mech_fire"
+#define ATTACK_EFFECT_MECHTOXIN "mech_toxin"
+#define ATTACK_EFFECT_BOOP "boop" //Honk
+
+//intent defines
+#define INTENT_HELP "help"
+#define INTENT_GRAB "grab"
+#define INTENT_DISARM "disarm"
+#define INTENT_HARM "harm"
+//NOTE: INTENT_HOTKEY_* defines are not actual intents!
+//they are here to support hotkeys
+#define INTENT_HOTKEY_LEFT "left"
+#define INTENT_HOTKEY_RIGHT "right"
+
+//the define for visible message range in combat
+#define COMBAT_MESSAGE_RANGE 3
+
+//Combat object defines
+
+//Embedded objects
+#define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user)
+#define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object)
+#define EMBED_CHANCE 45 //Chance for an object to embed into somebody when thrown (if it's sharp)
+#define EMBEDDED_PAIN_MULTIPLIER 2 //Coefficient of multiplication for the damage the item does while embedded (this*item.w_class)
+#define EMBEDDED_FALL_PAIN_MULTIPLIER 5 //Coefficient of multiplication for the damage the item does when it falls out (this*item.w_class)
+#define EMBEDDED_IMPACT_PAIN_MULTIPLIER 4 //Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class)
+#define EMBED_THROWSPEED_THRESHOLD 4 //The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1)
+#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 8 //Coefficient of multiplication for the damage the item does when removed without a surgery (this*item.w_class)
+#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 //A Time in ticks, total removal time = (this*item.w_class)
+
+//Gun Stuff
+#define SAWN_INTACT 0
+#define SAWN_OFF 1
+//Gun weapon weight
+#define WEAPON_DUAL_WIELD 0
+#define WEAPON_LIGHT 1
+#define WEAPON_MEDIUM 2
+#define WEAPON_HEAVY 3
+//Gun trigger guards
+#define TRIGGER_GUARD_ALLOW_ALL -1
+#define TRIGGER_GUARD_NONE 0
+#define TRIGGER_GUARD_NORMAL 1
+
+//Object/Item sharpness
+#define IS_BLUNT 0
+#define IS_SHARP 1
+#define IS_SHARP_ACCURATE 2
+
+//His Grace.
+#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
+#define HIS_GRACE_PECKISH 20 //Slightly hungry.
+#define HIS_GRACE_HUNGRY 60 //Getting closer. Increases damage up to a minimum of 20.
+#define HIS_GRACE_FAMISHED 100 //Dangerous. Increases damage up to a minimum of 25 and cannot be dropped.
+#define HIS_GRACE_STARVING 120 //Incredibly close to breaking loose. Increases damage up to a minimum of 30.
+#define HIS_GRACE_CONSUME_OWNER 140 //His Grace consumes His owner at this point and becomes aggressive.
+#define HIS_GRACE_FALL_ASLEEP 160 //If it reaches this point, He falls asleep and resets.
+
+#define HIS_GRACE_FORCE_BONUS 4 //How much force is gained per kill.
#define EXPLODE_NONE 0 //Don't even ask me why we need this.
#define EXPLODE_DEVASTATE 1
diff --git a/code/__DEFINES/combat.dm.rej b/code/__DEFINES/combat.dm.rej
new file mode 100644
index 0000000000..b765917e85
--- /dev/null
+++ b/code/__DEFINES/combat.dm.rej
@@ -0,0 +1,9 @@
+diff a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm (rejected hunks)
+@@ -9,6 +9,7 @@
+ #define OXY "oxy"
+ #define CLONE "clone"
+ #define STAMINA "stamina"
++#define BRAIN "brain"
+
+ //bitflag damage defines used for suicide_act
+ #define BRUTELOSS 1
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
new file mode 100644
index 0000000000..eb6826d67b
--- /dev/null
+++ b/code/__DEFINES/components.dm
@@ -0,0 +1,16 @@
+//shorthand
+#define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path)
+#define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src)
+
+// How multiple components of the exact same type are handled in the same datum
+
+#define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default)
+#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed
+#define COMPONENT_DUPE_UNIQUE 2 //new component is deleted
+
+// All signals. Format:
+// When the signal is called: (signal arguments)
+
+#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (datum/component)
+#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (datum/component)
+#define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: ()
diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index e4b0ab9264..2b046c2b49 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -89,5 +89,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define UNACIDABLE 16 //acid can't even appear on it, let alone melt it.
#define ACID_PROOF 32 //acid stuck on it doesn't melt it.
#define INDESTRUCTIBLE 64 //doesn't take damage
+#define FREEZE_PROOF 128 //can't be frozen
// language secondary flags for atoms
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 57fde17adc..c615370a44 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -1,6 +1,6 @@
// simple is_type and similar inline helpers
-#define islist(L) (istype(L,/list))
+#define islist(L) (istype(L, /list))
#define in_range(source, user) (get_dist(source, user) <= 1)
@@ -23,7 +23,7 @@
#define ismineralturf(A) (istype(A, /turf/closed/mineral))
-#define islava(A) (istype(A, /turf/open/floor/plating/lava))
+#define islava(A) (istype(A, /turf/open/lava))
//Mobs
#define isliving(A) (istype(A, /mob/living))
diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm
index 859f3e3775..82d030bf08 100644
--- a/code/__DEFINES/logging.dm
+++ b/code/__DEFINES/logging.dm
@@ -1,18 +1,19 @@
//Investigate logging defines
-#define INVESTIGATE_ATMOS "atmos"
-#define INVESTIGATE_BOTANY "botany"
-#define INVESTIGATE_CARGO "cargo"
-#define INVESTIGATE_EXPERIMENTOR "experimentor"
-#define INVESTIGATE_GRAVITY "gravity"
-#define INVESTIGATE_RECORDS "records"
-#define INVESTIGATE_SINGULO "singulo"
-#define INVESTIGATE_SUPERMATTER "supermatter"
-#define INVESTIGATE_TELESCI "telesci"
-#define INVESTIGATE_WIRES "wires"
+#define INVESTIGATE_ATMOS "atmos"
+#define INVESTIGATE_BOTANY "botany"
+#define INVESTIGATE_CARGO "cargo"
+#define INVESTIGATE_EXPERIMENTOR "experimentor"
+#define INVESTIGATE_GRAVITY "gravity"
+#define INVESTIGATE_RECORDS "records"
+#define INVESTIGATE_SINGULO "singulo"
+#define INVESTIGATE_SUPERMATTER "supermatter"
+#define INVESTIGATE_TELESCI "telesci"
+#define INVESTIGATE_WIRES "wires"
+#define INVESTIGATE_PORTAL "portals"
//Individual logging defines
#define INDIVIDUAL_ATTACK_LOG "Attack log"
#define INDIVIDUAL_SAY_LOG "Say log"
#define INDIVIDUAL_EMOTE_LOG "Emote log"
#define INDIVIDUAL_OOC_LOG "OOC log"
-#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
\ No newline at end of file
+#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index dcad7f531e..e0ab84f832 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -167,10 +167,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define GAME_STATE_SETTING_UP 2
#define GAME_STATE_PLAYING 3
#define GAME_STATE_FINISHED 4
-//SOUND:
-#define SOUND_MINIMUM_PRESSURE 10
-#define FALLOFF_SOUNDS 1
-#define SURROUND_CAP 7
//FONTS:
// Used by Paper and PhotoCopier (and PaperBin once a year).
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 758ff6f496..2b0e8ee74a 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -43,7 +43,7 @@
#define BODYPART_ROBOTIC 2
#define DEFAULT_BODYPART_ICON_ORGANIC 'icons/mob/human_parts_greyscale.dmi'
-#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augments.dmi'
+#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi'
#define MONKEY_BODYPART "monkey"
#define ALIEN_BODYPART "alien"
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 6dc43fb959..620d8bed10 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -5,6 +5,9 @@
#define CHANNEL_JUKEBOX 1021
#define CHANNEL_JUSTICAR_ARK 1020
#define CHANNEL_HEARTBEAT 1019 //sound channel for heartbeats
+#define CHANNEL_AMBIENCE 1018
+#define CHANNEL_BUZZ 1017
+#define CHANNEL_BICYCLE 1016
//Citadel code
#define CHANNEL_PRED 1018
@@ -12,5 +15,8 @@
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
-#define CHANNEL_HIGHEST_AVAILABLE 1017
+#define CHANNEL_HIGHEST_AVAILABLE 1015
+#define CHANNEL_HIGHEST_AVAILABLE 1017
+#define SOUND_MINIMUM_PRESSURE 10
+#define FALLOFF_SOUNDS 0.5
diff --git a/code/__DEFINES/sound.dm.rej b/code/__DEFINES/sound.dm.rej
new file mode 100644
index 0000000000..c54b9b4b64
--- /dev/null
+++ b/code/__DEFINES/sound.dm.rej
@@ -0,0 +1,51 @@
+diff a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm (rejected hunks)
+@@ -5,42 +5,15 @@
+ #define CHANNEL_JUKEBOX 1021
+ #define CHANNEL_JUSTICAR_ARK 1020
+ #define CHANNEL_HEARTBEAT 1019 //sound channel for heartbeats
++#define CHANNEL_AMBIENCE 1018
++#define CHANNEL_BUZZ 1017
++#define CHANNEL_BICYCLE 1016
+
+ //THIS SHOULD ALWAYS BE THE LOWEST ONE!
+ //KEEP IT UPDATED
+
+-#define CHANNEL_HIGHEST_AVAILABLE 1018
++#define CHANNEL_HIGHEST_AVAILABLE 1015
+
+
+ #define SOUND_MINIMUM_PRESSURE 10
+-#define FALLOFF_SOUNDS 0.5
+-
+-//BYOND Sound Environment defines
+-
+-#define SOUND_ENV_DEFAULT -1
+-#define SOUND_ENV_GENERIC 0
+-#define SOUND_ENV_PADDED_CELL 1
+-#define SOUND_ENV_ROOM 2
+-#define SOUND_ENV_BATHROOM 3
+-#define SOUND_ENV_LIVINGROOM 4
+-#define SOUND_ENV_STONEROOM 5
+-#define SOUND_ENV_AUDITORIUM 6
+-#define SOUND_ENV_CONCERT_HALL 7
+-#define SOUND_ENV_CAVE 8
+-#define SOUND_ENV_ARENA 9
+-#define SOUND_ENV_HANGAR 10
+-#define SOUND_ENV_CARPETTED_HALLWAY 11
+-#define SOUND_ENV_HALLWAY 12
+-#define SOUND_ENV_STONE_CORRIDOOR 13
+-#define SOUND_ENV_ALLEY 14
+-#define SOUND_ENV_FOREST 15
+-#define SOUND_ENV_CITY 16
+-#define SOUND_ENV_MOUNTAINS 17
+-#define SOUND_ENV_QUARRY 18
+-#define SOUND_ENV_PLAIN 19
+-#define SOUND_ENV_PARKING_LOT 20
+-#define SOUND_ENV_SEWER_PIPE 21
+-#define SOUND_ENV_UNDERWATER 22
+-#define SOUND_ENV_DRUGGED 23
+-#define SOUND_ENV_DIZZY 24
+-#define SOUND_ENV_PSYCHOTIC 25
+\ No newline at end of file
++#define FALLOFF_SOUNDS 0.5
+\ No newline at end of file
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index c24f93d32a..57df4f6d0c 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -88,7 +88,7 @@
L -= V //No return here so that it removes all strings of that type
return
-
+//returns a new list with only atoms that are in typecache L
/proc/typecache_filter_list(list/atoms, list/typecache)
. = list()
for (var/thing in atoms)
diff --git a/code/__HELPERS/_lists.dm.rej b/code/__HELPERS/_lists.dm.rej
index cb63e7e160..e69de29bb2 100644
--- a/code/__HELPERS/_lists.dm.rej
+++ b/code/__HELPERS/_lists.dm.rej
@@ -1,23 +0,0 @@
-diff a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm (rejected hunks)
-@@ -89,12 +89,18 @@
- return
-
- //returns a new list with only atoms that are in typecache L
--//if reversed, return a new list with only atoms that aren't in typecache L
--/proc/typecache_filter_list(list/atoms, list/typecache, reversed=FALSE)
-+/proc/typecache_filter_list(list/atoms, list/typecache)
- . = list()
- for (var/thing in atoms)
- var/atom/A = thing
-- if(typecache[A.type] != reversed) //This assumes typecache[A.type] is either null or TRUE. God help you if it's FALSE
-+ if (typecache[A.type])
-+ . += A
-+
-+/proc/typecache_filter_list_reverse(list/atoms, list/typecache)
-+ . = list()
-+ for (var/thing in atoms)
-+ var/atom/A = thing
-+ if (!typecache[A.type])
- . += A
-
- //Like typesof() or subtypesof(), but returns a typecache instead of a list
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index a0ce89e2b6..b2a9260ce1 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -974,6 +974,8 @@ GLOBAL_LIST_EMPTY(friendly_animal_types)
/obj/proc/make_frozen_visual()
// Used to make the frozen item visuals for Freon.
var/static/list/freeze_item_icons = list()
+ if(resistance_flags & FREEZE_PROOF)
+ return
if(!HAS_SECONDARY_FLAG(src, FROZEN) && (initial(icon) && initial(icon_state)))
var/index = freeze_icon_index()
var/icon/IC
diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm
index d05b46e407..83bf3cfb5a 100644
--- a/code/_globalvars/configuration.dm
+++ b/code/_globalvars/configuration.dm
@@ -7,6 +7,7 @@ GLOBAL_VAR(join_motd)
GLOBAL_VAR(station_name)
GLOBAL_VAR_INIT(game_version, "/tg/ Station 13")
GLOBAL_VAR_INIT(changelog_hash, "")
+GLOBAL_VAR_INIT(hub_visibility, FALSE)
GLOBAL_VAR_INIT(ooc_allowed, TRUE) // used with admin verbs to disable ooc - not a config option apparently
GLOBAL_VAR_INIT(dooc_allowed, TRUE)
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 13a67e6694..4c8a2654fa 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -23,3 +23,5 @@ GLOBAL_LIST_EMPTY(simple_animals)
GLOBAL_LIST_EMPTY(language_datum_instances)
GLOBAL_LIST_EMPTY(all_languages)
+
+GLOBAL_LIST_EMPTY(latejoiners) //All latejoining people, for traitor-target purposes.
\ No newline at end of file
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 5c47e1f44d..7820b29691 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -95,7 +95,7 @@
if(!modifiers["catcher"] && A.IsObscured())
return
- if(istype(loc,/obj/mecha))
+ if(istype(loc, /obj/mecha))
var/obj/mecha/M = loc
return M.click_action(A,src,params)
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 4bac886a05..85ecd036de 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -13,17 +13,21 @@
if(modifiers["shift"])
moved = 0
usr.update_action_buttons() //redraw buttons that are no longer considered "moved"
- return 1
+ return TRUE
+ if(modifiers["ctrl"])
+ locked = !locked
+ to_chat(usr, "Action button \"[name]\" [locked ? "" : "un"]locked.")
+ return TRUE
if(usr.next_click > world.time)
return
usr.next_click = world.time + 1
linked_action.Trigger()
- return 1
+ return TRUE
//Hide/Show Action Buttons ... Button
/obj/screen/movable/action_button/hide_toggle
name = "Hide Buttons"
- desc = "Shift-click any button to reset its position. Alt-click to reset all buttons to their default positions."
+ desc = "Shift-click any button to reset its position, and Control-click it to lock it in place. Alt-click this button to reset all buttons to their default positions."
icon = 'icons/mob/actions.dmi'
icon_state = "bg_default"
var/hidden = 0
@@ -37,11 +41,17 @@
moved = FALSE
usr.update_action_buttons(TRUE)
return TRUE
+ if(modifiers["ctrl"])
+ locked = !locked
+ to_chat(usr, "Action button \"[name]\" [locked ? "" : "un"]locked.")
+ return TRUE
if(modifiers["alt"])
for(var/V in usr.actions)
var/datum/action/A = V
var/obj/screen/movable/action_button/B = A.button
B.moved = FALSE
+ B.locked = usr.client.prefs.buttons_locked
+ locked = usr.client.prefs.buttons_locked
moved = FALSE
usr.update_action_buttons(TRUE)
to_chat(usr, "Action button positions have been reset.")
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index b792f4399e..b944f32754 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -109,17 +109,26 @@
//Gas alerts
-/obj/screen/alert/oxy
+/obj/screen/alert/not_enough_oxy
name = "Choking (No O2)"
- desc = "You're not getting enough oxygen. Find some good air before you pass out! \
-The box in your backpack has an oxygen tank and breath mask in it."
- icon_state = "oxy"
+ desc = "You're not getting enough oxygen. Find some good air before you pass out! The box in your backpack has an oxygen tank and breath mask in it."
+ icon_state = "not_enough_oxy"
/obj/screen/alert/too_much_oxy
name = "Choking (O2)"
desc = "There's too much oxygen in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_oxy"
+/obj/screen/alert/not_enough_nitro
+ name = "Choking (No N2)"
+ desc = "You're not getting enough nitrogen. Find some good air before you pass out!"
+ icon_state = "not_enough_nitro"
+
+/obj/screen/alert/too_much_nitro
+ name = "Choking (N2)"
+ desc = "There's too much nitrogen in the air, and you're breathing it in! Find some good air before you pass out!"
+ icon_state = "too_much_nitro"
+
/obj/screen/alert/not_enough_co2
name = "Choking (No CO2)"
desc = "You're not getting enough carbon dioxide. Find some good air before you pass out!"
@@ -135,11 +144,10 @@ The box in your backpack has an oxygen tank and breath mask in it."
desc = "You're not getting enough plasma. Find some good air before you pass out!"
icon_state = "not_enough_tox"
-/obj/screen/alert/tox_in_air
+/obj/screen/alert/too_much_tox
name = "Choking (Plasma)"
- desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. \
-The box in your backpack has an oxygen tank and gas mask in it."
- icon_state = "tox_in_air"
+ desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. The box in your backpack has an oxygen tank and gas mask in it."
+ icon_state = "too_much_tox"
//End gas alerts
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 1bb3ba5223..4074d7d3f3 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -58,6 +58,8 @@
hide_actions_toggle = new
hide_actions_toggle.InitialiseIcon(src)
+ if(mymob.client)
+ hide_actions_toggle.locked = mymob.client.prefs.buttons_locked
hand_slots = list()
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index baf233f724..07c17b891f 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -28,7 +28,7 @@
icon_state = "act_equip"
/obj/screen/human/equip/Click()
- if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if(istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return 1
var/mob/living/carbon/human/H = usr
H.quick_equip()
diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm
index 315fce5bf6..4da721012d 100644
--- a/code/_onclick/hud/movable_screen_objects.dm
+++ b/code/_onclick/hud/movable_screen_objects.dm
@@ -11,6 +11,7 @@
/obj/screen/movable
var/snap2grid = FALSE
var/moved = FALSE
+ var/locked = FALSE
//Snap Screen Object
//Tied to the grid, snaps to the nearest turf
@@ -20,6 +21,8 @@
/obj/screen/movable/MouseDrop(over_object, src_location, over_location, src_control, over_control, params)
+ if(locked) //no! I am locked! begone!
+ return
var/list/PM = params2list(params)
//No screen-loc information? abort.
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 56d07500e8..401bde5cdb 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -110,7 +110,7 @@
if(usr.incapacitated())
return 1
- if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if(istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return 1
if(hud && hud.mymob && slot_id)
@@ -167,7 +167,7 @@
return 1
if(usr.incapacitated() || isobserver(usr))
return 1
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if (istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return 1
if(hud.mymob.active_hand_index == held_index)
@@ -350,7 +350,7 @@
return 1
if(usr.stat || usr.IsUnconscious() || usr.IsKnockdown() || usr.IsStun())
return 1
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if (istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return 1
if(master)
var/obj/item/I = usr.get_active_held_item()
diff --git a/code/citadel/cit_emotes.dm b/code/citadel/cit_emotes.dm
new file mode 100644
index 0000000000..86cb2a4d89
--- /dev/null
+++ b/code/citadel/cit_emotes.dm
@@ -0,0 +1,3 @@
+//Disables the custom emote blacklist from TG that normally applies to slimes.
+/datum/emote/living/custom
+ mob_type_blacklist_typecache = list(/mob/living/brain)
\ No newline at end of file
diff --git a/code/citadel/cit_reagents.dm b/code/citadel/cit_reagents.dm
index 8718ebb19f..2f421542ae 100644
--- a/code/citadel/cit_reagents.dm
+++ b/code/citadel/cit_reagents.dm
@@ -3,6 +3,8 @@
name = "Semen"
id = "semen"
description = "Sperm from some animal. Useless for anything but insemination, really."
+ taste_description = "something salty"
+ taste_mult = 2 //Not very overpowering flavor
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
reagent_state = LIQUID
color = "#FFFFFF" // rgb: 255, 255, 255
@@ -44,6 +46,8 @@
name = "Female Ejaculate"
id = "femcum"
description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business."
+ taste_description = "female arousal"
+ taste_mult = 2
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
reagent_state = LIQUID
color = "#AAAAAA77"
@@ -90,6 +94,8 @@
name = "Crocin"
id = "aphro"
description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac."
+ taste_description = "strawberry roofies"
+ taste_mult = 2 //Hide the roofies in stronger flavors
color = "#FFADFF"//PINK, rgb(255, 173, 255)
/datum/reagent/aphrodisiac/on_mob_life(mob/living/M)
@@ -108,6 +114,7 @@
description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\
Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a\
permanent increase in libido (commonly referred to as 'bimbofication')."
+ taste_description = "liquid desire"
color = "#FF2BFF"//dark pink
addiction_threshold = 20
overdose_threshold = 20
@@ -158,6 +165,8 @@
id = "anaphro"
description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\
, reducing libido and calming them. Non-habit forming and not addictive."
+ taste_description = "dull bitterness"
+ taste_mult = 2
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
@@ -170,6 +179,7 @@
name = "Hexacamphor"
id = "anaphro+"
description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive."
+ taste_description = "tranquil celibacy"
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
overdose_threshold = 20
diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm
index be5250d656..6aca9c1911 100644
--- a/code/controllers/globals.dm
+++ b/code/controllers/globals.dm
@@ -52,15 +52,18 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
/datum/controller/global_vars/Initialize()
gvars_datum_init_order = list()
gvars_datum_protected_varlist = list("gvars_datum_protected_varlist")
-
- //See https://github.com/tgstation/tgstation/issues/26954
- for(var/I in typesof(/datum/controller/global_vars/proc))
- var/CLEANBOT_RETURNS = "[I]"
- pass(CLEANBOT_RETURNS)
-
- for(var/I in vars - gvars_datum_in_built_vars)
+ var/list/global_procs = typesof(/datum/controller/global_vars/proc)
+ var/expected_len = vars.len - gvars_datum_in_built_vars.len
+ if(global_procs.len != expected_len)
+ warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!")
+ if(global_procs.len)
+ var/list/expected_global_procs = vars - gvars_datum_in_built_vars
+ for(var/I in global_procs)
+ expected_global_procs -= replacetext("[I]", "InitGlobal", "")
+ log_world("Missing procs: [expected_global_procs.Join(", ")]")
+ for(var/I in global_procs)
var/start_tick = world.time
- call(src, "InitGlobal[I]")()
+ call(src, I)()
var/end_tick = world.time
if(end_tick - start_tick)
- warning("Global [I] slept during initialization!")
+ warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!")
diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm
index 3000c0ac19..c41f422575 100644
--- a/code/controllers/subsystem/events.dm
+++ b/code/controllers/subsystem/events.dm
@@ -111,7 +111,7 @@ SUBSYSTEM_DEF(events)
/area/crew_quarters/heads/chief)
//Need to locate() as it's just a list of paths.
- return locate(pick((GLOB.the_station_areas - safe_areas) + danger_areas))
+ return locate(pick((GLOB.the_station_areas - safe_areas) + danger_areas)) in GLOB.sortedAreas
//allows a client to trigger an event
diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm
index c9ef6b7093..2cee9a192a 100644
--- a/code/controllers/subsystem/garbage.dm
+++ b/code/controllers/subsystem/garbage.dm
@@ -189,6 +189,7 @@ SUBSYSTEM_DEF(garbage)
SSgarbage.qdel_list += "[D.type]"
#endif
if(isnull(D.gc_destroyed))
+ D.SendSignal(COMSIG_PARENT_QDELETED)
D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
var/start_time = world.time
var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up.
@@ -236,6 +237,7 @@ SUBSYSTEM_DEF(garbage)
// Default implementation of clean-up code.
// This should be overridden to remove all references pointing to the object being destroyed.
// Return the appropriate QDEL_HINT; in most cases this is QDEL_HINT_QUEUE.
+// TODO: Move this and all datum var definitions into code/datums/datum.dm
/datum/proc/Destroy(force=FALSE)
tag = null
var/list/timers = active_timers
@@ -245,6 +247,7 @@ SUBSYSTEM_DEF(garbage)
if (timer.spent)
continue
qdel(timer)
+ QDEL_LIST(datum_components)
return QDEL_HINT_QUEUE
/datum/var/gc_destroyed //Time when this object was destroyed.
diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm
index ea6d57088f..e5e83c85fc 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -10,11 +10,11 @@ SUBSYSTEM_DEF(pai)
/datum/controller/subsystem/pai/Topic(href, href_list[])
if(href_list["download"])
- var/datum/paiCandidate/candidate = locate(href_list["candidate"])
- var/obj/item/device/paicard/card = locate(href_list["device"])
+ var/datum/paiCandidate/candidate = locate(href_list["candidate"]) in candidates
+ var/obj/item/device/paicard/card = locate(href_list["device"]) in pai_card_list
if(card.pai)
return
- if(istype(card,/obj/item/device/paicard) && istype(candidate,/datum/paiCandidate))
+ if(istype(card, /obj/item/device/paicard) && istype(candidate, /datum/paiCandidate))
if(check_ready(candidate) != candidate)
return FALSE
var/mob/living/silicon/pai/pai = new(card)
@@ -34,7 +34,7 @@ SUBSYSTEM_DEF(pai)
usr << browse(null, "window=findPai")
if(href_list["new"])
- var/datum/paiCandidate/candidate = locate(href_list["candidate"])
+ var/datum/paiCandidate/candidate = locate(href_list["candidate"]) in candidates
var/option = href_list["option"]
var/t = ""
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
index ec76d623b1..f4eebe95be 100644
--- a/code/controllers/subsystem/persistence.dm
+++ b/code/controllers/subsystem/persistence.dm
@@ -37,7 +37,7 @@ SUBSYSTEM_DEF(persistence)
var/list/free_satchels = list()
for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION)))) //Nontrivially expensive but it's roundstart only
- if(isfloorturf(T) && !istype(T,/turf/open/floor/plating/))
+ if(isfloorturf(T) && !istype(T, /turf/open/floor/plating/))
free_satchels += new /obj/item/weapon/storage/backpack/satchel/flat/secret(T)
if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchels) >= (50 - expanded_old_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves
break
@@ -63,7 +63,7 @@ SUBSYSTEM_DEF(persistence)
F.x = text2num(chosen_satchel[1])
F.y = text2num(chosen_satchel[2])
F.z = ZLEVEL_STATION
- if(isfloorturf(F.loc) && !istype(F.loc,/turf/open/floor/plating/))
+ if(isfloorturf(F.loc) && !istype(F.loc, /turf/open/floor/plating/))
F.hide(1)
new path(F)
return 1
diff --git a/code/controllers/subsystem/processing/overlays.dm b/code/controllers/subsystem/processing/overlays.dm
index 2359d39498..589bf667af 100644
--- a/code/controllers/subsystem/processing/overlays.dm
+++ b/code/controllers/subsystem/processing/overlays.dm
@@ -4,7 +4,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
wait = 1
priority = 500
init_order = INIT_ORDER_OVERLAY
- runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_SETUP
+ runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_SETUP
stat_tag = "Ov"
currentrun = null
diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm
index 9a67b4ecf2..e398f09a03 100644
--- a/code/controllers/subsystem/server_maint.dm
+++ b/code/controllers/subsystem/server_maint.dm
@@ -11,7 +11,7 @@ SUBSYSTEM_DEF(server_maint)
/datum/controller/subsystem/server_maint/Initialize(timeofday)
if (config.hub)
- world.visibility = 1
+ world.update_hub_visibility(TRUE)
..()
/datum/controller/subsystem/server_maint/fire(resumed = FALSE)
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index 991f064965..f0c11a0d83 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -219,6 +219,9 @@ SUBSYSTEM_DEF(shuttle)
emergency.request(null, signal_origin, html_decode(emergency_reason), 0)
log_game("[key_name(user)] has called the shuttle.")
+ if(call_reason)
+ SSblackbox.add_details("shuttle_reason", call_reason)
+ log_game("Shuttle call reason: [call_reason]")
message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)")
/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message)
@@ -540,7 +543,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/is_in_shuttle_bounds(atom/A)
var/area/current = get_area(A)
- if(istype(current, /area/shuttle) && !istype(current,/area/shuttle/transit))
+ if(istype(current, /area/shuttle) && !istype(current, /area/shuttle/transit))
return TRUE
for(var/obj/docking_port/mobile/M in mobile)
if(M.is_in_shuttle_bounds(A))
diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm
index daf7dc2ca9..5696fa09e7 100644
--- a/code/controllers/subsystem/timer.dm
+++ b/code/controllers/subsystem/timer.dm
@@ -1,5 +1,6 @@
#define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth)
#define BUCKET_POS(timer) (round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) + 1)
+#define TIMER_ID_MAX (2**24) //max float with integer precision
SUBSYSTEM_DEF(timer)
name = "Timer"
@@ -225,18 +226,23 @@ SUBSYSTEM_DEF(timer)
var/static/nextid = 1
/datum/timedevent/New(datum/callback/callBack, timeToRun, flags, hash)
- id = nextid++
+ id = TIMER_ID_NULL
src.callBack = callBack
src.timeToRun = timeToRun
src.flags = flags
src.hash = hash
- name = "Timer: [id]: TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])"
-
if (flags & TIMER_UNIQUE)
SStimer.hashes[hash] = src
if (flags & TIMER_STOPPABLE)
- SStimer.timer_id_dict["timerid[id]"] = src
+ do
+ if (nextid >= TIMER_ID_MAX)
+ nextid = 1
+ id = nextid++
+ while(SStimer.timer_id_dict["timerid" + num2text(id, 8)])
+ SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src
+
+ name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])"
if (callBack.object != GLOBAL_PROC)
LAZYADD(callBack.object.active_timers, src)
@@ -297,7 +303,7 @@ SUBSYSTEM_DEF(timer)
callBack = null
if (flags & TIMER_STOPPABLE)
- SStimer.timer_id_dict -= "timerid[id]"
+ SStimer.timer_id_dict -= "timerid" + num2text(id, 8)
if (flags & TIMER_CLIENT_TIME)
SStimer.clienttime_timers -= src
@@ -378,9 +384,7 @@ SUBSYSTEM_DEF(timer)
timeToRun = REALTIMEOFDAY + wait
var/datum/timedevent/timer = new(callback, timeToRun, flags, hash)
- if (flags & TIMER_STOPPABLE)
- return timer.id
- return TIMER_ID_NULL
+ return timer.id
/proc/deltimer(id)
if (!id)
@@ -391,6 +395,7 @@ SUBSYSTEM_DEF(timer)
if (istype(id, /datum/timedevent))
qdel(id)
return TRUE
+ //id is string
var/datum/timedevent/timer = SStimer.timer_id_dict["timerid[id]"]
if (timer && !timer.spent)
qdel(timer)
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 5049916780..715aea1493 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -45,6 +45,7 @@
M.actions += src
if(M.client)
M.client.screen += button
+ button.locked = M.client.prefs.buttons_locked
M.update_action_buttons()
else
Remove(owner)
@@ -57,6 +58,7 @@
M.update_action_buttons()
owner = null
button.moved = FALSE //so the button appears in its normal position when given to another owner.
+ button.locked = FALSE
/datum/action/proc/Trigger()
if(!IsAvailable())
diff --git a/code/datums/antagonists/datum_internal_affairs.dm b/code/datums/antagonists/datum_internal_affairs.dm
index e3a8077732..a07984262e 100644
--- a/code/datums/antagonists/datum_internal_affairs.dm
+++ b/code/datums/antagonists/datum_internal_affairs.dm
@@ -152,7 +152,7 @@
if(!owner||!owner.objectives)
return
for (var/objective_ in owner.objectives)
- if(!(istype(objective_, /datum/objective/escape)||istype(objective_,/datum/objective/survive)))
+ if(!(istype(objective_, /datum/objective/escape)||istype(objective_, /datum/objective/survive)))
continue
remove_objective(objective_)
diff --git a/code/datums/antagonists/datum_traitor.dm b/code/datums/antagonists/datum_traitor.dm
index 4aad416c62..3e90228c19 100644
--- a/code/datums/antagonists/datum_traitor.dm
+++ b/code/datums/antagonists/datum_traitor.dm
@@ -172,10 +172,16 @@
objective_count += forge_single_objective()
for(var/i = objective_count, i < config.traitor_objectives_amount, i++)
- var/datum/objective/assassinate/kill_objective = new
- kill_objective.owner = owner
- kill_objective.find_target()
- add_objective(kill_objective)
+ if(prob(20)) //AI's are less likely to look for a late-joiner than normal traitors
+ var/datum/objective/assassinate/late/late_objective = new
+ late_objective.owner = owner
+ late_objective.find_target()
+ add_objective(late_objective)
+ else
+ var/datum/objective/assassinate/kill_objective = new
+ kill_objective.owner = owner
+ kill_objective.find_target()
+ add_objective(kill_objective)
var/datum/objective/survive/survive_objective = new
survive_objective.owner = owner
@@ -196,6 +202,11 @@
maroon_objective.owner = owner
maroon_objective.find_target()
add_objective(maroon_objective)
+ else if(prob(50))
+ var/datum/objective/assassinate/late/late_objective = new
+ late_objective.owner = owner
+ late_objective.find_target()
+ add_objective(late_objective)
else
var/datum/objective/assassinate/kill_objective = new
kill_objective.owner = owner
diff --git a/code/datums/components/component.dm b/code/datums/components/component.dm
new file mode 100644
index 0000000000..b9212d2786
--- /dev/null
+++ b/code/datums/components/component.dm
@@ -0,0 +1,97 @@
+/datum/component
+ var/enabled = TRUE // Enables or disables the components
+ var/dupe_mode = COMPONENT_DUPE_HIGHLANDER // How components of the same type are handled in the same parent
+ var/list/signal_procs // list of signals -> callbacks
+ var/datum/parent // parent datum
+
+/datum/component/New(datum/P, ...)
+ var/dm = dupe_mode
+ if(dm != COMPONENT_DUPE_ALLOWED)
+ var/datum/component/old = P.GetExactComponent(type)
+ if(old)
+ switch(dm)
+ if(COMPONENT_DUPE_HIGHLANDER)
+ P.RemoveComponent(old)
+ old = null //in case SendSignal() blocks
+ if(COMPONENT_DUPE_UNIQUE)
+ qdel(src)
+ return
+ P.SendSignal(COMSIG_COMPONENT_ADDED, list(src), FALSE)
+ LAZYADD(P.datum_components, src)
+ parent = P
+
+/datum/component/Destroy()
+ RemoveNoSignal()
+ return ..()
+
+/datum/component/proc/RemoveNoSignal()
+ var/datum/P = parent
+ if(P)
+ LAZYREMOVE(P.datum_components, src)
+ parent = null
+
+/datum/component/proc/RegisterSignal(sig_type, proc_on_self, override = FALSE)
+ var/list/procs = signal_procs
+ if(!procs)
+ procs = list()
+ signal_procs = procs
+
+ if(!override)
+ . = procs[sig_type]
+ if(.)
+ stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning")
+
+ procs[sig_type] = CALLBACK(src, proc_on_self)
+
+/datum/var/list/datum_components //list of /datum/component
+
+// Send a signal to all other components in the container.
+/datum/proc/SendSignal(sigtype, list/sig_args, async = FALSE)
+ var/list/comps = datum_components
+ . = FALSE
+ for(var/I in comps)
+ var/datum/component/C = I
+ if(!C.enabled)
+ continue
+ var/list/sps = C.signal_procs
+ var/datum/callback/CB = LAZYACCESS(sps, sigtype)
+ if(!CB)
+ continue
+ if(!async)
+ . |= CB.Invoke(sig_args)
+ else
+ . |= CB.InvokeAsync(sig_args)
+
+/datum/proc/GetComponent(c_type)
+ for(var/I in datum_components)
+ if(istype(I, c_type))
+ return I
+
+/datum/proc/GetExactComponent(c_type)
+ for(var/I in datum_components)
+ var/datum/component/C = I
+ if(C.type == c_type)
+ return I
+
+/datum/proc/GetComponents(c_type)
+ . = list()
+ for(var/I in datum_components)
+ if(istype(I, c_type))
+ . += I
+
+/datum/proc/AddComponents(list/new_types)
+ for(var/new_type in new_types)
+ AddComponent(new_type)
+
+/datum/proc/AddComponent(new_type, ...)
+ var/nt = new_type
+ args[1] = src
+ var/datum/component/C = new nt(arglist(args))
+ return QDELING(C) ? GetComponent(new_type) : C
+
+/datum/proc/RemoveComponent(datum/component/C)
+ if(!C)
+ return
+ C.RemoveNoSignal()
+ SendSignal(COMSIG_COMPONENT_REMOVING, list(C), FALSE)
+ qdel(C)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 369c33eed8..be1ae8bfde 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -62,7 +62,7 @@
- if(istype(D,/atom))
+ if(istype(D, /atom))
var/atom/AT = D
if(AT.icon && AT.icon_state)
sprite = new /icon(AT.icon, AT.icon_state)
@@ -77,7 +77,7 @@
sprite_text = "
"
var/list/atomsnowflake = list()
- if(istype(D,/atom))
+ if(istype(D, /atom))
var/atom/A = D
if(isliving(A))
atomsnowflake += "[D]"
@@ -485,7 +485,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["mob_player_panel"])
+ var/mob/M = locate(href_list["mob_player_panel"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -497,7 +497,7 @@
if(!check_rights(R_ADMIN))
return
- var/mob/M = locate(href_list["godmode"])
+ var/mob/M = locate(href_list["godmode"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -540,7 +540,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["regenerateicons"])
+ var/mob/M = locate(href_list["regenerateicons"]) in GLOB.mob_list
if(!ismob(M))
to_chat(usr, "This can only be done to instances of type /mob")
return
@@ -557,7 +557,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["rename"])
+ var/mob/M = locate(href_list["rename"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -575,7 +575,7 @@
return
var/D = locate(href_list["datumedit"])
- if(!istype(D,/datum))
+ if(!istype(D, /datum))
to_chat(usr, "This can only be used on datums")
return
@@ -586,7 +586,7 @@
return
var/D = locate(href_list["datumchange"])
- if(!istype(D,/datum))
+ if(!istype(D, /datum))
to_chat(usr, "This can only be used on datums")
return
@@ -705,7 +705,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["give_spell"])
+ var/mob/M = locate(href_list["give_spell"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -717,7 +717,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["remove_spell"])
+ var/mob/M = locate(href_list["remove_spell"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -729,7 +729,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["give_disease"])
+ var/mob/M = locate(href_list["give_disease"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -741,7 +741,7 @@
if(!check_rights(R_FUN))
return
- var/mob/M = locate(href_list["gib"])
+ var/mob/M = locate(href_list["gib"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -752,7 +752,7 @@
if(!check_rights(R_BUILDMODE))
return
- var/mob/M = locate(href_list["build_mode"])
+ var/mob/M = locate(href_list["build_mode"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -764,7 +764,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["drop_everything"])
+ var/mob/M = locate(href_list["drop_everything"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -776,7 +776,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["direct_control"])
+ var/mob/M = locate(href_list["direct_control"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -788,7 +788,7 @@
if(!check_rights(0))
return
- var/mob/M = locate(href_list["offer_control"])
+ var/mob/M = locate(href_list["offer_control"]) in GLOB.mob_list
if(!istype(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -921,7 +921,7 @@
if(!check_rights(0))
return
- var/mob/living/carbon/C = locate(href_list["editorgans"])
+ var/mob/living/carbon/C = locate(href_list["editorgans"]) in GLOB.mob_list
if(!istype(C))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
@@ -933,7 +933,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"])
+ var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) in GLOB.mob_list
if(!istype(Mo))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/monkey")
return
@@ -949,7 +949,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["makemonkey"])
+ var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -965,7 +965,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["makerobot"])
+ var/mob/living/carbon/human/H = locate(href_list["makerobot"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -981,7 +981,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["makealien"])
+ var/mob/living/carbon/human/H = locate(href_list["makealien"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -997,7 +997,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["makeslime"])
+ var/mob/living/carbon/human/H = locate(href_list["makeslime"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -1013,7 +1013,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/H = locate(href_list["makeai"])
+ var/mob/living/carbon/H = locate(href_list["makeai"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
@@ -1029,7 +1029,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["setspecies"])
+ var/mob/living/carbon/human/H = locate(href_list["setspecies"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -1049,7 +1049,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/C = locate(href_list["editbodypart"])
+ var/mob/living/carbon/C = locate(href_list["editbodypart"]) in GLOB.mob_list
if(!istype(C))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
@@ -1095,7 +1095,7 @@
if(!check_rights(R_SPAWN))
return
- var/mob/living/carbon/human/H = locate(href_list["purrbation"])
+ var/mob/living/carbon/human/H = locate(href_list["purrbation"]) in GLOB.mob_list
if(!istype(H))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
@@ -1126,7 +1126,7 @@
if(!check_rights(0))
return
- var/mob/living/L = locate(href_list["mobToDamage"])
+ var/mob/living/L = locate(href_list["mobToDamage"]) in GLOB.mob_list
if(!istype(L))
return
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 3aa4dab99b..bc089d5082 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -7,7 +7,7 @@
*/
-#define SYMPTOM_LIMIT 8
+#define SYMPTOM_LIMIT 6
@@ -18,7 +18,6 @@
*/
/datum/disease/advance
-
name = "Unknown" // We will always let our Virologist name our disease.
desc = "An engineered disease which can contain a multitude of symptoms."
form = "Advance Disease" // Will let med-scanners know that this disease was engineered.
@@ -58,7 +57,10 @@
symptoms = GenerateSymptoms(0, 2)
else
for(var/datum/symptom/S in D.symptoms)
- symptoms += new S.type
+ var/datum/symptom/new_symp = new S.type
+ new_symp.name = S.name
+ new_symp.neutered = S.neutered
+ symptoms += new_symp
Refresh()
..(process, D)
@@ -119,7 +121,7 @@
if(!(src.IsSame(D)))
var/list/possible_symptoms = shuffle(D.symptoms)
for(var/datum/symptom/S in possible_symptoms)
- AddSymptom(new S.type)
+ AddSymptom(S.Copy())
/datum/disease/advance/proc/HasSymptom(datum/symptom/S)
for(var/datum/symptom/symp in symptoms)
@@ -155,7 +157,7 @@
return generated
-/datum/disease/advance/proc/Refresh(new_name = 0)
+/datum/disease/advance/proc/Refresh(new_name = FALSE)
//to_chat(world, "[src.name] \ref[src] - REFRESH!")
GenerateProperties()
AssignProperties()
@@ -192,10 +194,8 @@
if(properties && properties.len)
switch(properties["stealth"])
- if(2,3)
+ if(2 to INFINITY)
visibility_flags = HIDDEN_SCANNER
- if(4 to INFINITY)
- visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
// The more symptoms we have, the less transmittable it is but some symptoms can make up for it.
SetSpread(Clamp(2 ** (properties["transmittable"] - symptoms.len), BLOOD, AIRBORNE))
@@ -263,7 +263,7 @@
var/s = safepick(GenerateSymptoms(min_level, max_level, 1))
if(s)
AddSymptom(s)
- Refresh(1)
+ Refresh(TRUE)
return
// Randomly remove a symptom.
@@ -272,7 +272,16 @@
var/s = safepick(symptoms)
if(s)
RemoveSymptom(s)
- Refresh(1)
+ Refresh(TRUE)
+ return
+
+// Randomly neuter a symptom.
+/datum/disease/advance/proc/Neuter()
+ if(symptoms.len)
+ var/s = safepick(symptoms)
+ if(s)
+ NeuterSymptom(s)
+ Refresh(TRUE)
return
// Name the disease.
@@ -286,6 +295,8 @@
var/list/L = list()
for(var/datum/symptom/S in symptoms)
L += S.id
+ if(S.neutered)
+ L += "N"
L = sortList(L) // Sort the list so it doesn't matter which order the symptoms are in.
var/result = jointext(L, ":")
id = result
@@ -311,6 +322,12 @@
symptoms -= S
return
+// Neuter a symptom, so it will only affect stats
+/datum/disease/advance/proc/NeuterSymptom(datum/symptom/S)
+ if(!S.neutered)
+ S.neutered = TRUE
+ S.name += " (neutered)"
+
/*
Static Procs
diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm
index 1517201612..07809d3555 100644
--- a/code/datums/diseases/advance/presets.dm
+++ b/code/datums/diseases/advance/presets.dm
@@ -1,6 +1,6 @@
// Cold
-/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/cold/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Cold"
symptoms = list(new/datum/symptom/sneeze)
@@ -9,7 +9,7 @@
// Flu
-/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/flu/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Flu"
symptoms = list(new/datum/symptom/cough)
@@ -18,7 +18,7 @@
// Voice Changing
-/datum/disease/advance/voice_change/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/voice_change/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Epiglottis Mutation"
symptoms = list(new/datum/symptom/voice_change)
@@ -27,7 +27,7 @@
// Toxin Filter
-/datum/disease/advance/heal/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/heal/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Liver Enhancer"
symptoms = list(new/datum/symptom/heal)
@@ -36,7 +36,7 @@
// Hullucigen
-/datum/disease/advance/hullucigen/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/hullucigen/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Reality Impairment"
symptoms = list(new/datum/symptom/hallucigen)
@@ -44,7 +44,7 @@
// Sensory Restoration
-/datum/disease/advance/sensory_restoration/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/sensory_restoration/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
name = "Reality Enhancer"
symptoms = list(new/datum/symptom/sensory_restoration)
@@ -52,8 +52,8 @@
// Sensory Destruction
-/datum/disease/advance/sensory_destruction/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/narcolepsy/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE)
if(!D)
- name = "Reality Destruction"
- symptoms = list(new/datum/symptom/sensory_destruction)
+ name = "Experimental Insomnia Cure"
+ symptoms = list(new/datum/symptom/narcolepsy)
..(process, D, copy)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/beard.dm b/code/datums/diseases/advance/symptoms/beard.dm
index 8698787dd5..2f8635301e 100644
--- a/code/datums/diseases/advance/symptoms/beard.dm
+++ b/code/datums/diseases/advance/symptoms/beard.dm
@@ -23,27 +23,28 @@ BONUS
transmittable = -1
level = 4
severity = 1
+ symptom_delay_min = 18
+ symptom_delay_max = 36
/datum/symptom/beard/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- switch(A.stage)
- if(1, 2)
- to_chat(H, "Your chin itches.")
- if(H.facial_hair_style == "Shaved")
- H.facial_hair_style = "Jensen Beard"
- H.update_hair()
- if(3, 4)
- to_chat(H, "You feel tough.")
- if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard") && !(H.facial_hair_style == "Full Beard"))
- H.facial_hair_style = "Full Beard"
- H.update_hair()
- else
- to_chat(H, "You feel manly!")
- if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard"))
- H.facial_hair_style = pick("Dwarf Beard", "Very Long Beard")
- H.update_hair()
- return
\ No newline at end of file
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ switch(A.stage)
+ if(1, 2)
+ to_chat(H, "Your chin itches.")
+ if(H.facial_hair_style == "Shaved")
+ H.facial_hair_style = "Jensen Beard"
+ H.update_hair()
+ if(3, 4)
+ to_chat(H, "You feel tough.")
+ if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard") && !(H.facial_hair_style == "Full Beard"))
+ H.facial_hair_style = "Full Beard"
+ H.update_hair()
+ else
+ to_chat(H, "You feel manly!")
+ if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard"))
+ H.facial_hair_style = pick("Dwarf Beard", "Very Long Beard")
+ H.update_hair()
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm
index 492657f97c..a46ef690ef 100644
--- a/code/datums/diseases/advance/symptoms/choking.dm
+++ b/code/datums/diseases/advance/symptoms/choking.dm
@@ -24,32 +24,44 @@ Bonus
transmittable = -4
level = 3
severity = 3
+ base_message_chance = 15
+ symptom_delay_min = 10
+ symptom_delay_max = 30
-/datum/symptom/choking/Activate(datum/disease/advance/A)
+/datum/symptom/choking/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2)
+ if(A.properties["stage_rate"] >= 8)
+ symptom_delay_min = 7
+ symptom_delay_max = 24
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+
+/datum/symptom/choking/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]")
- if(3, 4)
- to_chat(M, "[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]")
- Choke_stage_3_4(M, A)
- M.emote("gasp")
+ if(3, 4)
+ if(!suppress_warning)
+ to_chat(M, "[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]")
else
- to_chat(M, "[pick("You're choking!", "You can't breathe!")]")
- Choke(M, A)
- M.emote("gasp")
- return
+ to_chat(M, "You feel very [pick("dizzy","woozy","faint")].") //fake bloodloss messages
+ Choke_stage_3_4(M, A)
+ M.emote("gasp")
+ else
+ to_chat(M, "[pick("You're choking!", "You can't breathe!")]")
+ Choke(M, A)
+ M.emote("gasp")
/datum/symptom/choking/proc/Choke_stage_3_4(mob/living/M, datum/disease/advance/A)
- var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(max(16+A.totalStealth(),0))
- M.adjustOxyLoss(get_damage)
+ M.adjustOxyLoss(rand(6,13))
return 1
/datum/symptom/choking/proc/Choke(mob/living/M, datum/disease/advance/A)
- var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(max(16+A.totalStealth()*5,0))
- M.adjustOxyLoss(get_damage)
+ M.adjustOxyLoss(rand(10,18))
return 1
/*
@@ -78,38 +90,50 @@ Bonus
transmittable = -2
level = 7
severity = 3
+ base_message_chance = 15
+ symptom_delay_min = 14
+ symptom_delay_max = 30
+ var/paralysis = FALSE
-/datum/symptom/asphyxiation/Activate(datum/disease/advance/A)
+/datum/symptom/asphyxiation/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(3, 4)
- to_chat(M, "[pick("Your windpipe feels thin.", "Your lungs feel small.")]")
- Asphyxiate_stage_3_4(M, A)
- M.emote("gasp")
- else
- to_chat(M, "[pick("Your lungs hurt!", "It hurts to breathe!")]")
- Asphyxiate(M, A)
- M.emote("gasp")
- if(M.getOxyLoss() >= 120)
- M.visible_message("[M] stops breathing, as if their lungs have totally collapsed!")
- Asphyxiate_death(M, A)
+ if(A.properties["stage_rate"] >= 8)
+ paralysis = TRUE
+ if(A.properties["transmission"] >= 8)
+ power = 2
+
+/datum/symptom/asphyxiation/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(3, 4)
+ to_chat(M, "[pick("Your windpipe feels thin.", "Your lungs feel small.")]")
+ Asphyxiate_stage_3_4(M, A)
+ M.emote("gasp")
+ else
+ to_chat(M, "[pick("Your lungs hurt!", "It hurts to breathe!")]")
+ Asphyxiate(M, A)
+ M.emote("gasp")
+ if(M.getOxyLoss() >= 120)
+ M.visible_message("[M] stops breathing, as if their lungs have totally collapsed!")
+ Asphyxiate_death(M, A)
return
/datum/symptom/asphyxiation/proc/Asphyxiate_stage_3_4(mob/living/M, datum/disease/advance/A)
- var/get_damage = sqrt(abs(21+A.totalStageSpeed()*0.7))+sqrt(abs(16+A.totalStealth()))
+ var/get_damage = rand(10,15) * power
M.adjustOxyLoss(get_damage)
return 1
/datum/symptom/asphyxiation/proc/Asphyxiate(mob/living/M, datum/disease/advance/A)
- var/get_damage = sqrt(abs(21+A.totalStageSpeed()))+sqrt(abs(16+A.totalStealth()*5))
+ var/get_damage = rand(15,21) * power
M.adjustOxyLoss(get_damage)
- M.reagents.add_reagent_list(list("pancuronium" = 2, "sodium_thiopental" = 2))
+ if(paralysis)
+ M.reagents.add_reagent_list(list("pancuronium" = 3, "sodium_thiopental" = 3))
return 1
/datum/symptom/asphyxiation/proc/Asphyxiate_death(mob/living/M, datum/disease/advance/A)
- var/get_damage = sqrt(abs(21+A.totalStageSpeed()*1.5))+sqrt(abs(16+A.totalStealth()*7))
+ var/get_damage = rand(25,35) * power
M.adjustOxyLoss(get_damage)
M.adjustBrainLoss(get_damage/2)
return 1
diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm
index 8f388c45ed..45bf5d6182 100644
--- a/code/datums/diseases/advance/symptoms/confusion.dm
+++ b/code/datums/diseases/advance/symptoms/confusion.dm
@@ -24,17 +24,33 @@ Bonus
transmittable = 0
level = 4
severity = 2
+ base_message_chance = 25
+ symptom_delay_min = 10
+ symptom_delay_max = 30
+ var/brain_damage = FALSE
+/datum/symptom/confusion/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["resistance"] >= 6)
+ brain_damage = TRUE
+ if(A.properties["transmittable"] >= 6)
+ power = 1.5
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
/datum/symptom/confusion/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/carbon/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("Your head hurts.", "Your mind blanks for a moment.")]")
- else
- to_chat(M, "You can't think straight!")
- M.confused = min(100, M.confused + 8)
+ else
+ to_chat(M, "You can't think straight!")
+ M.confused = min(100 * power, M.confused + 8)
+ if(brain_damage && M.getBrainLoss()<=80)
+ M.adjustBrainLoss(5 * power)
+ M.updatehealth()
return
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index 13fdb5ea1b..e264b331e7 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -24,17 +24,45 @@ BONUS
transmittable = 2
level = 1
severity = 1
+ base_message_chance = 15
+ symptom_delay_min = 2
+ symptom_delay_max = 15
+ var/infective = FALSE
-/datum/symptom/cough/Activate(datum/disease/advance/A)
+/datum/symptom/cough/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3)
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.spread_flags &= AIRBORNE) //infect bystanders
+ infective = TRUE
+ if(A.properties["resistance"] >= 3) //strong enough to drop items
+ power = 1.5
+ if(A.properties["resistance"] >= 10) //strong enough to stun (rarely)
+ power = 2
+ if(A.properties["stage_rate"] >= 6) //cough more often
+ symptom_delay_max = 10
+
+/datum/symptom/cough/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You swallow excess mucus.", "You lightly cough.")]")
- else
- M.emote("cough")
+ else
+ M.emote("cough")
+ if(power >= 1.5)
var/obj/item/I = M.get_active_held_item()
if(I && I.w_class == WEIGHT_CLASS_TINY)
M.drop_item()
- return
+ if(power >= 2 && prob(10))
+ to_chat(M, "[pick("You have a coughing fit!", "You can't stop coughing!")]")
+ M.Stun(20)
+ M.emote("cough")
+ addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 6)
+ addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 12)
+ addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 18)
+ if(infective)
+ A.spread(A.holder, 1)
+
diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm
index 92269ce8db..b6163a72a1 100644
--- a/code/datums/diseases/advance/symptoms/deafness.dm
+++ b/code/datums/diseases/advance/symptoms/deafness.dm
@@ -24,14 +24,32 @@ Bonus
transmittable = -3
level = 4
severity = 3
+ base_message_chance = 100
+ symptom_delay_min = 25
+ symptom_delay_max = 80
+
+/datum/symptom/deafness/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["resistance"] >= 9) //permanent deafness
+ power = 2
/datum/symptom/deafness/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(3, 4)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ switch(A.stage)
+ if(3, 4)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You hear a ringing in your ear.", "Your ears pop.")]")
- if(5)
+ if(5)
+ if(power > 2)
+ var/obj/item/organ/ears/ears = M.getorganslot("ears")
+ if(istype(ears) && ears.ear_damage < UNHEALING_EAR_DAMAGE)
+ to_chat(M, "Your ears pop painfully and start bleeding!")
+ ears.ear_damage = max(ears.ear_damage, UNHEALING_EAR_DAMAGE)
+ M.emote("scream")
+ else
to_chat(M, "Your ears pop and begin ringing loudly!")
M.minimumDeafTicks(20)
diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm
index c594298b11..60e9989d4a 100644
--- a/code/datums/diseases/advance/symptoms/dizzy.dm
+++ b/code/datums/diseases/advance/symptoms/dizzy.dm
@@ -24,15 +24,27 @@ Bonus
transmittable = -1
level = 4
severity = 2
+ base_message_chance = 50
+ symptom_delay_min = 15
+ symptom_delay_max = 40
-/datum/symptom/dizzy/Activate(datum/disease/advance/A)
+/datum/symptom/dizzy/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["transmittable"] >= 6) //druggy
+ power = 2
+
+/datum/symptom/dizzy/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You feel dizzy.", "Your head spins.")]")
- else
- to_chat(M, "A wave of dizziness washes over you!")
- M.Dizzy(5)
- return
\ No newline at end of file
+ else
+ to_chat(M, "A wave of dizziness washes over you!")
+ M.Dizzy(5)
+ if(power >= 2)
+ M.set_drugginess(5)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm
index 53cc3b6c0d..e69c3bf0a2 100644
--- a/code/datums/diseases/advance/symptoms/fever.dm
+++ b/code/datums/diseases/advance/symptoms/fever.dm
@@ -24,18 +24,34 @@ Bonus
transmittable = 2
level = 2
severity = 2
+ base_message_chance = 20
+ symptom_delay_min = 10
+ symptom_delay_max = 30
+ var/unsafe = FALSE //over the heat threshold
-/datum/symptom/fever/Activate(datum/disease/advance/A)
+/datum/symptom/fever/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/carbon/M = A.affected_mob
- to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]")
- if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT)
- Heat(M, A)
+ if(A.properties["resistance"] >= 5) //dangerous fever
+ power = 1.5
+ unsafe = TRUE
+ if(A.properties["resistance"] >= 10)
+ power = 2.5
- return
+/datum/symptom/fever/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ if(!unsafe || A.stage < 4)
+ to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]")
+ else
+ to_chat(M, "[pick("You feel too hot.", "You feel like your blood is boiling.")]")
+ if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT || unsafe)
+ Heat(M, A)
/datum/symptom/fever/proc/Heat(mob/living/M, datum/disease/advance/A)
- var/get_heat = (sqrt(max(21,21+A.totalTransmittable()*2)))+(sqrt(max(21,20+A.totalStageSpeed()*3)))
- M.bodytemperature = min(M.bodytemperature + (get_heat * A.stage), BODYTEMP_HEAT_DAMAGE_LIMIT - 1)
+ var/get_heat = 6 * power
+ if(!unsafe)
+ M.bodytemperature = min(M.bodytemperature + (get_heat * A.stage), BODYTEMP_HEAT_DAMAGE_LIMIT - 1)
+ else
+ M.bodytemperature += (get_heat * A.stage)
return 1
diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm
index 90bfcbc6e3..5e430b3297 100644
--- a/code/datums/diseases/advance/symptoms/fire.dm
+++ b/code/datums/diseases/advance/symptoms/fire.dm
@@ -24,36 +24,53 @@ Bonus
transmittable = -4
level = 6
severity = 5
+ base_message_chance = 20
+ symptom_delay_min = 20
+ symptom_delay_max = 75
+ var/infective = FALSE
+
+/datum/symptom/fire/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stage_rate"] >= 4)
+ power = 1.5
+ if(A.properties["stage_rate"] >= 8)
+ power = 2
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["transmittable"] >= 8) //burning skin spreads the virus through smoke
+ infective = TRUE
/datum/symptom/fire/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(3)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(3)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]")
- if(4)
- Firestacks_stage_4(M, A)
- M.IgniteMob()
- to_chat(M, "Your skin bursts into flames!")
- M.emote("scream")
- if(5)
- Firestacks_stage_5(M, A)
- M.IgniteMob()
- to_chat(M, "Your skin erupts into an inferno!")
- M.emote("scream")
- return
+ if(4)
+ Firestacks_stage_4(M, A)
+ M.IgniteMob()
+ to_chat(M, "Your skin bursts into flames!")
+ M.emote("scream")
+ if(5)
+ Firestacks_stage_5(M, A)
+ M.IgniteMob()
+ to_chat(M, "Your skin erupts into an inferno!")
+ M.emote("scream")
/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
- var/get_stacks = (sqrt(20+A.totalStageSpeed()*2))-(sqrt(max(0, 16+A.totalStealth())))
- M.adjust_fire_stacks(get_stacks)
- M.adjustFireLoss(get_stacks/2)
+ M.adjust_fire_stacks(1 * power)
+ M.adjustFireLoss(3 * power)
+ if(infective)
+ A.spread(A.holder, 2)
return 1
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
- var/get_stacks = (sqrt(max(0, 20+A.totalStageSpeed()*3)))-(sqrt(max(0, 16+A.totalStealth())))
- M.adjust_fire_stacks(get_stacks)
- M.adjustFireLoss(get_stacks)
+ M.adjust_fire_stacks(3 * power)
+ M.adjustFireLoss(5 * power)
+ if(infective)
+ A.spread(A.holder, 4)
return 1
/*
@@ -83,40 +100,58 @@ Bonus
transmittable = -2
level = 7
severity = 6
+ base_message_chance = 100
+ symptom_delay_min = 30
+ symptom_delay_max = 90
+ var/chems = FALSE
+ var/explosion_power = 1
+
+/datum/symptom/alkali/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["resistance"] >= 9) //intense but sporadic effect
+ power = 2
+ symptom_delay_min = 50
+ symptom_delay_max = 140
+ if(A.properties["stage_rate"] >= 8) //serious boom when wet
+ explosion_power = 2
+ if(A.properties["transmission"] >= 8) //extra chemicals
+ chems = TRUE
/datum/symptom/alkali/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(3)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(3)
+ if(prob(base_message_chance))
to_chat(M, "[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]")
- if(4)
- Alkali_fire_stage_4(M, A)
- M.IgniteMob()
- to_chat(M, "Your sweat bursts into flames!")
- M.emote("scream")
- if(5)
+ if(4)
+ Alkali_fire_stage_4(M, A)
+ M.IgniteMob()
+ to_chat(M, "Your sweat bursts into flames!")
+ M.emote("scream")
+ if(5)
+ Alkali_fire_stage_5(M, A)
+ M.IgniteMob()
+ to_chat(M, "Your skin erupts into an inferno!")
+ M.emote("scream")
+ if(M.fire_stacks < 0)
+ M.visible_message("[M]'s sweat sizzles and pops on contact with water!")
+ explosion(get_turf(M),0,0,2 * explosion_power)
Alkali_fire_stage_5(M, A)
- M.IgniteMob()
- to_chat(M, "Your skin erupts into an inferno!")
- M.emote("scream")
- if(M.fire_stacks < 0)
- M.visible_message("[M]'s sweat sizzles and pops on contact with water!")
- explosion(M.loc,0,0,2)
- Alkali_fire_stage_5(M, A)
- return
/datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A)
- var/get_stacks = (sqrt(20+A.totalStageSpeed()*5))
+ var/get_stacks = 6 * power
M.adjust_fire_stacks(get_stacks)
M.adjustFireLoss(get_stacks/2)
- M.reagents.add_reagent("clf3", 1)
+ if(chems)
+ M.reagents.add_reagent("clf3", 2 * power)
return 1
/datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A)
- var/get_stacks = (sqrt(20+A.totalStageSpeed()*8))
+ var/get_stacks = 8 * power
M.adjust_fire_stacks(get_stacks)
M.adjustFireLoss(get_stacks)
- M.reagents.add_reagent_list(list("napalm" = 3, "clf3" = 3))
+ if(chems)
+ M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power))
return 1
diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm
index a819560ee1..838d4481b5 100644
--- a/code/datums/diseases/advance/symptoms/flesh_eating.dm
+++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm
@@ -24,22 +24,40 @@ Bonus
transmittable = -4
level = 6
severity = 5
+ base_message_chance = 50
+ symptom_delay_min = 15
+ symptom_delay_max = 60
+ var/bleed = FALSE
+ var/pain = FALSE
-/datum/symptom/flesh_eating/Activate(datum/disease/advance/A)
+/datum/symptom/flesh_eating/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(2,3)
+ if(A.properties["resistance"] >= 7) //extra bleeding
+ bleed = TRUE
+ if(A.properties["transmittable"] >= 8) //extra stamina damage
+ pain = TRUE
+
+/datum/symptom/flesh_eating/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(2,3)
+ if(prob(base_message_chance))
to_chat(M, "[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]")
- if(4,5)
- to_chat(M, "[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]")
- Flesheat(M, A)
- return
+ if(4,5)
+ to_chat(M, "[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]")
+ Flesheat(M, A)
/datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A)
- var/get_damage = ((sqrt(16-A.totalStealth()))*5)
+ var/get_damage = rand(15,25) * power
M.adjustBruteLoss(get_damage)
+ if(pain)
+ M.adjustStaminaLoss(get_damage)
+ if(bleed)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ H.bleed_rate += 5 * power
return 1
/*
@@ -68,21 +86,37 @@ Bonus
transmittable = -2
level = 7
severity = 6
+ base_message_chance = 50
+ symptom_delay_min = 3
+ symptom_delay_max = 6
+ var/chems = FALSE
+ var/zombie = FALSE
-/datum/symptom/flesh_death/Activate(datum/disease/advance/A)
+/datum/symptom/flesh_death/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(2,3)
+ if(A.properties["stealth"] >= 5)
+ suppress_warning = TRUE
+ if(A.properties["stage_rate"] >= 7) //bleeding and hunger
+ chems = TRUE
+
+/datum/symptom/flesh_death/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(2,3)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You feel your body break apart.", "Your skin rubs off like dust.")]")
- if(4,5)
- to_chat(M, "[pick("You feel your muscles weakening.", "Your skin begins detaching itself.", "You feel sandy.")]")
- Flesh_death(M, A)
- return
+ if(4,5)
+ if(prob(base_message_chance / 2)) //reduce spam
+ to_chat(M, "[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]")
+ Flesh_death(M, A)
/datum/symptom/flesh_death/proc/Flesh_death(mob/living/M, datum/disease/advance/A)
- var/get_damage = ((sqrt(16-A.totalStealth()))*6)
+ var/get_damage = rand(6,10)
M.adjustBruteLoss(get_damage)
- M.reagents.add_reagent_list(list("heparin" = 5, "lipolicide" = 5))
+ if(chems)
+ M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2))
+ if(zombie)
+ M.reagents.add_reagent("romerol", 1)
return 1
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/genetics.dm b/code/datums/diseases/advance/symptoms/genetics.dm
index a900dbb7c8..0b6ea5f808 100644
--- a/code/datums/diseases/advance/symptoms/genetics.dm
+++ b/code/datums/diseases/advance/symptoms/genetics.dm
@@ -26,22 +26,34 @@ Bonus
severity = 3
var/list/possible_mutations
var/archived_dna = null
+ base_message_chance = 50
+ symptom_delay_min = 60
+ symptom_delay_max = 120
+ var/no_reset = FALSE
/datum/symptom/genetic_mutation/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB * 3)) // 15% chance
- var/mob/living/carbon/C = A.affected_mob
- if(!C.has_dna())
- return
- switch(A.stage)
- if(4, 5)
- to_chat(C, "[pick("Your skin feels itchy.", "You feel light headed.")]")
- C.dna.remove_mutation_group(possible_mutations)
+ if(!..())
+ return
+ var/mob/living/carbon/C = A.affected_mob
+ if(!C.has_dna())
+ return
+ switch(A.stage)
+ if(4, 5)
+ to_chat(C, "[pick("Your skin feels itchy.", "You feel light headed.")]")
+ C.dna.remove_mutation_group(possible_mutations)
+ for(var/i in 1 to power)
C.randmut(possible_mutations)
- return
// Archive their DNA before they were infected.
/datum/symptom/genetic_mutation/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 5) //don't restore dna after curing
+ no_reset = TRUE
+ if(A.properties["stage_rate"] >= 10) //mutate more often
+ symptom_delay_min = 20
+ symptom_delay_max = 60
+ if(A.properties["resistance"] >= 8) //mutate twice
+ power = 2
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.mutations_list[RACEMUT]
var/mob/living/carbon/M = A.affected_mob
if(M)
@@ -51,9 +63,10 @@ Bonus
// Give them back their old DNA when cured.
/datum/symptom/genetic_mutation/End(datum/disease/advance/A)
- var/mob/living/carbon/M = A.affected_mob
- if(M && archived_dna)
- if(!M.has_dna())
- return
- M.dna.struc_enzymes = archived_dna
- M.domutcheck()
+ if(!no_reset)
+ var/mob/living/carbon/M = A.affected_mob
+ if(M && archived_dna)
+ if(!M.has_dna())
+ return
+ M.dna.struc_enzymes = archived_dna
+ M.domutcheck()
diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm
index 0c42101ea1..f913d49573 100644
--- a/code/datums/diseases/advance/symptoms/hallucigen.dm
+++ b/code/datums/diseases/advance/symptoms/hallucigen.dm
@@ -24,18 +24,39 @@ Bonus
transmittable = -1
level = 5
severity = 3
+ base_message_chance = 25
+ symptom_delay_min = 25
+ symptom_delay_max = 90
+ var/fake_healthy = FALSE
-/datum/symptom/hallucigen/Activate(datum/disease/advance/A)
+/datum/symptom/hallucigen/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/carbon/M = A.affected_mob
- switch(A.stage)
- if(1, 2)
- to_chat(M, "[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whispher with no source.", "Your head aches.")]")
- if(3, 4)
- to_chat(M, "[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]")
- else
- to_chat(M, "[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]")
- M.hallucination += 25
+ if(A.properties["stealth"] >= 4) //fake good symptom messages
+ fake_healthy = TRUE
+ base_message_chance = 50
+ if(A.properties["stage_rate"] >= 7) //stronger hallucinations
+ power = 2
- return
+/datum/symptom/hallucigen/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ var/list/healthy_messages = list("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.",\
+ "Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")
+ switch(A.stage)
+ if(1, 2)
+ if(prob(base_message_chance))
+ if(!fake_healthy)
+ to_chat(M, "[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whispher with no source.", "Your head aches.")]")
+ else
+ to_chat(M, "[pick(healthy_messages)]")
+ if(3, 4)
+ if(prob(base_message_chance))
+ if(!fake_healthy)
+ to_chat(M, "[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]")
+ else
+ to_chat(M, "[pick(healthy_messages)]")
+ else
+ if(prob(base_message_chance))
+ to_chat(M, "[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]")
+ M.hallucination += (15 * power)
diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm
index 526ab93836..3baeedea19 100644
--- a/code/datums/diseases/advance/symptoms/headache.dm
+++ b/code/datums/diseases/advance/symptoms/headache.dm
@@ -25,10 +25,31 @@ BONUS
transmittable = 0
level = 1
severity = 1
+ base_message_chance = 100
+ symptom_delay_min = 15
+ symptom_delay_max = 30
-/datum/symptom/headache/Activate(datum/disease/advance/A)
+/datum/symptom/headache/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- to_chat(M, "[pick("Your head hurts.", "Your head starts pounding.")]")
- return
\ No newline at end of file
+ if(A.properties["stealth"] >= 4)
+ base_message_chance = 50
+ if(A.properties["stage_rate"] >= 6) //severe pain
+ power = 2
+ if(A.properties["stage_rate"] >= 9) //cluster headaches
+ symptom_delay_min = 30
+ symptom_delay_max = 60
+ power = 3
+
+/datum/symptom/headache/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(power < 2)
+ if(prob(base_message_chance))
+ to_chat(M, "[pick("Your head hurts.", "Your head pounds.")]")
+ if(power >= 2)
+ to_chat(M, "[pick("Your head hurts a lot.", "Your head pounds incessantly.")]")
+ M.adjustStaminaLoss(25)
+ if(power >= 3)
+ to_chat(M, "[pick("Your head hurts!", "You feel a burning knife inside your brain!", "A wave of pain fills your head!")]")
+ M.Stun(35)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 8fc9e05fd1..7b31588240 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -1,7 +1,41 @@
+/datum/symptom/heal
+ name = "Basic Healing (does nothing)" //warning for adminspawn viruses
+ stealth = 1
+ resistance = -4
+ stage_speed = -4
+ transmittable = -4
+ level = 0 //not obtainable
+ base_message_chance = 20 //here used for the overlays
+ symptom_delay_min = 1
+ symptom_delay_max = 1
+ var/hide_healing = FALSE
+
+/datum/symptom/heal/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 4) //invisible healing
+ hide_healing = TRUE
+ if(A.properties["stage_rate"] >= 6) //stronger healing
+ power = 2
+ if(A.properties["stage_rate"] >= 11) //even stronger healing
+ power = 3
+
+/datum/symptom/heal/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ //100% chance to activate for slow but consistent healing
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(4, 5)
+ Heal(M, A)
+ return
+
+/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A)
+ return 1
+
/*
//////////////////////////////////////
-Healing
+Toxin Filter
Little bit hidden.
Lowers resistance tremendously.
@@ -15,8 +49,7 @@ Bonus
//////////////////////////////////////
*/
-/datum/symptom/heal
-
+/datum/symptom/heal/toxin
name = "Toxic Filter"
stealth = 1
resistance = -4
@@ -24,18 +57,9 @@ Bonus
transmittable = -4
level = 6
-/datum/symptom/heal/Activate(datum/disease/advance/A)
- ..()
- //100% chance to activate for slow but consistent healing
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(4, 5)
- Heal(M, A)
- return
-
-/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A)
- var/heal_amt = 0.5
- if(M.toxloss > 0 && prob(20))
+/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A)
+ var/heal_amt = 1 * power
+ if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#66FF99")
M.adjustToxLoss(-heal_amt)
return 1
@@ -55,7 +79,7 @@ Bonus
//////////////////////////////////////
*/
-/datum/symptom/heal/plus
+/datum/symptom/heal/toxin/plus
name = "Apoptoxin filter"
stealth = 0
@@ -64,9 +88,9 @@ Bonus
transmittable = -2
level = 8
-/datum/symptom/heal/plus/Heal(mob/living/M, datum/disease/advance/A)
- var/heal_amt = 1
- if(M.toxloss > 0 && prob(20))
+/datum/symptom/heal/toxin/plus/Heal(mob/living/M, datum/disease/advance/A)
+ var/heal_amt = 2 * power
+ if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#00FF00")
M.adjustToxLoss(-heal_amt)
return 1
@@ -98,7 +122,7 @@ Bonus
level = 6
/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A)
- var/heal_amt = 1
+ var/heal_amt = 2 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
@@ -109,7 +133,7 @@ Bonus
if(L.heal_damage(heal_amt/parts.len, 0))
M.update_damage_overlays()
- if(prob(20))
+ if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#FF3333")
return 1
@@ -141,14 +165,15 @@ Bonus
level = 8
/datum/symptom/heal/brute/plus/Heal(mob/living/carbon/M, datum/disease/advance/A)
- var/heal_amt = 2
+ var/heal_amt = 4 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
if(M.getCloneLoss() > 0)
M.adjustCloneLoss(-1)
M.take_bodypart_damage(0, 1) //Deals BURN damage, which is not cured by this symptom
- new /obj/effect/temp_visual/heal(get_turf(M), "#33FFCC")
+ if(!hide_healing)
+ new /obj/effect/temp_visual/heal(get_turf(M), "#33FFCC")
if(!parts.len)
return
@@ -157,7 +182,7 @@ Bonus
if(L.heal_damage(heal_amt/parts.len, 0))
M.update_damage_overlays()
- if(prob(20))
+ if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#CC1100")
return 1
@@ -189,7 +214,7 @@ Bonus
level = 6
/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A)
- var/heal_amt = 1
+ var/heal_amt = 2 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
@@ -200,7 +225,7 @@ Bonus
if(L.heal_damage(0, heal_amt/parts.len))
M.update_damage_overlays()
- if(prob(20))
+ if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#FF9933")
return 1
@@ -231,7 +256,7 @@ Bonus
level = 8
/datum/symptom/heal/burn/plus/Heal(mob/living/carbon/M, datum/disease/advance/A)
- var/heal_amt = 2
+ var/heal_amt = 4 * power
var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs.
@@ -247,7 +272,7 @@ Bonus
if(L.heal_damage(0, heal_amt/parts.len))
M.update_damage_overlays()
- if(prob(20))
+ if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#CC6600")
return 1
@@ -277,9 +302,11 @@ Bonus
stage_speed = 0
transmittable = -3
level = 5
+ symptom_delay_min = 3
+ symptom_delay_max = 8
/datum/symptom/heal/dna/Heal(mob/living/carbon/M, datum/disease/advance/A)
- var/amt_healed = 1
+ var/amt_healed = 2 * power
M.adjustBrainLoss(-amt_healed)
//Non-power mutations, excluding race, so the virus does not force monkey -> human transformations.
var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations) - GLOB.mutations_list[RACEMUT]
diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm
index 8563520b09..880ac1f3e6 100644
--- a/code/datums/diseases/advance/symptoms/itching.dm
+++ b/code/datums/diseases/advance/symptoms/itching.dm
@@ -25,10 +25,23 @@ BONUS
transmittable = 1
level = 1
severity = 1
+ symptom_delay_min = 5
+ symptom_delay_max = 25
+ var/scratch = FALSE
-/datum/symptom/itching/Activate(datum/disease/advance/A)
+/datum/symptom/itching/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- to_chat(M, "Your [pick("back", "arm", "leg", "elbow", "head")] itches.")
- return
\ No newline at end of file
+ if(A.properties["transmittable"] >= 6) //itch more often
+ symptom_delay_min = 1
+ symptom_delay_max = 4
+ if(A.properties["stage_rate"] >= 7) //scratch
+ scratch = TRUE
+
+/datum/symptom/itching/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ var/can_scratch = scratch && !M.incapacitated()
+ to_chat(M, "Your [pick("back", "arm", "leg", "elbow", "head")] itches. [can_scratch ? " You scratch it." : ""]")
+ if(can_scratch)
+ M.adjustBruteLoss(0.5)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/narcolepsy.dm b/code/datums/diseases/advance/symptoms/narcolepsy.dm
new file mode 100644
index 0000000000..a5a2bd7a4c
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/narcolepsy.dm
@@ -0,0 +1,89 @@
+
+/*
+//////////////////////////////////////
+Narcolepsy
+ Noticeable.
+ Lowers resistance
+ Decreases stage speed tremendously.
+ Decreases transmittablity tremendously.
+
+Bonus
+ Causes drowsiness and sleep.
+
+//////////////////////////////////////
+*/
+/datum/symptom/narcolepsy
+ name = "Narcolepsy"
+ stealth = -1
+ resistance = -2
+ stage_speed = -3
+ transmittable = -4
+ level = 6
+ symptom_delay_min = 15
+ symptom_delay_max = 80
+ severity = 5
+ var/sleep_level = 0
+ var/sleepy_ticks = 0
+ var/stamina = FALSE
+
+/datum/symptom/narcolepsy/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["transmittable"] >= 7) //stamina damage
+ stamina = TRUE
+ if(A.properties["resistance"] >= 10) //act more often
+ symptom_delay_min = 10
+ symptom_delay_max = 60
+
+/datum/symptom/narcolepsy/Activate(var/datum/disease/advance/A)
+ var/mob/living/M = A.affected_mob
+ //this ticks even when on cooldown
+ switch(sleep_level) //Works sorta like morphine
+ if(10 to 19)
+ M.drowsyness += 1
+ if(20 to INFINITY)
+ M.Sleeping(30, 0)
+ sleep_level = 0
+ sleepy_ticks = 0
+
+ if(sleepy_ticks && A.stage>=5)
+ sleep_level++
+ sleepy_ticks--
+ else
+ sleep_level = 0
+
+ if(!..())
+ return
+
+ switch(A.stage)
+ if(1)
+ if(prob(10))
+ to_chat(M, "You feel tired.")
+ if(2)
+ if(prob(10))
+ to_chat(M, "You feel very tired.")
+ sleepy_ticks += rand(10,14)
+ if(stamina)
+ M.adjustStaminaLoss(10)
+ if(3)
+ if(prob(15))
+ to_chat(M, "You try to focus on staying awake.")
+ sleepy_ticks += rand(10,14)
+ if(stamina)
+ M.adjustStaminaLoss(15)
+ if(4)
+ if(prob(20))
+ to_chat(M, "You nod off for a moment.")
+ sleepy_ticks += rand(10,14)
+ if(stamina)
+ M.adjustStaminaLoss(20)
+ if(5)
+ if(prob(25))
+ to_chat(M, "[pick("So tired...","You feel very sleepy.","You have a hard time keeping your eyes open.","You try to stay awake.")]")
+ M.drowsyness = max(M.drowsyness, 2)
+ sleepy_ticks += rand(10,14)
+ if(stamina)
+ M.adjustStaminaLoss(30)
+
+
+
+
diff --git a/code/datums/diseases/advance/symptoms/oxygen.dm b/code/datums/diseases/advance/symptoms/oxygen.dm
index 99866a3544..5949e84420 100644
--- a/code/datums/diseases/advance/symptoms/oxygen.dm
+++ b/code/datums/diseases/advance/symptoms/oxygen.dm
@@ -23,16 +23,27 @@ Bonus
stage_speed = -3
transmittable = -4
level = 6
+ base_message_chance = 5
+ symptom_delay_min = 1
+ symptom_delay_max = 1
+ var/regenerate_blood = FALSE
-/datum/symptom/oxygen/Activate(datum/disease/advance/A)
+/datum/symptom/oxygen/Start(datum/disease/advance/A)
..()
- var/mob/living/M = A.affected_mob
+ if(A.properties["resistance"] >= 8) //blood regeneration
+ regenerate_blood = TRUE
+
+/datum/symptom/oxygen/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(4, 5)
- M.adjustOxyLoss(-3, 0)
- if(M.losebreath >= 4)
- M.losebreath -= 2
+ M.adjustOxyLoss(-7, 0)
+ M.losebreath = max(0, M.losebreath - 4)
+ if(regenerate_blood && M.blood_volume < BLOOD_VOLUME_NORMAL)
+ M.blood_volume += 1
else
- if(prob(SYMPTOM_ACTIVATION_PROB * 3))
+ if(prob(base_message_chance))
to_chat(M, "[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]")
return
diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm
index 8197b1510b..3063ee06f6 100644
--- a/code/datums/diseases/advance/symptoms/sensory.dm
+++ b/code/datums/diseases/advance/symptoms/sensory.dm
@@ -23,106 +23,43 @@ Bonus
transmittable = -3
level = 5
severity = 0
+ symptom_delay_min = 5
+ symptom_delay_max = 10
+ var/purge_alcohol = FALSE
+ var/brain_heal = FALSE
+
+/datum/symptom/sensory_restoration/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["resistance"] >= 6) //heal brain damage
+ brain_heal = TRUE
+ if(A.properties["transmittable"] >= 8) //purge alcohol
+ purge_alcohol = TRUE
/datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A)
- ..()
+ if(!..())
+ return
var/mob/living/M = A.affected_mob
if(A.stage >= 2)
M.restoreEars()
if(A.stage >= 3)
- M.dizziness = 0
- M.drowsyness = 0
- M.slurring = 0
- M.confused = 0
- M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- H.drunkenness = max(H.drunkenness - 10, 0)
+ M.dizziness = max(0, M.dizziness - 2)
+ M.drowsyness = max(0, M.drowsyness - 2)
+ M.slurring = max(0, M.slurring - 2)
+ M.confused = max(0, M.confused - 2)
+ if(purge_alcohol)
+ M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ H.drunkenness = max(H.drunkenness - 5, 0)
if(A.stage >= 4)
- M.drowsyness = max(M.drowsyness-5, 0)
+ M.drowsyness = max(0, M.drowsyness - 2)
if(M.reagents.has_reagent("mindbreaker"))
M.reagents.remove_reagent("mindbreaker", 5)
if(M.reagents.has_reagent("histamine"))
M.reagents.remove_reagent("histamine", 5)
M.hallucination = max(0, M.hallucination - 10)
- if(A.stage >= 5)
+ if(brain_heal && A.stage >= 5)
M.adjustBrainLoss(-3)
-
-/*
-//////////////////////////////////////
-Sensory-Destruction
- noticable.
- Lowers resistance
- Decreases stage speed tremendously.
- Decreases transmittablity tremendously.
- the drugs hit them so hard they have to focus on not dying
-
-Bonus
- The body generates Sensory destructive chemicals.
- You cannot taste anything anymore.
- ethanol for extremely drunk victim
- mindbreaker to break the mind
- impedrezene to ruin the brain
-
-//////////////////////////////////////
-*/
-/datum/symptom/sensory_destruction
- name = "Sensory destruction"
- stealth = -1
- resistance = -2
- stage_speed = -3
- transmittable = -4
- level = 6
- severity = 5
- var/sleepy = 0
- var/sleepy_ticks = 0
-
-/datum/symptom/sensory_destruction/Activate(var/datum/disease/advance/A)
- ..()
- var/mob/living/M = A.affected_mob
- if(prob(SYMPTOM_ACTIVATION_PROB))
- switch(A.stage)
- if(1)
- to_chat(M, "You can't feel anything.")
- if(2)
- to_chat(M, "You feel absolutely hammered.")
- if(prob(10))
- sleepy_ticks += rand(10,14)
- if(3)
- M.reagents.add_reagent("ethanol",rand(5,7))
- to_chat(M, "You try to focus on not dying.")
- if(prob(15))
- sleepy_ticks += rand(10,14)
- if(4)
- M.reagents.add_reagent("ethanol",rand(6,10))
- to_chat(M, "u can count 2 potato!")
- if(prob(20))
- sleepy_ticks += rand(10,14)
- if(5)
- M.reagents.add_reagent("ethanol",rand(7,13))
- if(prob(25))
- sleepy_ticks += rand(10,14)
-
- if(sleepy_ticks)
- if(A.stage>=4)
- M.hallucination = min(M.hallucination + 10, 50)
- if(A.stage>=5)
- if(prob(80))
- M.adjustBrainLoss(1)
- if(prob(50))
- M.drowsyness = max(M.drowsyness, 3)
- sleepy++
- sleepy_ticks--
- else
- sleepy = 0
-
- switch(sleepy) //Works like morphine
- if(11)
- to_chat(M, "You start to feel tired...")
- if(12 to 24)
- M.drowsyness += 1
- if(24 to INFINITY)
- M.Sleeping(40)
diff --git a/code/datums/diseases/advance/symptoms/sensory.dm.rej b/code/datums/diseases/advance/symptoms/sensory.dm.rej
new file mode 100644
index 0000000000..fbf27328fa
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/sensory.dm.rej
@@ -0,0 +1,134 @@
+diff a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm (rejected hunks)
+@@ -23,106 +23,43 @@ Bonus
+ transmittable = -3
+ level = 5
+ severity = 0
++ symptom_delay_min = 5
++ symptom_delay_max = 10
++ var/purge_alcohol = FALSE
++ var/brain_heal = FALSE
+
+-/datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A)
++/datum/symptom/sensory_restoration/Start(datum/disease/advance/A)
+ ..()
++ if(A.properties["resistance"] >= 6) //heal brain damage
++ brain_heal = TRUE
++ if(A.properties["transmittable"] >= 8) //purge alcohol
++ purge_alcohol = TRUE
++
++/datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A)
++ if(!..())
++ return
+ var/mob/living/M = A.affected_mob
+ if(A.stage >= 2)
+ M.restoreEars()
+
+ if(A.stage >= 3)
+- M.dizziness = 0
+- M.drowsyness = 0
+- M.slurring = 0
+- M.confused = 0
+- M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3)
+- if(ishuman(M))
+- var/mob/living/carbon/human/H = M
+- H.drunkenness = max(H.drunkenness - 10, 0)
++ M.dizziness = max(0, M.dizziness - 2)
++ M.drowsyness = max(0, M.drowsyness - 2)
++ M.slurring = max(0, M.slurring - 2)
++ M.confused = max(0, M.confused - 2)
++ if(purge_alcohol)
++ M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3)
++ if(ishuman(M))
++ var/mob/living/carbon/human/H = M
++ H.drunkenness = max(H.drunkenness - 5, 0)
+
+ if(A.stage >= 4)
+- M.drowsyness = max(M.drowsyness-5, 0)
++ M.drowsyness = max(0, M.drowsyness - 2)
+ if(M.reagents.has_reagent("mindbreaker"))
+ M.reagents.remove_reagent("mindbreaker", 5)
+ if(M.reagents.has_reagent("histamine"))
+ M.reagents.remove_reagent("histamine", 5)
+ M.hallucination = max(0, M.hallucination - 10)
+
+- if(A.stage >= 5)
+- M.adjustBrainLoss(-3)
+-
+-/*
+-//////////////////////////////////////
+-Sensory-Destruction
+- noticable.
+- Lowers resistance
+- Decreases stage speed tremendously.
+- Decreases transmittablity tremendously.
+- the drugs hit them so hard they have to focus on not dying
+-
+-Bonus
+- The body generates Sensory destructive chemicals.
+- You cannot taste anything anymore.
+- ethanol for extremely drunk victim
+- mindbreaker to break the mind
+- impedrezene to ruin the brain
+-
+-//////////////////////////////////////
+-*/
+-/datum/symptom/sensory_destruction
+- name = "Sensory destruction"
+- stealth = -1
+- resistance = -2
+- stage_speed = -3
+- transmittable = -4
+- level = 6
+- severity = 5
+- var/sleepy = 0
+- var/sleepy_ticks = 0
+-
+-/datum/symptom/sensory_destruction/Activate(var/datum/disease/advance/A)
+- ..()
+- var/mob/living/M = A.affected_mob
+- if(prob(SYMPTOM_ACTIVATION_PROB))
+- switch(A.stage)
+- if(1)
+- to_chat(M, "You can't feel anything.")
+- if(2)
+- to_chat(M, "You feel absolutely hammered.")
+- if(prob(10))
+- sleepy_ticks += rand(10,14)
+- if(3)
+- M.reagents.add_reagent("ethanol",rand(5,7))
+- to_chat(M, "You try to focus on not dying.")
+- if(prob(15))
+- sleepy_ticks += rand(10,14)
+- if(4)
+- M.reagents.add_reagent("ethanol",rand(6,10))
+- to_chat(M, "u can count 2 potato!")
+- if(prob(20))
+- sleepy_ticks += rand(10,14)
+- if(5)
+- M.reagents.add_reagent("ethanol",rand(7,13))
+- if(prob(25))
+- sleepy_ticks += rand(10,14)
+-
+- if(sleepy_ticks)
+- if(A.stage>=4)
+- M.hallucination = min(M.hallucination + 10, 50)
+- if(A.stage>=5)
+- if(prob(80))
+- M.adjustBrainLoss(1)
+- if(prob(50))
+- M.drowsyness = max(M.drowsyness, 3)
+- sleepy++
+- sleepy_ticks--
+- else
+- sleepy = 0
+-
+- switch(sleepy) //Works like morphine
+- if(11)
+- to_chat(M, "You start to feel tired...")
+- if(12 to 24)
+- M.drowsyness += 1
+- if(24 to INFINITY)
+- M.Sleeping(2, 0)
++ if(brain_heal && A.stage >= 5)
++ M.adjustBrainLoss(-3)
+\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm
index 44c241a25f..cf88fcf6db 100644
--- a/code/datums/diseases/advance/symptoms/shedding.dm
+++ b/code/datums/diseases/advance/symptoms/shedding.dm
@@ -2,8 +2,8 @@
//////////////////////////////////////
Alopecia
- Noticable.
- Decreases resistance slightly.
+ Not Noticeable.
+ Increases resistance slightly.
Reduces stage speed slightly.
Transmittable.
Intense Level.
@@ -17,29 +17,34 @@ BONUS
/datum/symptom/shedding
name = "Alopecia"
- stealth = -1
- resistance = -1
+ stealth = 0
+ resistance = 1
stage_speed = -1
- transmittable = 2
+ transmittable = 3
level = 4
severity = 1
+ base_message_chance = 50
+ symptom_delay_min = 45
+ symptom_delay_max = 90
/datum/symptom/shedding/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
+ if(!..())
+ return
+
+ var/mob/living/M = A.affected_mob
+ if(prob(base_message_chance))
to_chat(M, "[pick("Your scalp itches.", "Your skin feels flakey.")]")
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- switch(A.stage)
- if(3, 4)
- if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair"))
- to_chat(H, "Your hair starts to fall out in clumps...")
- addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50)
- if(5)
- if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
- to_chat(H, "Your hair starts to fall out in clumps...")
- addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ switch(A.stage)
+ if(3, 4)
+ if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair"))
+ to_chat(H, "Your hair starts to fall out in clumps...")
+ addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50)
+ if(5)
+ if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
+ to_chat(H, "Your hair starts to fall out in clumps...")
+ addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50)
/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)
if(fullbald)
diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm
index a26a19de04..4c9ec94a2b 100644
--- a/code/datums/diseases/advance/symptoms/shivering.dm
+++ b/code/datums/diseases/advance/symptoms/shivering.dm
@@ -24,17 +24,33 @@ Bonus
transmittable = 2
level = 2
severity = 2
+ symptom_delay_min = 10
+ symptom_delay_max = 30
+ var/unsafe = FALSE //over the cold threshold
-/datum/symptom/shivering/Activate(datum/disease/advance/A)
+/datum/symptom/fever/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/carbon/M = A.affected_mob
- to_chat(M, "[pick("You feel cold.", "You start shivering.")]")
- if(M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
- Chill(M, A)
- return
+ if(A.properties["stage_speed"] >= 5) //dangerous cold
+ power = 1.5
+ unsafe = TRUE
+ if(A.properties["stage_speed"] >= 10)
+ power = 2.5
+
+/datum/symptom/shivering/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ if(!unsafe || A.stage < 4)
+ to_chat(M, "[pick("You feel cold.", "You shiver.")]")
+ else
+ to_chat(M, "[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]")
+ if(M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT || unsafe)
+ Chill(M, A)
/datum/symptom/shivering/proc/Chill(mob/living/M, datum/disease/advance/A)
- var/get_cold = (sqrt(16+A.totalStealth()*2))+(sqrt(21+A.totalResistance()*2))
- M.bodytemperature = min(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
+ var/get_cold = 6 * power
+ if(!unsafe)
+ M.bodytemperature = min(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
+ else
+ M.bodytemperature -= (get_cold * A.stage)
return 1
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/skin.dm b/code/datums/diseases/advance/symptoms/skin.dm
index bcd6f80e13..09eea77520 100644
--- a/code/datums/diseases/advance/symptoms/skin.dm
+++ b/code/datums/diseases/advance/symptoms/skin.dm
@@ -23,23 +23,23 @@ BONUS
transmittable = -2
level = 5
severity = 1
+ symptom_delay_min = 25
+ symptom_delay_max = 75
/datum/symptom/vitiligo/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.skin_tone == "albino")
- return
- switch(A.stage)
- if(5)
- H.skin_tone = "albino"
- H.update_body(0)
- else
- H.visible_message("[H] looks a bit pale...", "Your skin suddenly appears lighter...")
-
- return
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.skin_tone == "albino")
+ return
+ switch(A.stage)
+ if(5)
+ H.skin_tone = "albino"
+ H.update_body(0)
+ else
+ H.visible_message("[H] looks a bit pale...", "Your skin suddenly appears lighter...")
/*
@@ -67,20 +67,20 @@ BONUS
transmittable = -2
level = 5
severity = 1
+ symptom_delay_min = 7
+ symptom_delay_max = 14
/datum/symptom/revitiligo/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.skin_tone == "african2")
- return
- switch(A.stage)
- if(5)
- H.skin_tone = "african2"
- H.update_body(0)
- else
- H.visible_message("[H] looks a bit dark...", "Your skin suddenly appears darker...")
-
- return
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.skin_tone == "african2")
+ return
+ switch(A.stage)
+ if(5)
+ H.skin_tone = "african2"
+ H.update_body(0)
+ else
+ H.visible_message("[H] looks a bit dark...", "Your skin suddenly appears darker...")
diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm
index 9413eea5db..43caf6d34e 100644
--- a/code/datums/diseases/advance/symptoms/sneeze.dm
+++ b/code/datums/diseases/advance/symptoms/sneeze.dm
@@ -17,7 +17,6 @@ Bonus
*/
/datum/symptom/sneeze
-
name = "Sneezing"
stealth = -2
resistance = 3
@@ -25,15 +24,24 @@ Bonus
transmittable = 4
level = 1
severity = 1
+ symptom_delay_min = 5
+ symptom_delay_max = 35
-/datum/symptom/sneeze/Activate(datum/disease/advance/A)
+/datum/symptom/sneeze/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3)
+ if(A.properties["transmittable"] >= 9) //longer spread range
+ power = 2
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+
+/datum/symptom/sneeze/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3)
+ if(!suppress_warning)
M.emote("sniff")
- else
- M.emote("sneeze")
- A.spread(A.holder, 5)
- return
\ No newline at end of file
+ else
+ M.emote("sneeze")
+ A.spread(A.holder, 4 + power)
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm
index 44d7db5709..12ed912581 100644
--- a/code/datums/diseases/advance/symptoms/symptoms.dm
+++ b/code/datums/diseases/advance/symptoms/symptoms.dm
@@ -13,7 +13,18 @@
var/severity = 0
// The hash tag for our diseases, we will add it up with our other symptoms to get a unique id! ID MUST BE UNIQUE!!!
var/id = ""
- var/static/SYMPTOM_ACTIVATION_PROB = 5
+ //Base chance of sending warning messages, so it can be modified
+ var/base_message_chance = 10
+ //If the early warnings are suppressed or not
+ var/suppress_warning = FALSE
+ //Ticks between each activation
+ var/next_activation = 0
+ var/symptom_delay_min = 1
+ var/symptom_delay_max = 1
+ //Can be used to multiply virus effects
+ var/power = 1
+ //A neutered symptom has no effect, and only affects statistics.
+ var/neutered = FALSE
/datum/symptom/New()
var/list/S = SSdisease.list_symptoms
@@ -25,6 +36,7 @@
// Called when processing of the advance disease, which holds this symptom, starts.
/datum/symptom/proc/Start(datum/disease/advance/A)
+ next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10) //so it doesn't instantly activate on infection
return
// Called when the advance disease is going to be deleted or when the advance disease stops processing.
@@ -32,5 +44,17 @@
return
/datum/symptom/proc/Activate(datum/disease/advance/A)
- return
+ if(neutered)
+ return FALSE
+ if(world.time < next_activation)
+ return FALSE
+ else
+ next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10)
+ return TRUE
+/datum/symptom/proc/Copy()
+ var/datum/symptom/new_symp = new type
+ new_symp.name = name
+ new_symp.id = id
+ new_symp.neutered = neutered
+ return new_symp
diff --git a/code/datums/diseases/advance/symptoms/viral.dm b/code/datums/diseases/advance/symptoms/viral.dm
index 3f75ad5196..49bb2d674c 100644
--- a/code/datums/diseases/advance/symptoms/viral.dm
+++ b/code/datums/diseases/advance/symptoms/viral.dm
@@ -21,16 +21,6 @@ BONUS
transmittable = 0
level = 3
-/datum/symptom/viraladaptation/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1)
- to_chat(M, "You feel off, but no different from before.")
- if(5)
- to_chat(M, "You feel better, but nothing interesting happens.")
-
/*
//////////////////////////////////////
Viral evolution
@@ -54,29 +44,19 @@ BONUS
transmittable = 3
level = 3
-/datum/symptom/viraladaptation/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1)
- to_chat(M, "You feel better, but no different from before.")
- if(5)
- to_chat(M, "You feel off, but nothing interesting happens.")
-
/*
//////////////////////////////////////
-Viral aggressive metabolism (ex-Longevity)
+Viral aggressive metabolism
- No stealth.
+ Reduced stealth.
Small resistance boost.
- Reduced stage speed.
- Large transmittablity boost.
- High Level.
+ Increased stage speed.
+ Small transmittablity boost.
+ Medium Level.
Bonus
- The virus starts at stage 5 and decrease over time until it self cures.
+ The virus starts at stage 5, but after a certain time will start curing itself.
Stages still increase naturally with stage speed.
//////////////////////////////////////
@@ -85,23 +65,33 @@ Bonus
/datum/symptom/viralreverse
name = "Viral aggressive metabolism"
- stealth = 0
+ stealth = -2
resistance = 1
- stage_speed = -2
- transmittable = 3
+ stage_speed = 3
+ transmittable = 1
level = 3
+ symptom_delay_min = 1
+ symptom_delay_max = 1
+ var/time_to_cure
/datum/symptom/viralreverse/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
+ if(!..())
+ return
+ if(time_to_cure > 0)
+ time_to_cure--
+ else
var/mob/living/M = A.affected_mob
Heal(M, A)
- return
/datum/symptom/viralreverse/proc/Heal(mob/living/M, datum/disease/advance/A)
A.stage -= 1
if(A.stage < 2)
+ to_chat(M, "You suddenly feel healthy.")
A.cure()
/datum/symptom/viralreverse/Start(datum/disease/advance/A)
+ ..()
A.stage = 5
+ if(A.properties["stealth"] >= 4) //more time before it's cured
+ power = 2
+ time_to_cure = max(A.properties["resistance"], A.properties["stage_rate"]) * 10 * power
diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm
index 63f485ab4c..9148139e50 100644
--- a/code/datums/diseases/advance/symptoms/vision.dm
+++ b/code/datums/diseases/advance/symptoms/vision.dm
@@ -24,30 +24,48 @@ Bonus
transmittable = -3
level = 5
severity = 4
+ base_message_chance = 50
+ symptom_delay_min = 25
+ symptom_delay_max = 80
+ var/remove_eyes = FALSE
+
+/datum/symptom/visionloss/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["resistance"] >= 12) //goodbye eyes
+ remove_eyes = TRUE
/datum/symptom/visionloss/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
- if (!eyes)
- return
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
+ if(istype(eyes))
switch(A.stage)
if(1, 2)
- to_chat(M, "Your eyes itch.")
+ if(prob(base_message_chance) && !suppress_warning)
+ to_chat(M, "Your eyes itch.")
if(3, 4)
to_chat(M, "Your eyes burn!")
M.blur_eyes(10)
M.adjust_eye_damage(1)
else
- to_chat(M, "Your eyes burn horrificly!")
M.blur_eyes(20)
M.adjust_eye_damage(5)
if(eyes.eye_damage >= 10)
M.become_nearsighted()
- if(prob(eyes.eye_damage - 10 + 1))
+ if(prob(eyes.eye_damage - 10 + 1))
+ if(!remove_eyes)
if(M.become_blind())
to_chat(M, "You go blind!")
+ else
+ M.visible_message("[M]'s eyes fall off their sockets!", "Your eyes fall off their sockets!")
+ eyes.Remove(M)
+ eyes.forceMove(get_turf(M))
+ else
+ to_chat(M, "Your eyes burn horrifically!")
+
/*
@@ -75,11 +93,15 @@ Bonus
stage_speed = -2
transmittable = -4
level = 4
+ base_message_chance = 7
+ symptom_delay_min = 1
+ symptom_delay_max = 1
/datum/symptom/visionaid/Activate(datum/disease/advance/A)
- ..()
+ if(!..())
+ return
var/mob/living/M = A.affected_mob
- var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
if (!eyes)
return
switch(A.stage)
@@ -102,6 +124,6 @@ Bonus
else if(eyes.eye_damage > 0)
M.adjust_eye_damage(-1)
else
- if(prob(SYMPTOM_ACTIVATION_PROB * 3))
+ if(prob(base_message_chance))
to_chat(M, "[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]")
return
diff --git a/code/datums/diseases/advance/symptoms/vision.dm.rej b/code/datums/diseases/advance/symptoms/vision.dm.rej
new file mode 100644
index 0000000000..e9cb0cd6d8
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/vision.dm.rej
@@ -0,0 +1,19 @@
+diff a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm (rejected hunks)
+@@ -40,7 +40,7 @@ Bonus
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+- var/obj/item/organ/eyes = M.getorganslot("eye_sight")
++ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
+ if(istype(eyes))
+ switch(A.stage)
+ if(1, 2)
+@@ -55,7 +55,7 @@ Bonus
+ M.adjust_eye_damage(5)
+ if(eyes.eye_damage >= 10)
+ M.become_nearsighted()
+- if(prob(M.eye_damage - 10 + 1))
++ if(prob(eyes.eye_damage - 10 + 1))
+ if(!remove_eyes)
+ if(M.become_blind())
+ to_chat(M, "You go blind!")
diff --git a/code/datums/diseases/advance/symptoms/voice_change.dm b/code/datums/diseases/advance/symptoms/voice_change.dm
index 2731612322..3abeb42f03 100644
--- a/code/datums/diseases/advance/symptoms/voice_change.dm
+++ b/code/datums/diseases/advance/symptoms/voice_change.dm
@@ -3,10 +3,10 @@
Voice Change
- Very Very noticable.
- Lowers resistance considerably.
+ Noticeable.
+ Lowers resistance.
Decreases stage speed.
- Reduced transmittable.
+ Increased transmittable.
Fatal Level.
Bonus
@@ -18,31 +18,59 @@ Bonus
/datum/symptom/voice_change
name = "Voice Change"
- stealth = -2
- resistance = -3
- stage_speed = -3
- transmittable = -1
+ stealth = -1
+ resistance = -2
+ stage_speed = -2
+ transmittable = 2
level = 6
severity = 2
+ base_message_chance = 100
+ symptom_delay_min = 60
+ symptom_delay_max = 120
+ var/scramble_language = FALSE
+ var/datum/language/current_language
+ var/datum/language_holder/original_language
-/datum/symptom/voice_change/Activate(datum/disease/advance/A)
+/datum/symptom/voice_change/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
+ if(A.properties["stealth"] >= 3)
+ suppress_warning = TRUE
+ if(A.properties["stage_rate"] >= 7) //faster change of voice
+ base_message_chance = 25
+ symptom_delay_min = 25
+ symptom_delay_max = 85
+ if(A.properties["transmittable"] >= 14) //random language
+ scramble_language = TRUE
+ var/mob/living/M = A.affected_mob
+ var/datum/language_holder/mob_language = M.get_language_holder()
+ original_language = mob_language.copy()
- var/mob/living/carbon/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
+/datum/symptom/voice_change/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("Your throat hurts.", "You clear your throat.")]")
- else
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- H.SetSpecialVoice(H.dna.species.random_name(H.gender))
-
- return
+ else
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ H.SetSpecialVoice(H.dna.species.random_name(H.gender))
+ if(scramble_language)
+ H.remove_language(current_language)
+ current_language = pick(subtypesof(/datum/language) - /datum/language/common)
+ H.grant_language(current_language)
+ var/datum/language_holder/mob_language = H.get_language_holder()
+ mob_language.only_speaks_language = current_language
/datum/symptom/voice_change/End(datum/disease/advance/A)
..()
if(ishuman(A.affected_mob))
var/mob/living/carbon/human/H = A.affected_mob
H.UnsetSpecialVoice()
- return
+ if(scramble_language)
+ var/mob/living/M = A.affected_mob
+ M.copy_known_languages_from(original_language, TRUE)
+ current_language = null
+ QDEL_NULL(original_language)
diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm
index b1e8100c35..e2be924d6a 100644
--- a/code/datums/diseases/advance/symptoms/vomit.dm
+++ b/code/datums/diseases/advance/symptoms/vomit.dm
@@ -28,79 +28,31 @@ Bonus
transmittable = 1
level = 3
severity = 4
+ base_message_chance = 100
+ symptom_delay_min = 25
+ symptom_delay_max = 80
+ var/vomit_blood = FALSE
+ var/proj_vomit = 0
+
+/datum/symptom/vomit/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["resistance"] >= 7) //blood vomit
+ vomit_blood = TRUE
+ if(A.properties["transmittable"] >= 7) //projectile vomit
+ proj_vomit = 5
/datum/symptom/vomit/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB / 2))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance) && !suppress_warning)
to_chat(M, "[pick("You feel nauseous.", "You feel like you're going to throw up!")]")
- else
- Vomit(M)
+ else
+ vomit(M)
- return
-
-/datum/symptom/vomit/proc/Vomit(mob/living/carbon/M)
- M.vomit(20)
-
-/*
-//////////////////////////////////////
-
-Vomiting Blood
-
- Very Very Noticable.
- Decreases resistance.
- Decreases stage speed.
- Little transmittable.
- Intense level.
-
-Bonus
- Forces the affected mob to vomit blood!
- Meaning your disease can spread via
- people walking on the blood.
- Makes the affected mob lose health.
-
-//////////////////////////////////////
-*/
-
-/datum/symptom/vomit/blood
-
- name = "Blood Vomiting"
- stealth = -2
- resistance = -1
- stage_speed = -1
- transmittable = 1
- level = 4
- severity = 5
-
-/datum/symptom/vomit/blood/Vomit(mob/living/carbon/M)
- M.vomit(0,TRUE)
-
-
-/*
-//////////////////////////////////////
-
-Projectile Vomiting
-
- Very Very Noticable.
- Decreases resistance.
- Doesn't increase stage speed.
- Little transmittable.
- Medium Level.
-
-Bonus
- As normal vomiting, except it will spread further,
- likely causing more to walk across the vomit.
-
-//////////////////////////////////////
-*/
-
-/datum/symptom/vomit/projectile
-
- name = "Projectile Vomiting"
- stealth = -2
- level = 4
-
-/datum/symptom/vomit/projectile/Vomit(mob/living/carbon/M)
- M.vomit(6, distance = 5)
+/datum/symptom/vomit/proc/vomit(mob/living/carbon/M)
+ M.vomit(20, vomit_blood, distance = proj_vomit)
diff --git a/code/datums/diseases/advance/symptoms/vomit.dm.rej b/code/datums/diseases/advance/symptoms/vomit.dm.rej
new file mode 100644
index 0000000000..b6fd999e2f
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/vomit.dm.rej
@@ -0,0 +1,30 @@
+diff a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm (rejected hunks)
+@@ -32,7 +32,7 @@ Bonus
+ symptom_delay_min = 25
+ symptom_delay_max = 80
+ var/vomit_blood = FALSE
+- var/proj_vomit = FALSE
++ var/proj_vomit = 0
+
+ /datum/symptom/vomit/Start(datum/disease/advance/A)
+ ..()
+@@ -41,7 +41,7 @@ Bonus
+ if(A.properties["resistance"] >= 7) //blood vomit
+ vomit_blood = TRUE
+ if(A.properties["transmittable"] >= 7) //projectile vomit
+- proj_vomit = TRUE
++ proj_vomit = 5
+
+ /datum/symptom/vomit/Activate(datum/disease/advance/A)
+ if(!..())
+@@ -52,7 +52,7 @@ Bonus
+ if(prob(base_message_chance) && !suppress_warning)
+ to_chat(M, "[pick("You feel nauseous.", "You feel like you're going to throw up!")]")
+ else
+- Vomit(M)
++ vomit(M)
+
+-/datum/symptom/vomit/proc/Vomit(mob/living/carbon/M)
+- M.vomit(20, vomit_blood, distance = 5 * proj_vomit)
++/datum/symptom/vomit/proc/vomit(mob/living/carbon/M)
++ M.vomit(20, vomit_blood, distance = proj_vomit)
diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm
index 399a67675e..ec371f1167 100644
--- a/code/datums/diseases/advance/symptoms/weight.dm
+++ b/code/datums/diseases/advance/symptoms/weight.dm
@@ -24,20 +24,26 @@ Bonus
transmittable = -2
level = 4
severity = 1
+ base_message_chance = 100
+ symptom_delay_min = 15
+ symptom_delay_max = 45
-/datum/symptom/weight_gain/Activate(datum/disease/advance/A)
+/datum/symptom/weight_gain/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
- to_chat(M, "[pick("You feel blubbery.", "Your stomach hurts.")]")
- else
- M.overeatduration = min(M.overeatduration + 100, 600)
- M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL)
-
- return
+ if(A.properties["stealth"] >= 4) //warn less often
+ base_message_chance = 25
+/datum/symptom/weight_gain/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance))
+ to_chat(M, "[pick("You feel blubbery.", "Your stomach hurts.")]")
+ else
+ M.overeatduration = min(M.overeatduration + 100, 600)
+ M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL)
/*
//////////////////////////////////////
@@ -66,20 +72,27 @@ Bonus
transmittable = -2
level = 3
severity = 1
+ base_message_chance = 100
+ symptom_delay_min = 15
+ symptom_delay_max = 45
-/datum/symptom/weight_loss/Activate(datum/disease/advance/A)
+/datum/symptom/weight_loss/Start(datum/disease/advance/A)
..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(1, 2, 3, 4)
- to_chat(M, "[pick("You feel hungry.", "You crave for food.")]")
- else
- to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]")
- M.overeatduration = max(M.overeatduration - 100, 0)
- M.nutrition = max(M.nutrition - 100, 0)
+ if(A.properties["stealth"] >= 4) //warn less often
+ base_message_chance = 25
- return
+/datum/symptom/weight_loss/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance))
+ to_chat(M, "[pick("You feel hungry.", "You crave for food.")]")
+ else
+ to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]")
+ M.overeatduration = max(M.overeatduration - 100, 0)
+ M.nutrition = max(M.nutrition - 100, 0)
/*
//////////////////////////////////////
@@ -108,14 +121,14 @@ Bonus
stage_speed = -2
transmittable = -2
level = 4
+ symptom_delay_min = 5
+ symptom_delay_max = 5
/datum/symptom/weight_even/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- switch(A.stage)
- if(4, 5)
- M.overeatduration = 0
- M.nutrition = NUTRITION_LEVEL_WELL_FED + 50
-
- return
\ No newline at end of file
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ switch(A.stage)
+ if(4, 5)
+ M.overeatduration = 0
+ M.nutrition = NUTRITION_LEVEL_WELL_FED + 50
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/youth.dm b/code/datums/diseases/advance/symptoms/youth.dm
index 794b15bb91..9793313354 100644
--- a/code/datums/diseases/advance/symptoms/youth.dm
+++ b/code/datums/diseases/advance/symptoms/youth.dm
@@ -23,33 +23,34 @@ BONUS
stage_speed = 4
transmittable = -4
level = 5
+ base_message_chance = 100
+ symptom_delay_min = 25
+ symptom_delay_max = 50
/datum/symptom/youth/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB * 2))
- var/mob/living/M = A.affected_mob
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- switch(A.stage)
- if(1)
- if(H.age > 41)
- H.age = 41
- to_chat(H, "You haven't had this much energy in years!")
- if(2)
- if(H.age > 36)
- H.age = 36
- to_chat(H, "You're suddenly in a good mood.")
- if(3)
- if(H.age > 31)
- H.age = 31
- to_chat(H, "You begin to feel more lithe.")
- if(4)
- if(H.age > 26)
- H.age = 26
- to_chat(H, "You feel reinvigorated.")
- if(5)
- if(H.age > 21)
- H.age = 21
- to_chat(H, "You feel like you can take on the world!")
-
- return
\ No newline at end of file
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ switch(A.stage)
+ if(1)
+ if(H.age > 41)
+ H.age = 41
+ to_chat(H, "You haven't had this much energy in years!")
+ if(2)
+ if(H.age > 36)
+ H.age = 36
+ to_chat(H, "You're suddenly in a good mood.")
+ if(3)
+ if(H.age > 31)
+ H.age = 31
+ to_chat(H, "You begin to feel more lithe.")
+ if(4)
+ if(H.age > 26)
+ H.age = 26
+ to_chat(H, "You feel reinvigorated.")
+ if(5)
+ if(H.age > 21)
+ H.age = 21
+ to_chat(H, "You feel like you can take on the world!")
\ No newline at end of file
diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm
index 2db4d1082e..780cb0b1e5 100644
--- a/code/datums/diseases/anxiety.dm
+++ b/code/datums/diseases/anxiety.dm
@@ -7,7 +7,7 @@
cure_text = "Ethanol"
cures = list("ethanol")
agent = "Excess Lepidopticides"
- viable_mobtypes = list(/mob/living/carbon/human,/mob/living/carbon/monkey)
+ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
desc = "If left untreated subject will regurgitate butterflies."
severity = MEDIUM
diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm
index 7a12049fec..5c9c9a1522 100644
--- a/code/datums/diseases/beesease.dm
+++ b/code/datums/diseases/beesease.dm
@@ -7,7 +7,7 @@
cure_text = "Sugar"
cures = list("sugar")
agent = "Apidae Infection"
- viable_mobtypes = list(/mob/living/carbon/human,/mob/living/carbon/monkey)
+ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
desc = "If left untreated subject will regurgitate bees."
severity = DANGEROUS
diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm
index 9c88626406..524bf8b4b2 100644
--- a/code/datums/diseases/fake_gbs.dm
+++ b/code/datums/diseases/fake_gbs.dm
@@ -6,7 +6,7 @@
cure_text = "Synaptizine & Sulfur"
cures = list("synaptizine","sulfur")
agent = "Gravitokinetic Bipotential SADS-"
- viable_mobtypes = list(/mob/living/carbon/human,/mob/living/carbon/monkey)
+ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
desc = "If left untreated death will occur."
severity = BIOHAZARD
diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm
index 8ee4c59b9f..1f2596d2d3 100644
--- a/code/datums/diseases/flu.dm
+++ b/code/datums/diseases/flu.dm
@@ -6,7 +6,7 @@
cures = list("spaceacillin")
cure_chance = 10
agent = "H13N1 flu virion"
- viable_mobtypes = list(/mob/living/carbon/human,/mob/living/carbon/monkey)
+ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
permeability_mod = 0.75
desc = "If left untreated the subject will feel quite unwell."
severity = MEDIUM
diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm
index ae0398e59b..c22829b5d3 100644
--- a/code/datums/explosion.dm
+++ b/code/datums/explosion.dm
@@ -96,7 +96,9 @@ GLOBAL_LIST_EMPTY(explosions)
if(!silent)
var/frequency = get_rand_frequency()
- var/ex_sound = get_sfx("explosion")
+ var/sound/explosion_sound = sound(get_sfx("explosion"))
+ var/sound/far_explosion_sound = sound('sound/effects/explosionfar.ogg')
+
for(var/mob/M in GLOB.player_list)
// Double check for client
var/turf/M_turf = get_turf(M)
@@ -104,12 +106,12 @@ GLOBAL_LIST_EMPTY(explosions)
var/dist = get_dist(M_turf, epicenter)
// If inside the blast radius + world.view - 2
if(dist <= round(max_range + world.view - 2, 1))
- M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
+ M.playsound_local(epicenter, null, 100, 1, frequency, falloff = 5, S = explosion_sound)
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
else if(dist <= far_dist)
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
- M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
+ M.playsound_local(epicenter, null, far_volume, 1, frequency, falloff = 5, S = far_explosion_sound)
EX_PREPROCESS_CHECK_TICK
//postpone processing for a bit
diff --git a/code/datums/forced_movement.dm b/code/datums/forced_movement.dm
index 3da1b050a3..620973487a 100644
--- a/code/datums/forced_movement.dm
+++ b/code/datums/forced_movement.dm
@@ -84,7 +84,7 @@
/mob/Collide(atom/A)
. = ..()
- if(force_moving && force_moving.allow_climbing && istype(A,/obj/structure))
+ if(force_moving && force_moving.allow_climbing && istype(A, /obj/structure))
var/obj/structure/S = A
if(S.climbable)
S.do_climb(src)
diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 10b4f3e7bf..473df2ec7c 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -206,8 +206,8 @@
continue
if(extended_safety_checks)
- if(istype(F, /turf/open/floor/plating/lava)) //chasms aren't /floor, and so are pre-filtered
- var/turf/open/floor/plating/lava/L = F
+ if(istype(F, /turf/open/lava)) //chasms aren't /floor, and so are pre-filtered
+ var/turf/open/lava/L = F
if(!L.is_safe())
continue
diff --git a/code/datums/helper_datums/topic_input.dm b/code/datums/helper_datums/topic_input.dm
index e1934cc6a5..d27f259159 100644
--- a/code/datums/helper_datums/topic_input.dm
+++ b/code/datums/helper_datums/topic_input.dm
@@ -37,7 +37,7 @@
return isturf(t) ? t : null
/datum/topic_input/proc/getAtom(i)
- return getType(i,/atom)
+ return getType(i, /atom)
/datum/topic_input/proc/getArea(i)
var/t = getAndLocate(i)
diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm
index 76de0329cd..cfc4c13d91 100644
--- a/code/datums/material_container.dm
+++ b/code/datums/material_container.dm
@@ -73,7 +73,7 @@
/datum/material_container/proc/insert_item(obj/item/I, multiplier = 1)
if(!I)
return 0
- if(istype(I,/obj/item/stack))
+ if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
return insert_stack(I, S.amount)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index f23f01d068..aeb0ff4a4e 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -13,7 +13,7 @@
mind.transfer_to(new_mob)
- You must not assign key= or ckey= after transfer_to() since the transfer_to transfers the client for you.
- By setting key or ckey explicitly after transfering the mind with transfer_to you will cause bugs like DCing
+ By setting key or ckey explicitly after transferring the mind with transfer_to you will cause bugs like DCing
the player.
- IMPORTANT NOTE 2, if you want a player to become a ghost, use mob.ghostize() It does all the hard work for you.
@@ -97,7 +97,7 @@
language_holder = mob_holder.copy(src)
if(key)
- if(new_character.key != key) //if we're transfering into a body with a key associated which is not ours
+ if(new_character.key != key) //if we're transferring into a body with a key associated which is not ours
new_character.ghostize(1) //we'll need to ghostize so that key isn't mobless.
else
key = new_character.key
@@ -786,7 +786,7 @@
if(!def_value)//If it's a custom objective, it will be an empty string.
def_value = "custom"
- var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "maroon", "debrain", "protect", "destroy", "prevent", "hijack", "escape", "survive", "martyr", "steal", "download", "nuclear", "capture", "absorb", "custom")
+ var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "late-assassinate", "maroon", "debrain", "protect", "destroy", "prevent", "hijack", "escape", "survive", "martyr", "steal", "download", "nuclear", "capture", "absorb", "custom")
if (!new_obj_type)
return
@@ -821,6 +821,12 @@
//Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops.
new_objective.update_explanation_text()
+ if ("late-assassinate")
+ new_objective = new /datum/objective/assassinate/late
+ new_objective.owner = src
+ new_objective.target = null
+ new_objective.find_target() //This will begin the "find-target" loop and update their explanation text
+
if ("destroy")
var/list/possible_targets = active_ais(1)
if(possible_targets.len)
@@ -1592,9 +1598,9 @@
agent_landmarks.len = 4
scientist_landmarks.len = 4
for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list)
- if(istype(A,/obj/effect/landmark/abductor/agent))
+ if(istype(A, /obj/effect/landmark/abductor/agent))
agent_landmarks[text2num(A.team)] = A
- else if(istype(A,/obj/effect/landmark/abductor/scientist))
+ else if(istype(A, /obj/effect/landmark/abductor/scientist))
scientist_landmarks[text2num(A.team)] = A
var/obj/effect/landmark/L
diff --git a/code/datums/riding.dm b/code/datums/riding.dm
index a1365d3985..7c1b276822 100644
--- a/code/datums/riding.dm
+++ b/code/datums/riding.dm
@@ -261,7 +261,7 @@
var/turf/next = get_step(ridden, direction)
var/turf/current = get_turf(ridden)
- if(istype(next, /turf/open/floor/plating/lava) || istype(current, /turf/open/floor/plating/lava)) //We can move from land to lava, or lava to land, but not from land to land
+ if(istype(next, /turf/open/lava) || istype(current, /turf/open/lava)) //We can move from land to lava, or lava to land, but not from land to land
..()
else
to_chat(user, "Boats don't go on land!")
diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm
index 0c76b8f721..d23bf3c8a6 100644
--- a/code/datums/weather/weather_types.dm
+++ b/code/datums/weather/weather_types.dm
@@ -91,14 +91,21 @@
probability = 90
-/datum/weather/ash_storm/impact(mob/living/L)
- if(istype(L.loc, /obj/mecha))
- return
- if(ishuman(L))
+/datum/weather/ash_storm/proc/is_ash_immune(mob/living/L)
+ if(istype(L.loc, /obj/mecha)) //Mechs are immune
+ return TRUE
+ if(ishuman(L)) //Are you immune?
var/mob/living/carbon/human/H = L
var/thermal_protection = H.get_thermal_protection()
if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
- return
+ return TRUE
+ if(istype(L.loc, /mob/living) && L.loc != L) //Matryoshka check
+ return is_ash_immune(L.loc)
+ return FALSE //RIP you
+
+/datum/weather/ash_storm/impact(mob/living/L)
+ if(is_ash_immune(L))
+ return
L.adjustFireLoss(4)
/datum/weather/ash_storm/emberfall //Emberfall: An ash storm passes by, resulting in harmless embers falling like snow. 10% to happen in place of an ash storm.
@@ -215,4 +222,4 @@
/datum/weather/acid_rain/impact(mob/living/L)
var/resist = L.getarmor(null, "acid")
if(prob(max(0,100-resist)))
- L.acid_act(20,20)
\ No newline at end of file
+ L.acid_act(20,20)
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index 9c9fb8f4cb..aaa6d39bfc 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -1240,7 +1240,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
valid_territory = FALSE
/area/storage/tcom
- name = "Telecoms Storage"
+ name = "Telecomms Storage"
icon_state = "green"
valid_territory = FALSE
@@ -1416,7 +1416,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
/area/tcommsat/entrance
- name = "Telecoms Teleporter"
+ name = "Telecomms Teleporter"
icon_state = "tcomsatentrance"
/area/tcommsat/chamber
@@ -1424,12 +1424,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "tcomsatcham"
/area/ai_monitored/turret_protected/tcomsat
- name = "Telecoms Satellite"
+ name = "Telecomms Satellite"
icon_state = "tcomsatlob"
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
/area/ai_monitored/turret_protected/tcomfoyer
- name = "Telecoms Foyer"
+ name = "Telecomms Foyer"
icon_state = "tcomsatentrance"
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
@@ -1444,11 +1444,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
/area/tcommsat/computer
- name = "Telecoms Control Room"
+ name = "Telecomms Control Room"
icon_state = "tcomsatcomp"
/area/tcommsat/server
- name = "Telecoms Server Room"
+ name = "Telecomms Server Room"
icon_state = "tcomsatcham"
/area/tcommsat/lounge
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index c71ea6a10f..a0f268344e 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -432,7 +432,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
if(L.client && !L.client.ambience_playing && L.client.prefs.toggles & SOUND_SHIP_AMBIENCE)
L.client.ambience_playing = 1
- L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2)
+ L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = CHANNEL_BUZZ)
if(!(L.client && (L.client.prefs.toggles & SOUND_AMBIENCE)))
return //General ambience check is below the ship ambience so one can play without the other
@@ -441,7 +441,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
var/sound = pick(ambientsounds)
if(!L.client.played)
- L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1)
+ L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE)
L.client.played = 1
sleep(600) //ewww - this is very very bad
if(L.&& L.client)
diff --git a/code/game/area/areas/holodeck.dm b/code/game/area/areas/holodeck.dm
index 7bf213be52..51fd4e1677 100644
--- a/code/game/area/areas/holodeck.dm
+++ b/code/game/area/areas/holodeck.dm
@@ -21,28 +21,28 @@
if(!linked)
return 0
var/area/A = get_area(linked)
- ASSERT(!istype(A,/area/holodeck))
+ ASSERT(!istype(A, /area/holodeck))
return A.powered(chan)
/area/holodeck/usage(var/chan)
if(!linked)
return 0
var/area/A = get_area(linked)
- ASSERT(!istype(A,/area/holodeck))
+ ASSERT(!istype(A, /area/holodeck))
return A.usage(chan)
/area/holodeck/addStaticPower(value, powerchannel)
if(!linked)
return
var/area/A = get_area(linked)
- ASSERT(!istype(A,/area/holodeck))
+ ASSERT(!istype(A, /area/holodeck))
return A.addStaticPower(value,powerchannel)
/area/holodeck/use_power(var/amount, var/chan)
if(!linked)
return 0
var/area/A = get_area(linked)
- ASSERT(!istype(A,/area/holodeck))
+ ASSERT(!istype(A, /area/holodeck))
return A.use_power(amount,chan)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 83f1817fc1..02113e92a3 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -143,7 +143,7 @@
if(T.z != ZLEVEL_CENTCOM)//if not, don't bother
return 0
- if(istype(T.loc,/area/shuttle/syndicate) || istype(T.loc,/area/syndicate_mothership))
+ if(istype(T.loc, /area/shuttle/syndicate) || istype(T.loc, /area/syndicate_mothership))
return 1
return 0
diff --git a/code/game/atoms.dm.rej b/code/game/atoms.dm.rej
new file mode 100644
index 0000000000..eee34deceb
--- /dev/null
+++ b/code/game/atoms.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/game/atoms.dm b/code/game/atoms.dm (rejected hunks)
+@@ -126,7 +126,7 @@
+ return TRUE
+
+ //finally check for centcom itself
+- return istype(T.loc,/area/centcom)
++ return istype(T.loc, /area/centcom)
+
+ /atom/proc/onSyndieBase()
+ var/turf/T = get_turf(src)
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 2e5854509a..f94b0c9a48 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -202,17 +202,17 @@
holder = hud_list[i]
holder.icon_state = null
for(var/obj/item/weapon/implant/I in implants)
- if(istype(I,/obj/item/weapon/implant/tracking))
+ if(istype(I, /obj/item/weapon/implant/tracking))
holder = hud_list[IMPTRACK_HUD]
var/icon/IC = icon(icon, icon_state, dir)
holder.pixel_y = IC.Height() - world.icon_size
holder.icon_state = "hud_imp_tracking"
- else if(istype(I,/obj/item/weapon/implant/mindshield))
+ else if(istype(I, /obj/item/weapon/implant/mindshield))
holder = hud_list[IMPLOYAL_HUD]
var/icon/IC = icon(icon, icon_state, dir)
holder.pixel_y = IC.Height() - world.icon_size
holder.icon_state = "hud_imp_loyal"
- else if(istype(I,/obj/item/weapon/implant/chem))
+ else if(istype(I, /obj/item/weapon/implant/chem))
holder = hud_list[IMPCHEM_HUD]
var/icon/IC = icon(icon, icon_state, dir)
holder.pixel_y = IC.Height() - world.icon_size
diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
index 3ca2e8f00e..b1cea567a1 100644
--- a/code/game/gamemodes/blob/blob_finish.dm
+++ b/code/game/gamemodes/blob/blob_finish.dm
@@ -62,7 +62,7 @@
return ..()
/datum/game_mode/proc/auto_declare_completion_blob()
- if(istype(SSticker.mode,/datum/game_mode/blob) )
+ if(istype(SSticker.mode, /datum/game_mode/blob) )
var/datum/game_mode/blob/blob_mode = src
if(blob_mode.blob_overminds.len)
var/text = "The blob[(blob_mode.blob_overminds.len > 1 ? "s were" : " was")]:"
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 7b16bbdbf0..71c052c39f 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -23,7 +23,7 @@
and tearing!")
user.emote("scream")
user.regenerate_limbs(0, list("head"))
- user.regenerate_organs()
+ user.regenerate_organs()
to_chat(user, "We have revived ourselves.")
user.mind.changeling.purchasedpowers -= src
return TRUE
diff --git a/code/game/gamemodes/cit_objectives.dm b/code/game/gamemodes/cit_objectives.dm
new file mode 100644
index 0000000000..3874ea95db
--- /dev/null
+++ b/code/game/gamemodes/cit_objectives.dm
@@ -0,0 +1,85 @@
+#define MIN_LATE_TARGET_TIME 600 //lower bound of re-rolled timer, 1 min
+#define MAX_LATE_TARGET_TIME 6000 //upper bound of re-rolled timer, 10 min
+#define LATE_TARGET_HIT_CHANCE 70 //How often would the find_target succeed, otherwise it re-rolls later and tries again.
+//Hit chance is here to avoid people checking github and then hovering around new arrivals within the max minute range every round.
+
+/datum/objective/assassinate/late
+ martyr_compatible = FALSE
+
+
+/datum/objective/assassinate/late/find_target()
+ var/list/possible_targets = list()
+ for(var/mob/M in GLOB.latejoiners)
+ var/datum/mind/possible_target = M.mind
+ if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2) && is_unique_objective(possible_target))
+ possible_targets += possible_target
+ if(possible_targets.len > 0 && prob(LATE_TARGET_HIT_CHANCE))
+ target = pick(possible_targets)
+ martyr_compatible = TRUE //Might never matter, but I guess if an admin gives another random objective, this should now be compatible
+ update_explanation_text()
+
+ message_admins("[target] has been selected as the assassination target of [owner].")
+ log_game("[target] has been selected as the assassination target of [owner].")
+
+ to_chat(owner, "You hear a crackling noise in your ears, as a one-way syndicate message plays:")
+ to_chat(owner, "You target has been located. To succeed, find and eliminate [target], the [!target_role_type ? target.assigned_role : target.special_role].")
+ return target
+ else
+ update_explanation_text()
+ addtimer(CALLBACK(src, .proc/find_target),rand(MIN_LATE_TARGET_TIME, MAX_LATE_TARGET_TIME))
+ return null
+
+/datum/objective/assassinate/late/find_target_by_role(role, role_type=0, invert=0)
+ var/list/possible_targets = list()
+ for(var/mob/M in GLOB.latejoiners)
+ var/datum/mind/possible_target = M.mind
+ if((possible_target != owner) && ishuman(possible_target.current))
+ var/is_role = 0
+ if(role_type)
+ if(possible_target.special_role == role)
+ is_role++
+ else
+ if(possible_target.assigned_role == role)
+ is_role++
+
+ if(invert)
+ if(is_role)
+ continue
+ possible_targets += possible_target
+ //break
+ else if(is_role)
+ possible_targets += possible_target
+ //break
+ if(possible_targets && prob(LATE_TARGET_HIT_CHANCE))
+ target = pick(possible_targets)
+ update_explanation_text()
+
+ message_admins("[target] has been selected as the assassination target of [owner].")
+ log_game("[target] has been selected as the assassination target of [owner].")
+
+ to_chat(owner, "You hear a crackling noise in your ears, as a one-way syndicate message plays:")
+ to_chat(owner, "You target has been located. To succeed, find and eliminate [target], the [!target_role_type ? target.assigned_role : target.special_role].")
+ else
+ update_explanation_text()
+ addtimer(CALLBACK(src, .proc/find_target_by_role, role, role_type, invert),rand(MIN_LATE_TARGET_TIME, MAX_LATE_TARGET_TIME))
+
+
+
+/datum/objective/assassinate/late/check_completion()
+ if(target && target.current) //If target WAS assigned
+ if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
+ return TRUE
+ return FALSE
+ else //If no target was ever given
+ if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
+ return FALSE
+ if(!is_special_character(owner.current))
+ return FALSE
+ return TRUE
+
+/datum/objective/assassinate/late/update_explanation_text()
+ //..()
+ if(target && target.current)
+ explanation_text = "Assassinate [target.name], the [!target_role_type ? target.assigned_role : target.special_role]."
+ else
+ explanation_text = "Stay alive until your target arrives on the station, you will be notified when the target has been identified."
diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm
index dcd160c601..297021ff5a 100644
--- a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm
+++ b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm
@@ -20,7 +20,7 @@
return ..()
/obj/effect/clockwork/sigil/attack_hand(mob/user)
- if(iscarbon(user) && !user.stat && (!is_servant_of_ratvar(user) || (is_servant_of_ratvar(user) && user.a_intent == INTENT_HARM)))
+ if(iscarbon(user) && !user.stat && !is_servant_of_ratvar(user))
user.visible_message("[user] stamps out [src]!", "You stomp on [src], scattering it into thousands of particles.")
qdel(src)
return 1
@@ -175,7 +175,7 @@
/obj/effect/clockwork/sigil/transmission
name = "suspicious sigil"
desc = "A glowing orange sigil. The air around it feels staticky."
- clockwork_desc = "A sigil that will serve as a battery for clockwork structures."
+ clockwork_desc = "A sigil that serves as power generation and a battery for clockwork structures."
icon_state = "sigiltransmission"
alpha = 50
color = "#EC8A2D"
@@ -183,7 +183,12 @@
resist_string = "glows faintly"
sigil_name = "Sigil of Transmission"
affects_servants = TRUE
- var/power_charge = CLOCKCULT_POWER_UNIT //starts with CLOCKCULT_POWER_UNIT by default
+ var/power_charge = 0 //starts with no power
+ var/drain_range = 14
+
+/obj/effect/clockwork/sigil/transmission/Initialize()
+ . = ..()
+ update_glow()
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
if(severity == 3)
@@ -199,7 +204,8 @@
for(var/obj/structure/destructible/clockwork/powered/P in range(SIGIL_ACCESS_RANGE, src))
structure_number++
to_chat(user, "It is storing [GLOB.ratvar_awakens ? "INFINITY":"[power_charge]"]W of power, \
- and [structure_number] Clockwork Structure[structure_number == 1 ? "":"s"] [structure_number == 1 ? "is":"are"] in range.")
+ and [structure_number] Clockwork Structure[structure_number == 1 ? " is":"s are"] in range.")
+ to_chat(user, "While active, it will gradually drain power from nearby electronics. It is currently [isprocessing ? "active":"disabled"].")
if(iscyborg(user))
to_chat(user, "You can recharge from the [sigil_name] by crossing it.")
else if(!GLOB.ratvar_awakens)
@@ -218,6 +224,20 @@
return TRUE
return ..()
+/obj/effect/clockwork/sigil/transmission/attack_ai(mob/user)
+ if(is_servant_of_ratvar(user))
+ attack_hand(user)
+
+/obj/effect/clockwork/sigil/transmission/attack_hand(mob/user)
+ if(is_servant_of_ratvar(user))
+ visible_message("[user] [isprocessing ? "de":""]activates [src].", "You [isprocessing ? "de":""]activate the [sigil_name].")
+ if(isprocessing)
+ STOP_PROCESSING(SSobj, src)
+ else
+ START_PROCESSING(SSobj, src)
+ else
+ return ..()
+
/obj/effect/clockwork/sigil/transmission/sigil_effects(mob/living/L)
if(is_servant_of_ratvar(L))
if(iscyborg(L))
@@ -225,6 +245,20 @@
else if(power_charge)
to_chat(L, "You feel a slight, static shock.")
+/obj/effect/clockwork/sigil/transmission/process()
+ var/power_drained = 0
+
+ for(var/t in spiral_range_turfs(drain_range, src))
+ var/turf/T = t
+ for(var/M in T)
+ var/atom/movable/A = M
+ power_drained += A.power_drain(TRUE)
+
+ CHECK_TICK
+
+ modify_charge(-Floor(power_drained, MIN_CLOCKCULT_POWER))
+ new /obj/effect/temp_visual/ratvar/sigil/transmission(loc, 1 + (power_drained * 0.0035))
+
/obj/effect/clockwork/sigil/transmission/proc/charge_cyborg(mob/living/silicon/robot/cyborg)
if(!cyborg_checks(cyborg))
return
@@ -259,10 +293,6 @@
return FALSE
return TRUE
-/obj/effect/clockwork/sigil/transmission/Initialize()
- . = ..()
- update_glow()
-
/obj/effect/clockwork/sigil/transmission/proc/modify_charge(amount)
if(GLOB.ratvar_awakens)
update_glow()
diff --git a/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm b/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm
index cdde45bb4c..ef1099d3e0 100644
--- a/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm
+++ b/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm
@@ -6,7 +6,7 @@
if(cell && cell.charge)
playsound(src, "sparks", 50, 1)
flick("apc-spark", src)
- . = min(cell.charge, 250)
+ . = min(cell.charge, MIN_CLOCKCULT_POWER*3)
cell.use(.) //Better than a power sink!
if(!cell.charge && !shorted)
shorted = 1
@@ -16,7 +16,7 @@
/obj/machinery/power/smes/power_drain(clockcult_user)
if(charge)
- . = min(charge, 250)
+ . = min(charge, MIN_CLOCKCULT_POWER*3)
charge -= . * 50
if(!charge && !panel_open)
panel_open = TRUE
@@ -27,29 +27,18 @@
/obj/item/weapon/stock_parts/cell/power_drain(clockcult_user)
if(charge)
- . = min(charge, 250)
+ . = min(charge, MIN_CLOCKCULT_POWER*3)
charge = use(.)
update_icon()
-/obj/machinery/light/power_drain(clockcult_user)
- if(on)
- playsound(src, 'sound/effects/light_flicker.ogg', 50, 1)
- . = 250
- if(prob(50))
- burn_out()
-
/mob/living/silicon/robot/power_drain(clockcult_user)
if((!clockcult_user || !is_servant_of_ratvar(src)) && cell && cell.charge)
- . = min(cell.charge, 250)
+ . = min(cell.charge, MIN_CLOCKCULT_POWER*4)
cell.use(.)
- if(prob(20))
- to_chat(src, "ERROR: Power loss detected!")
spark_system.start()
/obj/mecha/power_drain(clockcult_user)
- if((!clockcult_user || !occupant || occupant && !is_servant_of_ratvar(occupant)) && cell && cell.charge)
- . = min(cell.charge, 250)
+ if((!clockcult_user || (occupant && !is_servant_of_ratvar(occupant))) && cell && cell.charge)
+ . = min(cell.charge, MIN_CLOCKCULT_POWER*4)
cell.use(.)
- if(prob(20))
- occupant_message("Power loss detected!")
spark_system.start()
diff --git a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm
index 79dd8257f4..47d095b35c 100644
--- a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm
+++ b/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm
@@ -49,7 +49,7 @@
/turf/open/floor/plating/ashplanet/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
return FALSE
-/turf/open/floor/plating/lava/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
+/turf/open/lava/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
return FALSE
/turf/open/floor/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
index 15dc5bbe52..1985ada22e 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
@@ -6,6 +6,7 @@
Clockwork slabs will only make components if held or if inside an item held by a human, and when making a component will prevent all other slabs held from making components.\n\
Hitting a slab, a Servant with a slab, or a cache will transfer this slab's components into the target, the target's slab, or the global cache, respectively."
icon_state = "dread_ipad"
+ var/inhand_overlay //If applicable, this overlay will be applied to the slab's inhand
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
var/list/stored_components = list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0)
@@ -50,9 +51,9 @@
maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more
actions_types = list()
-/obj/item/clockwork/slab/cyborg/engineer //five scriptures, plus a fabricator
+/obj/item/clockwork/slab/cyborg/engineer //four scriptures, plus a fabricator
quickbound = list(/datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/cogscarab, \
- /datum/clockwork_scripture/create_object/soul_vessel, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/interdiction_lens)
+ /datum/clockwork_scripture/create_object/soul_vessel, /datum/clockwork_scripture/create_object/sigil_of_transmission)
/obj/item/clockwork/slab/cyborg/medical //five scriptures, plus a spear
quickbound = list(/datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, \
@@ -105,6 +106,12 @@
. = ..()
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
+/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file)
+ . = list()
+ if(isinhands && item_state && inhand_overlay)
+ var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]")
+ . += M
+
/obj/item/clockwork/slab/proc/check_on_mob(mob/user)
if(user && !(src in user.held_items) && slab_ability && slab_ability.ranged_ability_user) //if we happen to check and we AREN'T in user's hands, remove whatever ability we have
slab_ability.remove_ranged_ability()
@@ -415,17 +422,16 @@
dat += "Marauder: A clockwork marauder, which is a powerful bodyguard that hides in its owner.
"
dat += "Structures (* = requires power) "
dat += "Warden: An ocular warden, which is a ranged turret that damages non-Servants that see it. "
- dat += "Daemon*: A tinkerer's daemon, which quickly creates components. "
- dat += "Lens*: An interdiction lens, which sabotages machinery in a large area to create power. "
- dat += "Obelisk*: A clockwork obelisk, which can broadcast large messages and allows limited teleportation. "
- dat += "Motor*: A mania motor, which serves as area-denial through negative effects and eventual conversion. "
dat += "Prism*: A prolonging prism, which delays the shuttle for two minutes at a huge power cost.
"
+ dat += "Motor*: A mania motor, which serves as area-denial through negative effects and eventual conversion. "
+ dat += "Daemon*: A tinkerer's daemon, which quickly creates components. "
+ dat += "Obelisk*: A clockwork obelisk, which can broadcast large messages and allows limited teleportation. "
dat += "Sigils "
dat += "Note: Sigils can be stacked on top of one another, making certain sigils very effective when paired! "
dat += "Transgression: Stuns the first non-Servant to cross it for ten seconds and blinds others nearby. Disappears on use. "
dat += "Submission: Converts the first non-Servant to stand on the sigil for seven seconds. Disappears on use. "
dat += "Accession: Identical to the Sigil of Submission, but doesn't disappear on use. It can also convert a single mindshielded target, but will disappear after doing this. "
- dat += "Transmission: Stores power for clockwork structures. Feeding it brass sheets will create power.
"
+ dat += "Transmission: Drains and stores power for clockwork structures. Feeding it brass sheets will create power.
"
dat += "-=-=-=-=-=-"
if("Components")
var/servants = 0 //Calculate the current production time for slab components
@@ -494,12 +500,11 @@
becomes necessary: power. Almost all clockwork structures require power to function in some way. There is nothing special about this power; it's mere electricity, \
and can be harnessed in several ways.
"
dat += "To begin with, if there is no other source of power nearby, structures will draw from the area's APC, assuming it has one. This is inefficient and ill-advised as \
- anything but a last resort. Instead, it is recommended that a sigil of transmission is created. This sigil serves as a sort of battery for nearby clockwork \
+ anything but a last resort. Instead, it is recommended that a Sigil of Transmission is created. This sigil serves as both battery and power generator for nearby clockwork \
structures, and those structures will happily draw power from the sigil before they resort to pathetic APCs and other sources of energy.
"
- dat += "Generating power is less easy. The most reliable and efficient way is using brass sheets; attacking a sigil of transmission with brass sheets will convert them \
- to power, at a rate of [POWER_FLOOR]W per sheet. (Brass sheets are created from replica fabricators, which are explained more in detail in the Conversion \
- section.) There are also structures that generate power instead of consuming it; for instance, the interdiction lens sabotages all non-clockwork machines in a \
- very large area and creates power from doing so. This allows Servants to simultaneously cripple an entire department as well as fueling their own machinery.
"
+ dat += "The most reliable and efficient way to generate power is by using brass sheets; attacking a sigil of transmission with brass sheets will convert them \
+ to power, at a rate of [POWER_FLOOR]W per sheet. (Brass sheets are created from replica fabricators, which are explained more in detail in the Conversion section.) \
+ Activating a sigil of transmission will also cause it to drain power from the nearby area, which, while effective, serves as an obvious tell that there is something wrong.
"
dat += "Without power, many structures will not function, making a base vulnerable to attack. For this reason, it is critical that you keep an eye on your power reserves and \
ensure that they remain comfortably high.
"
dat += "-=-=-=-=-=-"
diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm
index 2b30099ac5..f429a4b719 100644
--- a/code/game/gamemodes/clock_cult/clock_scripture.dm
+++ b/code/game/gamemodes/clock_cult/clock_scripture.dm
@@ -259,7 +259,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
//Uses a ranged slab ability, returning only when the ability no longer exists(ie, when interrupted) or finishes.
/datum/clockwork_scripture/ranged_ability
- var/slab_icon = "dread_ipad"
+ var/slab_overlay
var/ranged_type = /obj/effect/proc_holder/slab
var/ranged_message = "This is a huge goddamn bug, how'd you cast this?"
var/timeout_time = 0
@@ -271,7 +271,10 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
return ..()
/datum/clockwork_scripture/ranged_ability/scripture_effects()
- slab.icon_state = slab_icon
+ if(slab_overlay)
+ slab.add_overlay(slab_overlay)
+ slab.item_state = "clockwork_slab"
+ slab.inhand_overlay = slab_overlay
slab.slab_ability = new ranged_type(slab)
slab.slab_ability.slab = slab
slab.slab_ability.add_ranged_ability(invoker, ranged_message)
@@ -294,7 +297,9 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
successful = slab.slab_ability.successful
if(!slab.slab_ability.finished)
slab.slab_ability.remove_ranged_ability()
- slab.icon_state = "dread_ipad"
+ slab.cut_overlays()
+ slab.item_state = initial(slab.item_state)
+ slab.inhand_overlay = null
if(invoker)
invoker.update_inv_hands()
return successful //slab doesn't look like a word now.
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm
index 27bf4551eb..d4d6155461 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm
@@ -171,46 +171,24 @@
quickbind_desc = "Creates a Fragment Shell, which produces an Anima Fragment when filled with a Soul Vessel."
-//Sigil of Transmission: Creates a sigil of transmission that can store power for clockwork structures.
+//Sigil of Transmission: Creates a sigil of transmission that can drain and store power for clockwork structures.
/datum/clockwork_scripture/create_object/sigil_of_transmission
- descname = "Structure Battery"
+ descname = "Structure Power Generator & Battery"
name = "Sigil of Transmission"
- desc = "Places a sigil that stores energy to power clockwork structures."
+ desc = "Places a sigil that can drain and will store energy to power clockwork structures."
invocations = list("Divinity...", "...power our creations!")
channel_time = 70
consumed_components = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 2, HIEROPHANT_ANSIBLE = 4)
whispered = TRUE
object_path = /obj/effect/clockwork/sigil/transmission
- creator_message = "A sigil silently appears below you. It will automatically power clockwork structures near it."
+ creator_message = "A sigil silently appears below you. It will automatically power clockwork structures near it and will drain power when activated."
usage_tip = "Cyborgs can charge from this sigil by remaining over it for 5 seconds."
tier = SCRIPTURE_APPLICATION
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 5
quickbind = TRUE
- quickbind_desc = "Creates a Sigil of Transmission, which stores power for clockwork structures."
-
-
-//Interdiction Lens: Creates a powerful totem that disables radios and cameras and drains power into nearby sigils of transmission.
-/datum/clockwork_scripture/create_object/interdiction_lens
- descname = "Structure, Area Sabotage, Power Generator"
- name = "Interdiction Lens"
- desc = "Creates a clockwork totem that sabotages nearby machinery and funnels drained power into nearby Sigils of Transmission or the area's APC."
- invocations = list("May this totem...", "...shroud the false suns!")
- channel_time = 80
- consumed_components = list(BELLIGERENT_EYE = 5, REPLICANT_ALLOY = 2, HIEROPHANT_ANSIBLE = 2)
- object_path = /obj/structure/destructible/clockwork/powered/interdiction_lens
- creator_message = "You form an interdiction lens, which disrupts cameras and radios and drains power."
- observer_message = "A brass totem rises from the ground, a purple gem appearing in its center!"
- invokers_required = 2
- multiple_invokers_used = TRUE
- usage_tip = "If it fails to funnel power into a nearby Sigil of Transmission or the area's APC and fails to disable even one thing, it will disable itself for two minutes."
- tier = SCRIPTURE_APPLICATION
- one_per_tile = TRUE
- primary_component = BELLIGERENT_EYE
- sort_priority = 6
- quickbind = TRUE
- quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission."
+ quickbind_desc = "Creates a Sigil of Transmission, which can drain and will store power for clockwork structures."
//Prolonging Prism: Creates a prism that will delay the shuttle at a power cost
@@ -226,7 +204,7 @@
observer_message = "An onyx prism forms in midair and sprouts tendrils to support itself!"
invokers_required = 2
multiple_invokers_used = TRUE
- usage_tip = "The power cost to delay a shuttle increases based on CV and the number of times activated."
+ usage_tip = "The power cost to delay a shuttle increases based on the number of times activated."
tier = SCRIPTURE_APPLICATION
one_per_tile = TRUE
primary_component = VANGUARD_COGWHEEL
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
index e978309f57..85574db6b9 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
@@ -9,7 +9,7 @@
channel_time = 30
primary_component = VANGUARD_COGWHEEL
quickbind_desc = "Allows you to grant a Servant and yourself stun immunity, as the Vanguard scripture. Click your slab to disable."
- slab_icon = "vanguard"
+ slab_overlay = "vanguard"
ranged_type = /obj/effect/proc_holder/slab/vanguard
ranged_message = "You charge the clockwork slab with defensive strength.\n\
Left-click a fellow Servant or yourself to grant Vanguard!\n\
@@ -38,7 +38,7 @@
channel_time = 30
primary_component = BELLIGERENT_EYE
quickbind_desc = "Allows you to place a Judicial Marker to knock down and damage non-Servants in an area. Click your slab to disable."
- slab_icon = "judicial"
+ slab_overlay = "judicial"
ranged_type = /obj/effect/proc_holder/slab/judicial
ranged_message = "You charge the clockwork slab with judicial force.\n\
Left-click a target to place a Judicial Marker!\n\
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm
index 7fa96f9507..91ad4d586b 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm
@@ -90,7 +90,7 @@
sort_priority = 4
quickbind = TRUE
quickbind_desc = "Allows you to convert a Servant's brute, burn, and oxygen damage to half toxin damage. Click your slab to disable."
- slab_icon = "compromise"
+ slab_overlay = "compromise"
ranged_type = /obj/effect/proc_holder/slab/compromise
ranged_message = "You charge the clockwork slab with healing power.\n\
Left-click a fellow Servant or yourself to heal!\n\
@@ -111,7 +111,7 @@
sort_priority = 5
quickbind = TRUE
quickbind_desc = "Allows you to bind and start converting an adjacent target non-Servant. Click your slab to disable."
- slab_icon = "geis"
+ slab_overlay = "geis"
ranged_type = /obj/effect/proc_holder/slab/geis
ranged_message = "You charge the clockwork slab with divine energy.\n\
Left-click a target within melee range to convert!\n\
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
index 6d8402ede0..47558a5ee9 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
@@ -386,7 +386,7 @@
/datum/clockwork_scripture/ranged_ability/volt_ray
name = "Volt Ray"
- slab_icon = "volt"
+ slab_overlay = "volt"
allow_mobility = FALSE
ranged_type = /obj/effect/proc_holder/slab/volt
ranged_message = "You charge the clockwork slab with shocking might.\n\
diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm
index 7c5064127a..6762bb29b8 100644
--- a/code/game/gamemodes/clock_cult/clock_structure.dm
+++ b/code/game/gamemodes/clock_cult/clock_structure.dm
@@ -87,13 +87,6 @@
. *= min(max_integrity/max(obj_integrity, 1), 4)
. = round(., 0.01)
-/obj/structure/destructible/clockwork/can_be_unfasten_wrench(mob/user, silent)
- if(anchored && obj_integrity <= round(max_integrity * 0.25, 1))
- if(!silent)
- to_chat(user, "[src] is too damaged to unsecure!")
- return FAILED_UNFASTEN
- return ..()
-
/obj/structure/destructible/clockwork/attack_ai(mob/user)
if(is_servant_of_ratvar(user))
attack_hand(user)
@@ -108,7 +101,7 @@
/obj/structure/destructible/clockwork/attackby(obj/item/I, mob/user, params)
if(is_servant_of_ratvar(user) && istype(I, /obj/item/weapon/wrench) && unanchored_icon)
if(default_unfasten_wrench(user, I, 50) == SUCCESSFUL_UNFASTEN)
- update_anchored(user, TRUE)
+ update_anchored(user)
return 1
return ..()
@@ -125,7 +118,7 @@
if(do_damage)
playsound(src, break_sound, 10 * get_efficiency_mod(TRUE), 1)
take_damage(round(max_integrity * 0.25, 1), BRUTE)
- to_chat(user, "As you unsecure [src] from the floor, you see cracks appear in its surface!")
+ to_chat(user, "As you unsecure [src] from the floor, you see cracks appear in its surface!")
/obj/structure/destructible/clockwork/emp_act(severity)
if(anchored && unanchored_icon)
@@ -140,7 +133,7 @@
desc = "A very large construction."
layer = MASSIVE_OBJ_LAYER
density = FALSE
- resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF | FREEZE_PROOF
/obj/structure/destructible/clockwork/massive/Initialize()
. = ..()
diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
index 7e335dd938..11ee117b3a 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -9,7 +9,7 @@
icon_state = "nothing"
density = FALSE
invisibility = INVISIBILITY_MAXIMUM
- resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
+ resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE | FREEZE_PROOF
can_be_repaired = FALSE
immune_to_servant_attacks = TRUE
var/progress_in_seconds = 0 //Once this reaches GATEWAY_RATVAR_ARRIVAL, it's game over
diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm
index bd315353b9..ac0365c148 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm
@@ -32,16 +32,12 @@
return 25
/obj/structure/destructible/clockwork/ocular_warden/can_be_unfasten_wrench(mob/user, silent)
- if(anchored)
- if(obj_integrity <= max_integrity * 0.25)
- if(!silent)
- to_chat(user, "[src] is too damaged to unsecure!")
- return FAILED_UNFASTEN
- else
+ if(!anchored)
for(var/obj/structure/destructible/clockwork/ocular_warden/W in orange(OCULAR_WARDEN_EXCLUSION_RANGE, src))
- if(!silent)
- to_chat(user, "You sense another ocular warden too near this location. Activating this one this close would cause them to fight.")
- return FAILED_UNFASTEN
+ if(W.anchored)
+ if(!silent)
+ to_chat(user, "You sense another ocular warden too near this location. Activating this one this close would cause them to fight.")
+ return FAILED_UNFASTEN
return SUCCESSFUL_UNFASTEN
/obj/structure/destructible/clockwork/ocular_warden/ratvar_act()
@@ -79,7 +75,7 @@
if(GLOB.ratvar_awakens && L)
L.adjust_fire_stacks(damage_per_tick)
L.IgniteMob()
- else if(istype(target,/obj/mecha))
+ else if(istype(target, /obj/mecha))
var/obj/mecha/M = target
M.take_damage(damage_per_tick * get_efficiency_mod(), BURN, "melee", 1, get_dir(src, M))
@@ -94,7 +90,7 @@
if(isliving(target))
var/mob/living/L = target
to_chat(L, "\"I SEE YOU!\"\n[src]'s gaze [GLOB.ratvar_awakens ? "melts you alive" : "burns you"]!")
- else if(istype(target,/obj/mecha))
+ else if(istype(target, /obj/mecha))
var/obj/mecha/M = target
to_chat(M.occupant, "\"I SEE YOU!\"" )
else if(prob(0.5)) //Extremely low chance because of how fast the subsystem it uses processes
diff --git a/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm b/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm
index c7a4664f70..aae18ba175 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm
@@ -15,8 +15,8 @@
/obj/item/clockwork/alloy_shards/large = 1, \
/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism = 1)
var/static/list/component_refund = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 1, REPLICANT_ALLOY = 1)
- var/static/delay_cost = 2500
- var/static/delay_cost_increase = 750
+ var/static/delay_cost = 3000
+ var/static/delay_cost_increase = 1250
var/static/delay_remaining = 0
/obj/structure/destructible/clockwork/powered/prolonging_prism/examine(mob/user)
@@ -27,7 +27,7 @@
else
var/efficiency = get_efficiency_mod(TRUE)
to_chat(user, "It requires at least [get_delay_cost()]W of power to attempt to delay the arrival of an emergency shuttle by [2 * efficiency] minutes.")
- to_chat(user, "This cost increases by [delay_cost_increase * 0.1]W for every 10 CV and [delay_cost_increase]W for every previous activation.")
+ to_chat(user, "This cost increases by [delay_cost_increase]W for every previous activation.")
/obj/structure/destructible/clockwork/powered/prolonging_prism/forced_disable(bad_effects)
if(active)
@@ -116,7 +116,7 @@
CHECK_TICK //we may be going over a hell of a lot of turfs
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/get_delay_cost()
- return Floor((GLOB.clockwork_construction_value * delay_cost_increase * 0.01) + delay_cost, MIN_CLOCKCULT_POWER)
+ return Floor(delay_cost, MIN_CLOCKCULT_POWER)
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/seven_random_hexes(turf/T, efficiency)
var/static/list/hex_states = list("prismhex1", "prismhex2", "prismhex3", "prismhex4", "prismhex5", "prismhex6", "prismhex7")
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 04364ae1c3..d7bf5e9b9e 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -90,7 +90,7 @@
icon_state = "cultrobes"
item_state = "cultrobes"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
+ allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
flags_inv = HIDEJUMPSUIT
cold_protection = CHEST|GROIN|LEGS|ARMS
@@ -133,7 +133,7 @@
icon_state = "magusred"
item_state = "magusred"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
+ allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -152,7 +152,7 @@
item_state = "cult_armor"
desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum."
w_class = WEIGHT_CLASS_SMALL
- allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/internals/)
+ allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade, /obj/item/weapon/tank/internals/)
armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult
@@ -172,7 +172,7 @@
w_class = WEIGHT_CLASS_BULKY
armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 60)
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
+ allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
var/current_charges = 3
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie
@@ -222,7 +222,7 @@
icon_state = "cultrobes"
item_state = "cultrobes"
flags_inv = HIDEJUMPSUIT
- allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
+ allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
body_parts_covered = CHEST|GROIN|LEGS|ARMS
armor = list(melee = -50, bullet = -50, laser = -50,energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0)
slowdown = -1
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 7afcb13652..08b7c99f33 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -175,7 +175,7 @@
/turf/closed,
/turf/open/floor/engine/cult,
/turf/open/space,
- /turf/open/floor/plating/lava,
+ /turf/open/lava,
/turf/open/chasm))
if(is_type_in_typecache(T, blacklisted_pylon_turfs))
continue
diff --git a/code/game/gamemodes/devil/devil.dm b/code/game/gamemodes/devil/devil.dm
index c6f1620c90..f69b50bc79 100644
--- a/code/game/gamemodes/devil/devil.dm
+++ b/code/game/gamemodes/devil/devil.dm
@@ -26,11 +26,11 @@
src.visible_message("[src] seems to have been harmed by the purity of [attacker]'s clothes.", "Unsullied white clothing is disrupting your form.")
return whiteness[U.type] + 1
if(BANE_TOOLBOX)
- if(istype(weapon,/obj/item/weapon/storage/toolbox))
+ if(istype(weapon, /obj/item/weapon/storage/toolbox))
src.visible_message("The [weapon] seems unusually robust this time.", "The [weapon] is your unmaking!")
return 2.5 // Will take four hits with a normal toolbox to crit.
if(BANE_HARVEST)
- if(istype(weapon,/obj/item/weapon/reagent_containers/food/snacks/grown/))
+ if(istype(weapon, /obj/item/weapon/reagent_containers/food/snacks/grown/))
visible_message("The spirits of the harvest aid in the exorcism.", "The harvest spirits are harming you.")
Knockdown(40)
qdel(weapon)
diff --git a/code/game/gamemodes/devil/objectives.dm b/code/game/gamemodes/devil/objectives.dm
index 164df56da0..181d40ba48 100644
--- a/code/game/gamemodes/devil/objectives.dm
+++ b/code/game/gamemodes/devil/objectives.dm
@@ -1,5 +1,4 @@
/datum/objective/devil
- dangerrating = 5
/datum/objective/devil/soulquantity
explanation_text = "You shouldn't see this text. Error:DEVIL1"
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 324f353c8b..f36f967c1d 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -60,7 +60,7 @@
S.update_icon()
S.power_change()
for(var/area/A in world)
- if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A,/area/arrival))
+ if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival))
A.power_light = TRUE
A.power_equip = TRUE
A.power_environ = TRUE
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 349656d48b..39a71f85c5 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -266,7 +266,7 @@
if(escaped_total > 0)
SSblackbox.set_val("escaped_total",escaped_total)
send2irc("Server", "Round just ended.")
- if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult))
+ if(cult.len && !istype(SSticker.mode, /datum/game_mode/cult))
datum_cult_completion()
diff --git a/code/game/gamemodes/game_mode.dm.rej b/code/game/gamemodes/game_mode.dm.rej
new file mode 100644
index 0000000000..7c4f33972c
--- /dev/null
+++ b/code/game/gamemodes/game_mode.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm (rejected hunks)
+@@ -266,7 +266,7 @@
+ if(escaped_total > 0)
+ SSblackbox.set_val("escaped_total",escaped_total)
+ send2irc("Server", "Round just ended.")
+- if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult))
++ if(cult.len && !istype(SSticker.mode, /datum/game_mode/cult))
+ datum_cult_completion()
+
+ return 0
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index 51d5d5150b..37fbfb5336 100644
--- a/code/game/gamemodes/gang/gang.dm
+++ b/code/game/gamemodes/gang/gang.dm
@@ -3,7 +3,7 @@
GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp"))
GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white"))
-GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/obj/item/clothing/suit/jacket/leather/overcoat,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/jacket/miljacket,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/pirate,/obj/item/clothing/suit/poncho,/obj/item/clothing/suit/apron/overalls,/obj/item/clothing/suit/jacket/letterman))
+GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather, /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/jacket/miljacket, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/pirate, /obj/item/clothing/suit/poncho, /obj/item/clothing/suit/apron/overalls, /obj/item/clothing/suit/jacket/letterman))
/datum/game_mode
var/list/datum/gang/gangs = list()
diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm
index 1a145d1227..ba18ad7578 100644
--- a/code/game/gamemodes/gang/gang_datum.dm
+++ b/code/game/gamemodes/gang/gang_datum.dm
@@ -188,7 +188,7 @@
if(!gangtools.len || !message)
return
for(var/obj/item/device/gangtool/tool in gangtools)
- var/mob/living/mob = get(tool.loc,/mob/living)
+ var/mob/living/mob = get(tool.loc, /mob/living)
if(mob && mob.mind && mob.stat == CONSCIOUS)
if(mob.mind.gang_datum == src)
to_chat(mob, "[bicon(tool)] [message]")
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 167df98b50..65ea714761 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -185,6 +185,9 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
/obj/effect/meteor/proc/meteor_effect()
if(heavy)
+ var/sound/meteor_sound = sound(meteorsound)
+ var/random_frequency = get_rand_frequency()
+
for(var/mob/M in GLOB.player_list)
if((M.orbiting) && (SSaugury.watchers[M]))
continue
@@ -193,7 +196,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
continue
var/dist = get_dist(M.loc, src.loc)
shake_camera(M, dist > 20 ? 2 : 4, dist > 20 ? 1 : 3)
- M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10)
+ M.playsound_local(src.loc, null, 50, 1, random_frequency, 10, S = meteor_sound)
///////////////////////
//Meteor types
diff --git a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm
index cc6eea6c2f..94a1512bcb 100644
--- a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm
+++ b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm
@@ -1,5 +1,4 @@
/datum/objective/abductee
- dangerrating = 5
completed = 1
/datum/objective/abductee/random
diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 0e4a11f8ab..8b18c3b1bb 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction.dm
@@ -96,9 +96,9 @@
agent_landmarks.len = max_teams
scientist_landmarks.len = max_teams
for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list)
- if(istype(A,/obj/effect/landmark/abductor/agent))
+ if(istype(A, /obj/effect/landmark/abductor/agent))
agent_landmarks[text2num(A.team)] = A
- else if(istype(A,/obj/effect/landmark/abductor/scientist))
+ else if(istype(A, /obj/effect/landmark/abductor/scientist))
scientist_landmarks[text2num(A.team)] = A
var/team_name = team_names[team_number]
@@ -210,7 +210,6 @@
// OBJECTIVES
/datum/objective/experiment
- dangerrating = 10
target_amount = 6
var/team
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index d8bdca034e..3f45f69cdd 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -271,10 +271,10 @@
var/list/all_items = M.GetAllContents()
for(var/obj/I in all_items)
- if(istype(I,/obj/item/device/radio/))
+ if(istype(I, /obj/item/device/radio/))
var/obj/item/device/radio/r = I
r.listening = 0
- if(!istype(I,/obj/item/device/radio/headset))
+ if(!istype(I, /obj/item/device/radio/headset))
r.broadcasting = 0 //goddamned headset hacks
/obj/item/device/firing_pin/abductor
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
index 4ca4e47a5b..06e4a84569 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
@@ -1,6 +1,6 @@
/datum/surgery/organ_extraction
name = "experimental dissection"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin,/datum/surgery_step/incise, /datum/surgery_step/extract_organ ,/datum/surgery_step/gland_insert)
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_organ, /datum/surgery_step/gland_insert)
possible_locs = list("chest")
ignore_clothes = 1
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 13e86dd5d3..3598446bc1 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -108,7 +108,7 @@
/obj/item/organ/heart/gland/pop/activate()
to_chat(owner, "You feel unlike yourself.")
- var/species = pick(list(/datum/species/lizard,/datum/species/jelly/slime,/datum/species/pod,/datum/species/fly,/datum/species/jelly))
+ var/species = pick(list(/datum/species/lizard, /datum/species/jelly/slime, /datum/species/pod, /datum/species/fly, /datum/species/jelly))
owner.set_species(species)
/obj/item/organ/heart/gland/ventcrawling
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index 369e57697d..502b02c7f7 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -229,7 +229,7 @@
/obj/structure/flora/swarmer_act()
return FALSE
-/turf/open/floor/plating/lava/swarmer_act()
+/turf/open/lava/swarmer_act()
if(!is_safe())
new /obj/structure/lattice/catwalk/swarmer_catwalk(src)
return FALSE
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index e0751cb2e0..afbc597c29 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -6,7 +6,7 @@
#define INVISIBILITY_REVENANT 50
/mob/living/simple_animal/revenant
- name = "revenant"
+ name = "\a Revenant"
desc = "A malevolent spirit."
icon = 'icons/mob/mob.dmi'
icon_state = "revenant_idle"
@@ -419,7 +419,6 @@
//objectives
/datum/objective/revenant
- dangerrating = 10
var/targetAmount = 100
/datum/objective/revenant/New()
@@ -439,7 +438,6 @@
return TRUE
/datum/objective/revenantFluff
- dangerrating = 0
/datum/objective/revenantFluff/New()
var/list/explanationTexts = list("Assist and exacerbate existing threats at critical moments.", \
diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/game/gamemodes/miniantags/sintouched/objectives.dm
index 86572782ca..2070cdf39a 100644
--- a/code/game/gamemodes/miniantags/sintouched/objectives.dm
+++ b/code/game/gamemodes/miniantags/sintouched/objectives.dm
@@ -1,10 +1,8 @@
/datum/objective/sintouched
- dangerrating = 5
completed = 1
/* NO ERP OBJECTIVE FOR YOU.
/datum/objective/sintouched/lust
- dangerrating = 3 // it's not AS dangerous.
/datum/objective/sintouched/lust/New()
var/mob/dead/D = pick(dead_mob_list)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index cdae6718fd..63f723b7c2 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -118,7 +118,7 @@
if(foundIDs.len)
for(var/obj/item/weapon/card/id/ID in foundIDs)
ID.name = "lead agent card"
- ID.access += GLOB.access_syndicate_leader
+ ID.access += ACCESS_SYNDICATE_LEADER
else
message_admins("Warning: Nuke Ops spawned without access to leave their spawn area!")
@@ -275,7 +275,7 @@
/datum/game_mode/proc/auto_declare_completion_nuclear()
- if( syndicates.len || (SSticker && istype(SSticker.mode,/datum/game_mode/nuclear)) )
+ if( syndicates.len || (SSticker && istype(SSticker.mode, /datum/game_mode/nuclear)) )
var/text = " The syndicate operatives were:"
var/purchases = ""
var/TC_uses = 0
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index 962fd0a6fc..3adf7b0896 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -83,7 +83,7 @@
/obj/machinery/nuclearbomb/syndicate/Initialize()
. = ..()
- var/obj/machinery/nuclearbomb/existing = locate("syndienuke")
+ var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
if(existing)
qdel(src)
throw EXCEPTION("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]")
@@ -442,7 +442,7 @@
off_station = NUKE_MISS_STATION
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
off_station = NUKE_MISS_STATION
- else if(istype(A, /area/syndicate_mothership) || (istype(A,/area/shuttle/syndicate) && bomb_location.z == ZLEVEL_CENTCOM))
+ else if(istype(A, /area/syndicate_mothership) || (istype(A, /area/shuttle/syndicate) && bomb_location.z == ZLEVEL_CENTCOM))
off_station = NUKE_SYNDICATE_BASE
else
off_station = NUKE_NEAR_MISS
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index 21139bd3ce..c60446b973 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -89,7 +89,7 @@
return
switch(mode)
if(TRACK_NUKE_DISK)
- var/obj/item/weapon/disk/nuclear/N = locate()
+ var/obj/item/weapon/disk/nuclear/N = locate() in GLOB.poi_list
target = N
if(TRACK_MALF_AI)
for(var/V in GLOB.ai_list)
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 3633146e4e..576447c540 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -4,7 +4,6 @@
var/datum/mind/target = null //If they are focused on a particular person.
var/target_amount = 0 //If they are focused on a particular number. Steal objectives have their own counter.
var/completed = 0 //currently only used for custom objectives.
- var/dangerrating = 0 //How hard the objective is, essentially. Used for dishing out objectives and checking overall victory.
var/martyr_compatible = 0 //If the objective is compatible with martyr objective, i.e. if you can still do it while dead.
/datum/objective/New(var/text)
@@ -43,6 +42,7 @@
return target
/datum/objective/proc/find_target_by_role(role, role_type=0, invert=0)//Option sets either to check assigned role or special role. Default to assigned., invert inverts the check, eg: "Don't choose a Ling"
+ var/list/candidates = list() //Let's compile a list and THEN pick one randomly, not just first come first serve...
for(var/datum/mind/possible_target in get_crewmember_minds())
if((possible_target != owner) && ishuman(possible_target.current))
var/is_role = 0
@@ -56,12 +56,11 @@
if(invert)
if(is_role)
continue
- target = possible_target
- break
+ candidates += possible_target
else if(is_role)
- target = possible_target
- break
-
+ candidates += possible_target
+ if(candidates)
+ target = pick(candidates)
update_explanation_text()
/datum/objective/proc/update_explanation_text()
@@ -78,7 +77,6 @@
/datum/objective/assassinate
var/target_role_type=0
- dangerrating = 10
martyr_compatible = 1
/datum/objective/assassinate/find_target_by_role(role, role_type=0, invert=0)
@@ -89,7 +87,10 @@
/datum/objective/assassinate/check_completion()
if(target && target.current)
- if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
+ var/mob/living/carbon/human/H
+ if(ishuman(target.current))
+ H = target.current
+ if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
return 1
return 0
return 1
@@ -141,7 +142,6 @@
/datum/objective/maroon
var/target_role_type=0
- dangerrating = 5
martyr_compatible = 1
/datum/objective/maroon/find_target_by_role(role, role_type=0, invert=0)
@@ -152,7 +152,10 @@
/datum/objective/maroon/check_completion()
if(target && target.current)
- if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
+ var/mob/living/carbon/human/H
+ if(ishuman(target.current))
+ H = target.current
+ if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
return 1
if(target.current.onCentcom() || target.current.onSyndieBase())
return 0
@@ -168,7 +171,6 @@
/datum/objective/debrain//I want braaaainssss
var/target_role_type=0
- dangerrating = 20
/datum/objective/debrain/find_target_by_role(role, role_type=0, invert=0)
if(!invert)
@@ -201,7 +203,6 @@
/datum/objective/protect//The opposite of killing a dude.
var/target_role_type=0
- dangerrating = 10
martyr_compatible = 1
/datum/objective/protect/find_target_by_role(role, role_type=0, invert=0)
@@ -230,7 +231,6 @@
/datum/objective/hijack
explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody."
- dangerrating = 25
martyr_compatible = 0 //Technically you won't get both anyway.
/datum/objective/hijack/check_completion()
@@ -240,15 +240,13 @@
return 0
if(issilicon(owner.current))
return 0
- if(SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
+ if(!SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
return 0
-
return SSshuttle.emergency.is_hijacked()
/datum/objective/hijackclone
explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
- dangerrating = 25
martyr_compatible = 0
/datum/objective/hijackclone/check_completion()
@@ -281,7 +279,6 @@
/datum/objective/block
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
- dangerrating = 25
martyr_compatible = 1
/datum/objective/block/check_completion()
@@ -303,7 +300,6 @@
/datum/objective/purge
explanation_text = "Ensure no mutant humanoid species are present aboard the escape shuttle."
- dangerrating = 25
martyr_compatible = 1
/datum/objective/purge/check_completion()
@@ -321,7 +317,6 @@
/datum/objective/robot_army
explanation_text = "Have at least eight active cyborgs synced to you."
- dangerrating = 25
martyr_compatible = 0
/datum/objective/robot_army/check_completion()
@@ -341,7 +336,6 @@
/datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive and without being in custody."
- dangerrating = 5
/datum/objective/escape/check_completion()
if(issilicon(owner.current))
@@ -369,7 +363,6 @@
return 0
/datum/objective/escape/escape_with_identity
- dangerrating = 10
var/target_real_name // Has to be stored because the target's real_name can change over the course of the round
var/target_missing_id
@@ -408,7 +401,6 @@
/datum/objective/survive
explanation_text = "Stay alive until the end."
- dangerrating = 3
/datum/objective/survive/check_completion()
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
@@ -420,7 +412,6 @@
/datum/objective/martyr
explanation_text = "Die a glorious death."
- dangerrating = 1
/datum/objective/martyr/check_completion()
if(!owner.current) //Gibbed, etc.
@@ -443,7 +434,6 @@ GLOBAL_LIST_EMPTY(possible_items)
/datum/objective/steal
var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later.
var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums).
- dangerrating = 5 //Overridden by the individual item's difficulty, but defaults to 5 for custom objectives.
martyr_compatible = 0
/datum/objective/steal/get_target()
@@ -466,8 +456,7 @@ GLOBAL_LIST_EMPTY(possible_items)
targetinfo = item
steal_target = targetinfo.targetitem
- explanation_text = "Steal [targetinfo.name]."
- dangerrating = targetinfo.difficulty
+ explanation_text = "Steal [targetinfo.name]"
give_special_equipment(targetinfo.special_equipment)
return steal_target
else
@@ -525,7 +514,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return set_target(pick(GLOB.possible_items_special))
/datum/objective/steal/exchange
- dangerrating = 10
martyr_compatible = 0
/datum/objective/steal/exchange/proc/set_faction(faction,otheragent)
@@ -547,7 +535,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/steal/exchange/backstab
- dangerrating = 3
/datum/objective/steal/exchange/backstab/set_faction(faction)
if(faction == "red")
@@ -559,7 +546,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/download
- dangerrating = 10
/datum/objective/download/proc/gen_amount_goal()
target_amount = rand(10,20)
@@ -595,7 +581,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/capture
- dangerrating = 10
/datum/objective/capture/proc/gen_amount_goal()
target_amount = rand(5,10)
@@ -604,7 +589,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
- var/area/centcom/holding/A = locate()
+ var/area/centcom/holding/A = locate() in GLOB.sortedAreas
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat==2)//Dead folks are worth less.
captured_amount+=0.5
@@ -635,7 +620,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/absorb
- dangerrating = 10
/datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6)
target_amount = rand (lowbound,highbound)
@@ -663,7 +647,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/destroy
- dangerrating = 10
martyr_compatible = 1
/datum/objective/destroy/find_target()
diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm
index 703f1a9760..43067d4c22 100644
--- a/code/game/gamemodes/objective_items.dm
+++ b/code/game/gamemodes/objective_items.dm
@@ -12,72 +12,72 @@
return 1
/datum/objective_item/steal/caplaser
- name = "the captain's antique laser gun"
+ name = "the captain's antique laser gun."
targetitem = /obj/item/weapon/gun/energy/laser/captain
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/hoslaser
- name = "the head of security's personal laser gun"
+ name = "the head of security's personal laser gun."
targetitem = /obj/item/weapon/gun/energy/e_gun/hos
difficulty = 10
excludefromjob = list("Head Of Security")
/datum/objective_item/steal/handtele
- name = "a hand teleporter"
+ name = "a hand teleporter."
targetitem = /obj/item/weapon/hand_tele
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/jetpack
- name = "the Captain's jetpack"
+ name = "the Captain's jetpack."
targetitem = /obj/item/weapon/tank/jetpack/oxygen/captain
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/magboots
- name = "the chief engineer's advanced magnetic boots"
+ name = "the chief engineer's advanced magnetic boots."
targetitem = /obj/item/clothing/shoes/magboots/advance
difficulty = 5
excludefromjob = list("Chief Engineer")
/datum/objective_item/steal/capmedal
- name = "the medal of captaincy"
+ name = "the medal of captaincy."
targetitem = /obj/item/clothing/accessory/medal/gold/captain
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/hypo
- name = "the hypospray"
+ name = "the hypospray."
targetitem = /obj/item/weapon/reagent_containers/hypospray/CMO
difficulty = 5
excludefromjob = list("Chief Medical Officer")
/datum/objective_item/steal/nukedisc
- name = "the nuclear authentication disk"
+ name = "the nuclear authentication disk."
targetitem = /obj/item/weapon/disk/nuclear
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/reflector
- name = "a reflector vest"
+ name = "a reflector vest."
targetitem = /obj/item/clothing/suit/armor/laserproof
difficulty = 3
excludefromjob = list("Head of Security", "Warden")
/datum/objective_item/steal/reactive
- name = "the reactive teleport armor"
+ name = "the reactive teleport armor."
targetitem = /obj/item/clothing/suit/armor/reactive
difficulty = 5
excludefromjob = list("Research Director")
/datum/objective_item/steal/documents
- name = "any set of secret documents of any organization"
+ name = "any set of secret documents of any organization."
targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's
difficulty = 5
/datum/objective_item/steal/nuke_core
- name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core"
+ name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core!"
targetitem = /obj/item/nuke_core
difficulty = 15
@@ -96,7 +96,7 @@
//Items with special checks!
/datum/objective_item/steal/plasma
- name = "28 moles of plasma (full tank)"
+ name = "28 moles of plasma (full tank)."
targetitem = /obj/item/weapon/tank
difficulty = 3
excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician")
@@ -109,7 +109,7 @@
/datum/objective_item/steal/functionalai
- name = "a functional AI"
+ name = "a functional AI."
targetitem = /obj/item/device/aicard
difficulty = 20 //beyond the impossible
@@ -120,7 +120,7 @@
return 0
/datum/objective_item/steal/blueprints
- name = "the station blueprints"
+ name = "the station blueprints."
targetitem = /obj/item/areaeditor/blueprints
difficulty = 10
excludefromjob = list("Chief Engineer")
@@ -136,7 +136,7 @@
return 0
/datum/objective_item/steal/slime
- name = "an unused sample of slime extract"
+ name = "an unused sample of slime extract."
targetitem = /obj/item/slime_extract
difficulty = 3
excludefromjob = list("Research Director","Scientist")
@@ -148,54 +148,54 @@
//Unique Objectives
/datum/objective_item/unique/docs_red
- name = "the \"Red\" secret documents"
+ name = "the \"Red\" secret documents."
targetitem = /obj/item/documents/syndicate/red
difficulty = 10
/datum/objective_item/unique/docs_blue
- name = "the \"Blue\" secret documents"
+ name = "the \"Blue\" secret documents."
targetitem = /obj/item/documents/syndicate/blue
difficulty = 10
//Old ninja objectives.
/datum/objective_item/special/pinpointer
- name = "the captain's pinpointer"
+ name = "the captain's pinpointer."
targetitem = /obj/item/weapon/pinpointer
difficulty = 10
/datum/objective_item/special/aegun
- name = "an advanced energy gun"
+ name = "an advanced energy gun."
targetitem = /obj/item/weapon/gun/energy/e_gun/nuclear
difficulty = 10
/datum/objective_item/special/ddrill
- name = "a diamond drill"
+ name = "a diamond drill."
targetitem = /obj/item/weapon/pickaxe/drill/diamonddrill
difficulty = 10
/datum/objective_item/special/boh
- name = "a bag of holding"
+ name = "a bag of holding."
targetitem = /obj/item/weapon/storage/backpack/holding
difficulty = 10
/datum/objective_item/special/hypercell
- name = "a hyper-capacity cell"
+ name = "a hyper-capacity power cell."
targetitem = /obj/item/weapon/stock_parts/cell/hyper
difficulty = 5
/datum/objective_item/special/laserpointer
- name = "a laser pointer"
+ name = "a laser pointer."
targetitem = /obj/item/device/laser_pointer
difficulty = 5
/datum/objective_item/special/corgimeat
- name = "a piece of corgi meat"
+ name = "a piece of corgi meat."
targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi
difficulty = 5
//Stack objectives get their own subtype
/datum/objective_item/stack
- name = "5 cardboards"
+ name = "5 cardboard."
targetitem = /obj/item/stack/sheet/cardboard
difficulty = 9001
@@ -208,16 +208,16 @@
return found_amount>=target_amount
/datum/objective_item/stack/diamond
- name = "10 diamonds"
+ name = "10 diamonds."
targetitem = /obj/item/stack/sheet/mineral/diamond
difficulty = 10
/datum/objective_item/stack/gold
- name = "50 gold bars"
+ name = "50 gold bars."
targetitem = /obj/item/stack/sheet/mineral/gold
difficulty = 15
/datum/objective_item/stack/uranium
- name = "25 refined uranium bars"
+ name = "25 refined uranium bars."
targetitem = /obj/item/stack/sheet/mineral/uranium
difficulty = 10
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index a17a9d97fb..51a2c6c486 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -360,7 +360,7 @@
/datum/game_mode/proc/auto_declare_completion_revolution()
var/list/targets = list()
- if(head_revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
+ if(head_revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution))
var/num_revs = 0
var/num_survivors = 0
for(var/mob/living/carbon/survivor in GLOB.living_mob_list)
@@ -377,14 +377,14 @@
text += " "
to_chat(world, text)
- if(revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
+ if(revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution))
var/text = " The revolutionaries were:"
for(var/datum/mind/rev in revolutionaries)
text += printplayer(rev, 1)
text += " "
to_chat(world, text)
- if( head_revolutionaries.len || revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution) )
+ if( head_revolutionaries.len || revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution) )
var/text = " The heads of staff were:"
var/list/heads = get_all_heads()
for(var/datum/mind/head in heads)
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index 3895a479c7..1586cc43b1 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -27,9 +27,9 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
//items that shouldn't spawn on the floor because they would bug or act weird
var/global/list/spawn_forbidden = list(
/obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you
- /obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
+ /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
/obj/item/device/uplink, /obj/item/smallDelivery, /obj/item/projectile,
- /obj/item/borg/sight,/obj/item/borg/stun,/obj/item/weapon/robot_module)
+ /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/weapon/robot_module)
/datum/hSB/proc/update()
var/global/list/hrefs = list(
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 562efc974d..3e6cca1ac5 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -71,9 +71,9 @@
/datum/game_mode/traitor/make_antag_chance(mob/living/carbon/human/character) //Assigns traitor to latejoiners
var/traitorcap = min(round(GLOB.joined_player_list.len / (config.traitor_scaling_coeff * 2)) + 2 + num_modifier, round(GLOB.joined_player_list.len/config.traitor_scaling_coeff) + num_modifier )
- if(SSticker.mode.traitors.len >= traitorcap) //Upper cap for number of latejoin antagonists
+ if((SSticker.mode.traitors.len + pre_traitors.len) >= traitorcap) //Upper cap for number of latejoin antagonists
return
- if(SSticker.mode.traitors.len <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
+ if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
if(ROLE_TRAITOR in character.client.prefs.be_special)
if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
if(age_check(character.client))
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 747560f31b..10766a3499 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -437,7 +437,7 @@
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
W.icon_state = "centcom"
- W.access += GLOB.access_maint_tunnels
+ W.access += ACCESS_MAINT_TUNNELS
W.assignment = "Multiverse Traveller"
W.registered_name = M.real_name
W.update_label(M.real_name)
@@ -468,7 +468,7 @@
to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!")
target.Knockdown(40)
GiveHint(target)
- else if(istype(I,/obj/item/weapon/bikehorn))
+ else if(istype(I, /obj/item/weapon/bikehorn))
to_chat(target, "HONK")
target << 'sound/items/airhorn.ogg'
target.adjustEarDamage(0,3)
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 9186872f58..d98878b352 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -76,7 +76,7 @@
return 0
/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return point value or -1 for failure
- var/area/wizard_station/A = locate()
+ var/area/wizard_station/A = locate() in GLOB.sortedAreas
if(!(user in A.contents))
to_chat(user, "You can only refund spells at the wizard lair")
return -1
@@ -899,7 +899,7 @@
/obj/item/weapon/spellbook/oneuse/random/Initialize()
..()
- var/static/banned_spells = list(/obj/item/weapon/spellbook/oneuse/mimery_blockade,/obj/item/weapon/spellbook/oneuse/mimery_guns)
+ var/static/banned_spells = list(/obj/item/weapon/spellbook/oneuse/mimery_blockade, /obj/item/weapon/spellbook/oneuse/mimery_guns)
var/real_type = pick(subtypesof(/obj/item/weapon/spellbook/oneuse) - banned_spells)
new real_type(loc)
qdel(src)
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 0a6e4715ed..4f691e053f 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -11,7 +11,7 @@
var/uses = 20
var/cooldown = 0
var/cooldown_time = 100
- req_access = list(GLOB.access_ai_upload)
+ req_access = list(ACCESS_AI_UPLOAD)
/obj/machinery/ai_slipper/examine(mob/user)
..()
diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm
new file mode 100644
index 0000000000..05d6a48064
--- /dev/null
+++ b/code/game/machinery/aug_manipulator.dm
@@ -0,0 +1,135 @@
+/obj/machinery/aug_manipulator
+ name = "\improper augment manipulator"
+ desc = "A machine for custom fitting augmentations, with in-built spraypainter."
+ icon = 'icons/obj/pda.dmi'
+ icon_state = "pdapainter"
+ density = TRUE
+ anchored = TRUE
+ obj_integrity = 200
+ max_integrity = 200
+ var/obj/item/bodypart/storedpart
+ var/initial_icon_state
+ var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi')
+
+
+/obj/machinery/aug_manipulator/Initialize()
+ initial_icon_state = initial(icon_state)
+ return ..()
+
+/obj/machinery/aug_manipulator/update_icon()
+ cut_overlays()
+
+ if(stat & BROKEN)
+ icon_state = "[initial_icon_state]-broken"
+ return
+
+ if(storedpart)
+ add_overlay("[initial_icon_state]-closed")
+
+ if(powered())
+ icon_state = initial_icon_state
+ else
+ icon_state = "[initial_icon_state]-off"
+
+/obj/machinery/aug_manipulator/Destroy()
+ QDEL_NULL(storedpart)
+ return ..()
+
+/obj/machinery/aug_manipulator/on_deconstruction()
+ if(storedpart)
+ storedpart.forceMove(loc)
+ storedpart = null
+
+/obj/machinery/aug_manipulator/contents_explosion(severity, target)
+ if(storedpart)
+ storedpart.ex_act(severity, target)
+
+/obj/machinery/aug_manipulator/handle_atom_del(atom/A)
+ if(A == storedpart)
+ storedpart = null
+ update_icon()
+
+/obj/machinery/aug_manipulator/attackby(obj/item/O, mob/user, params)
+ if(default_unfasten_wrench(user, O))
+ power_change()
+ return
+
+ else if(istype(O, /obj/item/bodypart))
+ var/obj/item/bodypart/B = O
+ if(B.status != BODYPART_ROBOTIC)
+ to_chat(user, "The machine only accepts cybernetics!")
+ return
+ if(storedpart)
+ to_chat(user, "There is already something inside!")
+ return
+ else
+ O = user.get_active_held_item()
+ if(!user.transferItemToLoc(O, src))
+ return
+ storedpart = O
+ O.add_fingerprint(user)
+ update_icon()
+
+ else if(istype(O, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM)
+ var/obj/item/weapon/weldingtool/WT = O
+ if(obj_integrity < max_integrity)
+ if(WT.remove_fuel(0,user))
+ user.visible_message("[user] begins repairing [src].", \
+ "You begin repairing [src]...", \
+ "You hear welding.")
+ playsound(src, WT.usesound, 40, 1)
+ if(do_after(user,40*WT.toolspeed, TRUE, target = src))
+ if(!WT.isOn() || !(stat & BROKEN))
+ return
+ to_chat(user, "You repair [src].")
+ playsound(src, 'sound/items/welder2.ogg', 50, 1)
+ stat &= ~BROKEN
+ obj_integrity = max(obj_integrity, max_integrity)
+ update_icon()
+ else
+ to_chat(user, "[src] does not need repairs.")
+ else
+ return ..()
+
+/obj/machinery/aug_manipulator/obj_break(damage_flag)
+ if(!(flags & NODECONSTRUCT))
+ if(!(stat & BROKEN))
+ stat |= BROKEN
+ update_icon()
+
+/obj/machinery/aug_manipulator/attack_hand(mob/user)
+ if(!..())
+ add_fingerprint(user)
+
+ if(storedpart)
+ var/augstyle = input(user, "Select style.", "Augment Custom Fitting") as null|anything in style_list_icons
+ if(!augstyle)
+ return
+ if(!in_range(src, user))
+ return
+ if(!storedpart)
+ return
+ storedpart.icon = style_list_icons[augstyle]
+ eject_part(user)
+
+ else
+ to_chat(user, "\The [src] is empty.")
+
+/obj/machinery/aug_manipulator/proc/eject_part(mob/living/user)
+ if(storedpart)
+ storedpart.forceMove(get_turf(src))
+ storedpart = null
+ update_icon()
+ else
+ to_chat(user, "[src] is empty.")
+
+/obj/machinery/aug_manipulator/AltClick(mob/living/user)
+ ..()
+ if(!user.canUseTopic(src))
+ return
+ else
+ eject_part(user)
+
+/obj/machinery/aug_manipulator/power_change()
+ ..()
+ update_icon()
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 11c54d4d99..1164851206 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -152,7 +152,7 @@
busy = TRUE
var/inserted = materials.insert_item(O)
if(inserted)
- if(istype(O,/obj/item/stack))
+ if(istype(O, /obj/item/stack))
if (O.materials[MAT_METAL])
flick("autolathe_o",src)//plays metal insertion animation
if (O.materials[MAT_GLASS])
@@ -361,7 +361,7 @@
if(D.make_reagents.len)
return 0
- var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : prod_coeff)
+ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount)))
return 0
@@ -370,7 +370,7 @@
return 1
/obj/machinery/autolathe/proc/get_design_cost(datum/design/D)
- var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : prod_coeff)
+ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
var/dat
if(D.materials[MAT_METAL])
dat += "[D.materials[MAT_METAL] * coeff] metal "
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 2ba6b733bd..1f4fbaee08 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -15,7 +15,7 @@
density = TRUE
icon = 'icons/obj/cloning.dmi'
icon_state = "pod_0"
- req_access = list(GLOB.access_cloning) //For premature unlocking.
+ req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING.
verb_say = "states"
var/heal_level //The clone is released once its health reaches this level.
var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
@@ -152,7 +152,7 @@
return FALSE
if(mess || attempting)
return FALSE
- clonemind = locate(mindref)
+ clonemind = locate(mindref) in SSticker.minds
if(!istype(clonemind)) //not a mind
return FALSE
if( clonemind.current && clonemind.current.stat != DEAD ) //mind is associated with a non-dead body
@@ -304,7 +304,7 @@
if(default_deconstruction_crowbar(W))
return
- if(istype(W,/obj/item/device/multitool))
+ if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/P = W
if(istype(P.buffer, /obj/machinery/computer/cloning))
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 441e68bcf7..bc3f1c5546 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -1,7 +1,7 @@
/obj/machinery/computer/aifixer
name = "\improper AI system integrity restorer"
desc = "Used with intelliCards containing nonfunctioning AIs to restore them to working order."
- req_access = list(GLOB.access_captain, GLOB.access_robotics, GLOB.access_heads)
+ req_access = list(ACCESS_CAPTAIN, ACCESS_ROBOTICS, ACCESS_HEADS)
var/mob/living/silicon/ai/occupier = null
var/active = 0
circuit = /obj/item/weapon/circuitboard/computer/aifixer
diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm
index 811a34f0ad..ea992de697 100644
--- a/code/game/machinery/computer/apc_control.dm
+++ b/code/game/machinery/computer/apc_control.dm
@@ -3,7 +3,7 @@
desc = "Used to remotely control the flow of power to different parts of the station."
icon_screen = "solar"
icon_keyboard = "power_key"
- req_access = list(GLOB.access_engine)
+ req_access = list(ACCESS_ENGINE)
circuit = /obj/item/weapon/circuitboard/computer/apc_control
light_color = LIGHT_COLOR_YELLOW
var/list/apcs //APCs the computer has access to
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index ee9202bfff..158cce1eff 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -308,7 +308,7 @@
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/screwdriver))
+ if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/rdconsole/core)
name = "R&D Console - Robotics (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/robotics
@@ -343,13 +343,13 @@
var/emagged = FALSE
/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/device/multitool))
+ if(istype(I, /obj/item/device/multitool))
if(!emagged)
contraband = !contraband
to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].")
else
to_chat(user, "The spectrum chip is unresponsive.")
- else if(istype(I,/obj/item/weapon/card/emag))
+ else if(istype(I, /obj/item/weapon/card/emag))
if(!emagged)
contraband = TRUE
emagged = TRUE
@@ -441,7 +441,7 @@
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/screwdriver))
+ if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
name = "Library Visitor Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index 5803fc5c52..bc298c47b6 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -9,7 +9,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
desc = "You can use this to manage jobs and ID access."
icon_screen = "id"
icon_keyboard = "id_key"
- req_one_access = list(GLOB.access_heads, GLOB.access_change_ids)
+ req_one_access = list(ACCESS_HEADS, ACCESS_CHANGE_IDS)
circuit = /obj/item/weapon/circuitboard/computer/card
var/obj/item/weapon/card/id/scan = null
var/obj/item/weapon/card/id/modify = null
@@ -158,7 +158,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
dat += ""
dat += "| Job | Slots | Open job | Close job | Prioritize | "
var/ID
- if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
+ if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
ID = 1
else
ID = 0
@@ -258,7 +258,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/jobs_all = ""
var/list/alljobs = list("Unassigned")
- alljobs += (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
+ alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
for(var/job in alljobs)
jobs_all += "[replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job
@@ -303,7 +303,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
jobs += "Assignment: [target_rank] (Demote)"
var/accesses = ""
- if(istype(src,/obj/machinery/computer/card/centcom))
+ if(istype(src, /obj/machinery/computer/card/centcom))
accesses += "Central Command:"
for(var/A in get_all_centcom_access())
if(A in modify.access)
@@ -392,7 +392,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if (check_access(scan))
region_access = list()
head_subordinates = list()
- if(GLOB.access_change_ids in scan.access)
+ if(ACCESS_CHANGE_IDS in scan.access)
if(target_dept)
head_subordinates = get_all_jobs()
region_access |= target_dept
@@ -402,20 +402,20 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
playsound(src, 'sound/machines/terminal_on.ogg', 50, 0)
else
- if((GLOB.access_hop in scan.access) && ((target_dept==1) || !target_dept))
+ if((ACCESS_HOP in scan.access) && ((target_dept==1) || !target_dept))
region_access |= 1
region_access |= 6
get_subordinates("Head of Personnel")
- if((GLOB.access_hos in scan.access) && ((target_dept==2) || !target_dept))
+ if((ACCESS_HOS in scan.access) && ((target_dept==2) || !target_dept))
region_access |= 2
get_subordinates("Head of Security")
- if((GLOB.access_cmo in scan.access) && ((target_dept==3) || !target_dept))
+ if((ACCESS_CMO in scan.access) && ((target_dept==3) || !target_dept))
region_access |= 3
get_subordinates("Chief Medical Officer")
- if((GLOB.access_rd in scan.access) && ((target_dept==4) || !target_dept))
+ if((ACCESS_RD in scan.access) && ((target_dept==4) || !target_dept))
region_access |= 4
get_subordinates("Research Director")
- if((GLOB.access_ce in scan.access) && ((target_dept==5) || !target_dept))
+ if((ACCESS_CE in scan.access) && ((target_dept==5) || !target_dept))
region_access |= 5
get_subordinates("Chief Engineer")
if(region_access)
@@ -433,7 +433,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(authenticated)
var/access_type = text2num(href_list["access_target"])
var/access_allowed = text2num(href_list["allowed"])
- if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
+ if(access_type in (istype(src, /obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
modify.access -= access_type
if(access_allowed == 1)
modify.access += access_type
@@ -460,7 +460,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
to_chat(usr, "No log exists for this job.")
return
- modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() )
+ modify.access = ( istype(src, /obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() )
if (modify)
modify.assignment = t1
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
@@ -492,7 +492,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if("make_job_available")
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
- if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
+ if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -507,7 +507,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if("make_job_unavailable")
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
- if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
+ if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -523,7 +523,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if ("prioritize_job")
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
- if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
+ if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
var/priority_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(priority_target)
if(!j)
@@ -564,7 +564,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/centcom
name = "\improper Centcom identification console"
circuit = /obj/item/weapon/circuitboard/computer/card/centcom
- req_access = list(GLOB.access_cent_captain)
+ req_access = list(ACCESS_CENT_CAPTAIN)
/obj/machinery/computer/card/minor
name = "department management console"
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 84f270eb7c..a4caa68480 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -4,7 +4,7 @@
icon_screen = "dna"
icon_keyboard = "med_key"
circuit = /obj/item/weapon/circuitboard/computer/cloning
- req_access = list(GLOB.access_heads) //Only used for record deletion right now.
+ req_access = list(ACCESS_HEADS) //ONLY USED FOR RECORD DELETION RIGHT NOW.
var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning.
var/list/pods //Linked cloning pods
var/temp = "Inactive"
@@ -124,7 +124,7 @@
to_chat(user, "You insert [W].")
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
src.updateUsrDialog()
- else if(istype(W,/obj/item/device/multitool))
+ else if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/P = W
if(istype(P.buffer, /obj/machinery/clonepod))
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index ee4008b44b..66c4bfa463 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -4,7 +4,7 @@
desc = "A console used for high-priority announcements and emergencies."
icon_screen = "comm"
icon_keyboard = "tech_key"
- req_access = list(GLOB.access_heads)
+ req_access = list(ACCESS_HEADS)
circuit = /obj/item/weapon/circuitboard/computer/communications
var/authenticated = 0
var/auth_id = "Unknown" //Who is currently logged in?
@@ -101,7 +101,7 @@
var/obj/item/device/pda/pda = I
I = pda.id
if (I && istype(I))
- if(GLOB.access_captain in I.access)
+ if(ACCESS_CAPTAIN in I.access)
var/old_level = GLOB.security_level
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm
index 6108819bab..07bfb4b6dd 100644
--- a/code/game/machinery/computer/gulag_teleporter.dm
+++ b/code/game/machinery/computer/gulag_teleporter.dm
@@ -4,7 +4,7 @@
desc = "Used to send criminals to the Labor Camp"
icon_screen = "explosive"
icon_keyboard = "security_key"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
circuit = /obj/item/weapon/circuitboard/computer/gulag_teleporter_console
var/default_goal = 200
var/obj/item/weapon/card/id/prisoner/id = null
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index c30eff58cb..cd1e5b1c90 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -5,7 +5,7 @@
desc = "This can be used to check medical records."
icon_screen = "medcomp"
icon_keyboard = "med_key"
- req_one_access = list(GLOB.access_medical, GLOB.access_forensics_lockers)
+ req_one_access = list(ACCESS_MEDICAL, ACCESS_FORENSICS_LOCKERS)
circuit = /obj/item/weapon/circuitboard/computer/med_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index 42ff2b9ee7..60ac43cb41 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -130,7 +130,7 @@
name = "\improper ProComp Executive IIc"
desc = "The Syndicate operate on a tight budget. Operates external airlocks."
title = "External Airlock Controls"
- req_access = list(GLOB.access_syndicate)
+ req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user)
if(!allowed(user))
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index e4f184d2c7..ac74f47cd4 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -3,7 +3,7 @@
desc = "Used to manage tracking implants placed inside criminals."
icon_screen = "explosive"
icon_keyboard = "security_key"
- req_access = list(GLOB.access_brig)
+ req_access = list(ACCESS_BRIG)
var/id = 0
var/temp = null
var/status = 0
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index f3cc355f61..6ffb0f1e37 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -6,7 +6,7 @@
desc = "Used to remotely lockdown or detonate linked Cyborgs."
icon_screen = "robot"
icon_keyboard = "rd_key"
- req_access = list(GLOB.access_robotics)
+ req_access = list(ACCESS_ROBOTICS)
circuit = /obj/item/weapon/circuitboard/computer/robotics
var/temp = null
@@ -158,7 +158,7 @@
else if (href_list["killdrone"])
if(src.allowed(usr))
- var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"])
+ var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list
if(D.hacked)
to_chat(usr, "ERROR: [D] is not responding to external commands.")
else
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 0940caef48..517d9c8264 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -3,7 +3,7 @@
desc = "Used to view and edit personnel's security records."
icon_screen = "security"
icon_keyboard = "security_key"
- req_one_access = list(GLOB.access_security, GLOB.access_forensics_lockers)
+ req_one_access = list(ACCESS_SECURITY, ACCESS_FORENSICS_LOCKERS)
circuit = /obj/item/weapon/circuitboard/computer/secure_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
@@ -576,13 +576,13 @@ What a mess.*/
if(istype(active2, /datum/data/record))
active2.fields["name"] = t1
if("id")
- if(istype(active2,/datum/data/record) || istype(active1,/datum/data/record))
+ if(istype(active2, /datum/data/record) || istype(active1, /datum/data/record))
var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null)
if(!canUseSecurityRecordsConsole(usr, t1, a1))
return
- if(istype(active1,/datum/data/record))
+ if(istype(active1, /datum/data/record))
active1.fields["id"] = t1
- if(istype(active2,/datum/data/record))
+ if(istype(active2, /datum/data/record))
active2.fields["id"] = t1
if("fingerprint")
if(istype(active1, /datum/data/record))
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index 50bc928f6f..5100ece31f 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -8,7 +8,7 @@
anchored = FALSE
verb_say = "states"
density = TRUE
- req_access = list(GLOB.access_engine)
+ req_access = list(ACCESS_ENGINE)
var/active = FALSE
var/list/rangers = list()
var/charge = 35
@@ -456,10 +456,12 @@
if(charge<35)
charge += 1
if(world.time < stop && active)
+ var/sound/song_played = sound(selection.song_path)
+
for(var/mob/M in range(10,src))
if(!(M in rangers))
rangers[M] = TRUE
- M.playsound_local(get_turf(M), selection.song_path, 100, channel = CHANNEL_JUKEBOX)
+ M.playsound_local(get_turf(M), null, 100, channel = CHANNEL_JUKEBOX, S = song_played)
if(prob(5+(allowed(M)*4)) && M.canmove)
dance(M)
for(var/mob/L in rangers)
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 638f6f1591..41c4bc30f4 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/electronics/airlock
name = "airlock electronics"
- req_access = list(GLOB.access_maint_tunnels)
+ req_access = list(ACCESS_MAINT_TUNNELS)
var/list/accesses = list()
var/one_access = 0
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 90b80ed5a3..4e39255109 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -23,7 +23,7 @@
icon = 'icons/obj/status_display.dmi'
icon_state = "frame"
desc = "A remote control for a door."
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
anchored = TRUE
density = FALSE
var/id = null // id of linked machinery/lockers
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 72c9a64771..47e3fdc6d4 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -192,7 +192,7 @@
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
/obj/machinery/door/emp_act(severity)
- if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
+ if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
INVOKE_ASYNC(src, .proc/open)
if(prob(40/severity))
if(secondsElectrified == 0)
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 35d021e80c..7f8cbce0f4 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -309,6 +309,15 @@
reinf = 1
explosion_block = 1
+/obj/machinery/door/window/brigdoor/security/cell
+ name = "cell door"
+ desc = "For keeping in criminal scum."
+ req_access = list(ACCESS_BRIG)
+
+/obj/machinery/door/window/brigdoor/security/holding
+ name = "holding cell door"
+ req_one_access = list(ACCESS_SEC_DOORS, ACCESS_LAWYER) //love for the lawyer
+
/obj/machinery/door/window/clockwork
name = "brass windoor"
desc = "A thin door with translucent brass paneling."
@@ -423,3 +432,67 @@
dir = SOUTH
icon_state = "rightsecure"
base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/cell/northleft
+ dir = NORTH
+
+/obj/machinery/door/window/brigdoor/security/cell/eastleft
+ dir = EAST
+
+/obj/machinery/door/window/brigdoor/security/cell/westleft
+ dir = WEST
+
+/obj/machinery/door/window/brigdoor/security/cell/southleft
+ dir = SOUTH
+
+/obj/machinery/door/window/brigdoor/security/cell/northright
+ dir = NORTH
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/cell/eastright
+ dir = EAST
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/cell/westright
+ dir = WEST
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/cell/southright
+ dir = SOUTH
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/holding/northleft
+ dir = NORTH
+
+/obj/machinery/door/window/brigdoor/security/holding/eastleft
+ dir = EAST
+
+/obj/machinery/door/window/brigdoor/security/holding/westleft
+ dir = WEST
+
+/obj/machinery/door/window/brigdoor/security/holding/southleft
+ dir = SOUTH
+
+/obj/machinery/door/window/brigdoor/security/holding/northright
+ dir = NORTH
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/holding/eastright
+ dir = EAST
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/holding/westright
+ dir = WEST
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
+
+/obj/machinery/door/window/brigdoor/security/holding/southright
+ dir = SOUTH
+ icon_state = "rightsecure"
+ base_state = "rightsecure"
\ No newline at end of file
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 8c5eb87965..0acdc5353c 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -262,39 +262,6 @@
name = "\improper PARTY BUTTON"
desc = "Cuban Pete is in the house!"
-/obj/machinery/firealarm/partyalarm/attack_hand(mob/user)
- if((user.stat && !IsAdminGhost(user)) || stat & (NOPOWER|BROKEN))
- return
-
- if (buildstage != 2)
- return
-
- user.set_machine(src)
- var/area/A = src.loc
- var/d1
- var/dat
- if(ishuman(user) || user.has_unlimited_silicon_privilege)
- A = A.loc
-
- if (A.party)
- d1 = text("No Party :(", src)
- else
- d1 = text("PARTY!!!", src)
- dat = text("Party Button []", d1)
-
- else
- A = A.loc
- if (A.fire)
- d1 = text("[]", src, stars("No Party :("))
- else
- d1 = text("[]", src, stars("PARTY!!!"))
- dat = text("[] []", stars("Party Button"), d1)
-
- var/datum/browser/popup = new(user, "firealarm", "Party Alarm")
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- return
/obj/machinery/firealarm/partyalarm/reset()
if (stat & (NOPOWER|BROKEN))
@@ -317,3 +284,8 @@
for(var/area/RA in A.related)
RA.partyalert()
return
+
+/obj/machinery/firealarm/partyalarm/ui_data(mob/user)
+ . = ..()
+ var/area/A = get_area(src)
+ .["alarm"] = A.party
diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm
index af138cf3ac..d844183097 100644
--- a/code/game/machinery/gulag_item_reclaimer.dm
+++ b/code/game/machinery/gulag_item_reclaimer.dm
@@ -3,7 +3,7 @@
desc = "Used to reclaim your items after you finish your sentence at the labor camp"
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_taken"
- req_access = list(GLOB.access_security) //reqaccess to access all stored items
+ req_access = list(ACCESS_SECURITY) //REQACCESS TO ACCESS ALL STORED ITEMS
density = FALSE
anchored = TRUE
use_power = IDLE_POWER_USE
diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm
index 4f32817b74..81ffc18836 100644
--- a/code/game/machinery/gulag_teleporter.dm
+++ b/code/game/machinery/gulag_teleporter.dm
@@ -179,3 +179,4 @@ The console is located at computer/gulag_teleporter.dm
desc = "A recieving beacon for bluespace teleportations."
icon = 'icons/turf/floors.dmi'
icon_state = "light_on-w"
+ resistance_flags = INDESTRUCTIBLE
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 466cc07453..a10c4976aa 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -20,7 +20,7 @@
var/list/codes // assoc. list of transponder codes
var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
- req_access = list(GLOB.access_engine, GLOB.access_robotics)
+ req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
/obj/machinery/navbeacon/New()
..()
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 3f5944c03e..0a212c11f8 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -15,7 +15,7 @@
use_power = IDLE_POWER_USE //this turret uses and requires power
idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
power_channel = EQUIP //drains power from the EQUIPMENT channel
var/base_icon_state = "standard"
@@ -274,7 +274,7 @@
to_chat(user, "Controls are now [locked ? "locked" : "unlocked"].")
else
to_chat(user, "Access denied.")
- else if(istype(I,/obj/item/device/multitool) && !locked)
+ else if(istype(I, /obj/item/device/multitool) && !locked)
var/obj/item/device/multitool/M = I
M.buffer = src
to_chat(user, "You add [src] to multitool buffer.")
@@ -553,7 +553,7 @@
use_power = NO_POWER_USE
has_cover = 0
scan_range = 9
- req_access = list(GLOB.access_syndicate)
+ req_access = list(ACCESS_SYNDICATE)
stun_projectile = /obj/item/projectile/bullet
lethal_projectile = /obj/item/projectile/bullet
lethal_projectile_sound = 'sound/weapons/gunshot.ogg'
@@ -651,7 +651,7 @@
var/locked = TRUE
var/control_area = null //can be area name, path or nothing.
var/ailock = 0 // AI cannot use this
- req_access = list(GLOB.access_ai_upload)
+ req_access = list(ACCESS_AI_UPLOAD)
var/list/obj/machinery/porta_turret/turrets = list()
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
@@ -689,9 +689,9 @@
/obj/machinery/turretid/attackby(obj/item/I, mob/user, params)
if(stat & BROKEN) return
- if (istype(I,/obj/item/device/multitool))
+ if (istype(I, /obj/item/device/multitool))
var/obj/item/device/multitool/M = I
- if(M.buffer && istype(M.buffer,/obj/machinery/porta_turret))
+ if(M.buffer && istype(M.buffer, /obj/machinery/porta_turret))
turrets |= M.buffer
to_chat(user, "You link \the [M.buffer] with \the [src]")
return
@@ -862,7 +862,7 @@
. = ..()
/obj/machinery/porta_turret/lasertag
- req_access = list(GLOB.access_maint_tunnels, GLOB.access_theatre)
+ req_access = list(ACCESS_MAINT_TUNNELS, ACCESS_THEATRE)
check_records = 0
criminals = 0
auth_weapons = 1
diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm
index 25e4f4e49a..08909030ca 100644
--- a/code/game/machinery/porta_turret/portable_turret_construct.dm
+++ b/code/game/machinery/porta_turret/portable_turret_construct.dm
@@ -151,7 +151,7 @@
var/obj/machinery/porta_turret/turret
//fuck lasertag turrets
- if(istype(installed_gun,/obj/item/weapon/gun/energy/laser/bluetag) || istype(installed_gun,/obj/item/weapon/gun/energy/laser/redtag))
+ if(istype(installed_gun, /obj/item/weapon/gun/energy/laser/bluetag) || istype(installed_gun, /obj/item/weapon/gun/energy/laser/redtag))
turret = new/obj/machinery/porta_turret/lasertag(loc)
else
turret = new/obj/machinery/porta_turret(loc)
diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm
index 1aadf6a452..27575e94cb 100644
--- a/code/game/machinery/porta_turret/portable_turret_cover.dm
+++ b/code/game/machinery/porta_turret/portable_turret_cover.dm
@@ -64,7 +64,7 @@
updateUsrDialog()
else
to_chat(user, "Access denied.")
- else if(istype(I,/obj/item/device/multitool) && !parent_turret.locked)
+ else if(istype(I, /obj/item/device/multitool) && !parent_turret.locked)
var/obj/item/device/multitool/M = I
M.buffer = parent_turret
to_chat(user, "You add [parent_turret] to multitool buffer.")
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 460cc87a99..437fb3eb27 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -8,7 +8,7 @@
idle_power_usage = 4
active_power_usage = 250
var/obj/item/charging = null
- var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge,/obj/item/device/modular_computer))
+ var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/device/modular_computer))
var/recharge_coeff = 1
/obj/machinery/recharger/Initialize()
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 3e251e35b5..90854e5f74 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -7,7 +7,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 1000
- req_access = list(GLOB.access_robotics)
+ req_access = list(ACCESS_ROBOTICS)
var/recharge_speed
var/repairs
state_open = TRUE
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 8a2de48d8a..4ca6592b21 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -514,7 +514,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
msgVerified = "Verified by [ID.registered_name] ([ID.assignment])"
updateUsrDialog()
if(screen == 10)
- if (GLOB.access_RC_announce in ID.access)
+ if (ACCESS_RC_ANNOUNCE in ID.access)
announceAuth = 1
else
announceAuth = 0
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 42fdb417ee..a7d857844a 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -72,7 +72,7 @@
opacity = 0
anchored = FALSE
pressure_resistance = 2*ONE_ATMOSPHERE
- req_access = list(GLOB.access_engine)
+ req_access = list(ACCESS_ENGINE)
max_integrity = 100
var/active = FALSE
var/list/deployed_shields
@@ -209,7 +209,7 @@
icon_state = "Shield_Gen"
anchored = FALSE
density = TRUE
- req_access = list(GLOB.access_teleporter)
+ req_access = list(ACCESS_TELEPORTER)
flags = CONDUCT
use_power = NO_POWER_USE
max_integrity = 300
@@ -224,7 +224,7 @@
name = "xenobiology shield wall generator"
desc = "A shield generator meant for use in xenobiology."
icon_state = "Shield_Gen"
- req_access = list(GLOB.access_xenobiology)
+ req_access = list(ACCESS_XENOBIOLOGY)
/obj/machinery/shieldwallgen/Destroy()
for(var/d in GLOB.cardinals)
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index db53e10abf..3dde20ef5a 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -54,7 +54,7 @@
/obj/machinery/power/singularity_beacon/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/screwdriver))
+ if(istype(W, /obj/item/weapon/screwdriver))
if(active)
to_chat(user, "You need to deactivate the beacon first!")
return
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 5f5d6d6e3a..cebf2d0504 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -297,7 +297,7 @@
message_admins(adminlog)
log_game(adminlog)
explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame)
- if(loc && istype(loc,/obj/machinery/syndicatebomb/))
+ if(loc && istype(loc, /obj/machinery/syndicatebomb/))
qdel(loc)
qdel(src)
@@ -394,11 +394,11 @@
/obj/item/weapon/bombcore/chemical
name = "chemical payload"
- desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. It is able to hold up to four chemical containers, and must be loaded before use."
+ desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. Properties of the core may vary with grenade casing type, and must be loaded before use."
origin_tech = "combat=4;materials=3"
icon_state = "chemcore"
var/list/beakers = list()
- var/max_beakers = 1
+ var/max_beakers = 1 // Read on about grenade casing properties below
var/spread_range = 5
var/temp_boost = 50
var/time_release = 0
@@ -411,7 +411,7 @@
total_volume += RC.reagents.total_volume
if(total_volume < time_release) // If it's empty, the detonation is complete.
- if(loc && istype(loc,/obj/machinery/syndicatebomb/))
+ if(loc && istype(loc, /obj/machinery/syndicatebomb/))
qdel(loc)
qdel(src)
return
@@ -451,7 +451,7 @@
playsound(loc, 'sound/effects/bamf.ogg', 75, 1, 5)
- if(loc && istype(loc,/obj/machinery/syndicatebomb/))
+ if(loc && istype(loc, /obj/machinery/syndicatebomb/))
qdel(loc)
qdel(src)
diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm
index 31cbe7412c..6ca5adb25c 100644
--- a/code/game/machinery/telecomms/computers/logbrowser.dm
+++ b/code/game/machinery/telecomms/computers/logbrowser.dm
@@ -13,7 +13,7 @@
var/universal_translate = 0 // set to 1 if it can translate nonhuman speech
- req_access = list(GLOB.access_tcomsat)
+ req_access = list(ACCESS_TCOMSAT)
circuit = /obj/item/weapon/circuitboard/computer/comm_server
/obj/machinery/computer/telecomms/server/attack_hand(mob/user)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 824aa30326..13e5394587 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -29,7 +29,7 @@
// To be filled out at compile time
var/list/products = list() //For each, use the following pattern:
- var/list/contraband = list() //list(/type/path = amount,/type/path2 = amount2)
+ var/list/contraband = list() //list(/type/path = amount, /type/path2 = amount2)
var/list/premium = list() //No specified amount = only one in stock
var/product_slogans = "" //String of slogans separated by semicolons, optional
@@ -456,7 +456,7 @@
if(issilicon(usr))
if(iscyborg(usr))
var/mob/living/silicon/robot/R = usr
- if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) ))
+ if(!(R.module && istype(R.module, /obj/item/weapon/robot_module/butler) ))
to_chat(usr, "The vending machine refuses to interface with you, as you are not in its target demographic!")
return
else
@@ -689,19 +689,18 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
icon_deny = "boozeomat-deny"
- products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/gin = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey = 5,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 5,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum = 5,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/wine = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/hcider = 5,
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/wine = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/hcider = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/grappa = 5,
- /obj/item/weapon/reagent_containers/food/drinks/ale = 6,/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4,/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4,
- /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic = 8,
+ /obj/item/weapon/reagent_containers/food/drinks/ale = 6, /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic = 8,
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 8, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/sodawater = 15,
- /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30,/obj/item/weapon/reagent_containers/food/drinks/ice = 10,
- /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
- /obj/item/weapon/reagent_containers/food/drinks/flask = 3)
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30, /obj/item/weapon/reagent_containers/food/drinks/ice = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/weapon/reagent_containers/food/drinks/flask = 3)
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/mug/tea = 12)
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
@@ -709,7 +708,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
refill_canister = /obj/item/weapon/vending_refill/boozeomat
/obj/machinery/vending/assist
- products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
+ products = list( /obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/igniter = 3, /obj/item/device/assembly/signaler = 4,
/obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
contraband = list(/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
@@ -722,7 +721,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
icon_state = "coffee"
icon_vend = "coffee-vend"
- products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/mug/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/mug/coco = 25)
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25, /obj/item/weapon/reagent_containers/food/drinks/mug/tea = 25, /obj/item/weapon/reagent_containers/food/drinks/mug/coco = 25)
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 12)
refill_canister = /obj/item/weapon/vending_refill/coffee
@@ -732,8 +731,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
icon_state = "snack"
- products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 6,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,/obj/item/weapon/reagent_containers/food/snacks/chips =6,
- /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6,
+ products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 6, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6, /obj/item/weapon/reagent_containers/food/snacks/chips =6,
+ /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6,
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6)
refill_canister = /obj/item/weapon/vending_refill/snack
@@ -769,8 +768,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "sustenance"
products = list(/obj/item/weapon/reagent_containers/food/snacks/tofu = 24,
/obj/item/weapon/reagent_containers/food/drinks/ice = 12,
- /obj/item/weapon/reagent_containers/food/snacks/candy_corn = 6,
- /obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
+ /obj/item/weapon/reagent_containers/food/snacks/candy_corn = 6)
contraband = list(/obj/item/weapon/kitchen/knife = 6,
/obj/item/weapon/reagent_containers/food/drinks/coffee = 12,
/obj/item/weapon/tank/internals/emergency_oxygen = 6,
@@ -784,12 +782,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "Cola_Machine"
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
- products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,/obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
- contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 6)
- premium = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/air = 1)
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
+ contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 6)
+ premium = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/air = 1)
refill_canister = /obj/item/weapon/vending_refill/cola
/obj/machinery/vending/cola/random
@@ -839,10 +837,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
name = "\improper Shambler's Vendor"
desc = "~Shake me up some of that Shambler's Juice!~"
icon_state = "shamblers_juice"
- products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 10)
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 10)
product_slogans = "~Shake me up some of that Shambler's Juice!~"
product_ads = "Refreshing!;Jyrbv dv lg jfdv fw kyrk Jyrdscvi'j Alztv!;Over 1 trillion souls drank!;Thirsty? Nyp efk uizeb kyv uribevjj?;Kyv Jyrdscvi uizebj kyv ezxyk!;Drink up!;Krjkp."
@@ -854,9 +852,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_slogans = "Carts to go!"
icon_state = "cart"
icon_deny = "cart-deny"
- products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
- /obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
- /obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
+ products = list(/obj/item/weapon/cartridge/medical = 10, /obj/item/weapon/cartridge/engineering = 10, /obj/item/weapon/cartridge/security = 10,
+ /obj/item/weapon/cartridge/janitor = 10, /obj/item/weapon/cartridge/signal/toxins = 10, /obj/item/device/pda/heads = 10,
+ /obj/item/weapon/cartridge/captain = 3, /obj/item/weapon/cartridge/quartermaster = 10)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -868,12 +866,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_slogans = "Liberation Station: Your one-stop shop for all things second ammendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!"
product_ads = "Float like an astronaut, sting like a bullet!;Express your second ammendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?"
vend_reply = "Remember the name: Liberation Station!"
- products = list(/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/gold = 2,/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/camo = 2,
- /obj/item/weapon/gun/ballistic/automatic/pistol/m1911 = 2,/obj/item/weapon/gun/ballistic/automatic/proto/unrestricted = 2,
- /obj/item/weapon/gun/ballistic/shotgun/automatic/combat = 2,/obj/item/weapon/gun/ballistic/automatic/gyropistol = 1,
- /obj/item/weapon/gun/ballistic/shotgun = 2,/obj/item/weapon/gun/ballistic/automatic/ar = 2)
- premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,/obj/item/ammo_box/magazine/m50 = 4,/obj/item/ammo_box/magazine/m45 = 2,/obj/item/ammo_box/magazine/m75 = 2)
- contraband = list(/obj/item/clothing/under/patriotsuit = 1,/obj/item/weapon/bedsheet/patriot = 3)
+ products = list(/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/gold = 2, /obj/item/weapon/gun/ballistic/automatic/pistol/deagle/camo = 2,
+ /obj/item/weapon/gun/ballistic/automatic/pistol/m1911 = 2, /obj/item/weapon/gun/ballistic/automatic/proto/unrestricted = 2,
+ /obj/item/weapon/gun/ballistic/shotgun/automatic/combat = 2, /obj/item/weapon/gun/ballistic/automatic/gyropistol = 1,
+ /obj/item/weapon/gun/ballistic/shotgun = 2, /obj/item/weapon/gun/ballistic/automatic/ar = 2)
+ premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, /obj/item/ammo_box/magazine/m45 = 2, /obj/item/ammo_box/magazine/m75 = 2)
+ contraband = list(/obj/item/clothing/under/patriotsuit = 1, /obj/item/weapon/bedsheet/patriot = 3)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -908,12 +906,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_deny = "med-deny"
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
req_access_txt = "5"
- products = list(/obj/item/weapon/reagent_containers/syringe = 12,/obj/item/weapon/reagent_containers/dropper = 3,/obj/item/stack/medical/gauze = 8,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5, /obj/item/weapon/reagent_containers/pill/insulin = 10,
- /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1,
- /obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 4,/obj/item/weapon/reagent_containers/glass/bottle/morphine = 4,/obj/item/weapon/reagent_containers/glass/bottle/salglu_solution = 3,
- /obj/item/weapon/reagent_containers/glass/bottle/toxin = 3,/obj/item/weapon/reagent_containers/syringe/antiviral = 6,/obj/item/weapon/reagent_containers/pill/salbutamol = 2,/obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2)
- contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/morphine = 4,/obj/item/weapon/reagent_containers/pill/charcoal = 6)
- premium = list(/obj/item/weapon/storage/box/hug/medical = 1,/obj/item/weapon/reagent_containers/hypospray/medipen = 3, /obj/item/weapon/storage/belt/medical = 3, /obj/item/weapon/wrench/medical = 1)
+ products = list(/obj/item/weapon/reagent_containers/syringe = 12, /obj/item/weapon/reagent_containers/dropper = 3, /obj/item/stack/medical/gauze = 8, /obj/item/weapon/reagent_containers/pill/patch/styptic = 5, /obj/item/weapon/reagent_containers/pill/insulin = 10,
+ /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1,
+ /obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/weapon/reagent_containers/glass/bottle/morphine = 4, /obj/item/weapon/reagent_containers/glass/bottle/salglu_solution = 3,
+ /obj/item/weapon/reagent_containers/glass/bottle/toxin = 3, /obj/item/weapon/reagent_containers/syringe/antiviral = 6, /obj/item/weapon/reagent_containers/pill/salbutamol = 2, /obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2)
+ contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3, /obj/item/weapon/reagent_containers/pill/morphine = 4, /obj/item/weapon/reagent_containers/pill/charcoal = 6)
+ premium = list(/obj/item/weapon/storage/box/hug/medical = 1, /obj/item/weapon/reagent_containers/hypospray/medipen = 3, /obj/item/weapon/storage/belt/medical = 3, /obj/item/weapon/wrench/medical = 1)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/weapon/vending_refill/medical
@@ -922,9 +920,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/plasmaresearch
name = "\improper Toximate 3000"
desc = "All the fine parts you need in one vending machine!"
- products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
- /obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6,
- /obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6)
+ products = list(/obj/item/clothing/under/rank/scientist = 6, /obj/item/clothing/suit/bio_suit = 6, /obj/item/clothing/head/bio_hood = 6,
+ /obj/item/device/transfer_valve = 6, /obj/item/device/assembly/timer = 6, /obj/item/device/assembly/signaler = 6,
+ /obj/item/device/assembly/prox_sensor = 6, /obj/item/device/assembly/igniter = 6)
contraband = list(/obj/item/device/assembly/health = 3)
/obj/machinery/vending/wallmed
@@ -933,10 +931,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "wallmed"
icon_deny = "wallmed-deny"
density = FALSE
- products = list(/obj/item/weapon/reagent_containers/syringe = 3,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5,
- /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/pill/charcoal = 2,
+ products = list(/obj/item/weapon/reagent_containers/syringe = 3, /obj/item/weapon/reagent_containers/pill/patch/styptic = 5,
+ /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/weapon/reagent_containers/pill/charcoal = 2,
/obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1)
- contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2,/obj/item/weapon/reagent_containers/pill/morphine = 2)
+ contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2, /obj/item/weapon/reagent_containers/pill/morphine = 2)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/weapon/vending_refill/medical
@@ -949,9 +947,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "sec"
icon_deny = "sec-deny"
req_access_txt = "1"
- products = list(/obj/item/weapon/restraints/handcuffs = 8,/obj/item/weapon/restraints/handcuffs/cable/zipties = 10,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/assembly/flash/handheld = 5,
- /obj/item/weapon/reagent_containers/food/snacks/donut = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4,/obj/item/weapon/restraints/legcuffs/bola/energy = 7)
- contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2)
+ products = list(/obj/item/weapon/restraints/handcuffs = 8, /obj/item/weapon/restraints/handcuffs/cable/zipties = 10, /obj/item/weapon/grenade/flashbang = 4, /obj/item/device/assembly/flash/handheld = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/donut = 12, /obj/item/weapon/storage/box/evidence = 6, /obj/item/device/flashlight/seclite = 4, /obj/item/weapon/restraints/legcuffs/bola/energy = 7)
+ contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/weapon/storage/fancy/donut_box = 2)
premium = list(/obj/item/weapon/coin/antagtoken = 1)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -972,9 +970,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
icon_state = "nutri"
icon_deny = "nutri-deny"
- products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 30,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 20,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 10,/obj/item/weapon/reagent_containers/spray/pestspray = 20,
- /obj/item/weapon/reagent_containers/syringe = 5,/obj/item/weapon/storage/bag/plants = 5,/obj/item/weapon/cultivator = 3,/obj/item/weapon/shovel/spade = 3,/obj/item/device/plant_analyzer = 4)
- contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5)
+ products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 30, /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 20, /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 10, /obj/item/weapon/reagent_containers/spray/pestspray = 20,
+ /obj/item/weapon/reagent_containers/syringe = 5, /obj/item/weapon/storage/bag/plants = 5, /obj/item/weapon/cultivator = 3, /obj/item/weapon/shovel/spade = 3, /obj/item/device/plant_analyzer = 4)
+ contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10, /obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -984,16 +982,16 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
icon_state = "seeds"
- products = list(/obj/item/seeds/ambrosia = 3,/obj/item/seeds/apple = 3,/obj/item/seeds/banana = 3,/obj/item/seeds/berry = 3,
- /obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3,
- /obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3,/obj/item/seeds/corn = 3,
- /obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3,
- /obj/item/seeds/lime = 3,/obj/item/seeds/onion = 3,/obj/item/seeds/orange = 3,/obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3,
- /obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3,
- /obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3,
- /obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3)
- contraband = list(/obj/item/seeds/amanita = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/liberty = 2,/obj/item/seeds/nettle = 2,
- /obj/item/seeds/plump = 2,/obj/item/seeds/reishi = 2,/obj/item/seeds/cannabis = 3,/obj/item/seeds/starthistle = 2,
+ products = list(/obj/item/seeds/ambrosia = 3, /obj/item/seeds/apple = 3, /obj/item/seeds/banana = 3, /obj/item/seeds/berry = 3,
+ /obj/item/seeds/cabbage = 3, /obj/item/seeds/carrot = 3, /obj/item/seeds/cherry = 3, /obj/item/seeds/chanter = 3,
+ /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3,
+ /obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3,
+ /obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/potato = 3, /obj/item/seeds/poppy = 3,
+ /obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, /obj/item/seeds/sunflower = 3,
+ /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3,
+ /obj/item/seeds/tower = 3, /obj/item/seeds/watermelon = 3, /obj/item/seeds/wheat = 3, /obj/item/seeds/whitebeet = 3)
+ contraband = list(/obj/item/seeds/amanita = 2, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/liberty = 2, /obj/item/seeds/nettle = 2,
+ /obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2,
/obj/item/seeds/random = 2)
premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
@@ -1006,7 +1004,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!"
vend_reply = "Have an enchanted evening!"
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
- products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/head/wizard/yellow = 1,/obj/item/clothing/suit/wizrobe/yellow = 1,/obj/item/clothing/shoes/sandal/magic = 1,/obj/item/weapon/staff = 2)
+ products = list(/obj/item/clothing/head/wizard = 1, /obj/item/clothing/suit/wizrobe = 1, /obj/item/clothing/head/wizard/red = 1, /obj/item/clothing/suit/wizrobe/red = 1, /obj/item/clothing/head/wizard/yellow = 1, /obj/item/clothing/suit/wizrobe/yellow = 1, /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/weapon/staff = 2)
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -1019,30 +1017,30 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
req_access_txt = "46" //Theatre access needed, unless hacked.
product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!"
vend_reply = "Thank you for using AutoDrobe!"
- products = list(/obj/item/clothing/suit/chickensuit = 1,/obj/item/clothing/head/chicken = 1,/obj/item/clothing/under/gladiator = 1,
- /obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1,
- /obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/shoes/jackboots = 1,
- /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/under/schoolgirl/red = 1,/obj/item/clothing/under/schoolgirl/green = 1,/obj/item/clothing/under/schoolgirl/orange = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/skirt/black = 1,/obj/item/clothing/head/beret = 1,
- /obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/accessory/waistcoat = 1,
- /obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1,
- /obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1,
- /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1,
+ products = list(/obj/item/clothing/suit/chickensuit = 1, /obj/item/clothing/head/chicken = 1, /obj/item/clothing/under/gladiator = 1,
+ /obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/gimmick/rank/captain/suit = 1, /obj/item/clothing/head/flatcap = 1,
+ /obj/item/clothing/suit/toggle/labcoat/mad = 1, /obj/item/clothing/shoes/jackboots = 1,
+ /obj/item/clothing/under/schoolgirl = 1, /obj/item/clothing/under/schoolgirl/red = 1, /obj/item/clothing/under/schoolgirl/green = 1, /obj/item/clothing/under/schoolgirl/orange = 1, /obj/item/clothing/head/kitty = 1, /obj/item/clothing/under/skirt/black = 1, /obj/item/clothing/head/beret = 1,
+ /obj/item/clothing/accessory/waistcoat = 1, /obj/item/clothing/under/suit_jacket = 1, /obj/item/clothing/head/that =1, /obj/item/clothing/under/kilt = 1, /obj/item/clothing/head/beret = 1, /obj/item/clothing/accessory/waistcoat = 1,
+ /obj/item/clothing/glasses/monocle =1, /obj/item/clothing/head/bowler = 1, /obj/item/weapon/cane = 1, /obj/item/clothing/under/sl_suit = 1,
+ /obj/item/clothing/mask/fakemoustache = 1, /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, /obj/item/clothing/head/plaguedoctorhat = 1, /obj/item/clothing/mask/gas/plaguedoctor = 1,
+ /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1, /obj/item/clothing/mask/gas/owl_mask = 1,
/obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1,
- /obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1,/obj/item/clothing/suit/jacket/miljacket = 1,
- /obj/item/clothing/under/pirate = 1,/obj/item/clothing/suit/pirate = 1,/obj/item/clothing/head/pirate = 1,/obj/item/clothing/head/bandana = 1,
- /obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1,
- /obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1,
- /obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/staff/broom = 1,
- /obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1,
- /obj/item/clothing/under/rank/clown/sexy = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/mask/rat/bat = 1,/obj/item/clothing/mask/rat/bee = 1,/obj/item/clothing/mask/rat/bear = 1,/obj/item/clothing/mask/rat/raven = 1,/obj/item/clothing/mask/rat/jackal = 1,/obj/item/clothing/mask/rat/fox = 1,/obj/item/clothing/mask/rat/tribal = 1,/obj/item/clothing/mask/rat = 1,/obj/item/clothing/suit/apron/overalls = 1,
+ /obj/item/clothing/suit/apron = 1, /obj/item/clothing/under/waiter = 1, /obj/item/clothing/suit/jacket/miljacket = 1,
+ /obj/item/clothing/under/pirate = 1, /obj/item/clothing/suit/pirate = 1, /obj/item/clothing/head/pirate = 1, /obj/item/clothing/head/bandana = 1,
+ /obj/item/clothing/head/bandana = 1, /obj/item/clothing/under/soviet = 1, /obj/item/clothing/head/ushanka = 1, /obj/item/clothing/suit/imperium_monk = 1,
+ /obj/item/clothing/mask/gas/cyborg = 1, /obj/item/clothing/suit/holidaypriest = 1, /obj/item/clothing/head/wizard/marisa/fake = 1,
+ /obj/item/clothing/suit/wizrobe/marisa/fake = 1, /obj/item/clothing/under/sundress = 1, /obj/item/clothing/head/witchwig = 1, /obj/item/weapon/staff/broom = 1,
+ /obj/item/clothing/suit/wizrobe/fake = 1, /obj/item/clothing/head/wizard/fake = 1, /obj/item/weapon/staff = 3, /obj/item/clothing/mask/gas/sexyclown = 1,
+ /obj/item/clothing/under/rank/clown/sexy = 1, /obj/item/clothing/mask/gas/sexymime = 1, /obj/item/clothing/under/sexymime = 1, /obj/item/clothing/mask/rat/bat = 1, /obj/item/clothing/mask/rat/bee = 1, /obj/item/clothing/mask/rat/bear = 1, /obj/item/clothing/mask/rat/raven = 1, /obj/item/clothing/mask/rat/jackal = 1, /obj/item/clothing/mask/rat/fox = 1, /obj/item/clothing/mask/rat/tribal = 1, /obj/item/clothing/mask/rat = 1, /obj/item/clothing/suit/apron/overalls = 1,
/obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/head/sombrero/green = 1, /obj/item/clothing/suit/poncho = 1,
/obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1,
- /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1,/obj/item/clothing/glasses/cold=1,/obj/item/clothing/glasses/heat=1,
+ /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1, /obj/item/clothing/glasses/cold=1, /obj/item/clothing/glasses/heat=1,
/obj/item/clothing/suit/whitedress = 1,
/obj/item/clothing/under/jester = 1, /obj/item/clothing/head/jester = 1,
/obj/item/clothing/under/villain = 1,
- /obj/item/clothing/shoes/singery = 1,/obj/item/clothing/under/singery = 1,
- /obj/item/clothing/shoes/singerb = 1,/obj/item/clothing/under/singerb = 1,
+ /obj/item/clothing/shoes/singery = 1, /obj/item/clothing/under/singery = 1,
+ /obj/item/clothing/shoes/singerb = 1, /obj/item/clothing/under/singerb = 1,
/obj/item/clothing/suit/hooded/carp_costume = 1,
/obj/item/clothing/suit/hooded/ian_costume = 1,
/obj/item/clothing/suit/hooded/bee_costume = 1,
@@ -1053,7 +1051,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/under/scratch = 1,
/obj/item/clothing/under/sailor = 1,
/obj/item/clothing/ears/headphones = 2)
- contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 2,/obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
+ contraband = list(/obj/item/clothing/suit/judgerobe = 1, /obj/item/clothing/head/powdered_wig = 1, /obj/item/weapon/gun/magic/wand = 2, /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1, /obj/item/weapon/skub = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
@@ -1062,7 +1060,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
desc = "A kitchen and restaurant equipment vendor"
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
icon_state = "dinnerware"
- products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/fork = 6,/obj/item/weapon/kitchen/knife = 6,/obj/item/weapon/kitchen/rollingpin = 2,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/apron/chef = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5,/obj/item/weapon/reagent_containers/food/condiment/saltshaker = 5,/obj/item/weapon/reagent_containers/food/condiment/peppermill = 5,/obj/item/weapon/reagent_containers/glass/bowl = 20)
+ products = list(/obj/item/weapon/storage/bag/tray = 8, /obj/item/weapon/kitchen/fork = 6, /obj/item/weapon/kitchen/knife = 6, /obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, /obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5, /obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/weapon/reagent_containers/food/condiment/saltshaker = 5, /obj/item/weapon/reagent_containers/food/condiment/peppermill = 5, /obj/item/weapon/reagent_containers/glass/bowl = 20)
contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/kitchen/knife/butcher = 2)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -1109,7 +1107,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access_txt = "11" //Engineering Equipment access
- products = list(/obj/item/clothing/glasses/meson/engine = 2,/obj/item/device/multitool = 4,/obj/item/weapon/electronics/airlock = 10,/obj/item/weapon/electronics/apc = 10,/obj/item/weapon/electronics/airalarm = 10,/obj/item/weapon/stock_parts/cell/high = 10, /obj/item/weapon/construction/rcd/loaded = 3, /obj/item/device/geiger_counter = 5)
+ products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/device/multitool = 4, /obj/item/weapon/electronics/airlock = 10, /obj/item/weapon/electronics/apc = 10, /obj/item/weapon/electronics/airalarm = 10, /obj/item/weapon/stock_parts/cell/high = 10, /obj/item/weapon/construction/rcd/loaded = 3, /obj/item/device/geiger_counter = 5)
contraband = list(/obj/item/weapon/stock_parts/cell/potato = 3)
premium = list(/obj/item/weapon/storage/belt/utility = 3)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
@@ -1122,12 +1120,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "engi"
icon_deny = "engi-deny"
req_access_txt = "11"
- products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/sneakers/orange = 4,/obj/item/clothing/head/hardhat = 4,
- /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson/engine = 4,/obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12,
- /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12,
- /obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8,
- /obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5,
- /obj/item/weapon/stock_parts/matter_bin = 5,/obj/item/weapon/stock_parts/manipulator = 5,/obj/item/weapon/stock_parts/console_screen = 5)
+ products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/sneakers/orange = 4, /obj/item/clothing/head/hardhat = 4,
+ /obj/item/weapon/storage/belt/utility = 4, /obj/item/clothing/glasses/meson/engine = 4, /obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12,
+ /obj/item/weapon/crowbar = 12, /obj/item/weapon/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/weapon/wrench = 12, /obj/item/device/t_scanner = 12,
+ /obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8, /obj/item/clothing/head/welding = 8,
+ /obj/item/weapon/light/tube = 10, /obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5, /obj/item/weapon/stock_parts/micro_laser = 5,
+ /obj/item/weapon/stock_parts/matter_bin = 5, /obj/item/weapon/stock_parts/manipulator = 5, /obj/item/weapon/stock_parts/console_screen = 5)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -1138,10 +1136,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "robotics"
icon_deny = "robotics-deny"
req_access_txt = "29"
- products = list(/obj/item/clothing/suit/toggle/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/assembly/flash/handheld = 4,
- /obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3,
- /obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/internals/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5,
- /obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
+ products = list(/obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/device/assembly/flash/handheld = 4,
+ /obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3, /obj/item/device/assembly/signaler = 3, /obj/item/device/healthanalyzer = 3,
+ /obj/item/weapon/scalpel = 2, /obj/item/weapon/circular_saw = 2, /obj/item/weapon/tank/internals/anesthetic = 2, /obj/item/clothing/mask/breath/medical = 5,
+ /obj/item/weapon/screwdriver = 5, /obj/item/weapon/crowbar = 5)
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
@@ -1152,34 +1150,34 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "clothes"
product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!"
vend_reply = "Thank you for using the ClothesMate!"
- products = list(/obj/item/clothing/head/that=2,/obj/item/clothing/head/fedora=1,/obj/item/clothing/glasses/monocle=1,
+ products = list(/obj/item/clothing/head/that=2, /obj/item/clothing/head/fedora=1, /obj/item/clothing/glasses/monocle=1,
/obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2,
- /obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1,
- /obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
- /obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2,
- /obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2,
- /obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2,
- /obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1,/obj/item/clothing/suit/jacket/miljacket = 1,
+ /obj/item/clothing/under/suit_jacket/navy=1, /obj/item/clothing/under/suit_jacket/really_black=1, /obj/item/clothing/under/suit_jacket/burgundy=1,
+ /obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1, /obj/item/clothing/under/kilt=1, /obj/item/clothing/under/overalls=1,
+ /obj/item/clothing/under/sl_suit=1, /obj/item/clothing/under/pants/jeans=3, /obj/item/clothing/under/pants/classicjeans=2,
+ /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/under/pants/blackjeans=2, /obj/item/clothing/under/pants/khaki=2,
+ /obj/item/clothing/under/pants/white=2, /obj/item/clothing/under/pants/red=1, /obj/item/clothing/under/pants/black=2,
+ /obj/item/clothing/under/pants/tan=2, /obj/item/clothing/under/pants/track=1, /obj/item/clothing/suit/jacket/miljacket = 1,
/obj/item/clothing/neck/tie/blue=1, /obj/item/clothing/neck/tie/red=1, /obj/item/clothing/neck/tie/black=1, /obj/item/clothing/neck/tie/horrible=1,
- /obj/item/clothing/neck/scarf/red=1,/obj/item/clothing/neck/scarf/green=1,/obj/item/clothing/neck/scarf/darkblue=1,
- /obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1,
- /obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1,
- /obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1,
- /obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/accessory/waistcoat=1,
- /obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1,
- /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
- /obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1,
- /obj/item/clothing/glasses/regular=1,/obj/item/clothing/glasses/regular/jamjar=1,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1,
- /obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/sneakers/black=4,
- /obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2,/obj/item/clothing/glasses/orange=1,/obj/item/clothing/glasses/red=1,
+ /obj/item/clothing/neck/scarf/red=1, /obj/item/clothing/neck/scarf/green=1, /obj/item/clothing/neck/scarf/darkblue=1,
+ /obj/item/clothing/neck/scarf/purple=1, /obj/item/clothing/neck/scarf/yellow=1, /obj/item/clothing/neck/scarf/orange=1,
+ /obj/item/clothing/neck/scarf/cyan=1, /obj/item/clothing/neck/scarf=1, /obj/item/clothing/neck/scarf/black=1,
+ /obj/item/clothing/neck/scarf/zebra=1, /obj/item/clothing/neck/scarf/christmas=1, /obj/item/clothing/neck/stripedredscarf=1,
+ /obj/item/clothing/neck/stripedbluescarf=1, /obj/item/clothing/neck/stripedgreenscarf=1, /obj/item/clothing/accessory/waistcoat=1,
+ /obj/item/clothing/under/skirt/black=1, /obj/item/clothing/under/skirt/blue=1, /obj/item/clothing/under/skirt/red=1, /obj/item/clothing/under/skirt/purple=1,
+ /obj/item/clothing/under/sundress=2, /obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
+ /obj/item/clothing/under/plaid_skirt=1, /obj/item/clothing/under/plaid_skirt/blue=1, /obj/item/clothing/under/plaid_skirt/purple=1, /obj/item/clothing/under/plaid_skirt/green=1,
+ /obj/item/clothing/glasses/regular=1, /obj/item/clothing/glasses/regular/jamjar=1, /obj/item/clothing/head/sombrero=1, /obj/item/clothing/suit/poncho=1,
+ /obj/item/clothing/suit/ianshirt=1, /obj/item/clothing/shoes/laceup=2, /obj/item/clothing/shoes/sneakers/black=4,
+ /obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2, /obj/item/clothing/glasses/orange=1, /obj/item/clothing/glasses/red=1,
/obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1, /obj/item/clothing/suit/jacket/letterman=2,
/obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1,
/obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1,
/obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1,
/obj/item/clothing/suit/jacket/letterman_red=1,
/obj/item/clothing/ears/headphones = 10)
- contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=2,/obj/item/clothing/suit/jacket/letterman_syndie=1,/obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1)
- premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/suit/jacket/leather/overcoat=1,/obj/item/clothing/under/pants/mustangjeans=1,/obj/item/clothing/neck/necklace/dope=3,/obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
+ contraband = list(/obj/item/clothing/under/syndicate/tacticool=1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/head/ushanka=1, /obj/item/clothing/under/soviet=1, /obj/item/weapon/storage/belt/fannypack/black=2, /obj/item/clothing/suit/jacket/letterman_syndie=1, /obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1)
+ premium = list(/obj/item/clothing/under/suit_jacket/checkered=1, /obj/item/clothing/head/mailman=1, /obj/item/clothing/under/rank/mailman=1, /obj/item/clothing/suit/jacket/leather=1, /obj/item/clothing/suit/jacket/leather/overcoat=1, /obj/item/clothing/under/pants/mustangjeans=1, /obj/item/clothing/neck/necklace/dope=3, /obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
refill_canister = /obj/item/weapon/vending_refill/clothing
/obj/machinery/vending/toyliberationstation
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 2077c093d7..3c9131ab9b 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -74,7 +74,7 @@
/obj/item/weapon/paper/machine_wash(obj/machinery/washing_machine/WM)
if(WM.color_source)
- if(istype(WM.color_source,/obj/item/toy/crayon))
+ if(istype(WM.color_source, /obj/item/toy/crayon))
var/obj/item/toy/crayon/CR = WM.color_source
add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY)
@@ -211,7 +211,7 @@
to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine!")
return 1
- if(istype(W,/obj/item/toy/crayon) || istype(W,/obj/item/weapon/stamp))
+ if(istype(W, /obj/item/toy/crayon) || istype(W, /obj/item/weapon/stamp))
color_source = W
update_icon()
diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm
index 04737f9567..451f2728fa 100644
--- a/code/game/mecha/combat/gygax.dm
+++ b/code/game/mecha/combat/gygax.dm
@@ -23,7 +23,7 @@
armor = list(melee = 40, bullet = 40, laser = 50, energy = 35, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
max_temperature = 35000
leg_overload_coeff = 100
- operation_req_access = list(GLOB.access_syndicate)
+ operation_req_access = list(ACCESS_SYNDICATE)
wreckage = /obj/structure/mecha_wreckage/gygax/dark
max_equip = 4
diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm
index 9dc1e35238..ab3ebb4050 100644
--- a/code/game/mecha/combat/honker.dm
+++ b/code/game/mecha/combat/honker.dm
@@ -9,7 +9,7 @@
armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
max_temperature = 25000
infra_luminosity = 5
- operation_req_access = list(GLOB.access_theatre)
+ operation_req_access = list(ACCESS_THEATRE)
wreckage = /obj/structure/mecha_wreckage/honker
add_req_access = 0
max_equip = 3
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 388965a7bc..731aa2cec9 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -9,7 +9,7 @@
max_temperature = 60000
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
infra_luminosity = 3
- operation_req_access = list(GLOB.access_cent_specops)
+ operation_req_access = list(ACCESS_CENT_SPECOPS)
wreckage = /obj/structure/mecha_wreckage/marauder
add_req_access = 0
internal_damage_threshold = 25
@@ -44,7 +44,7 @@
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "\improper Seraph"
icon_state = "seraph"
- operation_req_access = list(GLOB.access_cent_specops)
+ operation_req_access = list(ACCESS_CENT_SPECOPS)
step_in = 3
max_integrity = 550
wreckage = /obj/structure/mecha_wreckage/seraph
@@ -70,7 +70,7 @@
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
name = "\improper Mauler"
icon_state = "mauler"
- operation_req_access = list(GLOB.access_syndicate)
+ operation_req_access = list(ACCESS_SYNDICATE)
wreckage = /obj/structure/mecha_wreckage/mauler
max_equip = 5
diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm
index 360c935771..26384824d0 100644
--- a/code/game/mecha/combat/reticence.dm
+++ b/code/game/mecha/combat/reticence.dm
@@ -9,7 +9,7 @@
armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
max_temperature = 15000
wreckage = /obj/structure/mecha_wreckage/reticence
- operation_req_access = list(GLOB.access_theatre)
+ operation_req_access = list(ACCESS_THEATRE)
add_req_access = 0
internal_damage_threshold = 25
max_equip = 2
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index 109877e618..8d8a5420c2 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -121,7 +121,7 @@
onclose(chassis.occupant, "msleeper")
return
if(filter.get("inject"))
- inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source"))
+ inject_reagent(filter.getType("inject", /datum/reagent),filter.getObj("source"))
return
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats()
@@ -296,9 +296,9 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target)
if(!action_checks(target))
return
- if(istype(target,/obj/item/weapon/reagent_containers/syringe))
+ if(istype(target, /obj/item/weapon/reagent_containers/syringe))
return load_syringe(target)
- if(istype(target,/obj/item/weapon/storage))//Loads syringes from boxes
+ if(istype(target, /obj/item/weapon/storage))//Loads syringes from boxes
for(var/obj/item/weapon/reagent_containers/syringe/S in target.contents)
load_syringe(S)
return
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index bbc7ea2e22..6d15716941 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -116,7 +116,7 @@
if(!loc)
STOP_PROCESSING(SSobj, src)
qdel(src)
- if(istype(loc,/obj/mecha/working) && scanning_time <= world.time)
+ if(istype(loc, /obj/mecha/working) && scanning_time <= world.time)
var/obj/mecha/working/mecha = loc
if(!mecha.occupant)
return
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index a1aa38e91e..7c28f5d95b 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -8,7 +8,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 20
active_power_usage = 5000
- req_access = list(GLOB.access_robotics)
+ req_access = list(ACCESS_ROBOTICS)
var/time_coeff = 1
var/component_coeff = 1
var/datum/material_container/materials
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index d50decebe0..5564cd2c0a 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -63,7 +63,7 @@
var/internal_damage = 0 //contains bitflags
var/list/operation_req_access = list()//required access level for mecha operation
- var/list/internals_req_access = list(GLOB.access_engine,GLOB.access_robotics)//required access level to open cell compartment
+ var/list/internals_req_access = list(ACCESS_ENGINE,ACCESS_ROBOTICS)//REQUIRED ACCESS LEVEL TO OPEN CELL COMPARTMENT
var/wreckage
@@ -339,13 +339,13 @@
if(0.75 to INFINITY)
occupant.clear_alert("charge")
if(0.5 to 0.75)
- occupant.throw_alert("charge",/obj/screen/alert/lowcell, 1)
+ occupant.throw_alert("charge", /obj/screen/alert/lowcell, 1)
if(0.25 to 0.5)
- occupant.throw_alert("charge",/obj/screen/alert/lowcell, 2)
+ occupant.throw_alert("charge", /obj/screen/alert/lowcell, 2)
if(0.01 to 0.25)
- occupant.throw_alert("charge",/obj/screen/alert/lowcell, 3)
+ occupant.throw_alert("charge", /obj/screen/alert/lowcell, 3)
else
- occupant.throw_alert("charge",/obj/screen/alert/emptycell)
+ occupant.throw_alert("charge", /obj/screen/alert/emptycell)
var/integrity = obj_integrity/max_integrity*100
switch(integrity)
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 55c18688a1..f2a6b6e225 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -74,10 +74,10 @@
/datum/construction/mecha/ripley_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
+ steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
+ list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
)
@@ -283,11 +283,11 @@
/datum/construction/mecha/gygax_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso),//1
- list("key"=/obj/item/mecha_parts/part/gygax_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/gygax_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/gygax_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/gygax_right_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso), //1
+ list("key"=/obj/item/mecha_parts/part/gygax_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/gygax_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/gygax_left_leg), //4
+ list("key"=/obj/item/mecha_parts/part/gygax_right_leg), //5
list("key"=/obj/item/mecha_parts/part/gygax_head)
)
@@ -568,11 +568,11 @@
return
/datum/construction/mecha/firefighter_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
+ list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
+ list("key"=/obj/item/mecha_parts/part/ripley_right_leg), //5
list("key"=/obj/item/clothing/suit/fire)//6
)
@@ -792,11 +792,11 @@
/datum/construction/mecha/honker_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso),//1
- list("key"=/obj/item/mecha_parts/part/honker_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/honker_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/honker_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/honker_right_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso), //1
+ list("key"=/obj/item/mecha_parts/part/honker_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/honker_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/honker_left_leg), //4
+ list("key"=/obj/item/mecha_parts/part/honker_right_leg), //5
list("key"=/obj/item/mecha_parts/part/honker_head)
)
@@ -819,17 +819,17 @@
/datum/construction/mecha/honker
result = "/obj/mecha/combat/honker"
- steps = list(list("key"=/obj/item/weapon/bikehorn),//1
- list("key"=/obj/item/clothing/shoes/clown_shoes),//2
- list("key"=/obj/item/weapon/bikehorn),//3
- list("key"=/obj/item/clothing/mask/gas/clown_hat),//4
- list("key"=/obj/item/weapon/bikehorn),//5
- list("key"=/obj/item/weapon/circuitboard/mecha/honker/targeting),//6
- list("key"=/obj/item/weapon/bikehorn),//7
- list("key"=/obj/item/weapon/circuitboard/mecha/honker/peripherals),//8
- list("key"=/obj/item/weapon/bikehorn),//9
- list("key"=/obj/item/weapon/circuitboard/mecha/honker/main),//10
- list("key"=/obj/item/weapon/bikehorn),//11
+ steps = list(list("key"=/obj/item/weapon/bikehorn), //1
+ list("key"=/obj/item/clothing/shoes/clown_shoes), //2
+ list("key"=/obj/item/weapon/bikehorn), //3
+ list("key"=/obj/item/clothing/mask/gas/clown_hat), //4
+ list("key"=/obj/item/weapon/bikehorn), //5
+ list("key"=/obj/item/weapon/circuitboard/mecha/honker/targeting), //6
+ list("key"=/obj/item/weapon/bikehorn), //7
+ list("key"=/obj/item/weapon/circuitboard/mecha/honker/peripherals), //8
+ list("key"=/obj/item/weapon/bikehorn), //9
+ list("key"=/obj/item/weapon/circuitboard/mecha/honker/main), //10
+ list("key"=/obj/item/weapon/bikehorn), //11
)
/datum/construction/mecha/honker/action(atom/used_atom,mob/user)
@@ -868,11 +868,11 @@
return
/datum/construction/mecha/durand_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1
- list("key"=/obj/item/mecha_parts/part/durand_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/durand_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/durand_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/durand_right_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso), //1
+ list("key"=/obj/item/mecha_parts/part/durand_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/durand_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/durand_left_leg), //4
+ list("key"=/obj/item/mecha_parts/part/durand_right_leg), //5
list("key"=/obj/item/mecha_parts/part/durand_head)
)
@@ -1156,11 +1156,11 @@
/datum/construction/mecha/phazon_chassis
result = "/obj/mecha/combat/phazon"
- steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso),//1
- list("key"=/obj/item/mecha_parts/part/phazon_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/phazon_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/phazon_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/phazon_right_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso), //1
+ list("key"=/obj/item/mecha_parts/part/phazon_left_arm), //2
+ list("key"=/obj/item/mecha_parts/part/phazon_right_arm), //3
+ list("key"=/obj/item/mecha_parts/part/phazon_left_leg), //4
+ list("key"=/obj/item/mecha_parts/part/phazon_right_leg), //5
list("key"=/obj/item/mecha_parts/part/phazon_head)
)
@@ -1487,11 +1487,11 @@
//ODYSSEUS
/datum/construction/mecha/odysseus_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
- list("key"=/obj/item/mecha_parts/part/odysseus_head),//2
- list("key"=/obj/item/mecha_parts/part/odysseus_left_arm),//3
- list("key"=/obj/item/mecha_parts/part/odysseus_right_arm),//4
- list("key"=/obj/item/mecha_parts/part/odysseus_left_leg),//5
+ steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso), //1
+ list("key"=/obj/item/mecha_parts/part/odysseus_head), //2
+ list("key"=/obj/item/mecha_parts/part/odysseus_left_arm), //3
+ list("key"=/obj/item/mecha_parts/part/odysseus_right_arm), //4
+ list("key"=/obj/item/mecha_parts/part/odysseus_left_leg), //5
list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
)
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index 7c08e3fad7..da8c1c26c7 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -3,7 +3,7 @@
desc = "Used to remotely locate or lockdown exosuits."
icon_screen = "mecha"
icon_keyboard = "tech_key"
- req_access = list(GLOB.access_robotics)
+ req_access = list(ACCESS_ROBOTICS)
circuit = /obj/item/weapon/circuitboard/computer/mecha_control
var/list/located = list()
var/screen = 0
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index 34ac8fa93e..ecdbc890af 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -10,7 +10,7 @@
density = TRUE
anchored = FALSE
opacity = 0
- var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel,/obj/item/stack/sheet/metal,/obj/item/stack/rods)
+ var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/metal, /obj/item/stack/rods)
var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil)
var/list/crowbar_salvage = list()
var/salvage_num = 5
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index 60adb4dcb6..853a7c4fbb 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -103,9 +103,9 @@
var/obj/item/mecha_parts/mecha_equipment/drill/D = new
D.attach(src)
- else //Add possible plasma cutter if no drill
- var/obj/item/mecha_parts/mecha_equipment/M = new
- M.attach(src)
+ else //Add plasma cutter if no drill
+ var/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/P = new
+ P.attach(src)
//Add ore box to cargo
cargo.Add(new /obj/structure/ore_box(src))
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 1392159cea..fb2b854ffb 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -123,7 +123,7 @@
var/stuff_on_wall = 0
for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff
- if(istype(O,/obj/structure/sign/poster))
+ if(istype(O, /obj/structure/sign/poster))
to_chat(user, "The wall is far too cluttered to place a poster!")
return
stuff_on_wall++
diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm
index 18b0a2f548..14a8e25eba 100644
--- a/code/game/objects/effects/decals/decal.dm
+++ b/code/game/objects/effects/decals/decal.dm
@@ -63,8 +63,20 @@
/obj/effect/turf_decal/sand
icon_state = "sandyfloor"
+/obj/effect/turf_decal/sand/warning
+ icon_state = "sandy_warn"
+
+/obj/effect/turf_decal/sand/warning/corner
+ icon_state = "sandy_warn_corner"
+
/obj/effect/turf_decal/sand/plating
icon_state = "sandyplating"
+/obj/effect/turf_decal/sand/plating/warning
+ icon_state = "sandy_plating_warn"
+
+/obj/effect/turf_decal/sand/plating/warning/corner
+ icon_state = "sandy_plating_warn_corner"
+
/obj/effect/turf_decal/plaque
icon_state = "plaque"
diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm
index 896b0691fd..45a9ba3f35 100644
--- a/code/game/objects/effects/decals/misc.dm
+++ b/code/game/objects/effects/decals/misc.dm
@@ -20,12 +20,6 @@
pass_flags = PASSTABLE | PASSGRILLE
layer = FLY_LAYER
-/obj/effect/decal/sandeffect
- name = "sandy tile"
- icon = 'icons/turf/floors.dmi'
- icon_state = "sandeffect"
- layer = ABOVE_OPEN_TURF_LAYER
-
/obj/effect/decal/fakelattice
name = "lattice"
desc = "A lightweight support lattice."
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index 23ba467e4b..48260e02e1 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -21,7 +21,7 @@
var/static/list/blacklisted_turfs = typecacheof(list(
/turf/open/space/transit,
/turf/open/chasm,
- /turf/open/floor/plating/lava))
+ /turf/open/lava))
/obj/effect/particle_effect/foam/metal
diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm
index d38b33671d..4406c32fbd 100644
--- a/code/game/objects/effects/effects.dm
+++ b/code/game/objects/effects/effects.dm
@@ -3,7 +3,7 @@
//Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc...
/obj/effect
icon = 'icons/effects/effects.dmi'
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
/obj/effect/attackby(obj/item/I, mob/living/user, params)
return
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index 1146b5ff09..ce4992391b 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -16,7 +16,7 @@
var/spreadIntoAdjacentChance = 60
var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom
var/static/list/blacklisted_glowshroom_turfs = typecacheof(list(
- /turf/open/floor/plating/lava,
+ /turf/open/lava,
/turf/open/floor/plating/beach/water))
/obj/structure/glowshroom/glowcap
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 45242ae6d5..87f3f6fec2 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -42,9 +42,6 @@
if(user && Adjacent(user))
teleport(user)
-/obj/effect/portal/make_frozen_visual()
- return
-
/obj/effect/portal/Crossed(atom/movable/AM, oldloc)
if(get_turf(oldloc) == get_turf(linked))
return ..()
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index 06beef6940..20ccfbdca5 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -1,127 +1,127 @@
-
-/obj/effect/gibspawner
- var/sparks = 0 //whether sparks spread
- var/virusProb = 20 //the chance for viruses to spread on the gibs
- var/list/gibtypes = list() //typepaths of the gib decals to spawn
- var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
- var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
-
-/obj/effect/gibspawner/Initialize(mapload, list/viruses, datum/dna/MobDNA)
- ..()
-
- if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
- to_chat(world, "Gib list length mismatch!")
- return
-
- var/obj/effect/decal/cleanable/blood/gibs/gib = null
-
- if(sparks)
- var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
- s.set_up(2, 1, loc)
- s.start()
-
- for(var/i = 1, i<= gibtypes.len, i++)
- if(gibamounts[i])
- for(var/j = 1, j<= gibamounts[i], j++)
- var/gibType = gibtypes[i]
- gib = new gibType(loc)
- if(iscarbon(loc))
- var/mob/living/carbon/digester = loc
- digester.stomach_contents += gib
-
- if(viruses && viruses.len > 0)
- for(var/datum/disease/D in viruses)
- if(prob(virusProb))
- var/datum/disease/viruus = D.Copy(1)
- gib.viruses += viruus
- viruus.holder = gib
-
- if(MobDNA)
- gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
- else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
- gib.blood_DNA["Non-human DNA"] = "A+"
- var/list/directions = gibdirections[i]
- if(isturf(loc))
- if(directions.len)
- gib.streak(directions)
-
- qdel(src)
-
-
-
-/obj/effect/gibspawner/generic
- gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
- gibamounts = list(2,2,1)
-
-/obj/effect/gibspawner/generic/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
- gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
- ..()
-
-/obj/effect/gibspawner/human
- gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core)
- gibamounts = list(1,1,1,1,1,1,1)
-
-/obj/effect/gibspawner/human/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
- ..()
-
-
-/obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso).
- gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core,/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
- gibamounts = list(1, 1, 1, 1, 1, 1)
-
-/obj/effect/gibspawner/humanbodypartless/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
- ..()
-
-
-/obj/effect/gibspawner/xeno
- gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up,/obj/effect/decal/cleanable/xenoblood/xgibs/down,/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
- gibamounts = list(1,1,1,1,1,1,1)
-
-/obj/effect/gibspawner/xeno/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
- ..()
-
-
-/obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso).
- gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core,/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
- gibamounts = list(1, 1, 1, 1, 1, 1)
-
-
-/obj/effect/gibspawner/xenobodypartless/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
- ..()
-
-/obj/effect/gibspawner/larva
- gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
- gibamounts = list(1, 1, 1, 1)
-
-/obj/effect/gibspawner/larva/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
- ..()
-
-/obj/effect/gibspawner/larvabodypartless
- gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
- gibamounts = list(1, 1, 1)
-
-/obj/effect/gibspawner/larvabodypartless/Initialize()
- playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
- ..()
-
-/obj/effect/gibspawner/robot
- sparks = 1
- gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up,/obj/effect/decal/cleanable/robot_debris/down,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris/limb)
- gibamounts = list(1,1,1,1,1,1)
-
-/obj/effect/gibspawner/robot/Initialize()
- gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
- gibamounts[6] = pick(0,1,2)
- ..()
+
+/obj/effect/gibspawner
+ var/sparks = 0 //whether sparks spread
+ var/virusProb = 20 //the chance for viruses to spread on the gibs
+ var/list/gibtypes = list() //typepaths of the gib decals to spawn
+ var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
+ var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
+
+/obj/effect/gibspawner/Initialize(mapload, list/viruses, datum/dna/MobDNA)
+ ..()
+
+ if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
+ to_chat(world, "Gib list length mismatch!")
+ return
+
+ var/obj/effect/decal/cleanable/blood/gibs/gib = null
+
+ if(sparks)
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(2, 1, loc)
+ s.start()
+
+ for(var/i = 1, i<= gibtypes.len, i++)
+ if(gibamounts[i])
+ for(var/j = 1, j<= gibamounts[i], j++)
+ var/gibType = gibtypes[i]
+ gib = new gibType(loc)
+ if(iscarbon(loc))
+ var/mob/living/carbon/digester = loc
+ digester.stomach_contents += gib
+
+ if(viruses && viruses.len > 0)
+ for(var/datum/disease/D in viruses)
+ if(prob(virusProb))
+ var/datum/disease/viruus = D.Copy(1)
+ gib.viruses += viruus
+ viruus.holder = gib
+
+ if(MobDNA)
+ gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
+ else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
+ gib.blood_DNA["Non-human DNA"] = "A+"
+ var/list/directions = gibdirections[i]
+ if(isturf(loc))
+ if(directions.len)
+ gib.streak(directions)
+
+ qdel(src)
+
+
+
+/obj/effect/gibspawner/generic
+ gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core)
+ gibamounts = list(2,2,1)
+
+/obj/effect/gibspawner/generic/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
+ gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
+ . = ..()
+
+/obj/effect/gibspawner/human
+ gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
+ gibamounts = list(1,1,1,1,1,1,1)
+
+/obj/effect/gibspawner/human/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
+ . = ..()
+
+
+/obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso).
+ gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
+ gibamounts = list(1, 1, 1, 1, 1, 1)
+
+/obj/effect/gibspawner/humanbodypartless/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
+ . = ..()
+
+
+/obj/effect/gibspawner/xeno
+ gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
+ gibamounts = list(1,1,1,1,1,1,1)
+
+/obj/effect/gibspawner/xeno/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
+ . = ..()
+
+
+/obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso).
+ gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
+ gibamounts = list(1, 1, 1, 1, 1, 1)
+
+
+/obj/effect/gibspawner/xenobodypartless/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
+ . = ..()
+
+/obj/effect/gibspawner/larva
+ gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
+ gibamounts = list(1, 1, 1, 1)
+
+/obj/effect/gibspawner/larva/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
+ . = ..()
+
+/obj/effect/gibspawner/larvabodypartless
+ gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
+ gibamounts = list(1, 1, 1)
+
+/obj/effect/gibspawner/larvabodypartless/Initialize()
+ playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
+ . = ..()
+
+/obj/effect/gibspawner/robot
+ sparks = 1
+ gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
+ gibamounts = list(1,1,1,1,1,1)
+
+/obj/effect/gibspawner/robot/Initialize()
+ gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
+ gibamounts[6] = pick(0,1,2)
+ ..()
diff --git a/code/game/objects/effects/spawners/gibspawner.dm.rej b/code/game/objects/effects/spawners/gibspawner.dm.rej
new file mode 100644
index 0000000000..ffd534c1f0
--- /dev/null
+++ b/code/game/objects/effects/spawners/gibspawner.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm (rejected hunks)
+@@ -52,7 +52,7 @@
+ . = ..()
+
+ /obj/effect/gibspawner/human
+- gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core)
++ gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
+ gibamounts = list(1,1,1,1,1,1,1)
+
+ /obj/effect/gibspawner/human/Initialize()
diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm
index ff788ef580..b550871389 100644
--- a/code/game/objects/effects/temporary_visuals/clockcult.dm
+++ b/code/game/objects/effects/temporary_visuals/clockcult.dm
@@ -210,6 +210,20 @@
animate(src, transform = matrix()*2, time = 5)
animate(transform = oldtransform, alpha = 0, time = 65)
+/obj/effect/temp_visual/ratvar/sigil/transmission
+ color = "#EC8A2D"
+ layer = ABOVE_MOB_LAYER
+ duration = 20
+ light_range = 3
+ light_power = 1
+ light_color = "#EC8A2D"
+
+/obj/effect/temp_visual/ratvar/sigil/transmission/Initialize(mapload, transform_multiplier)
+ . = ..()
+ var/oldtransform = transform
+ transform = matrix()*transform_multiplier
+ animate(src, transform = oldtransform, alpha = 0, time = 20)
+
/obj/effect/temp_visual/ratvar/sigil/vitality
color = "#1E8CE1"
icon_state = "sigilactivepulse"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 5161386474..6e428b99ba 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -204,6 +204,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
msg += "*--------*"
to_chat(user, msg)
+/obj/item/proc/speechModification(message) //For speech modification by mask slot items.
+ return message
/obj/item/attack_self(mob/user)
interact(user)
@@ -312,7 +314,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
// I have cleaned it up a little, but it could probably use more. -Sayu
// The lack of ..() is intentional, do not add one
/obj/item/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/storage))
+ if(istype(W, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
if(S.use_to_pickup)
if(S.collection_mode) //Mode is set to collect multiple items on a tile and we clicked on a valid one.
@@ -502,7 +504,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
M.adjust_blurriness(3)
M.adjust_eye_damage(rand(2,4))
- var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
if (!eyes)
return
if(eyes.eye_damage >= 10)
@@ -567,12 +569,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/weapon/storage
if(!newLoc)
return 0
- if(istype(loc,/obj/item/weapon/storage))
+ if(istype(loc, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = loc
S.remove_from_storage(src,newLoc)
return 1
return 0
+/obj/item/proc/get_belt_overlay() //Returns the icon used for overlaying the object on a belt
+ return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state)
+
/obj/item/proc/is_hot()
return heat
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index b5f38f023a..1823beec4b 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -562,7 +562,7 @@
self_contained = FALSE // Don't disappear when they're empty
can_change_colour = TRUE
- validSurfaces = list(/turf/open/floor,/turf/closed/wall)
+ validSurfaces = list(/turf/open/floor, /turf/closed/wall)
reagent_contents = list("welding_fuel" = 1, "ethanol" = 1)
pre_noise = TRUE
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index a67ca4094b..9c74638fcc 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -383,11 +383,11 @@ GLOBAL_LIST_EMPTY(PDAs)
else if((!isnull(cartridge)) && (cartridge.access & CART_ATMOS))
scanmode = 5
if("Drone Phone")
- var/area/A = get_area(U)
var/alert_s = input(U,"Alert severity level","Ping Drones",null) as null|anything in list("Low","Medium","High","Critical")
- if(A && alert_s)
+ var/area/A = get_area(U)
+ if(A && alert_s && !QDELETED(U))
var/msg = "NON-DRONE PING: [U.name]: [alert_s] priority alert in [A.name]!"
- _alert_drones(msg, TRUE)
+ _alert_drones(msg, TRUE, U)
to_chat(U, msg)
diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm
index 057ef040e5..78465750cd 100644
--- a/code/game/objects/items/devices/instruments.dm
+++ b/code/game/objects/items/devices/instruments.dm
@@ -92,6 +92,7 @@
attack_verb = list("played metal on", "shredded", "crashed", "smashed")
hitsound = 'sound/weapons/stringsmash.ogg'
instrumentId = "eguitar"
+ instrumentExt = "ogg"
/obj/item/device/instrument/glockenspiel
name = "glockenspiel"
@@ -139,6 +140,12 @@
w_class = WEIGHT_CLASS_SMALL
actions_types = list(/datum/action/item_action/instrument)
+/obj/item/device/instrument/harmonica/speechModification(message)
+ if(song.playing && ismob(loc))
+ to_chat(loc, "You stop playing the harmonica to talk...")
+ song.playing = FALSE
+ return message
+
/obj/item/device/instrument/bikehorn
name = "gilded bike horn"
desc = "An exquisitely decorated bike horn, capable of honking in a variety of notes."
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 1f0177e48e..421767b00c 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -122,7 +122,7 @@
var/replaced_something = TRUE
for(var/obj/item/I in S.contents)
- if(istype(I,/obj/item/weapon/light))
+ if(istype(I, /obj/item/weapon/light))
var/obj/item/weapon/light/L = I
found_lightbulbs = TRUE
if(src.uses >= max_uses)
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index 42d3379976..036fa7b6f2 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -23,7 +23,7 @@
if(!proximity_flag)
return
- if(!istype(A,/obj/machinery/atmospherics/pipe))
+ if(!istype(A, /obj/machinery/atmospherics/pipe))
return
var/obj/machinery/atmospherics/pipe/P = A
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 7111093951..2f48c73d24 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -283,7 +283,7 @@
O.lockcharge = TRUE
O.update_canmove()
- else if(istype(W,/obj/item/weapon/pen))
+ else if(istype(W, /obj/item/weapon/pen))
to_chat(user, "You need to use a multitool to name [src]!")
else
return ..()
diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm
index 899381af65..94f6fca28c 100644
--- a/code/game/objects/items/stacks/cash.dm
+++ b/code/game/objects/items/stacks/cash.dm
@@ -19,7 +19,7 @@
/obj/item/stack/spacecash/proc/update_desc()
var/total_worth = amount*value
- desc = "It's worth [total_worth] credit[( amount > 1 ) ? "s" : ""]"
+ desc = "It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
/obj/item/stack/spacecash/merge(obj/item/stack/S)
@@ -68,4 +68,4 @@
/obj/item/stack/spacecash/c1000
icon_state = "spacecash1000"
singular_name = "one thousand credit bill"
- value = 1000
\ No newline at end of file
+ value = 1000
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index c55ab4f6dd..9456f925d6 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
if (!R && replace)
user.put_in_hands(new_item)
- else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks))
+ else if(istype(W, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = W
if(amount != 1)
to_chat(user, "You must use a single rod!")
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index a9fcf349ca..285225d6f1 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -137,7 +137,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
new/datum/stack_recipe("muzzle", /obj/item/clothing/mask/muzzle, 2), \
new/datum/stack_recipe("botany gloves", /obj/item/clothing/gloves/botanic_leather, 3), \
new/datum/stack_recipe("toolbelt", /obj/item/weapon/storage/belt/utility, 4), \
- new/datum/stack_recipe("leather satchel", /obj/item/weapon/storage/backpack/satchel, 5), \
+ new/datum/stack_recipe("leather satchel", /obj/item/weapon/storage/backpack/satchel/leather, 5), \
new/datum/stack_recipe("bandolier", /obj/item/weapon/storage/belt/bandolier, 5), \
new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7), \
new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \
diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm
index 49143b7f5f..10ac12d53f 100644
--- a/code/game/objects/items/stacks/sheets/light.dm
+++ b/code/game/objects/items/stacks/sheets/light.dm
@@ -14,7 +14,7 @@
/obj/item/stack/light_w/attackby(obj/item/O, mob/user, params)
- if(istype(O,/obj/item/weapon/wirecutters))
+ if(istype(O, /obj/item/weapon/wirecutters))
var/obj/item/stack/cable_coil/CC = new (user.loc)
CC.amount = 5
CC.add_fingerprint(user)
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index e9f2977725..4e9caaf5eb 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
w_class = WEIGHT_CLASS_TINY
/obj/item/weapon/emptysandbag/attackby(obj/item/W, mob/user, params)
- if(istype(W,/obj/item/weapon/ore/glass))
+ if(istype(W, /obj/item/weapon/ore/glass))
to_chat(user, "You fill the sandbag.")
var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags
qdel(src)
@@ -312,7 +312,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
origin_tech = "materials=1"
GLOBAL_LIST_INIT(snow_recipes, list ( \
- new/datum/stack_recipe("Snow Wall",/turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("Snow Wall", /turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("Snowman", /obj/structure/statue/snow/snowman, 5, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \
))
diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm
index 3e9117cbdf..b4b31eac08 100644
--- a/code/game/objects/items/stacks/tiles/light.dm
+++ b/code/game/objects/items/stacks/tiles/light.dm
@@ -20,7 +20,7 @@
state = 0 //fine
/obj/item/stack/tile/light/attackby(obj/item/O, mob/user, params)
- if(istype(O,/obj/item/weapon/crowbar))
+ if(istype(O, /obj/item/weapon/crowbar))
new/obj/item/stack/sheet/metal(user.loc)
amount--
new/obj/item/stack/light_w(user.loc)
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 55488fa264..a51dd403a0 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -84,6 +84,7 @@
icon_state = "screwdriver_nuke"
item_state = "screwdriver_nuke"
toolspeed = 0.5
+ random_color = FALSE
/obj/item/weapon/paper/nuke_instructions
info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core: \
@@ -167,6 +168,7 @@
T.sliver.forceMove(src)
sliver = T.sliver
T.sliver = null
+ T.icon_state = "supermatter_tongs"
icon_state = "core_container_loaded"
to_chat(user, "Container is sealing...")
addtimer(CALLBACK(src, .proc/seal), 50)
@@ -212,7 +214,7 @@
/obj/item/weapon/hemostat/supermatter/afterattack(atom/O, mob/user, proximity)
if(!sliver)
return
- if(ismovableatom(O))
+ if(ismovableatom(O) && O != sliver)
Consume(O)
to_chat(usr, "\The [sliver] is dusted along with \the [O]!")
QDEL_NULL(sliver)
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index bd608e6b72..75141bddd5 100644
--- a/code/game/objects/items/weapons/RPD.dm
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -518,7 +518,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
/obj/item/weapon/pipe_dispenser/pre_attackby(atom/A, mob/user)
- if(!user.IsAdvancedToolUser() || istype(A,/turf/open/space/transit))
+ if(!user.IsAdvancedToolUser() || istype(A, /turf/open/space/transit))
return ..()
//make sure what we're clicking is valid for the current mode
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index b96daf6474..13a420de5e 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -145,7 +145,7 @@ update_label("John Doe", "Clowny")
/obj/item/weapon/card/id/syndicate
name = "agent card"
- access = list(GLOB.access_maint_tunnels, GLOB.access_syndicate)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE)
origin_tech = "syndicate=1"
var/anyone = FALSE //Can anyone forge the ID or just syndicate?
@@ -195,7 +195,7 @@ update_label("John Doe", "Clowny")
desc = "An ID straight from the Syndicate."
registered_name = "Syndicate"
assignment = "Syndicate Overlord"
- access = list(GLOB.access_syndicate)
+ access = list(ACCESS_SYNDICATE)
/obj/item/weapon/card/id/captains_spare
name = "captain's spare ID"
@@ -229,7 +229,7 @@ update_label("John Doe", "Clowny")
assignment = "Emergency Response Team Commander"
/obj/item/weapon/card/id/ert/Initialize()
- access = get_all_accesses()+get_ert_access("commander")-GLOB.access_change_ids
+ access = get_all_accesses()+get_ert_access("commander")-ACCESS_CHANGE_IDS
..()
/obj/item/weapon/card/id/ert/Security
@@ -237,7 +237,7 @@ update_label("John Doe", "Clowny")
assignment = "Security Response Officer"
/obj/item/weapon/card/id/ert/Security/Initialize()
- access = get_all_accesses()+get_ert_access("sec")-GLOB.access_change_ids
+ access = get_all_accesses()+get_ert_access("sec")-ACCESS_CHANGE_IDS
..()
/obj/item/weapon/card/id/ert/Engineer
@@ -245,7 +245,7 @@ update_label("John Doe", "Clowny")
assignment = "Engineer Response Officer"
/obj/item/weapon/card/id/ert/Engineer/Initialize()
- access = get_all_accesses()+get_ert_access("eng")-GLOB.access_change_ids
+ access = get_all_accesses()+get_ert_access("eng")-ACCESS_CHANGE_IDS
..()
/obj/item/weapon/card/id/ert/Medical
@@ -253,7 +253,7 @@ update_label("John Doe", "Clowny")
assignment = "Medical Response Officer"
/obj/item/weapon/card/id/ert/Medical/Initialize()
- access = get_all_accesses()+get_ert_access("med")-GLOB.access_change_ids
+ access = get_all_accesses()+get_ert_access("med")-ACCESS_CHANGE_IDS
..()
/obj/item/weapon/card/id/prisoner
@@ -299,26 +299,26 @@ update_label("John Doe", "Clowny")
/obj/item/weapon/card/id/mining
name = "mining ID"
- access = list(GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
/obj/item/weapon/card/id/away
name = "a perfectly generic identification card"
desc = "A perfectly generic identification card. Looks like it could use some flavor."
- access = list(GLOB.access_away_general)
+ access = list(ACCESS_AWAY_GENERAL)
/obj/item/weapon/card/id/away/hotel
name = "Staff ID"
desc = "A staff ID used to access the hotel's doors."
- access = list(GLOB.access_away_general, GLOB.access_away_maint)
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINT)
/obj/item/weapon/card/id/away/hotel/securty
name = "Officer ID"
- access = list(GLOB.access_away_general, GLOB.access_away_maint, GLOB.access_away_sec)
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINT, ACCESS_AWAY_SEC)
/obj/item/weapon/card/id/away/old
name = "a perfectly generic identification card"
desc = "A perfectly generic identification card. Looks like it could use some flavor."
- access = list(GLOB.access_away_general)
+ access = list(ACCESS_AWAY_GENERAL)
/obj/item/weapon/card/id/away/old/sec
name = "Security Officer ID"
@@ -339,4 +339,4 @@ update_label("John Doe", "Clowny")
name = "APC Access ID"
desc = "Special ID card to allow access to APCs"
icon_state = "centcom"
- access = list(GLOB.access_engine_equip)
\ No newline at end of file
+ access = list(ACCESS_ENGINE_EQUIP)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 1df7b9f69a..c3be2659ff 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -60,7 +60,7 @@
//So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
if(user.client && (target in user.client.screen))
to_chat(user, "You need to take that [target.name] off before cleaning it!")
- else if(istype(target,/obj/effect/decal/cleanable))
+ else if(istype(target, /obj/effect/decal/cleanable))
user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...")
if(do_after(user, src.cleanspeed, target = target))
to_chat(user, "You scrub \the [target.name] out.")
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index a5456b7724..8bb4d3eefe 100755
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -115,7 +115,7 @@
update_icon()
return
- else if(istype(W,/obj/item/weapon/tank/internals/plasma))
+ else if(istype(W, /obj/item/weapon/tank/internals/plasma))
if(ptank)
if(user.transferItemToLoc(W,src))
ptank.forceMove(get_turf(src))
diff --git a/code/game/objects/items/weapons/gift.dm b/code/game/objects/items/weapons/gift.dm
index 2d584327c2..e13c0b68fa 100644
--- a/code/game/objects/items/weapons/gift.dm
+++ b/code/game/objects/items/weapons/gift.dm
@@ -72,7 +72,7 @@
var/gift_type = pick(gift_type_list)
- if(!ispath(gift_type,/obj/item))
+ if(!ispath(gift_type, /obj/item))
return
qdel(src)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 7af8a4dc5a..0dcdf1d7b6 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -193,7 +193,7 @@
name = "large grenade"
desc = "A custom made large grenade. It affects a larger area."
icon_state = "large_grenade"
- allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment,
+ allowed_containers = list(/obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food/condiment,
/obj/item/weapon/reagent_containers/food/drinks)
origin_tech = "combat=3;engineering=3"
affected_area = 5
diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm
index 27991f684f..f9ce9465e0 100644
--- a/code/game/objects/items/weapons/grenades/plastic.dm
+++ b/code/game/objects/items/weapons/grenades/plastic.dm
@@ -170,8 +170,8 @@
/obj/item/weapon/grenade/plastic/c4/New()
wires = new /datum/wires/explosive/c4(src)
- plastic_overlay = mutable_appearance(icon, "plastic-explosive2")
..()
+ plastic_overlay = mutable_appearance(icon, "plastic-explosive2")
/obj/item/weapon/grenade/plastic/c4/Destroy()
qdel(wires)
@@ -228,7 +228,7 @@
return
if((istype(AM, /obj/item/weapon/storage/)) && !((istype(AM, /obj/item/weapon/storage/secure)) || (istype(AM, /obj/item/weapon/storage/lockbox)))) //If its storage but not secure storage OR a lockbox, then place it inside.
return
- if((istype(AM,/obj/item/weapon/storage/secure)) || (istype(AM, /obj/item/weapon/storage/lockbox)))
+ if((istype(AM, /obj/item/weapon/storage/secure)) || (istype(AM, /obj/item/weapon/storage/lockbox)))
var/obj/item/weapon/storage/secure/S = AM
if(!S.locked) //Literal hacks, this works for lockboxes despite incorrect type casting, because they both share the locked var. But if its unlocked, place it inside, otherwise PLANTING C4!
return
diff --git a/code/game/objects/items/weapons/implants/implant_chem.dm b/code/game/objects/items/weapons/implants/implant_chem.dm
index e537bf44de..d259e7b26e 100644
--- a/code/game/objects/items/weapons/implants/implant_chem.dm
+++ b/code/game/objects/items/weapons/implants/implant_chem.dm
@@ -56,7 +56,7 @@
imp_type = /obj/item/weapon/implant/chem
/obj/item/weapon/implantcase/chem/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/reagent_containers/syringe) && imp)
+ if(istype(W, /obj/item/weapon/reagent_containers/syringe) && imp)
W.afterattack(imp, user, TRUE, params)
return TRUE
else
diff --git a/code/game/objects/items/weapons/inducer.dm b/code/game/objects/items/weapons/inducer.dm
index 26eb9a7bfc..193e49989f 100644
--- a/code/game/objects/items/weapons/inducer.dm
+++ b/code/game/objects/items/weapons/inducer.dm
@@ -60,7 +60,7 @@
/obj/item/weapon/inducer/attackby(obj/item/weapon/W, mob/user)
- if(istype(W,/obj/item/weapon/screwdriver))
+ if(istype(W, /obj/item/weapon/screwdriver))
playsound(src, W.usesound, 50, 1)
if(!opened)
to_chat(user, "You unscrew the battery compartment.")
@@ -72,7 +72,7 @@
opened = FALSE
update_icon()
return
- if(istype(W,/obj/item/weapon/stock_parts/cell))
+ if(istype(W, /obj/item/weapon/stock_parts/cell))
if(opened)
if(!cell)
if(!user.transferItemToLoc(W, src))
diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm
index cec4fce24d..77b3feb81c 100644
--- a/code/game/objects/items/weapons/singularityhammer.dm
+++ b/code/game/objects/items/weapons/singularityhammer.dm
@@ -45,7 +45,7 @@
step_towards(A,pull)
else if(ishuman(X))
var/mob/living/carbon/human/H = X
- if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
+ if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 89f1feeef1..a3b5d0f4bc 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -305,7 +305,7 @@
/obj/item/weapon/storage/backpack/satchel/flat/secret/Initialize()
..()
- if(isfloorturf(loc) && !istype(loc,/turf/open/floor/plating/))
+ if(isfloorturf(loc) && !istype(loc, /turf/open/floor/plating/))
hide(1)
/obj/item/weapon/storage/backpack/satchel/flat/secret/hide(intact)
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index e61a0a8ad4..76b4e087fd 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -88,6 +88,7 @@
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
max_w_class = WEIGHT_CLASS_NORMAL
can_hold = list(/obj/item/weapon/ore)
+ var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it
/obj/item/weapon/storage/bag/ore/cyborg
name = "cyborg mining satchel"
@@ -112,7 +113,7 @@
max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
max_w_class = WEIGHT_CLASS_NORMAL
w_class = WEIGHT_CLASS_TINY
- can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/honeycomb)
+ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/seeds, /obj/item/weapon/grown, /obj/item/weapon/reagent_containers/honeycomb)
resistance_flags = FLAMMABLE
////////
@@ -152,7 +153,7 @@
allow_quick_empty = 1 // this function is superceded
/obj/item/weapon/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W, stop_messages = 0)
- if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/mineral/wood))
+ if(!istype(W, /obj/item/stack/sheet) || istype(W, /obj/item/stack/sheet/mineral/sandstone) || istype(W, /obj/item/stack/sheet/mineral/wood))
if(!stop_messages)
to_chat(usr, "The snatcher does not accept [W].")
return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 3dbb98882f..96c42747b0 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -7,13 +7,20 @@
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined")
max_integrity = 300
+ var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding
/obj/item/weapon/storage/belt/update_icon()
cut_overlays()
- for(var/obj/item/I in contents)
- add_overlay("[I.name]")
+ if(content_overlays)
+ for(var/obj/item/I in contents)
+ var/mutable_appearance/M = I.get_belt_overlay()
+ add_overlay(M)
..()
+/obj/item/weapon/storage/belt/Initialize()
+ . = ..()
+ update_icon()
+
/obj/item/weapon/storage/belt/utility
name = "toolbelt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
desc = "Holds tools."
@@ -34,10 +41,11 @@
/obj/item/device/radio,
/obj/item/clothing/gloves
)
+ content_overlays = TRUE
/obj/item/weapon/storage/belt/utility/chief
- name = "Chief Engineer's toolbelt"
- desc = "Holds tools, looks snazzy"
+ name = "\improper Chief Engineer's toolbelt" //"the Chief Engineer's toolbelt", because "Chief Engineer's toolbelt" is not a proper noun
+ desc = "Holds tools, looks snazzy."
icon_state = "utilitybelt_ce"
item_state = "utility_ce"
@@ -157,6 +165,7 @@
/obj/item/clothing/gloves/,
/obj/item/weapon/restraints/legcuffs/bola
)
+ content_overlays = TRUE
/obj/item/weapon/storage/belt/security/full/PopulateContents()
new /obj/item/weapon/reagent_containers/spray/pepper(src)
@@ -472,6 +481,7 @@
icon_state = "sheath"
item_state = "sheath"
storage_slots = 1
+ rustle_jimmies = FALSE
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_BULKY
can_hold = list(
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 6e68afb4c4..fd893afb2d 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -144,7 +144,7 @@
icon = 'icons/obj/chemical.dmi'
item_state = "contsolid"
w_class = WEIGHT_CLASS_SMALL
- can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice)
+ can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/dice)
allow_quick_gather = 1
use_to_pickup = 1
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index 59e1a8c877..35a6c64388 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -7,7 +7,7 @@
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
storage_slots = 4
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
var/locked = TRUE
var/broken = FALSE
var/open = FALSE
@@ -88,7 +88,7 @@
/obj/item/weapon/storage/lockbox/loyalty
name = "lockbox of mindshield implants"
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
/obj/item/weapon/storage/lockbox/loyalty/PopulateContents()
for(var/i in 1 to 3)
@@ -99,7 +99,7 @@
/obj/item/weapon/storage/lockbox/clusterbang
name = "lockbox of clusterbangs"
desc = "You have a bad feeling about opening this."
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
/obj/item/weapon/storage/lockbox/clusterbang/PopulateContents()
new /obj/item/weapon/grenade/clusterbuster(src)
@@ -113,7 +113,7 @@
max_w_class = WEIGHT_CLASS_SMALL
storage_slots = 10
max_combined_w_class = 20
- req_access = list(GLOB.access_captain)
+ req_access = list(ACCESS_CAPTAIN)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
icon_broken = "medalbox+b"
@@ -162,7 +162,7 @@
/obj/item/weapon/storage/lockbox/medal/sec
name = "security medal box"
desc = "A locked box used to store medals to be given to members of the security department."
- req_access = list(GLOB.access_hos)
+ req_access = list(ACCESS_HOS)
/obj/item/weapon/storage/lockbox/medal/sec/PopulateContents()
for(var/i in 1 to 3)
@@ -171,7 +171,7 @@
/obj/item/weapon/storage/lockbox/medal/sci
name = "science medal box"
desc = "A locked box used to store medals to be given to members of the science department."
- req_access = list(GLOB.access_rd)
+ req_access = list(ACCESS_RD)
/obj/item/weapon/storage/lockbox/medal/sci/PopulateContents()
for(var/i in 1 to 3)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 480c348b6f..cc4bee233b 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -34,7 +34,7 @@
if(!over_object)
return
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if (istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return
// this must come before the screen objects only block, dunno why it wasn't before
diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index b2501103aa..4346051295 100644
--- a/code/game/objects/items/weapons/storage/wallets.dm
+++ b/code/game/objects/items/weapons/storage/wallets.dm
@@ -73,10 +73,10 @@
return ..()
/obj/item/weapon/storage/wallet/random/PopulateContents()
- var/item1_type = pick( /obj/item/stack/spacecash/c10,/obj/item/stack/spacecash/c100,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c20,/obj/item/stack/spacecash/c200,/obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
+ var/item1_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
var/item2_type
if(prob(50))
- item2_type = pick( /obj/item/stack/spacecash/c10,/obj/item/stack/spacecash/c100,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c20,/obj/item/stack/spacecash/c200,/obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
+ item2_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron )
spawn(2)
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index 15ac506cd6..478b966d57 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -76,7 +76,7 @@
return 1
/obj/item/weapon/tank/jetpack/suicide_act(mob/user)
- if (istype(user,/mob/living/carbon/human/))
+ if (istype(user, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = user
H.forcesay("WHAT THE FUCK IS CARBON DIOXIDE?")
H.visible_message("[user] is suffocating [user.p_them()]self with [src]! It looks like [user.p_they()] didn't read what that jetpack says!")
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index abd907aeb5..0974e60cc0 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -231,7 +231,7 @@
var/pressure = air_contents.return_pressure()
if(pressure > TANK_FRAGMENT_PRESSURE)
- if(!istype(src.loc,/obj/item/device/transfer_valve))
+ if(!istype(src.loc, /obj/item/device/transfer_valve))
message_admins("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].")
log_game("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].")
//to_chat(world, "\blue[x],[y] tank is exploding: [pressure] kPa")
@@ -246,7 +246,7 @@
//to_chat(world, "\blue Exploding Pressure: [pressure] kPa, intensity: [range]")
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5))
- if(istype(src.loc,/obj/item/device/transfer_valve))
+ if(istype(src.loc, /obj/item/device/transfer_valve))
qdel(src.loc)
else
qdel(src)
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index 3af9673114..aa624adc58 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -199,6 +199,9 @@ Frequency:
return
try_move_adjacent(created[1])
active_portal_pairs[created[1]] = created[2]
+ var/obj/effect/portal/c1 = created[1]
+ var/obj/effect/portal/c2 = created[2]
+ investigate_log("was used by [key_name(user)] at [COORD(user)] to create a portal pair with destinations [COORD(c1)] and [COORD(c2)].", INVESTIGATE_PORTAL)
add_fingerprint(user)
/obj/item/weapon/hand_tele/proc/on_portal_destroy(obj/effect/portal/P)
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 2c190d6191..385ff6cbc0 100755
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -181,6 +181,16 @@
M.appearance_flags = RESET_COLOR
. += M
+/obj/item/weapon/screwdriver/get_belt_overlay()
+ if(random_color)
+ var/mutable_appearance/body = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver")
+ var/mutable_appearance/head = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_head")
+ body.color = color
+ head.overlays += body
+ return head
+ else
+ return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state)
+
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user)
if(!istype(M))
return ..()
@@ -203,7 +213,7 @@
name = "alien screwdriver"
desc = "An ultrasonic screwdriver."
icon = 'icons/obj/abductor.dmi'
- icon_state = "screwdriver"
+ icon_state = "screwdriver_a"
item_state = "screwdriver_nuke"
usesound = 'sound/items/pshoom.ogg'
toolspeed = 0.1
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 8c97cab431..113f70825e 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -225,10 +225,10 @@
if(!proximity)
return
if(wielded) //destroys windows and grilles in one hit
- if(istype(A,/obj/structure/window))
+ if(istype(A, /obj/structure/window))
var/obj/structure/window/W = A
W.take_damage(200, BRUTE, "melee", 0)
- else if(istype(A,/obj/structure/grille))
+ else if(istype(A, /obj/structure/grille))
var/obj/structure/grille/G = A
G.take_damage(40, BRUTE, "melee", 0)
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index f86ad818de..0f8a8e1b14 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -133,7 +133,7 @@
blacklisted_turfs = typecacheof(list(
/turf/open/space,
/turf/open/chasm,
- /turf/open/floor/plating/lava))
+ /turf/open/lava))
last_expand = world.time + rand(growth_cooldown_low, growth_cooldown_high)
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index 1eb67449da..d4ce88c948 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -3,7 +3,7 @@
desc = "A bar sign with no writing on it"
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
- req_access = list(GLOB.access_bar)
+ req_access = list(ACCESS_BAR)
max_integrity = 500
integrity_failure = 250
armor = list(melee = 20, bullet = 20, laser = 20, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
@@ -119,10 +119,10 @@
to_chat(user, "Nothing interesting happens!")
return
emagged = TRUE
- req_access = list(GLOB.access_syndicate)
to_chat(user, "You emag the barsign. Takeover in progress...")
sleep(100) //10 seconds
set_sign(new /datum/barsign/hiddensigns/syndibarsign)
+ req_access = list(ACCESS_SYNDICATE)
/obj/structure/sign/barsign/proc/pick_sign()
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index 19a4439720..f512f6ba4f 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -49,7 +49,7 @@
var/foldabletype = /obj/item/roller
/obj/structure/bed/roller/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/roller/robo))
+ if(istype(W, /obj/item/roller/robo))
var/obj/item/roller/robo/R = W
if(R.loaded)
to_chat(user, "You already have a roller bed docked!")
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index c88d1f763c..27335719c7 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -245,7 +245,7 @@
/obj/item/chair/proc/plant(mob/user)
for(var/obj/A in get_turf(loc))
- if(istype(A,/obj/structure/chair))
+ if(istype(A, /obj/structure/chair))
to_chat(user, "There is already a chair here.")
return
if(A.density && !(A.flags & ON_BORDER))
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
index d69ef8c6f1..9bdd132c20 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/bar
name = "booze storage"
- req_access = list(GLOB.access_bar)
+ req_access = list(ACCESS_BAR)
icon_state = "cabinet"
resistance_flags = FLAMMABLE
max_integrity = 70
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
index 00822f26c1..d13a7350c3 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/quartermaster
name = "\proper quartermaster's locker"
- req_access = list(GLOB.access_qm)
+ req_access = list(ACCESS_QM)
icon_state = "qm"
/obj/structure/closet/secure_closet/quartermaster/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 8f5cc9a0fa..7fb9e36df2 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/engineering_chief
name = "\proper chief engineer's locker"
- req_access = list(GLOB.access_ce)
+ req_access = list(ACCESS_CE)
icon_state = "ce"
/obj/structure/closet/secure_closet/engineering_chief/PopulateContents()
@@ -30,7 +30,7 @@
/obj/structure/closet/secure_closet/engineering_electrical
name = "electrical supplies locker"
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
icon_state = "eng"
icon_door = "eng_elec"
@@ -49,7 +49,7 @@
/obj/structure/closet/secure_closet/engineering_welding
name = "welding supplies locker"
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
icon_state = "eng"
icon_door = "eng_weld"
@@ -62,7 +62,7 @@
/obj/structure/closet/secure_closet/engineering_personal
name = "engineer's locker"
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
icon_state = "eng_secure"
/obj/structure/closet/secure_closet/engineering_personal/PopulateContents()
@@ -78,7 +78,7 @@
/obj/structure/closet/secure_closet/atmospherics
name = "\proper atmospheric technician's locker"
- req_access = list(GLOB.access_atmospherics)
+ req_access = list(ACCESS_ATMOSPHERICS)
icon_state = "atmos"
/obj/structure/closet/secure_closet/atmospherics/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index 7c967c5be6..b1f0e7048f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -3,7 +3,7 @@
/obj/structure/closet/secure_closet/freezer/kitchen
name = "kitchen Cabinet"
- req_access = list(GLOB.access_kitchen)
+ req_access = list(ACCESS_KITCHEN)
/obj/structure/closet/secure_closet/freezer/kitchen/PopulateContents()
..()
@@ -51,7 +51,7 @@
/obj/structure/closet/secure_closet/freezer/money
name = "freezer"
desc = "This contains cold hard cash."
- req_access = list(GLOB.access_heads_vault)
+ req_access = list(ACCESS_HEADS_VAULT)
/obj/structure/closet/secure_closet/freezer/money/PopulateContents()
..()
@@ -65,7 +65,7 @@
/obj/structure/closet/secure_closet/freezer/cream_pie
name = "cream pie closet"
desc = "Contains pies filled with cream and/or custard, you sickos."
- req_access = list(GLOB.access_theatre)
+ req_access = list(ACCESS_THEATRE)
/obj/structure/closet/secure_closet/freezer/pie/PopulateContents()
..()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
index ed0e5588bf..64b6bc9f2f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/hydroponics
name = "botanist's locker"
- req_access = list(GLOB.access_hydroponics)
+ req_access = list(ACCESS_HYDROPONICS)
icon_state = "hydro"
/obj/structure/closet/secure_closet/hydroponics/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 6a07f57244..7878abe6e2 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -2,7 +2,7 @@
name = "medicine closet"
desc = "Filled to the brim with medical junk."
icon_state = "med"
- req_access = list(GLOB.access_medical)
+ req_access = list(ACCESS_MEDICAL)
/obj/structure/closet/secure_closet/medical1/PopulateContents()
..()
@@ -24,7 +24,7 @@
/obj/structure/closet/secure_closet/medical2
name = "anesthetic closet"
desc = "Used to knock people out."
- req_access = list(GLOB.access_surgery)
+ req_access = list(ACCESS_SURGERY)
/obj/structure/closet/secure_closet/medical2/PopulateContents()
..()
@@ -35,7 +35,7 @@
/obj/structure/closet/secure_closet/medical3
name = "medical doctor's locker"
- req_access = list(GLOB.access_surgery)
+ req_access = list(ACCESS_SURGERY)
icon_state = "med_secure"
/obj/structure/closet/secure_closet/medical3/PopulateContents()
@@ -49,7 +49,7 @@
/obj/structure/closet/secure_closet/CMO
name = "\proper chief medical officer's locker"
- req_access = list(GLOB.access_cmo)
+ req_access = list(ACCESS_CMO)
icon_state = "cmo"
/obj/structure/closet/secure_closet/CMO/PopulateContents()
@@ -74,7 +74,7 @@
/obj/structure/closet/secure_closet/animal
name = "animal control"
- req_access = list(GLOB.access_surgery)
+ req_access = list(ACCESS_SURGERY)
/obj/structure/closet/secure_closet/animal/PopulateContents()
..()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm
index 632dbd30e3..b934e169ee 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm
@@ -1,7 +1,7 @@
/obj/structure/closet/secure_closet/ertCom
name = "commander's closet"
desc = "Emergency Response Team equipment locker."
- req_access = list(GLOB.access_cent_captain)
+ req_access = list(ACCESS_CENT_CAPTAIN)
icon_state = "cap"
/obj/structure/closet/secure_closet/ertCom/PopulateContents()
@@ -22,7 +22,7 @@
/obj/structure/closet/secure_closet/ertSec
name = "security closet"
desc = "Emergency Response Team equipment locker."
- req_access = list(GLOB.access_cent_specops)
+ req_access = list(ACCESS_CENT_SPECOPS)
icon_state = "hos"
/obj/structure/closet/secure_closet/ertSec/PopulateContents()
@@ -36,7 +36,7 @@
/obj/structure/closet/secure_closet/ertMed
name = "medical closet"
desc = "Emergency Response Team equipment locker."
- req_access = list(GLOB.access_cent_medical)
+ req_access = list(ACCESS_CENT_MEDICAL)
icon_state = "cmo"
/obj/structure/closet/secure_closet/ertMed/PopulateContents()
@@ -52,7 +52,7 @@
/obj/structure/closet/secure_closet/ertEngi
name = "engineer closet"
desc = "Emergency Response Team equipment locker."
- req_access = list(GLOB.access_cent_storage)
+ req_access = list(ACCESS_CENT_STORAGE)
icon_state = "ce"
/obj/structure/closet/secure_closet/ertEngi/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
index 29cf44ce62..b425c23f09 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
@@ -1,7 +1,7 @@
/obj/structure/closet/secure_closet/personal
desc = "It's a secure locker for personnel. The first card swiped gains control."
name = "personal closet"
- req_access = list(GLOB.access_all_personal_lockers)
+ req_access = list(ACCESS_ALL_PERSONAL_LOCKERS)
var/registered_name = null
/obj/structure/closet/secure_closet/personal/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 622f765564..d0cba3bf5e 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/RD
name = "\proper research director's locker"
- req_access = list(GLOB.access_rd)
+ req_access = list(ACCESS_RD)
icon_state = "rd"
/obj/structure/closet/secure_closet/RD/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 9102a8e019..7edaf5ebe3 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -1,283 +1,299 @@
-/obj/structure/closet/secure_closet/captains
- name = "\proper captain's locker"
- req_access = list(GLOB.access_captain)
- icon_state = "cap"
-
-/obj/structure/closet/secure_closet/captains/PopulateContents()
- ..()
- new /obj/item/clothing/suit/hooded/wintercoat/captain(src)
- if(prob(50))
- new /obj/item/weapon/storage/backpack/captain(src)
- else
- new /obj/item/weapon/storage/backpack/satchel/cap(src)
- new /obj/item/clothing/neck/cloak/cap(src)
- new /obj/item/weapon/storage/backpack/duffelbag/captain(src)
- new /obj/item/clothing/head/crown/fancy(src)
- new /obj/item/clothing/suit/captunic(src)
- new /obj/item/clothing/under/captainparade(src)
- new /obj/item/clothing/head/caphat/parade(src)
- new /obj/item/clothing/under/rank/captain(src)
- new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src)
- new /obj/item/weapon/cartridge/captain(src)
- new /obj/item/clothing/shoes/sneakers/brown(src)
- new /obj/item/weapon/storage/box/silver_ids(src)
- new /obj/item/device/radio/headset/heads/captain/alt(src)
- new /obj/item/device/radio/headset/heads/captain(src)
- new /obj/item/clothing/glasses/sunglasses/gar/supergar(src)
- new /obj/item/clothing/gloves/color/captain(src)
- new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
- new /obj/item/weapon/storage/belt/sabre(src)
- new /obj/item/weapon/gun/energy/e_gun(src)
- new /obj/item/weapon/door_remote/captain(src)
-
-/obj/structure/closet/secure_closet/hop
- name = "\proper head of personnel's locker"
- req_access = list(GLOB.access_hop)
- icon_state = "hop"
-
-/obj/structure/closet/secure_closet/hop/PopulateContents()
- ..()
- new /obj/item/clothing/neck/cloak/hop(src)
- new /obj/item/clothing/under/rank/head_of_personnel(src)
- new /obj/item/clothing/head/hopcap(src)
- new /obj/item/weapon/cartridge/hop(src)
- new /obj/item/device/radio/headset/heads/hop(src)
- new /obj/item/clothing/shoes/sneakers/brown(src)
- new /obj/item/weapon/storage/box/ids(src)
- new /obj/item/weapon/storage/box/ids(src)
- new /obj/item/device/megaphone/command(src)
- new /obj/item/clothing/suit/armor/vest/alt(src)
- new /obj/item/device/assembly/flash/handheld(src)
- new /obj/item/clothing/glasses/sunglasses(src)
- new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
- new /obj/item/weapon/gun/energy/e_gun(src)
- new /obj/item/clothing/neck/petcollar(src)
- new /obj/item/weapon/door_remote/civillian(src)
-
-/obj/structure/closet/secure_closet/hos
- name = "\proper head of security's locker"
- req_access = list(GLOB.access_hos)
- icon_state = "hos"
-
-/obj/structure/closet/secure_closet/hos/PopulateContents()
- ..()
- new /obj/item/clothing/neck/cloak/hos(src)
- new /obj/item/weapon/cartridge/hos(src)
- new /obj/item/device/radio/headset/heads/hos(src)
- new /obj/item/clothing/under/hosparadefem(src)
- new /obj/item/clothing/under/hosparademale(src)
- new /obj/item/clothing/suit/armor/vest/leather(src)
- new /obj/item/clothing/suit/armor/hos(src)
- new /obj/item/clothing/under/rank/head_of_security/alt(src)
- new /obj/item/clothing/head/HoS(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src)
- new /obj/item/clothing/under/rank/head_of_security/grey(src)
- new /obj/item/weapon/storage/lockbox/medal/sec(src)
- new /obj/item/device/megaphone/sec(src)
- new /obj/item/weapon/holosign_creator/security(src)
- new /obj/item/weapon/storage/lockbox/loyalty(src)
- new /obj/item/clothing/mask/gas/sechailer/swat(src)
- new /obj/item/weapon/storage/box/flashbangs(src)
- new /obj/item/weapon/shield/riot/tele(src)
- new /obj/item/weapon/storage/belt/security/full(src)
- new /obj/item/weapon/gun/energy/e_gun/hos(src)
- new /obj/item/device/flashlight/seclite(src)
- new /obj/item/weapon/pinpointer(src)
-
-/obj/structure/closet/secure_closet/warden
- name = "\proper warden's locker"
- req_access = list(GLOB.access_armory)
- icon_state = "warden"
-
-/obj/structure/closet/secure_closet/warden/PopulateContents()
- ..()
- new /obj/item/device/radio/headset/headset_sec(src)
- new /obj/item/clothing/suit/armor/vest/warden(src)
- new /obj/item/clothing/head/warden(src)
- new /obj/item/clothing/head/beret/sec/navywarden(src)
- new /obj/item/clothing/suit/armor/vest/warden/alt(src)
- new /obj/item/clothing/under/rank/warden/navyblue(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
- new /obj/item/weapon/holosign_creator/security(src)
- new /obj/item/clothing/mask/gas/sechailer(src)
- new /obj/item/weapon/storage/box/zipties(src)
- new /obj/item/weapon/storage/box/flashbangs(src)
- new /obj/item/weapon/storage/belt/security/full(src)
- new /obj/item/device/flashlight/seclite(src)
- new /obj/item/clothing/gloves/krav_maga/sec(src)
- new /obj/item/weapon/door_remote/head_of_security(src)
- new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src)
-
-/obj/structure/closet/secure_closet/security
- name = "security officer's locker"
- req_access = list(GLOB.access_security)
- icon_state = "sec"
-
-/obj/structure/closet/secure_closet/security/PopulateContents()
- ..()
- new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/clothing/head/helmet/sec(src)
- new /obj/item/device/radio/headset/headset_sec(src)
- new /obj/item/device/radio/headset/headset_sec/alt(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
- new /obj/item/device/flashlight/seclite(src)
-
-/obj/structure/closet/secure_closet/security/sec
-
-/obj/structure/closet/secure_closet/security/sec/PopulateContents()
- ..()
- new /obj/item/weapon/storage/belt/security/full(src)
-
-/obj/structure/closet/secure_closet/security/cargo
-
-/obj/structure/closet/secure_closet/security/cargo/PopulateContents()
- ..()
- new /obj/item/clothing/accessory/armband/cargo(src)
- new /obj/item/device/encryptionkey/headset_cargo(src)
-
-/obj/structure/closet/secure_closet/security/engine
-
-/obj/structure/closet/secure_closet/security/engine/PopulateContents()
- ..()
- new /obj/item/clothing/accessory/armband/engine(src)
- new /obj/item/device/encryptionkey/headset_eng(src)
-
-/obj/structure/closet/secure_closet/security/science
-
-/obj/structure/closet/secure_closet/security/science/PopulateContents()
- ..()
- new /obj/item/clothing/accessory/armband/science(src)
- new /obj/item/device/encryptionkey/headset_sci(src)
-
-/obj/structure/closet/secure_closet/security/med
-
-/obj/structure/closet/secure_closet/security/med/PopulateContents()
- ..()
- new /obj/item/clothing/accessory/armband/medblue(src)
- new /obj/item/device/encryptionkey/headset_med(src)
-
-/obj/structure/closet/secure_closet/detective
- name = "\proper detective's cabinet"
- req_access = list(GLOB.access_forensics_lockers)
- icon_state = "cabinet"
- resistance_flags = FLAMMABLE
- max_integrity = 70
-
-/obj/structure/closet/secure_closet/detective/PopulateContents()
- ..()
- new /obj/item/clothing/under/rank/det(src)
- new /obj/item/clothing/suit/det_suit(src)
- new /obj/item/clothing/head/fedora/det_hat(src)
- new /obj/item/clothing/gloves/color/black(src)
- new /obj/item/clothing/under/rank/det/grey(src)
- new /obj/item/clothing/accessory/waistcoat(src)
- new /obj/item/clothing/suit/det_suit/grey(src)
- new /obj/item/clothing/head/fedora(src)
- new /obj/item/clothing/shoes/laceup(src)
- new /obj/item/weapon/storage/box/evidence(src)
- new /obj/item/device/radio/headset/headset_sec(src)
- new /obj/item/device/detective_scanner(src)
- new /obj/item/device/flashlight/seclite(src)
- new /obj/item/weapon/holosign_creator/security(src)
- new /obj/item/weapon/reagent_containers/spray/pepper(src)
- new /obj/item/clothing/suit/armor/vest/det_suit(src)
- new /obj/item/weapon/storage/belt/holster/full(src)
-
-/obj/structure/closet/secure_closet/injection
- name = "lethal injections"
- req_access = list(GLOB.access_hos)
-
-/obj/structure/closet/secure_closet/injection/PopulateContents()
- ..()
- for(var/i in 1 to 5)
- new /obj/item/weapon/reagent_containers/syringe/lethal/execution(src)
-
-/obj/structure/closet/secure_closet/brig
- name = "brig locker"
- req_access = list(GLOB.access_brig)
+/obj/structure/closet/secure_closet/captains
+ name = "\proper captain's locker"
+ req_access = list(ACCESS_CAPTAIN)
+ icon_state = "cap"
+
+/obj/structure/closet/secure_closet/captains/PopulateContents()
+ ..()
+ new /obj/item/clothing/suit/hooded/wintercoat/captain(src)
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/captain(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel/cap(src)
+ new /obj/item/clothing/neck/cloak/cap(src)
+ new /obj/item/weapon/storage/backpack/duffelbag/captain(src)
+ new /obj/item/clothing/head/crown/fancy(src)
+ new /obj/item/clothing/suit/captunic(src)
+ new /obj/item/clothing/under/captainparade(src)
+ new /obj/item/clothing/head/caphat/parade(src)
+ new /obj/item/clothing/under/rank/captain(src)
+ new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src)
+ new /obj/item/weapon/cartridge/captain(src)
+ new /obj/item/clothing/shoes/sneakers/brown(src)
+ new /obj/item/weapon/storage/box/silver_ids(src)
+ new /obj/item/device/radio/headset/heads/captain/alt(src)
+ new /obj/item/device/radio/headset/heads/captain(src)
+ new /obj/item/clothing/glasses/sunglasses/gar/supergar(src)
+ new /obj/item/clothing/gloves/color/captain(src)
+ new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
+ new /obj/item/weapon/storage/belt/sabre(src)
+ new /obj/item/weapon/gun/energy/e_gun(src)
+ new /obj/item/weapon/door_remote/captain(src)
+
+/obj/structure/closet/secure_closet/hop
+ name = "\proper head of personnel's locker"
+ req_access = list(ACCESS_HOP)
+ icon_state = "hop"
+
+/obj/structure/closet/secure_closet/hop/PopulateContents()
+ ..()
+ new /obj/item/clothing/neck/cloak/hop(src)
+ new /obj/item/clothing/under/rank/head_of_personnel(src)
+ new /obj/item/clothing/head/hopcap(src)
+ new /obj/item/weapon/cartridge/hop(src)
+ new /obj/item/device/radio/headset/heads/hop(src)
+ new /obj/item/clothing/shoes/sneakers/brown(src)
+ new /obj/item/weapon/storage/box/ids(src)
+ new /obj/item/weapon/storage/box/ids(src)
+ new /obj/item/device/megaphone/command(src)
+ new /obj/item/clothing/suit/armor/vest/alt(src)
+ new /obj/item/device/assembly/flash/handheld(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
+ new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
+ new /obj/item/weapon/gun/energy/e_gun(src)
+ new /obj/item/clothing/neck/petcollar(src)
+ new /obj/item/weapon/door_remote/civillian(src)
+
+/obj/structure/closet/secure_closet/hos
+ name = "\proper head of security's locker"
+ req_access = list(ACCESS_HOS)
+ icon_state = "hos"
+
+/obj/structure/closet/secure_closet/hos/PopulateContents()
+ ..()
+ new /obj/item/clothing/neck/cloak/hos(src)
+ new /obj/item/weapon/cartridge/hos(src)
+ new /obj/item/device/radio/headset/heads/hos(src)
+ new /obj/item/clothing/under/hosparadefem(src)
+ new /obj/item/clothing/under/hosparademale(src)
+ new /obj/item/clothing/suit/armor/vest/leather(src)
+ new /obj/item/clothing/suit/armor/hos(src)
+ new /obj/item/clothing/under/rank/head_of_security/alt(src)
+ new /obj/item/clothing/head/HoS(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src)
+ new /obj/item/clothing/under/rank/head_of_security/grey(src)
+ new /obj/item/weapon/storage/lockbox/medal/sec(src)
+ new /obj/item/device/megaphone/sec(src)
+ new /obj/item/weapon/holosign_creator/security(src)
+ new /obj/item/weapon/storage/lockbox/loyalty(src)
+ new /obj/item/clothing/mask/gas/sechailer/swat(src)
+ new /obj/item/weapon/storage/box/flashbangs(src)
+ new /obj/item/weapon/shield/riot/tele(src)
+ new /obj/item/weapon/storage/belt/security/full(src)
+ new /obj/item/weapon/gun/energy/e_gun/hos(src)
+ new /obj/item/device/flashlight/seclite(src)
+ new /obj/item/weapon/pinpointer(src)
+
+/obj/structure/closet/secure_closet/warden
+ name = "\proper warden's locker"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "warden"
+
+/obj/structure/closet/secure_closet/warden/PopulateContents()
+ ..()
+ new /obj/item/device/radio/headset/headset_sec(src)
+ new /obj/item/clothing/suit/armor/vest/warden(src)
+ new /obj/item/clothing/head/warden(src)
+ new /obj/item/clothing/head/beret/sec/navywarden(src)
+ new /obj/item/clothing/suit/armor/vest/warden/alt(src)
+ new /obj/item/clothing/under/rank/warden/navyblue(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/weapon/holosign_creator/security(src)
+ new /obj/item/clothing/mask/gas/sechailer(src)
+ new /obj/item/weapon/storage/box/zipties(src)
+ new /obj/item/weapon/storage/box/flashbangs(src)
+ new /obj/item/weapon/storage/belt/security/full(src)
+ new /obj/item/device/flashlight/seclite(src)
+ new /obj/item/clothing/gloves/krav_maga/sec(src)
+ new /obj/item/weapon/door_remote/head_of_security(src)
+ new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src)
+
+/obj/structure/closet/secure_closet/security
+ name = "security officer's locker"
+ req_access = list(ACCESS_SECURITY)
+ icon_state = "sec"
+
+/obj/structure/closet/secure_closet/security/PopulateContents()
+ ..()
+ new /obj/item/clothing/suit/armor/vest(src)
+ new /obj/item/clothing/head/helmet/sec(src)
+ new /obj/item/device/radio/headset/headset_sec(src)
+ new /obj/item/device/radio/headset/headset_sec/alt(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/device/flashlight/seclite(src)
+
+/obj/structure/closet/secure_closet/security/sec
+
+/obj/structure/closet/secure_closet/security/sec/PopulateContents()
+ ..()
+ new /obj/item/weapon/storage/belt/security/full(src)
+
+/obj/structure/closet/secure_closet/security/cargo
+
+/obj/structure/closet/secure_closet/security/cargo/PopulateContents()
+ ..()
+ new /obj/item/clothing/accessory/armband/cargo(src)
+ new /obj/item/device/encryptionkey/headset_cargo(src)
+
+/obj/structure/closet/secure_closet/security/engine
+
+/obj/structure/closet/secure_closet/security/engine/PopulateContents()
+ ..()
+ new /obj/item/clothing/accessory/armband/engine(src)
+ new /obj/item/device/encryptionkey/headset_eng(src)
+
+/obj/structure/closet/secure_closet/security/science
+
+/obj/structure/closet/secure_closet/security/science/PopulateContents()
+ ..()
+ new /obj/item/clothing/accessory/armband/science(src)
+ new /obj/item/device/encryptionkey/headset_sci(src)
+
+/obj/structure/closet/secure_closet/security/med
+
+/obj/structure/closet/secure_closet/security/med/PopulateContents()
+ ..()
+ new /obj/item/clothing/accessory/armband/medblue(src)
+ new /obj/item/device/encryptionkey/headset_med(src)
+
+/obj/structure/closet/secure_closet/detective
+ name = "\proper detective's cabinet"
+ req_access = list(ACCESS_FORENSICS_LOCKERS)
+ icon_state = "cabinet"
+ resistance_flags = FLAMMABLE
+ max_integrity = 70
+
+/obj/structure/closet/secure_closet/detective/PopulateContents()
+ ..()
+ new /obj/item/clothing/under/rank/det(src)
+ new /obj/item/clothing/suit/det_suit(src)
+ new /obj/item/clothing/head/fedora/det_hat(src)
+ new /obj/item/clothing/gloves/color/black(src)
+ new /obj/item/clothing/under/rank/det/grey(src)
+ new /obj/item/clothing/accessory/waistcoat(src)
+ new /obj/item/clothing/suit/det_suit/grey(src)
+ new /obj/item/clothing/head/fedora(src)
+ new /obj/item/clothing/shoes/laceup(src)
+ new /obj/item/weapon/storage/box/evidence(src)
+ new /obj/item/device/radio/headset/headset_sec(src)
+ new /obj/item/device/detective_scanner(src)
+ new /obj/item/device/flashlight/seclite(src)
+ new /obj/item/weapon/holosign_creator/security(src)
+ new /obj/item/weapon/reagent_containers/spray/pepper(src)
+ new /obj/item/clothing/suit/armor/vest/det_suit(src)
+ new /obj/item/weapon/storage/belt/holster/full(src)
+
+/obj/structure/closet/secure_closet/injection
+ name = "lethal injections"
+ req_access = list(ACCESS_HOS)
+
+/obj/structure/closet/secure_closet/injection/PopulateContents()
+ ..()
+ for(var/i in 1 to 5)
+ new /obj/item/weapon/reagent_containers/syringe/lethal/execution(src)
+
+/obj/structure/closet/secure_closet/brig
+ name = "brig locker"
+ req_access = list(ACCESS_BRIG)
anchored = TRUE
- var/id = null
-
-/obj/structure/closet/secure_closet/brig/PopulateContents()
- ..()
- new /obj/item/clothing/under/rank/prisoner( src )
- new /obj/item/clothing/shoes/sneakers/orange( src )
-
-/obj/structure/closet/secure_closet/courtroom
- name = "courtroom locker"
- req_access = list(GLOB.access_court)
-
-/obj/structure/closet/secure_closet/courtroom/PopulateContents()
- ..()
- new /obj/item/clothing/shoes/sneakers/brown(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/paper/Court (src)
- new /obj/item/weapon/pen (src)
- new /obj/item/clothing/suit/judgerobe (src)
- new /obj/item/clothing/head/powdered_wig (src)
- new /obj/item/weapon/storage/briefcase(src)
-
-/obj/structure/closet/secure_closet/armory1
- name = "armory armor locker"
- req_access = list(GLOB.access_armory)
- icon_state = "armory"
-
-/obj/structure/closet/secure_closet/armory1/PopulateContents()
- ..()
- new /obj/item/clothing/suit/armor/laserproof(src)
- for(var/i in 1 to 3)
- new /obj/item/clothing/suit/armor/riot(src)
- for(var/i in 1 to 3)
- new /obj/item/clothing/head/helmet/riot(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/shield/riot(src)
-
-/obj/structure/closet/secure_closet/armory2
- name = "armory ballistics locker"
- req_access = list(GLOB.access_armory)
- icon_state = "armory"
-
-/obj/structure/closet/secure_closet/armory2/PopulateContents()
- ..()
- new /obj/item/weapon/storage/box/firingpins(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/storage/box/rubbershot(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/gun/ballistic/shotgun/riot(src)
-
-/obj/structure/closet/secure_closet/armory3
- name = "armory energy gun locker"
- req_access = list(GLOB.access_armory)
- icon_state = "armory"
-
-/obj/structure/closet/secure_closet/armory3/PopulateContents()
- ..()
- new /obj/item/weapon/storage/box/firingpins(src)
- new /obj/item/weapon/gun/energy/ionrifle(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/gun/energy/e_gun(src)
- for(var/i in 1 to 3)
- new /obj/item/weapon/gun/energy/laser(src)
-
-/obj/structure/closet/secure_closet/tac
- name = "armory tac locker"
- req_access = list(GLOB.access_armory)
- icon_state = "tac"
-
-/obj/structure/closet/secure_closet/tac/PopulateContents()
- ..()
- new /obj/item/weapon/gun/ballistic/automatic/wt550(src)
- new /obj/item/clothing/head/helmet/alt(src)
- new /obj/item/clothing/mask/gas/sechailer(src)
- new /obj/item/clothing/suit/armor/bulletproof(src)
-
-/obj/structure/closet/secure_closet/lethalshots
- name = "shotgun lethal rounds"
- req_access = list(GLOB.access_armory)
- icon_state = "tac"
-
-/obj/structure/closet/secure_closet/lethalshots/PopulateContents()
- ..()
- for(var/i in 1 to 3)
- new /obj/item/weapon/storage/box/lethalshot(src)
+ var/id = null
+
+/obj/structure/closet/secure_closet/evidence
+ anchored = TRUE
+ name = "Secure Evidence Closet"
+ req_access_txt = "0"
+ req_one_access_txt = list(ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS)
+
+/obj/structure/closet/secure_closet/brig/PopulateContents()
+ ..()
+ new /obj/item/clothing/under/rank/prisoner( src )
+ new /obj/item/clothing/shoes/sneakers/orange( src )
+
+/obj/structure/closet/secure_closet/courtroom
+ name = "courtroom locker"
+ req_access = list(ACCESS_COURT)
+
+/obj/structure/closet/secure_closet/courtroom/PopulateContents()
+ ..()
+ new /obj/item/clothing/shoes/sneakers/brown(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/paper/Court (src)
+ new /obj/item/weapon/pen (src)
+ new /obj/item/clothing/suit/judgerobe (src)
+ new /obj/item/clothing/head/powdered_wig (src)
+ new /obj/item/weapon/storage/briefcase(src)
+
+/obj/structure/closet/secure_closet/contraband/armory
+ anchored = TRUE
+ name = "Contraband Locker"
+ req_access = list(ACCESS_ARMORY)
+
+/obj/structure/closet/secure_closet/contraband/heads
+ anchored = TRUE
+ name = "Contraband Locker"
+ req_access = list(ACCESS_HEADS)
+
+/obj/structure/closet/secure_closet/armory1
+ name = "armory armor locker"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "armory"
+
+/obj/structure/closet/secure_closet/armory1/PopulateContents()
+ ..()
+ new /obj/item/clothing/suit/armor/laserproof(src)
+ for(var/i in 1 to 3)
+ new /obj/item/clothing/suit/armor/riot(src)
+ for(var/i in 1 to 3)
+ new /obj/item/clothing/head/helmet/riot(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/shield/riot(src)
+
+/obj/structure/closet/secure_closet/armory2
+ name = "armory ballistics locker"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "armory"
+
+/obj/structure/closet/secure_closet/armory2/PopulateContents()
+ ..()
+ new /obj/item/weapon/storage/box/firingpins(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/storage/box/rubbershot(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/gun/ballistic/shotgun/riot(src)
+
+/obj/structure/closet/secure_closet/armory3
+ name = "armory energy gun locker"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "armory"
+
+/obj/structure/closet/secure_closet/armory3/PopulateContents()
+ ..()
+ new /obj/item/weapon/storage/box/firingpins(src)
+ new /obj/item/weapon/gun/energy/ionrifle(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/gun/energy/e_gun(src)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/gun/energy/laser(src)
+
+/obj/structure/closet/secure_closet/tac
+ name = "armory tac locker"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "tac"
+
+/obj/structure/closet/secure_closet/tac/PopulateContents()
+ ..()
+ new /obj/item/weapon/gun/ballistic/automatic/wt550(src)
+ new /obj/item/clothing/head/helmet/alt(src)
+ new /obj/item/clothing/mask/gas/sechailer(src)
+ new /obj/item/clothing/suit/armor/bulletproof(src)
+
+/obj/structure/closet/secure_closet/lethalshots
+ name = "shotgun lethal rounds"
+ req_access = list(ACCESS_ARMORY)
+ icon_state = "tac"
+
+/obj/structure/closet/secure_closet/lethalshots/PopulateContents()
+ ..()
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/storage/box/lethalshot(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm.rej b/code/game/objects/structures/crates_lockers/closets/secure/security.dm.rej
new file mode 100644
index 0000000000..2fe11f47d0
--- /dev/null
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm.rej
@@ -0,0 +1,30 @@
+diff a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm (rejected hunks)
+@@ -203,7 +203,7 @@
+ anchored = TRUE
+ name = "Secure Evidence Closet"
+ req_access_txt = "0"
+- req_one_access_txt = list(GLOB.access_armory, GLOB.access_forensics_lockers)
++ req_one_access_txt = list(ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS)
+
+ /obj/structure/closet/secure_closet/brig/PopulateContents()
+ ..()
+@@ -227,16 +227,16 @@
+ /obj/structure/closet/secure_closet/contraband/armory
+ anchored = TRUE
+ name = "Contraband Locker"
+- req_access = list(GLOB.access_armory)
++ req_access = list(ACCESS_ARMORY)
+
+ /obj/structure/closet/secure_closet/contraband/heads
+ anchored = TRUE
+ name = "Contraband Locker"
+- req_access = list(GLOB.access_heads)
++ req_access = list(ACCESS_HEADS)
+
+ /obj/structure/closet/secure_closet/armory1
+ name = "armory armor locker"
+- req_access = list(GLOB.access_armory)
++ req_access = list(ACCESS_ARMORY)
+ icon_state = "armory"
+
+ /obj/structure/closet/secure_closet/armory1/PopulateContents()
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index ac08947e9b..494b35953d 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -132,7 +132,7 @@
else
to_chat(user, "[src] is already in good condition!")
return
- else if(!alert && istype(W,/obj/item/weapon/crowbar) && openable) //Only applies to the lab cage and player made display cases
+ else if(!alert && istype(W, /obj/item/weapon/crowbar) && openable) //Only applies to the lab cage and player made display cases
if(broken)
if(showpiece)
to_chat(user, "Remove the displayed object first.")
@@ -239,13 +239,13 @@
/obj/structure/displaycase/captain
alert = 1
start_showpiece_type = /obj/item/weapon/gun/energy/laser/captain
- req_access = list(GLOB.access_cent_specops)
+ req_access = list(ACCESS_CENT_SPECOPS)
/obj/structure/displaycase/labcage
name = "lab cage"
desc = "A glass lab container for storing interesting creatures."
start_showpiece_type = /obj/item/clothing/mask/facehugger/lamarr
- req_access = list(GLOB.access_rd)
+ req_access = list(ACCESS_RD)
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index 064d056cf1..24e70059af 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -22,7 +22,7 @@
return ..()
/obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params)
- if(iscyborg(user) || istype(I,/obj/item/device/multitool))
+ if(iscyborg(user) || istype(I, /obj/item/device/multitool))
toggle_lock(user)
else if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == INTENT_HELP && !broken)
var/obj/item/weapon/weldingtool/WT = I
diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm
index f98e24670d..388e140fe5 100644
--- a/code/game/objects/structures/fireplace.dm
+++ b/code/game/objects/structures/fireplace.dm
@@ -38,7 +38,7 @@
return TRUE
/obj/structure/fireplace/attackby(obj/item/T, mob/user)
- if(istype(T,/obj/item/stack/sheet/mineral/wood))
+ if(istype(T, /obj/item/stack/sheet/mineral/wood))
var/obj/item/stack/sheet/mineral/wood/wood = T
var/space_remaining = MAXIMUM_BURN_TIMER - burn_time_remaining()
var/space_for_logs = round(space_remaining / LOG_BURN_TIMER)
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 1b62fc69b9..35abd49851 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -390,7 +390,7 @@
death = FALSE
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper_s"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/syndicate_empty
assignedrole = "Space Syndicate" //I know this is really dumb, but Syndicate operative is nuke ops
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index f152634e38..ed222445af 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -114,7 +114,7 @@
to_chat(user, "There is already a false wall present!")
return
- if(istype(W,/obj/item/stack/rods))
+ if(istype(W, /obj/item/stack/rods))
var/obj/item/stack/rods/S = W
if(state == GIRDER_DISPLACED)
if(S.get_amount() < 2)
@@ -145,11 +145,11 @@
qdel(src)
return
- if(!istype(W,/obj/item/stack/sheet))
+ if(!istype(W, /obj/item/stack/sheet))
return
var/obj/item/stack/sheet/S = W
- if(istype(S,/obj/item/stack/sheet/metal))
+ if(istype(S, /obj/item/stack/sheet/metal))
if(state == GIRDER_DISPLACED)
if(S.get_amount() < 2)
to_chat(user, "You need two sheets of metal to create a false wall!")
@@ -179,7 +179,7 @@
qdel(src)
return
- if(istype(S,/obj/item/stack/sheet/plasteel))
+ if(istype(S, /obj/item/stack/sheet/plasteel))
if(state == GIRDER_DISPLACED)
if(S.get_amount() < 2)
to_chat(user, "You need at least two sheets to create a false wall!")
@@ -282,7 +282,7 @@
/obj/structure/girder/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
- var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
+ var/remains = pick(/obj/item/stack/rods, /obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 8d938c536c..b64a6a0aeb 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -122,7 +122,7 @@
icon_state = initial_state
/obj/structure/mineral_door/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/pickaxe))
+ if(istype(W, /obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/digTool = W
to_chat(user, "You start digging the [name]...")
if(do_after(user,digTool.digspeed*(1+round(max_integrity*0.01)), target = src) && src)
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
index 742af92489..1331a5aeea 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -1,4 +1,5 @@
+#define MUSICIAN_HEARCHECK_MINDELAY 4
#define MUSIC_MAXLINES 300
#define MUSIC_MAXLINECHARS 50
@@ -16,6 +17,8 @@
var/instrumentDir = "piano" // the folder with the sounds
var/instrumentExt = "ogg" // the file extension
var/obj/instrumentObj = null // the associated obj playing the sound
+ var/last_hearcheck = 0
+ var/list/hearing_mobs
/datum/song/New(dir, obj, ext = "ogg")
tempo = sanitize_tempo(tempo)
@@ -61,10 +64,18 @@
return
// and play
var/turf/source = get_turf(instrumentObj)
- for(var/mob/M in get_hearers_in_view(15, source))
- if(!M.client || !(M.client.prefs.toggles & SOUND_INSTRUMENTS))
- continue
- M.playsound_local(source, soundfile, 100, falloff = 5)
+ if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/M in get_hearers_in_view(15, source))
+ if(!M.client || !(M.client.prefs.toggles & SOUND_INSTRUMENTS))
+ continue
+ LAZYADD(hearing_mobs, M)
+ last_hearcheck = world.time
+
+ var/sound/music_played = sound(soundfile)
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ M.playsound_local(source, null, 100, falloff = 5, S = music_played)
/datum/song/proc/updateDialog(mob/user)
instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise
@@ -94,6 +105,7 @@
//to_chat(world, "note: [note]")
if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case
playing = FALSE
+ hearing_mobs = null
return
if(!lentext(note))
continue
@@ -125,6 +137,7 @@
else
sleep(tempo)
repeat--
+ hearing_mobs = null
playing = FALSE
repeat = 0
updateDialog(user)
@@ -286,6 +299,7 @@
else if(href_list["stop"])
playing = FALSE
+ hearing_mobs = null
updateDialog(usr)
return
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index ab1ec54388..dcd2244e96 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -89,39 +89,39 @@
/obj/structure/noticeboard/captain
name = "Captain's Notice Board"
desc = "Important notices from the Captain."
- req_access = list(GLOB.access_captain)
+ req_access = list(ACCESS_CAPTAIN)
/obj/structure/noticeboard/hop
name = "Head of Personnel's Notice Board"
desc = "Important notices from the Head of Personnel."
- req_access = list(GLOB.access_hop)
+ req_access = list(ACCESS_HOP)
/obj/structure/noticeboard/ce
name = "Chief Engineer's Notice Board"
desc = "Important notices from the Chief Engineer."
- req_access = list(GLOB.access_ce)
+ req_access = list(ACCESS_CE)
/obj/structure/noticeboard/hos
name = "Head of Security's Notice Board"
desc = "Important notices from the Head of Security."
- req_access = list(GLOB.access_hos)
+ req_access = list(ACCESS_HOS)
/obj/structure/noticeboard/cmo
name = "Chief Medical Officer's Notice Board"
desc = "Important notices from the Chief Medical Officer."
- req_access = list(GLOB.access_cmo)
+ req_access = list(ACCESS_CMO)
/obj/structure/noticeboard/rd
name = "Research Director's Notice Board"
desc = "Important notices from the Research Director."
- req_access = list(GLOB.access_rd)
+ req_access = list(ACCESS_RD)
/obj/structure/noticeboard/qm
name = "Quartermaster's Notice Board"
desc = "Important notices from the Quartermaster."
- req_access = list(GLOB.access_qm)
+ req_access = list(ACCESS_QM)
/obj/structure/noticeboard/staff
name = "Staff Notice Board"
desc = "Important notices from the heads of staff."
- req_access = list(GLOB.access_heads)
+ req_access = list(ACCESS_HEADS)
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 3936b2770d..4e143a9109 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -76,7 +76,7 @@
anchored = 0
to_chat(user, "You cut \the [src] free from the floor.")
//Finishing the frame
- else if(istype(W,/obj/item/stack/sheet))
+ else if(istype(W, /obj/item/stack/sheet))
if(finished)
return
var/obj/item/stack/sheet/S = W
@@ -88,7 +88,7 @@
S.use(5)
new /obj/structure/reflector/single (src.loc)
qdel (src)
- if(istype(W,/obj/item/stack/sheet/rglass))
+ if(istype(W, /obj/item/stack/sheet/rglass))
if(S.get_amount() < 10)
to_chat(user, "You need ten sheets of reinforced glass to create a double reflector!")
return
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 884853b6d8..0be8d40402 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -155,10 +155,10 @@
/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj)
var/burn = FALSE
- if(istype(Proj,/obj/item/projectile/beam))
+ if(istype(Proj, /obj/item/projectile/beam))
PlasmaBurn(2500)
burn = TRUE
- else if(istype(Proj,/obj/item/projectile/ion))
+ else if(istype(Proj, /obj/item/projectile/ion))
PlasmaBurn(500)
burn = TRUE
if(burn)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index c481393f2f..29920a6db4 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -266,7 +266,7 @@
frame = /obj/structure/table_frame
framestack = /obj/item/stack/rods
buildstack = /obj/item/stack/tile/carpet
- canSmoothWith = list(/obj/structure/table/wood/fancy,/obj/structure/table/wood/fancy/black)
+ canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black)
/obj/structure/table/wood/fancy/New()
icon = 'icons/obj/smooth_structures/fancy_table.dmi' //so that the tables place correctly in the map editor
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 04d931596f..8d796904fd 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -312,7 +312,7 @@
L.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
if(iscarbon(L))
var/mob/living/carbon/M = L
- . = 1
+ . = TRUE
check_heat(M)
for(var/obj/item/I in M.held_items)
wash_obj(I)
@@ -321,11 +321,11 @@
M.update_inv_back(0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- var/washgloves = 1
- var/washshoes = 1
- var/washmask = 1
- var/washears = 1
- var/washglasses = 1
+ var/washgloves = TRUE
+ var/washshoes = TRUE
+ var/washmask = TRUE
+ var/washears = TRUE
+ var/washglasses = TRUE
if(H.wear_suit)
washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES)
@@ -342,40 +342,30 @@
if (washglasses)
washglasses = !(H.wear_mask.flags_inv & HIDEEYES)
- if(H.head)
- if(wash_obj(H.head))
- H.update_inv_head()
- if(wash_obj(H.wear_suit))
- if(H.wear_suit.clean_blood())
- H.update_inv_wear_suit()
- else if(wash_obj(H.w_uniform))
- if(H.w_uniform.clean_blood())
- H.update_inv_w_uniform()
+ if(H.head && wash_obj(H.head))
+ H.update_inv_head()
+ if(H.wear_suit && wash_obj(H.wear_suit))
+ H.update_inv_wear_suit()
+ else if(H.w_uniform && wash_obj(H.w_uniform))
+ H.update_inv_w_uniform()
if(washgloves)
H.clean_blood()
- if(H.shoes && washshoes)
- if(wash_obj(H.shoes))
- H.update_inv_shoes()
- if(H.wear_mask)
- if(washmask)
- if(wash_obj(H.wear_mask))
- H.update_inv_wear_mask()
+ if(H.shoes && washshoes && wash_obj(H.shoes))
+ H.update_inv_shoes()
+ if(H.wear_mask && washmask && wash_obj(H.wear_mask))
+ H.update_inv_wear_mask()
else
H.lip_style = null
H.update_body()
- if(H.glasses && washglasses)
- if(wash_obj(H.glasses))
- H.update_inv_glasses()
- if(H.ears && washears)
- if(wash_obj(H.ears))
- H.update_inv_ears()
- if(H.belt)
- if(wash_obj(H.belt))
- H.update_inv_belt()
+ if(H.glasses && washglasses && wash_obj(H.glasses))
+ H.update_inv_glasses()
+ if(H.ears && washears && wash_obj(H.ears))
+ H.update_inv_ears()
+ if(H.belt && wash_obj(H.belt))
+ H.update_inv_belt()
else
- if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
- if(wash_obj(M.wear_mask))
- M.update_inv_wear_mask(0)
+ if(M.wear_mask && wash_obj(M.wear_mask))
+ M.update_inv_wear_mask(0)
M.clean_blood()
else
L.clean_blood()
diff --git a/code/game/sound.dm b/code/game/sound.dm
index 3cbe2893b7..aa41e0c7e3 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -1,40 +1,40 @@
-/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, surround = 1, frequency = null, channel = 0, pressure_affected = TRUE)
-
- soundin = get_sfx(soundin) // same sound for everyone
-
+/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE)
if(isarea(source))
throw EXCEPTION("playsound(): source is an area")
return
- if(isnull(frequency))
- frequency = get_rand_frequency() // Same frequency for everybody
var/turf/turf_source = get_turf(source)
//allocate a channel if necessary now so its the same for everyone
channel = channel || open_sound_channel()
// Looping through the player list has the added bonus of working for mobs inside containers
- for (var/P in GLOB.player_list)
+ var/sound/S = sound(get_sfx(soundin))
+ var/maxdistance = (world.view + extrarange) * 3
+ for(var/P in GLOB.player_list)
var/mob/M = P
if(!M || !M.client)
continue
- if(get_dist(M, turf_source) <= world.view + extrarange)
- var/turf/T = get_turf(M)
- if(T && T.z == turf_source.z)
- M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, surround, channel, pressure_affected)
+ var/distance = get_dist(M, turf_source)
-/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1, channel = 0, pressure_affected = TRUE)
+ if(distance <= maxdistance)
+ var/turf/T = get_turf(M)
+
+ if(T && T.z == turf_source.z)
+ M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S)
+
+/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S)
if(!client || !can_hear())
return
- soundin = get_sfx(soundin)
+ if(!S)
+ S = sound(get_sfx(soundin))
- var/sound/S = sound(soundin)
S.wait = 0 //No queue
S.channel = channel || open_sound_channel()
S.volume = vol
- if (vary)
+ if(vary)
if(frequency)
S.frequency = frequency
else
@@ -43,6 +43,11 @@
if(isturf(turf_source))
var/turf/T = get_turf(src)
+ //sound volume falloff with distance
+ var/distance = get_dist(T, turf_source)
+
+ S.volume -= max(distance - world.view, 0) * 2 //multiplicative falloff to add on top of natural audio falloff.
+
if(pressure_affected)
//Atmosphere affects sound
var/pressure_factor = 1
@@ -56,27 +61,22 @@
else //space
pressure_factor = 0
- var/distance = get_dist(T, turf_source)
if(distance <= 1)
pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound
S.volume *= pressure_factor
//End Atmosphere affecting sound
- if(S.volume <= 0)
- return //No sound
-
- // 3D sounds, the technology is here!
- if (surround)
- var/dx = turf_source.x - T.x // Hearing from the right/left
- S.x = round(max(-SURROUND_CAP, min(SURROUND_CAP, dx)), 1)
-
- var/dz = turf_source.y - T.y // Hearing from infront/behind
- S.z = round(max(-SURROUND_CAP, min(SURROUND_CAP, dz)), 1)
+ if(S.volume <= 0)
+ return //No sound
+ var/dx = turf_source.x - T.x // Hearing from the right/left
+ S.x = dx
+ var/dz = turf_source.y - T.y // Hearing from infront/behind
+ S.z = dz
// The y value is for above your head, but there is no ceiling in 2d spessmens.
S.y = 1
- S.falloff = falloff || FALLOFF_SOUNDS
+ S.falloff = (falloff ? falloff : FALLOFF_SOUNDS)
src << S
@@ -176,6 +176,6 @@
'sound/vore/prey/death_10.ogg')
return soundin
-/proc/playsound_global(file, repeat=0, wait, channel, volume)
+/proc/playsound_global(file, repeat = 0, wait, channel, volume)
for(var/V in GLOB.clients)
V << sound(file, repeat, wait, channel, volume)
diff --git a/code/game/sound.dm.rej b/code/game/sound.dm.rej
new file mode 100644
index 0000000000..bf2bbbce69
--- /dev/null
+++ b/code/game/sound.dm.rej
@@ -0,0 +1,9 @@
+diff a/code/game/sound.dm b/code/game/sound.dm (rejected hunks)
+@@ -154,6 +151,6 @@
+ soundin = pick('sound/effects/can_open1.ogg', 'sound/effects/can_open2.ogg', 'sound/effects/can_open3.ogg')
+ return soundin
+
+-/proc/playsound_global(file, repeat=0, wait, channel, volume)
++/proc/playsound_global(file, repeat = 0, wait, channel, volume)
+ for(var/V in GLOB.clients)
+ V << sound(file, repeat, wait, channel, volume)
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index a8614c3a5c..82ff907a04 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -122,6 +122,8 @@
/turf/open/proc/freon_gas_act()
for(var/obj/I in contents)
+ if(I.resistance_flags & FREEZE_PROOF)
+ return
if(!HAS_SECONDARY_FLAG(I, FROZEN)) //let it go
I.make_frozen_visual()
for(var/mob/living/L in contents)
diff --git a/code/game/turfs/simulated/dirtystation.dm b/code/game/turfs/simulated/dirtystation.dm
index 1c59cd2999..7be9b6cd34 100644
--- a/code/game/turfs/simulated/dirtystation.dm
+++ b/code/game/turfs/simulated/dirtystation.dm
@@ -32,7 +32,7 @@
if(prob(80)) //mid dirt - 1/15
return
- if(istype(A, /area/engine) || istype(A, /area/crew_quarters/heads/chief) || istype(A,/area/assembly) || istype(A, /area/science/robotics) || istype(A,/area/maintenance) || istype(A,/area/construction))
+ if(istype(A, /area/engine) || istype(A, /area/crew_quarters/heads/chief) || istype(A, /area/assembly) || istype(A, /area/science/robotics) || istype(A, /area/maintenance) || istype(A, /area/construction))
//Blood, sweat, and oil. Oh, and dirt.
if(prob(3))
new /obj/effect/decal/cleanable/blood/old(src)
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index 49da7959ab..f3f8fc5959 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -67,7 +67,7 @@
/turf/open/floor/light/attackby(obj/item/C, mob/user, params)
if(..())
return
- if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles
+ if(istype(C, /obj/item/weapon/light/bulb)) //only for light tiles
if(state && user.drop_item())
qdel(C)
state = 0 //fixing it by bashing it with a light bulb, fun eh?
diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm
index e74c024b18..039d278baf 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -28,12 +28,16 @@
/turf/open/floor/plasteel/white
icon_state = "white"
-/turf/open/floor/plasteel/airless/white
- icon_state = "white"
/turf/open/floor/plasteel/white/side
icon_state = "whitehall"
/turf/open/floor/plasteel/white/corner
icon_state = "whitecorner"
+/turf/open/floor/plasteel/airless/white
+ icon_state = "white"
+/turf/open/floor/plasteel/airless/white/side
+ icon_state = "whitehall"
+/turf/open/floor/plasteel/airless/white/corner
+ icon_state = "whitecorner"
@@ -240,11 +244,6 @@
icon_state = "blueyellow"
-/turf/open/floor/plasteel/warningline
- icon_state = "warningline"
-/turf/open/floor/plasteel/warningline/corner
- icon_state = "warninglinecorners"
-
/turf/open/floor/plasteel/yellowsiding
icon_state = "yellowsiding"
/turf/open/floor/plasteel/yellowsiding/corner
@@ -395,16 +394,3 @@
/turf/open/floor/plasteel/sepia
icon_state = "sepia"
-
-/turf/open/floor/plasteel/sandy
- icon_state = "sandy"
- baseturf = /turf/open/floor/plating/beach/sand
-
-/turf/open/floor/plasteel/sandeffect
- icon_state = "sandeffect"
-
-/turf/open/floor/plasteel/sandeffect/warning
- icon_state = "warningsandeffect"
-
-/turf/open/floor/plasteel/sandeffect/warning/corner
- icon_state = "warningsandeffectcorners"
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 3ca061b2c9..c961b9243c 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -53,7 +53,7 @@
if(!W.use(1))
return
var/turf/open/floor/T = ChangeTurf(W.turf_type)
- if(istype(W,/obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow
+ if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow
var/obj/item/stack/tile/light/L = W
var/turf/open/floor/light/F = T
F.state = L.state
diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm
index 0219427729..7666472a65 100644
--- a/code/game/turfs/simulated/floor/plating/asteroid.dm
+++ b/code/game/turfs/simulated/floor/plating/asteroid.dm
@@ -71,7 +71,7 @@
gets_dug()
SSblackbox.add_details("pick_used_mining","[W.type]")
- if(istype(W,/obj/item/weapon/storage/bag/ore))
+ if(istype(W, /obj/item/weapon/storage/bag/ore))
var/obj/item/weapon/storage/bag/ore/S = W
if(S.collection_mode == 1)
for(var/obj/item/weapon/ore/O in src.contents)
@@ -83,7 +83,7 @@
if(!Z.use(1))
return
var/turf/open/floor/T = ChangeTurf(Z.turf_type)
- if(istype(Z,/obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow
+ if(istype(Z, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow
var/obj/item/stack/tile/light/L = Z
var/turf/open/floor/light/F = T
F.state = L.state
@@ -118,7 +118,7 @@
floor_variance = 15
/turf/open/floor/plating/asteroid/basalt/lava //lava underneath
- baseturf = /turf/open/floor/plating/lava/smooth
+ baseturf = /turf/open/lava/smooth
/turf/open/floor/plating/asteroid/basalt/airless
initial_gas_mix = "TEMP=2.7"
@@ -145,7 +145,7 @@
/turf/open/floor/plating/asteroid/basalt/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
planetary_atmos = TRUE
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/open/lava/smooth/lava_land_surface
@@ -248,7 +248,7 @@
if(istype(tunnel))
// Small chance to have forks in our tunnel; otherwise dig our tunnel.
if(i > 3 && prob(20))
- var/turf/open/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type,FALSE,TRUE)
+ var/turf/open/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type,FALSE,FALSE,TRUE)
C.going_backwards = FALSE
C.produce_tunnel_from_data(rand(10, 15), dir)
else
@@ -274,7 +274,7 @@
SpawnFlora(T)
SpawnMonster(T)
- T.ChangeTurf(turf_type,FALSE,TRUE)
+ T.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
/turf/open/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T)
if(prob(30))
diff --git a/code/game/turfs/simulated/floor/plating/lava.dm b/code/game/turfs/simulated/lava.dm
similarity index 60%
rename from code/game/turfs/simulated/floor/plating/lava.dm
rename to code/game/turfs/simulated/lava.dm
index ea2fd8d139..8e6344401c 100644
--- a/code/game/turfs/simulated/floor/plating/lava.dm
+++ b/code/game/turfs/simulated/lava.dm
@@ -1,64 +1,75 @@
///LAVA
-/turf/open/floor/plating/lava
+/turf/open/lava
name = "lava"
icon_state = "lava"
gender = PLURAL //"That's some lava."
- baseturf = /turf/open/floor/plating/lava //lava all the way down
+ baseturf = /turf/open/lava //lava all the way down
slowdown = 2
light_range = 2
light_power = 0.75
light_color = LIGHT_COLOR_LAVA
-/turf/open/floor/plating/lava/ex_act(severity, target)
+/turf/open/lava/ex_act(severity, target)
contents_explosion(severity, target)
-/turf/open/floor/plating/lava/MakeSlippery(wet_setting = TURF_WET_WATER, min_wet_time = 0, wet_time_to_add = 0)
+/turf/open/lava/MakeSlippery(wet_setting = TURF_WET_WATER, min_wet_time = 0, wet_time_to_add = 0)
return
-/turf/open/floor/plating/lava/MakeDry(wet_setting = TURF_WET_WATER)
+/turf/open/lava/MakeDry(wet_setting = TURF_WET_WATER)
return
-/turf/open/floor/plating/lava/airless
+/turf/open/lava/airless
initial_gas_mix = "TEMP=2.7"
-/turf/open/floor/plating/lava/Entered(atom/movable/AM)
+/turf/open/lava/Entered(atom/movable/AM)
if(burn_stuff(AM))
START_PROCESSING(SSobj, src)
-/turf/open/floor/plating/lava/hitby(atom/movable/AM)
+/turf/open/lava/hitby(atom/movable/AM)
if(burn_stuff(AM))
START_PROCESSING(SSobj, src)
-/turf/open/floor/plating/lava/process()
+/turf/open/lava/process()
if(!burn_stuff())
STOP_PROCESSING(SSobj, src)
-/turf/open/floor/plating/lava/singularity_act()
+/turf/open/lava/rcd_vals(mob/user, obj/item/weapon/construction/rcd/the_rcd)
+ switch(the_rcd.mode)
+ if(RCD_FLOORWALL)
+ return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3)
+ return FALSE
+
+/turf/open/lava/rcd_act(mob/user, obj/item/weapon/construction/rcd/the_rcd, passed_mode)
+ switch(passed_mode)
+ if(RCD_FLOORWALL)
+ to_chat(user, "You build a floor.")
+ ChangeTurf(/turf/open/floor/plating)
+ return TRUE
+ return FALSE
+
+/turf/open/lava/singularity_act()
return
-/turf/open/floor/plating/lava/singularity_pull(S, current_size)
+/turf/open/lava/singularity_pull(S, current_size)
return
-/turf/open/floor/plating/lava/make_plating()
- return
-
-/turf/open/floor/plating/lava/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
+/turf/open/lava/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
underlay_appearance.icon = 'icons/turf/floors.dmi'
underlay_appearance.icon_state = "basalt"
return TRUE
-/turf/open/floor/plating/lava/GetHeatCapacity()
+/turf/open/lava/GetHeatCapacity()
. = 700000
-/turf/open/floor/plating/lava/GetTemperature()
+/turf/open/lava/GetTemperature()
. = 5000
-/turf/open/floor/plating/lava/TakeTemperature(temp)
+/turf/open/lava/TakeTemperature(temp)
-/turf/open/floor/plating/lava/proc/is_safe()
+/turf/open/lava/proc/is_safe()
//if anything matching this typecache is found in the lava, we don't burn things
var/static/list/lava_safeties_typecache = typecacheof(list(/obj/structure/lattice/catwalk, /obj/structure/stone_tile))
var/list/found_safeties = typecache_filter_list(contents, lava_safeties_typecache)
@@ -68,7 +79,7 @@
return LAZYLEN(found_safeties)
-/turf/open/floor/plating/lava/proc/burn_stuff(AM)
+/turf/open/lava/proc/burn_stuff(AM)
. = 0
if(is_safe())
@@ -115,35 +126,18 @@
L.adjust_fire_stacks(20)
L.IgniteMob()
-
-/turf/open/floor/plating/lava/attackby(obj/item/C, mob/user, params) //Lava isn't a good foundation to build on
- return
-
-/turf/open/floor/plating/lava/break_tile()
- return
-
-/turf/open/floor/plating/lava/pry_tile()
- return
-
-/turf/open/floor/plating/lava/try_replace_tile()
- return
-
-/turf/open/floor/plating/lava/burn_tile()
- return
-
-/turf/open/floor/plating/lava/smooth
+/turf/open/lava/smooth
name = "lava"
- baseturf = /turf/open/floor/plating/lava/smooth
+ baseturf = /turf/open/lava/smooth
icon = 'icons/turf/floors/lava.dmi'
icon_state = "unsmooth"
smooth = SMOOTH_MORE | SMOOTH_BORDER
- canSmoothWith = list(/turf/open/floor/plating/lava/smooth)
+ canSmoothWith = list(/turf/open/lava/smooth)
-
-/turf/open/floor/plating/lava/smooth/lava_land_surface
+/turf/open/lava/smooth/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
planetary_atmos = TRUE
baseturf = /turf/open/chasm/straight_down/lava_land_surface
-/turf/open/floor/plating/lava/smooth/airless
+/turf/open/lava/smooth/airless
initial_gas_mix = "TEMP=2.7"
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 852e3e1cee..0c9b8259ad 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -82,7 +82,7 @@
SSblackbox.add_details("ore_mined",mineralType)
for(var/obj/effect/temp_visual/mining_overlay/M in src)
qdel(M)
- ChangeTurf(turf_type, defer_change)
+ ChangeTurf(turf_type, FALSE, defer_change)
addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction
@@ -108,12 +108,12 @@
return
else if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
- if(istype(R.module_active,/obj/item/weapon/pickaxe))
+ if(istype(R.module_active, /obj/item/weapon/pickaxe))
src.attackby(R.module_active,R)
return
-/* else if(istype(AM,/obj/mecha))
+/* else if(istype(AM, /obj/mecha))
var/obj/mecha/M = AM
- if(istype(M.selected,/obj/item/mecha_parts/mecha_equipment/drill))
+ if(istype(M.selected, /obj/item/mecha_parts/mecha_equipment/drill))
src.attackby(M.selected,M)
return*/
//Aparantly mechs are just TOO COOL to call Collide())
@@ -156,7 +156,7 @@
..()
if (prob(mineralChance))
var/path = pickweight(mineralSpawnChanceList)
- var/turf/T = ChangeTurf(path,FALSE,TRUE)
+ var/turf/T = ChangeTurf(path,FALSE,FALSE,TRUE)
if(T && ismineralturf(T))
var/turf/closed/mineral/M = T
@@ -178,7 +178,7 @@
/turf/closed/mineral/random/high_chance/volcanic
environment_type = "basalt"
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/open/lava/smooth/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
mineralSpawnChanceList = list(
@@ -199,7 +199,7 @@
/turf/closed/mineral/random/volcanic
environment_type = "basalt"
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/open/lava/smooth/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
@@ -221,7 +221,7 @@
/turf/closed/mineral/random/labormineral/volcanic
environment_type = "basalt"
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/open/lava/smooth/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
mineralSpawnChanceList = list(
@@ -361,7 +361,7 @@
/turf/closed/mineral/volcanic/lava_land_surface
environment_type = "basalt"
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/open/lava/smooth/lava_land_surface
defer_change = 1
/turf/closed/mineral/ash_rock //wall piece
@@ -469,7 +469,7 @@
G.quality = 2
G.icon_state = "Gibtonite ore 2"
- ChangeTurf(turf_type, defer_change)
+ ChangeTurf(turf_type, FALSE, defer_change)
addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm
index 0ee64dec2f..165af6ee68 100644
--- a/code/game/turfs/simulated/river.dm
+++ b/code/game/turfs/simulated/river.dm
@@ -4,7 +4,7 @@
#define RANDOM_LOWER_X 50
#define RANDOM_LOWER_Y 50
-/proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y)
+/proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y)
var/list/river_nodes = list()
var/num_spawned = 0
while(num_spawned < nodes)
@@ -20,7 +20,7 @@
continue
W.connected = 1
var/turf/cur_turf = get_turf(W)
- cur_turf.ChangeTurf(turf_type,FALSE,TRUE)
+ cur_turf.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
var/turf/target_turf = get_turf(pick(river_nodes - W))
if(!target_turf)
break
@@ -49,7 +49,7 @@
cur_turf = get_step(cur_turf, cur_dir)
continue
else
- var/turf/river_turf = cur_turf.ChangeTurf(turf_type,FALSE,TRUE)
+ var/turf/river_turf = cur_turf.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
river_turf.Spread(25, 11, whitelist_area)
for(var/WP in river_nodes)
@@ -85,16 +85,16 @@
for(var/F in cardinal_turfs) //cardinal turfs are always changed but don't always spread
var/turf/T = F
- if(!istype(T, logged_turf_type) && T.ChangeTurf(type,FALSE,TRUE) && prob(probability))
+ if(!istype(T, logged_turf_type) && T.ChangeTurf(type,FALSE,FALSE,TRUE) && prob(probability))
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
for(var/F in diagonal_turfs) //diagonal turfs only sometimes change, but will always spread if changed
var/turf/T = F
- if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type,FALSE,TRUE))
+ if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type,FALSE,FALSE,TRUE))
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
else if(ismineralturf(T))
var/turf/closed/mineral/M = T
- M.ChangeTurf(M.turf_type,FALSE,TRUE)
+ M.ChangeTurf(M.turf_type,FALSE,FALSE,TRUE)
#undef RANDOM_UPPER_X
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index a122131942..7e1181413e 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -122,9 +122,9 @@
PlasmaBurn(exposed_temperature)
/turf/closed/wall/mineral/plasma/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj,/obj/item/projectile/beam))
+ if(istype(Proj, /obj/item/projectile/beam))
PlasmaBurn(2500)
- else if(istype(Proj,/obj/item/projectile/ion))
+ else if(istype(Proj, /obj/item/projectile/ion))
PlasmaBurn(500)
..()
diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm
index 64a03cef44..d0eaad34e3 100644
--- a/code/game/turfs/simulated/wall/misc_walls.dm
+++ b/code/game/turfs/simulated/wall/misc_walls.dm
@@ -106,7 +106,7 @@
ChangeTurf(/turf/open/floor/clockwork)
for(var/obj/O in src) //Eject contents!
- if(istype(O,/obj/structure/sign/poster))
+ if(istype(O, /obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
else
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index bea9841ee7..c343e68922 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -52,7 +52,7 @@
transfer_fingerprints_to(newgirder)
for(var/obj/O in src.contents) //Eject contents!
- if(istype(O,/obj/structure/sign/poster))
+ if(istype(O, /obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
@@ -167,13 +167,13 @@
/turf/closed/wall/proc/try_wallmount(obj/item/weapon/W, mob/user, turf/T)
//check for wall mounted frames
- if(istype(W,/obj/item/wallframe))
+ if(istype(W, /obj/item/wallframe))
var/obj/item/wallframe/F = W
if(F.try_build(src, user))
F.attach(src, user)
return 1
//Poster stuff
- else if(istype(W,/obj/item/weapon/poster))
+ else if(istype(W, /obj/item/weapon/poster))
place_poster(W,user)
return 1
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 9ff36bf6c8..2e7b560af3 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -153,7 +153,7 @@
/turf/open/Entered(atom/movable/AM)
..()
//slipping
- if (istype(AM,/mob/living/carbon))
+ if (istype(AM, /mob/living/carbon))
var/mob/living/carbon/M = AM
if(M.movement_type & FLYING)
return
@@ -197,11 +197,11 @@
qdel(L)
//wrapper for ChangeTurf()s that you want to prevent/affect without overriding ChangeTurf() itself
-/turf/proc/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE, new_baseturf)
- return ChangeTurf(path, defer_change, ignore_air, new_baseturf)
+/turf/proc/TerraformTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE)
+ return ChangeTurf(path, new_baseturf, defer_change, ignore_air)
//Creates a new turf
-/turf/proc/ChangeTurf(path, defer_change = FALSE, ignore_air = FALSE, new_baseturf)
+/turf/proc/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE)
if(!path)
return
if(!GLOB.use_preloader && path == type) // Don't no-op if the map loader requires it to be reconstructed
@@ -407,20 +407,20 @@
if(!SSticker.HasRoundStarted())
add_blueprints(AM)
-/turf/proc/empty(turf_type=/turf/open/space, baseturf_type)
+/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, delmobs = TRUE, forceop = FALSE)
// Remove all atoms except observers, landmarks, docking ports
- var/turf/T0 = src
- var/static/list/ignored_atoms = typecacheof(list(/turf, /mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object))
- var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(),ignored_atoms)
+ var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object))
+ var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(),delmobs? ignored_atoms : ignored_atoms + typecacheof(list(/mob)))
+ allowed_contents -= src
for(var/i in 1 to allowed_contents.len)
var/thing = allowed_contents[i]
- qdel(thing, force=TRUE)
+ qdel(thing, force=TRUE
- T0.ChangeTurf(turf_type, FALSE, FALSE, baseturf_type)
+ var/turf/newT = ChangeTurf(turf_type, baseturf_type, FALSE, FALSE)
- SSair.remove_from_active(T0)
- T0.CalculateAdjacentTurfs()
- SSair.add_to_active(T0,1)
+ SSair.remove_from_active(newT)
+ newT.CalculateAdjacentTurfs()
+ SSair.add_to_active(newT,1)
/turf/proc/is_transition_turf()
return
diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm
index a9f5214f72..a095840b09 100644
--- a/code/modules/VR/vr_sleeper.dm
+++ b/code/modules/VR/vr_sleeper.dm
@@ -95,7 +95,7 @@
if("vr_connect")
var/mob/living/carbon/human/human_occupant = occupant
if(human_occupant && human_occupant.mind)
- to_chat(occupant, "Transfering to virtual reality...")
+ to_chat(occupant, "Transferring to virtual reality...")
if(vr_human)
vr_human.revert_to_reality(FALSE, FALSE)
human_occupant.mind.transfer_to(vr_human)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 4bc6bd6794..b5f2bc750e 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -181,9 +181,9 @@
set name = "Access Newscaster Network"
set desc = "Allows you to view, add and edit news feeds."
- if (!istype(src,/datum/admins))
+ if (!istype(src, /datum/admins))
src = usr.client.holder
- if (!istype(src,/datum/admins))
+ if (!istype(src, /datum/admins))
to_chat(usr, "Error: you are not an admin!")
return
var/dat
@@ -641,7 +641,7 @@
var/chosen = pick_closest_path(object)
if(!chosen)
return
- if(ispath(chosen,/turf))
+ if(ispath(chosen, /turf))
var/turf/T = get_turf(usr.loc)
T.ChangeTurf(chosen)
else
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index 0e91b3c0f1..54feb11532 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -5,7 +5,7 @@
F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message] "
-/client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY) )
+/client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY) )
set name = "Investigate"
set category = "Admin"
if(!holder)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index ac3d4cb21e..ff8b10d185 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -13,7 +13,7 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/client/proc/reload_admins,
- /client/proc/reestablish_db_connection,/*reattempt a connection to the database*/
+ /client/proc/reestablish_db_connection, /*reattempt a connection to the database*/
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/cmd_admin_ticket_panel,
@@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
/datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/
/datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/
/datum/admins/proc/announce, /*priority announce something to all clients.*/
- /datum/admins/proc/set_admin_notice,/*announcement all clients see when joining the server.*/
+ /datum/admins/proc/set_admin_notice, /*announcement all clients see when joining the server.*/
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/toggle_view_range, /*changes how far we can see*/
/datum/admins/proc/view_txt_log, /*shows the server log (world_game_log) for today*/
@@ -70,9 +70,9 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
/client/proc/respawn_character
)
GLOBAL_PROTECT(admin_verbs_ban)
-GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel,/client/proc/DB_ban_panel,/client/proc/stickybanpanel))
+GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel, /client/proc/DB_ban_panel, /client/proc/stickybanpanel))
GLOBAL_PROTECT(admin_verbs_sounds)
-GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound,/client/proc/play_sound,/client/proc/set_round_end_sound))
+GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound, /client/proc/play_sound, /client/proc/set_round_end_sound))
GLOBAL_PROTECT(admin_verbs_fun)
GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/cmd_admin_dress,
@@ -97,7 +97,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/smite
))
GLOBAL_PROTECT(admin_verbs_spawn)
-GLOBAL_LIST_INIT(admin_verbs_spawn, list(/datum/admins/proc/spawn_atom,/client/proc/respawn_character))
+GLOBAL_LIST_INIT(admin_verbs_spawn, list(/datum/admins/proc/spawn_atom, /client/proc/respawn_character))
GLOBAL_PROTECT(admin_verbs_server)
GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
/world/proc/AVerbsServer()
@@ -156,7 +156,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug, world.AVerbsDebug())
/client/proc/cmd_display_init_log
)
GLOBAL_PROTECT(admin_verbs_possess)
-GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess,/proc/release))
+GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release))
GLOBAL_PROTECT(admin_verbs_permissions)
GLOBAL_LIST_INIT(admin_verbs_permissions, list(/client/proc/edit_admin_permissions))
GLOBAL_PROTECT(admin_verbs_poll)
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index c04e3c91ad..05d97be6ad 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -598,7 +598,7 @@
if(istype(SSticker.mode, /datum/game_mode/blob) || blob_minds.len)
dat += "
| Blob | | | "
- if(istype(SSticker.mode,/datum/game_mode/blob))
+ if(istype(SSticker.mode, /datum/game_mode/blob))
var/datum/game_mode/blob/mode = SSticker.mode
blob_minds |= mode.blob_overminds
dat += "| Progress: [GLOB.blobs_legit.len]/[mode.blobwincount] | "
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index ffad361db8..0b8219466c 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -138,7 +138,7 @@
for(var/mob/living/mob in thunderdome)
qdel(mob) //Clear mobs
for(var/obj/obj in thunderdome)
- if(!istype(obj,/obj/machinery/camera))
+ if(!istype(obj, /obj/machinery/camera))
qdel(obj) //Clear objects
var/area/template = locate(/area/tdome/arena_source)
@@ -537,17 +537,17 @@
return
for(var/obj/machinery/door/airlock/maintenance/M in GLOB.machines)
M.check_access()
- if (GLOB.access_maint_tunnels in M.req_access)
- M.req_access = list(GLOB.access_brig)
+ if (ACCESS_MAINT_TUNNELS in M.req_access)
+ M.req_access = list(ACCESS_BRIG)
message_admins("[key_name_admin(usr)] made all maint doors brig access-only.")
if("maint_access_engiebrig")
if(!check_rights(R_DEBUG))
return
for(var/obj/machinery/door/airlock/maintenance/M in GLOB.machines)
M.check_access()
- if (GLOB.access_maint_tunnels in M.req_access)
+ if (ACCESS_MAINT_TUNNELS in M.req_access)
M.req_access = list()
- M.req_one_access = list(GLOB.access_brig,GLOB.access_engine)
+ M.req_one_access = list(ACCESS_BRIG,ACCESS_ENGINE)
message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
if("infinite_sec")
if(!check_rights(R_DEBUG))
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 1f41b17421..5436590e83 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1917,7 +1917,7 @@
if(!marked_datum)
to_chat(usr, "You don't have any object marked. Abandoning spawn.")
return
- else if(!istype(marked_datum,/atom))
+ else if(!istype(marked_datum, /atom))
to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.")
return
else
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index 8b64328c68..ae6c6d0fd4 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -30,9 +30,6 @@
query_log = "[usr.ckey]([usr]) [query_log]"
log_game(query_log)
NOTICE(query_log)
- var/list/runtime_tracker = list()
- var/runtimes_list = ""
- var/runtimes = 0
var/objs_all = 0
var/objs_eligible = 0
var/start_time = REALTIMEOFDAY
@@ -76,11 +73,7 @@
var/list/objs = list()
for(var/type in select_types)
- try
- objs += SDQL_get_all(type, from_objs)
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ objs += SDQL_get_all(type, from_objs)
CHECK_TICK
objs_all = objs.len
@@ -88,53 +81,26 @@
var/objs_temp = objs
objs = list()
for(var/datum/d in objs_temp)
- try
- if(SDQL_expression(d, query_tree["where"]))
- objs += d
- objs_eligible++
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ if(SDQL_expression(d, query_tree["where"]))
+ objs += d
+ objs_eligible++
CHECK_TICK
switch(query_tree[1])
if("call")
for(var/datum/d in objs)
- try
- world.SDQL_var(d, query_tree["call"][1], source = d)
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ world.SDQL_var(d, query_tree["call"][1], source = d)
CHECK_TICK
-
+
if("delete")
for(var/datum/d in objs)
- try
- qdel(d)
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ SDQL_qdel_datum(d)
CHECK_TICK
if("select")
var/text = ""
for(var/datum/t in objs)
- try
- text += "\ref[t]"
- if(istype(t, /atom))
- var/atom/a = t
- if(a.x)
- text += ": [t] at ([a.x], [a.y], [a.z]) "
-
- else if(a.loc && a.loc.x)
- text += ": [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z]) "
- else
- text += ": [t] "
- else
- text += ": [t] "
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ text += SDQL_gen_vv_href(t)
CHECK_TICK
usr << browse(text, "window=SDQL-result")
@@ -142,21 +108,7 @@
if("set" in query_tree)
var/list/set_list = query_tree["set"]
for(var/datum/d in objs)
- try
- for(var/list/sets in set_list)
- var/datum/temp = d
- var/i = 0
- for(var/v in sets)
- if(++i == sets.len)
- temp.vv_edit_var(v, SDQL_expression(d, set_list[sets]))
- break
- if(temp.vars.Find(v) && (istype(temp.vars[v], /datum)))
- temp = temp.vars[v]
- else
- break
- catch(var/exception/e)
- runtime_tracker += SDQL_parse_exception(e)
- runtimes++
+ SDQL_internal_vv(d, set_list)
CHECK_TICK
var/end_time = REALTIMEOFDAY
@@ -164,18 +116,39 @@
to_chat(usr, "SDQL query results: [query_text]")
to_chat(usr, "SDQL query completed: [objs_all] objects selected by path, and [objs_eligible] objects executed on after WHERE filtering if applicable.")
to_chat(usr, "SDQL query took [end_time/10] seconds to complete.")
- if(runtimes)
- to_chat(usr, "SDQL query encountered [runtimes] runtimes!")
- to_chat(usr, "Opening runtime tracking window.")
- runtimes_list = runtime_tracker.Join()
- usr << browse(runtimes_list, "window=SDQL-runtimes")
-/proc/SDQL_parse_exception(exception/E)
- var/list/returning = list()
- returning += "Runtime Error: [E.name] "
- returning += "Occured at line [E.line] file [E.file] "
- returning += "Description: [E.desc] "
- return returning
+/proc/SDQL_qdel_datum(datum/d)
+ qdel(d)
+
+/proc/SDQL_gen_vv_href(t)
+ var/text = ""
+ text += "\ref[t]"
+ if(istype(t, /atom))
+ var/atom/a = t
+ var/turf/T = a.loc
+ var/turf/actual = get_turf(a)
+ if(istype(T))
+ text += ": [t] at turf [T] [COORD(T)] "
+ else if(a.loc && istype(actual))
+ text += ": [t] in [a.loc] at turf [actual] [COORD(actual)] "
+ else
+ text += ": [t] "
+ else
+ text += ": [t] "
+ return text
+
+/proc/SDQL_internal_vv(d, list/set_list)
+ for(var/list/sets in set_list)
+ var/datum/temp = d
+ var/i = 0
+ for(var/v in sets)
+ if(++i == sets.len)
+ temp.vv_edit_var(v, SDQL_expression(d, set_list[sets]))
+ break
+ if(temp.vars.Find(v) && (istype(temp.vars[v], /datum)))
+ temp = temp.vars[v]
+ else
+ break
/proc/SDQL_parse(list/query_list)
var/datum/SDQL_parser/parser = new()
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index caa2d2c7cb..31fb08da36 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -44,7 +44,7 @@
if(cmptext(copytext(whom,1,2),"@"))
whom = findStealthKey(whom)
C = GLOB.directory[whom]
- else if(istype(whom,/client))
+ else if(istype(whom, /client))
C = whom
if(!C)
if(holder)
@@ -82,7 +82,7 @@
irc = 1
else
recipient = GLOB.directory[whom]
- else if(istype(whom,/client))
+ else if(istype(whom, /client))
recipient = whom
diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm
index 5df7ee8c78..cfccf5fa78 100644
--- a/code/modules/admin/verbs/buildmode.dm
+++ b/code/modules/admin/verbs/buildmode.dm
@@ -171,7 +171,7 @@
objholder = /obj/structure/closet
alert("That path is not allowed.")
else
- if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0))
+ if(ispath(objholder, /mob) && !check_rights(R_DEBUG,0))
objholder = /obj/structure/closet
if(VAR_BUILDMODE)
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
@@ -224,7 +224,7 @@
set name = "Toggle Build Mode"
set category = "Special Verbs"
if(M.client)
- if(istype(M.client.click_intercept,/datum/buildmode))
+ if(istype(M.client.click_intercept, /datum/buildmode))
var/datum/buildmode/B = M.client.click_intercept
B.quit()
log_admin("[key_name(usr)] has left build mode.")
@@ -262,7 +262,7 @@
else if(isfloorturf(object))
var/turf/T = object
T.ChangeTurf(/turf/open/space)
- else if(istype(object,/turf/closed/wall/r_wall))
+ else if(istype(object, /turf/closed/wall/r_wall))
var/turf/T = object
T.ChangeTurf(/turf/closed/wall)
else if(isobj(object))
@@ -291,7 +291,7 @@
log_admin("Build Mode: [key_name(user)] built a window at ([object.x],[object.y],[object.z])")
if(ADV_BUILDMODE)
if(left_click)
- if(ispath(objholder,/turf))
+ if(ispath(objholder, /turf))
var/turf/T = get_turf(object)
log_admin("Build Mode: [key_name(user)] modified [T] ([T.x],[T.y],[T.z]) to [objholder]")
T.ChangeTurf(objholder)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 0f07f31b85..c45fa13435 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -460,10 +460,10 @@ GLOBAL_PROTECT(AdminProcCallCount)
id.update_label()
if(worn)
- if(istype(worn,/obj/item/device/pda))
+ if(istype(worn, /obj/item/device/pda))
worn:id = id
id.loc = worn
- else if(istype(worn,/obj/item/weapon/storage/wallet))
+ else if(istype(worn, /obj/item/weapon/storage/wallet))
worn:front_id = id
id.loc = worn
worn.update_icon()
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index 28a65f4e7d..2a0575eb28 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -30,7 +30,7 @@ GLOBAL_PROTECT(VVpixelmovement)
else if (isloc(var_value))
. = VV_ATOM_REFERENCE
- else if (istype(var_value,/client))
+ else if (istype(var_value, /client))
. = VV_CLIENT
else if (istype(var_value, /datum))
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 9a8e7c8278..551321e893 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1157,14 +1157,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
set category = "Server"
set name = "Toggle Hub"
- world.visibility = (!world.visibility)
+ world.update_hub_visibility(!GLOB.hub_visibility)
- log_admin("[key_name(usr)] has toggled the server's hub status for the round, it is now [(world.visibility?"on":"off")] the hub.")
- message_admins("[key_name_admin(usr)] has toggled the server's hub status for the round, it is now [(world.visibility?"on":"off")] the hub.")
- if (world.visibility && !world.reachable)
+ log_admin("[key_name(usr)] has toggled the server's hub status for the round, it is now [(GLOB.hub_visibility?"on":"off")] the hub.")
+ message_admins("[key_name_admin(usr)] has toggled the server's hub status for the round, it is now [(GLOB.hub_visibility?"on":"off")] the hub.")
+ if (GLOB.hub_visibility && !world.reachable)
message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.")
- SSblackbox.add_details("admin_toggle","Toggled Hub Visibility|[world.visibility]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ SSblackbox.add_details("admin_toggle","Toggled Hub Visibility|[GLOB.hub_visibility]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/smite(mob/living/carbon/human/target as mob)
set name = "Smite"
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index 891e76fda5..12d012e3f8 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -64,9 +64,6 @@
setDir(pick(GLOB.cardinals))
air_update_turf()
-/obj/effect/hotspot/make_frozen_visual()
- return //you take my fun i take yours
-
/obj/effect/hotspot/proc/perform_exposure()
var/turf/open/location = loc
if(!istype(location) || !(location.air))
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 7e968160c2..26882d0a81 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -54,7 +54,7 @@
idle_power_usage = 4
active_power_usage = 8
power_channel = ENVIRON
- req_access = list(GLOB.access_atmospherics)
+ req_access = list(ACCESS_ATMOSPHERICS)
max_integrity = 250
integrity_failure = 80
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30)
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
index a7556aec4c..46146a16f6 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
@@ -31,7 +31,7 @@
var/turf/T = loc
if(istype(T))
- if(istype(T, /turf/open/floor/plating/lava))
+ if(istype(T, /turf/open/lava))
environment_temperature = 5000
else if(T.blocks_air)
environment_temperature = T.temperature
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 59fcf9c4a2..d733dfc3fb 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -362,7 +362,7 @@
if("restricted")
restricted = !restricted
if(restricted)
- req_access = list(GLOB.access_engine)
+ req_access = list(ACCESS_ENGINE)
else
req_access = list()
. = TRUE
@@ -437,7 +437,7 @@
if("eject")
if(holding)
if(valve_open)
- investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transfering into the air ", INVESTIGATE_ATMOS)
+ investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transferring into the air ", INVESTIGATE_ATMOS)
holding.forceMove(get_turf(src))
holding = null
. = TRUE
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 48ec50fcb4..2d5ecdb372 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -299,7 +299,7 @@
/obj/effect/mob_spawn/human/bartender
name = "Space Bartender"
id_job = "Bartender"
- id_access_list = list(GLOB.access_bar)
+ id_access_list = list(ACCESS_BAR)
outfit = /datum/outfit/spacebartender
/obj/effect/mob_spawn/human/bartender/alive
@@ -353,7 +353,7 @@
/obj/effect/mob_spawn/human/bridgeofficer
name = "Bridge Officer"
id_job = "Bridge Officer"
- id_access_list = list(GLOB.access_cent_captain)
+ id_access_list = list(ACCESS_CENT_CAPTAIN)
outfit = /datum/outfit/nanotrasenbridgeofficercorpse
/datum/outfit/nanotrasenbridgeofficercorpse
@@ -369,7 +369,7 @@
/obj/effect/mob_spawn/human/commander
name = "Commander"
id_job = "Commander"
- id_access_list = list(GLOB.access_cent_captain, GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_storage)
+ id_access_list = list(ACCESS_CENT_CAPTAIN, ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_STORAGE)
outfit = /datum/outfit/nanotrasencommandercorpse
/datum/outfit/nanotrasencommandercorpse
@@ -389,7 +389,7 @@
/obj/effect/mob_spawn/human/nanotrasensoldier
name = "Nanotrasen Private Security Officer"
id_job = "Private Security Force"
- id_access_list = list(GLOB.access_cent_captain, GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_storage, GLOB.access_security)
+ id_access_list = list(ACCESS_CENT_CAPTAIN, ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_STORAGE, ACCESS_SECURITY)
outfit = /datum/outfit/nanotrasensoldiercorpse
/datum/outfit/nanotrasensoldiercorpse
diff --git a/code/modules/awaymissions/exile.dm b/code/modules/awaymissions/exile.dm
index 12012e232c..6b1fb81607 100644
--- a/code/modules/awaymissions/exile.dm
+++ b/code/modules/awaymissions/exile.dm
@@ -1,7 +1,7 @@
/obj/structure/closet/secure_closet/exile
name = "exile implants"
- req_access = list(GLOB.access_hos)
+ req_access = list(ACCESS_HOS)
/obj/structure/closet/secure_closet/exile/New()
..()
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 1eaeb4a82b..3627f034df 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -161,7 +161,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
return
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W, mob/user, params)
- if(istype(W,/obj/item/device/multitool))
+ if(istype(W, /obj/item/device/multitool))
if(calibrated)
to_chat(user, "\black The gate is already calibrated, there is no work for you to do here.")
return
diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm
index c3590277d5..f38e672128 100644
--- a/code/modules/awaymissions/mission_code/Cabin.dm
+++ b/code/modules/awaymissions/mission_code/Cabin.dm
@@ -86,7 +86,7 @@
/datum/mapGeneratorModule/snow/bunnies)
/datum/mapGeneratorModule/snow/checkPlaceAtom(turf/T)
- if(istype(T,/turf/open/floor/plating/asteroid/snow))
+ if(istype(T, /turf/open/floor/plating/asteroid/snow))
return ..(T)
return 0
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 5fb373fbe7..339f179e00 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -154,7 +154,7 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
if(isliving(A))
var/mob/living/L = A
L.gib()
- else if(istype(A,/obj/))
+ else if(istype(A, /obj/))
var/obj/O = A
O.ex_act(EXPLODE_DEVASTATE)
if(O) qdel(O)
diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm
index 36a667bc23..bca290c4db 100644
--- a/code/modules/cargo/exports.dm
+++ b/code/modules/cargo/exports.dm
@@ -126,7 +126,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
var/the_cost = get_cost(O)
var/amount = get_amount(O)
total_cost += the_cost
- if(istype(O,/datum/export/material))
+ if(istype(O, /datum/export/material))
total_amount += amount*MINERAL_MATERIAL_AMOUNT
else
total_amount += amount
diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm
index 8abc78ac0e..a73529850d 100644
--- a/code/modules/cargo/exports/sheets.dm
+++ b/code/modules/cargo/exports/sheets.dm
@@ -79,8 +79,7 @@
message = "of reinforced glass"
export_types = list(/obj/item/stack/sheet/rglass)
-// Bluespace Polycrystals. About as common on the asteroid as
-
+// Bluespace Polycrystals. Uncommon.
/datum/export/stack/bscrystal
cost = 750
message = "of bluespace crystals"
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 4bf28622cd..e3398c6f8f 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -40,7 +40,7 @@
/datum/supply_pack/emergency/spacesuit
name = "Space Suit Crate"
cost = 3000
- access = GLOB.access_eva
+ access = ACCESS_EVA
contains = list(/obj/item/clothing/suit/space,
/obj/item/clothing/suit/space,
/obj/item/clothing/head/helmet/space,
@@ -121,7 +121,7 @@
/datum/supply_pack/emergency/atmostank
name = "Firefighting Watertank"
cost = 1000
- access = GLOB.access_atmospherics
+ access = ACCESS_ATMOSPHERICS
contains = list(/obj/item/weapon/watertank/atmos)
crate_name = "firefighting watertank crate"
crate_type = /obj/structure/closet/crate/secure
@@ -144,7 +144,7 @@
/datum/supply_pack/emergency/weedcontrol
name = "Weed Control Crate"
cost = 1500
- access = GLOB.access_hydroponics
+ access = ACCESS_HYDROPONICS
contains = list(/obj/item/weapon/scythe,
/obj/item/clothing/mask/gas,
/obj/item/weapon/grenade/chem_grenade/antiweed,
@@ -209,7 +209,7 @@
/datum/supply_pack/security
group = "Security"
- access = GLOB.access_security
+ access = ACCESS_SECURITY
crate_type = /obj/structure/closet/crate/secure/gear
/datum/supply_pack/security/supplies
@@ -290,7 +290,7 @@
crate_name = "forensics crate"
/datum/supply_pack/security/armory
- access = GLOB.access_armory
+ access = ACCESS_ARMORY
crate_type = /obj/structure/closet/crate/secure/weapon
/datum/supply_pack/security/armory/riothelmets
@@ -378,7 +378,7 @@
/datum/supply_pack/security/armory/fire
name = "Incendiary Weapons Crate"
cost = 1500
- access = GLOB.access_heads
+ access = ACCESS_HEADS
contains = list(/obj/item/weapon/flamethrower/full,
/obj/item/weapon/tank/internals/plasma,
/obj/item/weapon/tank/internals/plasma,
@@ -510,7 +510,7 @@
/datum/supply_pack/science/nitrous_oxide_canister
name = "Nitrous Oxide Canister"
cost = 3000
- access = GLOB.access_atmospherics
+ access = ACCESS_ATMOSPHERICS
contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide)
crate_name = "nitrous oxide canister crate"
crate_type = /obj/structure/closet/crate/secure
@@ -546,7 +546,7 @@
/datum/supply_pack/engineering/inducers
name = "NT-75 Electromagnetic Power Inducers Crate"
cost = 2000
- contains = list(/obj/item/weapon/inducer/sci {cell_type = /obj/item/weapon/stock_parts/cell/{maxcharge = 5000; charge = 5000};opened = 0},/obj/item/weapon/inducer/sci {cell_type = /obj/item/weapon/stock_parts/cell/{maxcharge = 5000; charge = 5000};opened = 0}) //FALSE doesn't work in modified type paths apparently.
+ contains = list(/obj/item/weapon/inducer/sci {cell_type = /obj/item/weapon/stock_parts/cell/{maxcharge = 5000; charge = 5000};opened = 0}, /obj/item/weapon/inducer/sci {cell_type = /obj/item/weapon/stock_parts/cell/{maxcharge = 5000; charge = 5000};opened = 0}) //FALSE doesn't work in modified type paths apparently.
crate_name = "inducer crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
@@ -627,7 +627,7 @@
/datum/supply_pack/engineering/engine
name = "Emitter Crate"
cost = 1500
- access = GLOB.access_ce
+ access = ACCESS_CE
contains = list(/obj/machinery/power/emitter,
/obj/machinery/power/emitter)
crate_name = "emitter crate"
@@ -676,7 +676,7 @@
/datum/supply_pack/engineering/engine/supermatter_shard
name = "Supermatter Shard Crate"
cost = 10000
- access = GLOB.access_ce
+ access = ACCESS_CE
contains = list(/obj/machinery/power/supermatter_shard)
crate_name = "supermatter shard crate"
crate_type = /obj/structure/closet/crate/secure/engineering
@@ -713,7 +713,7 @@
/datum/supply_pack/engineering/shuttle_engine
name = "Shuttle Engine Crate"
cost = 5000
- access = GLOB.access_ce
+ access = ACCESS_CE
contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo)
crate_name = "shuttle engine crate"
crate_type = /obj/structure/closet/crate/secure/engineering
@@ -798,7 +798,7 @@
/datum/supply_pack/medical/virus
name = "Virus Crate"
cost = 2500
- access = GLOB.access_cmo
+ access = ACCESS_CMO
contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
/obj/item/weapon/reagent_containers/glass/bottle/cold,
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion,
@@ -863,7 +863,7 @@
/datum/supply_pack/science/robotics
name = "Robotics Assembly Crate"
cost = 1000
- access = GLOB.access_robotics
+ access = ACCESS_ROBOTICS
contains = list(/obj/item/device/assembly/prox_sensor,
/obj/item/device/assembly/prox_sensor,
/obj/item/device/assembly/prox_sensor,
@@ -877,7 +877,7 @@
/datum/supply_pack/science/robotics/mecha_ripley
name = "Circuit Crate (Ripley APLU)"
cost = 3000
- access = GLOB.access_robotics
+ access = ACCESS_ROBOTICS
contains = list(/obj/item/weapon/book/manual/ripley_build_and_repair,
/obj/item/weapon/circuitboard/mecha/ripley/main,
/obj/item/weapon/circuitboard/mecha/ripley/peripherals)
@@ -887,7 +887,7 @@
/datum/supply_pack/science/robotics/mecha_odysseus
name = "Circuit Crate (Odysseus)"
cost = 2500
- access = GLOB.access_robotics
+ access = ACCESS_ROBOTICS
contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals,
/obj/item/weapon/circuitboard/mecha/odysseus/main)
crate_name = "\improper Odysseus circuit crate"
@@ -896,7 +896,7 @@
/datum/supply_pack/science/plasma
name = "Plasma Assembly Crate"
cost = 1000
- access = GLOB.access_tox_storage
+ access = ACCESS_TOX_STORAGE
contains = list(/obj/item/weapon/tank/internals/plasma,
/obj/item/weapon/tank/internals/plasma,
/obj/item/weapon/tank/internals/plasma,
@@ -915,7 +915,7 @@
/datum/supply_pack/science/shieldwalls
name = "Shield Generators"
cost = 2000
- access = GLOB.access_teleporter
+ access = ACCESS_TELEPORTER
contains = list(/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
@@ -926,7 +926,7 @@
/datum/supply_pack/science/transfer_valves
name = "Tank Transfer Valves Crate"
cost = 6000
- access = GLOB.access_rd
+ access = ACCESS_RD
contains = list(/obj/item/device/transfer_valve,
/obj/item/device/transfer_valve)
crate_name = "tank transfer valves crate"
@@ -936,7 +936,7 @@
/datum/supply_pack/science/bz_canister
name = "BZ Canister"
cost = 2000
- access_any = list(GLOB.access_rd, GLOB.access_atmospherics)
+ access_any = list(ACCESS_RD, ACCESS_ATMOSPHERICS)
contains = list(/obj/machinery/portable_atmospherics/canister/bz)
crate_name = "bz canister crate"
crate_type = /obj/structure/closet/crate/secure/science
@@ -945,7 +945,7 @@
/datum/supply_pack/science/freon_canister
name = "Freon Canister"
cost = 6000
- access_any = list(GLOB.access_rd, GLOB.access_atmospherics)
+ access_any = list(ACCESS_RD, ACCESS_ATMOSPHERICS)
contains = list(/obj/machinery/portable_atmospherics/canister/freon)
crate_name = "freon canister crate"
crate_type = /obj/structure/closet/crate/secure/science
@@ -954,7 +954,7 @@
/datum/supply_pack/science/research
name = "Machine Prototype Crate"
cost = 8000
- access = GLOB.access_research
+ access = ACCESS_RESEARCH
contains = list(/obj/item/device/machineprototype)
crate_name = "machine prototype crate"
crate_type = /obj/structure/closet/crate/secure/science
@@ -1010,7 +1010,7 @@
contains = list(/obj/item/weapon/storage/backpack/duffelbag/clown/cream_pie)
crate_name = "party equipment crate"
contraband = TRUE
- access = GLOB.access_theatre
+ access = ACCESS_THEATRE
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/organic/monkey
@@ -1135,7 +1135,7 @@
/datum/supply_pack/organic/hydroponics/hydrotank
name = "Hydroponics Backpack Crate"
cost = 1000
- access = GLOB.access_hydroponics
+ access = ACCESS_HYDROPONICS
contains = list(/obj/item/weapon/watertank)
crate_name = "hydroponics backpack crate"
crate_type = /obj/structure/closet/crate/secure
@@ -1308,7 +1308,7 @@
/datum/supply_pack/misc/minerkit
name = "Shaft Miner Starter Kit"
cost = 2500
- access = GLOB.access_qm
+ access = ACCESS_QM
contains = list(/obj/item/weapon/pickaxe/mini,
/obj/item/clothing/glasses/meson,
/obj/item/device/t_scanner/adv_mining_scanner/lesser,
@@ -1490,7 +1490,7 @@
/datum/supply_pack/misc/janitor/janitank
name = "Janitor Backpack Crate"
cost = 1000
- access = GLOB.access_janitor
+ access = ACCESS_JANITOR
contains = list(/obj/item/weapon/watertank/janitor)
crate_name = "janitor backpack crate"
crate_type = /obj/structure/closet/crate/secure
@@ -1523,7 +1523,7 @@
/datum/supply_pack/misc/costume
name = "Standard Costume Crate"
cost = 1000
- access = GLOB.access_theatre
+ access = ACCESS_THEATRE
contains = list(/obj/item/weapon/storage/backpack/clown,
/obj/item/clothing/shoes/clown_shoes,
/obj/item/clothing/mask/gas/clown_hat,
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index e9b877a3ac..484e09c5ad 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -30,6 +30,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/UI_style = "Midnight"
+ var/buttons_locked = FALSE
var/hotkeys = FALSE
var/tgui_fancy = TRUE
var/tgui_lock = TRUE
@@ -278,6 +279,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "General Settings"
dat += "UI Style: [UI_style] "
dat += "Keybindings: [(hotkeys) ? "Hotkeys" : "Default"] "
+ dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"] "
dat += "tgui Style: [(tgui_fancy) ? "Fancy" : "No Frills"] "
dat += "tgui Monitors: [(tgui_lock) ? "Primary" : "All"] "
dat += "Window Flashing: [(windowflashing) ? "Yes" : "No"] "
@@ -1497,7 +1499,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("hotkeys")
hotkeys = !hotkeys
-
+ if("action_buttons")
+ buttons_locked = !buttons_locked
if("tgui_fancy")
tgui_fancy = !tgui_fancy
if("tgui_lock")
diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm
index 943999aecc..d56b6e0619 100644
--- a/code/modules/client/preferences_toggles.dm
+++ b/code/modules/client/preferences_toggles.dm
@@ -174,8 +174,8 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, Toggle_Soundscape)()
to_chat(usr, "You will now hear ambient sounds.")
else
to_chat(usr, "You will no longer hear ambient sounds.")
- usr << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1)
- usr << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
+ usr.stop_sound_channel(CHANNEL_AMBIENCE)
+ usr.stop_sound_channel(CHANNEL_BUZZ)
SSblackbox.add_details("preferences_verb","Toggle Ambience|[usr.client.prefs.toggles & SOUND_AMBIENCE]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/verbs/menu/Settings/Sound/Toggle_Soundscape/Get_checked(client/C)
return C.prefs.toggles & SOUND_AMBIENCE
@@ -191,7 +191,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_ship_ambience)()
to_chat(usr, "You will now hear ship ambience.")
else
to_chat(usr, "You will no longer hear ship ambience.")
- usr << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
+ usr.stop_sound_channel(CHANNEL_BUZZ)
usr.client.ambience_playing = 0
SSblackbox.add_details("preferences_verb", "Toggle Ship Ambience|[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE]") //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^)
/datum/verbs/menu/Settings/Sound/toggle_ship_ambience/Get_checked(client/C)
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 32d6b1fc4b..f7d396f9ee 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -50,9 +50,9 @@
var/obj/old_headgear = target
var/obj/new_headgear
- if(istype(old_headgear,/obj/item/clothing/head/chameleon/drone))
+ if(istype(old_headgear, /obj/item/clothing/head/chameleon/drone))
new_headgear = new /obj/item/clothing/mask/chameleon/drone()
- else if(istype(old_headgear,/obj/item/clothing/mask/chameleon/drone))
+ else if(istype(old_headgear, /obj/item/clothing/mask/chameleon/drone))
new_headgear = new /obj/item/clothing/head/chameleon/drone()
else
to_chat(owner, "You shouldn't be able to toggle a camogear helmetmask if you're not wearing it")
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index ea762f388a..af0a4a7518 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -49,7 +49,7 @@
if(pockets && over_object == M)
return pockets.MouseDrop(over_object)
- if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ if(istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech
return
if(!M.incapacitated() && loc == M && istype(over_object, /obj/screen/inventory/hand))
@@ -331,11 +331,6 @@ BLIND // can't see anything
var/mob/M = loc
M.update_inv_wear_mask()
-
-//Override this to modify speech like luchador masks.
-/obj/item/clothing/mask/proc/speechModification(message)
- return message
-
//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
/obj/item/clothing/mask/proc/adjustmask(mob/living/user)
if(user && user.incapacitated())
@@ -499,7 +494,7 @@ BLIND // can't see anything
permeability_coefficient = 0.02
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals)
slowdown = 1
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index 012a446b1d..7908964b1c 100644
--- a/code/modules/clothing/glasses/engine_goggles.dm
+++ b/code/modules/clothing/glasses/engine_goggles.dm
@@ -90,7 +90,7 @@
/obj/item/clothing/glasses/meson/engine/update_icon()
icon_state = mesons_on ? "trayson-meson" : "trayson-tray"
- if(istype(loc,/mob/living/carbon/human/))
+ if(istype(loc, /mob/living/carbon/human/))
var/mob/living/carbon/human/user = loc
if(user.glasses == src)
user.update_inv_glasses()
@@ -116,7 +116,7 @@
/obj/item/clothing/glasses/meson/engine/tray/update_icon()
icon_state = "trayson-tray[on ? "" : "_off"]"
- if(istype(loc,/mob/living/carbon/human/))
+ if(istype(loc, /mob/living/carbon/human/))
var/mob/living/carbon/human/user = loc
if(user.glasses == src)
user.update_inv_glasses()
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 95082d8fd5..1713830c6c 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -282,3 +282,19 @@
name = "magnificent crown"
desc = "A crown worn by only the highest emperors of the land."
icon_state = "fancycrown"
+
+/obj/item/clothing/head/scarecrow_hat
+ name = "scarecrow hat"
+ desc = "A simple straw hat."
+ icon_state = "scarecrow_hat"
+
+/obj/item/clothing/head/pharoah
+ name = "pharoah hat"
+ desc = "Walk like an Egyptian."
+ icon_state = "pharoah_hat"
+ icon_state = "pharoah_hat"
+
+/obj/item/clothing/head/jester/alt
+ name = "jester hat"
+ desc = "A hat with bells, to add some merryness to the suit."
+ icon_state = "jester_hat2"
\ No newline at end of file
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index c03f8c7290..6b91d1a265 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -200,4 +200,18 @@
/obj/item/clothing/mask/bandana/skull
name = "skull bandana"
desc = "A fine black bandana with nanotech lining and a skull emblem."
- icon_state = "bandskull"
\ No newline at end of file
+ icon_state = "bandskull"
+
+/obj/item/clothing/mask/mummy
+ name = "mummy mask"
+ desc = "Ancient bandages."
+ icon_state = "mummy_mask"
+ item_state = "mummy_mask"
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+
+/obj/item/clothing/mask/scarecrow
+ name = "sack mask"
+ desc = "A burlap sack with eyeholes."
+ icon_state = "scarecrow_sack"
+ item_state = "scarecrow_sack"
+ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
\ No newline at end of file
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm
index 11283f8039..cd2b4c18d5 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert.dm
@@ -187,7 +187,7 @@
var/obj/item/weapon/card/id/W = H.wear_id
W.icon_state = "centcom"
W.access = get_centcom_access("Centcom Official")
- W.access += GLOB.access_weapons
+ W.access += ACCESS_WEAPONS
W.assignment = "Centcom Official"
W.registered_name = H.real_name
W.update_label()
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index f1287195d2..3be1bfbbf0 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -87,6 +87,11 @@
else
footstep++
+/obj/item/clothing/shoes/clown_shoes/jester
+ name = "jester shoes"
+ desc = "A court jesters shoes, updated with modern squeaking technology."
+ icon_state = "jester_shoes"
+
/obj/item/clothing/shoes/jackboots
name = "jackboots"
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index ac82faba2d..dfe85c3092 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -906,8 +906,8 @@
jetpack = null
var/flightpack
var/flight = FALSE
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
- actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet,/datum/action/item_action/flightsuit/toggle_boots,/datum/action/item_action/flightsuit/toggle_flightpack,/datum/action/item_action/flightsuit/lock_suit)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/gun, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs)
+ actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet, /datum/action/item_action/flightsuit/toggle_boots, /datum/action/item_action/flightsuit/toggle_flightpack, /datum/action/item_action/flightsuit/lock_suit)
armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 100)
var/maint_panel = FALSE
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 6d13145626..00f622b751 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -65,7 +65,7 @@
item_state = "eng_hardsuit"
max_integrity = 300
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/t_scanner, /obj/item/weapon/construction/rcd, /obj/item/weapon/pipe_dispenser)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/device/t_scanner, /obj/item/weapon/construction/rcd, /obj/item/weapon/pipe_dispenser)
siemens_coefficient = 0
var/obj/item/clothing/head/helmet/space/hardsuit/helmet
actions_types = list(/datum/action/item_action/toggle_helmet)
@@ -203,7 +203,7 @@
heat_protection = CHEST|GROIN|LEGS|ARMS
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75)
brightness_on = 7
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator)
/obj/item/clothing/suit/space/hardsuit/mining
@@ -214,7 +214,7 @@
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/storage/bag/ore, /obj/item/weapon/pickaxe)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining
//Syndicate hardsuit
@@ -304,7 +304,7 @@
item_color = "syndi"
w_class = WEIGHT_CLASS_NORMAL
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90)
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/transforming/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
jetpack = /obj/item/weapon/tank/jetpack/suit
@@ -378,7 +378,7 @@
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF | ACID_PROOF
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
- allowed = list(/obj/item/weapon/teleportation_scroll,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/teleportation_scroll, /obj/item/weapon/tank/internals)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard
@@ -400,7 +400,7 @@
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement."
item_state = "medical_hardsuit"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/storage/firstaid, /obj/item/device/healthanalyzer, /obj/item/stack/medical)
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
@@ -444,7 +444,7 @@
item_state = "hardsuit-rd"
resistance_flags = ACID_PROOF | FIRE_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure.
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy/wormhole_projector,
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy/wormhole_projector,
/obj/item/weapon/hand_tele, /obj/item/device/aicard)
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd
@@ -466,7 +466,7 @@
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
@@ -508,7 +508,7 @@
desc = "A MK.II SWAT suit with streamlined joints and armor made out of superior materials, insulated against intense heat. The most advanced tactical armor available Usually reserved for heavy hitter corporate security, this one has a regal finish in Nanotrasen company colors. Better not let the assistants get a hold of it."
icon_state = "caparmor"
item_state = "capspacesuit"
- allowed = list(/obj/item/weapon/tank/internals, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
+ allowed = list(/obj/item/weapon/tank/internals, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs)
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -579,7 +579,7 @@
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
icon_state = "hardsuit-hos"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/gun, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 100, acid = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/current_charges = 3
@@ -698,7 +698,7 @@
item_state = "syndie_hardsuit"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/transforming/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
slowdown = 0
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm.rej b/code/modules/clothing/spacesuits/hardsuit.dm.rej
new file mode 100644
index 0000000000..93cffce359
--- /dev/null
+++ b/code/modules/clothing/spacesuits/hardsuit.dm.rej
@@ -0,0 +1,19 @@
+diff a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm (rejected hunks)
+@@ -304,7 +304,7 @@
+ item_color = "syndi"
+ w_class = WEIGHT_CLASS_NORMAL
+ armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90)
+- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
++ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
+ jetpack = /obj/item/weapon/tank/jetpack/suit
+
+@@ -698,7 +698,7 @@
+ item_state = "syndie_hardsuit"
+ item_color = "syndi"
+ armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
+- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
++ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
+ slowdown = 0
+
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index ce31dd7995..48f3a16830 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -34,7 +34,7 @@ Contains:
desc = "A prototype designed to replace the ageing MK.II SWAT suit. Based on the streamlined MK.II model, the traditional ceramic and graphene plate construction was replaced with plasteel, allowing superior armor against most threats. There's room for some kind of energy projection device on the back."
icon_state = "deathsquad"
item_state = "swat_suit"
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/kitchen/knife/combat)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals, /obj/item/weapon/kitchen/knife/combat)
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
@@ -48,7 +48,7 @@ Contains:
desc = "A tactical space suit first developed in a joint effort by the defunct IS-ERI and Nanotrasen in 20XX for military space operations. A tried and true workhorse, it is very difficult to move in but offers robust protection against all threats!"
icon_state = "heavy"
item_state = "swat_suit"
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/kitchen/knife/combat)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals, /obj/item/weapon/kitchen/knife/combat)
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 100, acid = 100)
strip_delay = 120
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -73,7 +73,7 @@ Contains:
slowdown = 0
flags_inv = 0
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
@@ -91,7 +91,7 @@ Contains:
icon_state = "void"
item_state = "void"
desc = "An old, NASA Centcom branch designed, dark red space suit."
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/multitool)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/device/multitool)
/obj/item/clothing/head/helmet/space/nasavoid/old
name = "Engineering Void Helmet"
@@ -105,7 +105,7 @@ Contains:
item_state = "void"
desc = "A Centcom engineering dark red space suit. Age has degraded the suit making is difficult to move around in."
slowdown = 4
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/multitool)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/device/multitool)
//Space santa outfit suit
/obj/item/clothing/head/helmet/space/santahat
@@ -146,7 +146,7 @@ Contains:
item_state = "pirate"
w_class = WEIGHT_CLASS_NORMAL
flags_inv = 0
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals, /obj/item/weapon/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals, /obj/item/weapon/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
slowdown = 0
armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75)
strip_delay = 40
@@ -170,7 +170,7 @@ Contains:
icon_state = "ert_command"
item_state = "ert_command"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
armor = list(melee = 30, bullet = 50, laser = 30, energy = 50, bomb = 50, bio = 100, rad = 100, fire = 0, acid = 95)
slowdown = 0
strip_delay = 130
@@ -245,7 +245,7 @@ Contains:
desc = "An advanced, light suit, fabricated from a mixture of synthetic feathers and space-resistant material. A gun holster appears to be intergrated into the suit and the wings appear to be stuck in 'freedom' mode."
icon_state = "freedom"
item_state = "freedom"
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
armor = list(melee = 20, bullet = 40, laser = 30,energy = 25, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm.rej b/code/modules/clothing/spacesuits/miscellaneous.dm.rej
new file mode 100644
index 0000000000..460a86c3dc
--- /dev/null
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm (rejected hunks)
+@@ -146,7 +146,7 @@ Contains:
+ item_state = "pirate"
+ w_class = WEIGHT_CLASS_NORMAL
+ flags_inv = 0
+- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals, /obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
++ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals, /obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
+ slowdown = 0
+ armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75)
+ strip_delay = 40
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 35fb43f87b..b2a70cd548 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -4,7 +4,7 @@
/obj/item/clothing/suit/space/eva/plasmaman
name = "EVA plasma envirosuit"
desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like it's smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges."
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/transforming/energy/sword, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank)
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
resistance_flags = FIRE_PROOF
icon_state = "plasmaman_suit"
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm.rej b/code/modules/clothing/spacesuits/plasmamen.dm.rej
new file mode 100644
index 0000000000..6a1030e468
--- /dev/null
+++ b/code/modules/clothing/spacesuits/plasmamen.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm (rejected hunks)
+@@ -4,7 +4,7 @@
+ /obj/item/clothing/suit/space/eva/plasmaman
+ name = "EVA plasma envirosuit"
+ desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like it's smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges."
+- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
++ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/energy/sword, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank)
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
+ resistance_flags = FIRE_PROOF
+ icon_state = "plasmaman_suit"
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 5c64764813..993510839a 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -1,147 +1,147 @@
-//Regular syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate
- name = "red space helmet"
- icon_state = "syndicate"
- item_state = "syndicate"
- desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
- armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
-
-/obj/item/clothing/suit/space/syndicate
- name = "red space suit"
- icon_state = "syndicate"
- item_state = "space_suit_syndicate"
- desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
- w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
- armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
-
-
-//Green syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/green
- name = "green space helmet"
- icon_state = "syndicate-helm-green"
- item_state = "syndicate-helm-green"
-
-/obj/item/clothing/suit/space/syndicate/green
- name = "green space suit"
- icon_state = "syndicate-green"
- item_state = "syndicate-green"
-
-
-//Dark green syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/green/dark
- name = "dark green space helmet"
- icon_state = "syndicate-helm-green-dark"
- item_state = "syndicate-helm-green-dark"
-
-/obj/item/clothing/suit/space/syndicate/green/dark
- name = "dark green space suit"
- icon_state = "syndicate-green-dark"
- item_state = "syndicate-green-dark"
-
-
-//Orange syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/orange
- name = "orange space helmet"
- icon_state = "syndicate-helm-orange"
- item_state = "syndicate-helm-orange"
-
-/obj/item/clothing/suit/space/syndicate/orange
- name = "orange space suit"
- icon_state = "syndicate-orange"
- item_state = "syndicate-orange"
-
-//Blue syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/blue
- name = "blue space helmet"
- icon_state = "syndicate-helm-blue"
- item_state = "syndicate-helm-blue"
-
-/obj/item/clothing/suit/space/syndicate/blue
- name = "blue space suit"
- icon_state = "syndicate-blue"
- item_state = "syndicate-blue"
-
-
-//Black syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black
- name = "black space helmet"
- icon_state = "syndicate-helm-black"
- item_state = "syndicate-helm-black"
-
-/obj/item/clothing/suit/space/syndicate/black
- name = "black space suit"
- icon_state = "syndicate-black"
- item_state = "syndicate-black"
-
-
-//Black-green syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/green
- name = "black space helmet"
- icon_state = "syndicate-helm-black-green"
- item_state = "syndicate-helm-black-green"
-
-/obj/item/clothing/suit/space/syndicate/black/green
- name = "black and green space suit"
- icon_state = "syndicate-black-green"
- item_state = "syndicate-black-green"
-
-
-//Black-blue syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/blue
- name = "black space helmet"
- icon_state = "syndicate-helm-black-blue"
- item_state = "syndicate-helm-black-blue"
-
-/obj/item/clothing/suit/space/syndicate/black/blue
- name = "black and blue space suit"
- icon_state = "syndicate-black-blue"
- item_state = "syndicate-black-blue"
-
-
-//Black medical syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/med
- name = "black space helmet"
- icon_state = "syndicate-helm-black-med"
- item_state = "syndicate-helm-black"
-
-/obj/item/clothing/suit/space/syndicate/black/med
- name = "green space suit"
- icon_state = "syndicate-black-med"
- item_state = "syndicate-black"
-
-
-//Black-orange syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/orange
- name = "black space helmet"
- icon_state = "syndicate-helm-black-orange"
- item_state = "syndicate-helm-black"
-
-/obj/item/clothing/suit/space/syndicate/black/orange
- name = "black and orange space suit"
- icon_state = "syndicate-black-orange"
- item_state = "syndicate-black"
-
-
-//Black-red syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/red
- name = "black space helmet"
- icon_state = "syndicate-helm-black-red"
- item_state = "syndicate-helm-black-red"
-
-/obj/item/clothing/suit/space/syndicate/black/red
- name = "black and red space suit"
- icon_state = "syndicate-black-red"
- item_state = "syndicate-black-red"
-
-
-//Black with yellow/red engineering syndicate space suit
-/obj/item/clothing/head/helmet/space/syndicate/black/engie
- name = "black space helmet"
- icon_state = "syndicate-helm-black-engie"
- item_state = "syndicate-helm-black"
-
-/obj/item/clothing/suit/space/syndicate/black/engie
- name = "black engineering space suit"
- icon_state = "syndicate-black-engie"
- item_state = "syndicate-black"
+//Regular syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate
+ name = "red space helmet"
+ icon_state = "syndicate"
+ item_state = "syndicate"
+ desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
+ armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
+
+/obj/item/clothing/suit/space/syndicate
+ name = "red space suit"
+ icon_state = "syndicate"
+ item_state = "space_suit_syndicate"
+ desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
+ w_class = WEIGHT_CLASS_NORMAL
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/transforming/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
+ armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
+
+
+//Green syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/green
+ name = "green space helmet"
+ icon_state = "syndicate-helm-green"
+ item_state = "syndicate-helm-green"
+
+/obj/item/clothing/suit/space/syndicate/green
+ name = "green space suit"
+ icon_state = "syndicate-green"
+ item_state = "syndicate-green"
+
+
+//Dark green syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/green/dark
+ name = "dark green space helmet"
+ icon_state = "syndicate-helm-green-dark"
+ item_state = "syndicate-helm-green-dark"
+
+/obj/item/clothing/suit/space/syndicate/green/dark
+ name = "dark green space suit"
+ icon_state = "syndicate-green-dark"
+ item_state = "syndicate-green-dark"
+
+
+//Orange syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/orange
+ name = "orange space helmet"
+ icon_state = "syndicate-helm-orange"
+ item_state = "syndicate-helm-orange"
+
+/obj/item/clothing/suit/space/syndicate/orange
+ name = "orange space suit"
+ icon_state = "syndicate-orange"
+ item_state = "syndicate-orange"
+
+//Blue syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/blue
+ name = "blue space helmet"
+ icon_state = "syndicate-helm-blue"
+ item_state = "syndicate-helm-blue"
+
+/obj/item/clothing/suit/space/syndicate/blue
+ name = "blue space suit"
+ icon_state = "syndicate-blue"
+ item_state = "syndicate-blue"
+
+
+//Black syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black"
+ item_state = "syndicate-helm-black"
+
+/obj/item/clothing/suit/space/syndicate/black
+ name = "black space suit"
+ icon_state = "syndicate-black"
+ item_state = "syndicate-black"
+
+
+//Black-green syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/green
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-green"
+ item_state = "syndicate-helm-black-green"
+
+/obj/item/clothing/suit/space/syndicate/black/green
+ name = "black and green space suit"
+ icon_state = "syndicate-black-green"
+ item_state = "syndicate-black-green"
+
+
+//Black-blue syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/blue
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-blue"
+ item_state = "syndicate-helm-black-blue"
+
+/obj/item/clothing/suit/space/syndicate/black/blue
+ name = "black and blue space suit"
+ icon_state = "syndicate-black-blue"
+ item_state = "syndicate-black-blue"
+
+
+//Black medical syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/med
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-med"
+ item_state = "syndicate-helm-black"
+
+/obj/item/clothing/suit/space/syndicate/black/med
+ name = "green space suit"
+ icon_state = "syndicate-black-med"
+ item_state = "syndicate-black"
+
+
+//Black-orange syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/orange
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-orange"
+ item_state = "syndicate-helm-black"
+
+/obj/item/clothing/suit/space/syndicate/black/orange
+ name = "black and orange space suit"
+ icon_state = "syndicate-black-orange"
+ item_state = "syndicate-black"
+
+
+//Black-red syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/red
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-red"
+ item_state = "syndicate-helm-black-red"
+
+/obj/item/clothing/suit/space/syndicate/black/red
+ name = "black and red space suit"
+ icon_state = "syndicate-black-red"
+ item_state = "syndicate-black-red"
+
+
+//Black with yellow/red engineering syndicate space suit
+/obj/item/clothing/head/helmet/space/syndicate/black/engie
+ name = "black space helmet"
+ icon_state = "syndicate-helm-black-engie"
+ item_state = "syndicate-helm-black"
+
+/obj/item/clothing/suit/space/syndicate/black/engie
+ name = "black engineering space suit"
+ icon_state = "syndicate-black-engie"
+ item_state = "syndicate-black"
diff --git a/code/modules/clothing/spacesuits/syndi.dm.rej b/code/modules/clothing/spacesuits/syndi.dm.rej
new file mode 100644
index 0000000000..2c05b046f0
--- /dev/null
+++ b/code/modules/clothing/spacesuits/syndi.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm (rejected hunks)
+@@ -12,7 +12,7 @@
+ item_state = "space_suit_syndicate"
+ desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
+ w_class = WEIGHT_CLASS_NORMAL
+- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
++ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/melee/energy/sword/saber, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals)
+ armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
+
+
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 1f8784217d..46e953f4d0 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -1,5 +1,5 @@
/obj/item/clothing/suit/armor
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/kitchen/knife/combat,/obj/item/weapon/tank/internals/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic, /obj/item/weapon/kitchen/knife/combat, /obj/item/weapon/tank/internals/emergency_oxygen)
body_parts_covered = CHEST
cold_protection = CHEST|GROIN
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
@@ -153,7 +153,7 @@
name = "detective's armor vest"
desc = "An armored vest with a detective's badge on it."
icon_state = "detective-armor"
- allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder,/obj/item/weapon/melee/classic_baton)
+ allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter, /obj/item/device/detective_scanner, /obj/item/device/taperecorder, /obj/item/weapon/melee/classic_baton)
resistance_flags = FLAMMABLE
dog_fashion = null
@@ -347,7 +347,7 @@
item_state = "centcom"
w_class = WEIGHT_CLASS_BULKY
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals/emergency_oxygen)
flags = THICKMATERIAL
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 50757bb364..f2251c5ce0 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -21,7 +21,7 @@
flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
slowdown = 1
- allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray)
+ allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/pen, /obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 30, acid = 100)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
strip_delay = 70
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index bcf2e49426..a9b667a5aa 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -76,7 +76,7 @@
name = "drake armour"
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake. "
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear)
armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 100, acid = 100)
hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 6774bf3f9e..e752090141 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -10,7 +10,7 @@
item_state = "apron"
blood_overlay_type = "armor"
body_parts_covered = CHEST|GROIN
- allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/device/plant_analyzer,/obj/item/seeds,/obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/spray/pestspray,/obj/item/weapon/hatchet,/obj/item/weapon/storage/bag/plants)
+ allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/cultivator, /obj/item/weapon/reagent_containers/spray/pestspray, /obj/item/weapon/hatchet, /obj/item/weapon/storage/bag/plants)
//Captain
/obj/item/clothing/suit/captunic
@@ -94,7 +94,7 @@
item_state = "det_suit"
blood_overlay_type = "coat"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder,/obj/item/weapon/melee/classic_baton)
+ allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter, /obj/item/device/detective_scanner, /obj/item/device/taperecorder, /obj/item/weapon/melee/classic_baton)
armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 45)
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
@@ -112,7 +112,7 @@
icon_state = "hazard"
item_state = "hazard"
blood_overlay_type = "armor"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,/obj/item/device/radio)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/device/radio)
resistance_flags = 0
//Lawyer
/obj/item/clothing/suit/toggle/lawyer
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index c4d2678650..f980504cfe 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -5,7 +5,7 @@
item_state = "labcoat"
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
- allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/soap,/obj/item/device/sensor_device,/obj/item/weapon/tank/internals/emergency_oxygen)
+ allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/weapon/dnainjector, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/pill, /obj/item/weapon/storage/pill_bottle, /obj/item/weapon/paper, /obj/item/weapon/melee/classic_baton/telescopic, /obj/item/weapon/soap, /obj/item/device/sensor_device, /obj/item/weapon/tank/internals/emergency_oxygen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50)
togglename = "buttons"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 873f15f346..71075142c6 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -69,7 +69,7 @@
icon_state = "judge"
item_state = "judge"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/stack/spacecash)
+ allowed = list(/obj/item/weapon/storage/fancy/cigarettes, /obj/item/stack/spacecash)
flags_inv = HIDEJUMPSUIT
@@ -87,7 +87,7 @@
item_state = "syndicate-black-red"
desc = "A plastic replica of the Syndicate space suit. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
resistance_flags = 0
@@ -134,7 +134,7 @@
item_state = "owl_wings"
togglename = "wings"
body_parts_covered = ARMS|CHEST
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic)
actions_types = list(/datum/action/item_action/toggle_wings)
/obj/item/clothing/suit/toggle/owlwings/griffinwings
@@ -345,7 +345,7 @@
desc = "Aviators not included."
icon_state = "bomberjacket"
item_state = "brownjsuit"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/radio)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter, /obj/item/device/radio)
body_parts_covered = CHEST|GROIN|ARMS
cold_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
@@ -357,7 +357,7 @@
item_state = "hostrench"
resistance_flags = 0
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/weapon/gun/ballistic/automatic/pistol,/obj/item/weapon/gun/ballistic/revolver,/obj/item/weapon/gun/ballistic/revolver/detective,/obj/item/device/radio)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter, /obj/item/weapon/gun/ballistic/automatic/pistol, /obj/item/weapon/gun/ballistic/revolver, /obj/item/weapon/gun/ballistic/revolver/detective, /obj/item/device/radio)
/obj/item/clothing/suit/jacket/leather/overcoat
name = "leather overcoat"
@@ -387,7 +387,7 @@
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket"
item_state = "militaryjacket"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/weapon/gun/ballistic/automatic/pistol,/obj/item/weapon/gun/ballistic/revolver,/obj/item/weapon/gun/ballistic/revolver/detective,/obj/item/device/radio)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter, /obj/item/weapon/gun/ballistic/automatic/pistol, /obj/item/weapon/gun/ballistic/revolver, /obj/item/weapon/gun/ballistic/revolver/detective, /obj/item/device/radio)
/obj/item/clothing/suit/jacket/letterman
name = "letterman jacket"
@@ -434,7 +434,7 @@
cold_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter)
/obj/item/clothing/head/hooded/winterhood
name = "winter hood"
@@ -450,7 +450,7 @@
icon_state = "coatcaptain"
item_state = "coatcaptain"
armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/melee/classic_baton/telescopic)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic)
hoodtype = /obj/item/clothing/head/hooded/winterhood/captain
/obj/item/clothing/head/hooded/winterhood/captain
@@ -461,7 +461,7 @@
icon_state = "coatsecurity"
item_state = "coatsecurity"
armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 45)
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight,/obj/item/weapon/melee/classic_baton/telescopic)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic)
hoodtype = /obj/item/clothing/head/hooded/winterhood/security
/obj/item/clothing/head/hooded/winterhood/security
@@ -471,7 +471,7 @@
name = "medical winter coat"
icon_state = "coatmedical"
item_state = "coatmedical"
- allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic)
+ allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/weapon/dnainjector, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/pill, /obj/item/weapon/storage/pill_bottle, /obj/item/weapon/paper, /obj/item/weapon/melee/classic_baton/telescopic)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45)
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical
@@ -482,7 +482,7 @@
name = "science winter coat"
icon_state = "coatscience"
item_state = "coatscience"
- allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic)
+ allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/weapon/dnainjector, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/pill, /obj/item/weapon/storage/pill_bottle, /obj/item/weapon/paper, /obj/item/weapon/melee/classic_baton/telescopic)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0)
hoodtype = /obj/item/clothing/head/hooded/winterhood/science
@@ -494,7 +494,7 @@
icon_state = "coatengineer"
item_state = "coatengineer"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner, /obj/item/weapon/construction/rcd, /obj/item/weapon/pipe_dispenser)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/weapon/construction/rcd, /obj/item/weapon/pipe_dispenser)
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
/obj/item/clothing/head/hooded/winterhood/engineering
@@ -513,7 +513,7 @@
name = "hydroponics winter coat"
icon_state = "coathydro"
item_state = "coathydro"
- allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/device/plant_analyzer,/obj/item/seeds,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/spray/pestspray,/obj/item/weapon/hatchet,/obj/item/weapon/storage/bag/plants)
+ allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/cultivator, /obj/item/weapon/reagent_containers/spray/pestspray, /obj/item/weapon/hatchet, /obj/item/weapon/storage/bag/plants)
hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro
/obj/item/clothing/head/hooded/winterhood/hydro
@@ -532,7 +532,7 @@
name = "mining winter coat"
icon_state = "coatminer"
item_state = "coatminer"
- allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter)
+ allowed = list(/obj/item/weapon/pickaxe, /obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/lighter)
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
hoodtype = /obj/item/clothing/head/hooded/winterhood/miner
diff --git a/code/modules/clothing/suits/miscellaneous.dm.rej b/code/modules/clothing/suits/miscellaneous.dm.rej
new file mode 100644
index 0000000000..e8ab225870
--- /dev/null
+++ b/code/modules/clothing/suits/miscellaneous.dm.rej
@@ -0,0 +1,19 @@
+diff a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm (rejected hunks)
+@@ -450,7 +450,7 @@
+ icon_state = "coatcaptain"
+ item_state = "coatcaptain"
+ armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
+- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic)
++ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic)
+ hoodtype = /obj/item/clothing/head/hooded/winterhood/captain
+
+ /obj/item/clothing/head/hooded/winterhood/captain
+@@ -461,7 +461,7 @@
+ icon_state = "coatsecurity"
+ item_state = "coatsecurity"
+ armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 45)
+- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/ballistic,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic)
++ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/weapon/melee/classic_baton/telescopic)
+ hoodtype = /obj/item/clothing/head/hooded/winterhood/security
+
+ /obj/item/clothing/head/hooded/winterhood/security
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 64f30acc53..95d6db5d4a 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -18,7 +18,7 @@
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/extinguisher, /obj/item/weapon/crowbar)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/extinguisher, /obj/item/weapon/crowbar)
slowdown = 1
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
@@ -99,7 +99,7 @@
/obj/item/clothing/suit/bomb_suit/security
icon_state = "bombsuitsec"
item_state = "bombsuitsec"
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
+ allowed = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs)
/*
* Radiation protection
@@ -126,7 +126,7 @@
permeability_coefficient = 0.50
flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/geiger_counter)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/device/geiger_counter)
slowdown = 1.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30)
strip_delay = 60
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 9e38427734..062f15b5b2 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -585,6 +585,9 @@
item_color = "jester"
can_adjust = 0
+/obj/item/clothing/under/jester/alt
+ icon_state = "jester2"
+
/obj/item/clothing/under/geisha
name = "geisha suit"
desc = "Cute space ninja senpai not included."
@@ -667,3 +670,36 @@
icon_state = "hostanclothes"
item_state = "hostanclothes"
item_color = "hostanclothes"
+
+/obj/item/clothing/under/mummy
+ name = "mummy wrapping"
+ desc = "Return the slab or suffer my stale references."
+ icon_state = "mummy"
+ item_state = "mummy"
+ item_color = "mummy"
+ body_parts_covered = CHEST|GROIN|ARMS|LEGS
+ fitted = NO_FEMALE_UNIFORM
+ can_adjust = FALSE
+ resistance_flags = NONE
+
+/obj/item/clothing/under/scarecrow
+ name = "scarecrow clothes"
+ desc = "Perfect camouflage for hiding in botany."
+ icon_state = "scarecrow"
+ item_state = "scarecrow"
+ item_color = "scarecrow"
+ body_parts_covered = CHEST|GROIN|ARMS|LEGS
+ fitted = NO_FEMALE_UNIFORM
+ can_adjust = FALSE
+ resistance_flags = NONE
+
+/obj/item/clothing/under/skeleton
+ name = "skeleton jumpsuit"
+ desc = "A black jumpsuit with a white bone pattern printed on it. Spooky!"
+ icon_state = "skeleton"
+ item_state = "skeleton"
+ item_color = "skeleton"
+ body_parts_covered = CHEST|GROIN|ARMS|LEGS
+ fitted = NO_FEMALE_UNIFORM
+ can_adjust = FALSE
+ resistance_flags = NONE
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index f6337e886a..2fc97bf06e 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -229,7 +229,7 @@
/datum/crafting_recipe/dragonsbreath
name = "Dragonsbreath Shell"
result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
- reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,/datum/reagent/phosphorus = 5)
+ reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5)
tools = list(/obj/item/weapon/screwdriver)
time = 5
category = CAT_WEAPONRY
@@ -394,7 +394,7 @@
name = "Paper Frames"
result = /obj/item/stack/sheet/paperframes/five
time = 10
- reqs = list(/obj/item/stack/sheet/mineral/wood = 5,/obj/item/weapon/paper = 20)
+ reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/weapon/paper = 20)
category = CAT_MISC
/datum/crafting_recipe/naturalpaper
diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm
index 57e4664bf7..1ab499fcb5 100644
--- a/code/modules/detectivework/detective_work.dm
+++ b/code/modules/detectivework/detective_work.dm
@@ -3,7 +3,7 @@
/atom/var/list/suit_fibers
/atom/proc/add_fibers(mob/living/carbon/human/M)
- if(M.gloves && istype(M.gloves,/obj/item/clothing/))
+ if(M.gloves && istype(M.gloves, /obj/item/clothing/))
var/obj/item/clothing/gloves/G = M.gloves
if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects
if(add_blood(G.blood_DNA)) //only reduces the bloodiness of our gloves if the item wasn't already bloody
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index dbfc2caee2..4c0e4b253b 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -34,7 +34,7 @@
return
if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up.
- if(istype(I.loc,/obj/item/weapon/storage)) //in a container.
+ if(istype(I.loc, /obj/item/weapon/storage)) //in a container.
var/obj/item/weapon/storage/U = I.loc
U.remove_from_storage(I, src)
if(user.is_holding(I))
diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm
index a4dec416bf..79e99a1931 100644
--- a/code/modules/events/_event.dm
+++ b/code/modules/events/_event.dm
@@ -56,7 +56,7 @@
return TRUE
/datum/round_event_control/proc/preRunEvent()
- if(!ispath(typepath,/datum/round_event))
+ if(!ispath(typepath, /datum/round_event))
return EVENT_CANT_RUN
triggering = TRUE
diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm
index e70a58a632..161fcd8c16 100644
--- a/code/modules/events/alien_infestation.dm
+++ b/code/modules/events/alien_infestation.dm
@@ -2,8 +2,9 @@
name = "Alien Infestation"
typepath = /datum/round_event/ghost_role/alien_infestation
weight = 5
+ earliest_start = 24000 //40 min
- min_players = 10
+ min_players = 20 //Avoid lowpop rounds
max_occurrences = 1
/datum/round_event/ghost_role/alien_infestation
diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm
index 0e4970ef6a..3636c3e320 100644
--- a/code/modules/events/false_alarm.dm
+++ b/code/modules/events/false_alarm.dm
@@ -26,7 +26,7 @@
/proc/gather_false_events(players_amt, gamemode)
. = list()
for(var/datum/round_event_control/E in SSevents.control)
- if(istype(E,/datum/round_event_control/falsealarm))
+ if(istype(E, /datum/round_event_control/falsealarm))
continue
if(!E.canSpawnEvent(players_amt, gamemode))
continue
diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm
index 724b03d325..c9b1436f39 100644
--- a/code/modules/events/prison_break.dm
+++ b/code/modules/events/prison_break.dm
@@ -44,16 +44,16 @@
/datum/round_event/grey_tide/end()
for(var/area/A in areasToOpen)
for(var/obj/O in A)
- if(istype(O,/obj/machinery/power/apc))
+ if(istype(O, /obj/machinery/power/apc))
var/obj/machinery/power/apc/temp = O
temp.overload_lighting()
- else if(istype(O,/obj/structure/closet/secure_closet))
+ else if(istype(O, /obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/temp = O
temp.locked = FALSE
temp.update_icon()
- else if(istype(O,/obj/machinery/door/airlock))
+ else if(istype(O, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/temp = O
temp.prison_open()
- else if(istype(O,/obj/machinery/door_timer))
+ else if(istype(O, /obj/machinery/door_timer))
var/obj/machinery/door_timer/temp = O
temp.timer_end(forced = TRUE)
\ No newline at end of file
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 290dfb1e94..dc318cd2a1 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -363,17 +363,6 @@
if(!override)
qdel(src)
-/obj/structure/spacevine/attackby(obj/item/weapon/W, mob/user, params)
-
- if(istype(W, /obj/item/weapon/scythe))
- user.changeNext_move(CLICK_CD_MELEE)
- for(var/obj/structure/spacevine/B in orange(1,src))
- B.take_damage(W.force * 4, BRUTE, "melee", 1)
- return
- else
- return ..()
-
-
/obj/structure/spacevine/attacked_by(obj/item/I, mob/living/user)
var/damage_dealt = I.force
if(I.is_sharp())
diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm
index 98ae7ba6aa..5a38a439ed 100644
--- a/code/modules/events/wizard/rpgloot.dm
+++ b/code/modules/events/wizard/rpgloot.dm
@@ -11,7 +11,7 @@
if(!istype(I.rpg_loot))
I.rpg_loot = new(I)
- if(istype(I,/obj/item/weapon/storage))
+ if(istype(I, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = I
if(prob(upgrade_scroll_chance) && S.contents.len < S.storage_slots && !S.invisibility)
var/obj/item/upgradescroll/scroll = new
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 0b1187e9bc..c1b0a387e4 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -874,12 +874,12 @@ Gunshots/explosions/opening doors/less rare audio (done)
hal_screwyhud = 0
if("fake_alert")
- var/alert_type = pick("oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","tox_in_air","newlaw","nutrition","charge","weightless","fire","locked","hacked","temp","pressure")
+ var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","weightless","fire","locked","hacked","temp","pressure")
if(specific)
alert_type = specific
switch(alert_type)
- if("oxy")
- throw_alert("oxy", /obj/screen/alert/oxy, override = TRUE)
+ if("not_enough_oxy")
+ throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy, override = TRUE)
if("not_enough_tox")
throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox, override = TRUE)
if("not_enough_co2")
@@ -888,8 +888,8 @@ Gunshots/explosions/opening doors/less rare audio (done)
throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy, override = TRUE)
if("too_much_co2")
throw_alert("too_much_co2", /obj/screen/alert/too_much_co2, override = TRUE)
- if("tox_in_air")
- throw_alert("tox_in_air", /obj/screen/alert/tox_in_air, override = TRUE)
+ if("too_much_tox")
+ throw_alert("too_much_tox", /obj/screen/alert/too_much_tox, override = TRUE)
if("nutrition")
if(prob(50))
throw_alert("nutrition", /obj/screen/alert/fat, override = TRUE)
@@ -917,7 +917,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
if("hacked")
throw_alert("hacked", /obj/screen/alert/hacked, override = TRUE)
if("charge")
- throw_alert("charge",/obj/screen/alert/emptycell, override = TRUE)
+ throw_alert("charge", /obj/screen/alert/emptycell, override = TRUE)
sleep(rand(100,200))
clear_alert(alert_type, clear_override = TRUE)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index b776ed2920..30245589d4 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -167,6 +167,7 @@
icon_state = "coffee"
list_reagents = list("coffee" = 30)
spillable = 1
+ resistance_flags = FREEZE_PROOF
/obj/item/weapon/reagent_containers/food/drinks/ice
name = "Ice Cup"
@@ -197,6 +198,7 @@
name = "Dutch Hot Coco"
desc = "Made in Space South America."
list_reagents = list("hot_coco" = 30, "sugar" = 5)
+ resistance_flags = FREEZE_PROOF
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen
name = "Cup Ramen"
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index b8e85915b8..ce42cf7005 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -338,8 +338,8 @@
desc = "A throwing weapon used to ignite things, typically filled with an accelerant. Recommended highly by rioters and revolutionaries. Light and toss."
icon_state = "vodkabottle"
list_reagents = list()
- var/list/accelerants = list( /datum/reagent/consumable/ethanol,/datum/reagent/fuel,/datum/reagent/clf3,/datum/reagent/phlogiston,
- /datum/reagent/napalm,/datum/reagent/hellwater,/datum/reagent/toxin/plasma,/datum/reagent/toxin/spore_burning)
+ var/list/accelerants = list( /datum/reagent/consumable/ethanol, /datum/reagent/fuel, /datum/reagent/clf3, /datum/reagent/phlogiston,
+ /datum/reagent/napalm, /datum/reagent/hellwater, /datum/reagent/toxin/plasma, /datum/reagent/toxin/spore_burning)
var/active = 0
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list)
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index 0dffc93704..b8feddfa79 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -91,7 +91,7 @@
list_reagents = list("nuka_cola" = 50)
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
+ if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = I
if(reagents)
if(reagents.total_volume >= reagents.maximum_volume)
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 7a1682aedd..f2047ac092 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -37,7 +37,7 @@
to_chat(user, "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)].")
/obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params)
- if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks/customizable) && istype(I,/obj/item/weapon/reagent_containers/food/snacks))
+ if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks/customizable) && istype(I, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = I
if(I.w_class > WEIGHT_CLASS_SMALL)
to_chat(user, "The ingredient is too big for [src]!")
@@ -78,7 +78,7 @@
name = "[customname] [initial(name)]"
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/initialize_custom_food(obj/item/BASE, obj/item/I, mob/user)
- if(istype(BASE,/obj/item/weapon/reagent_containers))
+ if(istype(BASE, /obj/item/weapon/reagent_containers))
var/obj/item/weapon/reagent_containers/RC = BASE
RC.reagents.trans_to(src,RC.reagents.total_volume)
for(var/obj/O in BASE.contents)
@@ -288,7 +288,7 @@
w_class = WEIGHT_CLASS_NORMAL
/obj/item/weapon/reagent_containers/glass/bowl/attackby(obj/item/I,mob/user, params)
- if(istype(I,/obj/item/weapon/reagent_containers/food/snacks))
+ if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = I
if(I.w_class > WEIGHT_CLASS_SMALL)
to_chat(user, "The ingredient is too big for [src]!")
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index fe726211dc..25b7b99144 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -132,10 +132,10 @@
/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/storage))
+ if(istype(W, /obj/item/weapon/storage))
..() // -> item/attackby()
return 0
- if(istype(W,/obj/item/weapon/reagent_containers/food/snacks))
+ if(istype(W, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = W
if(custom_food_type && ispath(custom_food_type))
if(S.w_class > WEIGHT_CLASS_SMALL)
diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm
index ce18a40f2a..a0b2b34740 100644
--- a/code/modules/food_and_drinks/food/snacks_egg.dm
+++ b/code/modules/food_and_drinks/food/snacks_egg.dm
@@ -112,7 +112,7 @@
tastes = list("egg" = 1, "cheese" = 1)
/obj/item/weapon/reagent_containers/food/snacks/omelette/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/kitchen/fork))
+ if(istype(W, /obj/item/weapon/kitchen/fork))
var/obj/item/weapon/kitchen/fork/F = W
if(F.forkload)
to_chat(user, "You already have omelette on your fork!")
diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
index 9dd314e18c..c8430a39c3 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
@@ -41,8 +41,8 @@
/obj/machinery/juicer/attackby(obj/item/O, mob/user, params)
if(default_unfasten_wrench(user, O))
return
- if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
- istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
+ if (istype(O, /obj/item/weapon/reagent_containers/glass) || \
+ istype(O, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
if (beaker)
return 1
else
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 6df7ce9e44..d726a106e7 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -149,7 +149,7 @@
to_chat(user, "You insert [loaded] items into [src].")
- else if(O.w_class <= WEIGHT_CLASS_NORMAL && !istype(O,/obj/item/weapon/storage) && user.a_intent == INTENT_HELP)
+ else if(O.w_class <= WEIGHT_CLASS_NORMAL && !istype(O, /obj/item/weapon/storage) && user.a_intent == INTENT_HELP)
if (contents.len>=max_n_of_items)
to_chat(user, "[src] is full, you can't put anything in!")
return 1
@@ -271,7 +271,7 @@
/obj/machinery/microwave/proc/has_extra_item()
for (var/obj/O in contents)
if ( \
- !istype(O,/obj/item/weapon/reagent_containers/food) && \
+ !istype(O, /obj/item/weapon/reagent_containers/food) && \
!istype(O, /obj/item/weapon/grown) \
)
return 1
diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
index 09a0560357..8d3b8bae52 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
@@ -33,7 +33,7 @@
build_path = /obj/machinery/processor
/obj/item/weapon/circuitboard/machine/processor/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/screwdriver))
+ if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/processor)
name = "Slime Processor (Machine Board)"
build_path = /obj/machinery/processor/slime
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index c4cf9a5e54..2cb0631cb2 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -149,7 +149,7 @@
/obj/machinery/smartfridge/proc/accept_check(obj/item/O)
- if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/) || istype(O,/obj/item/weapon/grown/))
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O, /obj/item/seeds/) || istype(O, /obj/item/weapon/grown/))
return TRUE
return FALSE
@@ -160,7 +160,7 @@
to_chat(usr, "\the [O] is stuck to your hand, you cannot put it in \the [src]!")
return
else
- if(istype(O.loc,/obj/item/weapon/storage))
+ if(istype(O.loc, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = O.loc
S.remove_from_storage(O,src)
O.forceMove(src)
@@ -315,11 +315,11 @@
update_icon()
/obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O)
- if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/))
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/))
var/obj/item/weapon/reagent_containers/food/snacks/S = O
if(S.dried_type)
return TRUE
- if(istype(O,/obj/item/stack/sheet/wetleather/))
+ if(istype(O, /obj/item/stack/sheet/wetleather/))
return TRUE
return FALSE
@@ -363,9 +363,9 @@
desc = "A refrigerated storage unit for tasty tasty alcohol."
/obj/machinery/smartfridge/drinks/accept_check(obj/item/O)
- if(!istype(O,/obj/item/weapon/reagent_containers) || !O.reagents || !O.reagents.reagent_list.len)
+ if(!istype(O, /obj/item/weapon/reagent_containers) || !O.reagents || !O.reagents.reagent_list.len)
return FALSE
- if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
+ if(istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O, /obj/item/weapon/reagent_containers/food/drinks) || istype(O, /obj/item/weapon/reagent_containers/food/condiment))
return TRUE
// ----------------------------
@@ -375,7 +375,7 @@
desc = "A refrigerated storage unit for food."
/obj/machinery/smartfridge/food/accept_check(obj/item/O)
- if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/))
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/))
return TRUE
return FALSE
@@ -387,9 +387,9 @@
desc = "A refrigerated storage unit for slime extracts."
/obj/machinery/smartfridge/extract/accept_check(obj/item/O)
- if(istype(O,/obj/item/slime_extract))
+ if(istype(O, /obj/item/slime_extract))
return TRUE
- if(istype(O,/obj/item/device/slime_scanner))
+ if(istype(O, /obj/item/device/slime_scanner))
return TRUE
return FALSE
@@ -404,20 +404,20 @@
desc = "A refrigerated storage unit for medicine storage."
/obj/machinery/smartfridge/chemistry/accept_check(obj/item/O)
- if(istype(O,/obj/item/weapon/storage/pill_bottle))
+ if(istype(O, /obj/item/weapon/storage/pill_bottle))
if(O.contents.len)
for(var/obj/item/I in O)
if(!accept_check(I))
return FALSE
return TRUE
return FALSE
- if(!istype(O,/obj/item/weapon/reagent_containers))
+ if(!istype(O, /obj/item/weapon/reagent_containers))
return FALSE
- if(istype(O,/obj/item/weapon/reagent_containers/pill)) // empty pill prank ok
+ if(istype(O, /obj/item/weapon/reagent_containers/pill)) // empty pill prank ok
return TRUE
if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted
return FALSE
- if(istype(O,/obj/item/weapon/reagent_containers/syringe) || istype(O,/obj/item/weapon/reagent_containers/glass/bottle) || istype(O,/obj/item/weapon/reagent_containers/glass/beaker) || istype(O,/obj/item/weapon/reagent_containers/spray))
+ if(istype(O, /obj/item/weapon/reagent_containers/syringe) || istype(O, /obj/item/weapon/reagent_containers/glass/bottle) || istype(O, /obj/item/weapon/reagent_containers/glass/beaker) || istype(O, /obj/item/weapon/reagent_containers/spray))
return TRUE
return FALSE
@@ -442,7 +442,8 @@
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1,
/obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1,
/obj/item/weapon/reagent_containers/glass/bottle/plasma = 1,
- /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1)
+ /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1,
+ /obj/item/weapon/reagent_containers/glass/bottle/formaldehyde = 1)
// ----------------------------
// Disk """fridge"""
@@ -452,7 +453,7 @@
desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)."
/obj/machinery/smartfridge/disks/accept_check(obj/item/O)
- if(istype(O,/obj/item/weapon/disk/))
+ if(istype(O, /obj/item/weapon/disk/))
return TRUE
else
return FALSE
diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm
index 0c963ec70b..71c0bf2f1c 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -10,7 +10,7 @@
name = "pizza box"
desc = "A box suited for pizzas."
icon = 'icons/obj/food/containers.dmi'
- icon_state = "pizzabox1"
+ icon_state = "pizzabox"
item_state = "pizzabox"
var/open = FALSE
@@ -68,13 +68,30 @@
bomb_overlay.pixel_y = 5
add_overlay(bomb_overlay)
else
- icon_state = "pizzabox[boxes.len + 1]"
+ icon_state = "pizzabox"
+ var/current_offset = 3
+ for(var/V in boxes)
+ var/obj/item/pizzabox/P = V
+ var/mutable_appearance/box_overlay = mutable_appearance(P.icon, P.icon_state)
+ box_overlay.pixel_y = current_offset
+ add_overlay(box_overlay)
+ current_offset += 3
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
if(box.boxtag != "")
var/mutable_appearance/tag_overlay = mutable_appearance(icon, "pizzabox_tag")
tag_overlay.pixel_y = boxes.len * 3
add_overlay(tag_overlay)
+/obj/item/pizzabox/worn_overlays(isinhands, icon_file)
+ . = list()
+ var/current_offset = 2
+ if(isinhands)
+ for(var/V in boxes) //add EXTRA BOX per box
+ var/mutable_appearance/M = mutable_appearance(icon_file, item_state)
+ M.pixel_y = current_offset
+ current_offset += 2
+ . += M
+
/obj/item/pizzabox/attack_self(mob/user)
if(boxes.len > 0)
return
@@ -124,6 +141,7 @@
to_chat(user, "You remove the topmost [name] from the stack.")
topbox.update_icon()
update_icon()
+ user.regenerate_icons()
return
..()
@@ -134,23 +152,28 @@
var/list/add = list()
add += newbox
add += newbox.boxes
-
- if((boxes.len + 1) + add.len <= 5)
- if(!user.drop_item())
- return
- boxes += add
- newbox.boxes.Cut()
- newbox.loc = src
- to_chat(user, "You put [newbox] on top of [src]!")
- newbox.update_icon()
- update_icon()
+ if(!user.transferItemToLoc(add, src))
return
- else
- to_chat(user, "The stack is dangerously high!")
+ boxes += add
+ newbox.boxes.Cut()
+ to_chat(user, "You put [newbox] on top of [src]!")
+ newbox.update_icon()
+ update_icon()
+ user.regenerate_icons()
+ if(boxes.len >= 5)
+ if(prob(10 * boxes.len))
+ to_chat(user, "You can't keep holding the stack!")
+ disperse_pizzas()
+ else
+ to_chat(user, "The stack is getting a little high...")
+ return
else
to_chat(user, "Close [open ? src : newbox] first!")
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/pizza) || istype(I, /obj/item/weapon/reagent_containers/food/snacks/customizable/pizza))
if(open)
+ if(pizza)
+ to_chat(user, "[src] already has \a [pizza.name]!")
+ return
if(!user.drop_item())
return
pizza = I
@@ -181,7 +204,7 @@
if(wires && bomb)
wires.interact(user)
else if(istype(I, /obj/item/weapon/reagent_containers/food))
- to_chat(user, "That's not a pizza!")
+ to_chat(user, "That's not a pizza!")
..()
/obj/item/pizzabox/process()
@@ -200,6 +223,34 @@
unprocess()
return
+/obj/item/pizzabox/attack(mob/living/target, mob/living/user, def_zone)
+ . = ..()
+ if(boxes.len >= 3 && prob(25 * boxes.len))
+ disperse_pizzas()
+
+/obj/item/pizzabox/throw_impact(atom/movable/AM)
+ if(boxes.len >= 2 && prob(20 * boxes.len))
+ disperse_pizzas()
+
+/obj/item/pizzabox/proc/disperse_pizzas()
+ visible_message("The pizzas fall everywhere!")
+ for(var/V in boxes)
+ var/obj/item/pizzabox/P = V
+ var/fall_dir = pick(GLOB.alldirs)
+ step(P, fall_dir)
+ if(P.pizza && prob(50)) //rip pizza
+ P.open = TRUE
+ P.pizza.forceMove(get_turf(P))
+ fall_dir = pick(GLOB.alldirs)
+ step(P.pizza, fall_dir)
+ P.pizza = null
+ P.update_icon()
+ boxes -= P
+ update_icon()
+ if(isliving(loc))
+ var/mob/living/L = loc
+ L.regenerate_icons()
+
/obj/item/pizzabox/proc/unprocess()
STOP_PROCESSING(SSobj, src)
qdel(wires)
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index 4e6f4c734e..5a0b217efb 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -56,7 +56,7 @@
src.cards.Add(card)
/obj/item/weapon/deck/attackby(obj/O, mob/user)
- if (istype(O,/obj/item/weapon/hand))
+ if (istype(O, /obj/item/weapon/hand))
var/obj/item/weapon/hand/H = O
for (var/datum/playingcard/P in H.cards) src.cards.Add(P)
@@ -152,7 +152,7 @@
return
P.name = cardtext
blank = 0
- else if(istype(O,/obj/item/weapon/hand))
+ else if(istype(O, /obj/item/weapon/hand))
var/obj/item/weapon/hand/H = O
for(var/datum/playingcard/P in src.cards) H.cards.Add(P)
diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css
index d554008c1f..ea4c169f0e 100644
--- a/code/modules/goonchat/browserassets/css/browserOutput.css
+++ b/code/modules/goonchat/browserassets/css/browserOutput.css
@@ -349,18 +349,18 @@ h1.alert, h2.alert {color: #000000;}
.robot {font-family: "Courier New", cursive, sans-serif;}
.command_headset {font-weight: bold; font-size: 24px;}
-.small {font-size: 1;}
-.big {font-size: 3;}
-.reallybig {font-size: 4;}
-.greentext {color: #00FF00; font-size: 3;}
-.redtext {color: #FF0000; font-size: 3;}
-.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
+.small {font-size: 8px;}
+.big {font-size: 24px;}
+.reallybig {font-size: 32px;}
+.greentext {color: #00FF00; font-size: 24px;}
+.redtext {color: #FF0000; font-size: 24px;}
+.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
BIG IMG.icon {width: 32px; height: 32px;}
.memo {color: #638500; text-align: center;}
-.memoedit {text-align: center; font-size: 2;}
+.memoedit {text-align: center; font-size: 16px;}
.abductor {color: #800080; font-style: italic;}
.slime {color: #00CED1;}
.drone {color: #848482;}
@@ -374,4 +374,4 @@ BIG IMG.icon {width: 32px; height: 32px;}
/* HELPER CLASSES */
.text-normal {font-weight: normal; font-style: normal;}
-.hidden {display: none; visibility: hidden;}
\ No newline at end of file
+.hidden {display: none; visibility: hidden;}
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index 2cf4ac77a9..8d4f2e0147 100644
--- a/code/modules/holiday/easter.dm
+++ b/code/modules/holiday/easter.dm
@@ -69,7 +69,7 @@
name = "Easter Basket"
icon = 'icons/mob/easter.dmi'
icon_state = "basket"
- can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg,/obj/item/weapon/reagent_containers/food/snacks/chocolateegg,/obj/item/weapon/reagent_containers/food/snacks/boiledegg)
+ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/chocolateegg, /obj/item/weapon/reagent_containers/food/snacks/boiledegg)
/obj/item/weapon/storage/bag/easterbasket/proc/countEggs()
cut_overlays()
diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm
index ffae5026d4..3991878127 100644
--- a/code/modules/holiday/halloween.dm
+++ b/code/modules/holiday/halloween.dm
@@ -234,7 +234,7 @@
playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, 1)
/mob/living/simple_animal/hostile/retaliate/clown/insane/attackby(obj/item/O, mob/user)
- if(istype(O,/obj/item/weapon/nullrod))
+ if(istype(O, /obj/item/weapon/nullrod))
if(prob(5))
visible_message("[src] finally found the peace it deserves. You hear honks echoing off into the distance.")
playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, 1)
diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm
index dc93ef15ca..70dc073c3b 100644
--- a/code/modules/holodeck/area_copy.dm
+++ b/code/modules/holodeck/area_copy.dm
@@ -16,7 +16,7 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list("tag","area","type","loc","locs",
if(islist(original.vars[V]))
var/list/L = original.vars[V]
O.vars[V] = L.Copy()
- else if(istype(original.vars[V],/datum))
+ else if(istype(original.vars[V], /datum))
continue // this would reference the original's object, that will break when it is used or deleted.
else
O.vars[V] = original.vars[V]
@@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list("tag","area","type","loc","locs",
I.damtype = STAMINA // thou shalt not
N.update_icon()
- if(istype(O,/obj/machinery))
+ if(istype(O, /obj/machinery))
var/obj/machinery/M = O
M.power_change()
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index b03c55e97a..ea71e664de 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -50,7 +50,7 @@
/obj/machinery/computer/holodeck/LateInitialize()
if(ispath(holodeck_type, /area))
linked = pop(get_areas(holodeck_type, FALSE))
- if(ispath(offline_program,/area))
+ if(ispath(offline_program, /area))
offline_program = pop(get_areas(offline_program), FALSE)
// the following is necessary for power reasons
if(!linked || !offline_program)
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index 1a98a4715d..0a39c70146 100644
--- a/code/modules/hydroponics/grown/replicapod.dm
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -23,7 +23,7 @@
var/contains_sample = 0
/obj/item/seeds/replicapod/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/reagent_containers/syringe))
+ if(istype(W, /obj/item/weapon/reagent_containers/syringe))
if(!contains_sample)
for(var/datum/reagent/blood/bloodSample in W.reagents.reagent_list)
if(bloodSample.data["mind"] && bloodSample.data["cloneable"] == 1)
@@ -99,7 +99,7 @@
podman.faction |= factions
if(!features["mcolor"])
features["mcolor"] = "#59CE00"
- podman.hardset_dna(null,null,podman.real_name,blood_type,/datum/species/pod,features)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
+ podman.hardset_dna(null,null,podman.real_name,blood_type, /datum/species/pod,features)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
podman.set_cloned_appearance()
else //else, one packet of seeds. maybe two
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 8eb1057bec..bb53c093c3 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -110,6 +110,7 @@
origin_tech = "materials=3;combat=2"
attack_verb = list("chopped", "sliced", "cut", "reaped")
hitsound = 'sound/weapons/bladeslice.ogg'
+ var/swiping = FALSE
/obj/item/weapon/scythe/suicide_act(mob/user)
user.visible_message("[user] is beheading [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -121,6 +122,21 @@
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
return (BRUTELOSS)
+/obj/item/weapon/scythe/pre_attackby(atom/A, mob/living/user, params)
+ if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user))
+ return ..()
+ else
+ var/turf/user_turf = get_turf(user)
+ var/dir_to_target = get_dir(user_turf, get_turf(A))
+ swiping = TRUE
+ var/static/list/scythe_slash_angles = list(0, 45, 90, -45, -90)
+ for(var/i in scythe_slash_angles)
+ var/turf/T = get_step(user_turf, turn(dir_to_target, i))
+ for(var/obj/structure/spacevine/V in T)
+ if(user.Adjacent(V))
+ melee_attack_chain(user, V)
+ swiping = FALSE
+
// *************************************
// Nutrient defines for hydroponics
// *************************************
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 232cea53ac..499fc4bd64 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -110,9 +110,9 @@
/obj/machinery/hydroponics/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
if(!myseed)
return ..()
- if(istype(Proj ,/obj/item/projectile/energy/floramut))
+ if(istype(Proj , /obj/item/projectile/energy/floramut))
mutate()
- else if(istype(Proj ,/obj/item/projectile/energy/florayield))
+ else if(istype(Proj , /obj/item/projectile/energy/florayield))
return myseed.bullet_act(Proj)
else
return ..()
@@ -877,7 +877,7 @@
/obj/machinery/hydroponics/proc/update_tray(mob/user = usr)
harvest = 0
lastproduce = age
- if(istype(myseed,/obj/item/seeds/replicapod))
+ if(istype(myseed, /obj/item/seeds/replicapod))
to_chat(user, "You harvest from the [myseed.plantname].")
else if(myseed.getYield() <= 0)
to_chat(user, "You fail to harvest anything useful!")
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 5b6c91bccd..6be065d552 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -375,7 +375,7 @@
pocell.maxcharge *= CG.rate*1000
pocell.charge = pocell.maxcharge
pocell.name = "[G.name] battery"
- pocell.desc = "A rechargable plant based power cell. This one has a power rating of [pocell.maxcharge], and you should not swallow it."
+ pocell.desc = "A rechargeable plant based power cell. This one has a power rating of [pocell.maxcharge], and you should not swallow it."
if(G.reagents.has_reagent("plasma", 2))
pocell.rigged = 1
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 733c5cc716..65fa87c658 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -84,7 +84,7 @@
if(default_deconstruction_crowbar(O))
return
- if (istype(O,/obj/item/weapon/storage/bag/plants))
+ if (istype(O, /obj/item/weapon/storage/bag/plants))
var/obj/item/weapon/storage/P = O
var/loaded = 0
for(var/obj/item/seeds/G in P.contents)
@@ -101,7 +101,7 @@
else if(seedify(O,-1, src, user))
to_chat(user, "You extract some seeds.")
return
- else if (istype(O,/obj/item/seeds))
+ else if (istype(O, /obj/item/seeds))
if(add_seed(O))
to_chat(user, "You add [O] to [src.name].")
updateUsrDialog()
@@ -195,7 +195,7 @@
var/mob/M = O.loc
if(!M.drop_item())
return 0
- else if(istype(O.loc,/obj/item/weapon/storage))
+ else if(istype(O.loc, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = O.loc
S.remove_from_storage(O,src)
diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm
index 23655607a8..387519a8e8 100644
--- a/code/modules/jobs/access.dm
+++ b/code/modules/jobs/access.dm
@@ -1,102 +1,4 @@
-
-GLOBAL_VAR_CONST(access_security, 1) // Security equipment
-GLOBAL_VAR_CONST(access_brig, 2) // Brig timers and permabrig
-GLOBAL_VAR_CONST(access_armory, 3)
-GLOBAL_VAR_CONST(access_forensics_lockers, 4)
-GLOBAL_VAR_CONST(access_medical, 5)
-GLOBAL_VAR_CONST(access_morgue, 6)
-GLOBAL_VAR_CONST(access_tox, 7)
-GLOBAL_VAR_CONST(access_tox_storage, 8)
-GLOBAL_VAR_CONST(access_genetics, 9)
-GLOBAL_VAR_CONST(access_engine, 10)
-GLOBAL_VAR_CONST(access_engine_equip, 11)
-GLOBAL_VAR_CONST(access_maint_tunnels, 12)
-GLOBAL_VAR_CONST(access_external_airlocks, 13)
-GLOBAL_VAR_CONST(access_emergency_storage, 14)
-GLOBAL_VAR_CONST(access_change_ids, 15)
-GLOBAL_VAR_CONST(access_ai_upload, 16)
-GLOBAL_VAR_CONST(access_teleporter, 17)
-GLOBAL_VAR_CONST(access_eva, 18)
-GLOBAL_VAR_CONST(access_heads, 19)
-GLOBAL_VAR_CONST(access_captain, 20)
-GLOBAL_VAR_CONST(access_all_personal_lockers, 21)
-GLOBAL_VAR_CONST(access_chapel_office, 22)
-GLOBAL_VAR_CONST(access_tech_storage, 23)
-GLOBAL_VAR_CONST(access_atmospherics, 24)
-GLOBAL_VAR_CONST(access_bar, 25)
-GLOBAL_VAR_CONST(access_janitor, 26)
-GLOBAL_VAR_CONST(access_crematorium, 27)
-GLOBAL_VAR_CONST(access_kitchen, 28)
-GLOBAL_VAR_CONST(access_robotics, 29)
-GLOBAL_VAR_CONST(access_rd, 30)
-GLOBAL_VAR_CONST(access_cargo, 31)
-GLOBAL_VAR_CONST(access_construction, 32)
-GLOBAL_VAR_CONST(access_chemistry, 33)
-GLOBAL_VAR_CONST(access_cargo_bot, 34)
-GLOBAL_VAR_CONST(access_hydroponics, 35)
-GLOBAL_VAR_CONST(access_manufacturing, 36)
-GLOBAL_VAR_CONST(access_library, 37)
-GLOBAL_VAR_CONST(access_lawyer, 38)
-GLOBAL_VAR_CONST(access_virology, 39)
-GLOBAL_VAR_CONST(access_cmo, 40)
-GLOBAL_VAR_CONST(access_qm, 41)
-GLOBAL_VAR_CONST(access_court, 42)
-GLOBAL_VAR_CONST(access_surgery, 45)
-GLOBAL_VAR_CONST(access_theatre, 46)
-GLOBAL_VAR_CONST(access_research, 47)
-GLOBAL_VAR_CONST(access_mining, 48)
-GLOBAL_VAR_CONST(access_mining_office, 49) //not in use
-GLOBAL_VAR_CONST(access_mailsorting, 50)
-GLOBAL_VAR_CONST(access_mint, 51)
-GLOBAL_VAR_CONST(access_mint_vault, 52)
-GLOBAL_VAR_CONST(access_heads_vault, 53)
-GLOBAL_VAR_CONST(access_mining_station, 54)
-GLOBAL_VAR_CONST(access_xenobiology, 55)
-GLOBAL_VAR_CONST(access_ce, 56)
-GLOBAL_VAR_CONST(access_hop, 57)
-GLOBAL_VAR_CONST(access_hos, 58)
-GLOBAL_VAR_CONST(access_RC_announce, 59) //Request console announcements
-GLOBAL_VAR_CONST(access_keycard_auth, 60) //Used for events which require at least two people to confirm them
-GLOBAL_VAR_CONST(access_tcomsat, 61) // has access to the entire telecomms satellite / machinery
-GLOBAL_VAR_CONST(access_gateway, 62)
-GLOBAL_VAR_CONST(access_sec_doors, 63) // Security front doors
-GLOBAL_VAR_CONST(access_mineral_storeroom, 64)
-GLOBAL_VAR_CONST(access_minisat, 65)
-GLOBAL_VAR_CONST(access_weapons, 66) //Weapon authorization for secbots
-GLOBAL_VAR_CONST(access_network, 67)
-GLOBAL_VAR_CONST(access_cloning, 68) //Cloning room
-
- //BEGIN CENTCOM ACCESS
- /*Should leave plenty of room if we need to add more access levels.
- Mostly for admin fun times.*/
-GLOBAL_VAR_CONST(access_cent_general, 101)//General facilities.
-GLOBAL_VAR_CONST(access_cent_thunder, 102)//Thunderdome.
-GLOBAL_VAR_CONST(access_cent_specops, 103)//Special Ops.
-GLOBAL_VAR_CONST(access_cent_medical, 104)//Medical/Research
-GLOBAL_VAR_CONST(access_cent_living, 105)//Living quarters.
-GLOBAL_VAR_CONST(access_cent_storage, 106)//Generic storage areas.
-GLOBAL_VAR_CONST(access_cent_teleporter, 107)//Teleporter.
-GLOBAL_VAR_CONST(access_cent_captain, 109)//Captain's office/ID comp/AI.
-GLOBAL_VAR_CONST(access_cent_bar, 110) // The non-existent Centcom Bar
-
- //The Syndicate
-GLOBAL_VAR_CONST(access_syndicate, 150)//General Syndicate Access
-GLOBAL_VAR_CONST(access_syndicate_leader, 151)//Nuke Op Leader Access
-
- //Away Missions or Ruins
- /*For generic away-mission/ruin access. Why would normal crew have access to a long-abandoned derelict
- or a 2000 year-old temple? */
-GLOBAL_VAR_CONST(access_away_general, 200)//General facilities.
-GLOBAL_VAR_CONST(access_away_maint, 201)//Away maintenance
-GLOBAL_VAR_CONST(access_away_med, 202)//Away medical
-GLOBAL_VAR_CONST(access_away_sec, 203)//Away security
-GLOBAL_VAR_CONST(access_away_engine, 204)//Away engineering
-GLOBAL_VAR_CONST(access_away_generic1, 205)//Away generic access
-GLOBAL_VAR_CONST(access_away_generic2, 206)
-GLOBAL_VAR_CONST(access_away_generic3, 207)
-GLOBAL_VAR_CONST(access_away_generic4, 208)
-
/obj/var/list/req_access = null
/obj/var/req_access_txt = "0" as text
/obj/var/list/req_one_access = null
@@ -204,21 +106,21 @@ GLOBAL_VAR_CONST(access_away_generic4, 208)
/proc/get_centcom_access(job)
switch(job)
if("VIP Guest")
- return list(GLOB.access_cent_general)
+ return list(ACCESS_CENT_GENERAL)
if("Custodian")
- return list(GLOB.access_cent_general, GLOB.access_cent_living, GLOB.access_cent_storage)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
if("Thunderdome Overseer")
- return list(GLOB.access_cent_general, GLOB.access_cent_thunder)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER)
if("Centcom Official")
- return list(GLOB.access_cent_general, GLOB.access_cent_living)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING)
if("Medical Officer")
- return list(GLOB.access_cent_general, GLOB.access_cent_living, GLOB.access_cent_medical)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_MEDICAL)
if("Death Commando")
- return list(GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_living, GLOB.access_cent_storage)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
if("Research Officer")
- return list(GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_teleporter, GLOB.access_cent_storage)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_TELEPORTER, ACCESS_CENT_STORAGE)
if("Special Ops Officer")
- return list(GLOB.access_cent_general, GLOB.access_cent_thunder, GLOB.access_cent_specops, GLOB.access_cent_living, GLOB.access_cent_storage)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
if("Admiral")
return get_all_centcom_access()
if("Centcom Commander")
@@ -232,56 +134,56 @@ GLOBAL_VAR_CONST(access_away_generic4, 208)
if("Medical Response Officer")
return get_ert_access("med")
if("Centcom Bartender")
- return list(GLOB.access_cent_general, GLOB.access_cent_living, GLOB.access_cent_bar)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR)
/proc/get_all_accesses()
- return list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_forensics_lockers, GLOB.access_court,
- GLOB.access_medical, GLOB.access_genetics, GLOB.access_morgue, GLOB.access_rd,
- GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_chemistry, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_change_ids, GLOB.access_ai_upload,
- GLOB.access_teleporter, GLOB.access_eva, GLOB.access_heads, GLOB.access_captain, GLOB.access_all_personal_lockers,
- GLOB.access_tech_storage, GLOB.access_chapel_office, GLOB.access_atmospherics, GLOB.access_kitchen,
- GLOB.access_bar, GLOB.access_janitor, GLOB.access_crematorium, GLOB.access_robotics, GLOB.access_cargo, GLOB.access_construction,
- GLOB.access_hydroponics, GLOB.access_library, GLOB.access_lawyer, GLOB.access_virology, GLOB.access_cmo, GLOB.access_qm, GLOB.access_surgery,
- GLOB.access_theatre, GLOB.access_research, GLOB.access_mining, GLOB.access_mailsorting, GLOB.access_weapons,
- GLOB.access_heads_vault, GLOB.access_mining_station, GLOB.access_xenobiology, GLOB.access_ce, GLOB.access_hop, GLOB.access_hos, GLOB.access_RC_announce,
- GLOB.access_keycard_auth, GLOB.access_tcomsat, GLOB.access_gateway, GLOB.access_mineral_storeroom, GLOB.access_minisat, GLOB.access_network, GLOB.access_cloning)
+ return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT,
+ ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD,
+ ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD,
+ ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS,
+ ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN,
+ ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION,
+ ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
+ ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
+ ACCESS_HEADS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
+ ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING)
/proc/get_all_centcom_access()
- return list(GLOB.access_cent_general, GLOB.access_cent_thunder, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_living, GLOB.access_cent_storage, GLOB.access_cent_teleporter, GLOB.access_cent_captain)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN)
/proc/get_ert_access(class)
switch(class)
if("commander")
return get_all_centcom_access()
if("sec")
- return list(GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_living)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING)
if("eng")
- return list(GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_living, GLOB.access_cent_storage)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
if("med")
- return list(GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_living)
+ return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING)
/proc/get_all_syndicate_access()
- return list(GLOB.access_syndicate, GLOB.access_syndicate)
+ return list(ACCESS_SYNDICATE, ACCESS_SYNDICATE)
/proc/get_region_accesses(code)
switch(code)
if(0)
return get_all_accesses()
if(1) //station general
- return list(GLOB.access_kitchen,GLOB.access_bar, GLOB.access_hydroponics, GLOB.access_janitor, GLOB.access_chapel_office, GLOB.access_crematorium, GLOB.access_library, GLOB.access_theatre, GLOB.access_lawyer)
+ return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER)
if(2) //security
- return list(GLOB.access_sec_doors, GLOB.access_weapons, GLOB.access_security, GLOB.access_brig, GLOB.access_armory, GLOB.access_forensics_lockers, GLOB.access_court, GLOB.access_hos)
+ return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS)
if(3) //medbay
- return list(GLOB.access_medical, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_morgue, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_surgery, GLOB.access_cmo)
+ return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO)
if(4) //research
- return list(GLOB.access_research, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_genetics, GLOB.access_robotics, GLOB.access_xenobiology, GLOB.access_minisat, GLOB.access_rd, GLOB.access_network)
+ return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK)
if(5) //engineering and maintenance
- return list(GLOB.access_construction, GLOB.access_maint_tunnels, GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_external_airlocks, GLOB.access_tech_storage, GLOB.access_atmospherics, GLOB.access_tcomsat, GLOB.access_minisat, GLOB.access_ce)
+ return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_CE)
if(6) //supply
- return list(GLOB.access_mailsorting, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom, GLOB.access_cargo, GLOB.access_qm)
+ return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM)
if(7) //command
- return list(GLOB.access_heads, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_change_ids, GLOB.access_ai_upload, GLOB.access_teleporter, GLOB.access_eva, GLOB.access_gateway, GLOB.access_all_personal_lockers, GLOB.access_heads_vault, GLOB.access_hop, GLOB.access_captain)
+ return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HEADS_VAULT, ACCESS_HOP, ACCESS_CAPTAIN)
/proc/get_region_accesses_name(code)
switch(code)
@@ -304,158 +206,158 @@ GLOBAL_VAR_CONST(access_away_generic4, 208)
/proc/get_access_desc(A)
switch(A)
- if(GLOB.access_cargo)
+ if(ACCESS_CARGO)
return "Cargo Bay"
- if(GLOB.access_cargo_bot)
+ if(ACCESS_CARGO_BOT)
return "Delivery Chutes"
- if(GLOB.access_security)
+ if(ACCESS_SECURITY)
return "Security"
- if(GLOB.access_brig)
+ if(ACCESS_BRIG)
return "Holding Cells"
- if(GLOB.access_court)
+ if(ACCESS_COURT)
return "Courtroom"
- if(GLOB.access_forensics_lockers)
+ if(ACCESS_FORENSICS_LOCKERS)
return "Forensics"
- if(GLOB.access_medical)
+ if(ACCESS_MEDICAL)
return "Medical"
- if(GLOB.access_genetics)
+ if(ACCESS_GENETICS)
return "Genetics Lab"
- if(GLOB.access_morgue)
+ if(ACCESS_MORGUE)
return "Morgue"
- if(GLOB.access_tox)
+ if(ACCESS_TOX)
return "R&D Lab"
- if(GLOB.access_tox_storage)
+ if(ACCESS_TOX_STORAGE)
return "Toxins Lab"
- if(GLOB.access_chemistry)
+ if(ACCESS_CHEMISTRY)
return "Chemistry Lab"
- if(GLOB.access_rd)
+ if(ACCESS_RD)
return "RD Office"
- if(GLOB.access_bar)
+ if(ACCESS_BAR)
return "Bar"
- if(GLOB.access_janitor)
+ if(ACCESS_JANITOR)
return "Custodial Closet"
- if(GLOB.access_engine)
+ if(ACCESS_ENGINE)
return "Engineering"
- if(GLOB.access_engine_equip)
+ if(ACCESS_ENGINE_EQUIP)
return "Power Equipment"
- if(GLOB.access_maint_tunnels)
+ if(ACCESS_MAINT_TUNNELS)
return "Maintenance"
- if(GLOB.access_external_airlocks)
+ if(ACCESS_EXTERNAL_AIRLOCKS)
return "External Airlocks"
- if(GLOB.access_emergency_storage)
+ if(ACCESS_EMERGENCY_STORAGE)
return "Emergency Storage"
- if(GLOB.access_change_ids)
+ if(ACCESS_CHANGE_IDS)
return "ID Console"
- if(GLOB.access_ai_upload)
+ if(ACCESS_AI_UPLOAD)
return "AI Chambers"
- if(GLOB.access_teleporter)
+ if(ACCESS_TELEPORTER)
return "Teleporter"
- if(GLOB.access_eva)
+ if(ACCESS_EVA)
return "EVA"
- if(GLOB.access_heads)
+ if(ACCESS_HEADS)
return "Bridge"
- if(GLOB.access_captain)
+ if(ACCESS_CAPTAIN)
return "Captain"
- if(GLOB.access_all_personal_lockers)
+ if(ACCESS_ALL_PERSONAL_LOCKERS)
return "Personal Lockers"
- if(GLOB.access_chapel_office)
+ if(ACCESS_CHAPEL_OFFICE)
return "Chapel Office"
- if(GLOB.access_tech_storage)
+ if(ACCESS_TECH_STORAGE)
return "Technical Storage"
- if(GLOB.access_atmospherics)
+ if(ACCESS_ATMOSPHERICS)
return "Atmospherics"
- if(GLOB.access_crematorium)
+ if(ACCESS_CREMATORIUM)
return "Crematorium"
- if(GLOB.access_armory)
+ if(ACCESS_ARMORY)
return "Armory"
- if(GLOB.access_construction)
+ if(ACCESS_CONSTRUCTION)
return "Construction"
- if(GLOB.access_kitchen)
+ if(ACCESS_KITCHEN)
return "Kitchen"
- if(GLOB.access_hydroponics)
+ if(ACCESS_HYDROPONICS)
return "Hydroponics"
- if(GLOB.access_library)
+ if(ACCESS_LIBRARY)
return "Library"
- if(GLOB.access_lawyer)
+ if(ACCESS_LAWYER)
return "Law Office"
- if(GLOB.access_robotics)
+ if(ACCESS_ROBOTICS)
return "Robotics"
- if(GLOB.access_virology)
+ if(ACCESS_VIROLOGY)
return "Virology"
- if(GLOB.access_cmo)
+ if(ACCESS_CMO)
return "CMO Office"
- if(GLOB.access_qm)
+ if(ACCESS_QM)
return "Quartermaster"
- if(GLOB.access_surgery)
+ if(ACCESS_SURGERY)
return "Surgery"
- if(GLOB.access_theatre)
+ if(ACCESS_THEATRE)
return "Theatre"
- if(GLOB.access_manufacturing)
+ if(ACCESS_MANUFACTURING)
return "Manufacturing"
- if(GLOB.access_research)
+ if(ACCESS_RESEARCH)
return "Science"
- if(GLOB.access_mining)
+ if(ACCESS_MINING)
return "Mining"
- if(GLOB.access_mining_office)
+ if(ACCESS_MINING_OFFICE)
return "Mining Office"
- if(GLOB.access_mailsorting)
+ if(ACCESS_MAILSORTING)
return "Cargo Office"
- if(GLOB.access_mint)
+ if(ACCESS_MINT)
return "Mint"
- if(GLOB.access_mint_vault)
+ if(ACCESS_MINT_VAULT)
return "Mint Vault"
- if(GLOB.access_heads_vault)
+ if(ACCESS_HEADS_VAULT)
return "Main Vault"
- if(GLOB.access_mining_station)
+ if(ACCESS_MINING_STATION)
return "Mining EVA"
- if(GLOB.access_xenobiology)
+ if(ACCESS_XENOBIOLOGY)
return "Xenobiology Lab"
- if(GLOB.access_hop)
+ if(ACCESS_HOP)
return "HoP Office"
- if(GLOB.access_hos)
+ if(ACCESS_HOS)
return "HoS Office"
- if(GLOB.access_ce)
+ if(ACCESS_CE)
return "CE Office"
- if(GLOB.access_RC_announce)
+ if(ACCESS_RC_ANNOUNCE)
return "RC Announcements"
- if(GLOB.access_keycard_auth)
+ if(ACCESS_KEYCARD_AUTH)
return "Keycode Auth."
- if(GLOB.access_tcomsat)
+ if(ACCESS_TCOMSAT)
return "Telecommunications"
- if(GLOB.access_gateway)
+ if(ACCESS_GATEWAY)
return "Gateway"
- if(GLOB.access_sec_doors)
+ if(ACCESS_SEC_DOORS)
return "Brig"
- if(GLOB.access_mineral_storeroom)
+ if(ACCESS_MINERAL_STOREROOM)
return "Mineral Storage"
- if(GLOB.access_minisat)
+ if(ACCESS_MINISAT)
return "AI Satellite"
- if(GLOB.access_weapons)
+ if(ACCESS_WEAPONS)
return "Weapon Permit"
- if(GLOB.access_network)
+ if(ACCESS_NETWORK)
return "Network Access"
- if(GLOB.access_cloning)
+ if(ACCESS_CLONING)
return "Cloning Room"
/proc/get_centcom_access_desc(A)
switch(A)
- if(GLOB.access_cent_general)
+ if(ACCESS_CENT_GENERAL)
return "Code Grey"
- if(GLOB.access_cent_thunder)
+ if(ACCESS_CENT_THUNDER)
return "Code Yellow"
- if(GLOB.access_cent_storage)
+ if(ACCESS_CENT_STORAGE)
return "Code Orange"
- if(GLOB.access_cent_living)
+ if(ACCESS_CENT_LIVING)
return "Code Green"
- if(GLOB.access_cent_medical)
+ if(ACCESS_CENT_MEDICAL)
return "Code White"
- if(GLOB.access_cent_teleporter)
+ if(ACCESS_CENT_TELEPORTER)
return "Code Blue"
- if(GLOB.access_cent_specops)
+ if(ACCESS_CENT_SPECOPS)
return "Code Black"
- if(GLOB.access_cent_captain)
+ if(ACCESS_CENT_CAPTAIN)
return "Code Gold"
- if(GLOB.access_cent_bar)
+ if(ACCESS_CENT_BAR)
return "Code Scotch"
/proc/get_all_jobs()
diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm
index 8925fe5af3..41c3cd0a94 100644
--- a/code/modules/jobs/job_types/assistant.dm
+++ b/code/modules/jobs/job_types/assistant.dm
@@ -18,7 +18,7 @@ Assistant
/datum/job/assistant/get_access()
if((config.jobs_have_maint_access & ASSISTANTS_HAVE_MAINT_ACCESS) || !config.jobs_have_minimal_access) //Config has assistant maint access set
. = ..()
- . |= list(GLOB.access_maint_tunnels)
+ . |= list(ACCESS_MAINT_TUNNELS)
else
return ..()
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index 8674e9953f..a6b6f25aea 100755
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -67,18 +67,18 @@ Head of Personnel
outfit = /datum/outfit/job/hop
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_court, GLOB.access_weapons,
- GLOB.access_medical, GLOB.access_engine, GLOB.access_change_ids, GLOB.access_ai_upload, GLOB.access_eva, GLOB.access_heads,
- GLOB.access_all_personal_lockers, GLOB.access_maint_tunnels, GLOB.access_bar, GLOB.access_janitor, GLOB.access_construction, GLOB.access_morgue,
- GLOB.access_crematorium, GLOB.access_kitchen, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_mailsorting, GLOB.access_qm, GLOB.access_hydroponics, GLOB.access_lawyer,
- GLOB.access_theatre, GLOB.access_chapel_office, GLOB.access_library, GLOB.access_research, GLOB.access_mining, GLOB.access_heads_vault, GLOB.access_mining_station,
- GLOB.access_hop, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_court, GLOB.access_weapons,
- GLOB.access_medical, GLOB.access_engine, GLOB.access_change_ids, GLOB.access_ai_upload, GLOB.access_eva, GLOB.access_heads,
- GLOB.access_all_personal_lockers, GLOB.access_maint_tunnels, GLOB.access_bar, GLOB.access_janitor, GLOB.access_construction, GLOB.access_morgue,
- GLOB.access_crematorium, GLOB.access_kitchen, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_mailsorting, GLOB.access_qm, GLOB.access_hydroponics, GLOB.access_lawyer,
- GLOB.access_theatre, GLOB.access_chapel_office, GLOB.access_library, GLOB.access_research, GLOB.access_mining, GLOB.access_heads_vault, GLOB.access_mining_station,
- GLOB.access_hop, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
+ ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
+ ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
+ ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
+ ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
+ ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
+ ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
+ ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
+ ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
+ ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
+ ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/hop
diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm
index b482c79117..6599162493 100644
--- a/code/modules/jobs/job_types/cargo_service.dm
+++ b/code/modules/jobs/job_types/cargo_service.dm
@@ -14,8 +14,8 @@ Quartermaster
outfit = /datum/outfit/job/quartermaster
- access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/quartermaster
name = "Quartermaster"
@@ -44,8 +44,8 @@ Cargo Technician
outfit = /datum/outfit/job/cargo_tech
- access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_maint_tunnels, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_mailsorting, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
@@ -72,8 +72,8 @@ Shaft Miner
outfit = /datum/outfit/job/miner
- access = list(GLOB.access_maint_tunnels, GLOB.access_mailsorting, GLOB.access_cargo, GLOB.access_cargo_bot, GLOB.access_qm, GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mailsorting, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/miner
name = "Shaft Miner (Lavaland)"
@@ -150,8 +150,8 @@ Bartender
outfit = /datum/outfit/job/bartender
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue, GLOB.access_weapons)
- minimal_access = list(GLOB.access_bar)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
+ minimal_access = list(ACCESS_BAR)
/datum/outfit/job/bartender
@@ -183,8 +183,8 @@ Cook
outfit = /datum/outfit/job/cook
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue)
- minimal_access = list(GLOB.access_kitchen, GLOB.access_morgue)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE)
+ minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE)
/datum/outfit/job/cook
name = "Cook"
@@ -230,8 +230,8 @@ Botanist
outfit = /datum/outfit/job/botanist
- access = list(GLOB.access_hydroponics, GLOB.access_bar, GLOB.access_kitchen, GLOB.access_morgue)
- minimal_access = list(GLOB.access_hydroponics, GLOB.access_morgue)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE)
+ minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE)
// Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS
// Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT
// Given Morgue access because they have a viable means of cloning.
@@ -269,8 +269,8 @@ Janitor
outfit = /datum/outfit/job/janitor
- access = list(GLOB.access_janitor, GLOB.access_maint_tunnels)
- minimal_access = list(GLOB.access_janitor, GLOB.access_maint_tunnels)
+ access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS)
/datum/outfit/job/janitor
name = "Janitor"
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index 98933367b7..d35e8bae3c 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -14,8 +14,8 @@ Clown
outfit = /datum/outfit/job/clown
- access = list(GLOB.access_theatre)
- minimal_access = list(GLOB.access_theatre)
+ access = list(ACCESS_THEATRE)
+ minimal_access = list(ACCESS_THEATRE)
/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M)
H.rename_self("clown", M.client)
@@ -75,8 +75,8 @@ Mime
outfit = /datum/outfit/job/mime
- access = list(GLOB.access_theatre)
- minimal_access = list(GLOB.access_theatre)
+ access = list(ACCESS_THEATRE)
+ minimal_access = list(ACCESS_THEATRE)
/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M)
H.rename_self("mime", M.client)
@@ -125,8 +125,8 @@ Curator
outfit = /datum/outfit/job/curator
- access = list(GLOB.access_library)
- minimal_access = list(GLOB.access_library, GLOB.access_construction,GLOB.access_mining_station)
+ access = list(ACCESS_LIBRARY)
+ minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION,ACCESS_MINING_STATION)
/datum/outfit/job/curator
name = "Curator"
@@ -170,8 +170,8 @@ Lawyer
outfit = /datum/outfit/job/lawyer
- access = list(GLOB.access_lawyer, GLOB.access_court, GLOB.access_sec_doors)
- minimal_access = list(GLOB.access_lawyer, GLOB.access_court, GLOB.access_sec_doors)
+ access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS)
+ minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS)
/datum/outfit/job/lawyer
name = "Lawyer"
diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm
index e058dc01d7..eb84051ff9 100644
--- a/code/modules/jobs/job_types/civilian_chaplain.dm
+++ b/code/modules/jobs/job_types/civilian_chaplain.dm
@@ -15,8 +15,8 @@ Chaplain
outfit = /datum/outfit/job/chaplain
- access = list(GLOB.access_morgue, GLOB.access_chapel_office, GLOB.access_crematorium, GLOB.access_theatre)
- minimal_access = list(GLOB.access_morgue, GLOB.access_chapel_office, GLOB.access_crematorium, GLOB.access_theatre)
+ access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
+ minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE)
/datum/job/chaplain/after_spawn(mob/living/H, mob/M)
if(H.mind)
diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm
index 66897b1049..40800998c0 100644
--- a/code/modules/jobs/job_types/engineering.dm
+++ b/code/modules/jobs/job_types/engineering.dm
@@ -17,14 +17,14 @@ Chief Engineer
outfit = /datum/outfit/job/ce
- access = list(GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_atmospherics, GLOB.access_emergency_storage, GLOB.access_eva,
- GLOB.access_heads, GLOB.access_construction, GLOB.access_sec_doors, GLOB.access_minisat,
- GLOB.access_ce, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_tcomsat, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_atmospherics, GLOB.access_emergency_storage, GLOB.access_eva,
- GLOB.access_heads, GLOB.access_construction, GLOB.access_sec_doors, GLOB.access_minisat,
- GLOB.access_ce, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_tcomsat, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
+ ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
+ ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
+ ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT,
+ ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/ce
name = "Chief Engineer"
@@ -39,7 +39,7 @@ Chief Engineer
head = /obj/item/clothing/head/hardhat/white
gloves = /obj/item/clothing/gloves/color/black/ce
accessory = /obj/item/clothing/accessory/pocketprotector/full
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,/obj/item/device/modular_computer/tablet/preset/advanced=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel/eng
@@ -75,10 +75,10 @@ Station Engineer
outfit = /datum/outfit/job/engineer
- access = list(GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics, GLOB.access_tcomsat)
- minimal_access = list(GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_tcomsat)
+ access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT)
+ minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT)
/datum/outfit/job/engineer
name = "Station Engineer"
@@ -130,9 +130,9 @@ Atmospheric Technician
outfit = /datum/outfit/job/atmos
- access = list(GLOB.access_engine, GLOB.access_engine_equip, GLOB.access_tech_storage, GLOB.access_maint_tunnels,
- GLOB.access_external_airlocks, GLOB.access_construction, GLOB.access_atmospherics)
- minimal_access = list(GLOB.access_atmospherics, GLOB.access_maint_tunnels, GLOB.access_emergency_storage, GLOB.access_construction)
+ access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
+ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS)
+ minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION)
/datum/outfit/job/atmos
name = "Atmospheric Technician"
diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm
index 2632c28cdd..0a1622626c 100644
--- a/code/modules/jobs/job_types/job.dm
+++ b/code/modules/jobs/job_types/job.dm
@@ -87,7 +87,7 @@
. = src.access.Copy()
if(config.jobs_have_maint_access & EVERYONE_HAS_MAINT_ACCESS) //Config has global maint access set
- . |= list(GLOB.access_maint_tunnels)
+ . |= list(ACCESS_MAINT_TUNNELS)
/datum/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels.
if(H && GLOB.announcement_systems.len)
diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm
index 04c2ddc847..196f74764f 100644
--- a/code/modules/jobs/job_types/medical.dm
+++ b/code/modules/jobs/job_types/medical.dm
@@ -17,12 +17,12 @@ Chief Medical Officer
outfit = /datum/outfit/job/cmo
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_heads, GLOB.access_mineral_storeroom,
- GLOB.access_chemistry, GLOB.access_virology, GLOB.access_cmo, GLOB.access_surgery, GLOB.access_RC_announce,
- GLOB.access_keycard_auth, GLOB.access_sec_doors, GLOB.access_maint_tunnels)
- minimal_access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_heads, GLOB.access_mineral_storeroom,
- GLOB.access_chemistry, GLOB.access_virology, GLOB.access_cmo, GLOB.access_surgery, GLOB.access_RC_announce,
- GLOB.access_keycard_auth, GLOB.access_sec_doors, GLOB.access_maint_tunnels)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
+ ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
+ ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
+ ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
+ ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
/datum/outfit/job/cmo
name = "Chief Medical Officer"
@@ -58,8 +58,8 @@ Medical Doctor
outfit = /datum/outfit/job/doctor
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_cloning)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING)
/datum/outfit/job/doctor
name = "Medical Doctor"
@@ -93,8 +93,8 @@ Chemist
outfit = /datum/outfit/job/chemist
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_medical, GLOB.access_chemistry, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/chemist
name = "Chemist"
@@ -127,8 +127,8 @@ Geneticist
outfit = /datum/outfit/job/geneticist
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_chemistry, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_robotics, GLOB.access_mineral_storeroom, GLOB.access_tech_storage)
- minimal_access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_research)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH)
/datum/outfit/job/geneticist
name = "Geneticist"
@@ -161,8 +161,8 @@ Virologist
outfit = /datum/outfit/job/virologist
- access = list(GLOB.access_medical, GLOB.access_morgue, GLOB.access_surgery, GLOB.access_chemistry, GLOB.access_virology, GLOB.access_genetics, GLOB.access_cloning, GLOB.access_mineral_storeroom)
- minimal_access = list(GLOB.access_medical, GLOB.access_virology, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/virologist
name = "Virologist"
diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm
index 78772c031b..aa9dd1b179 100644
--- a/code/modules/jobs/job_types/science.dm
+++ b/code/modules/jobs/job_types/science.dm
@@ -17,16 +17,16 @@ Research Director
outfit = /datum/outfit/job/rd
- access = list(GLOB.access_rd, GLOB.access_heads, GLOB.access_tox, GLOB.access_genetics, GLOB.access_morgue,
- GLOB.access_tox_storage, GLOB.access_teleporter, GLOB.access_sec_doors,
- GLOB.access_research, GLOB.access_robotics, GLOB.access_xenobiology, GLOB.access_ai_upload,
- GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_mineral_storeroom,
- GLOB.access_tech_storage, GLOB.access_minisat, GLOB.access_maint_tunnels, GLOB.access_network)
- minimal_access = list(GLOB.access_rd, GLOB.access_heads, GLOB.access_tox, GLOB.access_genetics, GLOB.access_morgue,
- GLOB.access_tox_storage, GLOB.access_teleporter, GLOB.access_sec_doors,
- GLOB.access_research, GLOB.access_robotics, GLOB.access_xenobiology, GLOB.access_ai_upload,
- GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_mineral_storeroom,
- GLOB.access_tech_storage, GLOB.access_minisat, GLOB.access_maint_tunnels, GLOB.access_network)
+ access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
+ ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
+ ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
+ ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
+ ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
+ minimal_access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
+ ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
+ ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
+ ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM,
+ ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
/datum/outfit/job/rd
name = "Research Director"
@@ -41,7 +41,7 @@ Research Director
l_hand = /obj/item/weapon/clipboard
l_pocket = /obj/item/device/laser_pointer
accessory = /obj/item/clothing/accessory/pocketprotector/full
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,/obj/item/device/modular_computer/tablet/preset/advanced=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel/tox
@@ -71,8 +71,8 @@ Scientist
outfit = /datum/outfit/job/scientist
- access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom, GLOB.access_tech_storage, GLOB.access_genetics)
- minimal_access = list(GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_research, GLOB.access_xenobiology, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS)
+ minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/scientist
name = "Scientist"
@@ -104,8 +104,8 @@ Roboticist
outfit = /datum/outfit/job/roboticist
- access = list(GLOB.access_robotics, GLOB.access_tox, GLOB.access_tox_storage, GLOB.access_tech_storage, GLOB.access_morgue, GLOB.access_research, GLOB.access_mineral_storeroom, GLOB.access_xenobiology, GLOB.access_genetics)
- minimal_access = list(GLOB.access_robotics, GLOB.access_tech_storage, GLOB.access_morgue, GLOB.access_research, GLOB.access_mineral_storeroom)
+ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS)
+ minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM)
/datum/outfit/job/roboticist
name = "Roboticist"
diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm
index 3b952bab1c..88c73db19a 100644
--- a/code/modules/jobs/job_types/security.dm
+++ b/code/modules/jobs/job_types/security.dm
@@ -1,7 +1,7 @@
//Warden and regular officers add this result to their get_access()
/datum/job/proc/check_config_for_sec_maint()
if(config.jobs_have_maint_access & SECURITY_HAS_MAINT_ACCESS)
- return list(GLOB.access_maint_tunnels)
+ return list(ACCESS_MAINT_TUNNELS)
return list()
/*
@@ -23,14 +23,14 @@ Head of Security
outfit = /datum/outfit/job/hos
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_weapons,
- GLOB.access_forensics_lockers, GLOB.access_morgue, GLOB.access_maint_tunnels, GLOB.access_all_personal_lockers,
- GLOB.access_research, GLOB.access_engine, GLOB.access_mining, GLOB.access_medical, GLOB.access_construction, GLOB.access_mailsorting,
- GLOB.access_heads, GLOB.access_hos, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_maint_tunnels)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_weapons,
- GLOB.access_forensics_lockers, GLOB.access_morgue, GLOB.access_maint_tunnels, GLOB.access_all_personal_lockers,
- GLOB.access_research, GLOB.access_engine, GLOB.access_mining, GLOB.access_medical, GLOB.access_construction, GLOB.access_mailsorting,
- GLOB.access_heads, GLOB.access_hos, GLOB.access_RC_announce, GLOB.access_keycard_auth, GLOB.access_gateway, GLOB.access_maint_tunnels)
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS,
+ ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
+ ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
+ ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS,
+ ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
+ ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
+ ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS)
/datum/outfit/job/hos
name = "Head of Security"
@@ -74,8 +74,8 @@ Warden
outfit = /datum/outfit/job/warden
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_armory, GLOB.access_court, GLOB.access_weapons) //See /datum/job/warden/get_access()
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS) //SEE /DATUM/JOB/WARDEN/GET_ACCESS()
/datum/job/warden/get_access()
var/list/L = list()
@@ -124,8 +124,8 @@ Detective
outfit = /datum/outfit/job/detective
- access = list(GLOB.access_sec_doors, GLOB.access_forensics_lockers, GLOB.access_morgue, GLOB.access_maint_tunnels, GLOB.access_court, GLOB.access_brig, GLOB.access_weapons)
- minimal_access = list(GLOB.access_sec_doors, GLOB.access_forensics_lockers, GLOB.access_morgue, GLOB.access_maint_tunnels, GLOB.access_court, GLOB.access_brig, GLOB.access_weapons)
+ access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS)
+ minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS)
/datum/outfit/job/detective
name = "Detective"
@@ -172,8 +172,8 @@ Security Officer
outfit = /datum/outfit/job/security
- access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_court, GLOB.access_maint_tunnels, GLOB.access_morgue, GLOB.access_weapons, GLOB.access_forensics_lockers)
- minimal_access = list(GLOB.access_security, GLOB.access_sec_doors, GLOB.access_brig, GLOB.access_court, GLOB.access_weapons) //But see /datum/job/warden/get_access()
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS) //BUT SEE /DATUM/JOB/WARDEN/GET_ACCESS()
/datum/job/officer/get_access()
@@ -202,25 +202,25 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S
switch(department)
if(SEC_DEPT_SUPPLY)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/supply
- dep_access = list(GLOB.access_mailsorting, GLOB.access_mining, GLOB.access_mining_station)
+ dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION)
destination = /area/security/checkpoint/supply
spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/cargo
if(SEC_DEPT_ENGINEERING)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi
- dep_access = list(GLOB.access_construction, GLOB.access_engine)
+ dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE)
destination = /area/security/checkpoint/engineering
spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/engine
if(SEC_DEPT_MEDICAL)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/med
- dep_access = list(GLOB.access_medical)
+ dep_access = list(ACCESS_MEDICAL)
destination = /area/security/checkpoint/medical
spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/medblue
if(SEC_DEPT_SCIENCE)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci
- dep_access = list(GLOB.access_research)
+ dep_access = list(ACCESS_RESEARCH)
destination = /area/security/checkpoint/science
spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns
accessory = /obj/item/clothing/accessory/armband/science
diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm
index 4e82216513..e2ea2a86c5 100644
--- a/code/modules/library/random_books.dm
+++ b/code/modules/library/random_books.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/book/manual/random/Initialize()
..()
- var/static/banned_books = list(/obj/item/weapon/book/manual/random,/obj/item/weapon/book/manual/nuclear,/obj/item/weapon/book/manual/wiki)
+ var/static/banned_books = list(/obj/item/weapon/book/manual/random, /obj/item/weapon/book/manual/nuclear, /obj/item/weapon/book/manual/wiki)
var/newtype = pick(subtypesof(/obj/item/weapon/book/manual) - banned_books)
new newtype(loc)
qdel(src)
diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm
index 373a937be2..c8ef0ebe2a 100644
--- a/code/modules/mapping/map_template.dm
+++ b/code/modules/mapping/map_template.dm
@@ -32,10 +32,10 @@
atoms += B
for(var/A in B)
atoms += A
- if(istype(A,/obj/structure/cable))
+ if(istype(A, /obj/structure/cable))
cables += A
continue
- if(istype(A,/obj/machinery/atmospherics))
+ if(istype(A, /obj/machinery/atmospherics))
atmos_machines += A
SSatoms.InitializeAtoms(atoms)
diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm
index 1facd571ce..4f4ff981d1 100644
--- a/code/modules/mapping/reader.dm
+++ b/code/modules/mapping/reader.dm
@@ -171,7 +171,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
/**
* Fill a given tile with its area/turf/objects/mobs
- * Variable model is one full map line (e.g /turf/unsimulated/wall{icon_state = "rock"},/area/mine/explored)
+ * Variable model is one full map line (e.g /turf/unsimulated/wall{icon_state = "rock"}, /area/mine/explored)
*
* WORKING :
*
@@ -292,7 +292,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
//then instance the /turf and, if multiple tiles are presents, simulates the DMM underlays piling effect
var/first_turf_index = 1
- while(!ispath(members[first_turf_index],/turf)) //find first /turf object in members
+ while(!ispath(members[first_turf_index], /turf)) //find first /turf object in members
first_turf_index++
//turn off base new Initialization until the whole thing is loaded
@@ -327,7 +327,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
if(crds)
if(!no_changeturf && ispath(path, /turf))
- . = crds.ChangeTurf(path, TRUE)
+ . = crds.ChangeTurf(path, FALSE, TRUE)
else
. = create_atom(path, crds)//first preloader pass
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index c20f45feac..4f07bbbc48 100644
--- a/code/modules/mining/aux_base.dm
+++ b/code/modules/mining/aux_base.dm
@@ -20,7 +20,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
var/launch_warning = TRUE
var/list/turrets = list() //List of connected turrets
- req_one_access = list(GLOB.access_cargo, GLOB.access_construction, GLOB.access_heads, GLOB.access_research)
+ req_one_access = list(ACCESS_CARGO, ACCESS_CONSTRUCTION, ACCESS_HEADS, ACCESS_RESEARCH)
var/possible_destinations
clockwork = TRUE
var/obj/item/device/gps/internal/base/locator
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index e4acea1cf0..5f8830139c 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -11,7 +11,7 @@
heat_protection = CHEST|GROIN|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/explorer
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe)
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe)
resistance_flags = FIRE_PROOF
/obj/item/clothing/head/hooded/explorer
diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm
index dc1de44176..f052e809e6 100644
--- a/code/modules/mining/equipment/marker_beacons.dm
+++ b/code/modules/mining/equipment/marker_beacons.dm
@@ -1,6 +1,6 @@
/*****************Marker Beacons**************************/
GLOBAL_LIST_INIT(marker_beacon_colors, list(
-"Random" = FALSE,//not a true color, will pick a random color
+"Random" = FALSE, //not a true color, will pick a random color
"Burgundy" = LIGHT_COLOR_FLARE,
"Bronze" = LIGHT_COLOR_ORANGE,
"Yellow" = LIGHT_COLOR_YELLOW,
diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm
index 24ec10e4cf..79ed1fb112 100644
--- a/code/modules/mining/laborcamp/laborshuttle.dm
+++ b/code/modules/mining/laborcamp/laborshuttle.dm
@@ -4,7 +4,7 @@
circuit = /obj/item/weapon/circuitboard/computer/labor_shuttle
shuttleId = "laborcamp"
possible_destinations = "laborcamp_home;laborcamp_away"
- req_access = list(GLOB.access_brig)
+ req_access = list(ACCESS_BRIG)
/obj/machinery/computer/shuttle/labor/one_way
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index d4e8496e1c..e9961d7b3b 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -131,7 +131,7 @@
/obj/machinery/mineral/stacking_machine/laborstacker
var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity.
- var/list/ore_values = list("glass" = 1, "metal" = 2, "solid plasma" = 20, "plasteel" = 23, "reinforced glass" = 4, "gold" = 20, "silver" = 20, "uranium" = 20, "diamond" = 25, "bananium" = 50)
+ var/list/ore_values = list("glass" = 1, "metal" = 2, "reinforced glass" = 4, "gold" = 20, "silver" = 20, "uranium" = 20, "titanium" = 20, "solid plasma" = 20, "plasteel" = 23, "plasma glass" = 23, "diamond" = 25, "bluespace polycrystal" = 30, "plastitanium" = 45, "bananium" = 50)
/obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp)
if(istype(inp))
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 48f1c88fc9..f9e2ee855a 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -425,7 +425,7 @@
if(!over_object)
return
- if (istype(usr.loc,/obj/mecha))
+ if (istype(usr.loc, /obj/mecha))
return
if(!M.incapacitated())
@@ -636,13 +636,18 @@
/obj/item/weapon/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user)
if(!active || swiping || !target.density || get_turf(target) == get_turf(user))
+ if(!active)
+ faction_bonus_force = 0
..()
+ if(!active)
+ faction_bonus_force = initial(faction_bonus_force)
else
var/turf/user_turf = get_turf(user)
var/dir_to_target = get_dir(user_turf, get_turf(target))
swiping = TRUE
- for(var/i in 1 to 3)
- var/turf/T = get_step(user_turf, turn(dir_to_target, 90 - (45 * i)))
+ var/static/list/cleaving_saw_cleave_angles = list(0, -45, 45) //so that the animation animates towards the target clicked and not towards a side target
+ for(var/i in cleaving_saw_cleave_angles)
+ var/turf/T = get_step(user_turf, turn(dir_to_target, i))
for(var/mob/living/L in T)
if(user.Adjacent(L) && L.density)
melee_attack_chain(user, L)
@@ -830,7 +835,7 @@
damtype = BURN
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
hitsound = 'sound/weapons/sear.ogg'
- var/turf_type = /turf/open/floor/plating/lava/smooth
+ var/turf_type = /turf/open/lava/smooth
var/transform_string = "lava"
var/reset_turf_type = /turf/open/floor/plating/asteroid/basalt
var/reset_string = "basalt"
@@ -951,6 +956,7 @@
var/datum/objective/survive/survive = new
survive.owner = L.mind
L.mind.objectives += survive
+ add_logs(user, L, "took out a blood contract on", src)
to_chat(L, "You've been marked for death! Don't let the demons get you!")
L.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY)
var/obj/effect/mine/pickup/bloodbath/B = new(L)
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 0087687688..0232da4e83 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -10,8 +10,8 @@
anchored = TRUE
input_dir = NORTH
output_dir = SOUTH
- req_access = list(GLOB.access_mineral_storeroom)
- var/req_access_reclaim = GLOB.access_mining_station
+ req_access = list(ACCESS_MINERAL_STOREROOM)
+ var/req_access_reclaim = ACCESS_MINING_STATION
var/obj/item/weapon/card/id/inserted_id
var/points = 0
var/ore_pickup_rate = 15
@@ -173,7 +173,7 @@
if(!powered())
return
- if(istype(W,/obj/item/weapon/card/id))
+ if(istype(W, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = user.get_active_held_item()
if(istype(I) && !istype(inserted_id))
if(!user.drop_item())
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 8607dfc865..14021cc60c 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -26,7 +26,7 @@
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/weapon/storage/belt/mining, 500),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/medipen/survival, 500),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600),
- new /datum/data/mining_equipment("Tracking Implant Kit",/obj/item/weapon/storage/box/minertracker, 600),
+ new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/weapon/storage/box/minertracker, 600),
new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 750),
new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/weapon/twohanded/required/kinetic_crusher, 750),
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750),
@@ -46,13 +46,13 @@
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
- new /datum/data/mining_equipment("KA Cooldown Decrease",/obj/item/borg/upgrade/modkit/cooldown, 1000),
+ new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500),
new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone, 800),
new /datum/data/mining_equipment("Drone Melee Upgrade", /obj/item/device/mine_bot_ugprade, 400),
- new /datum/data/mining_equipment("Drone Health Upgrade",/obj/item/device/mine_bot_ugprade/health, 400),
- new /datum/data/mining_equipment("Drone Ranged Upgrade",/obj/item/device/mine_bot_ugprade/cooldown, 600),
+ new /datum/data/mining_equipment("Drone Health Upgrade", /obj/item/device/mine_bot_ugprade/health, 400),
+ new /datum/data/mining_equipment("Drone Ranged Upgrade", /obj/item/device/mine_bot_ugprade/cooldown, 600),
new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
)
@@ -151,7 +151,7 @@
if(istype(I, /obj/item/weapon/mining_voucher))
RedeemVoucher(I, user)
return
- if(istype(I,/obj/item/weapon/card/id))
+ if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = usr.get_active_held_item()
if(istype(C) && !istype(inserted_id))
if(!usr.drop_item())
@@ -274,10 +274,10 @@
/obj/item/weapon/card/mining_access_card/afterattack(atom/movable/AM, mob/user, proximity)
if(istype(AM, /obj/item/weapon/card/id) && proximity)
var/obj/item/weapon/card/id/I = AM
- I.access |= GLOB.access_mining
- I.access |= GLOB.access_mining_station
- I.access |= GLOB.access_mineral_storeroom
- I.access |= GLOB.access_cargo
+ I.access |= ACCESS_MINING
+ I.access |= ACCESS_MINING_STATION
+ I.access |= ACCESS_MINERAL_STOREROOM
+ I.access |= ACCESS_CARGO
to_chat(user, "You upgrade [I] with mining access.")
qdel(src)
..()
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index a97f9ad4a7..d6ef4a3885 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -35,7 +35,7 @@
/obj/structure/closet/secure_closet/miner
name = "miner's equipment"
icon_state = "mining"
- req_access = list(GLOB.access_mining)
+ req_access = list(ACCESS_MINING)
/obj/structure/closet/secure_closet/miner/PopulateContents()
..()
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 5cdf91ee62..03d75717ab 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -23,33 +23,46 @@
..()
/obj/item/weapon/ore/Crossed(atom/movable/AM)
+ set waitfor = FALSE
+ var/show_message = TRUE
+ for(var/obj/item/weapon/ore/O in loc)
+ if(O != src)
+ show_message = FALSE
+ break
var/obj/item/weapon/storage/bag/ore/OB
- if(istype(loc, /turf/open/floor/plating/asteroid))
- var/turf/open/floor/plating/asteroid/F = loc
- if(ishuman(AM))
- var/mob/living/carbon/human/H = AM
- for(var/thing in H.get_storage_slots())
- if(istype(thing, /obj/item/weapon/storage/bag/ore))
- OB = thing
- break
- for(var/thing in H.held_items)
- if(istype(thing, /obj/item/weapon/storage/bag/ore))
- OB = thing
- break
- else if(iscyborg(AM))
- var/mob/living/silicon/robot/R = AM
- for(var/thing in R.module_active)
- if(istype(thing, /obj/item/weapon/storage/bag/ore))
- OB = thing
- break
- if(OB)
- F.attackby(OB, AM)
- // Then, if the user is dragging an ore box, empty the satchel
- // into the box.
- var/mob/living/L = AM
- if(istype(L.pulling, /obj/structure/ore_box))
- var/obj/structure/ore_box/box = L.pulling
- box.attackby(OB, AM)
+ if(ishuman(AM))
+ var/mob/living/carbon/human/H = AM
+ OB = locate(/obj/item/weapon/storage/bag/ore) in H.get_storage_slots()
+ if(!OB)
+ OB = locate(/obj/item/weapon/storage/bag/ore) in H.held_items
+ else if(iscyborg(AM))
+ var/mob/living/silicon/robot/R = AM
+ OB = locate(/obj/item/weapon/storage/bag/ore) in R.held_items
+ if(OB)
+ var/obj/structure/ore_box/box
+ if(!OB.can_be_inserted(src, TRUE, AM))
+ if(!OB.spam_protection)
+ to_chat(AM, "Your [OB.name] is full and can't hold any more ore!")
+ OB.spam_protection = TRUE
+ sleep(1)
+ OB.spam_protection = FALSE
+ else
+ OB.handle_item_insertion(src, TRUE, AM)
+ // Then, if the user is dragging an ore box, empty the satchel
+ // into the box.
+ var/mob/living/L = AM
+ if(istype(L.pulling, /obj/structure/ore_box))
+ box = L.pulling
+ for(var/obj/item/weapon/ore/O in OB)
+ OB.remove_from_storage(src, box)
+ if(show_message)
+ playsound(L, "rustle", 50, TRUE)
+ if(box)
+ L.visible_message("[L] offloads the ores into [box].", \
+ "You offload the ores beneath you into your [box.name].")
+ else
+ L.visible_message("[L] scoops up the ores beneath them.", \
+ "You scoop up the ores beneath you with your [OB.name].")
return ..()
/obj/item/weapon/ore/uranium
@@ -269,7 +282,7 @@
user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.")
log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]")
det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
-
+
/obj/item/weapon/twohanded/required/gibtonite/proc/detonate(notify_admins)
if(primed)
switch(quality)
@@ -410,7 +423,7 @@
to_chat(user, "You need one length of cable to attach a string to the coin!")
return
- else if(istype(W,/obj/item/weapon/wirecutters))
+ else if(istype(W, /obj/item/weapon/wirecutters))
if(!string_attached)
..()
return
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index d9e41d7916..54eec1dc8a 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -110,7 +110,7 @@
if(SSticker)
var/tready = text2num(href_list["ready"])
//Avoid updating ready if we're after PREGAME (they should use latejoin instead)
- //This is likely not an actual issue but I don't have time to prove that this
+ //This is likely not an actual issue but I don't have time to prove that this
//no longer is required
if(SSticker.current_state <= GAME_STATE_PREGAME)
ready = tready
@@ -368,6 +368,7 @@
humanc.make_scottish()
GLOB.joined_player_list += character.ckey
+ GLOB.latejoiners += character
if(config.allow_latejoin_antagonists && humanc) //Borgs aren't allowed to be antags. Will need to be tweaked if we get true latejoin ais.
if(SSshuttle.emergency)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm
index a784bd7d03..9d303f867f 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm
@@ -153,6 +153,18 @@
icon_state = "wolf"
icon = 'icons/mob/mam_bodyparts.dmi'
+/datum/sprite_accessory/tails/human/rabbit
+ name = "Rabbit"
+ icon_state = "rabbit"
+ color_src = 0
+ icon = 'icons/mob/mam_bodyparts.dmi'
+
+/datum/sprite_accessory/ears/human/rabbit
+ name = "Rabbit"
+ icon_state = "rabbit"
+ hasinner= 1
+ icon = 'icons/mob/mam_bodyparts.dmi'
+
/******************************************
*************** Body Parts ****************
*******************************************/
@@ -429,6 +441,18 @@
icon_state = "guilmon"
icon = 'icons/mob/mam_bodyparts.dmi'
+/datum/sprite_accessory/mam_tails/rabbit
+ name = "Rabbit"
+ icon_state = "rabbit"
+ color_src = 0
+ icon = 'icons/mob/mam_bodyparts.dmi'
+
+/datum/sprite_accessory/mam_ears/rabbit
+ name = "Rabbit"
+ icon_state = "rabbit"
+ hasinner= 1
+ icon = 'icons/mob/mam_bodyparts.dmi'
+
/******************************************
************ Body Markings ****************
*******************************************/
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 9cad58c201..8e919491bb 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -16,7 +16,7 @@
/obj/item/device/mmi/update_icon()
if(brain)
- if(istype(brain,/obj/item/organ/brain/alien))
+ if(istype(brain, /obj/item/organ/brain/alien))
if(brainmob && brainmob.stat == DEAD)
icon_state = "mmi_alien_dead"
else
@@ -39,7 +39,7 @@
/obj/item/device/mmi/attackby(obj/item/O, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
- if(istype(O,/obj/item/organ/brain)) //Time to stick a brain in it --NEO
+ if(istype(O, /obj/item/organ/brain)) //Time to stick a brain in it --NEO
var/obj/item/organ/brain/newbrain = O
if(brain)
to_chat(user, "There's already a brain in the MMI!")
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index 6f39718acf..5161f94808 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -66,7 +66,7 @@
/mob/living/brain/ClickOn(atom/A, params)
..()
- if(istype(loc,/obj/item/device/mmi))
+ if(istype(loc, /obj/item/device/mmi))
var/obj/item/device/mmi/MMI = loc
var/obj/mecha/M = MMI.mecha
if((src == MMI.brainmob) && istype(M))
diff --git a/code/modules/mob/living/brain/death.dm b/code/modules/mob/living/brain/death.dm
index e98859b90f..9366f4d423 100644
--- a/code/modules/mob/living/brain/death.dm
+++ b/code/modules/mob/living/brain/death.dm
@@ -15,6 +15,6 @@
if(container)
qdel(container)//Gets rid of the MMI if there is one
if(loc)
- if(istype(loc,/obj/item/organ/brain))
+ if(istype(loc, /obj/item/organ/brain))
qdel(loc)//Gets rid of the brain item
..()
\ No newline at end of file
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index ac92c3479c..44f8810b56 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -11,7 +11,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
var/askDelay = 600 //one minute
var/searching = FALSE
brainmob = null
- req_access = list(GLOB.access_robotics)
+ req_access = list(ACCESS_ROBOTICS)
mecha = null//This does not appear to be used outside of reference in mecha.dm.
braintype = "Android"
var/autoping = TRUE //if it pings on creation immediately
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 4415c0d7ab..a53ba5f5ee 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -51,7 +51,7 @@
var/obj/item/item_in_hand = src.get_active_held_item()
if(item_in_hand) //this segment checks if the item in your hand is twohanded.
- if(istype(item_in_hand,/obj/item/weapon/twohanded))
+ if(istype(item_in_hand, /obj/item/weapon/twohanded))
if(item_in_hand:wielded == 1)
to_chat(usr, "Your other hand is too busy holding the [item_in_hand.name]")
return
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 780fabe64d..2e17b466f1 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -68,7 +68,11 @@
/mob/living/carbon/attacked_by(obj/item/I, mob/living/user)
- var/obj/item/bodypart/affecting = get_bodypart(ran_zone(user.zone_selected))
+ var/obj/item/bodypart/affecting
+ if(user == src)
+ affecting = get_bodypart(check_zone(user.zone_selected)) //we're self-mutilating! yay!
+ else
+ affecting = get_bodypart(ran_zone(user.zone_selected))
if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest)
affecting = bodyparts[1]
send_item_attack_message(I, user, affecting.name)
@@ -265,7 +269,7 @@
var/damage = intensity - get_eye_protection()
if(.) // we've been flashed
- var/obj/item/organ/eyes/eyes = getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = getorganslot("eye_sight")
if (!eyes)
return
if(visual)
diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm
index f980ed149c..ebf1d6284d 100644
--- a/code/modules/mob/living/carbon/damage_procs.dm
+++ b/code/modules/mob/living/carbon/damage_procs.dm
@@ -36,6 +36,8 @@
adjustCloneLoss(damage * hit_percent)
if(STAMINA)
adjustStaminaLoss(damage * hit_percent)
+ if(BRAIN)
+ adjustBrainLoss(damage * hit_percent)
//citadel code
if(AROUSAL)
adjustArousalLoss(damage * hit_percent)
diff --git a/code/modules/mob/living/carbon/damage_procs.dm.rej b/code/modules/mob/living/carbon/damage_procs.dm.rej
new file mode 100644
index 0000000000..9819e18e18
--- /dev/null
+++ b/code/modules/mob/living/carbon/damage_procs.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm (rejected hunks)
+@@ -36,6 +36,8 @@
+ adjustCloneLoss(damage * hit_percent)
+ if(STAMINA)
+ adjustStaminaLoss(damage * hit_percent)
++ if(BRAIN)
++ adjustBrainLoss(damage * hit_percent)
+ return 1
+
+
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index bf578d6b0b..94732a349d 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -16,7 +16,7 @@
if(w_uniform && !(slot_w_uniform in obscured))
//accessory
var/accessory_msg
- if(istype(w_uniform,/obj/item/clothing/under))
+ if(istype(w_uniform, /obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform
if(U.attached_accessory)
accessory_msg += " with [bicon(U.attached_accessory)] \a [U.attached_accessory]"
@@ -273,7 +273,7 @@
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
if(getorgan(/obj/item/organ/brain))
- if(istype(src,/mob/living/carbon/human/interactive))
+ if(istype(src, /mob/living/carbon/human/interactive))
var/mob/living/carbon/human/interactive/auto = src
if(auto.showexaminetext)
msg += "[t_He] [t_is] appears to be some sort of sick automaton, [t_his] eyes are glazed over and [t_his] mouth is slightly agape.\n"
@@ -300,7 +300,7 @@
msg += "Rank: [R.fields["rank"]] "
msg += "\[Front photo\] "
msg += "\[Side photo\] "
- if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH,/obj/item/organ/cyberimp/eyes/hud/medical))
+ if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical))
var/cyberimp_detect
for(var/obj/item/organ/cyberimp/CI in internal_organs)
if(CI.status == ORGAN_ROBOTIC)
@@ -318,7 +318,7 @@
msg += "\[Medical evaluation\] "
- if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH,/obj/item/organ/cyberimp/eyes/hud/security))
+ if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/security))
if(!user.stat && user != src)
//|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at.
var/criminal = "None"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5aebe25631..49a645b7c1 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -401,7 +401,7 @@
if (!G.emagged)
if(H.wear_id)
var/list/access = H.wear_id.GetAccess()
- if(GLOB.access_sec_doors in access)
+ if(ACCESS_SEC_DOORS in access)
allowed_access = H.get_authentification_name()
else
allowed_access = "@%&ERROR_%$*"
@@ -594,7 +594,7 @@
//Check for weapons
if( (judgement_criteria & JUDGE_WEAPONCHECK) && weaponcheck)
- if(!idcard || !(GLOB.access_weapons in idcard.access))
+ if(!idcard || !(ACCESS_WEAPONS in idcard.access))
for(var/obj/item/I in held_items)
if(weaponcheck.Invoke(I))
threatcount += 4
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index e534598e25..238e9d53ce 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -25,7 +25,7 @@
for(var/bp in body_parts)
if(!bp)
continue
- if(bp && istype(bp ,/obj/item/clothing))
+ if(bp && istype(bp , /obj/item/clothing))
var/obj/item/clothing/C = bp
if(C.body_parts_covered & def_zone.body_part)
protection += C.armor[d_type]
@@ -156,8 +156,13 @@
if(!I || !user)
return 0
- var/obj/item/bodypart/affecting = get_bodypart(ran_zone(user.zone_selected)) //what we're actually ending up trying to hit.
+ var/obj/item/bodypart/affecting
+ if(user == src)
+ affecting = get_bodypart(check_zone(user.zone_selected)) //stabbing yourself always hits the right target
+ else
+ affecting = get_bodypart(ran_zone(user.zone_selected))
var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target
+
SSblackbox.add_details("item_used_for_combat","[I.type]|[I.force]")
SSblackbox.add_details("zone_targeted","[target_area]")
diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm
index 59676238e7..e439f8ef9e 100644
--- a/code/modules/mob/living/carbon/human/interactive.dm
+++ b/code/modules/mob/living/carbon/human/interactive.dm
@@ -154,7 +154,7 @@
return
if(A)
- if(!istype(A,/mob/living/carbon/human/interactive))
+ if(!istype(A, /mob/living/carbon/human/interactive))
return
var/mob/living/carbon/human/interactive/T = A
if(T)
@@ -171,7 +171,7 @@
return
if(A)
- if(!istype(A,/mob/living/carbon/human/interactive))
+ if(!istype(A, /mob/living/carbon/human/interactive))
return
var/mob/living/carbon/human/interactive/T = A
@@ -286,7 +286,7 @@
if("Assistant")
favoured_types = list(/obj/item/clothing, /obj/item/weapon)
if("Captain","Head of Personnel")
- favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/captain,/obj/item/weapon/disk/nuclear)
+ favoured_types = list(/obj/item/clothing, /obj/item/weapon/stamp/captain, /obj/item/weapon/disk/nuclear)
if("Cook")
favoured_types = list(/obj/item/weapon/reagent_containers/food, /obj/item/weapon/kitchen)
functions += "souschef"
@@ -308,7 +308,7 @@
favoured_types = list(/obj/item/weapon/mop, /obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/effect/decal/cleanable)
functions += "dojanitor"
if("Clown")
- favoured_types = list(/obj/item/weapon/soap, /obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/grown/bananapeel)
+ favoured_types = list(/obj/item/weapon/soap, /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/weapon/grown/bananapeel)
functions += "clowning"
if("Mime")
functions -= "chatter"
@@ -354,7 +354,7 @@
var/datum/objective_item/steal/S = new A
traitorTarget = locate(S.targetitem) in world
if(SNPC_MARTYR) // MY LIFE FOR SPESZUL
- var/targetType = pick(/obj/machinery/gravity_generator/main/station,/obj/machinery/power/smes/engineering,/obj/machinery/telecomms/hub)
+ var/targetType = pick(/obj/machinery/gravity_generator/main/station, /obj/machinery/power/smes/engineering, /obj/machinery/telecomms/hub)
traitorTarget = locate(targetType) in GLOB.machines
if(SNPC_PSYCHO) // YOU'RE LIKE A FLESH BICYLE AND I WANT TO DISMANTLE YOU
traitorTarget = null
@@ -549,8 +549,8 @@
var/turf/T = get_step(src,dir)
if(T)
for(var/obj/machinery/door/D in T.contents)
- if(!istype(D,/obj/machinery/door/poddoor) && D.density)
- if(istype(D,/obj/machinery/door/airlock))
+ if(!istype(D, /obj/machinery/door/poddoor) && D.density)
+ if(istype(D, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/AL = D
if(!AL.CanAStarPass(RPID)) // only crack open doors we can't get through
inactivity_period = 20
@@ -623,7 +623,7 @@
//--------DOORS
if(istype(TARGET, /obj/machinery/door))
var/obj/machinery/door/D = TARGET
- if(D.check_access(MYID) && !istype(D,/obj/machinery/door/poddoor))
+ if(D.check_access(MYID) && !istype(D, /obj/machinery/door/poddoor))
inactivity_period = 10
D.open()
var/turf/T = get_step(get_step(D.loc,dir),dir) //recursion yo
@@ -646,7 +646,7 @@
else
insert_into_backpack()
//---------FASHION
- if(istype(TARGET,/obj/item/clothing))
+ if(istype(TARGET, /obj/item/clothing))
drop_item()
dressup(TARGET)
update_hands = 1
@@ -657,7 +657,7 @@
equip_to_appropriate_slot(MYID)
//THIEVING SKILLS END
//-------------TOUCH ME
- if(istype(TARGET,/obj/structure))
+ if(istype(TARGET, /obj/structure))
var/obj/structure/STR = TARGET
if(main_hand)
var/obj/item/weapon/W = main_hand
@@ -815,7 +815,7 @@
if(T.title == "Botanist")
return /area/hydroponics
else
- return pick(/area/hallway,/area/crew_quarters/locker)
+ return pick(/area/hallway, /area/crew_quarters/locker)
/mob/living/carbon/human/interactive/proc/target_filter(target)
var/list/filtered_targets = list(/area, /turf, /obj/machinery/door, /atom/movable/light, /obj/structure/cable, /obj/machinery/atmospherics)
@@ -1115,7 +1115,7 @@
if(retal && TARGET)
for(var/obj/item/I in allContents)
- if(istype(I,/obj/item/weapon/restraints))
+ if(istype(I, /obj/item/weapon/restraints))
I.attack(TARGET,src) // go go bluespace restraint launcher!
inactivity_period = 25
break
@@ -1139,7 +1139,7 @@
var/pranksNearby = 100
for(var/turf/open/T in orange(1,C))
for(var/obj/item/A in T)
- if(istype(A,/obj/item/weapon/soap) || istype(A,/obj/item/weapon/reagent_containers/food/snacks/grown/banana) || istype(A,/obj/item/weapon/grown/bananapeel))
+ if(istype(A, /obj/item/weapon/soap) || istype(A, /obj/item/weapon/reagent_containers/food/snacks/grown/banana) || istype(A, /obj/item/weapon/grown/bananapeel))
pranksNearby--
if(T.wet)
pranksNearby -= 10
@@ -1159,13 +1159,13 @@
var/hasPranked = 0
for(var/A in allContents)
if(prob(smartness/2) && !hasPranked)
- if(istype(A,/obj/item/weapon/soap))
+ if(istype(A, /obj/item/weapon/soap))
npcDrop(A)
hasPranked = 1
- if(istype(A,/obj/item/weapon/reagent_containers/food/snacks/grown/banana))
+ if(istype(A, /obj/item/weapon/reagent_containers/food/snacks/grown/banana))
var/obj/item/weapon/reagent_containers/food/snacks/B = A
B.attack(src, src)
- if(istype(A,/obj/item/weapon/grown/bananapeel))
+ if(istype(A, /obj/item/weapon/grown/bananapeel))
npcDrop(A)
hasPranked = 1
if(!hasPranked)
@@ -1181,7 +1181,7 @@
var/list/allContents = getAllContents()
for(var/A in allContents)
- if(istype(A,/obj/item/stack/medical))
+ if(istype(A, /obj/item/stack/medical))
shouldTryHeal = 1
M = A
@@ -1281,7 +1281,7 @@
var/list/rangeCheck = view(6,src)
//Make some basic custom food
- var/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain,/obj/item/weapon/reagent_containers/food/snacks/pizzabread,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain,/obj/item/weapon/reagent_containers/food/snacks/pie/plain,/obj/item/weapon/reagent_containers/food/snacks/pastrybase)
+ var/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable, /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain, /obj/item/weapon/reagent_containers/food/snacks/pizzabread, /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain, /obj/item/weapon/reagent_containers/food/snacks/pie/plain, /obj/item/weapon/reagent_containers/food/snacks/pastrybase)
var/foundCustom
@@ -1379,7 +1379,7 @@
var/list/finishedList = list()
for(var/obj/item/weapon/reagent_containers/food/snacks/toDisplay in allContents)
- if(!toDisplay.cooked_type && !istype(toDisplay,/obj/item/weapon/reagent_containers/food/snacks/grown)) // dont display our ingredients
+ if(!toDisplay.cooked_type && !istype(toDisplay, /obj/item/weapon/reagent_containers/food/snacks/grown)) // dont display our ingredients
finishedList += toDisplay
for(var/obj/item/weapon/reagent_containers/food/snacks/toGrab in rangeCheck)
@@ -1410,7 +1410,7 @@
RT.attackby(toPlop,src)
if(!foundCookable)
- var/list/allTypes = list(/obj/item/weapon/reagent_containers/food/snacks/piedough,/obj/item/weapon/reagent_containers/food/snacks/cakebatter,/obj/item/weapon/reagent_containers/food/snacks/dough,/obj/item/weapon/reagent_containers/food/snacks/flatdough)
+ var/list/allTypes = list(/obj/item/weapon/reagent_containers/food/snacks/piedough, /obj/item/weapon/reagent_containers/food/snacks/cakebatter, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/flatdough)
for(var/A in typesof(/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/O = A
@@ -1473,7 +1473,7 @@
foundFav = 1
return
if(!foundFav)
- if(istype(test,/obj/item/weapon))
+ if(istype(test, /obj/item/weapon))
var/obj/item/weapon/R = test
if(R.force > 2) // make sure we don't equip any non-weaponlike items, ie bags and stuff
if(!best)
@@ -1481,7 +1481,7 @@
else
if(best.force < R.force)
best = R
- if(istype(R,/obj/item/weapon/gun))
+ if(istype(R, /obj/item/weapon/gun))
var/obj/item/weapon/gun/G = R
if(G.can_shoot())
best = R
@@ -1495,15 +1495,15 @@
if(M.health > 1)
//THROWING OBJECTS
for(var/A in allContents)
- if(istype(A,/obj/item/weapon/gun)) // guns are for shooting, not throwing.
+ if(istype(A, /obj/item/weapon/gun)) // guns are for shooting, not throwing.
continue
if(prob(robustness))
- if(istype(A,/obj/item/weapon))
+ if(istype(A, /obj/item/weapon))
var/obj/item/weapon/W = A
if(W.throwforce > 19) // Only throw worthwile stuff, no more lobbing wrenches at wenches
npcDrop(W,1)
throw_item(TARGET)
- if(istype(A,/obj/item/weapon/grenade)) // Allahu ackbar! ALLAHU ACKBARR!!
+ if(istype(A, /obj/item/weapon/grenade)) // Allahu ackbar! ALLAHU ACKBARR!!
var/obj/item/weapon/grenade/G = A
G.attack_self(src)
if(prob(smartness))
@@ -1516,10 +1516,10 @@
swap_hands()
if(main_hand)
if(main_hand.force != 0)
- if(istype(main_hand,/obj/item/weapon/gun))
+ if(istype(main_hand, /obj/item/weapon/gun))
var/obj/item/weapon/gun/G = main_hand
if(G.can_trigger_gun(src))
- if(istype(main_hand,/obj/item/weapon/gun/ballistic))
+ if(istype(main_hand, /obj/item/weapon/gun/ballistic))
var/obj/item/weapon/gun/ballistic/P = main_hand
if(!P.chambered)
P.chamber_round()
@@ -1529,11 +1529,11 @@
npcDrop(P,1)
else
P.afterattack(TARGET, src)
- else if(istype(main_hand,/obj/item/weapon/gun/energy))
+ else if(istype(main_hand, /obj/item/weapon/gun/energy))
var/obj/item/weapon/gun/energy/P = main_hand
var/stunning = 0
for(var/A in P.ammo_type)
- if(ispath(A,/obj/item/ammo_casing/energy/electrode))
+ if(ispath(A, /obj/item/ammo_casing/energy/electrode))
stunning = 1
var/shouldFire = 1
var/mob/living/stunCheck = TARGET
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index eeb046a3e7..d9f1acf879 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -152,11 +152,13 @@
if(s_store && invdrop)
dropItemToGround(s_store, TRUE) //It makes no sense for your suit storage to stay on you if you drop your suit.
if(wear_suit.breakouttime) //when unequipping a straightjacket
+ drop_all_held_items() //suit is restraining
update_action_buttons_icon() //certain action buttons may be usable again.
wear_suit = null
- if(I.flags_inv & HIDEJUMPSUIT)
- update_inv_w_uniform()
- update_inv_wear_suit()
+ if(!QDELETED(src)) //no need to update we're getting deleted anyway
+ if(I.flags_inv & HIDEJUMPSUIT)
+ update_inv_w_uniform()
+ update_inv_wear_suit()
else if(I == w_uniform)
if(invdrop)
if(r_store)
@@ -169,10 +171,12 @@
dropItemToGround(belt)
w_uniform = null
update_suit_sensors()
- update_inv_w_uniform(invdrop)
+ if(!QDELETED(src))
+ update_inv_w_uniform()
else if(I == gloves)
gloves = null
- update_inv_gloves()
+ if(!QDELETED(src))
+ update_inv_gloves()
else if(I == glasses)
glasses = null
var/obj/item/clothing/glasses/G = I
@@ -185,29 +189,37 @@
overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha))
update_sight()
- update_inv_glasses()
+ if(!QDELETED(src))
+ update_inv_glasses()
else if(I == ears)
ears = null
- update_inv_ears()
+ if(!QDELETED(src))
+ update_inv_ears()
else if(I == shoes)
shoes = null
- update_inv_shoes()
+ if(!QDELETED(src))
+ update_inv_shoes()
else if(I == belt)
belt = null
- update_inv_belt()
+ if(!QDELETED(src))
+ update_inv_belt()
else if(I == wear_id)
wear_id = null
sec_hud_set_ID()
- update_inv_wear_id()
+ if(!QDELETED(src))
+ update_inv_wear_id()
else if(I == r_store)
r_store = null
- update_inv_pockets()
+ if(!QDELETED(src))
+ update_inv_pockets()
else if(I == l_store)
l_store = null
- update_inv_pockets()
+ if(!QDELETED(src))
+ update_inv_pockets()
else if(I == s_store)
s_store = null
- update_inv_s_store()
+ if(!QDELETED(src))
+ update_inv_s_store()
/mob/living/carbon/human/wear_mask_update(obj/item/clothing/C, toggle_off = 1)
if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index cefb77e248..3bed38cf69 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -103,15 +103,17 @@
var/datum/species/S = dna.species
if(S.breathid == "o2")
- throw_alert("oxy", /obj/screen/alert/oxy)
+ throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
else if(S.breathid == "tox")
throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
else if(S.breathid == "co2")
throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
+ else if(S.breathid == "n2")
+ throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro)
return 0
else
- if(istype(L,/obj/item/organ/lungs))
+ if(istype(L, /obj/item/organ/lungs))
var/obj/item/organ/lungs/lun = L
lun.check_breath(breath,src)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 4844a4e804..6f01593933 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -254,6 +254,10 @@
var/dynamic_hair_suffix = "" //if this is non-null, and hair+suffix matches an iconstate, then we render that hair instead
var/dynamic_fhair_suffix = ""
+ //for augmented heads
+ if(HD.status == BODYPART_ROBOTIC)
+ return
+
//we check if our hat or helmet hides our facial hair.
if(H.head)
var/obj/item/I = H.head
@@ -1502,6 +1506,8 @@
H.adjustCloneLoss(damage * hit_percent)
if(STAMINA)
H.adjustStaminaLoss(damage * hit_percent)
+ if(BRAIN)
+ H.adjustBrainLoss(damage * hit_percent)
return 1
/datum/species/proc/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 6331d15789..804f9bf3a2 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -15,7 +15,7 @@
/datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(istype(chem,/datum/reagent/consumable))
+ if(istype(chem, /datum/reagent/consumable))
var/datum/reagent/consumable/nutri_check = chem
if(nutri_check.nutriment_factor > 0)
var/turf/pos = get_turf(H)
@@ -26,6 +26,6 @@
..()
/datum/species/fly/check_weakness(obj/item/weapon, mob/living/attacker)
- if(istype(weapon,/obj/item/weapon/melee/flyswatter))
+ if(istype(weapon, /obj/item/weapon/melee/flyswatter))
return 29 //Flyswatters deal 30x damage to flypeople.
return 0
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index baea9a07a6..1aef45aff8 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -97,7 +97,7 @@ There are several things that need to be remembered:
/* --------------------------------------- */
//vvvvvv UPDATE_INV PROCS vvvvvv
-/mob/living/carbon/human/update_inv_w_uniform(invdrop = TRUE)
+/mob/living/carbon/human/update_inv_w_uniform()
remove_overlay(UNIFORM_LAYER)
if(client && hud_used)
@@ -136,11 +136,6 @@ There are several things that need to be remembered:
overlays_standing[UNIFORM_LAYER] = uniform_overlay
- else if(!(dna && dna.species.nojumpsuit) && invdrop)
- // Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY
- for(var/obj/item/thing in list(r_store, l_store, wear_id, belt)) //
- dropItemToGround(thing)
-
apply_overlay(UNIFORM_LAYER)
update_mutant_bodyparts()
@@ -325,9 +320,6 @@ There are several things that need to be remembered:
overlays_standing[SUIT_LAYER] = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = 'icons/mob/suit.dmi')
- if(wear_suit.breakouttime) //suit is restraining
- drop_all_held_items()
-
update_hair()
update_mutant_bodyparts()
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 1d60ae4982..8c20c12b80 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -113,7 +113,7 @@
return
adjustOxyLoss(1)
failed_last_breath = 1
- throw_alert("oxy", /obj/screen/alert/oxy)
+ throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
return 0
var/safe_oxy_min = 16
@@ -144,14 +144,14 @@
else
adjustOxyLoss(3)
failed_last_breath = 1
- throw_alert("oxy", /obj/screen/alert/oxy)
+ throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
else //Enough oxygen
failed_last_breath = 0
if(oxyloss)
adjustOxyLoss(-5)
oxygen_used = breath_gases["o2"][MOLES]
- clear_alert("oxy")
+ clear_alert("not_enough_oxy")
breath_gases["o2"][MOLES] -= oxygen_used
breath_gases["co2"][MOLES] += oxygen_used
@@ -174,11 +174,10 @@
//TOXINS/PLASMA
if(Toxins_partialpressure > safe_tox_max)
var/ratio = (breath_gases["plasma"][MOLES]/safe_tox_max) * 10
- if(reagents)
- reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
- throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
+ adjustToxLoss(Clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE))
+ throw_alert("too_much_tox", /obj/screen/alert/too_much_tox)
else
- clear_alert("tox_in_air")
+ clear_alert("too_much_tox")
//NITROUS OXIDE
if(breath_gases["n2o"])
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 92528de148..4b8454fcde 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -85,7 +85,7 @@
return TRUE
// CLOTHING
- else if(istype(I,/obj/item/clothing))
+ else if(istype(I, /obj/item/clothing))
var/obj/item/clothing/C = I
monkeyDrop(C)
addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5)
@@ -445,7 +445,7 @@
retaliate(user)
/mob/living/carbon/monkey/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
+ if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if(!Proj.nodamage && Proj.damage < src.health)
retaliate(Proj.firer)
diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm
index 85fd7c2b96..0216c63942 100644
--- a/code/modules/mob/living/carbon/status_procs.dm
+++ b/code/modules/mob/living/carbon/status_procs.dm
@@ -3,9 +3,9 @@
// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, NEARSIGHT disability, and HUSK disability.
/mob/living/carbon/damage_eyes(amount)
- var/obj/item/organ/eyes/eyes = getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = getorganslot("eye_sight")
if (!eyes)
- return
+ return
if(amount>0)
eyes.eye_damage = amount
if(eyes.eye_damage > 20)
@@ -15,9 +15,9 @@
overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1)
/mob/living/carbon/set_eye_damage(amount)
- var/obj/item/organ/eyes/eyes = getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = getorganslot("eye_sight")
if (!eyes)
- return
+ return
eyes.eye_damage = max(amount,0)
if(eyes.eye_damage > 20)
if(eyes.eye_damage > 30)
@@ -28,7 +28,7 @@
clear_fullscreen("eye_damage")
/mob/living/carbon/adjust_eye_damage(amount)
- var/obj/item/organ/eyes/eyes = getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = getorganslot("eye_sight")
if (!eyes)
return
eyes.eye_damage = max(eyes.eye_damage+amount, 0)
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 922febe423..fccb3ab8dd 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -1,286 +1,294 @@
-
-/*
- apply_damage(a,b,c)
- args
- a:damage - How much damage to take
- b:damage_type - What type of damage to take, brute, burn
- c:def_zone - Where to take the damage if its brute or burn
- Returns
- standard 0 if fail
-*/
+
+/*
+ apply_damage(a,b,c)
+ args
+ a:damage - How much damage to take
+ b:damage_type - What type of damage to take, brute, burn
+ c:def_zone - Where to take the damage if its brute or burn
+ Returns
+ standard 0 if fail
+*/
/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE)
- var/hit_percent = (100-blocked)/100
- if(!damage || (hit_percent <= 0))
- return 0
- switch(damagetype)
- if(BRUTE)
- adjustBruteLoss(damage * hit_percent)
- if(BURN)
- adjustFireLoss(damage * hit_percent)
- if(TOX)
- adjustToxLoss(damage * hit_percent)
- if(OXY)
- adjustOxyLoss(damage * hit_percent)
- if(CLONE)
- adjustCloneLoss(damage * hit_percent)
- if(STAMINA)
- adjustStaminaLoss(damage * hit_percent)
- //citadel code
- if(AROUSAL)
- adjustArousalLoss(damage * hit_percent)
- return 1
-
-/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
- switch(damagetype)
- if(BRUTE)
- return adjustBruteLoss(damage)
- if(BURN)
- return adjustFireLoss(damage)
- if(TOX)
- return adjustToxLoss(damage)
- if(OXY)
- return adjustOxyLoss(damage)
- if(CLONE)
- return adjustCloneLoss(damage)
- if(STAMINA)
- return adjustStaminaLoss(damage)
- //citadel code
- if(AROUSAL)
- return adjustArousalLoss(damage)
-
-/mob/living/proc/get_damage_amount(damagetype = BRUTE)
- switch(damagetype)
- if(BRUTE)
- return getBruteLoss()
- if(BURN)
- return getFireLoss()
- if(TOX)
- return getToxLoss()
- if(OXY)
- return getOxyLoss()
- if(CLONE)
- return getCloneLoss()
- if(STAMINA)
- return getStaminaLoss()
- //citadel code
- if(AROUSAL)
- return getArousalLoss()
-
-
-/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = 0, stamina = 0, arousal = 0)
- if(blocked >= 100)
- return 0
- if(brute)
- apply_damage(brute, BRUTE, def_zone, blocked)
- if(burn)
- apply_damage(burn, BURN, def_zone, blocked)
- if(tox)
- apply_damage(tox, TOX, def_zone, blocked)
- if(oxy)
- apply_damage(oxy, OXY, def_zone, blocked)
- if(clone)
- apply_damage(clone, CLONE, def_zone, blocked)
- if(stamina)
- apply_damage(stamina, STAMINA, def_zone, blocked)
- //citadel code
- if(arousal)
- apply_damage(arousal, AROUSAL, def_zone, blocked)
- return 1
-
-
-
+ var/hit_percent = (100-blocked)/100
+ if(!damage || (hit_percent <= 0))
+ return 0
+ switch(damagetype)
+ if(BRUTE)
+ adjustBruteLoss(damage * hit_percent)
+ if(BURN)
+ adjustFireLoss(damage * hit_percent)
+ if(TOX)
+ adjustToxLoss(damage * hit_percent)
+ if(OXY)
+ adjustOxyLoss(damage * hit_percent)
+ if(CLONE)
+ adjustCloneLoss(damage * hit_percent)
+ if(STAMINA)
+ adjustStaminaLoss(damage * hit_percent)
+ if(BRAIN)
+ adjustBrainLoss(damage * hit_percent)
+ //citadel code
+ if(AROUSAL)
+ adjustArousalLoss(damage * hit_percent)
+ return 1
+
+/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
+ switch(damagetype)
+ if(BRUTE)
+ return adjustBruteLoss(damage)
+ if(BURN)
+ return adjustFireLoss(damage)
+ if(TOX)
+ return adjustToxLoss(damage)
+ if(OXY)
+ return adjustOxyLoss(damage)
+ if(CLONE)
+ return adjustCloneLoss(damage)
+ if(STAMINA)
+ return adjustStaminaLoss(damage)
+ if(BRAIN)
+ return adjustBrainLoss(damage)
+ //citadel code
+ if(AROUSAL)
+ return adjustArousalLoss(damage)
+
+/mob/living/proc/get_damage_amount(damagetype = BRUTE)
+ switch(damagetype)
+ if(BRUTE)
+ return getBruteLoss()
+ if(BURN)
+ return getFireLoss()
+ if(TOX)
+ return getToxLoss()
+ if(OXY)
+ return getOxyLoss()
+ if(CLONE)
+ return getCloneLoss()
+ if(STAMINA)
+ return getStaminaLoss()
+ if(BRAIN)
+ return getBrainLoss()
+ //citadel code
+ if(AROUSAL)
+ return getArousalLoss()
+
+
+/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, arousal = 0, brain = 0)
+ if(blocked >= 100)
+ return 0
+ if(brute)
+ apply_damage(brute, BRUTE, def_zone, blocked)
+ if(burn)
+ apply_damage(burn, BURN, def_zone, blocked)
+ if(tox)
+ apply_damage(tox, TOX, def_zone, blocked)
+ if(oxy)
+ apply_damage(oxy, OXY, def_zone, blocked)
+ if(clone)
+ apply_damage(clone, CLONE, def_zone, blocked)
+ if(stamina)
+ apply_damage(stamina, STAMINA, def_zone, blocked)
+ if(brain)
+ apply_damage(brain, BRAIN, def_zone, blocked)
+ //citadel code
+ if(arousal)
+ apply_damage(arousal, AROUSAL, def_zone, blocked)
+ return 1
+
+
+
/mob/living/proc/apply_effect(effect = 0,effecttype = STUN, blocked = FALSE)
- var/hit_percent = (100-blocked)/100
- if(!effect || (hit_percent <= 0))
- return 0
- switch(effecttype)
- if(STUN)
- Stun(effect * hit_percent)
- if(KNOCKDOWN)
- Knockdown(effect * hit_percent)
- if(UNCONSCIOUS)
- Unconscious(effect * hit_percent)
- if(IRRADIATE)
- radiation += max(effect * hit_percent, 0)
- if(SLUR)
- slurring = max(slurring,(effect * hit_percent))
- if(STUTTER)
- if(status_flags & CANSTUN) // stun is usually associated with stutter
- stuttering = max(stuttering,(effect * hit_percent))
- if(EYE_BLUR)
- blur_eyes(effect * hit_percent)
- if(DROWSY)
- drowsyness = max(drowsyness,(effect * hit_percent))
- if(JITTER)
- if(status_flags & CANSTUN)
- jitteriness = max(jitteriness,(effect * hit_percent))
- return 1
-
-
+ var/hit_percent = (100-blocked)/100
+ if(!effect || (hit_percent <= 0))
+ return 0
+ switch(effecttype)
+ if(STUN)
+ Stun(effect * hit_percent)
+ if(KNOCKDOWN)
+ Knockdown(effect * hit_percent)
+ if(UNCONSCIOUS)
+ Unconscious(effect * hit_percent)
+ if(IRRADIATE)
+ radiation += max(effect * hit_percent, 0)
+ if(SLUR)
+ slurring = max(slurring,(effect * hit_percent))
+ if(STUTTER)
+ if(status_flags & CANSTUN) // stun is usually associated with stutter
+ stuttering = max(stuttering,(effect * hit_percent))
+ if(EYE_BLUR)
+ blur_eyes(effect * hit_percent)
+ if(DROWSY)
+ drowsyness = max(drowsyness,(effect * hit_percent))
+ if(JITTER)
+ if(status_flags & CANSTUN)
+ jitteriness = max(jitteriness,(effect * hit_percent))
+ return 1
+
+
/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0)
- if(blocked >= 100)
- return 0
- if(stun)
- apply_effect(stun, STUN, blocked)
- if(knockdown)
- apply_effect(knockdown, KNOCKDOWN, blocked)
- if(unconscious)
- apply_effect(unconscious, UNCONSCIOUS, blocked)
- if(irradiate)
- apply_effect(irradiate, IRRADIATE, blocked)
- if(slur)
- apply_effect(slur, SLUR, blocked)
- if(stutter)
- apply_effect(stutter, STUTTER, blocked)
- if(eyeblur)
- apply_effect(eyeblur, EYE_BLUR, blocked)
- if(drowsy)
- apply_effect(drowsy, DROWSY, blocked)
- if(stamina)
- apply_damage(stamina, STAMINA, null, blocked)
- if(jitter)
- apply_effect(jitter, JITTER, blocked)
- return 1
-
-
-/mob/living/proc/getBruteLoss()
- return bruteloss
-
-/mob/living/proc/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- bruteloss = Clamp((bruteloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/getOxyLoss()
- return oxyloss
-
-/mob/living/proc/adjustOxyLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- oxyloss = Clamp((oxyloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/setOxyLoss(amount, updating_health = TRUE, forced = FALSE)
- if(status_flags & GODMODE)
- return 0
- oxyloss = amount
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/getToxLoss()
- return toxloss
-
-/mob/living/proc/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- toxloss = Clamp((toxloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/setToxLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- toxloss = amount
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/getFireLoss()
- return fireloss
-
-/mob/living/proc/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- fireloss = Clamp((fireloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/getCloneLoss()
- return cloneloss
-
-/mob/living/proc/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- cloneloss = Clamp((cloneloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/setCloneLoss(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (status_flags & GODMODE))
- return FALSE
- cloneloss = amount
- if(updating_health)
- updatehealth()
- return amount
-
-/mob/living/proc/getBrainLoss()
- return brainloss
-
-/mob/living/proc/adjustBrainLoss(amount)
- if(status_flags & GODMODE)
- return 0
- brainloss = Clamp((brainloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
-
-/mob/living/proc/setBrainLoss(amount)
- if(status_flags & GODMODE)
- return 0
- brainloss = amount
-
-/mob/living/proc/getStaminaLoss()
- return staminaloss
-
-/mob/living/proc/adjustStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE)
- return
-
-/mob/living/proc/setStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE)
- return
-
-
-// heal ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/heal_bodypart_damage(brute, burn, updating_health = 1)
- adjustBruteLoss(-brute, 0) //zero as argument for no instant health update
- adjustFireLoss(-burn, 0)
- if(updating_health)
- updatehealth()
-
-// damage ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/take_bodypart_damage(brute, burn, updating_health = 1)
- adjustBruteLoss(brute, 0) //zero as argument for no instant health update
- adjustFireLoss(burn, 0)
- if(updating_health)
- updatehealth()
-
-// heal MANY bodyparts, in random order
-/mob/living/proc/heal_overall_damage(brute, burn, only_robotic = 0, only_organic = 1, updating_health = 1)
- adjustBruteLoss(-brute, 0) //zero as argument for no instant health update
- adjustFireLoss(-burn, 0)
- if(updating_health)
- updatehealth()
-
-// damage MANY bodyparts, in random order
-/mob/living/proc/take_overall_damage(brute, burn, updating_health = 1)
- adjustBruteLoss(brute, 0) //zero as argument for no instant health update
- adjustFireLoss(burn, 0)
- if(updating_health)
- updatehealth()
-
-//heal up to amount damage, in a given order
-/mob/living/proc/heal_ordered_damage(amount, list/damage_types)
- . = amount //we'll return the amount of damage healed
- for(var/i in damage_types)
- var/amount_to_heal = min(amount, get_damage_amount(i)) //heal only up to the amount of damage we have
- if(amount_to_heal)
- apply_damage_type(-amount_to_heal, i)
- amount -= amount_to_heal //remove what we healed from our current amount
- if(!amount)
- break
- . -= amount //if there's leftover healing, remove it from what we return
+ if(blocked >= 100)
+ return 0
+ if(stun)
+ apply_effect(stun, STUN, blocked)
+ if(knockdown)
+ apply_effect(knockdown, KNOCKDOWN, blocked)
+ if(unconscious)
+ apply_effect(unconscious, UNCONSCIOUS, blocked)
+ if(irradiate)
+ apply_effect(irradiate, IRRADIATE, blocked)
+ if(slur)
+ apply_effect(slur, SLUR, blocked)
+ if(stutter)
+ apply_effect(stutter, STUTTER, blocked)
+ if(eyeblur)
+ apply_effect(eyeblur, EYE_BLUR, blocked)
+ if(drowsy)
+ apply_effect(drowsy, DROWSY, blocked)
+ if(stamina)
+ apply_damage(stamina, STAMINA, null, blocked)
+ if(jitter)
+ apply_effect(jitter, JITTER, blocked)
+ return 1
+
+
+/mob/living/proc/getBruteLoss()
+ return bruteloss
+
+/mob/living/proc/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ bruteloss = Clamp((bruteloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/getOxyLoss()
+ return oxyloss
+
+/mob/living/proc/adjustOxyLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ oxyloss = Clamp((oxyloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/setOxyLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(status_flags & GODMODE)
+ return 0
+ oxyloss = amount
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/getToxLoss()
+ return toxloss
+
+/mob/living/proc/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ toxloss = Clamp((toxloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/setToxLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ toxloss = amount
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/getFireLoss()
+ return fireloss
+
+/mob/living/proc/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ fireloss = Clamp((fireloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/getCloneLoss()
+ return cloneloss
+
+/mob/living/proc/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ cloneloss = Clamp((cloneloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/setCloneLoss(amount, updating_health = TRUE, forced = FALSE)
+ if(!forced && (status_flags & GODMODE))
+ return FALSE
+ cloneloss = amount
+ if(updating_health)
+ updatehealth()
+ return amount
+
+/mob/living/proc/getBrainLoss()
+ return brainloss
+
+/mob/living/proc/adjustBrainLoss(amount)
+ if(status_flags & GODMODE)
+ return 0
+ brainloss = Clamp((brainloss + (amount * config.damage_multiplier)), 0, maxHealth*2)
+
+/mob/living/proc/setBrainLoss(amount)
+ if(status_flags & GODMODE)
+ return 0
+ brainloss = amount
+
+/mob/living/proc/getStaminaLoss()
+ return staminaloss
+
+/mob/living/proc/adjustStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE)
+ return
+
+/mob/living/proc/setStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE)
+ return
+
+
+// heal ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/heal_bodypart_damage(brute, burn, updating_health = 1)
+ adjustBruteLoss(-brute, 0) //zero as argument for no instant health update
+ adjustFireLoss(-burn, 0)
+ if(updating_health)
+ updatehealth()
+
+// damage ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/take_bodypart_damage(brute, burn, updating_health = 1)
+ adjustBruteLoss(brute, 0) //zero as argument for no instant health update
+ adjustFireLoss(burn, 0)
+ if(updating_health)
+ updatehealth()
+
+// heal MANY bodyparts, in random order
+/mob/living/proc/heal_overall_damage(brute, burn, only_robotic = 0, only_organic = 1, updating_health = 1)
+ adjustBruteLoss(-brute, 0) //zero as argument for no instant health update
+ adjustFireLoss(-burn, 0)
+ if(updating_health)
+ updatehealth()
+
+// damage MANY bodyparts, in random order
+/mob/living/proc/take_overall_damage(brute, burn, updating_health = 1)
+ adjustBruteLoss(brute, 0) //zero as argument for no instant health update
+ adjustFireLoss(burn, 0)
+ if(updating_health)
+ updatehealth()
+
+//heal up to amount damage, in a given order
+/mob/living/proc/heal_ordered_damage(amount, list/damage_types)
+ . = amount //we'll return the amount of damage healed
+ for(var/i in damage_types)
+ var/amount_to_heal = min(amount, get_damage_amount(i)) //heal only up to the amount of damage we have
+ if(amount_to_heal)
+ apply_damage_type(-amount_to_heal, i)
+ amount -= amount_to_heal //remove what we healed from our current amount
+ if(!amount)
+ break
+ . -= amount //if there's leftover healing, remove it from what we return
diff --git a/code/modules/mob/living/damage_procs.dm.rej b/code/modules/mob/living/damage_procs.dm.rej
new file mode 100644
index 0000000000..375db36138
--- /dev/null
+++ b/code/modules/mob/living/damage_procs.dm.rej
@@ -0,0 +1,41 @@
+diff a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm (rejected hunks)
+@@ -25,6 +25,8 @@
+ adjustCloneLoss(damage * hit_percent)
+ if(STAMINA)
+ adjustStaminaLoss(damage * hit_percent)
++ if(BRAIN)
++ adjustBrainLoss(damage * hit_percent)
+ return 1
+
+ /mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
+@@ -41,6 +43,8 @@
+ return adjustCloneLoss(damage)
+ if(STAMINA)
+ return adjustStaminaLoss(damage)
++ if(BRAIN)
++ return adjustBrainLoss(damage)
+
+ /mob/living/proc/get_damage_amount(damagetype = BRUTE)
+ switch(damagetype)
+@@ -56,9 +60,11 @@
+ return getCloneLoss()
+ if(STAMINA)
+ return getStaminaLoss()
++ if(BRAIN)
++ return getBrainLoss()
+
+
+-/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0)
++/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, brain = 0)
+ if(blocked >= 100)
+ return 0
+ if(brute)
+@@ -73,6 +79,8 @@
+ apply_damage(clone, CLONE, def_zone, blocked)
+ if(stamina)
+ apply_damage(stamina, STAMINA, def_zone, blocked)
++ if(brain)
++ apply_damage(brain, BRAIN, def_zone, blocked)
+ return 1
+
+
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 829b031d21..6510b46bf3 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -357,7 +357,7 @@
updatehealth() //then we check if the mob should wake up.
update_canmove()
update_sight()
- clear_alert("oxy")
+ clear_alert("not_enough_oxy")
reload_fullscreen()
. = 1
if(mind)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index ebb9ee074f..0c693b4749 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -67,7 +67,7 @@
var/zone = ran_zone("chest", 65)//Hits a random part of the body, geared towards the chest
var/dtype = BRUTE
var/volume = I.get_volume_by_throwforce_and_or_w_class()
- if(istype(I,/obj/item/weapon)) //If the item is a weapon...
+ if(istype(I, /obj/item/weapon)) //If the item is a weapon...
var/obj/item/weapon/W = I
dtype = W.damtype
@@ -312,7 +312,6 @@
reagents.add_reagent("heparin", 5)
return FALSE
if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src])
- GLOB.cult_narsie.resize(1.1)
GLOB.cult_narsie.souls_needed -= src
GLOB.cult_narsie.souls += 1
if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE))
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 97bd12b996..f31b339bf5 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -877,7 +877,7 @@
/mob/living/silicon/ai/reset_perspective(atom/A)
if(camera_light_on)
light_cameras()
- if(istype(A,/obj/machinery/camera))
+ if(istype(A, /obj/machinery/camera))
current = A
if(client)
if(ismovableatom(A))
diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm
index f14665e10c..7f232e20f4 100644
--- a/code/modules/mob/living/silicon/robot/examine.dm
+++ b/code/modules/mob/living/silicon/robot/examine.dm
@@ -12,8 +12,9 @@
msg += "It looks slightly dented.\n"
else
msg += "It looks severely dented!\n"
- if (src.getFireLoss())
- if (src.getFireLoss() < maxHealth*0.5)
+ if (getFireLoss() || getToxLoss())
+ var/overall_fireloss = getFireLoss() + getToxLoss()
+ if (overall_fireloss < maxHealth * 0.5)
msg += "It looks slightly charred.\n"
else
msg += "It looks severely burnt and heat-warped!\n"
@@ -33,7 +34,7 @@
if(cell && cell.charge <= 0)
msg += "Its battery indicator is blinking red!\n"
- if(is_servant_of_ratvar(src) && user.Adjacent(src) && !stat) //To counter pseudo-stealth by using headlamps
+ if(is_servant_of_ratvar(src) && get_dist(user, src) <= 1 && !stat) //To counter pseudo-stealth by using headlamps
msg += "Its eyes are glowing a blazing yellow!\n"
switch(stat)
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index c45a32a9be..ef42a85632 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -12,7 +12,7 @@
if(!O)
return 0
O.mouse_opacity = 2
- if(istype(O,/obj/item/borg/sight))
+ if(istype(O, /obj/item/borg/sight))
var/obj/item/borg/sight/S = O
sight_mode &= ~S.sight_mode
update_sight()
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index fba4f50080..aab1f204f6 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -6,6 +6,7 @@
return
..()
+ adjustOxyLoss(-10) //we're a robot!
handle_robot_hud_updates()
handle_robot_cell()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index be66f58d6d..7eb7840a59 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -51,7 +51,7 @@
var/ident = 0
var/locked = TRUE
- var/list/req_access = list(GLOB.access_robotics)
+ var/list/req_access = list(ACCESS_ROBOTICS)
var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list(), "Burglar"=list())
@@ -393,13 +393,14 @@
else if(istype(W, /obj/item/stack/cable_coil) && wiresexposed)
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/stack/cable_coil/coil = W
- if (getFireLoss() > 0)
+ if (getFireLoss() > 0 || getToxLoss() > 0)
if(src == user)
to_chat(user, "You start fixing yourself...")
if(!do_after(user, 50, target = src))
return
if (coil.use(1))
adjustFireLoss(-30)
+ adjustToxLoss(-30)
updatehealth()
user.visible_message("[user] has fixed some of the burnt wires on [src].", "You fix some of the burnt wires on [src].")
else
@@ -655,29 +656,6 @@
add_overlay(head_overlay)
update_fire()
-#define BORG_CAMERA_BUFFER 30
-
-/mob/living/silicon/robot/proc/do_camera_update(oldLoc)
- if(oldLoc != src.loc)
- GLOB.cameranet.updatePortableCamera(src.camera)
- updating = 0
-
-/mob/living/silicon/robot/Move(a, b, flag)
- var/oldLoc = src.loc
- . = ..()
- if(.)
- if(src.camera)
- if(!updating)
- updating = 1
- addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), BORG_CAMERA_BUFFER)
- if(module)
- if(istype(module, /obj/item/weapon/robot_module/miner))
- if(istype(loc, /turf/open/floor/plating/asteroid))
- for(var/obj/item/I in held_items)
- if(istype(I,/obj/item/weapon/storage/bag/ore))
- loc.attackby(I, src)
-#undef BORG_CAMERA_BUFFER
-
/mob/living/silicon/robot/proc/self_destruct()
if(emagged)
if(mmi)
@@ -841,7 +819,7 @@
icon_state = "syndie_bloodhound"
faction = list("syndicate")
bubble_icon = "syndibot"
- req_access = list(GLOB.access_syndicate)
+ req_access = list(ACCESS_SYNDICATE)
lawupdate = FALSE
scrambledcodes = TRUE // These are rogue borgs.
ionpulse = TRUE
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 0e9a0054ca..81dd60e3e0 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -469,6 +469,7 @@
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/weapon/soap/nanotrasen,
/obj/item/weapon/storage/bag/trash/cyborg,
+ /obj/item/weapon/extinguisher/mini,
/obj/item/weapon/mop/cyborg,
/obj/item/device/lightreplacer/cyborg,
/obj/item/weapon/holosign_creator,
@@ -515,6 +516,7 @@
/obj/item/weapon/reagent_containers/food/condiment/enzyme,
/obj/item/weapon/pen,
/obj/item/toy/crayon/spraycan/borg,
+ /obj/item/weapon/extinguisher/mini,
/obj/item/weapon/hand_labeler/borg,
/obj/item/weapon/razor,
/obj/item/device/instrument/violin,
diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm
index 167137d9d1..a2f6bf5681 100644
--- a/code/modules/mob/living/silicon/robot/robot_movement.dm
+++ b/code/modules/mob/living/silicon/robot/robot_movement.dm
@@ -1,3 +1,24 @@
+/mob/living/silicon/robot/Moved(oldLoc, dir)
+ . = ..()
+ update_camera_location(oldLoc)
+
+/mob/living/silicon/robot/forceMove(atom/destination)
+ . = ..()
+ update_camera_location(destination)
+
+/mob/living/silicon/robot/proc/do_camera_update(oldLoc)
+ if(!QDELETED(camera) && oldLoc != get_turf(src))
+ GLOB.cameranet.updatePortableCamera(camera)
+ updating = FALSE
+
+#define BORG_CAMERA_BUFFER 30
+/mob/living/silicon/robot/proc/update_camera_location(oldLoc)
+ oldLoc = get_turf(oldLoc)
+ if(!QDELETED(camera) && !updating && oldLoc != get_turf(src))
+ updating = TRUE
+ addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), BORG_CAMERA_BUFFER)
+#undef BORG_CAMERA_BUFFER
+
/mob/living/silicon/robot/Process_Spacemove(movement_dir = 0)
if(ionpulse())
return 1
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index c96ca72b26..4cc0ab3a62 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -119,7 +119,7 @@
..()
access_card = new /obj/item/weapon/card/id(src)
//This access is so bots can be immediately set to patrol and leave Robotics, instead of having to be let out first.
- access_card.access += GLOB.access_robotics
+ access_card.access += ACCESS_ROBOTICS
set_custom_texts()
Radio = new/obj/item/device/radio(src)
if(radio_key)
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index e733ecdcb8..b1894ae0f2 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -265,7 +265,7 @@
..()
/obj/machinery/bot_core/cleanbot
- req_one_access = list(GLOB.access_janitor, GLOB.access_robotics)
+ req_one_access = list(ACCESS_JANITOR, ACCESS_ROBOTICS)
/mob/living/simple_animal/bot/cleanbot/get_controls(mob/user)
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index b3b4725914..3835394969 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -299,13 +299,13 @@
return
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
- if(istype(src,/obj/item/weapon/storage/firstaid/fire))
+ if(istype(src, /obj/item/weapon/storage/firstaid/fire))
A.skin = "ointment"
- else if(istype(src,/obj/item/weapon/storage/firstaid/toxin))
+ else if(istype(src, /obj/item/weapon/storage/firstaid/toxin))
A.skin = "tox"
- else if(istype(src,/obj/item/weapon/storage/firstaid/o2))
+ else if(istype(src, /obj/item/weapon/storage/firstaid/o2))
A.skin = "o2"
- else if(istype(src,/obj/item/weapon/storage/firstaid/brute))
+ else if(istype(src, /obj/item/weapon/storage/firstaid/brute))
A.skin = "brute"
qdel(S)
@@ -343,8 +343,7 @@
build_step++
to_chat(user, "You complete the Medibot. Beep boop!")
var/turf/T = get_turf(src)
- var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T)
- S.skin = skin
+ var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T, skin)
S.name = created_name
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 82f49e7de2..bc35799270 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -59,7 +59,7 @@
shot_delay = 6//Longer shot delay because JESUS CHRIST
check_records = 0//Don't actively target people set to arrest
arrest_type = 1//Don't even try to cuff
- bot_core.req_access = list(GLOB.access_maint_tunnels, GLOB.access_theatre)
+ bot_core.req_access = list(ACCESS_MAINT_TUNNELS, ACCESS_THEATRE)
arrest_type = 1
if((lasercolor == "b") && (name == "\improper ED-209 Security Robot"))//Picks a name if there isn't already a custome one
name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT")
@@ -201,7 +201,7 @@ Auto Patrol[]"},
set_weapon()
/mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj ,/obj/item/projectile/beam/laser)||istype(Proj,/obj/item/projectile/bullet))
+ if(istype(Proj , /obj/item/projectile/beam/laser)||istype(Proj, /obj/item/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if(!Proj.nodamage && Proj.damage < src.health)
retaliate(Proj.firer)
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index e7830f2c23..cbec12b1f5 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -385,7 +385,7 @@
..()
/obj/machinery/bot_core/floorbot
- req_one_access = list(GLOB.access_construction, GLOB.access_robotics)
+ req_one_access = list(ACCESS_CONSTRUCTION, ACCESS_ROBOTICS)
/mob/living/simple_animal/bot/floorbot/UnarmedAttack(atom/A)
if(isturf(A))
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 2a9e52de56..fee3de6b8e 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -76,6 +76,9 @@
treatment_tox = "sodium_thiopental"
/mob/living/simple_animal/bot/medbot/update_icon()
+ cut_overlays()
+ if(skin)
+ add_overlay("medskin_[skin]")
if(!on)
icon_state = "medibot0"
return
@@ -90,17 +93,14 @@
else
icon_state = "medibot1"
-/mob/living/simple_animal/bot/medbot/Initialize()
- ..()
- update_icon()
-
- if(skin)
- add_overlay("medskin_[skin]")
-
+/mob/living/simple_animal/bot/medbot/Initialize(mapload, new_skin)
+ . = ..()
var/datum/job/doctor/J = new /datum/job/doctor
access_card.access += J.get_access()
prev_access = access_card.access
qdel(J)
+ skin = new_skin
+ update_icon()
/mob/living/simple_animal/bot/medbot/update_canmove()
. = ..()
@@ -459,6 +459,8 @@
break
if(!reagent_id) //If they don't need any of that they're probably cured!
+ if(C.maxHealth - C.health < heal_threshold)
+ to_chat(src, "[C] is healthy! Your programming prevents you from injecting anyone without at least [heal_threshold] damage of any one type ([heal_threshold + 15] for oxygen damage.)")
var/list/messagevoice = list("All patched up!" = 'sound/voice/mpatchedup.ogg',"An apple a day keeps me away." = 'sound/voice/mapple.ogg',"Feel better soon!" = 'sound/voice/mfeelbetter.ogg')
var/message = pick(messagevoice)
speak(message)
@@ -539,4 +541,4 @@
declare_cooldown = world.time + 200
/obj/machinery/bot_core/medbot
- req_one_access =list(GLOB.access_medical, GLOB.access_robotics)
+ req_one_access =list(ACCESS_MEDICAL, ACCESS_ROBOTICS)
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 158b86aae7..e8936a2863 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -83,7 +83,7 @@
..()
if(open)
on = FALSE
- else if(istype(I,/obj/item/weapon/stock_parts/cell) && open && !cell)
+ else if(istype(I, /obj/item/weapon/stock_parts/cell) && open && !cell)
if(!user.drop_item())
return
var/obj/item/weapon/stock_parts/cell/C = I
@@ -343,7 +343,7 @@
return
var/obj/structure/closet/crate/CRATE
- if(istype(AM,/obj/structure/closet/crate))
+ if(istype(AM, /obj/structure/closet/crate))
CRATE = AM
else
if(!wires.is_cut(WIRE_LOADCHECK))
@@ -748,4 +748,4 @@
#undef DELIGHT
/obj/machinery/bot_core/mulebot
- req_access = list(GLOB.access_cargo)
+ req_access = list(ACCESS_CARGO)
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 01f34953b9..42c42bcf16 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -191,7 +191,7 @@ Auto Patrol: []"},
icon_state = "secbot[on]"
/mob/living/simple_animal/bot/secbot/bullet_act(obj/item/projectile/Proj)
- if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
+ if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if(!Proj.nodamage && Proj.damage < src.health)
retaliate(Proj.firer)
@@ -432,4 +432,4 @@ Auto Patrol: []"},
..()
/obj/machinery/bot_core/secbot
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm
index 06d7cdb0ef..45fb411876 100644
--- a/code/modules/mob/living/simple_animal/corpse.dm
+++ b/code/modules/mob/living/simple_animal/corpse.dm
@@ -11,7 +11,7 @@
/obj/effect/mob_spawn/human/corpse/syndicatesoldier
name = "Syndicate Operative"
id_job = "Operative"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/syndicatesoldiercorpse
/datum/outfit/syndicatesoldiercorpse
@@ -30,7 +30,7 @@
/obj/effect/mob_spawn/human/corpse/syndicatecommando
name = "Syndicate Commando"
id_job = "Operative"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/syndicatecommandocorpse
/datum/outfit/syndicatecommandocorpse
@@ -49,7 +49,7 @@
/obj/effect/mob_spawn/human/corpse/syndicatestormtrooper
name = "Syndicate Stormtrooper"
id_job = "Operative"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/syndicatestormtroopercorpse
/datum/outfit/syndicatestormtroopercorpse
diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
index 2ab1adee23..b49534808a 100644
--- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
@@ -42,7 +42,7 @@
else
visible_message("[src] avoids getting crushed.")
else
- if(istype(AM,/obj/structure))
+ if(istype(AM, /obj/structure))
if(prob(squish_chance))
AM.visible_message("[src] was crushed under [AM].")
adjustBruteLoss(1)
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 0c80c24b15..54a06cb37f 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -178,13 +178,13 @@
to_chat(usr, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!")
return
- if(istype(item_to_add,/obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess
+ if(istype(item_to_add, /obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess
item_to_add.afterattack(src,usr,1)
return
//The objects that corgis can wear on their backs.
var/allowed = FALSE
- if(ispath(item_to_add.dog_fashion,/datum/dog_fashion/back))
+ if(ispath(item_to_add.dog_fashion, /datum/dog_fashion/back))
allowed = TRUE
if(!allowed)
@@ -214,7 +214,7 @@
/mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user)
- if(istype(item_to_add,/obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess
+ if(istype(item_to_add, /obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess
item_to_add.afterattack(src,user,1)
return
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm
index 4462adfe9d..bbf3fdc63f 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm
@@ -17,7 +17,7 @@
//Base proc for anything to call
-/proc/_alert_drones(msg, dead_can_hear = 0, mob/living/faction_checked_mob, exact_faction_match)
+/proc/_alert_drones(msg, dead_can_hear = 0, atom/source, mob/living/faction_checked_mob, exact_faction_match)
for(var/W in GLOB.mob_list)
var/mob/living/simple_animal/drone/M = W
if(istype(M) && M.stat != DEAD)
@@ -26,14 +26,14 @@
to_chat(M, msg)
else
to_chat(M, msg)
- if(dead_can_hear && (M in GLOB.dead_mob_list))
- var/link = FOLLOW_LINK(M, faction_checked_mob)
+ if(dead_can_hear && source && (M in GLOB.dead_mob_list))
+ var/link = FOLLOW_LINK(M, source)
to_chat(M, "[link] [msg]")
//Wrapper for drones to handle factions
/mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = FALSE)
- _alert_drones(msg, dead_can_hear, src, TRUE)
+ _alert_drones(msg, dead_can_hear, src, src, TRUE)
/mob/living/simple_animal/drone/proc/drone_chat(msg)
diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm
index 3741d8cf58..c4e11cc2bd 100644
--- a/code/modules/mob/living/simple_animal/friendly/lizard.dm
+++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm
@@ -22,7 +22,7 @@
devourable = TRUE
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
- var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly,/mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
+ var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
/mob/living/simple_animal/hostile/lizard/CanAttack(atom/the_target)//Can we actually attack a possible target?
if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it
diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm.rej b/code/modules/mob/living/simple_animal/friendly/lizard.dm.rej
new file mode 100644
index 0000000000..6cac5b3c80
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm (rejected hunks)
+@@ -21,7 +21,7 @@
+ gold_core_spawnable = 2
+ obj_damage = 0
+ environment_smash = ENVIRONMENT_SMASH_NONE
+- var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly,/mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
++ var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
+
+ /mob/living/simple_animal/hostile/lizard/CanAttack(atom/the_target)//Can we actually attack a possible target?
+ if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 6e60f6b958..d70055779c 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -249,7 +249,7 @@
/obj/item/queen_bee/attackby(obj/item/I, mob/user, params)
- if(istype(I,/obj/item/weapon/reagent_containers/syringe))
+ if(istype(I, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = I
if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped
if(S.reagents.has_reagent("royal_bee_jelly",5))
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index cf4f027065..ebc3e79a61 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -155,7 +155,7 @@
if(!busy && prob(30)) //30% chance to stop wandering and do something
//first, check for potential food nearby to cocoon
for(var/mob/living/C in can_see)
- if(C.stat && !istype(C,/mob/living/simple_animal/hostile/poison/giant_spider) && !C.anchored)
+ if(C.stat && !istype(C, /mob/living/simple_animal/hostile/poison/giant_spider) && !C.anchored)
cocoon_target = C
busy = MOVING_TO_TARGET
Goto(C, move_to_delay)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 192c91c98c..6991cb4ad3 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -45,7 +45,7 @@ Difficulty: Medium
blood_volume = BLOOD_VOLUME_NORMAL
medal_type = MEDAL_PREFIX
var/obj/item/weapon/melee/transforming/cleaving_saw/miner/miner_saw
- var/time_until_next_transform
+ var/time_until_next_transform = 0
var/dashing = FALSE
var/dash_cooldown = 15
var/guidance = FALSE
@@ -81,7 +81,7 @@ Difficulty: Medium
miner_saw = new(src)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
- var/adjustment_amount = amount * 0.15
+ var/adjustment_amount = amount * 0.1
if(world.time + adjustment_amount > next_move)
changeNext_move(adjustment_amount) //attacking it interrupts it attacking, but only briefly
. = ..()
@@ -93,7 +93,7 @@ Difficulty: Medium
return ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Move(atom/newloc)
- if(dashing || (newloc && newloc.z == z && (istype(newloc, /turf/open/floor/plating/lava) || istype(newloc, /turf/open/chasm)))) //we're not stupid!
+ if(dashing || (newloc && newloc.z == z && (istype(newloc, /turf/open/lava) || istype(newloc, /turf/open/chasm)))) //we're not stupid!
return FALSE
return ..()
@@ -151,7 +151,7 @@ Difficulty: Medium
transform_weapon()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/shoot_ka()
- if(next_move <= world.time && ranged_cooldown <= world.time && get_dist(src, target) <= MINER_DASH_RANGE && !Adjacent(target))
+ if(ranged_cooldown <= world.time && get_dist(src, target) <= MINER_DASH_RANGE && !Adjacent(target))
ranged_cooldown = world.time + ranged_cooldown_time
visible_message("[src] fires the proto-kinetic accelerator!")
face_atom(target)
@@ -186,7 +186,7 @@ Difficulty: Medium
var/turf_dist_to_target = 0
if(!QDELETED(dash_target))
turf_dist_to_target += get_dist(dash_target, O)
- if(get_dist(src, O) >= MINER_DASH_RANGE && turf_dist_to_target <= self_dist_to_target && !istype(O, /turf/open/floor/plating/lava) && !istype(O, /turf/open/chasm))
+ if(get_dist(src, O) >= MINER_DASH_RANGE && turf_dist_to_target <= self_dist_to_target && !istype(O, /turf/open/lava) && !istype(O, /turf/open/chasm))
var/valid = TRUE
for(var/turf/T in getline(own_turf, O))
if(is_blocked_turf(T, TRUE))
@@ -236,7 +236,7 @@ Difficulty: Medium
/obj/effect/temp_visual/dir_setting/miner_death
icon_state = "miner_death"
- duration = 10
+ duration = 15
/obj/effect/temp_visual/dir_setting/miner_death/Initialize(mapload, set_dir)
. = ..()
@@ -250,9 +250,9 @@ Difficulty: Medium
final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass
animate(src, transform = M, pixel_y = -6, dir = final_dir, time = 2, easing = EASE_IN|EASE_OUT)
- sleep(2)
- animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 8, easing = EASE_IN, flags = ANIMATION_PARALLEL)
- sleep(2)
+ sleep(5)
+ animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 10, easing = EASE_IN, flags = ANIMATION_PARALLEL)
+ sleep(4)
animate(src, alpha = 0, time = 6, easing = EASE_OUT, flags = ANIMATION_PARALLEL)
/obj/item/device/gps/internal/miner
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 562af8c1a3..1e47342416 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -78,7 +78,7 @@ Difficulty: Very Hard
double_spiral()
else
visible_message("\"Judgement.\"")
- INVOKE_ASYNC(src, .proc/spiral_shoot, rand(0, 1))
+ INVOKE_ASYNC(src, .proc/spiral_shoot, pick(TRUE, FALSE))
else if(prob(20))
ranged_cooldown = world.time + 30
@@ -142,46 +142,11 @@ Difficulty: Very Hard
sleep(10)
INVOKE_ASYNC(src, .proc/spiral_shoot)
- INVOKE_ASYNC(src, .proc/spiral_shoot, 1)
+ INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE)
-/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = 0, counter_start = 1)
+/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = FALSE, counter_start = 8)
var/counter = counter_start
- var/turf/marker
for(var/i in 1 to 80)
- switch(counter)
- if(1)
- marker = locate(x, y - 2, z)
- if(2)
- marker = locate(x - 1, y - 2, z)
- if(3)
- marker = locate(x - 2, y - 2, z)
- if(4)
- marker = locate(x - 2, y - 1, z)
- if(5)
- marker = locate(x - 2, y, z)
- if(6)
- marker = locate(x - 2, y + 1, z)
- if(7)
- marker = locate(x - 2, y + 2, z)
- if(8)
- marker = locate(x - 1, y + 2, z)
- if(9)
- marker = locate(x, y + 2, z)
- if(10)
- marker = locate(x + 1, y + 2, z)
- if(11)
- marker = locate(x + 2, y + 2, z)
- if(12)
- marker = locate(x + 2, y + 1, z)
- if(13)
- marker = locate(x + 2, y, z)
- if(14)
- marker = locate(x + 2, y - 1, z)
- if(15)
- marker = locate(x + 2, y - 2, z)
- if(16)
- marker = locate(x + 1, y - 2, z)
-
if(negative)
counter--
else
@@ -190,25 +155,25 @@ Difficulty: Very Hard
counter = 1
if(counter < 1)
counter = 16
- shoot_projectile(marker)
+ shoot_projectile(null, counter * 22.5)
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, 1)
sleep(1)
-/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker)
- if(!marker || marker == loc)
+/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker, set_angle)
+ if(!isnum(set_angle) && (!marker || marker == loc))
return
var/turf/startloc = get_turf(src)
var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc)
P.current = startloc
P.starting = startloc
P.firer = src
- P.yo = marker.y - startloc.y
- P.xo = marker.x - startloc.x
+ if(marker)
+ P.yo = marker.y - startloc.y
+ P.xo = marker.x - startloc.x
+ P.original = marker
if(target)
P.original = target
- else
- P.original = marker
- P.fire()
+ P.fire(set_angle)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/random_shots()
var/turf/U = get_turf(src)
@@ -217,17 +182,21 @@ Difficulty: Very Hard
if(prob(5))
shoot_projectile(T)
-/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast()
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2)
- var/turf/T = get_turf(target)
- newtonian_move(get_dir(T, targets_from))
- for(var/turf/turf in range(1, T))
- shoot_projectile(turf)
+/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast(set_angle)
+ var/turf/target_turf = get_turf(target)
+ playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2)
+ newtonian_move(get_dir(target_turf, src))
+ var/angle_to_target = Get_Angle(src, target_turf)
+ if(isnum(set_angle))
+ angle_to_target = set_angle
+ var/static/list/colossus_shotgun_shot_angles = list(12.5, 7.5, 2.5, -2.5, -7.5, -12.5)
+ for(var/i in colossus_shotgun_shot_angles)
+ shoot_projectile(null, angle_to_target + i)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/dir_shots(list/dirs)
if(!islist(dirs))
dirs = GLOB.alldirs.Copy()
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2)
+ playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2)
for(var/d in dirs)
var/turf/E = get_step(src, d)
shoot_projectile(E)
@@ -235,9 +204,9 @@ Difficulty: Very Hard
/mob/living/simple_animal/hostile/megafauna/colossus/proc/telegraph()
for(var/mob/M in range(10,src))
if(M.client)
- flash_color(M.client, rgb(200, 0, 0), 1)
+ flash_color(M.client, "#C80000", 1)
shake_camera(M, 4, 3)
- playsound(get_turf(src),'sound/magic/clockwork/narsie_attack.ogg', 200, 1)
+ playsound(src, 'sound/magic/clockwork/narsie_attack.ogg', 200, 1)
@@ -495,8 +464,7 @@ Difficulty: Very Hard
NewTerrainChairs = /obj/structure/chair/wood
NewTerrainTables = /obj/structure/table/wood
NewFlora = list(/obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/leafybush,
- /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/tree/palm, /mob/living/carbon/monkey,
- /obj/item/weapon/gun/ballistic/bow, /obj/item/weapon/storage/backpack/quiver/full)
+ /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/tree/palm, /mob/living/carbon/monkey)
florachance = 20
if("ayy lmao") //Beneficial, turns stuff into alien alloy which is useful to cargo and research. Also repairs atmos.
NewTerrainFloors = /turf/open/floor/plating/abductor
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
index b68e2eef66..43c9197edc 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
@@ -191,7 +191,9 @@ Difficulty: Medium
sleep(1)
if(QDELETED(src) || stat == DEAD) //we got hit and died, rip us
qdel(F)
- swooping &= ~SWOOP_DAMAGEABLE
+ if(stat == DEAD)
+ swooping &= ~SWOOP_DAMAGEABLE
+ animate(src, alpha = 255, transform = oldtransform, time = 0, flags = ANIMATION_END_NOW) //reset immediately
return
animate(src, alpha = 100, transform = matrix()*0.7, time = 7)
swooping |= SWOOP_INVULNERABLE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 2e841722c8..11c59a2d28 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -24,7 +24,7 @@ The Hierophant's attacks are as follows;
If below half health, the created Cross Blast may fire in all directions.
- Creates an expanding AoE burst.
-- IF TARGET WAS STRUCK IN MELEE: Creates a 3x3 square of blasts under the target.
+- IF ATTACKING IN MELEE: Creates an expanding AoE burst.
Cross Blasts and the AoE burst gain additional range as Hierophant loses health, while Chasers gain additional speed.
@@ -148,8 +148,19 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/AttackingTarget()
if(!blinking)
if(target && isliving(target))
- INVOKE_ASYNC(src, .proc/melee_blast, get_turf(target)) //melee attacks on living mobs produce a 3x3 blast
- return ..()
+ var/mob/living/L = target
+ if(L.stat != DEAD)
+ if(ranged_cooldown <= world.time)
+ calculate_rage()
+ ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75)
+ INVOKE_ASYNC(src, .proc/burst, get_turf(src))
+ else
+ burst_range = 3
+ INVOKE_ASYNC(src, .proc/burst, get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown
+ else
+ devour(L)
+ else
+ return ..()
/mob/living/simple_animal/hostile/megafauna/hierophant/DestroySurroundings()
if(!blinking)
@@ -157,14 +168,16 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/Move()
if(!blinking)
- var/prevloc = loc
. = ..()
- if(!stat && .)
- var/obj/effect/temp_visual/hierophant/squares/HS = new /obj/effect/temp_visual/hierophant/squares(prevloc)
- HS.dir = dir
- playsound(loc, 'sound/mecha/mechmove04.ogg', 150, 1, -4)
- if(target)
- arena_trap(target)
+
+/mob/living/simple_animal/hostile/megafauna/hierophant/Moved(oldLoc, movement_dir)
+ . = ..()
+ if(!stat && .)
+ var/obj/effect/temp_visual/hierophant/squares/HS = new(oldLoc)
+ HS.setDir(movement_dir)
+ playsound(src, 'sound/mecha/mechmove04.ogg', 150, 1, -4)
+ if(target)
+ arena_trap(target)
/mob/living/simple_animal/hostile/megafauna/hierophant/Goto(target, delay, minimum_distance)
wander = TRUE
@@ -264,7 +277,7 @@ Difficulty: Hard
pickedtarget = target
if(QDELETED(pickedtarget) || (istype(pickedtarget) && pickedtarget.stat == DEAD))
break //main target is dead and we're out of living targets, cancel out
- var/obj/effect/temp_visual/hierophant/chaser/C = new /obj/effect/temp_visual/hierophant/chaser(loc, src, pickedtarget, chaser_speed, FALSE)
+ var/obj/effect/temp_visual/hierophant/chaser/C = new(loc, src, pickedtarget, chaser_speed, FALSE)
C.moving = 3
C.moving_dir = pick_n_take(cardinal_copy)
sleep(8 + target_slowness)
@@ -279,7 +292,7 @@ Difficulty: Hard
var/obj/effect/temp_visual/hierophant/chaser/C = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, chaser_speed, FALSE)
chaser_cooldown = world.time + initial(chaser_cooldown)
if((prob(anger_modifier) || target.Adjacent(src)) && target != src)
- var/obj/effect/temp_visual/hierophant/chaser/OC = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, chaser_speed * 1.5, FALSE)
+ var/obj/effect/temp_visual/hierophant/chaser/OC = new(loc, src, target, chaser_speed * 1.5, FALSE)
OC.moving = 4
OC.moving_dir = pick(GLOB.cardinals - C.moving_dir)
@@ -358,8 +371,8 @@ Difficulty: Hard
var/turf/previousturf = T
var/turf/J = get_step(previousturf, set_dir)
for(var/i in 1 to 10)
- var/obj/effect/temp_visual/hierophant/squares/HS = new /obj/effect/temp_visual/hierophant/squares(J)
- HS.dir = set_dir
+ var/obj/effect/temp_visual/hierophant/squares/HS = new(J)
+ HS.setDir(set_dir)
previousturf = J
J = get_step(previousturf, set_dir)
sleep(0.5)
@@ -378,10 +391,10 @@ Difficulty: Hard
new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, src)
for(var/t in RANGE_TURFS(1, T))
- var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
+ var/obj/effect/temp_visual/hierophant/blast/B = new(t, src, FALSE)
B.damage = 30
for(var/t in RANGE_TURFS(1, source))
- var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
+ var/obj/effect/temp_visual/hierophant/blast/B = new(t, src, FALSE)
B.damage = 30
animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out
sleep(1)
@@ -409,7 +422,7 @@ Difficulty: Hard
for(var/t in RANGE_TURFS(1, T))
new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
-/mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original) //release a wave of blasts
+/mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original, spread_speed = 0.5) //release a wave of blasts
playsound(original,'sound/machines/airlockopen.ogg', 200, 1)
var/last_dist = 0
for(var/t in spiral_range_turfs(burst_range, original))
@@ -419,7 +432,7 @@ Difficulty: Hard
var/dist = get_dist(original, T)
if(dist > last_dist)
last_dist = dist
- sleep(1 + min(burst_range - last_dist, 12) * 0.5) //gets faster as it gets further out
+ sleep(1 + min(burst_range - last_dist, 12) * spread_speed) //gets faster as it gets further out
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
/mob/living/simple_animal/hostile/megafauna/hierophant/AltClickOn(atom/A) //player control handler(don't give this to a player holy fuck)
@@ -567,7 +580,8 @@ Difficulty: Hard
/obj/effect/temp_visual/hierophant/blast
icon_state = "hierophant_blast"
name = "vortex blast"
- light_range = 1
+ light_range = 2
+ light_power = 2
desc = "Get out of the way!"
duration = 9
var/damage = 10 //how much damage do we do?
@@ -616,10 +630,18 @@ Difficulty: Hard
var/limb_to_hit = L.get_bodypart(pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg"))
var/armor = L.run_armor_check(limb_to_hit, "melee", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 50, "Your armor was penetrated by [src]!")
L.apply_damage(damage, BURN, limb_to_hit, armor)
+ if(ishostile(L))
+ var/mob/living/simple_animal/hostile/H = L //mobs find and damage you...
+ if(H.stat == CONSCIOUS && !H.target && H.AIStatus != AI_OFF && !H.client)
+ if(!QDELETED(caster))
+ if(get_dist(H, caster) <= H.aggro_vision_range)
+ H.FindTarget(list(caster), 1)
+ else
+ H.Goto(get_turf(caster), H.move_to_delay, 3)
if(monster_damage_boost && (ismegafauna(L) || istype(L, /mob/living/simple_animal/hostile/asteroid)))
L.adjustBruteLoss(damage)
add_logs(caster, L, "struck with a [name]")
- for(var/obj/mecha/M in T.contents - hit_things) //and mechs.
+ for(var/obj/mecha/M in T.contents - hit_things) //also damage mechs.
hit_things += M
if(M.occupant)
if(friendly_fire_check && caster && caster.faction_check_mob(M.occupant))
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index dec81e4df8..0630c9cc2c 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -137,8 +137,8 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
/mob/living/simple_animal/hostile/swarmer/ai/Move(atom/newloc)
if(newloc)
if(newloc.z == z) //so these actions are Z-specific
- if(istype(newloc, /turf/open/floor/plating/lava))
- var/turf/open/floor/plating/lava/L = newloc
+ if(istype(newloc, /turf/open/lava))
+ var/turf/open/lava/L = newloc
if(!L.is_safe())
StartAction(20)
new /obj/structure/lattice/catwalk/swarmer_catwalk(newloc)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index c3c17a22a5..7f38bebcfb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -260,9 +260,9 @@
if(prob(20))
suit = pickweight(list(/obj/item/clothing/suit/hooded/explorer = 18, /obj/item/clothing/suit/hooded/cloak/goliath = 2))
if(prob(30))
- r_pocket = pickweight(list(/obj/item/stack/marker_beacon = 20, /obj/item/stack/spacecash/c1000 = 7,/obj/item/weapon/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/damage = 1 ))
+ r_pocket = pickweight(list(/obj/item/stack/marker_beacon = 20, /obj/item/stack/spacecash/c1000 = 7, /obj/item/weapon/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/damage = 1 ))
if(prob(10))
- l_pocket = pickweight(list(/obj/item/stack/spacecash/c1000 = 7,/obj/item/weapon/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/cooldown = 1 ))
+ l_pocket = pickweight(list(/obj/item/stack/spacecash/c1000 = 7, /obj/item/weapon/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/cooldown = 1 ))
if("Ashwalker")
mob_species = /datum/species/lizard/ashwalker
uniform = /obj/item/clothing/under/gladiator/ash_walker
@@ -273,7 +273,7 @@
suit = /obj/item/clothing/suit/armor/bone
gloves = /obj/item/clothing/gloves/bracer
if(prob(5))
- back = pickweight(list(/obj/item/weapon/twohanded/bonespear = 3,/obj/item/weapon/twohanded/fireaxe/boneaxe = 2))
+ back = pickweight(list(/obj/item/weapon/twohanded/bonespear = 3, /obj/item/weapon/twohanded/fireaxe/boneaxe = 2))
if(prob(10))
belt = /obj/item/weapon/storage/belt/mining/primitive
if(prob(30))
@@ -286,7 +286,7 @@
belt = null
backpack_contents = list()
if(prob(70))
- backpack_contents += pick(list(/obj/item/weapon/stamp/clown = 1, /obj/item/weapon/reagent_containers/spray/waterflower = 1,/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1, /obj/item/device/megaphone/clown = 1,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_laughter = 1,/obj/item/weapon/pneumatic_cannon/pie = 1))
+ backpack_contents += pick(list(/obj/item/weapon/stamp/clown = 1, /obj/item/weapon/reagent_containers/spray/waterflower = 1, /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1, /obj/item/device/megaphone/clown = 1, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_laughter = 1, /obj/item/weapon/pneumatic_cannon/pie = 1))
if(prob(30))
backpack_contents += list(/obj/item/stack/sheet/mineral/bananium = pickweight(list( 1 = 3, 2 = 2, 3 = 1)))
if(prob(10))
@@ -296,9 +296,9 @@
if("Golem")
mob_species = pick(list(/datum/species/golem/adamantine, /datum/species/golem/plasma, /datum/species/golem/diamond, /datum/species/golem/gold, /datum/species/golem/silver, /datum/species/golem/plasteel, /datum/species/golem/titanium, /datum/species/golem/plastitanium))
if(prob(30))
- glasses = pickweight(list(/obj/item/clothing/glasses/meson = 2, /obj/item/clothing/glasses/hud/health = 2,/obj/item/clothing/glasses/hud/diagnostic =2, /obj/item/clothing/glasses/science = 2, /obj/item/clothing/glasses/welding = 2, /obj/item/clothing/glasses/night = 1))
+ glasses = pickweight(list(/obj/item/clothing/glasses/meson = 2, /obj/item/clothing/glasses/hud/health = 2, /obj/item/clothing/glasses/hud/diagnostic =2, /obj/item/clothing/glasses/science = 2, /obj/item/clothing/glasses/welding = 2, /obj/item/clothing/glasses/night = 1))
if(prob(10))
- belt = pick(list(/obj/item/weapon/storage/belt/mining/vendor,/obj/item/weapon/storage/belt/utility/full))
+ belt = pick(list(/obj/item/weapon/storage/belt/mining/vendor, /obj/item/weapon/storage/belt/utility/full))
if(prob(50))
neck = /obj/item/weapon/bedsheet/rd/royal_cape
if(prob(10))
@@ -316,7 +316,7 @@
mask = /obj/item/clothing/mask/breath
if("Operative")
id_job = "Operative"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/syndicatecommandocorpse
if("Shadow")
mob_species = /datum/species/shadow
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
index 02257193ff..5a3672af6d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
@@ -39,7 +39,7 @@
for(var/F in RANGE_TURFS(1, src))
if(ismineralturf(F))
var/turf/closed/mineral/M = F
- M.ChangeTurf(M.turf_type,FALSE,TRUE)
+ M.ChangeTurf(M.turf_type,FALSE,FALSE,TRUE)
gps = new /obj/item/device/gps/internal(src)
/mob/living/simple_animal/hostile/spawner/lavaland/Destroy()
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index ce2967319a..5080a9db8a 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -323,7 +323,7 @@
//Mobs with objects
/mob/living/simple_animal/parrot/attackby(obj/item/O, mob/living/user, params)
- if(!stat && !client && !istype(O, /obj/item/stack/medical) && !istype(O,/obj/item/weapon/reagent_containers/food/snacks/cracker))
+ if(!stat && !client && !istype(O, /obj/item/stack/medical) && !istype(O, /obj/item/weapon/reagent_containers/food/snacks/cracker))
if(O.force)
if(parrot_state == PARROT_PERCH)
parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched
@@ -336,7 +336,7 @@
parrot_state |= PARROT_FLEE
icon_state = "parrot_fly"
drop_held_item(0)
- else if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/cracker)) //Poly wants a cracker.
+ else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/cracker)) //Poly wants a cracker.
qdel(O)
user.drop_item()
if(health < maxHealth)
@@ -764,7 +764,7 @@
//parrots will eat crackers instead of dropping them
- if(istype(held_item,/obj/item/weapon/reagent_containers/food/snacks/cracker) && (drop_gently))
+ if(istype(held_item, /obj/item/weapon/reagent_containers/food/snacks/cracker) && (drop_gently))
qdel(held_item)
held_item = null
if(health < maxHealth)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 18a5337c99..236b36dafd 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -311,7 +311,7 @@
for(var/datum/surgery/S in surgeries)
if(S.next_step(user))
return 1
- if(istype(W,/obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma.
+ if(istype(W, /obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma.
if (user in Friends)
++Friends[user]
else
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 7681566854..cfb15b468c 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -387,7 +387,7 @@
set category = "Object"
set src = usr
- if(istype(loc,/obj/mecha))
+ if(istype(loc, /obj/mecha))
return
if(incapacitated())
@@ -869,7 +869,7 @@
var/search_pda = 1
for(var/A in searching)
- if( search_id && istype(A,/obj/item/weapon/card/id) )
+ if( search_id && istype(A, /obj/item/weapon/card/id) )
var/obj/item/weapon/card/id/ID = A
if(ID.registered_name == oldname)
ID.registered_name = newname
@@ -878,7 +878,7 @@
break
search_id = 0
- else if( search_pda && istype(A,/obj/item/device/pda) )
+ else if( search_pda && istype(A, /obj/item/device/pda) )
var/obj/item/device/pda/PDA = A
if(PDA.owner == oldname)
PDA.owner = newname
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 35c7069d73..23bfab7a95 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -87,6 +87,8 @@ proc/get_top_level_mob(var/mob/S)
alert("Unable to use this emote, must be either hearable or visible.")
return
message = subtle_emote
+ else
+ return FALSE
else
message = params
if(type_override)
diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm
index 39fd8fae61..e4cecbcb64 100644
--- a/code/modules/modular_computers/computers/item/tablet.dm
+++ b/code/modules/modular_computers/computers/item/tablet.dm
@@ -12,3 +12,12 @@
slot_flags = SLOT_ID | SLOT_BELT
has_light = TRUE //LED flashlight!
comp_light_luminosity = 2.3 //Same as the PDA
+ var/finish_color = null
+
+/obj/item/device/modular_computer/tablet/update_icon()
+ ..()
+ if(!finish_color)
+ finish_color = pick("red","blue","brown","green","black")
+ icon_state = "tablet-[finish_color]"
+ icon_state_unpowered = "tablet-[finish_color]"
+ icon_state_powered = "tablet-[finish_color]"
\ No newline at end of file
diff --git a/code/modules/modular_computers/computers/item/tablet.dm.rej b/code/modules/modular_computers/computers/item/tablet.dm.rej
new file mode 100644
index 0000000000..ee3bfe26b9
--- /dev/null
+++ b/code/modules/modular_computers/computers/item/tablet.dm.rej
@@ -0,0 +1,15 @@
+diff a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm (rejected hunks)
+@@ -12,3 +13,12 @@
+ slot_flags = SLOT_ID | SLOT_BELT
+ has_light = TRUE //LED flashlight!
+ comp_light_luminosity = 2.3 //Same as the PDA
++ var/finish_color = null
++
++/obj/item/device/modular_computer/tablet/update_icon()
++ ..()
++ if(!finish_color)
++ finish_color = pick("red","blue","brown","green","black")
++ icon_state = "tablet-[finish_color]"
++ icon_state_unpowered = "tablet-[finish_color]"
++ icon_state_powered = "tablet-[finish_color]"
+\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm
index 04063aeeca..bfbece0cda 100644
--- a/code/modules/modular_computers/file_system/programs/airestorer.dm
+++ b/code/modules/modular_computers/file_system/programs/airestorer.dm
@@ -6,7 +6,7 @@
size = 12
requires_ntnet = 0
usage_flags = PROGRAM_CONSOLE
- transfer_access = GLOB.access_heads
+ transfer_access = ACCESS_HEADS
available_on_ntnet = 1
tgui_id = "ntos_ai_restorer"
ui_x = 600
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 56ebabf79d..0f57ca9f61 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -3,7 +3,7 @@
filedesc = "ID Card Modification"
program_icon_state = "id"
extended_desc = "Program for programming employee ID cards to access parts of the station."
- transfer_access = GLOB.access_heads
+ transfer_access = ACCESS_HEADS
requires_ntnet = 0
size = 8
tgui_id = "ntos_card"
@@ -448,25 +448,25 @@
var/obj/item/weapon/card/id/auth_card = card_slot.stored_card2
if(auth_card)
region_access = list()
- if(GLOB.access_change_ids in auth_card.GetAccess())
+ if(ACCESS_CHANGE_IDS in auth_card.GetAccess())
minor = 0
authenticated = 1
return 1
else
- if((GLOB.access_hop in auth_card.access) && ((target_dept==1) || !target_dept))
+ if((ACCESS_HOP in auth_card.access) && ((target_dept==1) || !target_dept))
region_access |= 1
region_access |= 6
get_subordinates("Head of Personnel")
- if((GLOB.access_hos in auth_card.access) && ((target_dept==2) || !target_dept))
+ if((ACCESS_HOS in auth_card.access) && ((target_dept==2) || !target_dept))
region_access |= 2
get_subordinates("Head of Security")
- if((GLOB.access_cmo in auth_card.access) && ((target_dept==3) || !target_dept))
+ if((ACCESS_CMO in auth_card.access) && ((target_dept==3) || !target_dept))
region_access |= 3
get_subordinates("Chief Medical Officer")
- if((GLOB.access_rd in auth_card.access) && ((target_dept==4) || !target_dept))
+ if((ACCESS_RD in auth_card.access) && ((target_dept==4) || !target_dept))
region_access |= 4
get_subordinates("Research Director")
- if((GLOB.access_ce in auth_card.access) && ((target_dept==5) || !target_dept))
+ if((ACCESS_CE in auth_card.access) && ((target_dept==5) || !target_dept))
region_access |= 5
get_subordinates("Chief Engineer")
if(region_access.len)
diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
index fe556faeab..dfca4870bd 100644
--- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm
+++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
@@ -5,7 +5,7 @@
extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes"
size = 12
requires_ntnet = 1
- required_access = GLOB.access_network //Network control is a more secure program.
+ required_access = ACCESS_NETWORK //NETWORK CONTROL IS A MORE SECURE PROGRAM.
available_on_ntnet = 1
tgui_id = "ntos_net_monitor"
diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
index 57a53169f2..f200fbf747 100644
--- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
+++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
@@ -85,7 +85,7 @@
channel = null
return 1
var/mob/living/user = usr
- if(can_run(usr, 1, GLOB.access_network))
+ if(can_run(usr, 1, ACCESS_NETWORK))
if(channel)
var/response = alert(user, "Really engage admin-mode? You will be disconnected from your current channel!", "NTNRC Admin mode", "Yes", "No")
if(response == "Yes")
diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm
index f95c290734..b334f523f7 100644
--- a/code/modules/modular_computers/file_system/programs/powermonitor.dm
+++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm
@@ -4,7 +4,7 @@
program_icon_state = "power_monitor"
extended_desc = "This program connects to sensors around the station to provide information about electrical systems"
ui_header = "power_norm.gif"
- transfer_access = GLOB.access_engine
+ transfer_access = ACCESS_ENGINE
usage_flags = PROGRAM_CONSOLE
requires_ntnet = 0
network_destination = "power monitoring system"
diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm
index b5ea32f1b2..cfe019e193 100644
--- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm
@@ -5,7 +5,7 @@
program_icon_state = "smmon_0"
extended_desc = "This program connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines."
requires_ntnet = TRUE
- transfer_access = GLOB.access_engine
+ transfer_access = ACCESS_ENGINE
network_destination = "supermatter monitoring system"
size = 5
tgui_id = "ntos_supermatter_monitor"
diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm
index e30d37b510..1fa48f5aca 100644
--- a/code/modules/modular_computers/laptop_vendor.dm
+++ b/code/modules/modular_computers/laptop_vendor.dm
@@ -241,7 +241,7 @@
/obj/machinery/lapvend/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I,/obj/item/stack/spacecash))
+ if(istype(I, /obj/item/stack/spacecash))
var/obj/item/stack/spacecash/c = I
if(!user.drop_item(c))
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 8c298a3c9a..b673db5456 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -16,7 +16,7 @@ Contents:
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
icon_state = "s-ninja"
item_state = "s-ninja_suit"
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/stock_parts/cell)
+ allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/restraints/handcuffs, /obj/item/weapon/tank/internals, /obj/item/weapon/stock_parts/cell)
slowdown = 0
resistance_flags = LAVA_PROOF | ACID_PROOF
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100)
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 7eaa0a7e26..548c8eae9c 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -103,7 +103,7 @@
update_text()
/obj/item/weapon/paper/contract/infernal/suicide_act(mob/user)
- if(signed && (user == target.current) && istype(user,/mob/living/carbon/human/))
+ if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = user
H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!")
H.visible_message("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!")
@@ -304,11 +304,11 @@
id.assignment = "Captain"
id.update_label()
if(worn)
- if(istype(worn,/obj/item/device/pda))
+ if(istype(worn, /obj/item/device/pda))
var/obj/item/device/pda/PDA = worn
PDA.id = id
id.loc = worn
- else if(istype(worn,/obj/item/weapon/storage/wallet))
+ else if(istype(worn, /obj/item/weapon/storage/wallet))
var/obj/item/weapon/storage/wallet/W = worn
W.front_id = id
id.loc = worn
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 4522cb0b66..9d9db88ee3 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -417,7 +417,7 @@
/obj/item/weapon/paper/jobs
name = "paper- 'Job Information'"
- info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document. \nThe data will be in the following form. \nGenerally lower ranking positions come first in this list. \n \nJob Name general access>lab access-engine access-systems access (atmosphere control) \n\tJob Description \nJob Duties (in no particular order) \nTips (where applicable) \n \nResearch Assistant 1>1-0-0 \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance. \n1. Assist the researchers. \n2. Clean up the labs. \n3. Prepare materials. \n \nStaff Assistant 2>0-0-0 \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel) \n1. Patrol ship/Guard key areas \n2. Assist security officer \n3. Perform other security duties. \n \nTechnical Assistant 1>0-0-1 \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that. \n1. Assist Station technician and Engineers. \n2. Perform general maintenance of station. \n3. Prepare materials. \n \nMedical Assistant 1>1-0-0 \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals) \n1. Assist the medical personnel. \n2. Update medical files. \n3. Prepare materials for medical operations. \n \nResearch Technician 2>3-0-0 \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally. \n1. Inform superiors of research. \n2. Perform research alongside of official researchers. \n \nDetective 3>2-0-0 \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly. \n1. Perform crime-scene investigations/draw conclusions. \n2. Store and catalogue evidence properly. \n3. Testify to superiors/inquieries on findings. \n \nStation Technician 2>0-2-3 \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician. \n1. Maintain SS13 systems. \n2. Repair equipment. \n \nAtmospheric Technician 3>0-0-4 \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13. \n1. Maintain atmosphere on SS13 \n2. Research atmospheres on the space station. (safely please!) \n \nEngineer 2>1-3-0 \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area. \n1. Upkeep the engine. \n2. Prevent fires in the engine. \n3. Maintain a safe orbit. \n \nMedical Researcher 2>5-0-0 \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed. \n1. Make sure the station is kept safe. \n2. Research medical properties of materials studied of Space Station 13. \n \nScientist 2>5-0-0 \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle. \n1. Research plasma \n2. Make sure all plasma is properly handled. \n \nMedical Doctor (Officer) 2>0-0-0 \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder. \n1. Heal wounded people. \n2. Perform examinations of all personnel. \n3. Moniter usage of medical equipment. \n \nSecurity Officer 3>0-0-0 \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources. \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel) \n1. Maintain order. \n2. Assist others. \n3. Repair structural problems. \n \nHead of Security 4>5-2-2 \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person. \n1. Oversee security. \n2. Assign patrol duties. \n3. Protect the station and staff. \n \nHead of Personnel 4>4-2-2 \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels. \n1. Assign duties. \n2. Moderate personnel. \n3. Moderate research. \n \nCaptain 5>5-5-5 (unrestricted station wide access) \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power. \n1. Assign all positions on SS13 \n2. Inspect the station for any problems. \n3. Perform administrative duties. \n"
+ info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document. \nThe data will be in the following form. \nGenerally lower ranking positions come first in this list. \n \nJob Name general access>lab access-engine access-systems access (atmosphere control) \n\tJob Description \nJob Duties (in no particular order) \nTips (where applicable) \n \nResearch Assistant 1>1-0-0 \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance. \n1. Assist the researchers. \n2. Clean up the labs. \n3. Prepare materials. \n \nStaff Assistant 2>0-0-0 \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel) \n1. Patrol ship/Guard key areas \n2. Assist security officer \n3. Perform other security duties. \n \nTechnical Assistant 1>0-0-1 \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that. \n1. Assist Station technician and Engineers. \n2. Perform general maintenance of station. \n3. Prepare materials. \n \nMedical Assistant 1>1-0-0 \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals) \n1. Assist the medical personnel. \n2. Update medical files. \n3. Prepare materials for medical operations. \n \nResearch Technician 2>3-0-0 \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally. \n1. Inform superiors of research. \n2. Perform research alongside of official researchers. \n \nDetective 3>2-0-0 \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly. \n1. Perform crime-scene investigations/draw conclusions. \n2. Store and catalogue evidence properly. \n3. Testify to superiors/inquieries on findings. \n \nStation Technician 2>0-2-3 \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician. \n1. Maintain SS13 systems. \n2. Repair equipment. \n \nAtmospheric Technician 3>0-0-4 \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13. \n1. Maintain atmosphere on SS13 \n2. Research atmospheres on the space station. (safely please!) \n \nEngineer 2>1-3-0 \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area. \n1. Upkeep the engine. \n2. Prevent fires in the engine. \n3. Maintain a safe orbit. \n \nMedical Researcher 2>5-0-0 \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed. \n1. Make sure the station is kept safe. \n2. Research medical properties of materials studied of Space Station 13. \n \nScientist 2>5-0-0 \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle. \n1. Research plasma \n2. Make sure all plasma is properly handled. \n \nMedical Doctor (Officer) 2>0-0-0 \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder. \n1. Heal wounded people. \n2. Perform examinations of all personnel. \n3. Monitor usage of medical equipment. \n \nSecurity Officer 3>0-0-0 \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources. \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel) \n1. Maintain order. \n2. Assist others. \n3. Repair structural problems. \n \nHead of Security 4>5-2-2 \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person. \n1. Oversee security. \n2. Assign patrol duties. \n3. Protect the station and staff. \n \nHead of Personnel 4>4-2-2 \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels. \n1. Assign duties. \n2. Moderate personnel. \n3. Moderate research. \n \nCaptain 5>5-5-5 (unrestricted station wide access) \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power. \n1. Assign all positions on SS13 \n2. Inspect the station for any problems. \n3. Perform administrative duties. \n"
/obj/item/weapon/paper/sop
name = "paper- 'Standard Operating Procedure'"
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index bd2437aa15..1aa8720c45 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -149,7 +149,7 @@
to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on." )
break
else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on.
- if(isalienadult(ass) || istype(ass,/mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro.
+ if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro.
temp_img = icon('icons/ass/assalien.png')
else if(ishuman(ass)) //Suit checks are in check_ass
if(ass.gender == MALE)
@@ -256,7 +256,7 @@
/obj/machinery/photocopier/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/weapon/paper))
if(copier_empty())
- if(istype(O,/obj/item/weapon/paper/contract/infernal))
+ if(istype(O, /obj/item/weapon/paper/contract/infernal))
to_chat(user, "[src] smokes, smelling of brimstone!")
resistance_flags |= FLAMMABLE
fire_act()
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index 468cf527a7..da1e1ed22b 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -238,7 +238,7 @@
materials = list(MAT_METAL=100)
/obj/item/device/am_shielding_container/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/device/multitool) && istype(src.loc,/turf))
+ if(istype(I, /obj/item/device/multitool) && istype(src.loc, /turf))
new/obj/machinery/am_shielding(src.loc)
qdel(src)
else
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index c6409c28e3..5db3d9c1c5 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -103,7 +103,7 @@
/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0)
if (!req_access)
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
if (!armor)
armor = list(melee = 20, bullet = 20, laser = 10, energy = 100, bomb = 30, bio = 100, rad = 100, fire = 90, acid = 50)
..()
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index ee02e6eb35..5c2d5a5899 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -301,7 +301,7 @@ By design, d1 is the smallest direction and d2 is the highest
//first let's add turf cables to our powernet
//then we'll connect machines on turf with a node cable is present
for(var/AM in loc)
- if(istype(AM,/obj/structure/cable))
+ if(istype(AM, /obj/structure/cable))
var/obj/structure/cable/C = AM
if(C.d1 == d1 || C.d2 == d1 || C.d1 == d2 || C.d2 == d2) //only connected if they have a common direction
if(C.powernet == powernet)
@@ -311,7 +311,7 @@ By design, d1 is the smallest direction and d2 is the highest
else
powernet.add_cable(C) //the cable was powernetless, let's just add it to our powernet
- else if(istype(AM,/obj/machinery/power/apc))
+ else if(istype(AM, /obj/machinery/power/apc))
var/obj/machinery/power/apc/N = AM
if(!N.terminal)
continue // APC are connected through their terminal
@@ -321,7 +321,7 @@ By design, d1 is the smallest direction and d2 is the highest
to_connect += N.terminal //we'll connect the machines after all cables are merged
- else if(istype(AM,/obj/machinery/power)) //other power machines
+ else if(istype(AM, /obj/machinery/power)) //other power machines
var/obj/machinery/power/M = AM
if(M.powernet == powernet)
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 83483c89d2..fb3a96162e 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/stock_parts/cell
name = "power cell"
- desc = "A rechargable electrochemical power cell."
+ desc = "A rechargeable electrochemical power cell."
icon = 'icons/obj/power.dmi'
icon_state = "cell"
item_state = "cell"
@@ -164,7 +164,7 @@
/* Cell variants*/
/obj/item/weapon/stock_parts/cell/crap
- name = "\improper Nanotrasen brand rechargable AA battery"
+ name = "\improper Nanotrasen brand rechargeable AA battery"
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
maxcharge = 500
materials = list(MAT_GLASS=40)
@@ -175,7 +175,7 @@
charge = 0
/obj/item/weapon/stock_parts/cell/secborg
- name = "security borg rechargable D battery"
+ name = "security borg rechargeable D battery"
origin_tech = null
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
materials = list(MAT_GLASS=40)
@@ -247,7 +247,7 @@
/obj/item/weapon/stock_parts/cell/bluespace
name = "bluespace power cell"
- desc = "A rechargable transdimensional power cell."
+ desc = "A rechargeable transdimensional power cell."
origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4"
icon_state = "bscell"
maxcharge = 40000
@@ -287,7 +287,7 @@
/obj/item/weapon/stock_parts/cell/potato
name = "potato battery"
- desc = "A rechargable starch based power cell."
+ desc = "A rechargeable starch based power cell."
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "potato"
origin_tech = "powerstorage=1;biotech=1"
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 36804b6121..4b3b5bcd46 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -372,13 +372,14 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
// Shake everyone on the z level to let them know that gravity was enagaged/disenagaged.
/obj/machinery/gravity_generator/main/proc/shake_everyone()
var/turf/T = get_turf(src)
+ var/sound/alert_sound = sound('sound/effects/alert.ogg')
for(var/mob/M in GLOB.mob_list)
if(M.z != z)
continue
M.update_gravity(M.mob_has_gravity())
if(M.client)
shake_camera(M, 15, 1)
- M.playsound_local(T, 'sound/effects/alert.ogg', 100, 1, 0.5)
+ M.playsound_local(T, null, 100, 1, 0.5, S = alert_sound)
/obj/machinery/gravity_generator/main/proc/gravity_in_level()
var/turf/T = get_turf(src)
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index f2cfd807ce..b0d07e88d5 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -194,7 +194,7 @@
if(AM == source)
continue //we don't want to return source
- if(!cable_only && istype(AM,/obj/machinery/power))
+ if(!cable_only && istype(AM, /obj/machinery/power))
var/obj/machinery/power/P = AM
if(P.powernet == 0)
continue // exclude APCs which have powernet=0
@@ -203,7 +203,7 @@
if(d == 0)
. += P
- else if(istype(AM,/obj/structure/cable))
+ else if(istype(AM, /obj/structure/cable))
var/obj/structure/cable/C = AM
if(!unmarked || !C.powernet)
@@ -228,13 +228,13 @@
P = worklist[index] //get the next power object found
index++
- if( istype(P,/obj/structure/cable))
+ if( istype(P, /obj/structure/cable))
var/obj/structure/cable/C = P
if(C.powernet != PN) //add it to the powernet, if it isn't already there
PN.add_cable(C)
worklist |= C.get_connections() //get adjacents power objects, with or without a powernet
- else if(P.anchored && istype(P,/obj/machinery/power))
+ else if(P.anchored && istype(P, /obj/machinery/power))
var/obj/machinery/power/M = P
found_machines |= M //we wait until the powernet is fully propagates to connect the machines
@@ -279,7 +279,7 @@
//dist_check - set to only shock mobs within 1 of source (vendors, airlocks, etc.)
//No animations will be performed by this proc.
/proc/electrocute_mob(mob/living/carbon/M, power_source, obj/source, siemens_coeff = 1, dist_check = FALSE)
- if(istype(M.loc,/obj/mecha))
+ if(istype(M.loc, /obj/mecha))
return 0 //feckin mechs are dumb
if(dist_check)
if(!in_range(source,M))
@@ -292,21 +292,21 @@
return 0 //to avoid spamming with insulated glvoes on
var/area/source_area
- if(istype(power_source,/area))
+ if(istype(power_source, /area))
source_area = power_source
power_source = source_area.get_apc()
- if(istype(power_source,/obj/structure/cable))
+ if(istype(power_source, /obj/structure/cable))
var/obj/structure/cable/Cable = power_source
power_source = Cable.powernet
var/datum/powernet/PN
var/obj/item/weapon/stock_parts/cell/cell
- if(istype(power_source,/datum/powernet))
+ if(istype(power_source, /datum/powernet))
PN = power_source
- else if(istype(power_source,/obj/item/weapon/stock_parts/cell))
+ else if(istype(power_source, /obj/item/weapon/stock_parts/cell))
cell = power_source
- else if(istype(power_source,/obj/machinery/power/apc))
+ else if(istype(power_source, /obj/machinery/power/apc))
var/obj/machinery/power/apc/apc = power_source
cell = apc.cell
if (apc.terminal)
@@ -338,7 +338,7 @@
if (source_area)
source_area.use_power(drained_energy/GLOB.CELLRATE)
- else if (istype(power_source,/datum/powernet))
+ else if (istype(power_source, /datum/powernet))
var/drained_power = drained_energy/GLOB.CELLRATE //convert from "joules" to "watts"
PN.load+=drained_power
else if (istype(power_source, /obj/item/weapon/stock_parts/cell))
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index aca8be54c9..b7000d3535 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -8,7 +8,7 @@ GLOBAL_LIST_EMPTY(rad_collectors)
icon_state = "ca"
anchored = FALSE
density = TRUE
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
// use_power = NO_POWER_USE
max_integrity = 350
integrity_failure = 80
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 1b7b8a1b3f..a14b45599f 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -6,7 +6,7 @@
var/icon_state_on = "emitter_+a"
anchored = FALSE
density = TRUE
- req_access = list(GLOB.access_engine_equip)
+ req_access = list(ACCESS_ENGINE_EQUIP)
// The following 3 vars are mostly for the prototype
var/manual = FALSE
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 7729fdf99a..90c33bb6b3 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -30,7 +30,7 @@
/obj/singularity/narsie/large/Initialize()
. = ..()
send_to_playing_players("NAR-SIE HAS RISEN")
- sound_to_playing_players("im_here")
+ sound_to_playing_players('sound/creatures/narsie_rises.ogg')
var/area/A = get_area(src)
if(A)
@@ -44,17 +44,11 @@
var/souls = 0
var/resolved = FALSE
-/obj/singularity/narsie/large/cult/proc/resize(var/ratio)
- var/matrix/ntransform = matrix(transform) //aka transform.Copy()
- ntransform.Scale(ratio)
- animate(src, transform = ntransform, time = 40, easing = EASE_IN|EASE_OUT)
-
/obj/singularity/narsie/large/cult/Initialize()
. = ..()
GLOB.cult_narsie = src
deltimer(GLOB.blood_target_reset_timer)
GLOB.blood_target = src
- resize(0.6)
for(var/datum/mind/cult_mind in SSticker.mode.cult)
if(isliving(cult_mind.current))
var/mob/living/L = cult_mind.current
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 370e2e6a06..697a80d7cd 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -169,24 +169,24 @@
connected_parts.Cut()
T = get_step(T,rdir)
- if(!check_part(T,/obj/structure/particle_accelerator/fuel_chamber))
+ if(!check_part(T, /obj/structure/particle_accelerator/fuel_chamber))
return 0
T = get_step(T,odir)
- if(!check_part(T,/obj/structure/particle_accelerator/end_cap))
+ if(!check_part(T, /obj/structure/particle_accelerator/end_cap))
return 0
T = get_step(T,dir)
T = get_step(T,dir)
- if(!check_part(T,/obj/structure/particle_accelerator/power_box))
+ if(!check_part(T, /obj/structure/particle_accelerator/power_box))
return 0
T = get_step(T,dir)
- if(!check_part(T,/obj/structure/particle_accelerator/particle_emitter/center))
+ if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/center))
return 0
T = get_step(T,ldir)
- if(!check_part(T,/obj/structure/particle_accelerator/particle_emitter/left))
+ if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/left))
return 0
T = get_step(T,rdir)
T = get_step(T,rdir)
- if(!check_part(T,/obj/structure/particle_accelerator/particle_emitter/right))
+ if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/right))
return 0
assembled = 1
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index b37c8aadca..e80b4cd9b6 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -63,7 +63,7 @@
density = TRUE
anchored = FALSE
light_range = 4
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
critical_machine = TRUE
@@ -131,8 +131,6 @@
var/produces_gas = TRUE
var/obj/effect/countdown/supermatter/countdown
-/obj/machinery/power/supermatter_shard/make_frozen_visual()
- return
/obj/machinery/power/supermatter_shard/Initialize()
. = ..()
diff --git a/code/modules/procedural_mapping/mapGenerators/cellular.dm b/code/modules/procedural_mapping/mapGenerators/cellular.dm
index fb7fd32148..3daa7632ff 100644
--- a/code/modules/procedural_mapping/mapGenerators/cellular.dm
+++ b/code/modules/procedural_mapping/mapGenerators/cellular.dm
@@ -12,7 +12,7 @@
var/list/current_state
var/width = 10
var/height = 10
- var/list/type_map = list(/turf/open/floor/plating,/turf/closed/wall)
+ var/list/type_map = list(/turf/open/floor/plating, /turf/closed/wall)
var/turf/start = null
/datum/mapGenerator/ca/defineRegion(turf/Start, turf/End, replace = 0)
@@ -88,7 +88,7 @@
/datum/mapGenerator/ca/caves
b_rule = list(5,6,7,8)
s_rule = list(4)
- type_map = list(/turf/open/floor/plating/asteroid/basalt,/turf/closed/mineral/volcanic)
+ type_map = list(/turf/open/floor/plating/asteroid/basalt, /turf/closed/mineral/volcanic)
iterations = 5
/datum/mapGenerator/ca/maze
diff --git a/code/modules/procedural_mapping/mapGenerators/lava_river.dm b/code/modules/procedural_mapping/mapGenerators/lava_river.dm
index 336a7786ac..2dbfc7ecd7 100644
--- a/code/modules/procedural_mapping/mapGenerators/lava_river.dm
+++ b/code/modules/procedural_mapping/mapGenerators/lava_river.dm
@@ -15,7 +15,7 @@
..()
/datum/mapGeneratorModule/river
- var/river_type = /turf/open/floor/plating/lava/smooth
+ var/river_type = /turf/open/lava/smooth
var/river_nodes = 4
var/start_z = 5
diff --git a/code/modules/procedural_mapping/mapGenerators/syndicate.dm b/code/modules/procedural_mapping/mapGenerators/syndicate.dm
index 98e87a8b91..b8a6f33b33 100644
--- a/code/modules/procedural_mapping/mapGenerators/syndicate.dm
+++ b/code/modules/procedural_mapping/mapGenerators/syndicate.dm
@@ -14,8 +14,8 @@
/datum/mapGeneratorModule/syndieFurniture
clusterCheckFlags = CLUSTER_CHECK_ALL
spawnableTurfs = list()
- spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/chair = 15,/obj/structure/chair/stool = 10, \
- /obj/structure/frame/computer = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\
+ spawnableAtoms = list(/obj/structure/table = 20, /obj/structure/chair = 15, /obj/structure/chair/stool = 10,
+ /obj/structure/frame/computer = 15, /obj/item/weapon/storage/toolbox/syndicate = 15,
/obj/structure/closet/syndicate = 25, /obj/machinery/suit_storage_unit/syndicate = 15)
/datum/mapGeneratorModule/splatterLayer/syndieMobs
diff --git a/code/modules/projectiles/ammunition/caseless.dm b/code/modules/projectiles/ammunition/caseless.dm
index 76861232b9..17693ae5e3 100644
--- a/code/modules/projectiles/ammunition/caseless.dm
+++ b/code/modules/projectiles/ammunition/caseless.dm
@@ -114,12 +114,3 @@
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
icon_state = "foamdart_riot"
-
-/obj/item/ammo_casing/caseless/arrow
- name = "arrow"
- desc = "Stab, stab, stab."
- icon_state = "arrow"
- force = 10
- sharpness = IS_SHARP
- projectile_type = /obj/item/projectile/bullet/reusable/arrow
- caliber = "arrow"
diff --git a/code/modules/projectiles/boxes_magazines/internal_mag.dm b/code/modules/projectiles/boxes_magazines/internal_mag.dm
index 9476d728a6..3a8b4e6f2f 100644
--- a/code/modules/projectiles/boxes_magazines/internal_mag.dm
+++ b/code/modules/projectiles/boxes_magazines/internal_mag.dm
@@ -188,10 +188,3 @@
ammo_type = /obj/item/ammo_casing/caseless/laser/gatling
caliber = "gatling"
max_ammo = 5000
-
-
-/obj/item/ammo_box/magazine/internal/bow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 1
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 5a21c92f79..115618f0b9 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -91,6 +91,11 @@
else
to_chat(user, "It doesn't have a firing pin installed, and won't fire.")
+/obj/item/weapon/gun/equipped(mob/living/user, slot)
+ . = ..()
+ if(zoomable && user.get_active_held_item() != src)
+ zoom(user, FALSE) //we can only stay zoomed in if it's in our hands
+
//called after the gun has successfully fired its chambered ammo.
/obj/item/weapon/gun/proc/process_chamber()
return 0
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index e5edf19e0c..e1c6e6fa6e 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -412,7 +412,7 @@
/obj/item/weapon/gun/ballistic/automatic/laser
name = "laser rifle"
- desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargable ammunition has given Nanotrasen a decisive edge over many a foe."
+ desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargeable ammunition has given Nanotrasen a decisive edge over many a foe."
icon_state = "oldrifle"
item_state = "arg"
mag_type = /obj/item/ammo_box/magazine/recharge
diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm
deleted file mode 100644
index 89a5faa928..0000000000
--- a/code/modules/projectiles/guns/ballistic/bow.dm
+++ /dev/null
@@ -1,109 +0,0 @@
-/obj/item/weapon/gun/ballistic/bow
- name = "bow"
- desc = "A sturdy bow made out of wood and reinforced with iron."
- icon_state = "bow_unloaded"
- item_state = "bow"
- var/icon_state_loaded = "bow_loaded"
- var/icon_state_firing = "bow_firing"
- var/item_state_loaded = "bow"
- var/item_state_firing = "bow"
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- mag_type = /obj/item/ammo_box/magazine/internal/bow
- weapon_weight = WEAPON_HEAVY
- var/draw_sound = 'sound/weapons/draw_bow.ogg'
- var/ready_to_fire = 0
- var/slowdown_when_ready = 2
-
-/obj/item/weapon/gun/ballistic/bow/Initialize(mapload)
- . = ..()
- SET_SECONDARY_FLAG(src, SLOWS_WHILE_IN_HAND)
-
-/obj/item/weapon/gun/ballistic/bow/update_icon()
- if(ready_to_fire)
- icon_state = icon_state_firing
- item_state = item_state_firing
- slowdown = slowdown_when_ready
- else if(magazine.ammo_count() && !ready_to_fire)
- icon_state = icon_state_loaded
- item_state = item_state_loaded
- slowdown = initial(slowdown)
- else
- icon_state = initial(icon_state)
- item_state = initial(item_state)
- slowdown = initial(slowdown)
-
-/obj/item/weapon/gun/ballistic/bow/dropped(mob/user)
- if(magazine && magazine.ammo_count())
- magazine.empty_magazine()
- ready_to_fire = FALSE
- update_icon()
-
-/obj/item/weapon/gun/ballistic/bow/attack_self(mob/living/user)
- if(!ready_to_fire && magazine.ammo_count())
- ready_to_fire = TRUE
- playsound(user, draw_sound, 100, 1)
- update_icon()
- else
- ready_to_fire = FALSE
- update_icon()
-
-/obj/item/weapon/gun/ballistic/bow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "You ready \the [A] into \the [src].")
- update_icon()
- chamber_round()
-
-/obj/item/weapon/gun/ballistic/bow/can_shoot()
- . = ..()
- if(!ready_to_fire)
- return FALSE
-
-/obj/item/weapon/gun/ballistic/bow/shoot_with_empty_chamber(mob/living/user as mob|obj)
- return
-
-/obj/item/weapon/gun/ballistic/bow/process_chamber(eject_casing = 0, empty_chamber = 1)
- . = ..()
- ready_to_fire = FALSE
- update_icon()
-
-// ammo
-/obj/item/ammo_box/magazine/internal/bow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 1
-
-
-/obj/item/projectile/bullet/reusable/arrow
- name = "arrow"
- icon_state = "arrow"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- range = 10
- damage = 25
- damage_type = BRUTE
-
-/obj/item/ammo_casing/caseless/arrow
- name = "arrow"
- desc = "Stab, stab, stab."
- icon_state = "arrow"
- force = 10
- sharpness = IS_SHARP
- projectile_type = /obj/item/projectile/bullet/reusable/arrow
- caliber = "arrow"
-
-//quiver
-/obj/item/weapon/storage/backpack/quiver
- name = "quiver"
- desc = "A quiver for holding arrows."
- icon_state = "quiver"
- item_state = "quiver"
- storage_slots = 20
- can_hold = list(
- /obj/item/ammo_casing/caseless/arrow
- )
-
-/obj/item/weapon/storage/backpack/quiver/full/New()
- ..()
- for(var/i in 1 to storage_slots)
- new /obj/item/ammo_casing/caseless/arrow(src)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 5a30677cc7..528c33e631 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -203,7 +203,7 @@
direct_target.bullet_act(src, def_zone)
qdel(src)
return
- if(setAngle)
+ if(isnum(setAngle))
Angle = setAngle
var/old_pixel_x = pixel_x
var/old_pixel_y = pixel_y
@@ -223,10 +223,10 @@
Angle=round(Get_Angle(src,current))
if(spread)
Angle += (rand() - 0.5) * spread
- var/matrix/M = new
if(!nondirectional_sprite)
+ var/matrix/M = new
M.Turn(Angle)
- transform = M
+ transform = M
var/Pixel_x=round((sin(Angle)+16*sin(Angle)*2), 1) //round() is a floor operation when only one argument is supplied, we don't want that here
var/Pixel_y=round((cos(Angle)+16*cos(Angle)*2), 1)
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 6a2ea8bb40..844a8a4662 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -74,7 +74,7 @@
/obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE)
. = ..()
- if(isturf(target) || istype(target,/obj/structure/))
+ if(isturf(target) || istype(target, /obj/structure/))
target.ex_act(EXPLODE_HEAVY)
/obj/item/projectile/beam/pulse/shot
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 0a49351665..7a1c12639f 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -68,10 +68,7 @@
damage = 0
damage_type = OXY
nodamage = 1
- var/list/door_types = list(/obj/structure/mineral_door/wood,/obj/structure/mineral_door/iron,/obj/structure/mineral_door/silver,\
- /obj/structure/mineral_door/gold,/obj/structure/mineral_door/uranium,/obj/structure/mineral_door/sandstone,/obj/structure/mineral_door/transparent/plasma,\
- /obj/structure/mineral_door/transparent/diamond)
-
+ var/list/door_types = list(/obj/structure/mineral_door/wood, /obj/structure/mineral_door/iron, /obj/structure/mineral_door/silver, /obj/structure/mineral_door/gold, /obj/structure/mineral_door/uranium, /obj/structure/mineral_door/sandstone, /obj/structure/mineral_door/transparent/plasma, /obj/structure/mineral_door/transparent/diamond)
/obj/item/projectile/magic/door/on_hit(atom/target)
. = ..()
@@ -89,7 +86,7 @@
D.Open()
/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D)
- if(istype(D,/obj/machinery/door/airlock))
+ if(istype(D, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/A = D
A.locked = FALSE
D.open()
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 5d03806d39..9a2c12c03d 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -67,11 +67,3 @@
icon_state = "foamdart_riot_proj"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25
-
-/obj/item/projectile/bullet/reusable/arrow
- name = "arrow"
- icon_state = "arrow"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- range = 10
- damage = 25
- damage_type = BRUTE
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index ab68dffc0b..85b357c774 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -46,10 +46,11 @@
var/list/this = list()
this["name"] = D.name
if(istype(D, /datum/disease/advance))
- var/datum/disease/advance/A = SSdisease.archive_diseases[D.GetDiseaseID()]
- if(A.name == "Unknown")
+ var/datum/disease/advance/A = D
+ var/datum/disease/advance/archived = SSdisease.archive_diseases[D.GetDiseaseID()]
+ if(archived.name == "Unknown")
this["can_rename"] = TRUE
- this["name"] = A.name
+ this["name"] = archived.name
this["is_adv"] = TRUE
this["resistance"] = A.totalResistance()
this["stealth"] = A.totalStealth()
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 944e03190f..a75a0851e5 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -43,11 +43,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
return ..() || .
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume)
- if(istype(O,/obj/item/weapon/paper))
+ if(istype(O, /obj/item/weapon/paper))
var/obj/item/weapon/paper/paperaffected = O
paperaffected.clearpaper()
to_chat(usr, "[paperaffected]'s ink washes away.")
- if(istype(O,/obj/item/weapon/book))
+ if(istype(O, /obj/item/weapon/book))
if(reac_volume >= 5)
var/obj/item/weapon/book/affectedbook = O
affectedbook.dat = null
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 56922316f5..4b9a4b8b39 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -686,7 +686,7 @@
taste_description = "dull toxin"
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
- var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
+ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
if (!eyes)
return
if(M.disabilities & BLIND)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index fb7b99ce4d..8708a22e1b 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -151,12 +151,12 @@
O.extinguish()
O.acid_level = 0
// Monkey cube
- if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
cube.Expand()
// Dehydrated carp
- else if(istype(O,/obj/item/toy/carpplushie/dehy_carp))
+ else if(istype(O, /obj/item/toy/carpplushie/dehy_carp))
var/obj/item/toy/carpplushie/dehy_carp/dehy = O
dehy.Swell() // Makes a carp
@@ -410,7 +410,7 @@
return
to_chat(H, "You crumple in agony as your flesh wildly morphs into new forms!")
H.visible_message("[H] falls to the ground and screams as [H.p_their()] skin bubbles and froths!") //'froths' sounds painful when used with SKIN.
- H.Knockdown(60, 0)
+ H.Knockdown(60)
addtimer(CALLBACK(src, .proc/mutate, H), 30)
return
@@ -932,7 +932,7 @@
taste_description = "sourness"
/datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume)
- if(istype(O,/obj/effect/decal/cleanable))
+ if(istype(O, /obj/effect/decal/cleanable))
qdel(O)
else
if(O)
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index f7640fd8e3..d0dadc271e 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -196,12 +196,12 @@
taste_mult = 1
/datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume)
- if(istype(O,/obj/structure/alien/weeds))
+ if(istype(O, /obj/structure/alien/weeds))
var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.take_damage(rand(15,35), BRUTE, 0) // Kills alien weeds pretty fast
- else if(istype(O,/obj/structure/glowshroom)) //even a small amount is enough to kill it
+ else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it
qdel(O)
- else if(istype(O,/obj/structure/spacevine))
+ else if(istype(O, /obj/structure/spacevine))
var/obj/structure/spacevine/SV = O
SV.on_chem_effect(src)
@@ -283,13 +283,17 @@
. = 1
..()
-/datum/reagent/toxin/chloralhydrate/delayed
+/datum/reagent/toxin/chloralhydratedelayed
+ name = "Chloral Hydrate"
id = "chloralhydrate2"
+ description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep."
+ reagent_state = SOLID
+ color = "#000067" // rgb: 0, 0, 103
+ toxpwr = 0
+ metabolization_rate = 1.5 * REAGENTS_METABOLISM
-/datum/reagent/toxin/chloralhydrate/delayed/on_mob_life(mob/living/M)
+/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/M)
switch(current_cycle)
- if(1 to 10)
- return
if(10 to 20)
M.confused += 1
M.drowsyness += 1
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 8cdae1123d..4151a2695e 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -291,7 +291,7 @@
results = list("blood" = 1)
required_reagents = list("virusfood" = 1)
required_catalysts = list("blood" = 1)
- var/level_min = 0
+ var/level_min = 1
var/level_max = 2
/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, created_volume)
@@ -406,6 +406,21 @@
if(D)
D.Devolve()
+/datum/chemical_reaction/mix_virus/neuter_virus
+
+ name = "Neuter Virus"
+ id = "neutervirus"
+ required_reagents = list("formaldehyde" = 1)
+ required_catalysts = list("blood" = 1)
+
+/datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume)
+
+ var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
+ if(B && B.data)
+ var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
+ if(D)
+ D.Neuter()
+
////////////////////////////////// foam and foam precursor ///////////////////////////////////////////////////
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index 37074b6d12..2325a9645e 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -101,6 +101,12 @@
icon_state = "bottle20"
list_reagents = list("synaptizine" = 30)
+/obj/item/weapon/reagent_containers/glass/bottle/formaldehyde
+ name = "formaldehyde bottle"
+ desc = "A small bottle of formaldehyde."
+ icon_state = "bottle20"
+ list_reagents = list("formaldehyde" = 30)
+
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle of ammonia."
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index a8845055c1..83de0ce3eb 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -101,7 +101,7 @@
else
to_chat(user, "[src] is already hotter than [I]!")
- if(istype(I,/obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
+ if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = I
if(reagents)
if(reagents.total_volume >= reagents.maximum_volume)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 4a0faea722..68781a5e45 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -112,14 +112,17 @@
to_chat(user, "[src] is empty.")
return
- if(!target.is_injectable())
+ if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
to_chat(user, "You cannot directly fill [target]!")
return
+
if(target.reagents.total_volume >= target.reagents.maximum_volume)
to_chat(user, "[target] is full.")
return
if(L) //living mob
+ if(!L.can_inject(user, TRUE))
+ return
if(L != user)
L.visible_message("[user] is trying to inject [L]!", \
"[user] is trying to inject [L]!")
diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm
index 975b9e1408..55528ff9fa 100644
--- a/code/modules/recycling/disposal-construction.dm
+++ b/code/modules/recycling/disposal-construction.dm
@@ -203,7 +203,7 @@
else
if(!is_pipe()) // Disposal or outlet
if(CP) // There's something there
- if(!istype(CP,/obj/structure/disposalpipe/trunk))
+ if(!istype(CP, /obj/structure/disposalpipe/trunk))
to_chat(user, "The [nicetype] requires a trunk underneath it in order to work!")
return
else // Nothing under, fuck.
diff --git a/code/modules/recycling/disposal-structures.dm b/code/modules/recycling/disposal-structures.dm
index af31bd9760..ff632f1f6c 100644
--- a/code/modules/recycling/disposal-structures.dm
+++ b/code/modules/recycling/disposal-structures.dm
@@ -700,7 +700,7 @@
playsound(src.loc, I.usesound, 50, 1)
to_chat(user, "You attach the screws around the power connection.")
- else if(istype(I,/obj/item/weapon/weldingtool) && mode==1)
+ else if(istype(I, /obj/item/weapon/weldingtool) && mode==1)
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/welder2.ogg', 100, 1)
diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm
index 806fa8103c..0537380b20 100644
--- a/code/modules/recycling/disposal-unit.dm
+++ b/code/modules/recycling/disposal-unit.dm
@@ -82,7 +82,7 @@
playsound(get_turf(src), I.usesound, 50, 1)
to_chat(user, "You [panel_open ? "remove":"attach"] the screws around the power connection.")
return
- else if(istype(I,/obj/item/weapon/weldingtool) && panel_open)
+ else if(istype(I, /obj/item/weapon/weldingtool) && panel_open)
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/welder2.ogg', 100, 1)
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index ae5449d90f..132ebdf8fd 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -89,7 +89,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
/obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user)
- if(istype(O,/obj/item/stack/sheet))
+ if(istype(O, /obj/item/stack/sheet))
. = 1
if(!is_insertion_ready(user))
return
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 0f267aa311..8b90339b02 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -387,3 +387,35 @@
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/weapon/implantcase/track
category = list("Medical Designs")
+
+//Cybernetic organs
+
+/datum/design/cybernetic_liver
+ name = "Cybernetic Liver"
+ desc = "A cybernetic liver"
+ id = "cybernetic_liver"
+ req_tech = list("biotech" = 4, "materials" = 4)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 500, MAT_GLASS = 500)
+ build_path = /obj/item/organ/liver/cybernetic
+ category = list("Medical Designs")
+
+/datum/design/cybernetic_heart
+ name = "Cybernetic Heart"
+ desc = "A cybernetic heart"
+ id = "cybernetic_heart"
+ req_tech = list("biotech" = 4, "materials" = 4)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 500, MAT_GLASS = 500)
+ build_path = /obj/item/organ/heart/cybernetic
+ category = list("Medical Designs")
+
+/datum/design/cybernetic_liver_u
+ name = "Upgraded Cybernetic Liver"
+ desc = "An upgraded cybernetic liver"
+ id = "cybernetic_liver_u"
+ req_tech = list("biotech" = 5, "materials" = 5, "plasmatech" = 5)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 500, MAT_GLASS = 500)
+ build_path = /obj/item/organ/liver/cybernetic/upgraded
+ category = list("Medical Designs")
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 9ad6d10d85..23b9ad00c8 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -59,24 +59,24 @@
/obj/machinery/r_n_d/experimentor/proc/SetTypeReactions()
var/probWeight = 0
for(var/I in typesof(/obj/item))
- if(istype(I,/obj/item/weapon/relic))
+ if(istype(I, /obj/item/weapon/relic))
item_reactions["[I]"] = SCANTYPE_DISCOVER
else
item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
- if(ispath(I,/obj/item/weapon/stock_parts) || ispath(I,/obj/item/weapon/grenade/chem_grenade) || ispath(I,/obj/item/weapon/kitchen))
+ if(ispath(I, /obj/item/weapon/stock_parts) || ispath(I, /obj/item/weapon/grenade/chem_grenade) || ispath(I, /obj/item/weapon/kitchen))
var/obj/item/tempCheck = I
if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way
valid_items += 15
valid_items += I
probWeight++
- if(ispath(I,/obj/item/weapon/reagent_containers/food))
+ if(ispath(I, /obj/item/weapon/reagent_containers/food))
var/obj/item/tempCheck = I
if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way
valid_items += rand(1,max(2,35-probWeight))
valid_items += I
- if(ispath(I,/obj/item/weapon/construction/rcd) || ispath(I,/obj/item/weapon/grenade) || ispath(I,/obj/item/device/aicard) || ispath(I,/obj/item/weapon/storage/backpack/holding) || ispath(I,/obj/item/slime_extract) || ispath(I,/obj/item/device/onetankbomb) || ispath(I,/obj/item/device/transfer_valve))
+ if(ispath(I, /obj/item/weapon/construction/rcd) || ispath(I, /obj/item/weapon/grenade) || ispath(I, /obj/item/device/aicard) || ispath(I, /obj/item/weapon/storage/backpack/holding) || ispath(I, /obj/item/slime_extract) || ispath(I, /obj/item/device/onetankbomb) || ispath(I, /obj/item/device/transfer_valve))
var/obj/item/tempCheck = I
if(initial(tempCheck.icon_state) != null)
critical_items += I
@@ -111,7 +111,7 @@
/obj/machinery/r_n_d/experimentor/proc/checkCircumstances(obj/item/O)
//snowflake check to only take "made" bombs
- if(istype(O,/obj/item/device/transfer_valve))
+ if(istype(O, /obj/item/device/transfer_valve))
var/obj/item/device/transfer_valve/T = O
if(!T.tank_one || !T.tank_two || !T.attached_device)
return FALSE
@@ -163,7 +163,7 @@
dat += " Burn"
dat += " Freeze"
dat += " Destroy "
- if(istype(loaded_item,/obj/item/weapon/relic))
+ if(istype(loaded_item, /obj/item/weapon/relic))
dat += " Discover "
dat += " Eject"
else
@@ -282,7 +282,7 @@
loaded_item = new newPath(src)
visible_message("[src] malfunctions, transforming [savedName] into [loaded_item]!")
investigate_log("Experimentor has transformed [savedName] into [loaded_item]", INVESTIGATE_EXPERIMENTOR)
- if(istype(loaded_item,/obj/item/weapon/grenade/chem_grenade))
+ if(istype(loaded_item, /obj/item/weapon/grenade/chem_grenade))
var/obj/item/weapon/grenade/chem_grenade/CG = loaded_item
CG.prime()
ejectItem()
@@ -658,7 +658,7 @@
to_chat(user, message)
var/animals = rand(1,25)
var/counter
- var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/hostile/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/dog/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp)
+ var/list/valid_animals = list(/mob/living/simple_animal/parrot, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/crab, /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/hostile/lizard, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/poison/bees, /mob/living/simple_animal/hostile/carp)
for(counter = 1; counter < animals; counter++)
var/mobType = pick(valid_animals)
new mobType(get_turf(src))
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index e2d8a64958..cf36768049 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -47,7 +47,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/sync = 1 //If sync = 0, it doesn't show up on Server Control Console
var/first_use = 1 //If first_use = 1, it will try to auto-connect with nearby devices
- req_access = list(GLOB.access_tox) //Data and setting manipulation requires scientist access.
+ req_access = list(ACCESS_TOX) //DATA AND SETTING MANIPULATION REQUIRES SCIENTIST ACCESS.
var/selected_category
var/list/datum/design/matching_designs = list() //for the search function
@@ -321,7 +321,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
for(var/obj/I in linked_destroy.contents)
for(var/mob/M in I.contents)
M.death()
- if(istype(I,/obj/item/stack/sheet))//Only deconsturcts one sheet at a time instead of the entire stack
+ if(istype(I, /obj/item/stack/sheet))//Only deconsturcts one sheet at a time instead of the entire stack
var/obj/item/stack/sheet/S = I
if(S.amount > 1)
S.amount--
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 959818836d..7437db2694 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -12,7 +12,7 @@
var/heat_gen = 100
var/heating_power = 40000
var/delay = 10
- req_access = list(GLOB.access_rd) //Only the R&D can change server settings.
+ req_access = list(ACCESS_RD) //ONLY THE R&D CAN CHANGE SERVER SETTINGS.
/obj/machinery/r_n_d/server/Initialize()
. = ..()
diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm
index e7d4ce7940..3a3e788664 100644
--- a/code/modules/ruins/lavaland_ruin_code.dm
+++ b/code/modules/ruins/lavaland_ruin_code.dm
@@ -134,7 +134,7 @@
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper_s"
flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Continue your research as best you can, and try to keep a low profile. DON'T abandon the base without good cause. The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!"
- id_access_list = list(GLOB.access_syndicate)
+ id_access_list = list(ACCESS_SYNDICATE)
outfit = /datum/outfit/lavaland_syndicate
assignedrole = "Lavaland Syndicate"
diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
index d8624dec47..3bda50c221 100644
--- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
@@ -175,10 +175,12 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
else
message_admins("[user ? key_name_admin(user):"Unknown"] has released Legion!")
log_game("[user ? key_name(user):"Unknown"] released Legion.")
+
+ var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg')
for(var/mob/M in GLOB.player_list)
if(M.z == z)
to_chat(M, "Discordant whispers flood your mind in a thousand voices. Each one speaks your name, over and over. Something horrible has been released.")
- M.playsound_local(T, 'sound/creatures/legion_spawn.ogg', 100, FALSE, 0, FALSE, pressure_affected = FALSE)
+ M.playsound_local(T, null, 100, FALSE, 0, FALSE, pressure_affected = FALSE, S = legion_sound)
flash_color(M, flash_color = "#FF0000", flash_time = 50)
var/mutable_appearance/release_overlay = mutable_appearance('icons/effects/effects.dmi', "legiondoor")
notify_ghosts("Legion has been released in the [get_area(src)]!", source = src, alert_overlay = release_overlay, action = NOTIFY_JUMP)
@@ -258,7 +260,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
if(falling || fallen)
return
var/turf/T = get_turf(src)
- if(!istype(T, /turf/open/floor/plating/lava) && !istype(T, /turf/open/chasm)) //nothing to sink or fall into
+ if(!istype(T, /turf/open/lava) && !istype(T, /turf/open/chasm)) //nothing to sink or fall into
return
var/obj/item/I
if(istype(AM, /obj/item))
diff --git a/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm b/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm
index 669890a279..06fb2b9c04 100644
--- a/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm
+++ b/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm
@@ -4,7 +4,8 @@
name = "lava baseturf editor"
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
- var/baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
+ var/baseturf = /turf/open/lava/smooth/lava_land_surface
+ layer = POINT_LAYER
/obj/effect/baseturf_helper/Initialize()
. = ..()
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 288ff7ad74..0567ee5d51 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -10,7 +10,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
idle_power_usage = 2
active_power_usage = 6
power_channel = ENVIRON
- req_access = list(GLOB.access_keycard_auth)
+ req_access = list(ACCESS_KEYCARD_AUTH)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/datum/callback/ev
var/event = ""
diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm
index 25dfa13597..b8d9381445 100644
--- a/code/modules/shuttle/arrivals.dm
+++ b/code/modules/shuttle/arrivals.dm
@@ -1,3 +1,4 @@
+
/obj/docking_port/mobile/arrivals
name = "arrivals shuttle"
id = "arrivals"
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 6b759dbabe..62e16144a0 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -63,7 +63,7 @@
to_chat(user, "You don't have an ID.")
return
- if(!(GLOB.access_heads in ID.access))
+ if(!(ACCESS_HEADS in ID.access))
to_chat(user, "The access level of your card is not high enough.")
return
@@ -525,6 +525,7 @@
new /obj/item/weapon/pickaxe/emergency(src)
new /obj/item/weapon/pickaxe/emergency(src)
new /obj/item/weapon/survivalcapsule(src)
+ new /obj/item/weapon/storage/toolbox/emergency(src)
/obj/item/weapon/storage/pod/attackby(obj/item/weapon/W, mob/user, params)
return
diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm
index 8368fd58e5..2c96d65756 100644
--- a/code/modules/shuttle/ferry.dm
+++ b/code/modules/shuttle/ferry.dm
@@ -3,7 +3,7 @@
circuit = /obj/item/weapon/circuitboard/computer/ferry
shuttleId = "ferry"
possible_destinations = "ferry_home;ferry_away"
- req_access = list(GLOB.access_cent_general)
+ req_access = list(ACCESS_CENT_GENERAL)
var/aiControlDisabled = 1
@@ -20,7 +20,7 @@
var/last_request //prevents spamming admins
var/cooldown = 600
possible_destinations = "ferry_home;ferry_away"
- req_access = list(GLOB.access_cent_general)
+ req_access = list(ACCESS_CENT_GENERAL)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/machinery/computer/shuttle/ferry/request/Topic(href, href_list)
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index 237b42bd0f..ea1bcd583f 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -55,7 +55,7 @@ All ShuttleMove procs go here
new_open.copy_air_with_tile(src)
//Source turf changes
- ChangeTurf(turf_type, FALSE, TRUE, baseturf_type)
+ ChangeTurf(turf_type, baseturf_type, FALSE, TRUE)
return TRUE
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index d25fc4ab95..e15dc3f076 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -177,7 +177,7 @@
for(var/i in 1 to assigned_turfs.len)
var/turf/T = assigned_turfs[i]
if(T.type == turf_type)
- T.ChangeTurf(/turf/open/space,new_baseturf=/turf/open/space)
+ T.ChangeTurf(/turf/open/space,/turf/open/space)
T.flags |= UNUSED_TRANSIT_TURF
/obj/docking_port/stationary/transit/Destroy(force=FALSE)
@@ -385,7 +385,7 @@
var/turf_type = /turf/open/space
var/baseturf_type = /turf/open/space
- var/area_type = /area/space
+ var/underlying_area_type = /area/space
// If the shuttle is docked to a stationary port, restore its normal
// "empty" area and turf
if(current_dock)
@@ -394,28 +394,21 @@
if(current_dock.baseturf_type)
baseturf_type = current_dock.baseturf_type
if(current_dock.area_type)
- area_type = current_dock.area_type
+ underlying_area_type = current_dock.area_type
- var/list/shuttle_turfs = return_ordered_turfs(x, y, z, dir, area_type)
+ var/list/old_turfs = return_ordered_turfs(x, y, z, dir, area_type)
+ var/area/underlying_area = locate(underlying_area_type) in GLOB.sortedAreas
+ if(!underlying_area)
+ underlying_area = new underlying_area_type(null)
- //remove area surrounding docking port
- for(var/i in 1 to shuttle_areas.len)
- var/area/shuttle_area = shuttle_areas[i]
- if(shuttle_area.contents.len)
- var/area/underlying_area = locate("[area_type]")
- if(!underlying_area)
- underlying_area = new area_type(null)
- for(var/ii in shuttle_turfs)
- var/turf/T = shuttle_turfs[ii]
- var/area/old_area = T.loc
- underlying_area.contents += T
- T.change_area(old_area, underlying_area)
-
- for(var/i in shuttle_turfs)
- var/turf/T = i
- if(!T)
+ for(var/i in 1 to old_turfs.len)
+ var/turf/oldT = old_turfs[i]
+ if(!oldT)
continue
- T.empty(turf_type, baseturf_type)
+ var/area/old_area = oldT.loc
+ underlying_area.contents += oldT
+ oldT.change_area(old_area, underlying_area)
+ oldT.empty(turf_type, baseturf_type)
qdel(src, force=TRUE)
@@ -575,6 +568,7 @@
var/area/internal_area = thing
internal_area.afterShuttleMove() //areas
+ check_poddoors()
new_dock.last_dock_time = world.time
setDir(new_dock.dir)
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 169d936015..7a5f4936d9 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -149,7 +149,7 @@
/mob/living/simple_animal/drone/snowflake/bardrone/Initialize()
. = ..()
- access_card.access |= GLOB.access_cent_bar
+ access_card.access |= ACCESS_CENT_BAR
/mob/living/simple_animal/hostile/alien/maid/barmaid
gold_core_spawnable = 0
@@ -167,7 +167,7 @@
access_card = new /obj/item/weapon/card/id(src)
var/datum/job/captain/C = new /datum/job/captain
access_card.access = C.get_access()
- access_card.access |= GLOB.access_cent_bar
+ access_card.access |= ACCESS_CENT_BAR
access_card.flags |= NODROP
/mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy()
@@ -207,7 +207,7 @@
return TRUE
var/obj/item/weapon/card/id/ID = user.get_idcard()
- if(ID && (GLOB.access_cent_bar in ID.access))
+ if(ID && (ACCESS_CENT_BAR in ID.access))
return TRUE
//Luxury Shuttle Blockers
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index c0d3714acf..07a0d0bcee 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -16,7 +16,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/structure/recieving_pad,
/obj/effect/clockwork/spatial_gateway,
/obj/structure/destructible/clockwork/powered/clockwork_obelisk,
- /obj/item/device/warp_cube
+ /obj/item/device/warp_cube,
+ /obj/machinery/r_n_d/protolathe, //print tracking beacons, send shuttle
+ /obj/machinery/autolathe, //same
+ /obj/item/projectile/beam/wormhole,
+ /obj/effect/portal,
+ /obj/item/device/shared_storage
)))
/obj/docking_port/mobile/supply
diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm
index 57a8ffd7ef..47eb22c397 100644
--- a/code/modules/shuttle/syndicate.dm
+++ b/code/modules/shuttle/syndicate.dm
@@ -6,7 +6,7 @@
icon_screen = "syndishuttle"
icon_keyboard = "syndie_key"
light_color = LIGHT_COLOR_RED
- req_access = list(GLOB.access_syndicate)
+ req_access = list(ACCESS_SYNDICATE)
shuttleId = "syndicate"
possible_destinations = "syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -44,7 +44,7 @@
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_available"
light_color = LIGHT_COLOR_BLUE
- req_access = list(GLOB.access_syndicate)
+ req_access = list(ACCESS_SYNDICATE)
shuttleId = "steel_rain"
possible_destinations = null
clockwork = TRUE //it'd look weird
diff --git a/code/modules/spells/spell_types/barnyard.dm b/code/modules/spells/spell_types/barnyard.dm
index d21b54b070..f026cd1483 100644
--- a/code/modules/spells/spell_types/barnyard.dm
+++ b/code/modules/spells/spell_types/barnyard.dm
@@ -12,7 +12,7 @@
range = 7
cooldown_min = 30
selection_type = "range"
- var/list/compatible_mobs = list(/mob/living/carbon/human,/mob/living/carbon/monkey)
+ var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
action_icon_state = "barn"
diff --git a/code/modules/spells/spell_types/charge.dm b/code/modules/spells/spell_types/charge.dm
index 9cc3e3b5a8..5f5547c281 100644
--- a/code/modules/spells/spell_types/charge.dm
+++ b/code/modules/spells/spell_types/charge.dm
@@ -55,7 +55,7 @@
I.max_charges = 0
burnt_out = 1
I.charges = I.max_charges
- if(istype(item,/obj/item/weapon/gun/magic/wand) && I.max_charges != 0)
+ if(istype(item, /obj/item/weapon/gun/magic/wand) && I.max_charges != 0)
var/obj/item/weapon/gun/magic/W = item
W.icon_state = initial(W.icon_state)
I.recharge_newshot()
@@ -84,7 +84,7 @@
C.maxcharge = 1
burnt_out = 1
C.charge = C.maxcharge
- if(istype(C.loc,/obj/item/weapon/gun))
+ if(istype(C.loc, /obj/item/weapon/gun))
var/obj/item/weapon/gun/G = C.loc
G.process_chamber()
item.update_icon()
diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm
index 3985328827..bc88dacf7d 100644
--- a/code/modules/spells/spell_types/conjure.dm
+++ b/code/modules/spells/spell_types/conjure.dm
@@ -28,7 +28,7 @@
var/spawn_place = pick(targets)
if(summon_ignore_prev_spawn_points)
targets -= spawn_place
- if(ispath(summoned_object_type,/turf))
+ if(ispath(summoned_object_type, /turf))
var/turf/O = spawn_place
var/N = summoned_object_type
O.ChangeTurf(N)
diff --git a/code/modules/spells/spell_types/dumbfire.dm b/code/modules/spells/spell_types/dumbfire.dm
index 6e29b433c2..a028ec36bd 100644
--- a/code/modules/spells/spell_types/dumbfire.dm
+++ b/code/modules/spells/spell_types/dumbfire.dm
@@ -44,7 +44,7 @@
if(istext(proj_type))
var/projectile_type = text2path(proj_type)
projectile = new projectile_type(user)
- else if(istype(proj_type,/obj/effect/proc_holder/spell))
+ else if(istype(proj_type, /obj/effect/proc_holder/spell))
projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user)
var/obj/effect/proc_holder/spell/targeted/trigger/T = projectile
T.linked_spells += proj_type
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 0442b2c02a..bc5ce48c7b 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -131,7 +131,7 @@
lich.real_name = mind.name
mind.transfer_to(lich)
mind.grab_ghost(force=TRUE)
- lich.hardset_dna(null,null,lich.real_name,null,/datum/species/skeleton)
+ lich.hardset_dna(null,null,lich.real_name,null, /datum/species/skeleton)
to_chat(lich, "Your bones clatter and shutter as you are pulled back into this world!")
var/turf/body_turf = get_turf(old_body)
lich.Knockdown(200 + 200*resurrections)
diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm
index a30c77b637..fafb8afde6 100644
--- a/code/modules/spells/spell_types/mind_transfer.dm
+++ b/code/modules/spells/spell_types/mind_transfer.dm
@@ -17,7 +17,7 @@
/*
Urist: I don't feel like figuring out how you store object spells so I'm leaving this for you to do.
-Make sure spells that are removed from spell_list are actually removed and deleted when mind transfering.
+Make sure spells that are removed from spell_list are actually removed and deleted when mind transferring.
Also, you never added distance checking after target is selected. I've went ahead and did that.
*/
/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets, mob/living/user = usr, distanceoverride)
diff --git a/code/modules/spells/spell_types/projectile.dm b/code/modules/spells/spell_types/projectile.dm
index 74afd90ef2..1a682639eb 100644
--- a/code/modules/spells/spell_types/projectile.dm
+++ b/code/modules/spells/spell_types/projectile.dm
@@ -36,7 +36,7 @@
if(istext(proj_type))
var/projectile_type = text2path(proj_type)
projectile = new projectile_type(user)
- if(istype(proj_type,/obj/effect/proc_holder/spell))
+ if(istype(proj_type, /obj/effect/proc_holder/spell))
projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user)
var/obj/effect/proc_holder/spell/targeted/trigger/T = projectile
T.linked_spells += proj_type
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index 90c7730f5a..74490fea28 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -86,7 +86,7 @@
break
else
- if(istype(item_to_retrieve.loc,/obj/machinery/portable_atmospherics/)) //Edge cases for moved machinery
+ if(istype(item_to_retrieve.loc, /obj/machinery/portable_atmospherics/)) //Edge cases for moved machinery
var/obj/machinery/portable_atmospherics/P = item_to_retrieve.loc
P.disconnect()
P.update_icon()
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index 9ce3d28070..074c206c1f 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -73,11 +73,11 @@
if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/M = W
if(M.buffer)
- if(istype(M.buffer,/obj/machinery/bsa/back))
+ if(istype(M.buffer, /obj/machinery/bsa/back))
back = M.buffer
M.buffer = null
to_chat(user, "You link [src] with [back].")
- else if(istype(M.buffer,/obj/machinery/bsa/front))
+ else if(istype(M.buffer, /obj/machinery/bsa/front))
front = M.buffer
M.buffer = null
to_chat(user, "You link [src] with [front].")
@@ -291,17 +291,17 @@
/obj/machinery/computer/bsa_control/proc/get_target_name()
- if(istype(target,/area))
+ if(istype(target, /area))
var/area/A = target
return A.name
- else if(istype(target,/obj/item/device/gps))
+ else if(istype(target, /obj/item/device/gps))
var/obj/item/device/gps/G = target
return G.gpstag
/obj/machinery/computer/bsa_control/proc/get_impact_turf()
- if(istype(target,/area))
+ if(istype(target, /area))
return pick(get_area_turfs(target))
- else if(istype(target,/obj/item/device/gps))
+ else if(istype(target, /obj/item/device/gps))
return get_turf(target)
/obj/machinery/computer/bsa_control/proc/fire(mob/user)
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index ddcfaf08d1..55ae1cc2b0 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -80,7 +80,7 @@
if(!proximity || !target)
return
//tray plants
- if(istype(target,/obj/machinery/hydroponics))
+ if(istype(target, /obj/machinery/hydroponics))
var/obj/machinery/hydroponics/H = target
if(!H.myseed)
return
@@ -94,7 +94,7 @@
to_chat(user, "Plant data added to local storage.")
//animals
- var/static/list/non_simple_animals = typecacheof(list(/mob/living/carbon/monkey,/mob/living/carbon/alien))
+ var/static/list/non_simple_animals = typecacheof(list(/mob/living/carbon/monkey, /mob/living/carbon/alien))
if(isanimal(target) || is_type_in_typecache(target,non_simple_animals))
if(isanimal(target))
var/mob/living/simple_animal/A = target
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index d93fc658dd..b239e39576 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -306,7 +306,7 @@
else
limb.icon_state = "[animal_origin]_[body_zone]"
else
- limb.icon = 'icons/mob/augments.dmi'
+ limb.icon = 'icons/mob/augmentation/augments.dmi'
limb.icon_state = "[animal_origin]_[body_zone]"
return
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index 00a01e2d2e..c956380d20 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -165,27 +165,27 @@
/obj/item/bodypart/l_arm/robot/surplus
name = "surplus prosthetic left arm"
desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing."
- icon = 'icons/mob/surplus_augments.dmi'
+ icon = 'icons/mob/augmentation/surplus_augments.dmi'
icon_state = "l_arm"
max_damage = 20
/obj/item/bodypart/r_arm/robot/surplus
name = "surplus prosthetic right arm"
desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing."
- icon = 'icons/mob/surplus_augments.dmi'
+ icon = 'icons/mob/augmentation/surplus_augments.dmi'
icon_state = "r_arm"
max_damage = 20
/obj/item/bodypart/l_leg/robot/surplus
name = "surplus prosthetic left leg"
desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing."
- icon = 'icons/mob/surplus_augments.dmi'
+ icon = 'icons/mob/augmentation/surplus_augments.dmi'
icon_state = "l_leg"
max_damage = 20
/obj/item/bodypart/r_leg/robot/surplus
name = "surplus prosthetic right leg"
desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing."
- icon = 'icons/mob/surplus_augments.dmi'
+ icon = 'icons/mob/augmentation/surplus_augments.dmi'
icon_state = "r_leg"
max_damage = 20
diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm
index aaea6de1d5..caeb966d96 100644
--- a/code/modules/surgery/limb_augmentation.dm
+++ b/code/modules/surgery/limb_augmentation.dm
@@ -57,6 +57,7 @@
qdel(tool)
target.update_body_parts()
target.updatehealth()
+ target.update_hair()
add_logs(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]")
else
to_chat(user, "[target] has no organic [parse_zone(target_zone)] there!")
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 9c19826fc5..f8388a5dab 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -1,5 +1,6 @@
/obj/item/organ/heart
name = "heart"
+ desc = "I feel bad for the heartless bastard who lost this."
icon_state = "heart-on"
zone = "chest"
slot = "heart"
@@ -117,7 +118,7 @@
//You are now brea- pumping blood manually
/datum/action/item_action/organ_action/cursed_heart/Trigger()
. = ..()
- if(. && istype(target,/obj/item/organ/heart/cursed))
+ if(. && istype(target, /obj/item/organ/heart/cursed))
var/obj/item/organ/heart/cursed/cursed_heart = target
if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam
@@ -142,3 +143,12 @@
/datum/client_colour/cursed_heart_blood
priority = 100 //it's an indicator you're dieing, so it's very high priority
colour = "red"
+
+/obj/item/organ/heart/cybernetic
+ name = "cybernetic heart"
+ desc = "An electronic device designed to mimic the functions of an organic human heart. Offers no benefit over an organic heart other than being easy to make."
+ icon_state = "heart-c"
+ origin_tech = "biotech=5"
+
+/obj/item/organ/heart/cybernetic/emp_act()
+ Stop()
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index a1cdd40bfc..eae5e8aee8 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -64,3 +64,25 @@
icon_state = "pliver"
desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen."
+/obj/item/organ/liver/cybernetic
+ name = "cybernetic liver"
+ icon_state = "liver-c"
+ desc = "An electronic device designed to mimic the functions of a human liver. It has no benefits over an organic liver, but is easy to produce."
+ origin_tech = "biotech=4"
+
+/obj/item/organ/liver/cybernetic/upgraded
+ name = "upgraded cybernetic liver"
+ icon_state = "liver-c-u"
+ desc = "An upgraded version of the cybernetic liver, designed to improve upon organic livers. It is resistant to alcohol poisoning and is very robust at filtering toxins."
+ origin_tech = "biotech=6"
+ alcohol_tolerance = 0.001
+ maxHealth = 200 //double the health of a normal liver
+ toxTolerance = 15 //can shrug off up to 15u of toxins
+ toxLethality = 0.3 //20% less damage than a normal liver
+
+/obj/item/organ/liver/cybernetic/emp_act(severity)
+ switch(severity)
+ if(1)
+ damage+=100
+ if(2)
+ damage+=50
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 4a529409c9..f95e2cd996 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -15,13 +15,13 @@
slot = "lungs"
gender = PLURAL
w_class = WEIGHT_CLASS_NORMAL
- var/list/breathlevels = list("safe_oxygen_min" = 16,"safe_oxygen_max" = 0,"safe_co2_min" = 0,"safe_co2_max" = 10,
- "safe_toxins_min" = 0,"safe_toxins_max" = 0.05,"SA_para_min" = 1,"SA_sleep_min" = 5,"BZ_trip_balls_min" = 1)
//Breath damage
var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa
var/safe_oxygen_max = 0
+ var/safe_nitro_min = 0
+ var/safe_nitro_max = 0
var/safe_co2_min = 0
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
var/safe_toxins_min = 0
@@ -30,16 +30,41 @@
var/SA_sleep_min = 5 //Sleeping agent
var/BZ_trip_balls_min = 1 //BZ gas.
- var/oxy_breath_dam_min = 1
- var/oxy_breath_dam_max = 10
- var/co2_breath_dam_min = 1
- var/co2_breath_dam_max = 10
- var/tox_breath_dam_min = MIN_PLASMA_DAMAGE
- var/tox_breath_dam_max = MAX_PLASMA_DAMAGE
+ var/oxy_breath_dam_min = MIN_TOXIC_GAS_DAMAGE
+ var/oxy_breath_dam_max = MAX_TOXIC_GAS_DAMAGE
+ var/oxy_damage_type = OXY
+ var/nitro_breath_dam_min = MIN_TOXIC_GAS_DAMAGE
+ var/nitro_breath_dam_max = MAX_TOXIC_GAS_DAMAGE
+ var/nitro_damage_type = OXY
+ var/co2_breath_dam_min = MIN_TOXIC_GAS_DAMAGE
+ var/co2_breath_dam_max = MAX_TOXIC_GAS_DAMAGE
+ var/co2_damage_type = OXY
+ var/tox_breath_dam_min = MIN_TOXIC_GAS_DAMAGE
+ var/tox_breath_dam_max = MAX_TOXIC_GAS_DAMAGE
+ var/tox_damage_type = TOX
+
+ var/cold_message = "your face freezing and an icicle forming"
+ var/cold_level_1_threshold = 260
+ var/cold_level_2_threshold = 200
+ var/cold_level_3_threshold = 120
+ var/cold_level_1_damage = COLD_GAS_DAMAGE_LEVEL_1 //Keep in mind with gas damage levels, you can set these to be negative, if you want someone to heal, instead.
+ var/cold_level_2_damage = COLD_GAS_DAMAGE_LEVEL_2
+ var/cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3
+ var/cold_damage_type = BURN
+
+ var/hot_message = "your face burning and a searing heat"
+ var/heat_level_1_threshold = 360
+ var/heat_level_2_threshold = 400
+ var/heat_level_3_threshold = 1000
+ var/heat_level_1_damage = HEAT_GAS_DAMAGE_LEVEL_1
+ var/heat_level_2_damage = HEAT_GAS_DAMAGE_LEVEL_2
+ var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
+ var/heat_damage_type = BURN
+
+ var/crit_stabilizing_reagent = "epinephrine"
-
-/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, var/mob/living/carbon/human/H)
+/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H)
if((H.status_flags & GODMODE))
return
@@ -48,30 +73,33 @@
species_traits = H.dna.species.species_traits
if(!breath || (breath.total_moles() == 0))
- if(H.reagents.has_reagent("epinephrine"))
+ if(H.reagents.has_reagent(crit_stabilizing_reagent))
return
if(H.health >= HEALTH_THRESHOLD_CRIT)
H.adjustOxyLoss(HUMAN_MAX_OXYLOSS)
else if(!(NOCRITDAMAGE in species_traits))
H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
- H.failed_last_breath = 1
+ H.failed_last_breath = TRUE
if(safe_oxygen_min)
- H.throw_alert("oxy", /obj/screen/alert/oxy)
+ H.throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
else if(safe_toxins_min)
H.throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
else if(safe_co2_min)
H.throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
- return 0
+ else if(safe_nitro_min)
+ H.throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro)
+ return FALSE
var/gas_breathed = 0
var/list/breath_gases = breath.gases
- breath.assert_gases("o2", "plasma", "co2", "n2o", "bz")
+ breath.assert_gases("o2", "n2", "plasma", "co2", "n2o", "bz")
//Partial pressures in our breath
var/O2_pp = breath.get_breath_partial_pressure(breath_gases["o2"][MOLES])
+ var/N2_pp = breath.get_breath_partial_pressure(breath_gases["n2"][MOLES])
var/Toxins_pp = breath.get_breath_partial_pressure(breath_gases["plasma"][MOLES])
var/CO2_pp = breath.get_breath_partial_pressure(breath_gases["co2"][MOLES])
@@ -82,7 +110,7 @@
if(safe_oxygen_max)
if(O2_pp > safe_oxygen_max)
var/ratio = (breath_gases["o2"][MOLES]/safe_oxygen_max) * 10
- H.adjustOxyLoss(Clamp(ratio,oxy_breath_dam_min,oxy_breath_dam_max))
+ H.apply_damage_type(Clamp(ratio, oxy_breath_dam_min, oxy_breath_dam_max), oxy_damage_type)
H.throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy)
else
H.clear_alert("too_much_oxy")
@@ -90,20 +118,45 @@
//Too little oxygen!
if(safe_oxygen_min)
if(O2_pp < safe_oxygen_min)
- gas_breathed = handle_too_little_breath(H,O2_pp,safe_oxygen_min,breath_gases["o2"][MOLES])
- H.throw_alert("oxy", /obj/screen/alert/oxy)
+ gas_breathed = handle_too_little_breath(H, O2_pp, safe_oxygen_min, breath_gases["o2"][MOLES])
+ H.throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
else
- H.failed_last_breath = 0
- if(H.getOxyLoss())
- H.adjustOxyLoss(-5)
+ H.failed_last_breath = FALSE
+ H.adjustOxyLoss(-5)
gas_breathed = breath_gases["o2"][MOLES]
- H.clear_alert("oxy")
+ H.clear_alert("not_enough_oxy")
//Exhale
breath_gases["o2"][MOLES] -= gas_breathed
breath_gases["co2"][MOLES] += gas_breathed
gas_breathed = 0
+ //-- Nitrogen --//
+
+ //Too much nitrogen!
+ if(safe_nitro_max)
+ if(N2_pp > safe_nitro_max)
+ var/ratio = (breath_gases["n2"][MOLES]/safe_nitro_max) * 10
+ H.apply_damage_type(Clamp(ratio, nitro_breath_dam_min, nitro_breath_dam_max), nitro_damage_type)
+ H.throw_alert("too_much_nitro", /obj/screen/alert/too_much_nitro)
+ else
+ H.clear_alert("too_much_nitro")
+
+ //Too little nitrogen!
+ if(safe_nitro_min)
+ if(N2_pp < safe_nitro_min)
+ gas_breathed = handle_too_little_breath(H, N2_pp, safe_nitro_min, breath_gases["n2"][MOLES])
+ H.throw_alert("nitro", /obj/screen/alert/not_enough_nitro)
+ else
+ H.failed_last_breath = FALSE
+ H.adjustOxyLoss(-5)
+ gas_breathed = breath_gases["n2"][MOLES]
+ H.clear_alert("nitro")
+
+ //Exhale
+ breath_gases["n2"][MOLES] -= gas_breathed
+ breath_gases["co2"][MOLES] += gas_breathed
+ gas_breathed = 0
//-- CO2 --//
@@ -114,9 +167,9 @@
H.co2overloadtime = world.time
else if(world.time - H.co2overloadtime > 120)
H.Unconscious(60)
- H.adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business
+ H.apply_damage_type(3, co2_damage_type) // Lets hurt em a little, let them know we mean business
if(world.time - H.co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
- H.adjustOxyLoss(8)
+ H.apply_damage_type(8, co2_damage_type)
H.throw_alert("too_much_co2", /obj/screen/alert/too_much_co2)
if(prob(20)) // Lets give them some chance to know somethings not right though I guess.
H.emote("cough")
@@ -126,12 +179,12 @@
H.clear_alert("too_much_co2")
//Too little CO2!
- if(breathlevels["safe_co2_min"])
+ if(safe_co2_min)
if(CO2_pp < safe_co2_min)
- gas_breathed = handle_too_little_breath(H,CO2_pp, safe_co2_min,breath_gases["co2"][MOLES])
+ gas_breathed = handle_too_little_breath(H, CO2_pp, safe_co2_min, breath_gases["co2"][MOLES])
H.throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
else
- H.failed_last_breath = 0
+ H.failed_last_breath = FALSE
H.adjustOxyLoss(-5)
gas_breathed = breath_gases["co2"][MOLES]
H.clear_alert("not_enough_co2")
@@ -148,20 +201,19 @@
if(safe_toxins_max)
if(Toxins_pp > safe_toxins_max)
var/ratio = (breath_gases["plasma"][MOLES]/safe_toxins_max) * 10
- if(H.reagents)
- H.reagents.add_reagent("plasma", Clamp(ratio, tox_breath_dam_min, tox_breath_dam_max))
- H.throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
+ H.apply_damage_type(Clamp(ratio, tox_breath_dam_min, tox_breath_dam_max), tox_damage_type)
+ H.throw_alert("too_much_tox", /obj/screen/alert/too_much_tox)
else
- H.clear_alert("tox_in_air")
+ H.clear_alert("too_much_tox")
//Too little toxins!
if(safe_toxins_min)
if(Toxins_pp < safe_toxins_min)
- gas_breathed = handle_too_little_breath(H,Toxins_pp, safe_toxins_min, breath_gases["plasma"][MOLES])
+ gas_breathed = handle_too_little_breath(H, Toxins_pp, safe_toxins_min, breath_gases["plasma"][MOLES])
H.throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
else
- H.failed_last_breath = 0
+ H.failed_last_breath = FALSE
H.adjustOxyLoss(-5)
gas_breathed = breath_gases["plasma"][MOLES]
H.clear_alert("not_enough_tox")
@@ -199,50 +251,56 @@
handle_breath_temperature(breath, H)
breath.garbage_collect()
- return 1
+ return TRUE
-/obj/item/organ/lungs/proc/handle_too_little_breath(mob/living/carbon/human/H = null,breath_pp = 0, safe_breath_min = 0, true_pp = 0)
+/obj/item/organ/lungs/proc/handle_too_little_breath(mob/living/carbon/human/H = null, breath_pp = 0, safe_breath_min = 0, true_pp = 0)
. = 0
if(!H || !safe_breath_min) //the other args are either: Ok being 0 or Specifically handled.
- return 0
+ return FALSE
if(prob(20))
H.emote("gasp")
if(breath_pp > 0)
var/ratio = safe_breath_min/breath_pp
H.adjustOxyLoss(min(5*ratio, HUMAN_MAX_OXYLOSS)) // Don't fuck them up too fast (space only does HUMAN_MAX_OXYLOSS after all!
- H.failed_last_breath = 1
+ H.failed_last_breath = TRUE
. = true_pp*ratio/6
else
H.adjustOxyLoss(HUMAN_MAX_OXYLOSS)
- H.failed_last_breath = 1
+ H.failed_last_breath = TRUE
/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/H) // called by human/life, handles temperatures
- if(abs(310.15 - breath.temperature) > 50)
+ var/breath_temperature = breath.temperature
- var/species_traits = list()
- if(H && H.dna && H.dna.species && H.dna.species.species_traits)
- species_traits = H.dna.species.species_traits
+ var/species_traits = list()
+ if(H && H.dna && H.dna.species && H.dna.species.species_traits)
+ species_traits = H.dna.species.species_traits
- if(!(GLOB.mutations_list[COLDRES] in H.dna.mutations) && !(RESISTCOLD in species_traits)) // COLD DAMAGE
- switch(breath.temperature)
- if(-INFINITY to 120)
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head")
- if(120 to 200)
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head")
- if(200 to 260)
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head")
+ if(!(GLOB.mutations_list[COLDRES] in H.dna.mutations) && !(RESISTCOLD in species_traits)) // COLD DAMAGE
+ var/cold_modifier = H.dna.species.coldmod
+ if(breath_temperature < cold_level_3_threshold)
+ H.apply_damage_type(cold_level_3_damage*cold_modifier, cold_damage_type)
+ if(breath_temperature > cold_level_3_threshold && breath_temperature < cold_level_2_threshold)
+ H.apply_damage_type(cold_level_2_damage*cold_modifier, cold_damage_type)
+ if(breath_temperature > cold_level_2_threshold && breath_temperature < cold_level_1_threshold)
+ H.apply_damage_type(cold_level_1_damage*cold_modifier, cold_damage_type)
+ if(breath_temperature < cold_level_1_threshold)
+ if(prob(20))
+ to_chat(H, "You feel [cold_message] in your [name]!")
- if(!(RESISTHOT in species_traits)) // HEAT DAMAGE
- switch(breath.temperature)
- if(360 to 400)
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head")
- if(400 to 1000)
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head")
- if(1000 to INFINITY)
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head")
+ if(!(RESISTHOT in species_traits)) // HEAT DAMAGE
+ var/heat_modifier = H.dna.species.heatmod
+ if(breath_temperature > heat_level_1_threshold && breath_temperature < heat_level_2_threshold)
+ H.apply_damage_type(heat_level_1_damage*heat_modifier, heat_damage_type)
+ if(breath_temperature > heat_level_2_threshold && breath_temperature < heat_level_3_threshold)
+ H.apply_damage_type(heat_level_2_damage*heat_modifier, heat_damage_type)
+ if(breath_temperature > heat_level_3_threshold)
+ H.apply_damage_type(heat_level_3_damage*heat_modifier, heat_damage_type)
+ if(breath_temperature > heat_level_1_threshold)
+ if(prob(20))
+ to_chat(H, "You feel [hot_message] in your [name]!")
/obj/item/organ/lungs/prepare_eat()
var/obj/S = ..()
diff --git a/code/modules/tgui/subsystem.dm b/code/modules/tgui/subsystem.dm
index c82936bf5d..c44c91c92b 100644
--- a/code/modules/tgui/subsystem.dm
+++ b/code/modules/tgui/subsystem.dm
@@ -225,7 +225,7 @@
/**
* private
*
- * Handle clients switching mobs, by transfering their UIs.
+ * Handle clients switching mobs, by transferring their UIs.
*
* required user source The client's original mob.
* required user target The client's new mob.
diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm
index 30318a64c2..7b455b7d80 100644
--- a/code/modules/uplink/uplink_item.dm
+++ b/code/modules/uplink/uplink_item.dm
@@ -647,7 +647,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once.
falls asleep, they will be able to move and act."
item = /obj/item/weapon/pen/sleepy
cost = 4
- exclude_modes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
+ exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang)
/datum/uplink_item/stealthy_weapons/soap
name = "Syndicate Soap"
diff --git a/code/modules/vehicles/bicycle.dm b/code/modules/vehicles/bicycle.dm
index d51de5809c..2d9b3c8258 100644
--- a/code/modules/vehicles/bicycle.dm
+++ b/code/modules/vehicles/bicycle.dm
@@ -13,12 +13,12 @@
/obj/vehicle/bicycle/buckle_mob(mob/living/M, force = 0, check_loc = 1)
if(prob(easter_egg_chance) || (SSevents.holidays && SSevents.holidays[APRIL_FOOLS]))
- M << sound(pick(bike_music), repeat = 1, wait = 0, volume = 80, channel = 42)
+ M << sound(pick(bike_music), repeat = 1, wait = 0, volume = 80, channel = CHANNEL_BICYCLE)
. = ..()
/obj/vehicle/bicycle/unbuckle_mob(mob/living/buckled_mob,force = 0)
if(buckled_mob)
- buckled_mob << sound(null, repeat = 0, wait = 0, volume = 80, channel = 42)
+ buckled_mob.stop_sound_channel(CHANNEL_BICYCLE)
. =..()
/obj/vehicle/bicycle/tesla_act() // :::^^^)))
diff --git a/code/world.dm b/code/world.dm
index 404f982adb..b6badeb348 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -5,10 +5,8 @@
view = "15x15"
cache_lifespan = 7
hub = "Exadv1.spacestation13"
- hub_password = "kMZy3U5jJHSiBQjr"
name = "/tg/ Station 13"
fps = 20
- visibility = 0
#ifdef GC_FAILURE_HARD_LOOKUP
loop_checks = FALSE
#endif
@@ -304,3 +302,12 @@
s += ": [jointext(features, ", ")]"
status = s
+
+/world/proc/update_hub_visibility(new_visibility)
+ if(new_visibility == GLOB.hub_visibility)
+ return
+ GLOB.hub_visibility = new_visibility
+ if(GLOB.hub_visibility)
+ hub_password = "kMZy3U5jJHSiBQjr"
+ else
+ hub_password = "SORRYNOPASSWORD"
diff --git a/goon/code/datums/browserOutput.dm b/goon/code/datums/browserOutput.dm
index d928397728..a6cabcba87 100644
--- a/goon/code/datums/browserOutput.dm
+++ b/goon/code/datums/browserOutput.dm
@@ -2,6 +2,9 @@
For the main html chat area
*********************************/
+#define BICON_X_MAX 96
+#define BICON_Y_MAX 96
+
//Precaching a bunch of shit
GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of icons for the browser output
@@ -188,6 +191,10 @@ GLOBAL_LIST_EMPTY(bicon_cache)
/proc/icon2base64(icon/icon, iconKey = "misc")
if (!isicon(icon))
return FALSE
+ //DOS exploit
+ if(icon.Width() > BICON_X_MAX || icon.Length() > BICON_Y_MAX)
+ return FALSE
+ //
GLOB.iconCache[iconKey] << icon
var/iconData = GLOB.iconCache.ExportText(iconKey)
var/list/partial = splittext(iconData, "{")
@@ -286,4 +293,4 @@ GLOBAL_LIST_EMPTY(bicon_cache)
return M.current.client
/datum/log //exists purely to capture to_chat() output
- var/log = ""
\ No newline at end of file
+ var/log = ""
diff --git a/html/changelogs/AutoChangeLog-pr-1986.yml b/html/changelogs/AutoChangeLog-pr-1986.yml
new file mode 100644
index 0000000000..ad49c4159c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1986.yml
@@ -0,0 +1,14 @@
+author: "XDTM"
+delete-after: True
+changes:
+ - experiment: "Viruses and symptoms have been havily reworked."
+ - rscadd: "Symptoms now have statistic thresholds, that give them new properties or improve their existing ones if the overall virus statistic is above the threshold. Check the pull request in github or the wiki (soon) for the full list."
+ - rscdel: "Some symptoms no longer scale linearly with stats, and instead have thresholds."
+ - tweak: "The symptom limit is now 6."
+ - rscdel: "Viruses can no longer be made invisible to the Pandemic"
+ - tweak: "Symptoms no longer trigger with a 5% chance every second, but instead have a minimum and maximum number of seconds between each activation, making them more consistent."
+ - rscdel: "The symptoms Blood Vomit and Projectile Vomit have been removed, and are now bonuses for the base Vomit symptom."
+ - rscdel: "The Weakness symptom has been removed as it was completely useless."
+ - tweak: "The Sensory Destruction symptom has been reworked into Narcolepsy, which causes drowsiness and sleep."
+ - tweak: "Viral Aggressive Metabolism now has a timer before it starts decaying the virus. It scales with the highest between Resistance or Stage Speed."
+ - rscadd: "You can now neuter symptoms, making them inactive. They will still affect stats. Adding formaldehyde to a virus will neuter a random symptom. A bottle of formaldehyde starts in the virus fridge."
diff --git a/html/changelogs/AutoChangeLog-pr-2054.yml b/html/changelogs/AutoChangeLog-pr-2054.yml
new file mode 100644
index 0000000000..79c1892cf6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2054.yml
@@ -0,0 +1,4 @@
+author: "Dannno/Supermichael777/InsaneHyena"
+delete-after: True
+changes:
+ - rscadd: "You can now pick from a few different styles when augmenting someone with robot parts by putting them in the augment manipulator. Alt+click to take parts out."
diff --git a/html/changelogs/AutoChangeLog-pr-2065.yml b/html/changelogs/AutoChangeLog-pr-2065.yml
new file mode 100644
index 0000000000..0e2c4e9e65
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2065.yml
@@ -0,0 +1,6 @@
+author: "Fox McCloud"
+delete-after: True
+changes:
+ - tweak: "breathing plasma now causes direct tox damage"
+ - tweak: "breathing hot/cold air now warns you when you're doing so, again"
+ - tweak: "species heat/cold mod now impacts damage from breathing hot/cold gases"
diff --git a/html/changelogs/AutoChangeLog-pr-2068.yml b/html/changelogs/AutoChangeLog-pr-2068.yml
new file mode 100644
index 0000000000..7f2b8243e7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2068.yml
@@ -0,0 +1,5 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Cyborgs now regenerate oxygen damage."
+ - bugfix: "If a cyborg somehow takes toxin damage, it can be healed with cables as though it was burn damage."
diff --git a/html/changelogs/AutoChangeLog-pr-2069.yml b/html/changelogs/AutoChangeLog-pr-2069.yml
new file mode 100644
index 0000000000..124ecc2a87
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2069.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - spellcheck: "Picking up ores by walking over them now longer spams messages, instead showing one message per tile of ore picked up."
diff --git a/html/changelogs/AutoChangeLog-pr-2073.yml b/html/changelogs/AutoChangeLog-pr-2073.yml
new file mode 100644
index 0000000000..11f89f7421
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2073.yml
@@ -0,0 +1,4 @@
+author: "Xhuis & MoreRobustThanYou"
+delete-after: True
+changes:
+ - imageadd: "Toolbelts now have overlays for crowbars, wirecutters, screwdrivers, multitools, and wrenches."
diff --git a/html/changelogs/AutoChangeLog-pr-2075.yml b/html/changelogs/AutoChangeLog-pr-2075.yml
new file mode 100644
index 0000000000..9ab87e9f66
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2075.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - bugfix: "Hijacking should now be possible again!"
diff --git a/html/changelogs/AutoChangeLog-pr-2083.yml b/html/changelogs/AutoChangeLog-pr-2083.yml
new file mode 100644
index 0000000000..76f5b83aef
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2083.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "delayed chloral hydrate actually works now."
diff --git a/html/changelogs/AutoChangeLog-pr-2085.yml b/html/changelogs/AutoChangeLog-pr-2085.yml
new file mode 100644
index 0000000000..5ff1020c4c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2085.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - tweak: "Re-enabled the custom emote for slimes."
diff --git a/html/changelogs/AutoChangeLog-pr-2086.yml b/html/changelogs/AutoChangeLog-pr-2086.yml
new file mode 100644
index 0000000000..6511bed053
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2086.yml
@@ -0,0 +1,4 @@
+author: "Joan"
+delete-after: True
+changes:
+ - tweak: "The blood-drunk miner will fire its KA a bit more often."
diff --git a/html/changelogs/AutoChangeLog-pr-2088.yml b/html/changelogs/AutoChangeLog-pr-2088.yml
new file mode 100644
index 0000000000..bc5d102b8c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2088.yml
@@ -0,0 +1,4 @@
+author: "HAL 9000"
+delete-after: True
+changes:
+ - bugfix: "I'm sorry Dave, I'm afraid I can't do that"
diff --git a/html/changelogs/AutoChangeLog-pr-2090.yml b/html/changelogs/AutoChangeLog-pr-2090.yml
new file mode 100644
index 0000000000..be21f5c4d0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2090.yml
@@ -0,0 +1,5 @@
+author: "Jay"
+delete-after: True
+changes:
+ - imageadd: "New PDA icons"
+ - bugfix: "fixes missing icons for PDAs"
diff --git a/html/changelogs/AutoChangeLog-pr-2091.yml b/html/changelogs/AutoChangeLog-pr-2091.yml
new file mode 100644
index 0000000000..b2078a5377
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2091.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Reviving Stasis now consistently regenerates organs."
diff --git a/html/changelogs/AutoChangeLog-pr-2093.yml b/html/changelogs/AutoChangeLog-pr-2093.yml
new file mode 100644
index 0000000000..d7b4af9427
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2093.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Mining satchels no longer hold infinite amounts of ore."
diff --git a/html/changelogs/AutoChangeLog-pr-2094.yml b/html/changelogs/AutoChangeLog-pr-2094.yml
new file mode 100644
index 0000000000..e74ec9d15f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2094.yml
@@ -0,0 +1,5 @@
+author: "BeeSting12"
+delete-after: True
+changes:
+ - rscdel: "Water bottles from the sustenance vendor are gone. Wait for the ice in the ice cups melt, criminal scum."
+ - rscdel: "There is no longer a sink in gulag. Hygiene is for the moral members of society."
diff --git a/html/changelogs/AutoChangeLog-pr-2098.yml b/html/changelogs/AutoChangeLog-pr-2098.yml
new file mode 100644
index 0000000000..a1c9c0326c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2098.yml
@@ -0,0 +1,5 @@
+author: "JStheguy"
+delete-after: True
+changes:
+ - imageadd: "Resprited the tablet, including completely redone screen sprites."
+ - rscadd: "Tablets can now come spawn in one of 5 colors; red, green, yellow, blue, and black."
diff --git a/html/changelogs/AutoChangeLog-pr-2099.yml b/html/changelogs/AutoChangeLog-pr-2099.yml
new file mode 100644
index 0000000000..d44b06e41d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2099.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Medibots now properly render the overlays of the medkits they are made from."
diff --git a/html/changelogs/AutoChangeLog-pr-2101.yml b/html/changelogs/AutoChangeLog-pr-2101.yml
new file mode 100644
index 0000000000..8be6bd4e31
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2101.yml
@@ -0,0 +1,5 @@
+author: "Joan"
+delete-after: True
+changes:
+ - tweak: "The Hierophant will now release a burst when melee attacking instead of actually hitting its target."
+ - bugfix: "The Hierophant Club's blasts will now properly aggro hostile mobs."
diff --git a/html/changelogs/AutoChangeLog-pr-2106.yml b/html/changelogs/AutoChangeLog-pr-2106.yml
new file mode 100644
index 0000000000..27356cd378
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2106.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - tweak: "Increased minimum timer for xenomorph event from 20 to 40min. Also increased minimum living, non-afk players required from 10 to 20."
diff --git a/html/changelogs/AutoChangeLog-pr-2110.yml b/html/changelogs/AutoChangeLog-pr-2110.yml
new file mode 100644
index 0000000000..14534a7ed6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2110.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "The latest batch of Syndicate screwdrivers fell into a vat of paint and were colored randomly. We have rinsed them off and they will no longer come in random colors."
diff --git a/html/changelogs/AutoChangeLog-pr-2111.yml b/html/changelogs/AutoChangeLog-pr-2111.yml
new file mode 100644
index 0000000000..e8fd2920c7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2111.yml
@@ -0,0 +1,5 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - rscadd: "Pizza box stacks can now fall over"
+ - imageadd: "Pizza box inhands now stacks depending on how many you're holding."
diff --git a/html/changelogs/AutoChangeLog-pr-2115.yml b/html/changelogs/AutoChangeLog-pr-2115.yml
new file mode 100644
index 0000000000..b43817a7cf
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2115.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Supermatter slivers can now be stolen properly."
diff --git a/html/changelogs/AutoChangeLog-pr-2119.yml b/html/changelogs/AutoChangeLog-pr-2119.yml
new file mode 100644
index 0000000000..6a412027d6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2119.yml
@@ -0,0 +1,5 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - tweak: "You can now control-click action buttons to lock them and prevent them from being moved. Alt-clicking the \"Show/Hide Actions\" button will unlock all buttons."
+ - tweak: "There is now a preference for if buttons should be locked by default or not."
diff --git a/html/changelogs/AutoChangeLog-pr-2120.yml b/html/changelogs/AutoChangeLog-pr-2120.yml
new file mode 100644
index 0000000000..197c992c6f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2120.yml
@@ -0,0 +1,4 @@
+author: "bandit"
+delete-after: True
+changes:
+ - rscadd: "New Cards against Spess cards are available!"
diff --git a/html/changelogs/AutoChangeLog-pr-2130.yml b/html/changelogs/AutoChangeLog-pr-2130.yml
new file mode 100644
index 0000000000..c464b9214b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2130.yml
@@ -0,0 +1,4 @@
+author: "Y0SH1_M4S73R"
+delete-after: True
+changes:
+ - bugfix: "Romerol zombies count as dead for assassinate and maroon objectives."
diff --git a/html/changelogs/AutoChangeLog-pr-2131.yml b/html/changelogs/AutoChangeLog-pr-2131.yml
new file mode 100644
index 0000000000..b9076f4a4a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2131.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - tweak: "Whenever you're trying to hack off your own limbs, you'll now always hit those limbs."
diff --git a/html/changelogs/AutoChangeLog-pr-2132.yml b/html/changelogs/AutoChangeLog-pr-2132.yml
new file mode 100644
index 0000000000..d788f4bee1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2132.yml
@@ -0,0 +1,4 @@
+author: "PopNotes"
+delete-after: True
+changes:
+ - soundadd: "Nar-Sie now sounds like an eldritch abomination that obliterates worlds instead of a sweet maiden that gently whispers sweet nothings in your ear."
diff --git a/html/changelogs/AutoChangeLog-pr-2133.yml b/html/changelogs/AutoChangeLog-pr-2133.yml
new file mode 100644
index 0000000000..a3df9c0374
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2133.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - bugfix: "The Subtle emote now properly cancels empty or cancelled emotes."
diff --git a/html/changelogs/AutoChangeLog-pr-2134.yml b/html/changelogs/AutoChangeLog-pr-2134.yml
new file mode 100644
index 0000000000..f16e873b5a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2134.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - tweak: "Rejoice deviants all over, as semen and other such... fluids now have a taste beyond \"Generic Food\"!"
diff --git a/html/changelogs/AutoChangeLog-pr-2135.yml b/html/changelogs/AutoChangeLog-pr-2135.yml
new file mode 100644
index 0000000000..59b11f3982
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2135.yml
@@ -0,0 +1,5 @@
+author: "Tacolizard"
+delete-after: True
+changes:
+ - rscadd: "Added cybernetic organs to RnD, they can be used to replace organic organs. Remember to administer corazone during implantation though!"
+ - rscadd: "Added the upgraded cybernetic liver. It is exceptionally robust against toxins and alcohol poisoning."
diff --git a/html/changelogs/AutoChangeLog-pr-2139.yml b/html/changelogs/AutoChangeLog-pr-2139.yml
new file mode 100644
index 0000000000..d3136b9b6f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2139.yml
@@ -0,0 +1,5 @@
+author: "Raeschen"
+delete-after: True
+changes:
+ - rscadd: "Added goodbyemoonmen.ogg to /strings/round_start_sounds.txt"
+ - soundadd: "Added sound/music/goodbyemoonmen.ogg"
diff --git a/html/changelogs/AutoChangeLog-pr-2140.yml b/html/changelogs/AutoChangeLog-pr-2140.yml
new file mode 100644
index 0000000000..eefbf05f4b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2140.yml
@@ -0,0 +1,5 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - rscadd: "A new objective is now available for traitors, where their target to assassinate has not yet arrived at the station."
+ - bugfix: "Random objective target that used to not be random now is."
diff --git a/html/changelogs/AutoChangeLog-pr-2142.yml b/html/changelogs/AutoChangeLog-pr-2142.yml
new file mode 100644
index 0000000000..79aed9e920
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2142.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Guns like sniper rifles now unzoom if you unequip them or move them to another hand."
diff --git a/html/changelogs/AutoChangeLog-pr-2145.yml b/html/changelogs/AutoChangeLog-pr-2145.yml
new file mode 100644
index 0000000000..e55ff2fbb5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2145.yml
@@ -0,0 +1,4 @@
+author: "BeeSting12"
+delete-after: True
+changes:
+ - tweak: "Janitor and service cyborgs now get pocket fire extinguishers for fire suppression and space propulsion."
diff --git a/html/changelogs/AutoChangeLog-pr-2147.yml b/html/changelogs/AutoChangeLog-pr-2147.yml
new file mode 100644
index 0000000000..2f712f1b5b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2147.yml
@@ -0,0 +1,4 @@
+author: "optional name here"
+delete-after: True
+changes:
+ - imageadd: "Updated PDA Icons as well as fix the missing ones/incorrectly used ones. (Art by Cecily & Toriate)"
diff --git a/html/changelogs/AutoChangeLog-pr-2151.yml b/html/changelogs/AutoChangeLog-pr-2151.yml
new file mode 100644
index 0000000000..75db215b0c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2151.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "Informs a person about how bomb cores work"
diff --git a/html/changelogs/AutoChangeLog-pr-2154.yml b/html/changelogs/AutoChangeLog-pr-2154.yml
new file mode 100644
index 0000000000..bb61e5cf17
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2154.yml
@@ -0,0 +1,4 @@
+author: "JStheguy"
+delete-after: True
+changes:
+ - imageadd: "Most alcohol bottles have been resprited, as well as a poster that used one of the current bottles as part of it's design."
diff --git a/html/changelogs/AutoChangeLog-pr-2161.yml b/html/changelogs/AutoChangeLog-pr-2161.yml
new file mode 100644
index 0000000000..2a65d07cc2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2161.yml
@@ -0,0 +1,4 @@
+author: "BeeSting12"
+delete-after: True
+changes:
+ - bugfix: "Crafting satchels from leather now makes a leather satchel rather than a regular satchel."
diff --git a/html/changelogs/AutoChangeLog-pr-2167.yml b/html/changelogs/AutoChangeLog-pr-2167.yml
new file mode 100644
index 0000000000..6052615429
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2167.yml
@@ -0,0 +1,4 @@
+author: "ktccd"
+delete-after: True
+changes:
+ - bugfix: "Ashstorms no longer pierces the protected people to kill anyone/anything in them."
diff --git a/html/changelogs/AutoChangeLog-pr-2168.yml b/html/changelogs/AutoChangeLog-pr-2168.yml
new file mode 100644
index 0000000000..90eb00b416
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2168.yml
@@ -0,0 +1,6 @@
+author: "ShizCalev"
+delete-after: True
+changes:
+ - bugfix: "Robust coffee is now even more robust! No longer will you be drinking frozen hot coffee!"
+ - bugfix: "Clockwork covenants and Ratvar will no longer go invisible by releasing a canister of freon!"
+ - bugfix: "Ratvar's summoning portal will no longer be permanently broken by freon."
diff --git a/html/changelogs/AutoChangeLog-pr-2169.yml b/html/changelogs/AutoChangeLog-pr-2169.yml
new file mode 100644
index 0000000000..1ec1927950
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2169.yml
@@ -0,0 +1,4 @@
+author: "FuryMcFlurry"
+delete-after: True
+changes:
+ - rscadd: "Added mummy, scarecrow, skeleton, and jester costumes. They don't spawn on the map yet, so make sure to beg the admins for them!"
diff --git a/html/changelogs/AutoChangeLog-pr-2170.yml b/html/changelogs/AutoChangeLog-pr-2170.yml
new file mode 100644
index 0000000000..baa827e813
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2170.yml
@@ -0,0 +1,4 @@
+author: "Fox McCloud"
+delete-after: True
+changes:
+ - rscadd: "Sound should carry further, but should get quieter and quieter the further you are from it"
diff --git a/html/changelogs/AutoChangeLog-pr-2173.yml b/html/changelogs/AutoChangeLog-pr-2173.yml
new file mode 100644
index 0000000000..efceb122be
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2173.yml
@@ -0,0 +1,6 @@
+author: "Joan"
+delete-after: True
+changes:
+ - tweak: "Sigils of Transmission can now drain power in a large area when activated by a Servant."
+ - rscdel: "Interdiction Lenses have been removed, as they were largely only used to drain power into Sigils of Transmission.
+balance: Sigils can no longer directly be removed by Servants."
diff --git a/html/changelogs/AutoChangeLog-pr-2184.yml b/html/changelogs/AutoChangeLog-pr-2184.yml
new file mode 100644
index 0000000000..a98deab3b8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2184.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - bugfix: "Syringes now properly inject targets wearing thick clothing on different slots."
diff --git a/html/changelogs/AutoChangeLog-pr-2186.yml b/html/changelogs/AutoChangeLog-pr-2186.yml
new file mode 100644
index 0000000000..43bb2fef87
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2186.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - spellcheck: "Player-controlled medibots now receive a notice whenever they try to heal someone with too high health."
diff --git a/html/changelogs/AutoChangeLog-pr-2189.yml b/html/changelogs/AutoChangeLog-pr-2189.yml
new file mode 100644
index 0000000000..2bdbc7d471
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2189.yml
@@ -0,0 +1,5 @@
+author: "Raeschen"
+delete-after: True
+changes:
+ - rscdel: "Removed a whole bunch of hivebots."
+ - rscadd: "Added stronger hivebots."
diff --git a/html/changelogs/AutoChangeLog-pr-2190.yml b/html/changelogs/AutoChangeLog-pr-2190.yml
new file mode 100644
index 0000000000..901dde7c7b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2190.yml
@@ -0,0 +1,4 @@
+author: "XDTM"
+delete-after: True
+changes:
+ - bugfix: "Eyes can now be properly damaged."
diff --git a/html/changelogs/AutoChangeLog-pr-2193.yml b/html/changelogs/AutoChangeLog-pr-2193.yml
new file mode 100644
index 0000000000..46988eaee1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2193.yml
@@ -0,0 +1,4 @@
+author: "Xhuis"
+delete-after: True
+changes:
+ - spellcheck: "Removed an improper period from the supermatter sliver theft objective's name."
diff --git a/html/changelogs/AutoChangeLog-pr-2196.yml b/html/changelogs/AutoChangeLog-pr-2196.yml
new file mode 100644
index 0000000000..736d98cb66
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2196.yml
@@ -0,0 +1,4 @@
+author: "Joan"
+delete-after: True
+changes:
+ - tweak: "Colossus's shotgun is now a static-spread blast of 6 bolts, making it more predictable."
diff --git a/icons/mob/augmentation/augments.dmi b/icons/mob/augmentation/augments.dmi
new file mode 100644
index 0000000000..a532348d6d
Binary files /dev/null and b/icons/mob/augmentation/augments.dmi differ
diff --git a/icons/mob/augmentation/augments_engineer.dmi b/icons/mob/augmentation/augments_engineer.dmi
new file mode 100644
index 0000000000..8aeaaf04e0
Binary files /dev/null and b/icons/mob/augmentation/augments_engineer.dmi differ
diff --git a/icons/mob/augmentation/augments_mining.dmi b/icons/mob/augmentation/augments_mining.dmi
new file mode 100644
index 0000000000..b79c54e9c8
Binary files /dev/null and b/icons/mob/augmentation/augments_mining.dmi differ
diff --git a/icons/mob/augmentation/augments_security.dmi b/icons/mob/augmentation/augments_security.dmi
new file mode 100644
index 0000000000..8f57f77c4b
Binary files /dev/null and b/icons/mob/augmentation/augments_security.dmi differ
diff --git a/icons/mob/augmentation/augments_standard.dmi b/icons/mob/augmentation/augments_standard.dmi
new file mode 100644
index 0000000000..a532348d6d
Binary files /dev/null and b/icons/mob/augmentation/augments_standard.dmi differ
diff --git a/icons/mob/surplus_augments.dmi b/icons/mob/augmentation/surplus_augments.dmi
similarity index 100%
rename from icons/mob/surplus_augments.dmi
rename to icons/mob/augmentation/surplus_augments.dmi
diff --git a/icons/mob/augments.dmi b/icons/mob/augments.dmi
deleted file mode 100644
index 7124c35105..0000000000
Binary files a/icons/mob/augments.dmi and /dev/null differ
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 94af51d6a7..2eab8fa78e 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 5feb604e3f..414d12d508 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index efd567f13a..e6c633294e 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/mob/mam_bodyparts.dmi b/icons/mob/mam_bodyparts.dmi
index a8e7137fed..c08cf0685a 100644
Binary files a/icons/mob/mam_bodyparts.dmi and b/icons/mob/mam_bodyparts.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index 24438f397a..70f994cdbe 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 2390c687d6..ef7f594c70 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/abductor.dmi b/icons/obj/abductor.dmi
index ac30dccb4f..21ab5cf9f5 100644
Binary files a/icons/obj/abductor.dmi and b/icons/obj/abductor.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 6e26c6d431..4f38022f88 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi
new file mode 100644
index 0000000000..07765f7d79
Binary files /dev/null and b/icons/obj/clothing/belt_overlays.dmi differ
diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi
index 2043111e60..473f2b8573 100644
Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 07aec2d23e..933410bbc5 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index c0f2d46f62..752a0a00ec 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index d936e41df4..77b62691d2 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index b977cc7661..90c60194d5 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi
index 771ab2edb3..f86dd2e7d0 100644
Binary files a/icons/obj/contraband.dmi and b/icons/obj/contraband.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 69f6c08711..ddb152152c 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi
index 68c192bec3..f95ce283d2 100644
Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 2860c16008..0939ae772c 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/icons/obj/modular_tablet.dmi b/icons/obj/modular_tablet.dmi
index 45f9400e4f..621874a969 100644
Binary files a/icons/obj/modular_tablet.dmi and b/icons/obj/modular_tablet.dmi differ
diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi
index f2758dafd1..5404b908c6 100644
Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
old mode 100644
new mode 100755
index 78657abe36..3753cc6e11
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi
index 8fc6a700da..4bc0e9116b 100644
Binary files a/icons/turf/decals.dmi and b/icons/turf/decals.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 28bc9e28d3..ee1d186509 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/sound/creatures/narsie_rises.ogg b/sound/creatures/narsie_rises.ogg
new file mode 100644
index 0000000000..ccd10cf115
Binary files /dev/null and b/sound/creatures/narsie_rises.ogg differ
diff --git a/sound/music/goodbyemoonmen.ogg b/sound/music/goodbyemoonmen.ogg
new file mode 100644
index 0000000000..3cf5d05c22
Binary files /dev/null and b/sound/music/goodbyemoonmen.ogg differ
diff --git a/strings/cas_black.txt b/strings/cas_black.txt
index 2e7c6fb407..b2087bd57a 100644
--- a/strings/cas_black.txt
+++ b/strings/cas_black.txt
@@ -13,7 +13,6 @@ If the Space Gods didn't want _________ they wouldn't have given us __________.
Why was the death squad sent in?
Current Active Laws: ________ is the only human.
Today, science found an anomaly that made people ____ and ____.
-______! Quick, call the shuttle!
______ has been detected on a collision course with the station.
Today's kitchen menu includes _____ stuffed with _____.
What's the Captain's fetish?
@@ -44,7 +43,7 @@ You can never have too many _____ on the station.
Why can't I find a space relationship?
The assistants gathered around the brig, with toolboxes and ___________.
Confirmed outbreak of _____ aboard the station.
-The AI Was horrified to discover security was executing prisoners via ________.
+The AI was horrified to discover security was executing prisoners via ________.
Attention crew: the word _____ is now a punishable offense.
The chemist cackled as he labeled ________ pills as __________.
The Space Wizard Federation has regrettably begun to summon _____.
@@ -102,4 +101,13 @@ What made the mime speak?
How do you get an assistant to assist?
What was I last brigged for?
Why does Security no longer use the gulag?
-Old versions of Space Law used to authorize __________.
\ No newline at end of file
+Old versions of Space Law used to authorize __________.
+Our new state-of-the-art station shield is made entirely of ________.
+What's the most terrifying thing about Lavaland?
+Listen. Recent _______ on this station left me very disappointed, OK?
+The auxiliary base was disabled after landing in the middle of _______.
+Xenobiologists have found slimes to be exceptionally responsive to _______.
+Why did the captain give me a medal?
+The curator's new exhibit is devoted solely to _________.
+There's no ______ on the new escape shuttle, but there is plenty of _________!
+What made me sell my soul to the devil?
\ No newline at end of file
diff --git a/strings/cas_white.txt b/strings/cas_white.txt
index d36f19ffe9..bc179f2bac 100644
--- a/strings/cas_white.txt
+++ b/strings/cas_white.txt
@@ -52,6 +52,7 @@ Walking mushroom cockfights.
Improper comdom use.
Greentext.
Coating the whole station in blood.
+Cock cultists.
Defusing a syndicate bomb with another bomb.
Going braindead mid-murder.
A petsplosion.
@@ -99,7 +100,7 @@ Inviting all the lizards onto the holodeck for a party.
A used corgi suit.
Saxing.
Carbon dioxide.
-Lewd alien abduction.
+Actually playing Cards Against Spess.
Warm donk pockets.
Fucking your own cloned body.
MULEbot manslaughter.
@@ -133,7 +134,6 @@ Suiciding with a fedora.
A MULEbot drag race.
Automatons.
Six max-cap bombs.
-Xenos pleasuring their victims with anal.
Forgetting you're a traitor.
Itching powder.
Some overpowered bullshit.
@@ -267,4 +267,30 @@ Wheelchair Ian.
An actually helpful assistant.
Mindbreaker toxin.
Legions of cyborg assholes.
-Homicidal chefs.
\ No newline at end of file
+Homicidal chefs.
+Extended.
+Grammar fascist gods.
+Cortical borers.
+A masochist in an ash storm.
+Draconic.
+Riding borgs, cowgirl style.
+The Voice of God.
+Overpowered stuns.
+Unironically reading library smut.
+Spiritual journeys with BZ.
+Freon.
+Deep-fried body parts.
+Suit sensor unit gas chambers.
+Moonlighting.
+Sex inside a mech.
+The philosophical complications of Asimov.
+A changeling monkeying itself mid-coitus.
+Swarmers.
+A fully-dressed CMO.
+The hardworking engineer.
+Skewium-induced orgasm.
+A salt overdose.
+Mindswap.
+Potassium in the toilet bowls.
+Giving head to the heads.
+A lizard wearing cat ears.
\ No newline at end of file
diff --git a/strings/round_start_sounds.txt b/strings/round_start_sounds.txt
index fdb23dc2da..620c4af537 100644
--- a/strings/round_start_sounds.txt
+++ b/strings/round_start_sounds.txt
@@ -18,3 +18,4 @@ sound/music/torvus.ogg
sound/music/shootingstars.ogg
sound/music/oceanman.ogg
sound/music/indeep.ogg
+sound/music/goodbyemoonmen.ogg
\ No newline at end of file
diff --git a/strings/tips.txt b/strings/tips.txt
index 954b4326fb..4d1a8aa28a 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -161,7 +161,7 @@ As a Servant, the Judicial Visor is an effective defensive combat tool in small
As a Servant, making, and protecting, Tinkerer's Caches is extremely important, as caches are required to unlock scripture and share components.
As a Servant, Ocular Wardens, while fragile, do very high, rapid damage to a target non-servant that can see them and will even attack mechs that contain heretics. Place them behind objects that don't block vision to get the most use out of them.
As a Servant, Clockwork Structures that require power will draw power from the APC if they cannot find a different source of power, and most power-using Structures will rapidly drain the APC.
-As a Servant, you can repair Servant cyborgs, Clockwork Constructs, and Clockwork Structures with a Clockwork Proselytizer at a rate of 25W power to 1 health.
+As a Servant, you can repair Servant cyborgs and Clockwork Structures with a Replica Fabricator at a rate of 25W power to 1 health. Damaged Clockwork Structures are less efficient, so don't forget to repair them!
As a Servant, securing a reliable source of component generation is high-priority, as simply handing out slabs will slowly become inefficient. Try placing Tinkerer's Caches near clockwork walls or creating and powering Tinkerer's Daemons.
As a Servant, only a single held Clockwork Slab will generate components, no matter how many you're holding. In addition, slabs will generate components slower with large amounts of servants; you can see the exact time with Recollection.
As a Servant, you can use Geis to easily convert single targets, as it binds them in place, preventing escape unless they react quickly enough. Having another Servant apply Geis to someone already bound will prevent their escape and mute them, even if they reacted quickly.
@@ -176,7 +176,7 @@ As a Servant, you can impale human targets with a Ratvarian Spear by pulling the
As a Servant, Sentinel's Compromise can instantly return you or another Servant to a fighting state by converting half of all their brute, burn, and oxygen damage to toxin, effectively halving the damage they have. Clockwork Floors will also rapidly heal toxin damage in Servants, allowing the Compromise more effectiveness.
As a Servant, Belligerent and Taunting Tirade are extremely powerful for disabling and disrupting large groups of enemies, though they render you somewhat vulnerable, as Belligerent requires that you stand still, and Taunting Tirade makes you extremely obvious.
As a Servant, Soul Vessels can be placed in cyborg shells, mecha, Cogscarab shells, and Anima Fragment shells.
-As a Servant, you can unwrench Clockwork Structures, but doing so will damage them, severely weakening them until repaired with a Proselytizer or Mending Mantra. Damage from other sources will also similarly weaken structures.
+As a Servant, you can unwrench Clockwork Structures to move them around.
You can deconvert Cultists of Nar-Sie and Servants of Ratvar by feeding them large amounts of holy water.
As a Wizard, you can turn people to stone, then animate the resulting statue with a staff of animation to create an extremely powerful minion, for all of 5 minutes at least.
As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways.
@@ -204,4 +204,4 @@ As a Ghost, you can see the inside of a container on the ground by clicking on i
As a Ghost, you can double click on people, bots, or the singularity to follow them.
As a Devil, you gain power for every three souls you control, however you also become more obvious.
As a Devil, as long as you control at least one other soul, you will automatically resurrect, as long as a banishment ritual is not performed.
-At which time a Devil's nameth is spake on the tongue of man, the Devil may appeareth.
\ No newline at end of file
+At which time a Devil's nameth is spake on the tongue of man, the Devil may appeareth.
diff --git a/strings/tips.txt.rej b/strings/tips.txt.rej
new file mode 100644
index 0000000000..42357417ac
--- /dev/null
+++ b/strings/tips.txt.rej
@@ -0,0 +1,19 @@
+diff a/strings/tips.txt b/strings/tips.txt (rejected hunks)
+@@ -161,7 +161,7 @@ As a Servant, the Judicial Visor is an effective defensive combat tool in small
+ As a Servant, making, and protecting, Tinkerer's Caches is extremely important, as caches are required to unlock scripture and share components.
+ As a Servant, Ocular Wardens, while fragile, do very high, rapid damage to a target non-Servant that can see them and will even attack mechs that contain heretics. Place them behind objects that don't block vision to get the most use out of them.
+ As a Servant, Clockwork Structures that require power will draw power from the APC if they cannot find a different source of power, and most power-using Structures will rapidly drain the APC.
+-As a Servant, you can repair Servant cyborgs and Clockwork Structures with a Replica Fabricator at a rate of 25W power to 1 health.
++As a Servant, you can repair Servant cyborgs and Clockwork Structures with a Replica Fabricator at a rate of 25W power to 1 health. Damaged Clockwork Structures are less efficient, so don't forget to repair them!
+ As a Servant, securing a reliable source of component generation is high-priority, as simply handing out slabs will slowly become inefficient. Try placing Tinkerer's Caches near clockwork walls or creating and powering Tinkerer's Daemons.
+ As a Servant, only a single held Clockwork Slab will generate components, no matter how many you're holding. In addition, slabs will generate components slower with large amounts of Servants; you can see the exact time with Recollection.
+ As a Servant, you can use Geis to easily convert single targets, as it binds them in place, preventing escape unless they react quickly enough. Having another Servant apply Geis to someone already bound will prevent their escape and mute them, even if they reacted quickly.
+@@ -174,7 +174,7 @@ As a Servant, creating and activating the Gateway to the Celestial Derelict is y
+ As a Servant, you can impale human targets with a Ratvarian Spear by pulling them, then attacking them. This does massive damage and stuns them, and should effectively win the fight.
+ As a Servant, Sentinel's Compromise can instantly return you or another Servant to a fighting state by converting half of all their brute, burn, and oxygen damage to toxin, effectively halving the damage they have. Clockwork Floors will also rapidly heal toxin damage in Servants, allowing the Compromise more effectiveness.
+ As a Servant, Belligerent and Taunting Tirade are extremely powerful for disabling and disrupting large groups of enemies, though they render you somewhat vulnerable, as Belligerent requires that you stand still, and Taunting Tirade makes you extremely obvious.
+-As a Servant, you can unwrench Clockwork Structures, but doing so will damage them, severely weakening them until repaired with a Replica Fabricator or Mending Mantra. Damage from other sources will also similarly weaken structures.
++As a Servant, you can unwrench Clockwork Structures to move them around.
+ You can deconvert Cultists of Nar-Sie and Servants of Ratvar by feeding them large amounts of holy water.
+ As a Wizard, you can turn people to stone, then animate the resulting statue with a staff of animation to create an extremely powerful minion, for all of 5 minutes at least.
+ As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways.
diff --git a/tgstation.dme b/tgstation.dme
index c76d71c104..c2d9554891 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -21,6 +21,7 @@
#include "code\__DATASTRUCTURES\linked_lists.dm"
#include "code\__DATASTRUCTURES\priority_queue.dm"
#include "code\__DATASTRUCTURES\stacks.dm"
+#include "code\__DEFINES\access.dm"
#include "code\__DEFINES\admin.dm"
#include "code\__DEFINES\antagonists.dm"
#include "code\__DEFINES\atmospherics.dm"
@@ -29,6 +30,7 @@
#include "code\__DEFINES\citadel_defines.dm"
#include "code\__DEFINES\clockcult.dm"
#include "code\__DEFINES\combat.dm"
+#include "code\__DEFINES\components.dm"
#include "code\__DEFINES\construction.dm"
#include "code\__DEFINES\contracts.dm"
#include "code\__DEFINES\cult.dm"
@@ -162,6 +164,7 @@
#include "code\citadel\_cit_helpers.dm"
#include "code\citadel\cit_areas.dm"
#include "code\citadel\cit_arousal.dm"
+#include "code\citadel\cit_emotes.dm"
#include "code\citadel\cit_genemods.dm"
#include "code\citadel\cit_guns.dm"
#include "code\citadel\cit_kegs.dm"
@@ -273,6 +276,7 @@
#include "code\datums\antagonists\datum_traitor.dm"
#include "code\datums\antagonists\devil.dm"
#include "code\datums\antagonists\ninja.dm"
+#include "code\datums\components\component.dm"
#include "code\datums\diseases\_disease.dm"
#include "code\datums\diseases\_MobProcs.dm"
#include "code\datums\diseases\anxiety.dm"
@@ -310,6 +314,7 @@
#include "code\datums\diseases\advance\symptoms\headache.dm"
#include "code\datums\diseases\advance\symptoms\heal.dm"
#include "code\datums\diseases\advance\symptoms\itching.dm"
+#include "code\datums\diseases\advance\symptoms\narcolepsy.dm"
#include "code\datums\diseases\advance\symptoms\oxygen.dm"
#include "code\datums\diseases\advance\symptoms\sensory.dm"
#include "code\datums\diseases\advance\symptoms\shedding.dm"
@@ -321,7 +326,6 @@
#include "code\datums\diseases\advance\symptoms\vision.dm"
#include "code\datums\diseases\advance\symptoms\voice_change.dm"
#include "code\datums\diseases\advance\symptoms\vomit.dm"
-#include "code\datums\diseases\advance\symptoms\weakness.dm"
#include "code\datums\diseases\advance\symptoms\weight.dm"
#include "code\datums\diseases\advance\symptoms\youth.dm"
#include "code\datums\helper_datums\construction_datum.dm"
@@ -385,6 +389,7 @@
#include "code\game\gamemodes\antag_hud.dm"
#include "code\game\gamemodes\antag_spawner.dm"
#include "code\game\gamemodes\antag_spawner_cit.dm"
+#include "code\game\gamemodes\cit_objectives.dm"
#include "code\game\gamemodes\events.dm"
#include "code\game\gamemodes\factions.dm"
#include "code\game\gamemodes\game_mode.dm"
@@ -468,7 +473,6 @@
#include "code\game\gamemodes\clock_cult\clock_structures\clock_shells.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\clockwork_obelisk.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\geis_binding.dm"
-#include "code\game\gamemodes\clock_cult\clock_structures\interdiction_lens.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\mania_motor.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\ocular_warden.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\prolonging_prism.dm"
@@ -549,6 +553,7 @@
#include "code\game\machinery\ai_slipper.dm"
#include "code\game\machinery\airlock_control.dm"
#include "code\game\machinery\announcement_system.dm"
+#include "code\game\machinery\aug_manipulator.dm"
#include "code\game\machinery\autolathe.dm"
#include "code\game\machinery\bank_machine.dm"
#include "code\game\machinery\Beacon.dm"
@@ -1001,6 +1006,7 @@
#include "code\game\turfs\simulated\chasm.dm"
#include "code\game\turfs\simulated\dirtystation.dm"
#include "code\game\turfs\simulated\floor.dm"
+#include "code\game\turfs\simulated\lava.dm"
#include "code\game\turfs\simulated\minerals.dm"
#include "code\game\turfs\simulated\river.dm"
#include "code\game\turfs\simulated\walls.dm"
@@ -1014,7 +1020,6 @@
#include "code\game\turfs\simulated\floor\reinf_floor.dm"
#include "code\game\turfs\simulated\floor\plating\asteroid.dm"
#include "code\game\turfs\simulated\floor\plating\dirt.dm"
-#include "code\game\turfs\simulated\floor\plating\lava.dm"
#include "code\game\turfs\simulated\floor\plating\misc_plating.dm"
#include "code\game\turfs\simulated\wall\mineral_walls.dm"
#include "code\game\turfs\simulated\wall\misc_walls.dm"
@@ -1967,7 +1972,6 @@
#include "code\modules\projectiles\guns\mounted.dm"
#include "code\modules\projectiles\guns\syringe_gun.dm"
#include "code\modules\projectiles\guns\ballistic\automatic.dm"
-#include "code\modules\projectiles\guns\ballistic\bow.dm"
#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm"
#include "code\modules\projectiles\guns\ballistic\launchers.dm"
#include "code\modules\projectiles\guns\ballistic\pistol.dm"
diff --git a/tgstation.dme.rej b/tgstation.dme.rej
new file mode 100644
index 0000000000..42c2d6d62d
--- /dev/null
+++ b/tgstation.dme.rej
@@ -0,0 +1,9 @@
+diff a/tgstation.dme b/tgstation.dme (rejected hunks)
+@@ -28,6 +28,7 @@
+ #include "code\__DEFINES\callbacks.dm"
+ #include "code\__DEFINES\clockcult.dm"
+ #include "code\__DEFINES\combat.dm"
++#include "code\__DEFINES\components.dm"
+ #include "code\__DEFINES\construction.dm"
+ #include "code\__DEFINES\contracts.dm"
+ #include "code\__DEFINES\cult.dm"
diff --git a/tgui/src/interfaces/exofab - Copia.ract b/tgui/src/interfaces/exofab - Copia.ract
new file mode 100644
index 0000000000..141f89ea74
--- /dev/null
+++ b/tgui/src/interfaces/exofab - Copia.ract
@@ -0,0 +1,50 @@
+{{#if data.sync}}
+
+ Currently syncing with the database
+
+{{else}}
+
+ {{#partial button}}
+ Eject all
+
+ {{data.show_materials ? "Hide" : "Show"}}
+
+ {{/partial}}
+ {{#if data.show_materials}}
+
+
+ {{#each data.all_materials}}
+
+ {{/each}}
+
+ {{/if}}
+
+
+ {{#data.categories}}
+ {{this}}
+ {{/data.categories}}
+
+{{/if}}
\ No newline at end of file
diff --git a/tools/readme.txt b/tools/UnstandardnessTestForDM/readme.txt
similarity index 100%
rename from tools/readme.txt
rename to tools/UnstandardnessTestForDM/readme.txt
diff --git a/tools/check_filedirs.sh b/tools/check_filedirs.sh
deleted file mode 100644
index 30df015763..0000000000
--- a/tools/check_filedirs.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-if [ -n "$1" ]
-then
- dme=$1
-else
- echo "Specify a DME to check"
- exit 1
-fi
-
-if [[ $(awk '/BEGIN_FILE_DIR/{flag=1;next}/END_FILE_DIR/{flag=0}flag' $dme | wc -l) -ne 1 ]]
-then
- echo "File DIR was ticked, please untick it, see: https://tgstation13.org/phpBB/viewtopic.php?f=5&t=321 for more"
- exit 1
-fi
-
|