diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm
index d24199a32e4..f5fdd3d4965 100644
--- a/_maps/RandomZLevels/spacebattle.dmm
+++ b/_maps/RandomZLevels/spacebattle.dmm
@@ -384,7 +384,7 @@
/area/awaymission/spacebattle/syndicate3)
"bt" = (
/obj/structure/table/reinforced,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/turf/open/floor/mineral/plastitanium,
/area/awaymission/spacebattle/syndicate1)
"bu" = (
@@ -1479,7 +1479,7 @@
/area/awaymission/spacebattle/cruiser)
"eW" = (
/obj/effect/mob_spawn/human/syndicatesoldier,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/decal/cleanable/blood,
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index e36ddc39052..53a52f093ba 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -5011,10 +5011,9 @@
/turf/open/floor/plating,
/area/security/brig)
"akO" = (
-/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;
@@ -5046,10 +5045,9 @@
/turf/closed/wall,
/area/security/brig)
"akR" = (
-/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;
@@ -5073,10 +5071,9 @@
/turf/open/floor/plating,
/area/security/brig)
"akT" = (
-/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;
@@ -5173,10 +5170,9 @@
/turf/open/floor/plating,
/area/security/brig)
"ala" = (
-/obj/machinery/door/window/brigdoor{
+/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 4";
- name = "Cell 4";
- req_access_txt = "1"
+ name = "Cell 4"
},
/obj/structure/cable{
d1 = 4;
@@ -26572,6 +26568,7 @@
layer = 3;
pixel_x = 32
},
+/obj/machinery/aug_manipulator,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bkp" = (
diff --git a/_maps/map_files/Cerestation/cerestation.dmm b/_maps/map_files/Cerestation/cerestation.dmm
index fee9ef07120..287c280d1ae 100644
--- a/_maps/map_files/Cerestation/cerestation.dmm
+++ b/_maps/map_files/Cerestation/cerestation.dmm
@@ -2543,7 +2543,7 @@
},
/area/ai_monitored/security/armory)
"afz" = (
-/obj/machinery/door/window/brigdoor/northleft{
+/obj/machinery/door/window/brigdoor/security/cell/northleft{
id = "Cell 6";
name = "Cell Door 6"
},
@@ -3366,10 +3366,9 @@
},
/area/security/prison)
"agY" = (
-/obj/machinery/door/window/brigdoor/westleft{
+/obj/machinery/door/window/brigdoor/security/cell/westleft{
id = "Cell 4";
- name = "Cell Door 4";
- req_access_txt = "1"
+ name = "Cell Door 4"
},
/turf/open/floor/plasteel/red{
baseturf = /turf/open/floor/plating/asteroid/airless
@@ -4891,7 +4890,7 @@
},
/area/security/prison)
"akf" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 8";
name = "Cell Door 8"
},
@@ -6352,10 +6351,9 @@
},
/area/security/prison)
"amZ" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 8";
- name = "Cell Door 8";
- req_access_txt = "1"
+ name = "Cell Door 8"
},
/turf/open/floor/plasteel/red/side{
icon_state = "red";
@@ -7602,10 +7600,9 @@
},
/area/security/prison)
"apz" = (
-/obj/machinery/door/window/brigdoor/westleft{
+/obj/machinery/door/window/brigdoor/security/cell/westleft{
id = "Cell 2";
- name = "Cell Door 2";
- req_access_txt = "1"
+ name = "Cell Door 2"
},
/turf/open/floor/plasteel/red{
baseturf = /turf/open/floor/plating/asteroid/airless
@@ -7654,7 +7651,7 @@
},
/area/security/prison)
"apD" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 9";
name = "Cell Door 9"
},
@@ -8044,10 +8041,9 @@
},
/area/quartermaster/miningdock)
"aqu" = (
-/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/side{
icon_state = "red";
@@ -8110,10 +8106,9 @@
},
/area/security/warden)
"aqB" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 7";
- name = "Cell Door 7";
- req_one_access_txt = "1"
+ name = "Cell Door 7"
},
/turf/open/floor/plasteel/red/side{
icon_state = "red";
@@ -10024,10 +10019,9 @@
},
/area/security/armory)
"auu" = (
-/obj/machinery/door/window/brigdoor/westleft{
+/obj/machinery/door/window/brigdoor/security/cell/westleft{
id = "Cell 2";
- name = "Cell Door 2";
- req_access_txt = "1"
+ name = "Cell Door 2"
},
/turf/open/floor/plasteel/red/side{
icon_state = "red";
@@ -10071,10 +10065,9 @@
},
/area/security/warden)
"auy" = (
-/obj/machinery/door/window/brigdoor/eastleft{
+/obj/machinery/door/window/brigdoor/security/cell/eastleft{
id = "Cell 6";
- name = "Cell Door 6";
- req_access_txt = "1"
+ name = "Cell Door 6"
},
/turf/open/floor/plasteel/red/side{
icon_state = "red";
@@ -12397,10 +12390,9 @@
},
/area/security/brig)
"azj" = (
-/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/side{
icon_state = "red";
@@ -46657,7 +46649,6 @@
"bIB" = (
/obj/structure/table,
/obj/item/weapon/storage/toolbox/electrical{
- pixel_x = -4;
pixel_x = 1;
pixel_y = 5
},
@@ -47246,7 +47237,6 @@
"bJN" = (
/obj/structure/table,
/obj/item/weapon/storage/toolbox/electrical{
- pixel_x = -4;
pixel_x = 1;
pixel_y = 5
},
@@ -51645,7 +51635,6 @@
/obj/structure/table,
/obj/item/weapon/storage/toolbox/mechanical,
/obj/item/weapon/storage/toolbox/electrical{
- pixel_x = -4;
pixel_x = 1;
pixel_y = 5
},
@@ -66192,7 +66181,6 @@
/obj/structure/table,
/obj/item/weapon/storage/toolbox/mechanical,
/obj/item/weapon/storage/toolbox/electrical{
- pixel_x = -4;
pixel_x = 1;
pixel_y = 5
},
@@ -70268,7 +70256,6 @@
/obj/structure/table,
/obj/item/weapon/storage/toolbox/mechanical,
/obj/item/weapon/storage/toolbox/electrical{
- pixel_x = -4;
pixel_x = 1;
pixel_y = 5
},
@@ -72141,10 +72128,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
@@ -73567,9 +73553,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
@@ -87994,7 +87979,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"
},
@@ -88413,7 +88398,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"
},
@@ -90269,7 +90254,6 @@
},
/obj/item/weapon/shield/riot,
/obj/item/weapon/shield/riot{
- pixel_y = 1;
pixel_x = 3;
pixel_y = -3
},
@@ -90892,10 +90876,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
@@ -90912,7 +90895,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/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 26bcef142ef..a6b334314c1 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -29331,7 +29331,6 @@
/obj/item/clothing/gloves/color/latex,
/obj/item/device/healthanalyzer,
/obj/item/weapon/reagent_containers/spray/cleaner{
- pixel_x = -3;
pixel_x = -3;
pixel_y = 2
},
@@ -43217,10 +43216,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
@@ -47208,10 +47206,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
@@ -55947,9 +55944,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
@@ -76820,7 +76816,6 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/clothing/glasses/hud/health,
/obj/item/weapon/reagent_containers/spray/cleaner{
- pixel_x = -3;
pixel_x = -3;
pixel_y = 2
},
@@ -80242,7 +80237,6 @@
/obj/structure/table/wood,
/obj/item/weapon/folder/white,
/obj/item/weapon/reagent_containers/spray/cleaner{
- pixel_x = -3;
pixel_x = -3;
pixel_y = 2
},
@@ -81350,7 +81344,6 @@
/obj/machinery/door/firedoor,
/obj/item/weapon/folder/white,
/obj/item/weapon/reagent_containers/spray/cleaner{
- pixel_x = -3;
pixel_x = -3;
pixel_y = 2
},
@@ -93145,6 +93138,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/aug_manipulator,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"dxQ" = (
@@ -103228,7 +103222,6 @@
/obj/item/weapon/reagent_containers/syringe/antiviral,
/obj/item/weapon/reagent_containers/dropper,
/obj/item/weapon/reagent_containers/spray/cleaner{
- pixel_x = -3;
pixel_x = -3;
pixel_y = 2
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index c474b447939..70ed4505f1e 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -12881,10 +12881,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)
@@ -12916,10 +12915,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)
@@ -12939,10 +12937,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)
@@ -13000,10 +12997,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,
@@ -66820,7 +66816,6 @@
pixel_y = -30
},
/obj/item/weapon/stamp/rd{
- pixel_x = -11;
pixel_x = 3;
pixel_y = -2
},
@@ -71174,6 +71169,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/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm
index c1eb2f589aa..d5d795af3c7 100644
--- a/_maps/map_files/Mining/Lavaland.dmm
+++ b/_maps/map_files/Mining/Lavaland.dmm
@@ -1,4 +1,4 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/closed/indestructible/riveted/boss,
/area/lavaland/surface/outdoors)
@@ -557,19 +557,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/mine/eva)
-"bw" = (
-/obj/docking_port/stationary{
- area_type = /area/lavaland/surface/outdoors;
- dir = 8;
- dwidth = 2;
- height = 5;
- id = "laborcamp_away";
- name = "labor camp";
- turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
- width = 9
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors/explored)
"bx" = (
/obj/machinery/door/airlock/glass_security{
name = "Labor Camp Shuttle Prisoner Airlock";
@@ -961,19 +948,6 @@
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
},
/area/mine/laborcamp)
-"ci" = (
-/obj/docking_port/stationary{
- area_type = /area/lavaland/surface/outdoors;
- dir = 8;
- dwidth = 3;
- height = 5;
- id = "mining_away";
- name = "lavaland mine";
- turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
- width = 7
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"cj" = (
/obj/machinery/door/airlock/external{
glass = 1;
@@ -2584,19 +2558,6 @@
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
},
/area/mine/living_quarters)
-"fw" = (
-/obj/docking_port/stationary{
- area_type = /area/lavaland/surface/outdoors;
- dir = 2;
- dwidth = 11;
- height = 22;
- id = "whiteship_lavaland";
- name = "lavaland wastes";
- turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
- width = 35
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"fx" = (
/obj/structure/ore_box,
/turf/open/floor/plasteel/brown{
@@ -2808,15 +2769,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"fU" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"fV" = (
/turf/closed/indestructible/riveted/boss/see_through,
/area/lavaland/surface/outdoors)
@@ -2825,142 +2777,6 @@
/obj/structure/stone_tile/slab,
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"fX" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"fY" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"fZ" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ga" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gb" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gc" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gd" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/goliath/beast,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ge" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gf" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gg" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gh" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gi" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gj" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 1
@@ -2985,65 +2801,10 @@
/obj/structure/stone_tile/center,
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"gl" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gm" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gn" = (
-/obj/structure/stone_tile/surrounding_tile,
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"go" = (
/obj/structure/stone_tile/block,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gp" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/obj/structure/stone_tile/surrounding_tile,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gq" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gr" = (
/obj/structure/stone_tile{
dir = 1
@@ -3070,52 +2831,6 @@
/obj/structure/stone_tile,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gt" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gu" = (
-/obj/structure/stone_tile/surrounding_tile,
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gv" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gw" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/obj/structure/stone_tile/surrounding_tile,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gx" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gy" = (
/obj/structure/stone_tile/cracked,
/obj/structure/stone_tile{
@@ -3129,32 +2844,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gz" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gA" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gB" = (
/obj/structure/stone_tile/block{
dir = 4
@@ -3180,39 +2869,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"gD" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gE" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gF" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gG" = (
/obj/structure/stone_tile{
dir = 1
@@ -3226,79 +2882,12 @@
/obj/structure/stone_tile/cracked,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gH" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gI" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gJ" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gK" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gL" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gM" = (
/obj/structure/stone_tile/block{
dir = 4
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gN" = (
-/mob/living/simple_animal/hostile/spawner/lavaland,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gO" = (
/obj/structure/stone_tile/block{
dir = 8
@@ -3309,13 +2898,6 @@
/obj/structure/stone_tile/slab,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gQ" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gR" = (
/obj/structure/stone_tile/block,
/obj/structure/stone_tile/block{
@@ -3323,359 +2905,32 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"gS" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gT" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gU" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gV" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gW" = (
-/mob/living/simple_animal/hostile/spawner/lavaland,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gX" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"gY" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"gZ" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ha" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
+/obj/docking_port/stationary{
+ area_type = /area/lavaland/surface/outdoors;
+ baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ dir = 8;
+ dwidth = 2;
+ height = 5;
+ id = "laborcamp_away";
+ name = "labor camp";
+ turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
+ width = 9
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hb" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hc" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hd" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"he" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hf" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
+/area/lavaland/surface/outdoors/explored)
"hg" = (
/obj/structure/stone_tile/surrounding,
/obj/structure/stone_tile/center/cracked,
/mob/living/simple_animal/hostile/megafauna/legion,
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"hh" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hi" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hj" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hk" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hl" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hm" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hn" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ho" = (
-/obj/structure/stone_tile/surrounding,
-/obj/structure/closet/crate/necropolis/tendril{
- anchored = 1;
- max_integrity = 500;
- obj_integrity = 500
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hp" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/basilisk/watcher,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hq" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hr" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile,
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"hs" = (
/obj/structure/stone_tile/block{
dir = 1
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"ht" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hu" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hv" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hw" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hx" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hy" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/obj/structure/stone_tile/surrounding_tile,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hz" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hA" = (
-/obj/structure/stone_tile/surrounding_tile{
- dir = 4
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 1
- },
-/obj/structure/stone_tile/surrounding_tile{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hB" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hC" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hD" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hE" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hF" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hG" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"hH" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -3686,19 +2941,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"hI" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"hJ" = (
/obj/structure/stone_tile/block{
dir = 8
@@ -3709,217 +2951,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"hK" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hL" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hM" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hN" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/mob/living/simple_animal/hostile/asteroid/goliath/beast,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hO" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hP" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hQ" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hR" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hS" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hT" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/goliath/beast,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hU" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hV" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hW" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hX" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hY" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"hZ" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ia" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ib" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ic" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"id" = (
/obj/structure/stone_tile{
dir = 4
@@ -3933,116 +2964,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"ie" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"if" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ig" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ih" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ii" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ij" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ik" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"il" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"im" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"in" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"io" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"ip" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"iq" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
"ir" = (
/obj/structure/stone_tile/slab/cracked{
dir = 5
@@ -4052,10 +2973,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"is" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"it" = (
/obj/structure/stone_tile/block,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -4066,10 +2983,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"iv" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"iw" = (
/obj/structure/stone_tile/slab/cracked{
dir = 4
@@ -4087,23 +3000,6 @@
/obj/structure/stone_tile/cracked,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"iz" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iA" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iB" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"iC" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -4111,39 +3007,6 @@
/obj/structure/stone_tile/block/cracked,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"iD" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iE" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"iF" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"iG" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"iH" = (
-/turf/closed/indestructible/riveted/boss/see_through,
-/area/lavaland/surface/outdoors)
-"iI" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iJ" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"iK" = (
/obj/structure/stone_tile/block,
/obj/structure/stone_tile/cracked{
@@ -4151,54 +3014,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"iL" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iM" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iN" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iO" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iP" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iQ" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iR" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iS" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iT" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iU" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iV" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"iW" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"iX" = (
/obj/structure/stone_tile,
/obj/structure/stone_tile{
@@ -4216,10 +3031,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"iZ" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"ja" = (
/obj/structure/stone_tile{
dir = 8
@@ -4232,40 +3043,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jc" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jd" = (
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"je" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jf" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jg" = (
/obj/structure/stone_tile,
/obj/structure/stone_tile/cracked{
@@ -4279,45 +3056,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jh" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ji" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jj" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jk" = (
/obj/structure/stone_tile/center,
/obj/structure/stone_tile/surrounding_tile,
@@ -4355,153 +3093,22 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jn" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jo" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jp" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jq" = (
/obj/structure/stone_tile,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jr" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"js" = (
/obj/structure/stone_tile/block/cracked{
dir = 8
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jt" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ju" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jv" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jw" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jx" = (
/obj/structure/stone_tile{
dir = 4
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jy" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jz" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jA" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/mob/living/simple_animal/hostile/asteroid/goliath/beast,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jB" = (
-/obj/structure/stone_tile/surrounding,
-/obj/structure/closet/crate/necropolis/tendril{
- anchored = 1;
- max_integrity = 500;
- obj_integrity = 500
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jC" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/mob/living/simple_animal/hostile/asteroid/basilisk/watcher,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jD" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jE" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jF" = (
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile{
@@ -4513,16 +3120,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jG" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jH" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 8
@@ -4534,41 +3131,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jI" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jJ" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jK" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jL" = (
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile{
@@ -4580,16 +3142,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jM" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jN" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 8
@@ -4601,32 +3153,6 @@
/obj/structure/stone_tile/center/cracked,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jO" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jP" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"jQ" = (
/obj/structure/stone_tile{
dir = 1
@@ -4645,137 +3171,10 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"jT" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jU" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jV" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jW" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jX" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jY" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"jZ" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ka" = (
-/obj/structure/stone_tile/block,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kb" = (
-/obj/structure/stone_tile,
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kc" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kd" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ke" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kf" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kg" = (
/obj/structure/fluff/drake_statue,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kh" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ki" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kj" = (
/obj/structure/stone_tile/block{
dir = 8
@@ -4785,45 +3184,10 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kk" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kl" = (
/obj/structure/fluff/drake_statue/falling,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"km" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kn" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"ko" = (
/obj/structure/stone_tile/block/cracked{
dir = 8
@@ -4834,46 +3198,6 @@
/obj/structure/stone_tile,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kp" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kq" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kr" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ks" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kt" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ku" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kv" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kw" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kx" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"ky" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -4883,25 +3207,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kz" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kA" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kB" = (
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile{
@@ -4913,16 +3218,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kC" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kD" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 4
@@ -4936,41 +3231,6 @@
/obj/structure/stone_tile/center,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kE" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kF" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kG" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kH" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 1
@@ -4982,16 +3242,6 @@
/obj/structure/stone_tile/center/cracked,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kI" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kJ" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 4
@@ -5005,25 +3255,6 @@
/obj/structure/stone_tile/center,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kK" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kL" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kM" = (
/obj/structure/stone_tile/block/cracked{
dir = 1
@@ -5036,148 +3267,10 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kO" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kP" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kQ" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"kR" = (
/obj/structure/stone_tile/slab/cracked,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"kS" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kT" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kU" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kV" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kW" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kX" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kY" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"kZ" = (
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"la" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lb" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lc" = (
-/obj/structure/stone_tile/block/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ld" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"le" = (
/obj/structure/stone_tile,
/obj/structure/stone_tile{
@@ -5188,19 +3281,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lf" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lg" = (
/obj/structure/stone_tile/block{
dir = 4
@@ -5210,29 +3290,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lh" = (
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"li" = (
-/obj/structure/stone_tile/block{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lj" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -5243,10 +3300,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lk" = (
-/obj/structure/stone_tile/block,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"ll" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -5256,20 +3309,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lm" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ln" = (
-/obj/structure/stone_tile/slab,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lo" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lp" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5302,18 +3341,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lt" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lu" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5337,10 +3364,6 @@
/obj/structure/stone_tile/cracked,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lx" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"ly" = (
/obj/structure/stone_tile/cracked{
dir = 1
@@ -5356,35 +3379,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lA" = (
-/obj/structure/stone_tile/block/cracked,
-/obj/structure/stone_tile/block/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lB" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lC" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lD" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5422,66 +3416,12 @@
/obj/structure/stone_tile/block,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lH" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lI" = (
/obj/structure/stone_tile/cracked{
dir = 4
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lJ" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lK" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lL" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lM" = (
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lN" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lO" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lP" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5519,37 +3459,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lT" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lU" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lV" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lW" = (
/obj/structure/stone_tile/block/cracked,
/obj/structure/stone_tile/block/cracked{
@@ -5557,22 +3466,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"lX" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"lY" = (
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"lZ" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5601,69 +3494,6 @@
},
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"mc" = (
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"md" = (
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"me" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mf" = (
-/obj/structure/stone_tile/block/cracked,
-/obj/structure/stone_tile/block/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mg" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mh" = (
-/obj/structure/stone_tile/cracked,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mi" = (
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mj" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"mk" = (
/obj/structure/stone_tile/block/cracked{
dir = 8
@@ -5680,18 +3510,6 @@
/obj/structure/stone_tile/cracked,
/turf/open/floor/plating/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
-"mm" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile/cracked{
- dir = 8
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"mn" = (
/obj/structure/stone_tile/block/cracked,
/obj/structure/stone_tile/block{
@@ -5699,20 +3517,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"mo" = (
-/obj/structure/stone_tile/block/cracked{
- dir = 8
- },
-/obj/structure/stone_tile/cracked,
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"mp" = (
-/obj/structure/stone_tile/slab/cracked,
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"mq" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -5791,10 +3595,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"mz" = (
-/obj/structure/stone_tile,
-/turf/open/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
"mA" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -5939,15 +3739,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"mR" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/indestructible/boss,
-/area/lavaland/surface/outdoors)
"mS" = (
/obj/structure/stone_tile/cracked{
dir = 1
@@ -5961,28 +3752,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"mT" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/turf/open/indestructible/boss,
-/area/lavaland/surface/outdoors)
-"mU" = (
-/obj/structure/stone_tile/cracked{
- dir = 1
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/indestructible/boss,
-/area/lavaland/surface/outdoors)
"mV" = (
/obj/structure/stone_tile/block{
dir = 4
@@ -6040,18 +3809,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"na" = (
-/obj/structure/stone_tile/block{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/indestructible/boss,
-/area/lavaland/surface/outdoors)
"nb" = (
/obj/structure/stone_tile/cracked{
dir = 8
@@ -6078,19 +3835,6 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
-"nd" = (
-/obj/structure/stone_tile/cracked{
- dir = 4
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/structure/stone_tile,
-/obj/structure/stone_tile{
- dir = 8
- },
-/turf/open/indestructible/boss,
-/area/lavaland/surface/outdoors)
"ne" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -6115,6 +3859,34 @@
},
/turf/open/indestructible/boss,
/area/lavaland/surface/outdoors)
+"Uq" = (
+/obj/docking_port/stationary{
+ area_type = /area/lavaland/surface/outdoors;
+ baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ dir = 2;
+ dwidth = 11;
+ height = 22;
+ id = "whiteship_lavaland";
+ name = "lavaland wastes";
+ turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
+ width = 35
+ },
+/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"Wp" = (
+/obj/docking_port/stationary{
+ area_type = /area/lavaland/surface/outdoors;
+ baseturf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface;
+ dir = 8;
+ dwidth = 3;
+ height = 5;
+ id = "mining_away";
+ name = "lavaland mine";
+ turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
+ width = 7
+ },
+/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
(1,1,1) = {"
aa
@@ -10240,7 +8012,7 @@ aa
aa
aa
aa
-is
+gP
ad
ad
ab
@@ -10446,7 +8218,7 @@ aD
aD
aD
aD
-bw
+gY
aD
aD
aD
@@ -19957,7 +17729,7 @@ ab
ab
ab
ab
-ci
+Wp
ab
ab
ab
@@ -32049,7 +29821,7 @@ ab
ab
ab
ab
-fw
+Uq
ab
ab
ab
@@ -37482,7 +35254,7 @@ aa
aa
aa
aa
-iD
+gR
ag
jF
gM
@@ -37740,12 +35512,12 @@ aa
aa
aa
aa
-ji
+gG
go
kg
hs
gr
-ia
+hH
ab
ab
aj
@@ -37991,8 +35763,8 @@ aa
mS
mV
mq
-na
-nd
+mV
+nc
aa
aa
fV
@@ -38500,9 +36272,9 @@ aj
"}
(127,1,1) = {"
mQ
-mR
+mQ
fW
-mT
+mQ
mW
hg
ac
@@ -38517,7 +36289,7 @@ kj
fT
fT
lg
-is
+gP
lq
lu
lq
@@ -38771,7 +36543,7 @@ fV
jl
gr
ah
-ji
+gG
gs
gy
aa
@@ -39016,7 +36788,7 @@ aj
aa
aa
aa
-mU
+mS
mY
ms
hJ
@@ -39030,7 +36802,7 @@ jL
gM
kH
gr
-ia
+hH
aa
aa
lw
@@ -39286,7 +37058,7 @@ gr
go
kl
hs
-ji
+gG
lj
ab
ab
@@ -39538,7 +37310,7 @@ aa
aa
aa
aa
-iD
+gR
ah
jN
gO
@@ -39795,12 +37567,12 @@ aa
aa
aa
aa
-iD
+gR
gr
gr
gr
jm
-is
+gP
ab
ab
ab
@@ -63696,7 +61468,7 @@ aa
aa
aa
aa
-is
+gP
ai
ai
ai
@@ -66780,7 +64552,7 @@ aa
aa
aa
aa
-is
+gP
js
ab
ad
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 6d5ada79b17..e97cf55a3bb 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -6031,10 +6031,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
@@ -7939,10 +7938,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
diff --git a/_maps/map_files/OmegaStation/job_changes.dm b/_maps/map_files/OmegaStation/job_changes.dm
index dc6a461432f..f360be7f99d 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 4d027893039..3debe76dcaf 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -7422,10 +7422,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;
@@ -7476,10 +7475,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;
@@ -7497,10 +7495,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;
diff --git a/_maps/map_files/PubbyStation/job_changes.dm b/_maps/map_files/PubbyStation/job_changes.dm
index d366a15ae3f..6bb5276d9cb 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 8860fe2ec42..2a8f440c6a0 100644
--- a/_maps/map_files/generic/Centcomm.dmm
+++ b/_maps/map_files/generic/Centcomm.dmm
@@ -1,4 +1,4 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/open/space/basic,
/area/space)
@@ -639,11 +639,6 @@
dir = 10
},
/area/holodeck/rec_center/medical)
-"bY" = (
-/turf/open/floor/holofloor{
- icon_state = "white"
- },
-/area/holodeck/rec_center/medical)
"bZ" = (
/obj/structure/table/optable,
/turf/open/floor/holofloor{
@@ -2081,9 +2076,6 @@
},
/turf/closed/indestructible/riveted,
/area/space)
-"fO" = (
-/turf/closed/indestructible/riveted,
-/area/tdome/arena_source)
"fP" = (
/obj/machinery/igniter,
/obj/effect/turf_decal/delivery,
@@ -2099,7 +2091,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -2136,7 +2128,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/green,
+/obj/item/weapon/melee/transforming/energy/sword/saber/green,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -5409,15 +5401,6 @@
dir = 8
},
/area/centcom/control)
-"oz" = (
-/obj/structure/chair/comfy/black{
- dir = 1
- },
-/obj/machinery/light,
-/turf/open/floor/plasteel/vault{
- dir = 8
- },
-/area/centcom/control)
"oA" = (
/obj/structure/bookcase/random,
/obj/machinery/airalarm{
@@ -5713,9 +5696,6 @@
icon_state = "fakewindows"
},
/area/wizard_station)
-"pk" = (
-/turf/open/floor/plating/asteroid/snow/airless,
-/area/space)
"pl" = (
/obj/machinery/computer/shuttle/syndicate/recall,
/turf/open/floor/plasteel/bar{
@@ -6515,22 +6495,6 @@
},
/turf/open/floor/plasteel,
/area/centcom/evac)
-"qV" = (
-/obj/structure/closet/crate/bin,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
-"qW" = (
-/obj/structure/table,
-/obj/item/toy/foamblade,
-/obj/item/toy/gun,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
"qX" = (
/obj/structure/table,
/obj/item/toy/katana,
@@ -6540,16 +6504,6 @@
},
/turf/open/floor/plasteel,
/area/centcom/evac)
-"qY" = (
-/obj/item/weapon/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
"qZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -7435,20 +7389,6 @@
},
/turf/open/floor/carpet,
/area/wizard_station)
-"tg" = (
-/obj/docking_port/stationary{
- area_type = /area/syndicate_mothership;
- dheight = 9;
- dir = 2;
- dwidth = 5;
- height = 24;
- id = "syndicate_away";
- name = "syndicate recon outpost";
- turf_type = /turf/open/floor/plating/asteroid/snow;
- width = 18
- },
-/turf/open/floor/plating/asteroid/snow/airless,
-/area/space)
"th" = (
/obj/item/weapon/storage/box/drinkingglasses,
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,
@@ -7722,15 +7662,6 @@
dir = 8
},
/area/centcom/evac)
-"tN" = (
-/obj/item/weapon/twohanded/required/kirbyplants{
- icon_state = "plant-22"
- },
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/area/centcom/evac)
"tO" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
@@ -7922,16 +7853,6 @@
dir = 6
},
/area/centcom/evac)
-"up" = (
-/obj/item/weapon/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
- },
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/area/centcom/evac)
"uq" = (
/obj/structure/chair/wood/wings{
icon_state = "wooden_chair_wings";
@@ -8841,11 +8762,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/centcom/ferry)
-"wL" = (
-/turf/open/floor/plasteel/vault{
- dir = 5
- },
-/area/centcom/ferry)
"wM" = (
/obj/structure/table/reinforced,
/obj/item/weapon/restraints/handcuffs,
@@ -9039,13 +8955,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/centcom/evac)
-"xr" = (
-/obj/item/weapon/twohanded/required/kirbyplants{
- icon_state = "plant-22"
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/centcom/evac)
"xs" = (
/obj/structure/table,
/obj/item/toy/sword,
@@ -9366,17 +9275,6 @@
dir = 8
},
/area/centcom/evac)
-"yb" = (
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/fernybush,
-/obj/machinery/light,
-/turf/open/floor/plasteel{
- dir = 6;
- icon_state = "asteroid8";
- name = "sand"
- },
-/area/centcom/evac)
"yc" = (
/obj/structure/statue/uranium/nuke,
/turf/open/floor/plating/asteroid/snow/airless,
@@ -11650,15 +11548,6 @@
dir = 1
},
/area/tdome/tdomeobserve)
-"DE" = (
-/turf/closed/indestructible/riveted,
-/area/tdome/arena)
-"DF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 2
- },
-/turf/closed/indestructible/riveted,
-/area/tdome/tdomeobserve)
"DG" = (
/obj/machinery/igniter,
/obj/effect/turf_decal/delivery,
@@ -11700,7 +11589,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -11820,7 +11709,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/green,
+/obj/item/weapon/melee/transforming/energy/sword/saber/green,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -12424,9 +12313,6 @@
/obj/machinery/ai_status_display,
/turf/closed/indestructible/riveted,
/area/tdome/tdomeadmin)
-"FH" = (
-/turf/closed/wall/mineral/titanium/overspace,
-/area/centcom/evac)
"FI" = (
/obj/structure/shuttle/engine/propulsion/right{
dir = 1
@@ -13077,68 +12963,16 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/centcom/evac)
-"HW" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"HX" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"HY" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"HZ" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Ia" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Ib" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Ic" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Id" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Ie" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"If" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
-"Ig" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
"Ih" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plasteel,
/area/centcom/evac)
-"Ii" = (
-/turf/open/floor/plasteel,
-/obj/effect/turf_decal/delivery,
-/area/centcom/evac)
"Ij" = (
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/tdome/arena_source)
-"Ik" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"Il" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -13151,77 +12985,16 @@
"In" = (
/turf/open/floor/plasteel/neutral,
/area/tdome/arena_source)
-"Io" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Ip" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Iq" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Ir" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Is" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"It" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
"Iu" = (
/turf/open/floor/plasteel/neutral/side{
dir = 8
},
/area/tdome/arena_source)
-"Iv" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"Iw" = (
/turf/open/floor/plasteel/red/corner{
dir = 1
},
/area/tdome/arena_source)
-"Ix" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"Iy" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 4
- },
-/area/tdome/arena_source)
-"Iz" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IA" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IB" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IC" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"ID" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IE" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IF" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IG" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 8
- },
-/area/tdome/arena_source)
-"IH" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"II" = (
/turf/open/floor/plasteel/green/corner{
dir = 4
@@ -13232,62 +13005,12 @@
dir = 4
},
/area/tdome/arena_source)
-"IK" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"IL" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 4
- },
-/area/tdome/arena_source)
-"IM" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IN" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IO" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IP" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IQ" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 8
- },
-/area/tdome/arena_source)
-"IR" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"IS" = (
/turf/open/floor/plasteel/loadingarea{
baseturf = /turf/open/space;
dir = 8
},
/area/tdome/arena_source)
-"IT" = (
-/turf/open/floor/plasteel/loadingarea{
- dir = 4
- },
-/area/tdome/arena_source)
-"IU" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"IV" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 4
- },
-/area/tdome/arena_source)
-"IW" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"IX" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
"IY" = (
/obj/machinery/camera{
pixel_x = 10;
@@ -13296,129 +13019,18 @@
},
/turf/open/floor/circuit/green,
/area/tdome/arena_source)
-"IZ" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Ja" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jb" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 8
- },
-/area/tdome/arena_source)
-"Jc" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"Jd" = (
-/turf/open/floor/plasteel/loadingarea{
- baseturf = /turf/open/space;
- dir = 8
- },
-/area/tdome/arena_source)
"Je" = (
/turf/open/floor/plasteel/red/corner{
dir = 8
},
/area/tdome/arena_source)
-"Jf" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"Jg" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 4
- },
-/area/tdome/arena_source)
-"Jh" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Ji" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jj" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jk" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jl" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jm" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jn" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jo" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 8
- },
-/area/tdome/arena_source)
-"Jp" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"Jq" = (
/turf/open/floor/plasteel/green/corner,
/area/tdome/arena_source)
-"Jr" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"Js" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 4
- },
-/area/tdome/arena_source)
-"Jt" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Ju" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jv" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jw" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jx" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jy" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"Jz" = (
-/turf/open/floor/plasteel/neutral,
-/area/tdome/arena_source)
-"JA" = (
-/turf/open/floor/plasteel/neutral/side{
- dir = 8
- },
-/area/tdome/arena_source)
-"JB" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"JC" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
-"JD" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/tdome/arena_source)
"JE" = (
/obj/machinery/light,
/turf/open/floor/plating,
/area/syndicate_mothership/control)
-"JF" = (
-/obj/machinery/light,
-/turf/open/floor/plating,
-/area/syndicate_mothership)
"JG" = (
/obj/machinery/light{
dir = 8
@@ -13450,10 +13062,6 @@
},
/turf/open/floor/plating/airless,
/area/syndicate_mothership/control)
-"JK" = (
-/obj/machinery/light/small,
-/turf/open/floor/plating,
-/area/syndicate_mothership)
"JL" = (
/obj/machinery/light,
/turf/open/floor/wood,
@@ -13559,14 +13167,6 @@
dir = 4
},
/area/centcom/supply)
-"Ka" = (
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel/brown{
- dir = 4
- },
-/area/centcom/supply)
"Kb" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -13597,14 +13197,6 @@
dir = 8
},
/area/centcom/control)
-"Kf" = (
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel/brown{
- dir = 4
- },
-/area/centcom/supply)
"Kg" = (
/obj/item/toy/figure/syndie,
/obj/effect/light_emitter{
@@ -13613,22 +13205,6 @@
},
/turf/open/floor/plating/asteroid/snow/airless,
/area/syndicate_mothership)
-"Kh" = (
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel/vault{
- dir = 8
- },
-/area/centcom/control)
-"Ki" = (
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel/vault{
- dir = 8
- },
-/area/centcom/control)
"Kj" = (
/obj/structure/flora/grass/both,
/obj/effect/light_emitter{
@@ -13660,11 +13236,6 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/centcom/control)
-"Kn" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/light,
-/turf/open/floor/plasteel,
-/area/centcom/control)
"Ko" = (
/obj/structure/flora/tree/pine,
/obj/effect/light_emitter{
@@ -13673,18 +13244,6 @@
},
/turf/open/floor/plating/asteroid/snow/airless,
/area/syndicate_mothership)
-"Kp" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/pointybush,
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/centcom/control)
"Kq" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/sparsegrass,
@@ -13697,17 +13256,6 @@
},
/turf/open/floor/grass,
/area/centcom/evac)
-"Kr" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/genericbush,
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/grass,
-/area/centcom/control)
"Ks" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/fullgrass,
@@ -13754,48 +13302,6 @@
},
/turf/open/floor/engine/cult,
/area/wizard_station)
-"Kx" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"Ky" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"Kz" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KA" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KB" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KC" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
"KD" = (
/obj/structure/chair,
/obj/effect/turf_decal/stripes/line{
@@ -13806,25 +13312,6 @@
},
/turf/open/floor/plasteel,
/area/centcom/evac)
-"KE" = (
-/obj/structure/chair,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
-"KF" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
"KG" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/sparsegrass,
@@ -13834,27 +13321,6 @@
/obj/machinery/light,
/turf/open/floor/plating/asteroid,
/area/centcom/evac)
-"KH" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KI" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KJ" = (
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
"KK" = (
/obj/structure/chair{
dir = 4
@@ -13897,37 +13363,6 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/centcom/ferry)
-"KQ" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/centcom/evac)
-"KR" = (
-/obj/structure/flora/grass/both,
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
-"KS" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/palebush,
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/plating/asteroid,
-/area/centcom/control)
"KT" = (
/obj/structure/chair{
dir = 1
@@ -13936,39 +13371,10 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/centcom/evac)
-"KU" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/light,
-/turf/open/floor/plasteel,
-/area/centcom/evac)
-"KV" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/light,
-/turf/open/floor/plasteel,
-/area/centcom/evac)
"KW" = (
/obj/machinery/light,
/turf/open/floor/engine/cult,
/area/wizard_station)
-"KX" = (
-/obj/machinery/light,
-/turf/open/floor/engine/cult,
-/area/wizard_station)
-"KY" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/pointybush,
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
"KZ" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/sparsegrass,
@@ -13984,12 +13390,6 @@
},
/turf/open/floor/engine/cult,
/area/wizard_station)
-"Lb" = (
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/engine/cult,
-/area/wizard_station)
"Lc" = (
/obj/machinery/light{
dir = 4
@@ -14012,14 +13412,6 @@
dir = 5
},
/area/centcom/evac)
-"Lf" = (
-/obj/machinery/light{
- dir = 1
- },
-/turf/open/floor/plasteel/vault{
- dir = 8
- },
-/area/centcom/control)
"Lg" = (
/obj/machinery/light/small{
brightness = 3;
@@ -14055,13 +13447,6 @@
heat_capacity = 1e+006
},
/area/tdome/tdomeobserve)
-"Ll" = (
-/obj/machinery/light,
-/turf/open/floor/plasteel/neutral/side{
- dir = 1;
- heat_capacity = 1e+006
- },
-/area/tdome/tdomeobserve)
"Lm" = (
/obj/machinery/light{
dir = 8
@@ -14102,30 +13487,6 @@
name = "sand"
},
/area/tdome/tdomeadmin)
-"Lq" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/palebush,
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plating/asteroid,
-/area/tdome/tdomeadmin)
-"Lr" = (
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/fernybush,
-/obj/machinery/light{
- dir = 4
- },
-/turf/open/floor/plasteel{
- dir = 6;
- icon_state = "asteroid8";
- name = "sand"
- },
-/area/tdome/tdomeadmin)
"Ls" = (
/obj/machinery/light{
dir = 4
@@ -14152,16 +13513,6 @@
/obj/machinery/light,
/turf/open/floor/grass,
/area/tdome/tdomeadmin)
-"Lv" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/grassybush,
-/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/pointybush,
-/obj/machinery/light,
-/turf/open/floor/grass,
-/area/tdome/tdomeadmin)
"Lw" = (
/obj/structure/flora/bush,
/obj/effect/light_emitter{
@@ -14178,14 +13529,6 @@
},
/turf/open/floor/plating/asteroid/snow/airless,
/area/syndicate_mothership)
-"Ly" = (
-/obj/structure/flora/grass/brown,
-/obj/effect/light_emitter{
- set_cap = 1;
- set_luminosity = 4
- },
-/turf/open/floor/plating/asteroid/snow/atmosphere,
-/area/syndicate_mothership)
"Lz" = (
/obj/machinery/light{
dir = 1
@@ -14203,61 +13546,16 @@
/obj/machinery/light,
/turf/open/floor/plasteel/cafeteria,
/area/centcom/holding)
-"LC" = (
-/obj/structure/flora/ausbushes/ppflowers,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
-"LD" = (
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
-"LE" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
"LF" = (
/obj/structure/fluff/arc,
/turf/open/floor/grass,
/area/centcom/evac)
-"LG" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
"LH" = (
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/window/reinforced,
/turf/open/floor/grass,
/area/centcom/evac)
-"LI" = (
-/obj/structure/flora/ausbushes/ywflowers,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/open/floor/grass,
-/area/centcom/evac)
"LJ" = (
/obj/structure/chair/comfy/black{
dir = 1
@@ -14294,10 +13592,6 @@
/obj/structure/flora/ausbushes/ywflowers,
/turf/open/floor/grass,
/area/centcom/evac)
-"LO" = (
-/obj/structure/fluff/arc,
-/turf/open/floor/grass,
-/area/centcom/control)
"LP" = (
/obj/structure/flora/ausbushes/lavendergrass,
/obj/structure/flora/ausbushes/brflowers,
@@ -14332,15 +13626,6 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/centcom/evac)
-"LV" = (
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/genericbush,
-/obj/machinery/light,
-/turf/open/floor/grass,
-/area/centcom/evac)
"LW" = (
/obj/structure/table/reinforced,
/obj/item/weapon/storage/box/handcuffs,
@@ -14366,12 +13651,6 @@
/obj/machinery/ai_status_display,
/turf/closed/indestructible/riveted,
/area/centcom/evac)
-"Ma" = (
-/obj/structure/fans/tiny,
-/turf/open/floor/plasteel/vault{
- dir = 8
- },
-/area/centcom/evac)
"Mb" = (
/obj/machinery/door/airlock/centcom{
name = "Centcom Security";
@@ -14428,6 +13707,21 @@
"Mi" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/centcom/evac)
+"QG" = (
+/obj/docking_port/stationary{
+ area_type = /area/syndicate_mothership;
+ baseturf_type = /turf/open/floor/plating/asteroid/snow;
+ dheight = 9;
+ dir = 2;
+ dwidth = 5;
+ height = 24;
+ id = "syndicate_away";
+ name = "syndicate recon outpost";
+ turf_type = /turf/open/floor/plating/asteroid/snow;
+ width = 18
+ },
+/turf/open/floor/plating/asteroid/snow/airless,
+/area/syndicate_mothership)
(1,1,1) = {"
aa
@@ -26941,16 +26235,16 @@ Kl
Kl
Kl
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -27192,22 +26486,22 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -27449,22 +26743,22 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -27706,22 +27000,22 @@ Kl
Kl
Kl
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -27955,30 +27249,30 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
Kl
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -28212,27 +27506,27 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
Kl
Kl
@@ -28469,29 +27763,29 @@ hq
mz
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hq
hm
@@ -28726,29 +28020,29 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hq
hm
@@ -28983,29 +28277,29 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hq
hm
@@ -29240,29 +28534,29 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hq
hm
@@ -29497,29 +28791,29 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hq
hm
@@ -29754,27 +29048,27 @@ hq
hq
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
rd
mg
mA
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
Kl
Kl
@@ -30011,30 +29305,30 @@ hq
lF
hq
Kl
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
Kl
re
kI
sB
-tg
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+QG
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -30278,20 +29572,20 @@ Kl
re
kI
sC
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -30535,20 +29829,20 @@ Kl
re
kI
re
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -30795,17 +30089,17 @@ re
Kl
Kl
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -31053,16 +30347,16 @@ Kl
hq
Lw
Kl
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
-pk
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
+hq
Kl
hm
aa
@@ -59333,7 +58627,7 @@ it
yA
yI
lA
-Ki
+zf
zt
it
zH
@@ -61618,7 +60912,7 @@ kO
iH
kT
lX
-Ki
+zf
iP
iW
iW
@@ -63441,7 +62735,7 @@ sv
wW
xs
ql
-LV
+KZ
qk
LW
Le
@@ -66011,7 +65305,7 @@ sv
wW
LT
ql
-LV
+KZ
qk
aa
aa
diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm
index 9b07fc1ac3e..2ed07a10040 100644
--- a/_maps/shuttles/whiteship_meta.dmm
+++ b/_maps/shuttles/whiteship_meta.dmm
@@ -370,7 +370,6 @@
"aI" = (
/obj/structure/bed,
/obj/item/weapon/bedsheet/centcom,
-/obj/effect/decal/remains/human,
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -379,6 +378,12 @@
/obj/structure/light_construct/small{
dir = 4
},
+/obj/effect/decal/cleanable/ash{
+ desc = "They look like human remains, and have clearly been gnawed at.";
+ icon = 'icons/effects/blood.dmi';
+ icon_state = "remains";
+ name = "remains"
+ },
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aJ" = (
@@ -2053,7 +2058,7 @@ ac
"}
(15,1,1) = {"
ac
-av
+ac
aM
ac
ac
diff --git a/code/__DATASTRUCTURES/linked_lists.dm b/code/__DATASTRUCTURES/linked_lists.dm
index eccc3c422a8..1d2e8d78a63 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 00000000000..e557a55e7c2
--- /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 5ce803fa3cd..a79850b04f6 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 3e7d2847943..a307a0819dd 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -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 00000000000..eb6826d67b7
--- /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/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 1372e99a8e9..afe72a91c76 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)
@@ -9,12 +9,16 @@
//Turfs
#define isopenturf(A) (istype(A, /turf/open))
+#define isindestructiblefloor(A) (istype(A, /turf/open/indestructible))
+
#define isspaceturf(A) (istype(A, /turf/open/space))
#define isfloorturf(A) (istype(A, /turf/open/floor))
#define isclosedturf(A) (istype(A, /turf/closed))
+#define isindestructiblewall(A) (istype(A, /turf/closed/indestructible))
+
#define iswallturf(A) (istype(A, /turf/closed/wall))
#define ismineralturf(A) (istype(A, /turf/closed/mineral))
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 758ff6f496e..2b0e8ee74ad 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/shuttles.dm b/code/__DEFINES/shuttles.dm
index c0158bac16d..c495ee3b4ab 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -51,4 +51,11 @@
//Engine related
#define ENGINE_COEFF_MIN 0.5
#define ENGINE_COEFF_MAX 2
-#define ENGINE_DEFAULT_MAXSPEED_ENGINES 5
\ No newline at end of file
+#define ENGINE_DEFAULT_MAXSPEED_ENGINES 5
+
+//Docking error flags
+#define DOCKING_SUCCESS 0
+#define DOCKING_COMPLETE 1
+#define DOCKING_BLOCKED 2
+#define DOCKING_IMMOBILIZED 4
+#define DOCKING_AREA_EMPTY 8
\ No newline at end of file
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 71d0792b608..f7322abe6ce 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -53,12 +53,12 @@
#define INIT_ORDER_ATOMS 11
#define INIT_ORDER_LANGUAGE 10
#define INIT_ORDER_MACHINES 9
-#define INIT_ORDER_SHUTTLE 3
#define INIT_ORDER_TIMER 1
#define INIT_ORDER_DEFAULT 0
#define INIT_ORDER_AIR -1
-#define INIT_ORDER_MINIMAP -2
-#define INIT_ORDER_ASSETS -3
+#define INIT_ORDER_SHUTTLE -2
+#define INIT_ORDER_MINIMAP -3
+#define INIT_ORDER_ASSETS -4
#define INIT_ORDER_ICON_SMOOTHING -5
#define INIT_ORDER_OVERLAY -6
#define INIT_ORDER_XKEYSCORE -10
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index d63c10c508d..393c5a465d0 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -89,11 +89,13 @@
return
//returns a new list with only atoms that are in typecache L
-/proc/typecache_filter_list(list/atoms, list/typecache)
+/proc/typecache_filter_list(list/atoms, list/typecache, reversed=FALSE)
. = list()
for (var/thing in atoms)
var/atom/A = thing
- if (typecache[A.type])
+ if (typecache[A.type] && !reversed)
+ . += A
+ else if(reversed)
. += A
//Like typesof() or subtypesof(), but returns a typecache instead of a list
diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm
index c5e3a972180..41d2f721f59 100644
--- a/code/__HELPERS/maths.dm
+++ b/code/__HELPERS/maths.dm
@@ -182,3 +182,41 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
gaussian_next = R2 * working
return (mean + stddev * R1)
#undef ACCURACY
+
+/proc/mouse_angle_from_client(client/client)
+ var/list/mouse_control = params2list(client.mouseParams)
+ if(mouse_control["screen-loc"])
+ var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",")
+ var/list/screen_loc_X = splittext(screen_loc_params[1],":")
+ var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
+ var/x = (text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32)
+ var/y = (text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32)
+ var/screenview = (client.view * 2 + 1) * world.icon_size //Refer to http://www.byond.com/docs/ref/info.html#/client/var/view for mad maths
+ var/ox = round(screenview/2) - client.pixel_x //"origin" x
+ var/oy = round(screenview/2) - client.pixel_y //"origin" y
+ var/angle = NORM_ROT(Atan2(y - oy, x - ox))
+ return angle
+
+/proc/get_turf_in_angle(angle, turf/starting, increments)
+ var/pixel_x = 0
+ var/pixel_y = 0
+ for(var/i in 1 to increments)
+ pixel_x += sin(angle)+16*sin(angle)*2
+ pixel_y += cos(angle)+16*cos(angle)*2
+ var/new_x = starting.x
+ var/new_y = starting.y
+ while(pixel_x > 16)
+ pixel_x -= 32
+ new_x++
+ while(pixel_x < -16)
+ pixel_x += 32
+ new_x--
+ while(pixel_y > 16)
+ pixel_y -= 32
+ new_y++
+ while(pixel_y < -16)
+ pixel_y += 32
+ new_y--
+ new_x = Clamp(new_x, 0, world.maxx)
+ new_y = Clamp(new_y, 0, world.maxy)
+ return locate(new_x, new_y, starting.z)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 8e343415f19..b7439079822 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -499,9 +499,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/atom/A = processing_list[1]
processing_list -= A
- for(var/atom/a in A)
- if(!(a in assembled))
- processing_list |= a
+ processing_list |= (A.contents - assembled)
assembled |= A
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 154879f884c..13a67e66940 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -1,8 +1,8 @@
GLOBAL_LIST_EMPTY(clients) //all clients
GLOBAL_LIST_EMPTY(admins) //all clients whom are admins
GLOBAL_PROTECT(admins)
-GLOBAL_LIST_EMPTY(deadmins) //all clients who have used the de-admin verb.
-GLOBAL_PROTECT(deadmins)
+GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb.
+
GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client
GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins
diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm
index e6c678a14cb..b9627a26f27 100644
--- a/code/_onclick/adjacent.dm
+++ b/code/_onclick/adjacent.dm
@@ -25,7 +25,7 @@
* If you are diagonally adjacent, ensure you can pass through at least one of the mutually adjacent square.
* Passing through in this case ignores anything with the LETPASSTHROW pass flag, such as tables, racks, and morgue trays.
*/
-/turf/Adjacent(var/atom/neighbor, var/atom/target = null)
+/turf/Adjacent(atom/neighbor, atom/target = null, atom/movable/mover = null)
var/turf/T0 = get_turf(neighbor)
if(T0 == src) //same turf
@@ -37,7 +37,7 @@
// Non diagonal case
if(T0.x == x || T0.y == y)
// Check for border blockages
- return T0.ClickCross(get_dir(T0,src), border_only = 1, target_atom = target) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target)
+ return T0.ClickCross(get_dir(T0,src), border_only = 1, target_atom = target, mover = mover) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target, mover = mover)
// Diagonal case
var/in_dir = get_dir(T0,src) // eg. northwest (1+8) = 9 (00001001)
@@ -45,14 +45,16 @@
var/d2 = in_dir&12 // eg. west (1+8)&12 (0000 1100) = 8 (0000 1000)
for(var/d in list(d1,d2))
- if(!T0.ClickCross(d, border_only = 1, target_atom = target))
+ if(!T0.ClickCross(d, border_only = 1, target_atom = target, mover = mover))
continue // could not leave T0 in that direction
var/turf/T1 = get_step(T0,d)
- if(!T1 || T1.density || !T1.ClickCross(get_dir(T1,T0) | get_dir(T1,src), border_only = 0, target_atom = target)) //let's check both directions at once
+ if(!T1 || T1.density)
+ continue
+ if(!T1.ClickCross(get_dir(T1,src), border_only = 0, target_atom = target, mover = mover) || !T1.ClickCross(get_dir(T1,T0), border_only = 0, target_atom = target, mover = mover))
continue // couldn't enter or couldn't leave T1
- if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target))
+ if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target, mover = mover))
continue // could not enter src
return 1 // we don't care about our own density
@@ -68,7 +70,7 @@
return TRUE
if(!isturf(loc))
return FALSE
- if(loc.Adjacent(neighbor,target = neighbor))
+ if(loc.Adjacent(neighbor,target = neighbor, mover = src))
return TRUE
return FALSE
@@ -86,9 +88,11 @@
This is defined as any dense ON_BORDER object, or any dense object without LETPASSTHROW.
The border_only flag allows you to not objects (for source and destination squares)
*/
-/turf/proc/ClickCross(target_dir, border_only, target_atom = null)
+/turf/proc/ClickCross(target_dir, border_only, target_atom = null, atom/movable/mover = null)
for(var/obj/O in src)
- if( !O.density || O == target_atom || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf
+ if((mover && O.CanPass(mover,get_step(src,target_dir))) || (!mover && !O.density))
+ continue
+ if(O == target_atom || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf
continue // LETPASSTHROW is used for anything you can click through (or the firedoor special case, see above)
if( O.flags&ON_BORDER) // windows are on border, check them first
diff --git a/code/_onclick/autoclick.dm b/code/_onclick/autoclick.dm
index 23d07e29688..29a704ee7a3 100644
--- a/code/_onclick/autoclick.dm
+++ b/code/_onclick/autoclick.dm
@@ -24,17 +24,6 @@
active_mousedown_item.onMouseUp(object, location, params, mob)
active_mousedown_item = null
-/client/MouseDrag(src_object,atom/over_object,src_location,over_location,src_control,over_control,params)
- mouseParams = params
- mouseLocation = over_location
- mouseObject = over_object
- mouseControlObject = over_control
- if(selected_target[1] && over_object && over_object.IsAutoclickable())
- selected_target[1] = over_object
- selected_target[2] = params
- if(active_mousedown_item)
- active_mousedown_item.onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
-
/mob/proc/CanMobAutoclick(object, location, params)
/mob/living/carbon/CanMobAutoclick(atom/object, location, params)
@@ -63,9 +52,6 @@
/obj/item/proc/onMouseUp(object, location, params, mob)
return
-/obj/item/proc/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
- return
-
/obj/item
var/canMouseDown = FALSE
@@ -90,3 +76,23 @@
mouseLocation = location
mouseObject = object
mouseControlObject = control
+ if(mob && LAZYLEN(mob.mousemove_intercept_objects))
+ for(var/obj/item/I in mob.mousemove_intercept_objects)
+ I.onMouseMove(object, location, control, params)
+
+/obj/item/proc/onMouseMove(object, location, control, params)
+ return
+
+/client/MouseDrag(src_object,atom/over_object,src_location,over_location,src_control,over_control,params)
+ mouseParams = params
+ mouseLocation = over_location
+ mouseObject = over_object
+ mouseControlObject = over_control
+ if(selected_target[1] && over_object && over_object.IsAutoclickable())
+ selected_target[1] = over_object
+ selected_target[2] = params
+ if(active_mousedown_item)
+ active_mousedown_item.onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
+
+/obj/item/proc/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
+ return
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 5c47e1f44d5..87e6bdc47c1 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)
@@ -437,9 +437,15 @@
mouse_opacity = 2
screen_loc = "CENTER"
-/obj/screen/click_catcher/New()
- ..()
- transform = matrix(200, 0, 0, 0, 200, 0)
+/obj/screen/click_catcher/proc/UpdateGreed(view_size_x = 7, view_size_y = 7)
+ screen_loc = "CENTER-[view_size_x],CENTER-[view_size_y]"
+ var/list/ret = list()
+ for(var/X in 0 to (view_size_x * 2))
+ for(var/Y in 0 to (view_size_y * 2))
+ var/obj/screen/click_catcher/CC = new()
+ CC.screen_loc = "EAST-[X],NORTH-[Y]"
+ ret += CC
+ return ret
/obj/screen/click_catcher/Click(location, control, params)
var/list/modifiers = params2list(params)
@@ -447,13 +453,12 @@
var/mob/living/carbon/C = usr
C.swap_hand()
else
- var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr))
+ var/turf/T = screen_loc2turf(screen_loc, get_turf(usr))
params += "&catcher=1"
if(T)
T.Click(location, control, params)
. = 1
-
/* MouseWheelOn */
/mob/proc/MouseWheelOn(atom/A, delta_x, delta_y, params)
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index b792f4399e1..b944f327547 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 1bb3ba52234..3afdabb0ab7 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -143,6 +143,7 @@
return 0
screenmob.client.screen = list()
+ screenmob.client.apply_clickcatcher()
var/display_hud_version = version
if(!display_hud_version) //If 0 or blank, display the next hud version
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 407086f2628..2922a4e0366 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/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 8f558bb1c83..0ccec1f17d9 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/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index acc5d0e13a3..e96bd32ac1e 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -100,7 +100,8 @@
"[name] bites [ML]!")
if(armor >= 2)
return
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
ML.ForceContractDisease(D)
else
ML.visible_message("[src] has attempted to bite [ML]!")
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index b3d4324959f..c32c481291b 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -87,9 +87,8 @@
var/check_randomizer = 0
- var/allow_panic_bunker_bounce = 0 //Send new players somewhere else
- var/panic_server_name = "somewhere else"
- var/panic_address = "byond://" //Reconnect a player this linked server if this server isn't accepting new players
+ var/panic_server_name
+ var/panic_address //Reconnect a player this linked server if this server isn't accepting new players
//IP Intel vars
var/ipintel_email
@@ -455,11 +454,12 @@
if("cross_comms_name")
cross_name = value
if("panic_server_name")
- panic_server_name = value
+ if (value != "\[Put the name here\]")
+ panic_server_name = value
if("panic_server_address")
- panic_address = value
- if(value != "byond:\\address:port")
- allow_panic_bunker_bounce = 1
+ if(value != "byond://address:port")
+ panic_address = value
+
if("medal_hub_address")
global.medal_hub = value
if("medal_hub_password")
diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm
index 5499680a2f1..451bd05606d 100644
--- a/code/controllers/subsystem/disease.dm
+++ b/code/controllers/subsystem/disease.dm
@@ -1,11 +1,8 @@
SUBSYSTEM_DEF(disease)
name = "Disease"
- flags = SS_KEEP_TIMING|SS_NO_INIT
- runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
-
- var/list/currentrun = list()
- var/list/processing = list()
+ flags = SS_NO_FIRE
+ var/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing.
var/list/diseases
var/list/archive_diseases = list()
@@ -15,27 +12,5 @@ SUBSYSTEM_DEF(disease)
if(!diseases)
diseases = subtypesof(/datum/disease)
-/datum/controller/subsystem/disease/Recover()
- currentrun = SSdisease.currentrun
- processing = SSdisease.processing
- diseases = SSdisease.diseases
- archive_diseases = SSdisease.archive_diseases
-
/datum/controller/subsystem/disease/stat_entry(msg)
- ..("P:[processing.len]")
-
-/datum/controller/subsystem/disease/fire(resumed = 0)
- if(!resumed)
- src.currentrun = processing.Copy()
- //cache for sanic speed (lists are references anyways)
- var/list/currentrun = src.currentrun
-
- while(currentrun.len)
- var/datum/thing = currentrun[currentrun.len]
- currentrun.len--
- if(thing)
- thing.process()
- else
- processing.Remove(thing)
- if (MC_TICK_CHECK)
- return
+ ..("P:[active_diseases.len]")
\ No newline at end of file
diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm
index c9ef6b7093d..2cee9a192a1 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 ea6d57088fd..714223936c4 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -14,7 +14,7 @@ SUBSYSTEM_DEF(pai)
var/obj/item/device/paicard/card = locate(href_list["device"])
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)
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
index ec76d623b1a..f4eebe95be0 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/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index f2b0c1701a8..1d45bd8abd3 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -531,7 +531,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/ticker.dm b/code/controllers/subsystem/ticker.dm
index 4a39d1c66a6..bbd9ed3de1d 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -471,15 +471,15 @@ SUBSYSTEM_DEF(ticker)
if(Player.stat != DEAD && !isbrain(Player))
num_survivors++
if(station_evacuated) //If the shuttle has already left the station
- var/area/shuttle_area
+ var/list/area/shuttle_areas
if(SSshuttle && SSshuttle.emergency)
- shuttle_area = SSshuttle.emergency.areaInstance
+ shuttle_areas = SSshuttle.emergency.shuttle_areas
if(!Player.onCentcom() && !Player.onSyndieBase())
to_chat(Player, "You managed to survive, but were marooned on [station_name()]...")
else
num_escapees++
to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].")
- if(get_area(Player) == shuttle_area)
+ if(shuttle_areas[get_area(Player)])
num_shuttle_escapees++
else
to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].")
diff --git a/code/datums/action.dm b/code/datums/action.dm
index f356771d6cd..50499167804 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -236,6 +236,19 @@
name = "Toggle Friendly Fire \[ON\]"
..()
+/datum/action/item_action/synthswitch
+ name = "Change Synthesizer Instrument"
+ desc = "Change the type of instrument your synthesizer is playing as."
+
+/datum/action/item_action/synthswitch/Trigger()
+ if(istype(target, /obj/item/device/instrument/piano_synth))
+ var/obj/item/device/instrument/piano_synth/synth = target
+ var/chosen = input("Choose the type of instrument you want to use", "Instrument Selection", "piano") as null|anything in synth.insTypes
+ if(!synth.insTypes[chosen])
+ return
+ return synth.changeInstrument(chosen)
+ return ..()
+
/datum/action/item_action/vortex_recall
name = "Vortex Recall"
desc = "Recall yourself, and anyone nearby, to an attuned hierophant beacon at any time.
If the beacon is still attached, will detach it."
@@ -367,6 +380,17 @@
active = FALSE
..()
+/datum/action/item_action/instrument
+ name = "Use Instrument"
+ desc = "Use the instrument specified"
+
+/datum/action/item_action/instrument/Trigger()
+ if(istype(target, /obj/item/device/instrument))
+ var/obj/item/device/instrument/I = target
+ I.interact(usr)
+ return
+ return ..()
+
/datum/action/item_action/initialize_ninja_suit
name = "Toggle ninja suit"
diff --git a/code/datums/antagonists/datum_internal_affairs.dm b/code/datums/antagonists/datum_internal_affairs.dm
index e3a8077732b..a07984262e9 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/components/component.dm b/code/datums/components/component.dm
new file mode 100644
index 00000000000..a9b4ab282d0
--- /dev/null
+++ b/code/datums/components/component.dm
@@ -0,0 +1,105 @@
+/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/component/proc/ReceiveSignal(sigtype, list/sig_args, async)
+ var/list/sps = signal_procs
+ var/datum/callback/CB = LAZYACCESS(sps, sigtype)
+ if(!CB)
+ return FALSE
+ if(!async)
+ return CB.Invoke(arglist(sig_args))
+ else
+ return CB.InvokeAsync(arglist(sig_args))
+
+/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
+ if(C.ReceiveSignal(sigtype, sig_args, async))
+ ComponentActivated(C)
+ . = TRUE
+
+// Callback for when a component activates
+/datum/proc/ComponentActivated(datum/component/C)
+
+/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 9a79c477c89..700c76e56ad 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]"
@@ -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
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 77b8aeed6af..84d177a3901 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -1,6 +1,7 @@
/mob/proc/HasDisease(datum/disease/D)
- for(var/datum/disease/DD in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/DD = thing
if(D.IsSame(DD))
return 1
return 0
@@ -39,7 +40,7 @@
var/datum/disease/DD = new D.type(1, D, 0)
viruses += DD
DD.affected_mob = src
- DD.holder = src
+ SSdisease.active_diseases += DD //Add it to the active diseases list, now that it's actually in a mob and being processed.
//Copy properties over. This is so edited diseases persist.
var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars","transformed")
@@ -147,6 +148,9 @@
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
- if(dna && (VIRUSIMMUNE in dna.species.species_traits))
+ if(dna && (VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity)
return 0
+ for(var/thing in D.required_organs)
+ if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs)))
+ return 0
return ..()
\ No newline at end of file
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index cc11d0e6d2e..13ad3ece4e6 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -46,21 +46,23 @@
var/stage_prob = 4
//Other
- var/longevity = 150 //Time in ticks disease stays in objects, Syringes and such are infinite.
var/list/viable_mobtypes = list() //typepaths of viable mobs
var/mob/living/carbon/affected_mob = null
- var/atom/movable/holder = null
var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids
var/infectivity = 65
var/cure_chance = 8
- var/carrier = 0 //If our host is only a carrier
+ var/carrier = FALSE //If our host is only a carrier
+ var/bypasses_immunity = FALSE //Does it skip species virus immunity check? Some things may diseases and not viruses
var/permeability_mod = 1
var/severity = NONTHREAT
var/list/required_organs = list()
var/needs_all_cures = TRUE
var/list/strain_data = list() //dna_spread special bullshit
-
+/datum/disease/Destroy()
+ affected_mob = null
+ SSdisease.active_diseases.Remove(src)
+ return ..()
/datum/disease/proc/stage_act()
var/cure = has_cure()
@@ -93,13 +95,16 @@
if(!. || (needs_all_cures && . < cures.len))
return 0
-/datum/disease/proc/spread(atom/source, force_spread = 0)
+
+/datum/disease/proc/spread(force_spread = 0)
+ if(!affected_mob)
+ return
+
if((spread_flags & SPECIAL || spread_flags & NON_CONTAGIOUS || spread_flags & BLOOD) && !force_spread)
return
- if(affected_mob)
- if( affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10)) )
- return
+ if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10)))
+ return
var/spread_range = 1
@@ -109,15 +114,9 @@
if(spread_flags & AIRBORNE)
spread_range++
- if(!source)
- if(affected_mob)
- source = affected_mob
- else
- return
-
- var/turf/T = source.loc
+ var/turf/T = affected_mob.loc
if(istype(T))
- for(var/mob/living/carbon/C in oview(spread_range, source))
+ for(var/mob/living/carbon/C in oview(spread_range, affected_mob))
var/turf/V = get_turf(C)
if(V)
while(TRUE)
@@ -129,29 +128,6 @@
break
V = Temp
-/datum/disease/process()
- if(!holder)
- SSdisease.processing -= src
- return
-
- if(prob(infectivity))
- spread(holder)
-
- if(affected_mob)
- for(var/datum/disease/D in affected_mob.viruses)
- if(D != src)
- if(IsSame(D))
- qdel(D)
-
- if(holder == affected_mob)
- if(affected_mob.stat != DEAD)
- stage_act()
-
- if(!affected_mob)
- if(prob(70))
- if(--longevity<=0)
- cure()
-
/datum/disease/proc/cure()
if(affected_mob)
@@ -161,20 +137,6 @@
remove_virus()
qdel(src)
-
-/datum/disease/New()
- if(required_organs && required_organs.len)
- if(ishuman(affected_mob))
- var/mob/living/carbon/human/H = affected_mob
- for(var/obj/item/organ/O in required_organs)
- if(!locate(O) in H.bodyparts)
- if(!locate(O) in H.internal_organs)
- cure()
- return
-
- SSdisease.processing += src
-
-
/datum/disease/proc/IsSame(datum/disease/D)
if(istype(src, D.type))
return 1
@@ -191,11 +153,6 @@
return type
-/datum/disease/Destroy()
- SSdisease.processing.Remove(src)
- return ..()
-
-
/datum/disease/proc/IsSpreadByTouch()
if(spread_flags & CONTACT_FEET || spread_flags & CONTACT_HANDS || spread_flags & CONTACT_GENERAL)
return 1
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 2e22fd59e04..f71055f3c63 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -93,7 +93,7 @@
if(!(istype(D, /datum/disease/advance)))
return 0
- if(src.GetDiseaseID() != D.GetDiseaseID())
+ if(GetDiseaseID() != D.GetDiseaseID())
return 0
return 1
@@ -118,7 +118,7 @@
// Mix the symptoms of two diseases (the src and the argument)
/datum/disease/advance/proc/Mix(datum/disease/advance/D)
- if(!(src.IsSame(D)))
+ if(!(IsSame(D)))
var/list/possible_symptoms = shuffle(D.symptoms)
for(var/datum/symptom/S in possible_symptoms)
AddSymptom(S.Copy())
@@ -158,7 +158,6 @@
return generated
/datum/disease/advance/proc/Refresh(new_name = FALSE)
- //to_chat(world, "[src.name] \ref[src] - REFRESH!")
GenerateProperties()
AssignProperties()
id = null
@@ -411,7 +410,7 @@
D.AssignName(new_name)
D.Refresh()
- for(var/datum/disease/advance/AD in SSdisease.processing)
+ for(var/datum/disease/advance/AD in SSdisease.active_diseases)
AD.Refresh()
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
@@ -426,13 +425,6 @@
name_symptoms += S.name
message_admins("[key_name_admin(user)] has triggered a custom virus outbreak of [D.name]! It has these symptoms: [english_list(name_symptoms)]")
-/*
-/mob/verb/test()
-
- for(var/datum/disease/D in SSdisease.processing)
- to_chat(src, "[D.name] - [D.holder]")
-*/
-
/datum/disease/advance/proc/totalStageSpeed()
return properties["stage_rate"]
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index dec80237e33..084e2a95196 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -64,5 +64,5 @@ BONUS
addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 12)
addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 18)
if(infective)
- A.spread(A.holder, 1)
+ A.spread(1)
diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm
index 5e430b3297f..b8d80b80234 100644
--- a/code/datums/diseases/advance/symptoms/fire.dm
+++ b/code/datums/diseases/advance/symptoms/fire.dm
@@ -63,14 +63,14 @@ Bonus
M.adjust_fire_stacks(1 * power)
M.adjustFireLoss(3 * power)
if(infective)
- A.spread(A.holder, 2)
+ A.spread(2)
return 1
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
M.adjust_fire_stacks(3 * power)
M.adjustFireLoss(5 * power)
if(infective)
- A.spread(A.holder, 4)
+ A.spread(4)
return 1
/*
diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm
index dee8067dab0..8933ebcdb52 100644
--- a/code/datums/diseases/advance/symptoms/sneeze.dm
+++ b/code/datums/diseases/advance/symptoms/sneeze.dm
@@ -44,4 +44,4 @@ Bonus
M.emote("sniff")
else
M.emote("sneeze")
- A.spread(A.holder, 4 + power)
\ No newline at end of file
+ A.spread(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 f7cabe349d4..9a21dcf4f7d 100644
--- a/code/datums/diseases/advance/symptoms/symptoms.dm
+++ b/code/datums/diseases/advance/symptoms/symptoms.dm
@@ -29,7 +29,7 @@
/datum/symptom/New()
var/list/S = SSdisease.list_symptoms
for(var/i = 1; i <= S.len; i++)
- if(src.type == S[i])
+ if(type == S[i])
id = "[i]"
return
CRASH("We couldn't assign an ID!")
diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm
index 2db4d1082e0..780cb0b1e55 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/appendicitis.dm b/code/datums/diseases/appendicitis.dm
index eba5e1173b9..8c681b8ec3e 100644
--- a/code/datums/diseases/appendicitis.dm
+++ b/code/datums/diseases/appendicitis.dm
@@ -8,11 +8,11 @@
permeability_mod = 1
desc = "If left untreated the subject will become very weak, and may vomit often."
severity = "Dangerous!"
- longevity = 1000
disease_flags = CAN_CARRY|CAN_RESIST
spread_flags = NON_CONTAGIOUS
visibility_flags = HIDDEN_PANDEMIC
required_organs = list(/obj/item/organ/appendix)
+ bypasses_immunity = TRUE // Immunity is based on not having an appendix; this isn't a virus
/datum/disease/appendicitis/stage_act()
..()
diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm
index 6fdcad94567..6ff38ce0fd1 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/brainrot.dm b/code/datums/diseases/brainrot.dm
index 77cef7a8d3d..a4b6d52bc89 100644
--- a/code/datums/diseases/brainrot.dm
+++ b/code/datums/diseases/brainrot.dm
@@ -9,7 +9,7 @@
viable_mobtypes = list(/mob/living/carbon/human)
cure_chance = 15//higher chance to cure, since two reagents are required
desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication."
- required_organs = list(/obj/item/bodypart/head)
+ required_organs = list(/obj/item/organ/brain)
severity = DANGEROUS
/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR
diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm
index 8c1f6fed1fa..91f5ece4b24 100644
--- a/code/datums/diseases/dna_spread.dm
+++ b/code/datums/diseases/dna_spread.dm
@@ -25,8 +25,8 @@
//Absorbs the target DNA.
strain_data["dna"] = new affected_mob.dna.type
affected_mob.dna.copy_dna(strain_data["dna"])
- src.carrier = 1
- src.stage = 4
+ carrier = TRUE
+ stage = 4
return
switch(stage)
diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm
index 7efcf704085..1571c8719b7 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 b3f51d19016..99ea04b0556 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/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm
index 55921f56f96..adaf78375ce 100644
--- a/code/datums/diseases/pierrot_throat.dm
+++ b/code/datums/diseases/pierrot_throat.dm
@@ -10,7 +10,6 @@
permeability_mod = 0.75
desc = "If left untreated the subject will probably drive others to insanity."
severity = MEDIUM
- longevity = 400
/datum/disease/pierrot_throat/stage_act()
..()
diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm
index 7b239fb7baf..4c528b61b17 100644
--- a/code/datums/diseases/rhumba_beat.dm
+++ b/code/datums/diseases/rhumba_beat.dm
@@ -13,7 +13,7 @@
/datum/disease/rhumba_beat/stage_act()
..()
if(affected_mob.ckey == "rosham")
- src.cure()
+ cure()
return
switch(stage)
if(2)
diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index 30b11b8f696..77a56bc41ab 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -73,7 +73,6 @@
permeability_mod = 1
cure_chance = 1
disease_flags = CAN_CARRY|CAN_RESIST
- longevity = 30
desc = "Monkeys with this disease will bite humans, causing humans to mutate into a monkey."
severity = BIOHAZARD
stage_prob = 4
diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm
index 4b57c2655b6..c8e2a4609be 100644
--- a/code/datums/diseases/tuberculosis.dm
+++ b/code/datums/diseases/tuberculosis.dm
@@ -1,4 +1,5 @@
/datum/disease/tuberculosis
+ form = "Disease"
name = "Fungal tuberculosis"
max_stages = 5
spread_text = "Airborne"
@@ -8,8 +9,9 @@
viable_mobtypes = list(/mob/living/carbon/human)
cure_chance = 5//like hell are you getting out of hell
desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue."
- required_organs = list(/obj/item/bodypart/head)
+ required_organs = list(/obj/item/organ/lungs)
severity = DANGEROUS
+ bypasses_immunity = TRUE // TB primarily impacts the lungs; it's also bacterial or fungal in nature; viral immunity should do nothing.
/datum/disease/tuberculosis/stage_act() //it begins
..()
diff --git a/code/datums/forced_movement.dm b/code/datums/forced_movement.dm
index 62ecb35171f..73bc89748c7 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/topic_input.dm b/code/datums/helper_datums/topic_input.dm
index 236682dc2d0..3e43905f1fe 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 76de0329cd7..cfc4c13d91d 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 f23f01d068e..c38e5e68636 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -629,10 +629,11 @@
text = "[text]: "
if (ishuman(current))
text += "healthy|infected|HUMAN|other"
- else if (ismonkey(current))
- var/found = 0
- for(var/datum/disease/D in current.viruses)
- if(istype(D, /datum/disease/transformation/jungle_fever)) found = 1
+ else if(ismonkey(current))
+ var/found = FALSE
+ for(var/datum/disease/transformation/jungle_fever/JF in current.viruses)
+ found = TRUE
+ break
if(found)
text += "healthy|INFECTED|human|other"
@@ -1342,7 +1343,8 @@
src = M.mind
//to_chat(world, "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!")
else if (istype(M) && length(M.viruses))
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
D.cure(0)
if("infected")
if (check_rights(R_ADMIN, 0))
@@ -1362,10 +1364,9 @@
var/mob/living/carbon/human/H = current
var/mob/living/carbon/monkey/M = current
if (istype(M))
- for(var/datum/disease/D in M.viruses)
- if (istype(D,/datum/disease/transformation/jungle_fever))
- D.cure(0)
- sleep(0) //because deleting of virus is doing throught spawn(0)
+ for(var/datum/disease/transformation/jungle_fever/JF in M.viruses)
+ JF.cure(0)
+ sleep(0) //because deleting of virus is doing throught spawn(0) //What
log_admin("[key_name(usr)] attempting to humanize [key_name(current)]")
message_admins("[key_name_admin(usr)] attempting to humanize [key_name_admin(current)]")
H = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG)
@@ -1592,9 +1593,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/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 6f8b58a0bfc..485ca00515b 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -286,6 +286,12 @@
owner.maxHealth *= 10
owner.bruteloss *= 10
owner.fireloss *= 10
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ for(var/X in C.bodyparts)
+ var/obj/item/bodypart/BP = X
+ BP.brute_dam *= 10
+ BP.burn_dam *= 10
owner.toxloss *= 10
owner.oxyloss *= 10
owner.cloneloss *= 10
@@ -363,6 +369,12 @@
owner.maxHealth *= 0.1
owner.bruteloss *= 0.1
owner.fireloss *= 0.1
+ if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ for(var/X in C.bodyparts)
+ var/obj/item/bodypart/BP = X
+ BP.brute_dam *= 0.1
+ BP.burn_dam *= 0.1
owner.toxloss *= 0.1
owner.oxyloss *= 0.1
owner.cloneloss *= 0.1
diff --git a/code/game/area/areas/holodeck.dm b/code/game/area/areas/holodeck.dm
index 7bf213be523..51fd4e16770 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 148a18108ad..02113e92a3f 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -113,20 +113,27 @@
if(T.z == ZLEVEL_TRANSIT)
for(var/A in SSshuttle.mobile)
var/obj/docking_port/mobile/M = A
- if(M.launch_status == ENDGAME_TRANSIT && T in M.areaInstance)
- return TRUE
+ if(M.launch_status == ENDGAME_TRANSIT)
+ for(var/place in M.shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(T in shuttle_area)
+ return TRUE
if(T.z != ZLEVEL_CENTCOM)//if not, don't bother
return FALSE
- //check for centcomm shuttles
+ //Check for centcom itself
+ if(istype(T.loc, /area/centcom))
+ return TRUE
+
+ //Check for centcomm shuttles
for(var/A in SSshuttle.mobile)
var/obj/docking_port/mobile/M = A
- if(M.launch_status == ENDGAME_LAUNCHED && T in M.areaInstance)
- return TRUE
-
- //finally check for centcom itself
- return istype(T.loc,/area/centcom)
+ if(M.launch_status == ENDGAME_LAUNCHED)
+ for(var/place in M.shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(T in shuttle_area)
+ return TRUE
/atom/proc/onSyndieBase()
var/turf/T = get_turf(src)
@@ -136,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
@@ -179,7 +186,7 @@
return
-/atom/proc/Bumped(AM as mob|obj)
+/atom/proc/CollidedWith(atom/movable/AM)
return
// Convenience proc to see if a container is open for chemistry handling
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 7e9436d5464..dd778b453e5 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -228,7 +228,7 @@
. = 1
if(!A || QDELETED(A))
return
- A.Bumped(src)
+ A.CollidedWith(src)
/atom/movable/proc/forceMove(atom/destination)
if(destination)
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 2821356db52..6f7d64407de 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -62,7 +62,8 @@
//called when a carbon changes virus
/mob/living/carbon/proc/check_virus()
var/threat = 0
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
if(!(D.visibility_flags & HIDDEN_SCANNER))
if (D.severity != NONTHREAT) //a buffing virus gets an icon
threat = 2
@@ -199,17 +200,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 3ca2e8f00ed..b1cea567a1a 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/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm
index a0c9562aa4e..fa17dde687a 100644
--- a/code/game/gamemodes/changeling/powers/panacea.dm
+++ b/code/game/gamemodes/changeling/powers/panacea.dm
@@ -30,6 +30,9 @@
user.reagents.add_reagent("antihol", 10)
user.reagents.add_reagent("mannitol", 25)
- for(var/datum/disease/D in user.viruses)
+ for(var/thing in user.viruses)
+ var/datum/disease/D = thing
+ if(D.severity == NONTHREAT)
+ continue
D.cure()
return TRUE
diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
index 74d360efd1f..72ed326b26a 100644
--- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
+++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
@@ -109,10 +109,10 @@
return TRUE
return FALSE
-/obj/effect/clockwork/spatial_gateway/Bumped(atom/A)
+/obj/effect/clockwork/spatial_gateway/CollidedWith(atom/movable/AM)
..()
- if(A && !QDELETED(A))
- pass_through_gateway(A)
+ if(!QDELETED(AM))
+ pass_through_gateway(AM, FALSE)
/obj/effect/clockwork/spatial_gateway/proc/pass_through_gateway(atom/movable/A, no_cost)
if(!linked_gateway)
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 15dc5bbe52a..fa3b1d16b56 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
@@ -50,9 +50,8 @@
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
- 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)
+/obj/item/clockwork/slab/cyborg/engineer //three scriptures, plus a fabricator
+ quickbound = list(/datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/interdiction_lens)
/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, \
@@ -127,7 +126,7 @@
production_time = world.time + SLAB_PRODUCTION_TIME + production_slowdown
var/mob/living/L
L = get_atom_on_turf(src, /mob/living)
- if(istype(L) && can_recite_scripture(L))
+ if(istype(L) && (no_cost || can_recite_scripture(L)))
var/component_to_generate = target_component_id
if(!component_to_generate)
component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of
@@ -258,7 +257,7 @@
if(busy)
to_chat(user, "[src] refuses to work, displaying the message: \"[busy]!\"")
return 0
- if(!can_recite_scripture(user))
+ if(!no_cost && !can_recite_scripture(user))
to_chat(user, "[src] hums fitfully in your hands, but doesn't seem to do anything...")
return 0
access_display(user)
@@ -278,7 +277,7 @@
ui.open()
/obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user)
- if(!scripture || !user || !user.canUseTopic(src) || !can_recite_scripture(user))
+ if(!scripture || !user || !user.canUseTopic(src) || (!no_cost && !can_recite_scripture(user)))
return FALSE
if(user.get_active_held_item() != src)
to_chat(user, "You need to hold the slab in your active hand to recite scripture!")
@@ -408,10 +407,6 @@
dat += "Spear: A Ratvarian spear, which is a very powerful melee weapon. "
dat += "Fabricator: A replica fabricator, which converts objects into clockwork versions.
"
dat += "Constructs "
- dat += "Vessel: A soul vessel, a clockwork brain used to activate constructs. "
- dat += "Shell: A construct shell of some type that can accept a soul vessel to activate. "
- dat += "Scarab: A cogscarab construct, which is a drone that maintains the cult's bases. "
- dat += "Fragment: An anim[prob(1) ? "e" : "a"] fragment, which is a fragile but powerful offensive construct. "
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. "
diff --git a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm b/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm
deleted file mode 100644
index 2df47705a41..00000000000
--- a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm
+++ /dev/null
@@ -1,93 +0,0 @@
-//Anima fragment: Low health and high melee damage, but slows down when struck. Created by inserting a soul vessel into an empty fragment.
-/mob/living/simple_animal/hostile/clockwork/fragment
- name = "anima fragment"
- desc = "An ominous humanoid shell with a spinning cogwheel as its head, lifted by a jet of blazing red flame."
- icon_state = "anime_fragment"
- health = 90
- maxHealth = 90
- speed = -1
- melee_damage_lower = 18
- melee_damage_upper = 18
- attacktext = "crushes"
- attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
- loot = list(/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment)
- weather_immunities = list("lava")
- movement_type = FLYING
- light_range = 2
- light_power = 0.8
- playstyle_string = "You are an anima fragment, a clockwork creation of Ratvar. As a fragment, you have decent health that very gradually regenerates, do \
- decent damage, and move at extreme speed in addition to being immune to extreme temperatures and pressures. Taking damage, and slamming into non-Servants, will temporarily slow you down, however.\n\
- Your goal is to serve the Justiciar and his servants in any way you can. You yourself are one of these servants, and will be able to utilize anything they can, assuming it doesn't require \
- opposable thumbs."
- var/movement_delay_time //how long the fragment is slowed after being hit
-
-/mob/living/simple_animal/hostile/clockwork/fragment/Initialize()
- . = ..()
- if(prob(1))
- name = "anime fragment"
- desc = "I-it's not like I want to show you the light of the Justiciar or anything, B-BAKA!"
-
-/mob/living/simple_animal/hostile/clockwork/fragment/Life()
- ..()
- if(GLOB.ratvar_awakens)
- adjustHealth(-5)
- else if(movement_delay_time > world.time)
- adjustHealth(-0.2)
- else
- adjustHealth(-1)
-
-/mob/living/simple_animal/hostile/clockwork/fragment/Stat()
- ..()
- if(statpanel("Status") && movement_delay_time > world.time && !GLOB.ratvar_awakens)
- stat(null, "Movement delay(seconds): [max(round((movement_delay_time - world.time)*0.1, 0.1), 0)]")
-
-/mob/living/simple_animal/hostile/clockwork/fragment/death(gibbed)
- visible_message("[src]'s flame jets cut out as it falls to the floor with a tremendous crash.", \
- "Your gears seize up. Your flame jets flicker out. Your soul vessel belches smoke as you helplessly crash down.")
- ..()
-
-/mob/living/simple_animal/hostile/clockwork/fragment/Process_Spacemove(movement_dir = 0)
- return 1
-
-/mob/living/simple_animal/hostile/clockwork/fragment/Collide(atom/movable/AM)
- . = ..()
- if(movement_delay_time <= world.time && next_move <= world.time && isliving(AM) && !is_servant_of_ratvar(AM))
- var/mob/living/L = AM
- if(L.stat) //we don't want to attack them if they're unconscious or dead because that feels REALLY BAD for the player
- return
- var/previousattacktext = attacktext
- attacktext = "slams into"
- UnarmedAttack(L)
- attacktext = previousattacktext
- changeNext_move(CLICK_CD_MELEE)
- if(!GLOB.ratvar_awakens)
- adjustHealth(4)
- adjust_movement_delay(10) //with the above damage, total of 20 movement delay plus speed = 0 due to damage
-
-/mob/living/simple_animal/hostile/clockwork/fragment/emp_act(severity)
- adjust_movement_delay(50/severity)
-
-/mob/living/simple_animal/hostile/clockwork/fragment/movement_delay()
- . = ..()
- if(movement_delay_time > world.time && !GLOB.ratvar_awakens)
- . += min((movement_delay_time - world.time) * 0.1, 10) //the more delay we have, the slower we go
-
-/mob/living/simple_animal/hostile/clockwork/fragment/adjustHealth(amount)
- . = ..()
- if(amount > 0)
- adjust_movement_delay(amount*2.5)
-
-/mob/living/simple_animal/hostile/clockwork/fragment/proc/adjust_movement_delay(amount)
- if(GLOB.ratvar_awakens) //if ratvar is up we ignore movement delay
- movement_delay_time = 0
- else if(movement_delay_time > world.time)
- movement_delay_time = movement_delay_time + amount
- else
- movement_delay_time = world.time + amount
-
-/mob/living/simple_animal/hostile/clockwork/fragment/updatehealth()
- ..()
- if(health == maxHealth)
- speed = initial(speed)
- else
- speed = 0 //slow down if damaged at all
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 27bf4551eb8..86adedb2cbd 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm
@@ -151,26 +151,6 @@
return TRUE
-//Anima Fragment: Creates an empty anima fragment, which produces an anima fragment that moves at extreme speed and does high damage.
-/datum/clockwork_scripture/create_object/anima_fragment
- descname = "Fast Soul Vessel Shell"
- name = "Anima Fragment"
- desc = "Creates a large shell fitted for soul vessels. Adding an active soul vessel to it results in a powerful construct with decent health and slight regeneration, notable melee power, \
- and exceptional speed, though taking damage will temporarily slow it down."
- invocations = list("Call forth...", "...the soldiers of Armorer.")
- channel_time = 80
- consumed_components = list(BELLIGERENT_EYE = 2, VANGUARD_COGWHEEL = 2, REPLICANT_ALLOY = 4)
- object_path = /obj/structure/destructible/clockwork/shell/fragment
- creator_message = "You form an anima fragment, a powerful soul vessel receptacle."
- observer_message = "The slab disgorges a puddle of black metal that expands and forms into a strange shell!"
- usage_tip = "Useless without a soul vessel and should not be created without one."
- tier = SCRIPTURE_APPLICATION
- primary_component = REPLICANT_ALLOY
- sort_priority = 4
- quickbind = TRUE
- 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.
/datum/clockwork_scripture/create_object/sigil_of_transmission
descname = "Structure Battery"
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 6d8402ede0e..68f998af2bb 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
@@ -29,25 +29,6 @@
return ..()
-//Cogscarab: Creates an empty cogscarab shell, which produces a cogscarab dedicated to maintaining and defending the cult.
-/datum/clockwork_scripture/create_object/cogscarab
- descname = "Constructor Soul Vessel Shell"
- name = "Cogscarab"
- desc = "Creates a small shell fitted for soul vessels. Adding an active soul vessel to it results in a small construct with tools and an inbuilt fabricator."
- invocations = list("Call forth...", "...the workers of Armorer.")
- channel_time = 60
- consumed_components = list(BELLIGERENT_EYE = 2, HIEROPHANT_ANSIBLE = 1)
- object_path = /obj/structure/destructible/clockwork/shell/cogscarab
- creator_message = "You form a cogscarab, a constructor soul vessel receptacle."
- observer_message = "The slab disgorges a puddle of black metal that contracts and forms into a strange shell!"
- usage_tip = "Useless without a soul vessel and should not be created without one."
- tier = SCRIPTURE_SCRIPT
- primary_component = BELLIGERENT_EYE
- sort_priority = 2
- quickbind = TRUE
- quickbind_desc = "Creates a Cogscarab Shell, which produces a Cogscarab when filled with a Soul Vessel."
-
-
//Vitality Matrix: Creates a sigil which will drain health from nonservants and can use that health to heal or even revive servants.
/datum/clockwork_scripture/create_object/vitality_matrix
descname = "Trap, Damage to Healing"
@@ -201,26 +182,6 @@
quickbind_desc = "Creates a Sigil of Submission, which will convert one non-Servant that remains on it."
-//Soul Vessel: Creates a soul vessel, which can seek a ghost or be used on the uncovered head of a dead or dying human to take their brain.
-/datum/clockwork_scripture/create_object/soul_vessel
- descname = "Clockwork Posibrain"
- name = "Soul Vessel"
- desc = "Forms an ancient positronic brain with an overriding directive to serve Ratvar."
- invocations = list("Herd the souls of...", "...the blasphemous damned!")
- channel_time = 30
- consumed_components = list(VANGUARD_COGWHEEL = 1, GEIS_CAPACITOR = 2)
- whispered = TRUE
- object_path = /obj/item/device/mmi/posibrain/soul_vessel
- creator_message = "You form a soul vessel, which can be used in-hand to attract spirits, or used on an unconscious or dead human to extract their consciousness."
- usage_tip = "The vessel can be used as a teleport target for Spatial Gateway, though it is generally better-used by placing it in a shell or cyborg body."
- tier = SCRIPTURE_SCRIPT
- space_allowed = TRUE
- primary_component = GEIS_CAPACITOR
- sort_priority = 6
- quickbind = TRUE
- quickbind_desc = "Creates a Soul Vessel, which can be placed in construct shells and cyborg bodies once filled."
-
-
//Replica Fabricator: Creates a replica fabricator, used to convert objects and repair clockwork structures.
/datum/clockwork_scripture/create_object/replica_fabricator
descname = "Replaces Objects with Ratvarian Versions"
diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm
index 7c5064127a6..3771be0271c 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)
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 edff185140f..7e335dd9384 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
@@ -200,6 +200,11 @@
var/dist = cheap_hypotenuse(T.x, T.y, x, y)
if(dist < convert_dist)
T.ratvar_act(FALSE, TRUE, 3)
+ for(var/obj/O in orange(1, src))
+ if(!O.pulledby && !istype(O, /obj/effect) && O.density)
+ if(!step_away(O, src, 2) || get_dist(O, src) < 2)
+ O.take_damage(50, BURN, "bomb")
+ O.update_icon()
if(still_needs_components())
if(!first_sound_played)
priority_announce("Massive energy anomaly detected on short-range scanners. Attempting to triangulate location...", "Anomaly Alert")
@@ -219,11 +224,6 @@
update_slab_info()
if(still_needs_components())
return
- for(var/obj/O in orange(1, src))
- if(!O.pulledby && !istype(O, /obj/effect) && O.density)
- if(!step_away(O, src, 2) || get_dist(O, src) < 2)
- O.take_damage(50, BURN, "bomb")
- O.update_icon()
progress_in_seconds += GATEWAY_SUMMON_RATE
switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND)
diff --git a/code/game/gamemodes/clock_cult/clock_structures/clock_shells.dm b/code/game/gamemodes/clock_cult/clock_structures/clock_shells.dm
deleted file mode 100644
index a2f1022abcc..00000000000
--- a/code/game/gamemodes/clock_cult/clock_structures/clock_shells.dm
+++ /dev/null
@@ -1,48 +0,0 @@
-//Useless on their own, these shells can create powerful constructs.
-/obj/structure/destructible/clockwork/shell
- construction_value = 0
- anchored = FALSE
- density = FALSE
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- var/mobtype = /mob/living/simple_animal/hostile/clockwork
- var/spawn_message = " is an error and you should yell at whoever spawned this shell."
-
-/obj/structure/destructible/clockwork/shell/attackby(obj/item/I, mob/living/user, params)
- if(istype(I, /obj/item/device/mmi/posibrain/soul_vessel))
- if(!is_servant_of_ratvar(user))
- ..()
- return 0
- var/obj/item/device/mmi/posibrain/soul_vessel/S = I
- if(!S.brainmob)
- to_chat(user, "[S] is inactive! Turn it on or capture a mind first.")
- return 0
- if(S.brainmob && (!S.brainmob.client || !S.brainmob.mind))
- to_chat(user, "[S]'s trapped consciousness appears inactive!")
- return 0
- user.visible_message("[user] places [S] in [src], where it fuses to the shell.", "You place [S] in [src], fusing it to the shell.")
- var/mob/living/simple_animal/A = new mobtype(get_turf(src))
- A.visible_message("[src][spawn_message]")
- S.brainmob.mind.transfer_to(A)
- A.fully_replace_character_name(null, "[findtext(A.name, initial(A.name)) ? "[initial(A.name)]":"[A.name]"] ([S.brainmob.name])")
- user.drop_item()
- qdel(S)
- qdel(src)
- return 1
- else
- return ..()
-
-/obj/structure/destructible/clockwork/shell/cogscarab
- name = "cogscarab shell"
- desc = "A small brass shell with a cube-shaped receptable in its center. It gives off an aura of obsessive perfectionism."
- clockwork_desc = "A dormant receptable that, when powered with a soul vessel, will become a weak construct with an inbuilt fabricator."
- icon_state = "clockdrone_shell"
- mobtype = /mob/living/simple_animal/drone/cogscarab
- spawn_message = "'s eyes blink open, glowing bright red."
-
-/obj/structure/destructible/clockwork/shell/fragment
- name = "fragment shell"
- desc = "A massive brass shell with a small cube-shaped receptable in its center. It gives off an aura of contained power."
- clockwork_desc = "A dormant receptable that, when powered with a soul vessel, will become a powerful construct."
- icon_state = "anime_fragment"
- mobtype = /mob/living/simple_animal/hostile/clockwork/fragment
- spawn_message = " whirs and rises from the ground on a flickering jet of reddish fire."
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 bd315353b93..ac0365c1482 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/taunting_trail.dm b/code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm
index fdf7f882e46..9d4667ee9f3 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm
@@ -43,7 +43,7 @@
affect_mob(AM)
return ..()
-/obj/structure/destructible/clockwork/taunting_trail/Bumped(atom/movable/AM)
+/obj/structure/destructible/clockwork/taunting_trail/CollidedWith(atom/movable/AM)
affect_mob(AM)
return ..()
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 04364ae1c35..d7bf5e9b9ef 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/devil/devil.dm b/code/game/gamemodes/devil/devil.dm
index c6f1620c909..f69b50bc795 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/events.dm b/code/game/gamemodes/events.dm
index 7be3f8f918f..d8cb74f375f 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 b1b5da2cd2c..cc8a71d062a 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()
return 0
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index 51d5d5150bc..37fbfb53366 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 1a145d1227a..ba18ad75780 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/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 0e4a11f8ab3..d4da428e4eb 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]
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index d8bdca034e8..3f45f69cdda 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 4ca4e47a5b5..06e4a84569c 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 13e86dd5d39..a118a979b47 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
@@ -133,10 +133,9 @@
to_chat(owner, "You feel sick.")
var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis)
var/datum/disease/D = new virus_type()
- D.carrier = 1
+ D.carrier = TRUE
owner.viruses += D
D.affected_mob = owner
- D.holder = owner
owner.med_hud_set_status()
diff --git a/code/game/gamemodes/miniantags/monkey/monkey.dm b/code/game/gamemodes/miniantags/monkey/monkey.dm
index 20ba54afc46..da9f4b61f17 100644
--- a/code/game/gamemodes/miniantags/monkey/monkey.dm
+++ b/code/game/gamemodes/miniantags/monkey/monkey.dm
@@ -60,7 +60,6 @@
var/datum/disease/D = new /datum/disease/transformation/jungle_fever
D.visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
- D.holder = carriermind.current
D.affected_mob = carriermind.current
carriermind.current.viruses += D
..()
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index cdae6718fda..63f723b7c2c 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 962fd0a6fcf..51fe3820d80 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -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/objective.dm b/code/game/gamemodes/objective.dm
index 21b1180b3d3..3633146e4e7 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -240,9 +240,7 @@
return 0
if(issilicon(owner.current))
return 0
-
- var/area/A = get_area(owner.current)
- if(SSshuttle.emergency.areaInstance != A)
+ if(SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
return 0
return SSshuttle.emergency.is_hijacked()
@@ -255,40 +253,31 @@
/datum/objective/hijackclone/check_completion()
if(!owner.current)
- return 0
+ return FALSE
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 0
-
- var/area/A = SSshuttle.emergency.areaInstance
+ return FALSE
+ var/in_shuttle = FALSE
for(var/mob/living/player in GLOB.player_list) //Make sure nobody else is onboard
- if(player.mind && player.mind != owner)
- if(player.stat != DEAD)
- if(issilicon(player)) //Borgs are technically dead anyways
- continue
- if(isanimal(player)) //animals don't count
- continue
- if(isbrain(player)) //also technically dead
- continue
- if(get_area(player) == A)
+ if(SSshuttle.emergency.shuttle_areas[get_area(player)])
+ if(player.mind && player.mind != owner)
+ if(player.stat != DEAD)
+ if(issilicon(player)) //Borgs are technically dead anyways
+ continue
+ if(isanimal(player)) //animals don't count
+ continue
+ if(isbrain(player)) //also technically dead
+ continue
var/location = get_turf(player.mind.current)
- if(player.real_name != owner.current.real_name && !istype(location, /turf/open/floor/plasteel/shuttle/red) && !istype(location, /turf/open/floor/mineral/plastitanium/brig))
- return 0
-
- for(var/mob/living/player in GLOB.player_list) //Make sure at least one of you is onboard
- if(player.mind && player.mind != owner)
- if(player.stat != DEAD)
- if(issilicon(player)) //Borgs are technically dead anyways
- continue
- if(isanimal(player)) //animals don't count
- continue
- if(isbrain(player)) //also technically dead
- continue
- if(get_area(player) == A)
- var/location = get_turf(player.mind.current)
- if(player.real_name == owner.current.real_name && !istype(location, /turf/open/floor/plasteel/shuttle/red) && !istype(location, /turf/open/floor/mineral/plastitanium/brig))
- return 1
- return 0
+ if(istype(location, /turf/open/floor/plasteel/shuttle/red))
+ continue
+ if(istype(location, /turf/open/floor/mineral/plastitanium/brig))
+ continue
+ if(player.real_name != owner.current.real_name)
+ return FALSE
+ else
+ in_shuttle = TRUE
+ return in_shuttle
/datum/objective/block
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
@@ -301,14 +290,12 @@
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
return 1
- var/area/A = SSshuttle.emergency.areaInstance
-
for(var/mob/living/player in GLOB.player_list)
if(issilicon(player))
continue
if(player.mind)
if(player.stat != DEAD)
- if(get_area(player) == A)
+ if(get_area(player) in SSshuttle.emergency.shuttle_areas)
return 0
return 1
@@ -323,10 +310,8 @@
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
return 1
- var/area/A = SSshuttle.emergency.areaInstance
-
for(var/mob/living/player in GLOB.player_list)
- if(get_area(player) == A && player.mind && player.stat != DEAD && ishuman(player))
+ if(get_area(player) in SSshuttle.emergency.shuttle_areas && player.mind && player.stat != DEAD && ishuman(player))
var/mob/living/carbon/human/H = player
if(H.dna.species.id != "human")
return 0
@@ -701,7 +686,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
explanation_text = "Destroy [target.name], the experimental AI."
else
explanation_text = "Free Objective"
-
+
/datum/objective/destroy/internal
var/stolen = FALSE //Have we already eliminated this target?
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index a17a9d97fb0..51a2c6c4865 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 47b0046aa9f..d7207f949a9 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/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 747560f31b8..10766a34998 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 9186872f586..d5d691dae90 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -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 0a6e4715ed0..4f691e053f1 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/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 58031f0a3c1..5b5c9bee34c 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -177,6 +177,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
..(severity)
/obj/machinery/announcement_system/emag_act()
- if(!emagged)
- emagged = TRUE
- act_up()
+ if(emagged)
+ return
+ emagged = TRUE
+ act_up()
diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm
new file mode 100644
index 00000000000..05d6a480641
--- /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 11c54d4d992..1164851206a 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/buttons.dm b/code/game/machinery/buttons.dm
index ce81c1c6b7e..f6ff372fbb5 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -103,9 +103,12 @@
return ..()
/obj/machinery/button/emag_act(mob/user)
- req_access = list()
- req_one_access = list()
- playsound(src.loc, "sparks", 100, 1)
+ if(emagged)
+ return
+ req_access = null
+ req_one_access = null
+ playsound(src, "sparks", 100, 1)
+ emagged = TRUE
/obj/machinery/button/attack_ai(mob/user)
if(!panel_open)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 2ba6b733bdf..6b286fd09d5 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.
@@ -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))
@@ -365,7 +365,7 @@
fl.forceMove(T)
unattached_flesh.Cut()
mess = FALSE
- new /obj/effect/gibspawner/generic(loc)
+ new /obj/effect/gibspawner/generic(get_turf(src))
audible_message("You hear a splat.")
icon_state = "pod_0"
return
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index b65a2200529..f0b630ea600 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 a102c9bd8a1..ea992de697f 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
@@ -192,7 +192,7 @@
logs = list()
interact(usr) //Refresh the UI after a filter changes
-/obj/machinery/computer/apc_control/emag_act(mob/living/user)
+/obj/machinery/computer/apc_control/emag_act(mob/user)
if(emagged)
return
user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.")
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 0ad69125af9..286de0bcb81 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -297,22 +297,23 @@
/obj/machinery/computer/arcade/battle/emag_act(mob/user)
- if(!emagged)
- temp = "If you die in the game, you die for real!"
- player_hp = 30
- player_mp = 10
- enemy_hp = 45
- enemy_mp = 20
- gameover = FALSE
- blocked = FALSE
+ if(emagged)
+ return
+ temp = "If you die in the game, you die for real!"
+ player_hp = 30
+ player_mp = 10
+ enemy_hp = 45
+ enemy_mp = 20
+ gameover = FALSE
+ blocked = FALSE
- emagged = TRUE
+ emagged = TRUE
- enemy_name = "Cuban Pete"
- name = "Outbomb Cuban Pete"
+ enemy_name = "Cuban Pete"
+ name = "Outbomb Cuban Pete"
- updateUsrDialog()
+ updateUsrDialog()
@@ -1041,12 +1042,13 @@
desc = "Learn how our ancestors got to Orion, and have fun in the process!"
/obj/machinery/computer/arcade/orion_trail/emag_act(mob/user)
- if(!emagged)
- to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")
- name = "The Orion Trail: Realism Edition"
- desc = "Learn how our ancestors got to Orion, and try not to die in the process!"
- newgame()
- emagged = TRUE
+ if(emagged)
+ return
+ to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")
+ name = "The Orion Trail: Realism Edition"
+ desc = "Learn how our ancestors got to Orion, and try not to die in the process!"
+ newgame()
+ emagged = TRUE
/mob/living/simple_animal/hostile/syndicate/ranged/orion
name = "Spaceport Security"
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index ee9202bfffe..158cce1eff9 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 68d9c5815e9..e8ffaaa1b9b 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 4acd00e583c..8c759579117 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 41e85cf6267..66c4bfa463d 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
@@ -398,12 +398,13 @@
return ..()
/obj/machinery/computer/communications/emag_act(mob/user)
- if(!emagged)
- src.emagged = TRUE
- if(authenticated == 1)
- authenticated = 2
- to_chat(user, "You scramble the communication routing circuits!")
- playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
+ if(emagged)
+ return
+ emagged = TRUE
+ if(authenticated == 1)
+ authenticated = 2
+ to_chat(user, "You scramble the communication routing circuits!")
+ playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
/obj/machinery/computer/communications/attack_hand(mob/user)
if(..())
@@ -459,7 +460,7 @@
dat += " \[ Change Alert Level \]"
dat += " \[ Emergency Maintenance Access \]"
dat += " \[ Request Nuclear Authentication Codes \]"
- if(src.emagged == 0)
+ if(!emagged)
dat += " \[ Send Message to Centcom \]"
else
dat += " \[ Send Message to \[UNKNOWN\] \]"
diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm
index 6108819babc..07bfb4b6ddf 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 c30eff58cb8..cd1e5b1c90e 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/message.dm b/code/game/machinery/computer/message.dm
index ba7c692bb44..75655199da8 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -40,21 +40,22 @@
return ..()
/obj/machinery/computer/message_monitor/emag_act(mob/user)
- if(!emagged)
- if(!isnull(src.linkedServer))
- emagged = TRUE
- screen = 2
- spark_system.set_up(5, 0, src)
- src.spark_system.start()
- var/obj/item/weapon/paper/monitorkey/MK = new/obj/item/weapon/paper/monitorkey
- MK.loc = src.loc
- // Will help make emagging the console not so easy to get away with.
- MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
- var/time = 100 * length(src.linkedServer.decryptkey)
- addtimer(CALLBACK(src, .proc/UnmagConsole), time)
- message = rebootmsg
- else
- to_chat(user, "A no server error appears on the screen.")
+ if(emagged)
+ return
+ if(!isnull(src.linkedServer))
+ emagged = TRUE
+ screen = 2
+ spark_system.set_up(5, 0, src)
+ src.spark_system.start()
+ var/obj/item/weapon/paper/monitorkey/MK = new/obj/item/weapon/paper/monitorkey
+ MK.loc = src.loc
+ // Will help make emagging the console not so easy to get away with.
+ MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
+ var/time = 100 * length(src.linkedServer.decryptkey)
+ addtimer(CALLBACK(src, .proc/UnmagConsole), time)
+ message = rebootmsg
+ else
+ to_chat(user, "A no server error appears on the screen.")
/obj/machinery/computer/message_monitor/Initialize()
..()
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index eaa256b5cd0..4e6e85eecca 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 e4f184d2c79..ac74f47cd42 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 214163c7397..1bd299a40b0 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
@@ -162,11 +162,15 @@
if(D.hacked)
to_chat(usr, "ERROR: [D] is not responding to external commands.")
else
+ var/turf/T = get_turf(D)
+ message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)][ADMIN_JMP(T)]!")
+ log_game("[key_name(usr)] detonated [key_name(D)]!")
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, D)
s.start()
D.visible_message("\the [D] self destructs!")
D.gib()
+
src.updateUsrDialog()
return
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 0940caef48a..517d9c8264d 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 50bc928f6f6..8c9e300eaab 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
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 638f6f15917..41c4bc30f48 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 90b80ed5a34..4e392551099 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 857f7f10d46..3f006246800 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -62,7 +62,7 @@
//process()
//return
-/obj/machinery/door/Bumped(atom/AM)
+/obj/machinery/door/CollidedWith(atom/movable/AM)
if(operating || emagged)
return
if(ismob(AM))
@@ -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/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 90cb9c8942e..9a57593b3f6 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -67,7 +67,7 @@
affecting_areas.Cut()
return ..()
-/obj/machinery/door/firedoor/Bumped(atom/AM)
+/obj/machinery/door/firedoor/CollidedWith(atom/movable/AM)
if(panel_open || operating)
return
if(!density)
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 2a369a488f7..bd98e687b47 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -33,7 +33,7 @@
else
INVOKE_ASYNC(src, .proc/close)
-/obj/machinery/door/poddoor/Bumped(atom/AM)
+/obj/machinery/door/poddoor/CollidedWith(atom/movable/AM)
if(density)
return 0
else
diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm
index 5e95bf583b9..2960335813d 100644
--- a/code/game/machinery/doors/unpowered.dm
+++ b/code/game/machinery/doors/unpowered.dm
@@ -1,6 +1,6 @@
/obj/machinery/door/unpowered
-/obj/machinery/door/unpowered/Bumped(atom/AM)
+/obj/machinery/door/unpowered/CollidedWith(atom/movable/AM)
if(src.locked)
return
..()
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 93fbd54e853..9a8d2c2e3ba 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -58,7 +58,7 @@
sleep(20)
close()
-/obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj)
+/obj/machinery/door/window/CollidedWith(atom/movable/AM)
if( operating || !src.density )
return
if (!( ismob(AM) ))
@@ -206,13 +206,14 @@
/obj/machinery/door/window/emag_act(mob/user)
if(!operating && density && !emagged)
+ emagged = TRUE
operating = TRUE
flick("[src.base_state]spark", src)
+ playsound(src, "sparks", 75, 1)
sleep(6)
operating = FALSE
desc += " Its access panel is smoking slightly."
open()
- emagged = TRUE
/obj/machinery/door/window/attackby(obj/item/weapon/I, mob/living/user, params)
@@ -308,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_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."
@@ -422,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/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm
index afa9283b956..c23f4d0ba86 100644
--- a/code/game/machinery/embedded_controller/access_controller.dm
+++ b/code/game/machinery/embedded_controller/access_controller.dm
@@ -27,12 +27,13 @@
findObjsByTag()
/obj/machinery/doorButtons/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- req_access = list()
- req_one_access = list()
- playsound(src.loc, "sparks", 100, 1)
- to_chat(user, "You short out the access controller.")
+ if(emagged)
+ return
+ emagged = TRUE
+ req_access = list()
+ req_one_access = list()
+ playsound(src, "sparks", 100, 1)
+ to_chat(user, "You short out the access controller.")
/obj/machinery/doorButtons/proc/removeMe()
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 9977a6124e1..8c5eb87965a 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -78,12 +78,13 @@
..()
/obj/machinery/firealarm/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- if(user)
- user.visible_message("Sparks fly out of the [src]!",
- "You emag [src], disabling its thermal sensors.")
- playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
+ if(emagged)
+ return
+ emagged = TRUE
+ if(user)
+ user.visible_message("Sparks fly out of the [src]!",
+ "You emag [src], disabling its thermal sensors.")
+ playsound(src, "sparks", 50, 1)
/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume)
if(!emagged && detecting && !stat && (temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT))
diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm
index 7248bc92fd1..d844183097a 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
@@ -25,9 +25,10 @@
return ..()
/obj/machinery/gulag_item_reclaimer/emag_act(mob/user)
- if(!emagged) // emagging lets anyone reclaim all the items
- req_access = list()
- emagged = TRUE
+ if(emagged) // emagging lets anyone reclaim all the items
+ return
+ req_access = list()
+ emagged = TRUE
/obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/card/id/prisoner))
diff --git a/code/game/machinery/hivebot_swarm_core.dm b/code/game/machinery/hivebot_swarm_core.dm
index d8c05ff4f3d..ef41f1b6de5 100644
--- a/code/game/machinery/hivebot_swarm_core.dm
+++ b/code/game/machinery/hivebot_swarm_core.dm
@@ -70,9 +70,9 @@
/obj/machinery/hivebot_swarm_core/proc/defend_the_swarm()
var/atom/movable/threat_to_swarm = src.threat_to_swarm
var/mob/living/L = threat_to_swarm
- if(!istype(L) || L.stat)
+ if(!istype(L))
L = null
- if(QDELETED(threat_to_swarm) || !threat_to_swarm in view(7, src) || L)
+ if(QDELETED(threat_to_swarm) || !(threat_to_swarm in view(7, src)) || (L && L.stat))
say("TARGET LOST. RESUMING FABRICATION ROUTINE.")
threat_to_swarm = null
return
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index 889c74bc54f..60fd945a12f 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -25,7 +25,6 @@
var/datum/research/files
var/selected_category
var/screen = 1
- var/emag = FALSE //Gives access to other cool stuff
var/list/categories = list(
"human",
@@ -178,7 +177,7 @@
dat += ""
for(var/C in categories)
- if(C=="special" && !emag) //Only want to show special when console is emagged
+ if(C=="special" && !emagged) //Only want to show special when console is emagged
continue
dat += "| [C] | "
@@ -233,10 +232,10 @@
return dat
/obj/machinery/limbgrower/emag_act(mob/user)
- if(emag==TRUE)
+ if(emagged)
return
for(var/datum/design/D in files.possible_designs)
if((D.build_type & LIMBGROWER) && ("special" in D.category))
files.AddDesign2Known(D)
- to_chat(user, "A warning flashes onto the screen, stating that safety overrides have been deactivated")
- emag = TRUE
+ to_chat(user, "A warning flashes onto the screen, stating that safety overrides have been deactivated!")
+ emagged = TRUE
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index ed3b74a0e7b..b7c07364e94 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 8dd0d13b9eb..0a212c11f80 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.")
@@ -282,15 +282,16 @@
return ..()
/obj/machinery/porta_turret/emag_act(mob/user)
- if(!emagged)
- to_chat(user, "You short out [src]'s threat assessment circuits.")
- visible_message("[src] hums oddly...")
- emagged = TRUE
- controllock = 1
- on = FALSE //turns off the turret temporarily
- update_icon()
- sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
- on = TRUE //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
+ if(emagged)
+ return
+ to_chat(user, "You short out [src]'s threat assessment circuits.")
+ visible_message("[src] hums oddly...")
+ emagged = TRUE
+ controllock = 1
+ on = FALSE //turns off the turret temporarily
+ update_icon()
+ sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
+ on = TRUE //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
/obj/machinery/porta_turret/emp_act(severity)
@@ -552,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'
@@ -650,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
@@ -688,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
@@ -717,12 +718,13 @@
to_chat(user, "Access denied.")
/obj/machinery/turretid/emag_act(mob/user)
- if(!emagged)
- to_chat(user, "You short out the turret controls' access analysis module.")
- emagged = TRUE
- locked = FALSE
- if(user && user.machine == src)
- attack_hand(user)
+ if(emagged)
+ return
+ to_chat(user, "You short out the turret controls' access analysis module.")
+ emagged = TRUE
+ locked = FALSE
+ if(user && user.machine == src)
+ attack_hand(user)
/obj/machinery/turretid/attack_ai(mob/user)
if(!ailock || IsAdminGhost(user))
@@ -860,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 25e4f4e49af..08909030cac 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 1aadf6a4528..27575e94cb7 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 460cc87a990..437fb3eb277 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 3e251e35b5e..90854e5f74f 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/recycler.dm b/code/game/machinery/recycler.dm
index 9d40f3e9e3c..627b61fae3e 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -73,13 +73,14 @@
return ..()
/obj/machinery/recycler/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- if(safety_mode)
- safety_mode = FALSE
- update_icon()
- playsound(src.loc, "sparks", 75, 1, -1)
- to_chat(user, "You use the cryptographic sequencer on the [src.name].")
+ if(emagged)
+ return
+ emagged = TRUE
+ if(safety_mode)
+ safety_mode = FALSE
+ update_icon()
+ playsound(src, "sparks", 75, 1, -1)
+ to_chat(user, "You use the cryptographic sequencer on the [src].")
/obj/machinery/recycler/update_icon()
..()
@@ -88,7 +89,7 @@
is_powered = FALSE
icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end
-/obj/machinery/recycler/Bumped(atom/movable/AM)
+/obj/machinery/recycler/CollidedWith(atom/movable/AM)
if(stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 8a2de48d8ae..4ca6592b217 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 60342abaed1..a7d857844ab 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
@@ -192,7 +192,6 @@
/obj/machinery/shieldgen/emag_act()
if(!(stat & BROKEN))
stat |= BROKEN
- obj_integrity = 0
update_icon()
/obj/machinery/shieldgen/update_icon()
@@ -210,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
@@ -225,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/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 4981e51f209..e72e65f99af 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -101,12 +101,13 @@
return ..()
/obj/machinery/computer/slot_machine/emag_act()
- if(!emagged)
- emagged = TRUE
- var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
- spark_system.set_up(4, 0, src.loc)
- spark_system.start()
- playsound(src.loc, "sparks", 50, 1)
+ if(emagged)
+ return
+ emagged = TRUE
+ var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
+ spark_system.set_up(4, 0, src.loc)
+ spark_system.start()
+ playsound(src, "sparks", 50, 1)
/obj/machinery/computer/slot_machine/attack_hand(mob/living/user)
. = ..() //Sanity checks.
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 8f74969607c..ef226344753 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 5f5d6d6e3a3..c1536e1c2f5 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)
@@ -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 31cbe7412c6..6ca5adb25c0 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/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 369e3e13dcb..48bb5bb5abb 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -143,11 +143,6 @@ GLOBAL_LIST_EMPTY(telecomms_list)
var/turf/position = get_turf(src)
listening_level = position.z
-/obj/machinery/telecomms/onShuttleMove(turf/T1, rotation)
- . = ..()
- if(. && T1) // Update listening Z, just in case you have telecomm relay on a shuttle
- listening_level = T1.z
-
/obj/machinery/telecomms/Initialize(mapload)
..()
if(mapload && autolinkers.len)
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index e50843c49f4..b737b7e77ea 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -272,11 +272,11 @@
break
return power_station
-/obj/machinery/teleport/hub/Bumped(M as mob|obj)
+/obj/machinery/teleport/hub/CollidedWith(atom/movable/AM)
if(z == ZLEVEL_CENTCOM)
- to_chat(M, "You can't use this here.")
+ to_chat(AM, "You can't use this here.")
if(is_ready())
- teleport(M)
+ teleport(AM)
use_power(5000)
return
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 3263af9e567..32157277407 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -49,7 +49,7 @@
else
icon_state = initial(icon_state)
-/obj/machinery/transformer/Bumped(atom/movable/AM)
+/obj/machinery/transformer/CollidedWith(atom/movable/AM)
if(cooldown == 1)
return
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index cc2f3ffb2bf..acab060617d 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
@@ -383,9 +383,10 @@
..()
/obj/machinery/vending/emag_act(mob/user)
- if(!emagged)
- emagged = 1
- to_chat(user, "You short out the product lock on [src].")
+ if(emagged)
+ return
+ emagged = TRUE
+ to_chat(user, "You short out the product lock on [src].")
/obj/machinery/vending/attack_ai(mob/user)
return attack_hand(user)
@@ -455,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
@@ -688,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!"
@@ -708,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!"
@@ -721,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
@@ -731,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
@@ -783,12 +783,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
@@ -838,10 +838,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."
@@ -853,9 +853,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
@@ -867,12 +867,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
@@ -907,12 +907,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
@@ -921,9 +921,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
@@ -932,10 +932,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
@@ -948,9 +948,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
@@ -971,9 +971,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
@@ -983,16 +983,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)
@@ -1005,7 +1005,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
@@ -1018,30 +1018,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,
@@ -1052,7 +1052,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
@@ -1061,7 +1061,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
@@ -1108,7 +1108,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)
@@ -1121,12 +1121,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
@@ -1137,10 +1137,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
@@ -1151,34 +1151,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 2077c093d73..3c9131ab9b7 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 d197118fcf5..287edaa3987 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 d65b08ede59..c1f7ffca251 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 b1649e97862..7be8fb62469 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 9c397f12ab9..14891835c5f 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 3870bc884e4..65f38973d73 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 bbc7ea2e226..6d15716941d 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 f7b0e9b877d..7c28f5d95b3 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
@@ -86,8 +86,8 @@
/obj/machinery/mecha_part_fabricator/emag_act()
if(emagged)
return
-
- emagged = FALSE
+ emagged = TRUE
+ req_access = null
say("DB error \[Code 0x00F1\]")
sleep(10)
say("Attempting auto-repair...")
@@ -95,8 +95,7 @@
say("User DB corrupted \[Code 0x00FA\]. Truncating data structure...")
sleep(30)
say("User DB truncated. Please contact your Nanotrasen system operator for future assistance.")
- req_access = null
- emagged = TRUE
+
/obj/machinery/mecha_part_fabricator/proc/output_parts_list(set_name)
var/output = ""
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index d50decebe0b..5564cd2c0ad 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 55c18688a1b..f2a6b6e225e 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 df281061dcd..347a59b18ea 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 34ac8fa93e2..ecdbc890aff 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/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 3a0882ef1df..2bf3b525ac1 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -110,8 +110,8 @@
/obj/effect/anomaly/grav/Collide(mob/A)
gravShock(A)
-/obj/effect/anomaly/grav/Bumped(mob/A)
- gravShock(A)
+/obj/effect/anomaly/grav/CollidedWith(atom/movable/AM)
+ gravShock(AM)
/obj/effect/anomaly/grav/proc/gravShock(mob/living/A)
if(boing && isliving(A) && !A.stat)
@@ -146,8 +146,8 @@
/obj/effect/anomaly/flux/Collide(mob/living/M)
mobShock(M)
-/obj/effect/anomaly/flux/Bumped(mob/living/M)
- mobShock(M)
+/obj/effect/anomaly/flux/CollidedWith(atom/movable/AM)
+ mobShock(AM)
/obj/effect/anomaly/flux/proc/mobShock(mob/living/M)
if(canshock && istype(M))
@@ -188,9 +188,9 @@
for(var/mob/living/M in range(1,src))
do_teleport(M, locate(M.x, M.y, M.z), 4)
-/obj/effect/anomaly/bluespace/Bumped(atom/A)
- if(isliving(A))
- do_teleport(A, locate(A.x, A.y, A.z), 8)
+/obj/effect/anomaly/bluespace/CollidedWith(atom/movable/AM)
+ if(isliving(AM))
+ do_teleport(AM, locate(AM.x, AM.y, AM.z), 8)
/obj/effect/anomaly/bluespace/detonate()
var/turf/T = safepick(get_area_turfs(impact_area))
diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm
index efc3fd5e30f..027959212b5 100644
--- a/code/game/objects/effects/bump_teleporter.dm
+++ b/code/game/objects/effects/bump_teleporter.dm
@@ -19,16 +19,12 @@
LAZYREMOVE(AllTeleporters, src)
return ..()
-/obj/effect/bump_teleporter/Bumped(atom/user)
- if(!ismob(user))
- //user.loc = src.loc //Stop at teleporter location
+/obj/effect/bump_teleporter/CollidedWith(atom/movable/AM)
+ if(!ismob(AM))
return
-
if(!id_target)
- //user.loc = src.loc //Stop at teleporter location, there is nowhere to teleport to.
return
for(var/obj/effect/bump_teleporter/BT in AllTeleporters)
if(BT.id == src.id_target)
- usr.loc = BT.loc //Teleport to location with correct id.
- return
\ No newline at end of file
+ AM.forceMove(BT.loc) //Teleport to location with correct id.
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 1392159cea3..fb2b854ffb1 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/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm
index 3ab96f6df59..26b5bca1ec1 100644
--- a/code/game/objects/effects/decals/cleanable/aliens.dm
+++ b/code/game/objects/effects/decals/cleanable/aliens.dm
@@ -6,17 +6,10 @@
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
- var/list/viruses = list()
blood_DNA = list("UNKNOWN DNA" = "X*")
bloodiness = MAX_SHOE_BLOODINESS
blood_state = BLOOD_STATE_XENO
-/obj/effect/decal/cleanable/xenoblood/Destroy()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- viruses = null
- return ..()
-
/obj/effect/decal/cleanable/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
@@ -34,13 +27,9 @@
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
- if (i > 0)
- var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
- for(var/datum/disease/D in src.viruses)
- var/datum/disease/ND = D.Copy(1)
- b.viruses += ND
- ND.holder = b
- if (!step_to(src, get_step(src, direction), 0))
+ if(i > 0)
+ new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc)
+ if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index 8248776a95f..5127aa22858 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -4,17 +4,10 @@
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
- var/list/viruses = list()
blood_DNA = list()
blood_state = BLOOD_STATE_HUMAN
bloodiness = MAX_SHOE_BLOODINESS
-/obj/effect/decal/cleanable/blood/Destroy()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- viruses = null
- return ..()
-
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
if (C.blood_DNA)
blood_DNA |= C.blood_DNA.Copy()
@@ -70,15 +63,11 @@
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
- for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
+ for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
- if (i > 0)
- var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
- for(var/datum/disease/D in src.viruses)
- var/datum/disease/ND = D.Copy(1)
- b.viruses += ND
- ND.holder = b
- if (!step_to(src, get_step(src, direction), 0))
+ if(i > 0)
+ new /obj/effect/decal/cleanable/blood/splatter(loc)
+ if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/up
diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index f1b0a9ce406..98a9782600d 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -80,9 +80,8 @@
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
- var/list/viruses = list()
-/obj/effect/decal/cleanable/vomit/attack_hand(var/mob/user)
+/obj/effect/decal/cleanable/vomit/attack_hand(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(isflyperson(H))
@@ -98,12 +97,6 @@
reagents.trans_to(H, reagents.total_volume)
qdel(src)
-/obj/effect/decal/cleanable/vomit/Destroy()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- viruses = null
- return ..()
-
/obj/effect/decal/cleanable/vomit/old
name = "crusty dried vomit"
desc = "You try not to look at the chunks, and fail."
diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm
index 862d21ad6b3..e91c273903a 100644
--- a/code/game/objects/effects/decals/cleanable/robots.dm
+++ b/code/game/objects/effects/decals/cleanable/robots.dm
@@ -43,7 +43,6 @@
desc = "It's black and greasy. Looks like Beepsky made another mess."
icon = 'icons/mob/robots.dmi'
icon_state = "floor1"
- var/viruses = list()
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_OIL
bloodiness = MAX_SHOE_BLOODINESS
@@ -52,11 +51,5 @@
..()
reagents.add_reagent("oil", 30)
-/obj/effect/decal/cleanable/oil/Destroy()
- for(var/datum/disease/D in viruses)
- D.cure(0)
- viruses = null
- return ..()
-
/obj/effect/decal/cleanable/oil/streak
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index a7a3015a117..4750e2c5278 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -6,8 +6,8 @@
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)
- ..()
+/obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA)
+ . = ..()
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
to_chat(world, "Gib list length mismatch!")
@@ -29,13 +29,6 @@
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
@@ -50,53 +43,53 @@
/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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
@@ -105,7 +98,7 @@
/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)
@@ -114,14 +107,14 @@
/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)
+ 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/items.dm b/code/game/objects/items.dm
index 5161386474b..429493ab2d6 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -312,7 +312,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.
@@ -567,7 +567,7 @@ 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
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index dbdd6779ead..abf72d5779f 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/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index 0691f2d8222..c13df1da159 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -144,12 +144,13 @@
update_icon()
/obj/item/device/geiger_counter/emag_act(mob/user)
- if(!emagged)
- if(scanning)
- to_chat(user, "Turn off [src] before you perform this action!")
- return 0
- to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.")
- emagged = TRUE
+ if(emagged)
+ return
+ if(scanning)
+ to_chat(user, "Turn off [src] before you perform this action!")
+ return 0
+ to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.")
+ emagged = TRUE
#undef RAD_LEVEL_NORMAL
#undef RAD_LEVEL_MODERATE
diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm
index 09a22c0aca5..435150aff1b 100644
--- a/code/game/objects/items/devices/instruments.dm
+++ b/code/game/objects/items/devices/instruments.dm
@@ -6,12 +6,11 @@
icon = 'icons/obj/musician.dmi'
var/datum/song/handheld/song
var/instrumentId = "generic"
- var/instrumentExt = "ogg"
+ var/instrumentExt = "mid"
-/obj/item/device/instrument/New()
- song = new(instrumentId, src)
- song.instrumentExt = instrumentExt
- ..()
+/obj/item/device/instrument/Initialize()
+ . = ..()
+ song = new(instrumentId, src, instrumentExt)
/obj/item/device/instrument/Destroy()
qdel(song)
@@ -61,16 +60,24 @@
/obj/item/device/instrument/piano_synth
name = "synthesizer"
- desc = "An electronic synthesizer that can play piano music."
+ desc = "An advanced electronic synthesizer that can be used as various instruments."
icon_state = "synth"
item_state = "synth"
instrumentId = "piano"
+ instrumentExt = "ogg"
+ var/static/list/insTypes = list("accordion" = "mid", "bikehorn" = "ogg", "glockenspiel" = "mid", "guitar" = "ogg", "harmonica" = "mid", "piano" = "ogg", "recorder" = "mid", "saxophone" = "mid", "trombone" = "mid", "violin" = "mid", "xylophone" = "mid") //No eguitar you ear-rapey fuckers.
+ actions_types = list(/datum/action/item_action/synthswitch)
+
+/obj/item/device/instrument/piano_synth/proc/changeInstrument(name = "piano")
+ song.instrumentDir = name
+ song.instrumentExt = insTypes[name]
/obj/item/device/instrument/guitar
name = "guitar"
desc = "It's made of wood and has bronze strings."
icon_state = "guitar"
item_state = "guitar"
+ instrumentExt = "ogg"
force = 10
attack_verb = list("played metal on", "serenaded", "crashed", "smashed")
hitsound = 'sound/weapons/stringsmash.ogg'
@@ -85,3 +92,65 @@
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"
+ desc = "Smooth metal bars perfect for any marching band."
+ icon_state = "glockenspiel"
+ item_state = "glockenspiel"
+ instrumentId = "glockenspiel"
+
+/obj/item/device/instrument/accordion
+ name = "accordion"
+ desc = "Pun-Pun not included."
+ icon_state = "accordion"
+ item_state = "accordion"
+ instrumentId = "accordion"
+
+/obj/item/device/instrument/saxophone
+ name = "saxophone"
+ desc = "This soothing sound will be sure to leave your audience in tears."
+ icon_state = "saxophone"
+ item_state = "saxophone"
+ instrumentId = "saxophone"
+
+/obj/item/device/instrument/trombone
+ name = "trombone"
+ desc = "How can any pool table ever hope to compete?"
+ icon_state = "trombone"
+ item_state = "trombone"
+ instrumentId = "trombone"
+
+/obj/item/device/instrument/recorder
+ name = "recorder"
+ desc = "Just like in school, playing ability and all."
+ icon_state = "recorder"
+ item_state = "recorder"
+ instrumentId = "recorder"
+
+/obj/item/device/instrument/harmonica
+ name = "harmonica"
+ desc = "For when you get a bad case of the space blues."
+ icon_state = "harmonica"
+ item_state = "harmonica"
+ instrumentId = "harmonica"
+ slot_flags = SLOT_MASK
+ force = 5
+ w_class = WEIGHT_CLASS_SMALL
+ actions_types = list(/datum/action/item_action/instrument)
+
+/obj/item/device/instrument/bikehorn
+ name = "gilded bike horn"
+ desc = "An exquisitely decorated bike horn, capable of honking in a variety of notes."
+ icon_state = "bike_horn"
+ item_state = "bike_horn"
+ attack_verb = list("beautifully honks")
+ instrumentId = "bikehorn"
+ instrumentExt = "ogg"
+ w_class = WEIGHT_CLASS_TINY
+ force = 0
+ throw_speed = 3
+ throw_range = 15
+ hitsound = 'sound/items/bikehorn.ogg'
+
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index f8a5dc60a84..877044d54d1 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)
@@ -148,8 +148,9 @@
to_chat(user, "You fill \the [src] with lights from \the [S]. " + status_string() + "")
/obj/item/device/lightreplacer/emag_act()
- if(!emagged)
- Emag()
+ if(emagged)
+ return
+ Emag()
/obj/item/device/lightreplacer/attack_self(mob/user)
to_chat(user, status_string())
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index d07153810ff..f10bd13fd62 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -18,6 +18,8 @@
return voicespan
/obj/item/device/megaphone/emag_act(mob/user)
+ if(emagged)
+ return
to_chat(user, "You overload \the [src]'s voice synthesizer.")
emagged = TRUE
voicespan = list(SPAN_REALLYBIG, "userdanger")
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index 42d33799761..036fa7b6f21 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/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 30c19cc575a..de7f10cac9a 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -174,7 +174,8 @@ MASS SPECTROMETER
if(tdelta < (DEFIB_TIME_LIMIT * 10))
to_chat(user, "Subject died [tdelta / 10] seconds ago, defibrillation may be possible!")
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
if(!(D.visibility_flags & HIDDEN_SCANNER))
to_chat(user, "Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]")
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 7111093951b..2f48c73d246 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/rods.dm b/code/game/objects/items/stacks/rods.dm
index c55ab4f6dd5..9456f925d63 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/light.dm b/code/game/objects/items/stacks/sheets/light.dm
index 684f72141ee..09d3bb0fbd4 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 e9f2977725e..4e9caaf5ebc 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 3e9117cbdfb..b4b31eac08d 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/toys.dm b/code/game/objects/items/toys.dm
index 3b3a871269d..af127e94502 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -237,7 +237,7 @@
w_class = WEIGHT_CLASS_SMALL
add_fingerprint(user)
-// Copied from /obj/item/weapon/melee/energy/sword/attackby
+// Copied from /obj/item/weapon/melee/transforming/energy/sword/attackby
/obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user, params)
if(istype(W, /obj/item/toy/sword))
if((W.flags & NODROP) || (flags & NODROP))
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index 8c13ba2a686..75141bddd51 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
@@ -570,8 +570,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
new /obj/item/pipe_meter(A)
if(DISPOSALS_MODE) //Making disposals pipes
- if(is_anchored_dense_turf(A))
- to_chat(user, "The [src]'s error light flickers; there's something in the way!")
+ if(isclosedturf(A))
+ to_chat(user, "[src]'s error light flickers; there's something in the way!")
return
to_chat(user, "You start building a disposals pipe...")
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index b96daf6474a..13a420de5ed 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 1df7b9f69ad..c3be2659ff1 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 a5456b77241..8bb4d3eefe1 100644
--- 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 2d584327c2f..e13c0b68fae 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 7af8a4dc5a5..0dcdf1d7b66 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/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index bdfd574e445..285dfc4e68e 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -34,4 +34,4 @@
M.soundbang_act(1, 200, 10, 15)
else
- M.soundbang_act(1, max(20/max(1,distance), 3), rand(0, 5))
+ M.soundbang_act(1, max(200/max(1,distance), 60), rand(0, 5))
diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm
index 27991f684fd..d626fa387e7 100644
--- a/code/game/objects/items/weapons/grenades/plastic.dm
+++ b/code/game/objects/items/weapons/grenades/plastic.dm
@@ -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 e537bf44de0..d259e7b26e8 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 26eb9a7bfcb..193e49989f4 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/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index d7dc87b1967..f366704e50f 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -1,46 +1,63 @@
-/obj/item/weapon/melee/energy
- var/active = 0
- var/force_on = 30 //force when active
- var/throwforce_on = 20
- var/icon_state_on = "axe1"
- var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- var/list/possible_colors
- w_class = WEIGHT_CLASS_SMALL
- sharpness = IS_SHARP
- var/w_class_on = WEIGHT_CLASS_BULKY
+/obj/item/weapon/melee/transforming/energy
+ hitsound_on = 'sound/weapons/blade1.ogg'
heat = 3500
max_integrity = 200
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
resistance_flags = FIRE_PROOF
var/brightness_on = 3
-/obj/item/weapon/melee/energy/Initialize()
+/obj/item/weapon/melee/transforming/energy/Initialize()
. = ..()
- if(LAZYLEN(possible_colors))
- item_color = pick(possible_colors)
- switch(item_color)//Only run this check if the color was picked randomly, so that colors can be manually set for non-random colored energy weapons.
- if("red")
- light_color = LIGHT_COLOR_RED
- if("green")
- light_color = LIGHT_COLOR_GREEN
- if("blue")
- light_color = LIGHT_COLOR_LIGHT_CYAN
- if("purple")
- light_color = LIGHT_COLOR_LAVENDER
if(active)
set_light(brightness_on)
+ START_PROCESSING(SSobj, src)
-/obj/item/weapon/melee/energy/suicide_act(mob/user)
+/obj/item/weapon/melee/transforming/energy/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/weapon/melee/transforming/energy/suicide_act(mob/user)
user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
return (BRUTELOSS|FIRELOSS)
-/obj/item/weapon/melee/energy/add_blood(list/blood_dna)
+/obj/item/weapon/melee/transforming/energy/add_blood(list/blood_dna)
return 0
-/obj/item/weapon/melee/energy/is_sharp()
+/obj/item/weapon/melee/transforming/energy/is_sharp()
return active * sharpness
-/obj/item/weapon/melee/energy/axe
+/obj/item/weapon/melee/transforming/energy/process()
+ open_flame()
+
+/obj/item/weapon/melee/transforming/energy/transform_weapon(mob/living/user, supress_message_text)
+ . = ..()
+ if(.)
+ if(active)
+ if(item_color)
+ icon_state = "sword[item_color]"
+ START_PROCESSING(SSobj, src)
+ set_light(brightness_on)
+ else
+ STOP_PROCESSING(SSobj, src)
+ set_light(0)
+
+/obj/item/weapon/melee/transforming/energy/is_hot()
+ return active * heat
+
+/obj/item/weapon/melee/transforming/energy/ignition_effect(atom/A, mob/user)
+ if(!active)
+ return ""
+
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "[user] swings their [src][in_mouth]. They light [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+
+/obj/item/weapon/melee/transforming/energy/axe
name = "energy axe"
desc = "An energized battle axe."
icon_state = "axe0"
@@ -56,21 +73,22 @@
flags = CONDUCT
armour_penetration = 100
origin_tech = "combat=4;magnets=3"
- attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
+ attack_verb_off = list("attacked", "chopped", "cleaved", "torn", "cut")
attack_verb_on = list()
light_color = "#40ceff"
-/obj/item/weapon/melee/energy/axe/suicide_act(mob/user)
+/obj/item/weapon/melee/transforming/energy/axe/suicide_act(mob/user)
user.visible_message("[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
return (BRUTELOSS|FIRELOSS)
-/obj/item/weapon/melee/energy/sword
+/obj/item/weapon/melee/transforming/energy/sword
name = "energy sword"
desc = "May the force be within you."
icon_state = "sword0"
force = 3
throwforce = 5
hitsound = "swing_hit" //it starts deactivated
+ attack_verb_off = list("tapped", "poked")
throw_speed = 3
throw_range = 5
sharpness = IS_SHARP
@@ -79,93 +97,30 @@
armour_penetration = 35
origin_tech = "combat=3;magnets=4;syndicate=4"
block_chance = 50
- possible_colors = list("red", "blue", "green", "purple")
- var/hacked = FALSE
-/obj/item/weapon/melee/energy/sword/Destroy()
- STOP_PROCESSING(SSobj, src)
+/obj/item/weapon/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text)
. = ..()
+ if(. && active && item_color)
+ icon_state = "sword[item_color]"
-/obj/item/weapon/melee/energy/sword/process()
- if(active)
- if(hacked)
- light_color = pick(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)
- open_flame()
- else
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/weapon/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/weapon/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(active)
return ..()
return 0
-/obj/item/weapon/melee/energy/attack_self(mob/living/carbon/user)
- if(user.disabilities & CLUMSY && prob(50))
- to_chat(user, "You accidentally cut yourself with [src], like a doofus!")
- user.take_bodypart_damage(5,5)
- active = !active
- if (active)
- force = force_on
- throwforce = throwforce_on
- hitsound = 'sound/weapons/blade1.ogg'
- throw_speed = 4
- if(attack_verb_on.len)
- attack_verb = attack_verb_on
- if(!item_color)
- icon_state = icon_state_on
- else
- icon_state = "sword[item_color]"
- w_class = w_class_on
- playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
- to_chat(user, "[src] is now active.")
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- else
- force = initial(force)
- throwforce = initial(throwforce)
- hitsound = initial(hitsound)
- throw_speed = initial(throw_speed)
- if(attack_verb_on.len)
- attack_verb = list()
- icon_state = initial(icon_state)
- w_class = initial(w_class)
- playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
- to_chat(user, "[src] can now be concealed.")
- STOP_PROCESSING(SSobj, src)
- set_light(0)
- add_fingerprint(user)
-
-/obj/item/weapon/melee/energy/is_hot()
- return active * heat
-
-/obj/item/weapon/melee/energy/ignition_effect(atom/A, mob/user)
- if(!active)
- return ""
-
- var/in_mouth = ""
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- if(C.wear_mask == src)
- in_mouth = ", barely missing their nose"
- . = "[user] swings their \
- [src][in_mouth]. They light [A] in the process."
- playsound(loc, hitsound, get_clamped_volume(), 1, -1)
- add_fingerprint(user)
-
-/obj/item/weapon/melee/energy/sword/cyborg
+/obj/item/weapon/melee/transforming/energy/sword/cyborg
var/hitcost = 50
-/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
if(R.cell)
var/obj/item/weapon/stock_parts/cell/C = R.cell
if(active && !(C.use(hitcost)))
attack_self(R)
to_chat(R, "It's out of charge!")
return
- ..()
- return
+ return ..()
-/obj/item/weapon/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
name = "energy saw"
desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
icon_state = "esaw"
@@ -176,36 +131,44 @@
icon_state = "esaw_0"
icon_state_on = "esaw_1"
hitcost = 75 //Costs more than a standard cyborg esword
- item_color = null
w_class = WEIGHT_CLASS_NORMAL
sharpness = IS_SHARP
light_color = "#40ceff"
- possible_colors = null
-/obj/item/weapon/melee/energy/sword/cyborg/saw/Initialize()
- . = ..()
- icon_state = "esaw_0"
- item_color = null
-
-/obj/item/weapon/melee/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
return 0
-/obj/item/weapon/melee/energy/sword/saber
+/obj/item/weapon/melee/transforming/energy/sword/saber
+ var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
+ var/hacked = FALSE
-/obj/item/weapon/melee/energy/sword/saber/blue
- possible_colors = list("blue")
+/obj/item/weapon/melee/transforming/energy/sword/saber/Initialize(mapload)
+ . = ..()
+ if(LAZYLEN(possible_colors))
+ var/set_color = pick(possible_colors)
+ item_color = set_color
+ light_color = possible_colors[set_color]
-/obj/item/weapon/melee/energy/sword/saber/purple
- possible_colors = list("purple")
+/obj/item/weapon/melee/transforming/energy/sword/saber/process()
+ . = ..()
+ if(hacked)
+ var/set_color = pick(possible_colors)
+ light_color = possible_colors[set_color]
+ update_light()
-/obj/item/weapon/melee/energy/sword/saber/green
- possible_colors = list("green")
+/obj/item/weapon/melee/transforming/energy/sword/saber/red
+ possible_colors = list("red" = LIGHT_COLOR_RED)
-/obj/item/weapon/melee/energy/sword/saber/red
- possible_colors = list("red")
+/obj/item/weapon/melee/transforming/energy/sword/saber/blue
+ possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN)
+/obj/item/weapon/melee/transforming/energy/sword/saber/green
+ possible_colors = list("green" = LIGHT_COLOR_GREEN)
-/obj/item/weapon/melee/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params)
+/obj/item/weapon/melee/transforming/energy/sword/saber/purple
+ possible_colors = list("purple" = LIGHT_COLOR_LAVENDER)
+
+/obj/item/weapon/melee/transforming/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params)
if(istype(W, /obj/item/device/multitool))
if(!hacked)
hacked = TRUE
@@ -220,21 +183,21 @@
else
return ..()
-/obj/item/weapon/melee/energy/sword/pirate
+/obj/item/weapon/melee/transforming/energy/sword/pirate
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "cutlass0"
icon_state_on = "cutlass1"
light_color = "#ff0000"
-/obj/item/weapon/melee/energy/blade
+/obj/item/weapon/melee/transforming/energy/blade
name = "energy blade"
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade"
- force = 30 //Normal attacks deal esword damage
+ force = 30 //Normal attacks deal esword damage
hitsound = 'sound/weapons/blade1.ogg'
active = 1
- throwforce = 1//Throwing or dropping the item deletes it.
+ throwforce = 1 //Throwing or dropping the item deletes it.
throw_speed = 3
throw_range = 1
w_class = WEIGHT_CLASS_BULKY//So you can't hide it in your pocket or some such.
@@ -242,16 +205,16 @@
sharpness = IS_SHARP
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
-/obj/item/weapon/melee/energy/blade/Initialize()
+/obj/item/weapon/melee/transforming/energy/blade/Initialize()
. = ..()
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
-/obj/item/weapon/melee/energy/blade/attack_self(mob/user)
+/obj/item/weapon/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text)
return
-/obj/item/weapon/melee/energy/blade/hardlight
+/obj/item/weapon/melee/transforming/energy/blade/hardlight
name = "hardlight blade"
desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
icon_state = "lightblade"
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index e10d04611aa..bd486507467 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -160,7 +160,7 @@
if (B && !QDELETED(B))
H.internal_organs -= B
qdel(B)
- new /obj/effect/gibspawner/generic(H.loc, H.viruses, H.dna)
+ new /obj/effect/gibspawner/generic(get_turf(H), H.dna)
return (BRUTELOSS)
/obj/item/weapon/melee/classic_baton/telescopic/attack_self(mob/user)
@@ -256,13 +256,13 @@
/obj/item/weapon/melee/supermatter_sword/suicide_act(mob/user)
user.visible_message("[user] touches [src]'s blade. It looks like [user.p_theyre()] tired of waiting for the radiation to kill [user.p_them()]!")
user.drop_item()
- shard.Bumped(user)
+ shard.CollidedWith(user)
/obj/item/weapon/melee/supermatter_sword/proc/consume_everything(target)
if(isnull(target))
shard.Consume()
else if(!isturf(target))
- shard.Bumped(target)
+ shard.CollidedWith(target)
else
consume_turf(target)
diff --git a/code/game/objects/items/weapons/melee/transforming.dm b/code/game/objects/items/weapons/melee/transforming.dm
index fb3f3c58014..689bc24f695 100644
--- a/code/game/objects/items/weapons/melee/transforming.dm
+++ b/code/game/objects/items/weapons/melee/transforming.dm
@@ -28,7 +28,7 @@
/obj/item/weapon/melee/transforming/attack(mob/living/target, mob/living/carbon/human/user)
var/nemesis_faction = FALSE
- if(nemesis_factions.len)
+ if(LAZYLEN(nemesis_factions))
for(var/F in target.faction)
if(F in nemesis_factions)
nemesis_faction = TRUE
diff --git a/code/game/objects/items/weapons/sharpener.dm b/code/game/objects/items/weapons/sharpener.dm
index d17df5ab770..ace66060afb 100644
--- a/code/game/objects/items/weapons/sharpener.dm
+++ b/code/game/objects/items/weapons/sharpener.dm
@@ -20,7 +20,7 @@
if(requires_sharpness && !I.sharpness)
to_chat(user, "You can only sharpen items that are already sharp, such as knives.")
return
- if(istype(I, /obj/item/weapon/melee/energy))
+ if(istype(I, /obj/item/weapon/melee/transforming/energy))
to_chat(user, "You don't think \the [I] will be the thing getting modified if you use it on \the [src].")
return
if(istype(I, /obj/item/weapon/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff
diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm
index cec4fce24da..77b3feb81c2 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 89f1feeef14..a3b5d0f4bc9 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 e61a0a8ad49..433cbd5084b 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -112,7 +112,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 +152,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/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 6e68afb4c45..fd893afb2d4 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 66a6661a0d0..35a6c64388a 100755
--- 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
@@ -56,6 +56,7 @@
if(user)
visible_message("\The [src] has been broken by [user] with an electromagnetic card!")
return
+
/obj/item/weapon/storage/lockbox/show_to(mob/user)
if(locked)
to_chat(user, "It's locked!")
@@ -87,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)
@@ -98,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)
@@ -112,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"
@@ -161,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)
@@ -170,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 480c348b6fd..cc4bee233bb 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/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index c80f9cf08f2..63afdce472b 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -52,7 +52,7 @@
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("murder") // 28 tc now
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/clothing/shoes/chameleon(src)
diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index 1d5fd58701b..2e7f7b02cb0 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 15ac506cd66..478b966d57b 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 abd907aeb50..0974e60cc07 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/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 94452dce8b7..113f70825ec 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)
@@ -360,7 +360,7 @@
return 1
/obj/item/weapon/twohanded/dualsaber/ignition_effect(atom/A, mob/user)
- // same as /obj/item/weapon/melee/energy, mostly
+ // same as /obj/item/weapon/melee/transforming/energy, mostly
if(!wielded)
return ""
var/in_mouth = ""
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index bd9fe8be2fc..d4ce88c948d 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)
@@ -118,13 +118,11 @@
if(broken || emagged)
to_chat(user, "Nothing interesting happens!")
return
+ emagged = TRUE
to_chat(user, "You emag the barsign. Takeover in progress...")
sleep(100) //10 seconds
set_sign(new /datum/barsign/hiddensigns/syndibarsign)
- emagged = TRUE
- req_access = list(GLOB.access_syndicate)
-
-
+ 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 2624113dbf1..e845624a771 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 c88d1f763c8..27335719c79 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.dm b/code/game/objects/structures/crates_lockers/closets.dm
index ce8a970fd5a..b61a89ceeff 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -415,7 +415,7 @@
user.visible_message("Sparks fly from [src]!",
"You scramble [src]'s lock, breaking it open!",
"You hear a faint electrical spark.")
- playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
+ playsound(src, "sparks", 50, 1)
broken = 1
locked = FALSE
update_icon()
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index abd1344af32..2022a231d16 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -63,7 +63,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/red(src)
for(var/i in 1 to 3)
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
@@ -82,7 +82,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/green(src)
for(var/i in 1 to 3)
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
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 8fe673b3600..9d6ff6faa2d 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 75382f3dccc..a0749cef861 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 8f5cc9a0faa..7fb9e36df20 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 dc9cdb3e716..8e5b816d482 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 658612e09be..3d051fd3691 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 71859f80203..59bff3cc583 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 632dbd30e38..b934e169ee8 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 8df3e5526e7..6825fdce931 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 6c999356d94..42b645a20ca 100755
--- 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 f8d60424571..7edaf5ebe3d 100755
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/captains
name = "\proper captain's locker"
- req_access = list(GLOB.access_captain)
+ req_access = list(ACCESS_CAPTAIN)
icon_state = "cap"
/obj/structure/closet/secure_closet/captains/PopulateContents()
@@ -32,7 +32,7 @@
/obj/structure/closet/secure_closet/hop
name = "\proper head of personnel's locker"
- req_access = list(GLOB.access_hop)
+ req_access = list(ACCESS_HOP)
icon_state = "hop"
/obj/structure/closet/secure_closet/hop/PopulateContents()
@@ -56,7 +56,7 @@
/obj/structure/closet/secure_closet/hos
name = "\proper head of security's locker"
- req_access = list(GLOB.access_hos)
+ req_access = list(ACCESS_HOS)
icon_state = "hos"
/obj/structure/closet/secure_closet/hos/PopulateContents()
@@ -87,7 +87,7 @@
/obj/structure/closet/secure_closet/warden
name = "\proper warden's locker"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
icon_state = "warden"
/obj/structure/closet/secure_closet/warden/PopulateContents()
@@ -111,7 +111,7 @@
/obj/structure/closet/secure_closet/security
name = "security officer's locker"
- req_access = list(GLOB.access_security)
+ req_access = list(ACCESS_SECURITY)
icon_state = "sec"
/obj/structure/closet/secure_closet/security/PopulateContents()
@@ -159,7 +159,7 @@
/obj/structure/closet/secure_closet/detective
name = "\proper detective's cabinet"
- req_access = list(GLOB.access_forensics_lockers)
+ req_access = list(ACCESS_FORENSICS_LOCKERS)
icon_state = "cabinet"
resistance_flags = FLAMMABLE
max_integrity = 70
@@ -186,7 +186,7 @@
/obj/structure/closet/secure_closet/injection
name = "lethal injections"
- req_access = list(GLOB.access_hos)
+ req_access = list(ACCESS_HOS)
/obj/structure/closet/secure_closet/injection/PopulateContents()
..()
@@ -195,7 +195,7 @@
/obj/structure/closet/secure_closet/brig
name = "brig locker"
- req_access = list(GLOB.access_brig)
+ req_access = list(ACCESS_BRIG)
anchored = TRUE
var/id = null
@@ -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()
..()
@@ -212,7 +212,7 @@
/obj/structure/closet/secure_closet/courtroom
name = "courtroom locker"
- req_access = list(GLOB.access_court)
+ req_access = list(ACCESS_COURT)
/obj/structure/closet/secure_closet/courtroom/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()
@@ -251,7 +251,7 @@
/obj/structure/closet/secure_closet/armory2
name = "armory ballistics locker"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
icon_state = "armory"
/obj/structure/closet/secure_closet/armory2/PopulateContents()
@@ -264,7 +264,7 @@
/obj/structure/closet/secure_closet/armory3
name = "armory energy gun locker"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
icon_state = "armory"
/obj/structure/closet/secure_closet/armory3/PopulateContents()
@@ -278,7 +278,7 @@
/obj/structure/closet/secure_closet/tac
name = "armory tac locker"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
icon_state = "tac"
/obj/structure/closet/secure_closet/tac/PopulateContents()
@@ -290,7 +290,7 @@
/obj/structure/closet/secure_closet/lethalshots
name = "shotgun lethal rounds"
- req_access = list(GLOB.access_armory)
+ req_access = list(ACCESS_ARMORY)
icon_state = "tac"
/obj/structure/closet/secure_closet/lethalshots/PopulateContents()
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index a55c673e696..8e1010b945d 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 064d056cf1c..24e70059af0 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 f98e24670d3..388e140fe52 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 ebe6972434a..35abd498515 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
@@ -442,7 +442,7 @@
/datum/outfit/syndicate_empty/SBC/assault/captain
name = "Syndicate Battlecruiser Captain"
- l_pocket = /obj/item/weapon/melee/energy/sword/saber/red
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber/red
r_pocket = /obj/item/weapon/melee/classic_baton/telescopic
suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate
suit_store = /obj/item/weapon/gun/ballistic/revolver/mateba
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index f152634e38e..ed222445aff 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/grille.dm b/code/game/objects/structures/grille.dm
index e50fe4bc280..5f33ea0566b 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -49,17 +49,11 @@
new /obj/structure/grille/ratvar(src.loc)
qdel(src)
-/obj/structure/grille/Bumped(atom/user)
- if(ismob(user))
- var/tile_density = FALSE
- for(var/atom/movable/AM in get_turf(src))
- if(AM == src)
- continue
- if(AM.density && AM.layer >= layer)
- tile_density = TRUE
- break
- if(!tile_density)
- shock(user, 70)
+/obj/structure/grille/CollidedWith(atom/movable/AM)
+ if(!ismob(AM))
+ return
+ var/mob/M = AM
+ shock(M, 70)
/obj/structure/grille/attack_paw(mob/user)
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 080356bff0a..673f16c114c 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -115,10 +115,14 @@
shockcd = TRUE
addtimer(CALLBACK(src, .proc/cooldown), 5)
-/obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/user)
- if(!shockcd)
- if(ismob(user))
- var/mob/living/M = user
- M.electrocute_act(15,"Energy Barrier", safety=1)
- shockcd = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), 5)
+/obj/structure/holosign/barrier/cyborg/hacked/CollidedWith(atom/movable/AM)
+ if(shockcd)
+ return
+
+ if(!ismob(AM))
+ return
+
+ var/mob/living/M = AM
+ M.electrocute_act(15,"Energy Barrier", safety=1)
+ shockcd = TRUE
+ addtimer(CALLBACK(src, .proc/cooldown), 5)
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index fa2415380c8..f6b13f14b17 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -37,10 +37,10 @@
..()
move_update_air(T)
-/obj/structure/mineral_door/Bumped(atom/user)
+/obj/structure/mineral_door/CollidedWith(atom/movable/AM)
..()
if(!state)
- return TryToSwitchState(user)
+ return TryToSwitchState(AM)
/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral
if(isAI(user)) //so the AI can't open it
@@ -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 c9ef64cffa4..c382fd6f2dc 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -1,5 +1,6 @@
#define MUSIC_MAXLINES 300
+#define MUSIC_MAXLINECHARS 50
/datum/song
var/name = "Untitled"
@@ -16,10 +17,11 @@
var/instrumentExt = "ogg" // the file extension
var/obj/instrumentObj = null // the associated obj playing the sound
-/datum/song/New(dir, obj)
+/datum/song/New(dir, obj, ext = "ogg")
tempo = sanitize_tempo(tempo)
instrumentDir = dir
instrumentObj = obj
+ instrumentExt = ext
/datum/song/Destroy()
instrumentObj = null
@@ -52,7 +54,7 @@
return
// now generate name
- var/soundfile = "sound/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]"
+ var/soundfile = "sound/instruments/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]"
soundfile = file(soundfile)
// make sure the note exists
if(!fexists(soundfile))
@@ -70,10 +72,10 @@
/datum/song/proc/shouldStopPlaying(mob/user)
if(instrumentObj)
if(!user.canUseTopic(instrumentObj))
- return 1
+ return TRUE
return !instrumentObj.anchored // add special cases to stop in subclasses
else
- return 1
+ return TRUE
/datum/song/proc/playsong(mob/user)
while(repeat >= 0)
@@ -91,9 +93,9 @@
for(var/note in splittext(notes[1], "-"))
//to_chat(world, "note: [note]")
if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case
- playing = 0
+ playing = FALSE
return
- if(lentext(note) == 0)
+ if(!lentext(note))
continue
//to_chat(world, "Parse: [copytext(note,1,2)]")
var/cur_note = text2ascii(note) - 96
@@ -123,7 +125,7 @@
else
sleep(tempo)
repeat--
- playing = 0
+ playing = FALSE
repeat = 0
updateDialog(user)
@@ -172,7 +174,7 @@
defined by tempo / x: C,G/2,E/4
Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
- Lines may be up to 50 characters.
+ Lines may be up to [MUSIC_MAXLINECHARS] characters.
A song may only contain up to [MUSIC_MAXLINES] lines.
"}
else
@@ -198,7 +200,7 @@
lines.Cut(MUSIC_MAXLINES + 1)
var/linenum = 1
for(var/l in lines)
- if(lentext(l) > 50)
+ if(lentext(l) > MUSIC_MAXLINECHARS)
to_chat(usr, "Line [linenum] too long!")
lines.Remove(l)
else
@@ -225,11 +227,11 @@
if(!in_range(instrumentObj, usr))
return
- if(lentext(t) >= 3072)
+ if(lentext(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
if(cont == "no")
break
- while(lentext(t) > 3072)
+ while(lentext(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
ParseSong(t)
else if(href_list["help"])
@@ -251,7 +253,7 @@
tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]))
else if(href_list["play"])
- playing = 1
+ playing = TRUE
spawn()
playsong(usr)
@@ -261,8 +263,8 @@
return
if(lines.len > MUSIC_MAXLINES)
return
- if(lentext(newline) > 50)
- newline = copytext(newline, 1, 50)
+ if(lentext(newline) > MUSIC_MAXLINECHARS)
+ newline = copytext(newline, 1, MUSIC_MAXLINECHARS)
lines.Add(newline)
else if(href_list["deleteline"])
@@ -276,14 +278,14 @@
var/content = html_encode(input("Enter your line: ", instrumentObj.name, lines[num]) as text|null)
if(!content || !in_range(instrumentObj, usr))
return
- if(lentext(content) > 50)
- content = copytext(content, 1, 50)
+ if(lentext(content) > MUSIC_MAXLINECHARS)
+ content = copytext(content, 1, MUSIC_MAXLINECHARS)
if(num > lines.len || num < 1)
return
lines[num] = content
else if(href_list["stop"])
- playing = 0
+ playing = FALSE
updateDialog(usr)
return
@@ -302,7 +304,7 @@
if(instrumentObj)
return !isliving(instrumentObj.loc)
else
- return 1
+ return TRUE
//////////////////////////////////////////////////////////////////////////
@@ -359,7 +361,7 @@
/obj/structure/piano/attackby(obj/item/O, mob/user, params)
if (istype(O, /obj/item/weapon/wrench))
if (!anchored && !isinspace())
- playsound(src.loc, O.usesound, 50, 1)
+ playsound(src, O.usesound, 50, 1)
to_chat(user, " You begin to tighten \the [src] to the floor...")
if (do_after(user, 20*O.toolspeed, target = src))
user.visible_message( \
@@ -368,7 +370,7 @@
"You hear ratchet.")
anchored = TRUE
else if(anchored)
- playsound(src.loc, O.usesound, 50, 1)
+ playsound(src, O.usesound, 50, 1)
to_chat(user, " You begin to loosen \the [src]'s casters...")
if (do_after(user, 40*O.toolspeed, target = src))
user.visible_message( \
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 4be7d1e0f85..deb2a6b3198 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 f93ed0eb77c..0b9745f0d6a 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 d6017a0f864..0be8d40402d 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -115,7 +115,7 @@
radiate()
return ..()
-/obj/structure/statue/uranium/Bumped(atom/user)
+/obj/structure/statue/uranium/CollidedWith(atom/movable/AM)
radiate()
..()
@@ -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)
@@ -273,7 +273,7 @@
name = "statue of a clown"
icon_state = "clown"
-/obj/structure/statue/bananium/Bumped(atom/user)
+/obj/structure/statue/bananium/CollidedWith(atom/movable/AM)
honk()
..()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 585e98d7d86..d8e392f8b9f 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/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm
index f96fc044823..fcb317528c8 100644
--- a/code/game/objects/structures/transit_tubes/station.dm
+++ b/code/game/objects/structures/transit_tubes/station.dm
@@ -32,7 +32,7 @@
/obj/structure/transit_tube/station/should_stop_pod(pod, from_dir)
return 1
-/obj/structure/transit_tube/station/Bumped(atom/movable/AM)
+/obj/structure/transit_tube/station/CollidedWith(atom/movable/AM)
if(!pod_moving && open_status == STATION_TUBE_OPEN && ismob(AM) && AM.dir == boarding_dir)
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving)
@@ -71,7 +71,7 @@
if(do_after(user, 15, target = src))
if(open_status == STATION_TUBE_OPEN && GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs())
GM.Knockdown(100)
- src.Bumped(GM)
+ src.CollidedWith(GM)
break
else
for(var/obj/structure/transit_tube_pod/pod in loc)
diff --git a/code/game/turfs/simulated/dirtystation.dm b/code/game/turfs/simulated/dirtystation.dm
index 1c59cd2999b..7be9b6cd342 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 49da7959ab0..f3f8fc5959a 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/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 3ca061b2c9c..c961b9243cb 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 0219427729c..a9f07b59b5f 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
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 6c09c5586fa..e71015e1a5b 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -98,7 +98,7 @@
to_chat(M, "You tunnel into the rock.")
gets_drilled(M)
-/turf/closed/mineral/Bumped(AM as mob|obj)
+/turf/closed/mineral/CollidedWith(atom/movable/AM)
..()
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
@@ -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())
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index 2cfb32f6dc8..7e1181413e3 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -86,7 +86,7 @@
radiate()
..()
-/turf/closed/wall/mineral/uranium/Bumped(AM as mob|obj)
+/turf/closed/wall/mineral/uranium/CollidedWith(atom/movable/AM)
radiate()
..()
@@ -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 64a03cef44d..d0eaad34e3a 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 bea9841ee7c..c343e689222 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/space/transit.dm b/code/game/turfs/space/transit.dm
index 238b38b9b25..c7e6973c4db 100644
--- a/code/game/turfs/space/transit.dm
+++ b/code/game/turfs/space/transit.dm
@@ -31,6 +31,8 @@
/turf/open/space/transit/proc/throw_atom(atom/movable/AM)
if(!AM || istype(AM, /obj/docking_port))
return
+ if(AM.loc != src) // Multi-tile objects are "in" multiple locs but its loc is it's true placement.
+ return // Don't move multi tile objects if their origin isnt in transit
var/max = world.maxx-TRANSITIONEDGE
var/min = 1+TRANSITIONEDGE
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index ffb7831b7b9..749da7e78a2 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)
- return ChangeTurf(path, defer_change, ignore_air)
+/turf/proc/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE, new_baseturf)
+ return ChangeTurf(path, defer_change, ignore_air, new_baseturf)
//Creates a new turf
-/turf/proc/ChangeTurf(path, defer_change = FALSE, ignore_air = FALSE)
+/turf/proc/ChangeTurf(path, defer_change = FALSE, ignore_air = FALSE, new_baseturf)
if(!path)
return
if(!GLOB.use_preloader && path == type) // Don't no-op if the map loader requires it to be reconstructed
@@ -212,7 +212,10 @@
qdel(src) //Just get the side effects and call Destroy
var/turf/W = new path(src)
- W.baseturf = old_baseturf
+ if(new_baseturf)
+ W.baseturf = new_baseturf
+ else
+ W.baseturf = old_baseturf
if(!defer_change)
W.AfterChange(ignore_air)
@@ -223,10 +226,6 @@
levelupdate()
CalculateAdjacentTurfs()
- if(!can_have_cabling())
- for(var/obj/structure/cable/C in contents)
- C.deconstruct()
-
//update firedoor adjacency
var/list/turfs_to_check = get_adjacent_open_turfs(src) | src
for(var/I in turfs_to_check)
@@ -408,21 +407,16 @@
if(!SSticker.HasRoundStarted())
add_blueprints(AM)
-/turf/proc/empty(turf_type=/turf/open/space)
+/turf/proc/empty(turf_type=/turf/open/space, baseturf_type)
// Remove all atoms except observers, landmarks, docking ports
var/turf/T0 = src
- for(var/A in T0.GetAllContents())
- if(istype(A, /mob/dead))
- continue
- if(istype(A, /obj/effect/landmark))
- continue
- if(istype(A, /obj/docking_port))
- continue
- if(A == T0)
- continue
- qdel(A, force=TRUE)
+ 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(T0.GetAllContents(),ignored_atoms,reversed=TRUE)
+ for(var/i in 1 to allowed_contents.len)
+ var/thing = allowed_contents[i]
+ qdel(thing, force=TRUE)
- T0.ChangeTurf(turf_type)
+ T0.ChangeTurf(turf_type, FALSE, FALSE, baseturf_type)
SSair.remove_from_active(T0)
T0.CalculateAdjacentTurfs()
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 4bc6bd67945..b5f2bc750ef 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_verbs.dm b/code/modules/admin/admin_verbs.dm
index ac3d4cb21e0..ff8b10d185b 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/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index bd8a2455332..44b9e295810 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -120,29 +120,29 @@
var/list/warp_points = list()
-/obj/effect/forcefield/arena_shuttle/Bumped(mob/M as mob|obj)
+/obj/effect/forcefield/arena_shuttle/CollidedWith(atom/movable/AM)
+ if(!isliving(AM))
+ return
if(!warp_points.len)
warp_points = get_area_turfs(/area/shuttle/escape)
for(var/turf/T in warp_points)
- for(var/atom/movable/AM in T)
- if(AM.density && AM.anchored)
+ for(var/atom/movable/TAM in T)
+ if(TAM.density && TAM.anchored)
warp_points -= T
break
- if(!isliving(M))
- return
+
+ var/mob/living/L = AM
+ if(L.pulling && istype(L.pulling, /obj/item/bodypart/head))
+ to_chat(L, "Your offering is accepted. You may pass.")
+ qdel(L.pulling)
+ var/turf/LA = pick(warp_points)
+ L.forceMove(LA)
+ L.hallucination = 0
+ to_chat(L, "The battle is won. Your bloodlust subsides.")
+ for(var/obj/item/weapon/twohanded/required/chainsaw/doomslayer/chainsaw in L)
+ qdel(chainsaw)
else
- var/mob/living/L = M
- if(L.pulling && istype(L.pulling, /obj/item/bodypart/head))
- to_chat(L, "Your offering is accepted. You may pass.")
- qdel(L.pulling)
- var/turf/LA = pick(warp_points)
- L.forceMove(LA)
- L.hallucination = 0
- to_chat(L, "The battle is won. Your bloodlust subsides.")
- for(var/obj/item/weapon/twohanded/required/chainsaw/doomslayer/chainsaw in L)
- qdel(chainsaw)
- else
- to_chat(L, "You are not yet worthy of passing. Drag a severed head to the barrier to be allowed entry to the hall of champions.")
+ to_chat(L, "You are not yet worthy of passing. Drag a severed head to the barrier to be allowed entry to the hall of champions.")
/obj/effect/landmark/shuttle_arena_safe
name = "hall of champions"
@@ -157,19 +157,20 @@
name = "portal"
var/list/warp_points = list()
-/obj/effect/forcefield/arena_shuttle_entrance/Bumped(mob/M as mob|obj)
+/obj/effect/forcefield/arena_shuttle_entrance/CollidedWith(atom/movable/AM)
+ if(!isliving(AM))
+ return
+
if(!warp_points.len)
for(var/obj/effect/landmark/shuttle_arena_entrance/S in GLOB.landmarks_list)
warp_points |= S
- if(!isliving(M))
- return
var/obj/effect/landmark/LA = pick(warp_points)
-
+ var/mob/living/M = AM
M.forceMove(get_turf(LA))
to_chat(M, "You're trapped in a deadly arena! To escape, you'll need to drag a severed head to the escape portals.")
spawn()
- var/obj/effect/mine/pickup/bloodbath/B = new(M)
+ var/obj/effect/mine/pickup/bloodbath/B = new (M)
B.mineEffect(M)
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index c04e3c91ad4..05d97be6adb 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 ffad361db84..95e7c9a9045 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)
@@ -149,8 +149,9 @@
var/choice = input("Are you sure you want to cure all disease?") in list("Yes", "Cancel")
if(choice == "Yes")
message_admins("[key_name_admin(usr)] has cured all diseases.")
- for(var/datum/disease/D in SSdisease.processing)
- D.cure(D)
+ for(var/thing in SSdisease.active_diseases)
+ var/datum/disease/D = thing
+ D.cure(0)
if("set_name")
if(!check_rights(R_ADMIN))
return
@@ -537,17 +538,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 66b17af462d..a3ca52fa699 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -348,11 +348,12 @@
else if(href_list["delay_round_end"])
if(!check_rights(R_SERVER))
return
-
if(!SSticker.delay_end)
SSticker.admin_delay_notice = input(usr, "Enter a reason for delaying the round end", "Round Delay Reason") as null|text
- if(!SSticker.admin_delay_notice)
+ if(isnull(SSticker.admin_delay_notice))
return
+ else
+ SSticker.admin_delay_notice = null
SSticker.delay_end = !SSticker.delay_end
var/reason = SSticker.delay_end ? "for reason: [SSticker.admin_delay_notice]" : "."//laziness
var/msg = "[SSticker.delay_end ? "delayed" : "undelayed"] the round end [reason]"
@@ -1910,7 +1911,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/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index caa2d2c7cb5..31fb08da362 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 5df7ee8c783..cfccf5fa788 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 0f07f31b85a..c45fa134357 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 28a65f4e7dd..2a0575eb283 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 62205bed97b..4aa98602512 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -615,7 +615,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]")
if(isobserver(M))
- new /obj/effect/gibspawner/generic(M.loc, M.viruses)
+ new /obj/effect/gibspawner/generic(get_turf(M))
return
if(confirm == "Yes")
M.gib()
@@ -649,9 +649,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
set desc = "switches between 1x and custom views"
if(view == world.view)
- view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
+ change_view(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128))
else
- view = world.view
+ change_view(world.view)
log_admin("[key_name(usr)] changed their view range to [view].")
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 2592bc7191c..be1659546f2 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -214,7 +214,7 @@
qdel(src)
return
-/obj/effect/beam/i_beam/Bumped()
+/obj/effect/beam/i_beam/CollidedWith(atom/movable/AM)
hit()
/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index c61212671c1..26882d0a81c 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)
@@ -714,8 +714,8 @@
if(emagged)
return
emagged = TRUE
- visible_message("Sparks fly out of the [src]!", "You emag the [src], disabling its safeties.")
- playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
+ visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.")
+ playsound(src, "sparks", 50, 1)
/obj/machinery/airalarm/obj_break(damage_flag)
..()
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index ce8a6784dda..18edff4e75c 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -284,48 +284,4 @@ Pipelines + Other Objects -> Pipe network
//Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
/obj/machinery/atmospherics/proc/can_see_pipes()
- return 1
-
-//Properly updates pipes on shuttle movement
-/obj/machinery/atmospherics/shuttleRotate(rotation)
- var/list/real_node_connect = getNodeConnects()
- for(DEVICE_TYPE_LOOP)
- real_node_connect[I] = angle2dir(rotation+dir2angle(real_node_connect[I]))
-
- ..()
- SetInitDirections()
- var/list/supposed_node_connect = getNodeConnects()
- var/list/nodes_copy = nodes.Copy()
-
- for(DEVICE_TYPE_LOOP)
- var/new_pos = supposed_node_connect.Find(real_node_connect[I])
- nodes[new_pos] = nodes_copy[I]
-
-/obj/machinery/atmospherics/afterShuttleMove()
- ..()
- var/missing_nodes = FALSE
- for(DEVICE_TYPE_LOOP)
- if(src.nodes[I])
- var/obj/machinery/atmospherics/node = src.nodes[I]
- var/connected = FALSE
- for(var/D in GLOB.cardinals)
- if(node in get_step(src, D))
- connected = TRUE
- break
-
- if(!connected)
- nullifyNode(I)
-
- if(!src.nodes[I])
- missing_nodes = TRUE
-
- if(missing_nodes)
- atmosinit()
- for(var/obj/machinery/atmospherics/A in pipeline_expansion())
- A.atmosinit()
- if(A.returnPipenet())
- A.addMember(src)
- build_network()
- else
- // atmosinit() calls update_icon(), so we don't need to call it
- update_icon()
+ return 1
\ No newline at end of file
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index cd9eca1faa1..b55ed7e84fe 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -30,6 +30,8 @@
var/running_bob_anim = FALSE
+ var/escape_in_progress = FALSE
+
/obj/machinery/atmospherics/components/unary/cryo_cell/Initialize()
. = ..()
initialize_directions = dir
@@ -251,11 +253,16 @@
return occupant
/obj/machinery/atmospherics/components/unary/cryo_cell/container_resist(mob/living/user)
+ if(escape_in_progress)
+ to_chat(user, "You are already trying to exit (This will take around 30 seconds)")
+ return
+ escape_in_progress = TRUE
to_chat(user, "You struggle inside the cryotube, kicking the release with your foot... (This will take around 30 seconds.)")
audible_message("You hear a thump from [src].")
if(do_after(user, 300))
if(occupant == user) // Check they're still here.
open_machine()
+ escape_in_progress = FALSE
/obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user)
..()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 59fcf9c4a23..75766c011a4 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
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index b8e5321aef0..f824bf0c560 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -588,7 +588,7 @@
/obj/effect/ctf/ammo/Collide(atom/movable/AM)
reload(AM)
-/obj/effect/ctf/ammo/Bumped(atom/movable/AM)
+/obj/effect/ctf/ammo/CollidedWith(atom/movable/AM)
reload(AM)
/obj/effect/ctf/ammo/proc/reload(mob/living/M)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 48ec50fcb45..530563c479f 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -19,6 +19,7 @@
var/brute_damage = 0
var/oxy_damage = 0
var/burn_damage = 0
+ var/datum/disease/disease = null //Do they start with a pre-spawned disease?
var/mob_color //Change the mob's color
var/assignedrole
density = TRUE
@@ -66,6 +67,8 @@
M.gender = mob_gender
if(faction)
M.faction = list(faction)
+ if(disease)
+ M.ForceContractDisease(new disease)
if(death)
M.death(1) //Kills the new mob
@@ -237,6 +240,19 @@
///////////Civilians//////////////////////
+/obj/effect/mob_spawn/human/corpse/assistant
+ name = "Assistant"
+ outfit = /datum/outfit/job/assistant
+
+/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection
+ disease = /datum/disease/beesease
+
+/obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection
+ disease = /datum/disease/brainrot
+
+/obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection
+ disease = /datum/disease/fluspanish
+
/obj/effect/mob_spawn/human/cook
name = "Cook"
outfit = /datum/outfit/job/cook
@@ -299,7 +315,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 +369,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 +385,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 +405,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 1e3ecfc93fa..69e23335efc 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 4ccdf0e58b7..3627f034df2 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -136,7 +136,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
update_icon()
//okay, here's the good teleporting stuff
-/obj/machinery/gateway/centerstation/Bumped(atom/movable/AM)
+/obj/machinery/gateway/centerstation/CollidedWith(atom/movable/AM)
if(!active)
return
if(!detect())
@@ -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
@@ -212,7 +212,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
return TRUE
return FALSE
-/obj/machinery/gateway/centeraway/Bumped(atom/movable/AM)
+/obj/machinery/gateway/centeraway/CollidedWith(atom/movable/AM)
if(!detect())
return
if(!active)
diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm
index c3590277d5a..f38e6721280 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/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 458a067723c..b1dadcdf32b 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -104,7 +104,7 @@
/obj/item/weapon/dnainjector/lasereyesmut = 7,
/obj/item/weapon/gun/magic/wand/fireball/inert = 3,
/obj/item/weapon/pneumatic_cannon = 15,
- /obj/item/weapon/melee/energy/sword = 7,
+ /obj/item/weapon/melee/transforming/energy/sword = 7,
/obj/item/weapon/spellbook/oneuse/knock = 15,
/obj/item/weapon/spellbook/oneuse/summonitem = 20,
/obj/item/weapon/spellbook/oneuse/forcewall = 17,
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 5fb373fbe70..339f179e006 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/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index 43a620f7481..95cf0d718c5 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -91,16 +91,19 @@
icon_state = "blobpod"
var/triggered = 0
-/obj/effect/meatgrinder/Crossed(AM)
- Bumped(AM)
+/obj/effect/meatgrinder/Crossed(atom/movable/AM)
+ CollidedWith(AM)
-/obj/effect/meatgrinder/Bumped(mob/M)
+/obj/effect/meatgrinder/CollidedWith(atom/movable/AM)
if(triggered)
return
+ if(!ishuman(AM))
+ return
- if(ishuman(M) && M.stat != DEAD && M.ckey)
- for(var/mob/O in viewers(world.view, src.loc))
+ var/mob/living/carbon/human/M = AM
+
+ if(M.stat != DEAD && M.ckey)
visible_message("[M] triggered the [src]!")
triggered = 1
diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm
index 82a42f8f055..e21f9b7ed2a 100644
--- a/code/modules/cargo/console.dm
+++ b/code/modules/cargo/console.dm
@@ -24,18 +24,19 @@
contraband = board.contraband
emagged = board.emagged
-/obj/machinery/computer/cargo/emag_act(mob/living/user)
- if(!emagged)
- user.visible_message("[user] swipes a suspicious card through [src]!",
- "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.")
+/obj/machinery/computer/cargo/emag_act(mob/user)
+ if(emagged)
+ return
+ user.visible_message("[user] swipes a suspicious card through [src]!",
+ "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.")
- emagged = TRUE
- contraband = TRUE
+ emagged = TRUE
+ contraband = TRUE
- // This also permamently sets this on the circuit board
- var/obj/item/weapon/circuitboard/computer/cargo/board = circuit
- board.contraband = TRUE
- board.emagged = TRUE
+ // This also permamently sets this on the circuit board
+ var/obj/item/weapon/circuitboard/computer/cargo/board = circuit
+ board.contraband = TRUE
+ board.emagged = TRUE
/obj/machinery/computer/cargo/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm
index 36a667bc232..bca290c4db1 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/packs.dm b/code/modules/cargo/packs.dm
index 09674cf4b34..e3398c6f8f2 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,
@@ -1600,6 +1600,19 @@
var/item = pick_n_take(L)
new item(C)
+/datum/supply_pack/misc/bigband
+ contains = list(/obj/item/device/instrument/violin,
+ /obj/item/device/instrument/guitar,
+ /obj/item/device/instrument/glockenspiel,
+ /obj/item/device/instrument/accordion,
+ /obj/item/device/instrument/saxophone,
+ /obj/item/device/instrument/trombone,
+ /obj/item/device/instrument/recorder,
+ /obj/item/device/instrument/harmonica,
+ /obj/structure/piano)
+ name = "Big band instrument collection"
+ cost = 5000
+ crate_name = "Big band musical instruments collection"
/datum/supply_pack/misc/randomised/contraband
name = "Contraband Crate"
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index 06e921399e8..51cf83d0ae8 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -49,6 +49,7 @@
preload_rsc = PRELOAD_RSC
var/global/obj/screen/click_catcher/void
+ var/list/obj/screen/click_catcher/click_catcher_tiles
// Used by html_interface module.
var/hi_last_pos
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index d9325cebe5f..827ea252fc9 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -282,17 +282,6 @@ GLOBAL_LIST(external_rsc_urls)
if (isnum(cached_player_age) && cached_player_age == -1) //first connection
player_age = 0
if (isnum(cached_player_age) && cached_player_age == -1) //first connection
- if (config.panic_bunker && !holder && !(ckey in GLOB.deadmins))
- log_access("Failed Login: [key] - New account attempting to connect during panic bunker")
- message_admins("Failed Login: [key] - New account attempting to connect during panic bunker")
- to_chat(src, "Sorry but the server is currently not accepting connections from never before seen players.")
- if(config.allow_panic_bunker_bounce && tdata != "redirect")
- to_chat(src, "Sending you to [config.panic_server_name].")
- winset(src, null, "command=.options")
- src << link("[config.panic_address]?redirect")
- qdel(src)
- return 0
-
if (config.notify_new_player_age >= 0)
message_admins("New user: [key_name_admin(src)] is connecting here for the first time.")
if (config.irc_first_connection_alert)
@@ -310,10 +299,8 @@ GLOBAL_LIST(external_rsc_urls)
send_resources()
- if(!void)
- void = new()
-
- screen += void
+ generate_clickcatcher()
+ apply_clickcatcher()
if(prefs.lastchangelog != GLOB.changelog_hash) //bolds the changelog button on the interface so we know there are updates.
to_chat(src, "You have unread updates in the changelog.")
@@ -430,6 +417,18 @@ GLOBAL_LIST(external_rsc_urls)
if(!query_client_in_db.Execute())
return
if(!query_client_in_db.NextRow())
+ if (config.panic_bunker && !holder && !(ckey in GLOB.deadmins))
+ log_access("Failed Login: [key] - New account attempting to connect during panic bunker")
+ message_admins("Failed Login: [key] - New account attempting to connect during panic bunker")
+ to_chat(src, "Sorry but the server is currently not accepting connections from never before seen players.")
+ var/list/connectiontopic_a = params2list(connectiontopic)
+ if(config.panic_address && !connectiontopic_a["redirect"])
+ to_chat(src, "Sending you to [config.panic_server_name ? config.panic_server_name : config.panic_address].")
+ winset(src, null, "command=.options")
+ src << link("[config.panic_address]?redirect=1")
+ qdel(src)
+ return
+
new_player = 1
account_join_date = sanitizeSQL(findJoinDate())
var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `firstseen`, `lastseen`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', Now(), Now(), INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])")
@@ -644,12 +643,32 @@ GLOBAL_LIST(external_rsc_urls)
if ("key")
return FALSE
+/client/proc/clear_click_catcher()
+ if(!LAZYLEN(click_catcher_tiles))
+ return
+ for(var/I in click_catcher_tiles)
+ screen -= I
+ qdel(I)
/client/proc/change_view(new_size)
if (isnull(new_size))
CRASH("change_view called without argument.")
view = new_size
+ apply_clickcatcher()
+
+/client/proc/generate_clickcatcher()
+ if(!void)
+ void = new()
+ screen += void
+
+/client/proc/apply_clickcatcher()
+ clear_click_catcher()
+ generate_clickcatcher()
+ click_catcher_tiles = void.UpdateGreed(view,view)
+ for(var/obj/screen/OS in click_catcher_tiles)
+ screen += OS
+
/client/proc/AnnouncePR(announcement)
if(prefs && prefs.chat_toggles & CHAT_PULLR)
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 32d6b1fc4b1..f7d396f9ee9 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 ea762f388ae..22bff9bd966 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))
@@ -499,7 +499,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/ears/ears.dm b/code/modules/clothing/ears/ears.dm
index 906bde2a870..b36ad74f895 100644
--- a/code/modules/clothing/ears/ears.dm
+++ b/code/modules/clothing/ears/ears.dm
@@ -1,50 +1,50 @@
-
-//Ears: currently only used for headsets and earmuffs
-/obj/item/clothing/ears
- name = "ears"
- w_class = WEIGHT_CLASS_TINY
- throwforce = 0
- slot_flags = SLOT_EARS
- resistance_flags = 0
-
-/obj/item/clothing/ears/earmuffs
- name = "earmuffs"
- desc = "Protects your hearing from loud noises, and quiet ones as well."
- icon_state = "earmuffs"
- item_state = "earmuffs"
- strip_delay = 15
- equip_delay_other = 25
- resistance_flags = FLAMMABLE
-
-/obj/item/clothing/ears/earmuffs/Initialize(mapload)
- . = ..()
- SET_SECONDARY_FLAG(src, BANG_PROTECT)
- SET_SECONDARY_FLAG(src, HEALS_EARS)
-
-/obj/item/clothing/ears/headphones
- name = "headphones"
- desc = "Unce unce unce unce. Boop!"
- icon = 'icons/obj/clothing/accessories.dmi'
- icon_state = "headphones"
- item_state = "headphones"
- slot_flags = SLOT_EARS | SLOT_HEAD | SLOT_NECK //Fluff item, put it whereever you want!
- actions_types = list(/datum/action/item_action/toggle_headphones)
- var/headphones_on = FALSE
-
-/obj/item/clothing/ears/headphones/Initialize()
- . = ..()
- update_icon()
-
-/obj/item/clothing/ears/headphones/update_icon()
- icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
- item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
-
-/obj/item/clothing/ears/headphones/proc/toggle(owner)
- headphones_on = !headphones_on
- update_icon()
- var/mob/living/carbon/human/H = owner
- if(istype(H))
- H.update_inv_ears()
- H.update_inv_neck()
- H.update_inv_head()
- to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]")
+
+//Ears: currently only used for headsets and earmuffs
+/obj/item/clothing/ears
+ name = "ears"
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
+ slot_flags = SLOT_EARS
+ resistance_flags = 0
+
+/obj/item/clothing/ears/earmuffs
+ name = "earmuffs"
+ desc = "Protects your hearing from loud noises, and quiet ones as well."
+ icon_state = "earmuffs"
+ item_state = "earmuffs"
+ strip_delay = 15
+ equip_delay_other = 25
+ resistance_flags = FLAMMABLE
+
+/obj/item/clothing/ears/earmuffs/Initialize(mapload)
+ . = ..()
+ SET_SECONDARY_FLAG(src, BANG_PROTECT)
+ SET_SECONDARY_FLAG(src, HEALS_EARS)
+
+/obj/item/clothing/ears/headphones
+ name = "headphones"
+ desc = "Unce unce unce unce. Boop!"
+ icon = 'icons/obj/clothing/accessories.dmi'
+ icon_state = "headphones"
+ item_state = "headphones"
+ slot_flags = SLOT_EARS | SLOT_HEAD | SLOT_NECK //Fluff item, put it whereever you want!
+ actions_types = list(/datum/action/item_action/toggle_headphones)
+ var/headphones_on = FALSE
+
+/obj/item/clothing/ears/headphones/Initialize()
+ . = ..()
+ update_icon()
+
+/obj/item/clothing/ears/headphones/update_icon()
+ icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
+ item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
+
+/obj/item/clothing/ears/headphones/proc/toggle(owner)
+ headphones_on = !headphones_on
+ update_icon()
+ var/mob/living/carbon/human/H = owner
+ if(istype(H))
+ H.update_inv_ears()
+ H.update_inv_neck()
+ H.update_inv_head()
+ to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]")
\ No newline at end of file
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index 012a446b1db..7908964b1c3 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/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 8b4e3f0fbd7..e50835a74c8 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -18,15 +18,17 @@
H.remove_hud_from(user)
/obj/item/clothing/glasses/hud/emp_act(severity)
- if(emagged == 0)
- emagged = TRUE
- desc = "[desc] The display is flickering slightly."
+ if(emagged)
+ return
+ emagged = TRUE
+ desc = "[desc] The display is flickering slightly."
/obj/item/clothing/glasses/hud/emag_act(mob/user)
- if(emagged == 0)
- emagged = TRUE
- to_chat(user, "PZZTTPFFFT")
- desc = "[desc] The display is flickering slightly."
+ if(emagged)
+ return
+ emagged = TRUE
+ to_chat(user, "PZZTTPFFFT")
+ desc = "[desc] The display is flickering slightly."
/obj/item/clothing/glasses/hud/health
name = "health scanner HUD"
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm
index fccfe21589c..cd2b4c18d51 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert.dm
@@ -52,7 +52,7 @@
/obj/item/weapon/melee/baton/loaded=1,\
/obj/item/clothing/mask/gas/sechailer/swat=1,\
/obj/item/weapon/gun/energy/pulse/pistol/loyalpin=1)
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
/datum/outfit/ert/security
name = "ERT Security"
@@ -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/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index b405c16a7bc..a16226bda5d 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -84,7 +84,7 @@
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/bandana
glasses = /obj/item/clothing/glasses/eyepatch
- r_hand = /obj/item/weapon/melee/energy/sword/pirate
+ r_hand = /obj/item/weapon/melee/transforming/energy/sword/pirate
/datum/outfit/pirate/space
name = "Space Pirate"
@@ -147,7 +147,7 @@
gloves = /obj/item/clothing/gloves/color/black
ears = /obj/item/device/radio/headset
glasses = /obj/item/clothing/glasses/sunglasses
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
l_hand = /obj/item/weapon/storage/secure/briefcase
id = /obj/item/weapon/card/id/syndicate
belt = /obj/item/device/pda/heads
@@ -344,7 +344,7 @@
mask = /obj/item/clothing/mask/gas/sechailer/swat
glasses = /obj/item/clothing/glasses/hud/toggle/thermal
back = /obj/item/weapon/storage/backpack/security
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
r_pocket = /obj/item/weapon/shield/energy
suit_store = /obj/item/weapon/tank/internals/emergency_oxygen
belt = /obj/item/weapon/gun/ballistic/revolver/mateba
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index d516ee2e92d..97cb6fb37b8 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -104,8 +104,6 @@
var/obj/item/weapon/stock_parts/matter_bin/part_bin = null
var/crashing = FALSE //Are we currently getting wrecked?
- var/atom/movable/cached_pull
- var/turf/old_pull_turf
/obj/item/device/flightpack/proc/changeWearer(mob/changeto)
if(wearer)
@@ -247,24 +245,9 @@
momentum_y = Clamp(momentum_y + amounty, -momentum_max, momentum_max)
calculate_momentum_speed()
-/obj/item/device/flightpack/proc/update_cached_pull()
- if(!wearer)
- return
- if(!QDELETED(wearer.pulling))
- cached_pull = wearer.pulling
- if(istype(cached_pull))
- old_pull_turf = get_turf(cached_pull)
- else if(old_pull_turf)
- old_pull_turf = null
-
-/obj/item/device/flightpack/proc/handle_linked_movement(turf/oldTurf, turf/newTurf)
- if(!QDELETED(cached_pull))
- cached_pull.forceMove(oldTurf)
-
/obj/item/device/flightpack/intercept_user_move(dir, mob, newLoc, oldLoc)
if(!flight)
return
- update_cached_pull()
var/momentum_increment = momentum_gain
if(boost)
momentum_increment = boost_power
@@ -281,7 +264,6 @@
adjust_momentum(momentum_increment, 0)
if(WEST)
adjust_momentum(-momentum_increment, 0)
- handle_linked_movement(oldLoc, get_turf(wearer))
//The wearer has momentum left. Move them and take some away, while negating the momentum that moving the wearer would gain. Or force the wearer to lose control if they are incapacitated.
/obj/item/device/flightpack/proc/momentum_drift()
@@ -303,14 +285,10 @@
return FALSE
momentum_decay()
for(var/i in 1 to momentum_speed)
- var/turf/oldturf = get_turf(wearer)
- update_cached_pull()
if(momentum_speed_x >= i)
- if(step(wearer, drift_dir_x))
- handle_linked_movement(oldturf, get_turf(wearer))
+ step(wearer, drift_dir_x)
if(momentum_speed_y >= i)
- if(step(wearer, drift_dir_y))
- handle_linked_movement(oldturf, get_turf(wearer))
+ step(wearer, drift_dir_y)
sleep(1)
//Make the wearer lose some momentum.
@@ -548,11 +526,8 @@
/obj/item/device/flightpack/proc/door_hit(obj/structure/mineral_door/door)
spawn()
door.Open()
- update_cached_pull()
- var/turf/old = get_turf(wearer)
var/turf/T = get_turf(door)
wearer.forceMove(T)
- handle_linked_movement(old, T)
wearer.visible_message("[wearer] rolls to their sides and slips past [door]!")
/obj/item/device/flightpack/proc/crash_grille(obj/structure/grille/target)
@@ -578,23 +553,17 @@
A.open()
wearer.visible_message("[wearer] rolls sideways and slips past [A]")
var/turf/target = get_turf(A)
- var/turf/old = get_turf(wearer)
if(istype(A, /obj/machinery/door/window) && (get_turf(wearer) == get_turf(A)))
target = get_step(A, A.dir)
- update_cached_pull()
wearer.forceMove(target)
- handle_linked_movement(old, target)
return pass
/obj/item/device/flightpack/proc/mobknockback(mob/living/victim, power, direction)
if(!ismob(victim))
return FALSE
- update_cached_pull()
- var/turf/old = get_turf(wearer)
var/turf/T = get_turf(victim)
wearer.forceMove(T)
- handle_linked_movement(old, T)
wearer.visible_message("[wearer] flies over [victim]!")
/obj/item/device/flightpack/proc/victimknockback(atom/movable/victim, power, direction)
@@ -663,11 +632,11 @@
wearer.movement_type |= FLYING
wearer.pass_flags |= flight_passflags
usermessage("ENGAGING FLIGHT ENGINES.")
- update_slowdown()
wearer.floating = TRUE
wearer.visible_message("[wearer]'s flight engines activate as they lift into the air!")
//I DONT HAVE SOUND EFFECTS YET playsound(
flight = TRUE
+ update_slowdown()
update_icon()
ion_trail.start()
@@ -679,7 +648,6 @@
momentum_x = 0
momentum_y = 0
usermessage("DISENGAGING FLIGHT ENGINES.")
- update_slowdown()
wearer.floating = FALSE
wearer.visible_message("[wearer] drops to the ground as their flight engines cut out!")
//NO SOUND YET playsound(
@@ -687,6 +655,7 @@
wearer.movement_type &= ~FLYING
wearer.pass_flags &= ~flight_passflags
flight = FALSE
+ update_slowdown()
if(suit && suit.shoes)
suit.shoes.toggle(FALSE)
if(isturf(wearer.loc))
@@ -937,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 b446943ee4a..00f622b7516 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/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/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/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 91d2aa063d6..48f3a16830c 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/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/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 5fd3a6725b0..b2a70cd5483 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/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/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index c6ab26aee44..993510839a4 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -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/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)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 1f8784217dd..46e953f4d00 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 50757bb364b..f2251c5ce01 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 bcf2e494263..a9b667a5aaa 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 6774bf3f9e3..e7520901410 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 fd02fb430f5..18ceb999019 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 a7c6deadfb3..2318cd468a1 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -36,7 +36,7 @@
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
- allowed = list(/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/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
/obj/item/clothing/suit/pirate/captain
name = "pirate captain coat"
@@ -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/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/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, /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/utility.dm b/code/modules/clothing/suits/utility.dm
index 64f30acc531..95d6db5d4a1 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/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index f6337e886aa..2fc97bf06e4 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 86497c0ab29..8b0b903dc52 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 dbfc2caee29..4c0e4b253bc 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 a4dec416bfc..79e99a19312 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/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index fc86356adf1..dbac2423211 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -27,11 +27,17 @@
continue
if(T.z != ZLEVEL_STATION)
continue
- var/foundAlready = 0 // don't infect someone that already has the virus
- for(var/datum/disease/D in H.viruses)
- foundAlready = 1
+ if(!H.client)
+ continue
+ if(H.stat == DEAD)
+ continue
+ if(VIRUSIMMUNE in H.dna.species.species_traits) //Don't pick someone who's virus immune, only for it to not do anything.
+ continue
+ var/foundAlready = FALSE // don't infect someone that already has a disease
+ for(var/thing in H.viruses)
+ foundAlready = TRUE
break
- if(H.stat == DEAD || foundAlready)
+ if(foundAlready)
continue
var/datum/disease/D
@@ -45,6 +51,6 @@
DS.strain_data["SE"] = H.dna.struc_enzymes
else
D = new virus_type()
- D.carrier = 1
+ D.carrier = TRUE
H.AddDisease(D)
break
\ No newline at end of file
diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm
index 954408ea273..f9e30a54d70 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 0db2d545e46..4fcf0d16914 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/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm
index 60d7535e5a7..d820c3767a7 100644
--- a/code/modules/events/shuttle_loan.dm
+++ b/code/modules/events/shuttle_loan.dm
@@ -79,10 +79,13 @@
SSshuttle.shuttle_loan = null
var/list/empty_shuttle_turfs = list()
- for(var/turf/open/floor/T in SSshuttle.supply.areaInstance)
- if(is_blocked_turf(T))
- continue
- empty_shuttle_turfs += T
+ var/list/area/shuttle/shuttle_areas = SSshuttle.supply.shuttle_areas
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ for(var/turf/open/floor/T in shuttle_area)
+ if(is_blocked_turf(T))
+ continue
+ empty_shuttle_turfs += T
if(!empty_shuttle_turfs.len)
return
@@ -132,7 +135,7 @@
new /obj/structure/spider/stickyweb(T)
if(ANTIDOTE_NEEDED)
- var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish)
+ var/obj/effect/mob_spawn/human/corpse/assistant/infected_assistant = pick(/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection, /obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection, /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection)
var/turf/T
for(var/i=0, i<10, i++)
if(prob(15))
@@ -142,11 +145,7 @@
else if(prob(25))
shuttle_spawns.Add(/obj/item/weapon/shard)
T = pick_n_take(empty_shuttle_turfs)
- var/obj/effect/decal/cleanable/blood/b = new(T)
- var/datum/disease/D = new virus_type()
- D.longevity = 1000
- b.viruses += D
- D.holder = b
+ new infected_assistant(T)
shuttle_spawns.Add(/obj/structure/closet/crate)
shuttle_spawns.Add(/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat)
shuttle_spawns.Add(/obj/item/weapon/reagent_containers/glass/bottle/magnitis)
diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm
index 4bd0a729882..ed43530bc3d 100644
--- a/code/modules/events/spontaneous_appendicitis.dm
+++ b/code/modules/events/spontaneous_appendicitis.dm
@@ -8,10 +8,17 @@
/datum/round_event/spontaneous_appendicitis/start()
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
- var/foundAlready = 0 //don't infect someone that already has the virus
- for(var/datum/disease/D in H.viruses)
- foundAlready = 1
- if(H.stat == 2 || foundAlready)
+ if(!H.client)
+ continue
+ if(H.stat == DEAD)
+ continue
+ if(!H.getorgan(/obj/item/organ/appendix)) //Don't give the disease to some who lacks it, only for it to be auto-cured
+ continue
+ var/foundAlready = FALSE //don't infect someone that already has appendicitis
+ for(var/datum/disease/appendicitis/A in H.viruses)
+ foundAlready = TRUE
+ break
+ if(foundAlready)
continue
var/datum/disease/D = new /datum/disease/appendicitis
diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm
index 98ae7ba6aa5..5a38a439ed2 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 6cc08868f09..1fd83090283 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -516,7 +516,7 @@ var/static/list/hallucinations_major = list(
return
var/static/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item/ammo_box/a357,\
- /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/energy/sword/saber,\
+ /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/transforming/energy/sword/saber,\
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
/obj/item/weapon/cartridge/virus/syndicate, /obj/item/clothing/under/chameleon,\
/obj/item/clothing/shoes/chameleon, /obj/item/weapon/card/id/syndicate,\
@@ -695,7 +695,7 @@ var/static/list/hallucinations_major = list(
var/speak_messages = list("[pick("I'm watching you...","I know what you're doing","What are you hiding?","I saw that")]",\
"[pick("","Hey, ","Hi ","Hello ","Wait, ","It's ")][target.first_name()]!",\
"[pick("Get out","Go away","Fuck off","OUT!")]",\
- "[pick("Kchck-Chkck? Kchchck!","EEEeeeeEEEE","#@§*&£","H-hhhhh...")]",\
+ "[pick("Kchck-Chkck? Kchchck!","EEEeeeeEEEE","#@�*&�","H-hhhhh...")]",\
"[pick("Did you hear that?","Did you see that?","What was that?")]",\
"[pick("Hail Ratvar","Hail Nar'Sie","Viva!","[generate_code_phrase()]","Are you mr. [pick(GLOB.possible_changeling_IDs)]?")]",\
"[pick("Why?","What?","Wait, what?","Wait","Hold on","Uh...")]",\
@@ -1094,5 +1094,4 @@ var/static/list/hallucinations_major = list(
H.xo = target.x - start.x
H.original = target
H.fire()
- qdel(src)
-
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index b8e85915b88..ce42cf7005a 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 0dffc93704e..b8feddfa791 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 7a1682aedd0..f2047ac092a 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 fe726211dc4..25b7b991445 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 ce18a40f2a1..a0b2b34740d 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/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 1600c0a2a84..2d6bc81f0b0 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -33,11 +33,12 @@
CRASH("Didn't find an input plate.")
return
-/obj/machinery/gibber/autogibber/Bumped(atom/A)
- if(!input_plate) return
+/obj/machinery/gibber/autogibber/CollidedWith(atom/movable/AM)
+ if(!input_plate)
+ return
- if(ismob(A))
- var/mob/M = A
+ if(ismob(AM))
+ var/mob/M = AM
if(M.loc == input_plate)
M.loc = src
diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
index 9dd314e18ca..c8430a39c39 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 6df7ce9e443..d726a106e74 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 09a0560357e..71f8d727fcb 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
@@ -162,7 +162,8 @@
//set reagent data
B.data["donor"] = O
- for(var/datum/disease/D in O.viruses)
+ for(var/thing in O.viruses)
+ var/datum/disease/D = thing
if(!(D.spread_flags & SPECIAL))
B.data["viruses"] += D.Copy()
if(O.has_dna())
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index ecacc6d1c66..2cb0631cb29 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
@@ -453,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/games/cards.dm b/code/modules/games/cards.dm
index 4e6f4c734e5..5a0b217efbe 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/browserOutput.dm b/code/modules/goonchat/browserOutput.dm
index efc536e3011..3d8cff24fc8 100644
--- a/code/modules/goonchat/browserOutput.dm
+++ b/code/modules/goonchat/browserOutput.dm
@@ -142,7 +142,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
var/list/found = new()
for(var/i in connectionHistory.len to 1 step -1)
var/list/row = src.connectionHistory[i]
- if (!row || row.len < 3 || (!row["ckey"] && !row["compid"] && !row["ip"])) //Passed malformed history object
+ if (!row || row.len < 3 || (!row["ckey"] || !row["compid"] || !row["ip"])) //Passed malformed history object
return
if (world.IsBanned(row["ckey"], row["compid"], row["ip"]))
found = row
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index 2cf4ac77a90..8d4f2e01478 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 ffae5026d43..3991878127e 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 dc93ef15cad..70dc073c3bd 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 960ba6497d2..ea71e664de1 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)
@@ -154,7 +154,7 @@
if(!LAZYLEN(emag_programs))
to_chat(user, "[src] does not seem to have a card swipe port. It must be an inferior model.")
return
- playsound(src, 'sound/effects/sparks4.ogg', 75, 1)
+ playsound(src, "sparks", 75, 1)
emagged = TRUE
to_chat(user, "You vastly increase projector power and override the safety and security protocols.")
to_chat(user, "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator.")
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index 1a98a4715df..0a39c701463 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/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 232cea53ac0..499fc4bd64d 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/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index a8e3aa37de4..468a79d484b 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 23655607a87..387519a8e87 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 34cd229fab6..8cb4b7af1dc 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 6c0ee834e48..cf7d78f3727 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 b482c791172..6599162493b 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 174e6494694..d35e8bae3cb 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)
@@ -33,6 +33,7 @@ Clown
/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/instrument/bikehorn = 1,
)
implants = list(/obj/item/weapon/implant/sad_trombone)
@@ -74,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)
@@ -124,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"
@@ -169,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 e058dc01d70..eb84051ff9b 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 66897b1049f..40800998c0a 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 2632c28cdd7..0a1622626cc 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 c691b703ce8..9d9d0892d6e 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 c50fda38c7e..630856a3ea0 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 840fab8d986..d1ceb996853 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 4e822165136..e2ea2a86c5d 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/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm
index b0b0b32285d..b5d5a2bab1e 100644
--- a/code/modules/lighting/lighting_object.dm
+++ b/code/modules/lighting/lighting_object.dm
@@ -139,10 +139,6 @@ GLOBAL_LIST_EMPTY(all_lighting_objects) // Global list of lighting objects.
/atom/movable/lighting_object/blob_act()
return
-// Nope nope nope!
-/atom/movable/lighting_object/onShuttleMove(turf/T1, rotation)
- return FALSE
-
// Override here to prevent things accidentally moving around overlays.
/atom/movable/lighting_object/forceMove(atom/destination, var/no_tp=FALSE, var/harderforce = FALSE)
if(harderforce)
diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm
index 49e89685eef..92a7a25eaca 100644
--- a/code/modules/lighting/lighting_turf.dm
+++ b/code/modules/lighting/lighting_turf.dm
@@ -32,7 +32,7 @@
// Builds a lighting object for us, but only if our area is dynamic.
/turf/proc/lighting_build_overlay()
if (lighting_object)
- return
+ qdel(lighting_object,force=TRUE) //Shitty fix for lighting objects persisting after death
var/area/A = loc
if (!IS_DYNAMIC_LIGHTING(A) && !light_sources)
diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm
index 373a937be25..c8ef0ebe2a4 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 1facd571ce1..bf81f694b69 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
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index 1a9f8c74281..4f07bbbc480 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
@@ -128,12 +128,6 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
updateUsrDialog()
-
-/obj/machinery/computer/auxillary_base/onShuttleMove(turf/T1, rotation)
- ..()
- if(z == ZLEVEL_MINING) //Avoids double logging and landing on other Z-levels due to badminnery
- SSblackbox.add_details("colonies_dropped", "[x]|[y]|[z]") //Number of times a base has been dropped!
-
/obj/machinery/computer/auxillary_base/proc/set_mining_mode()
if(z == ZLEVEL_MINING) //The console switches to controlling the mining shuttle once landed.
req_one_access = list()
@@ -245,11 +239,6 @@ obj/docking_port/stationary/public_mining_dock
width = 7
height = 5
-obj/docking_port/stationary/public_mining_dock/onShuttleMove()
- id = "mining_public" //It will not move with the base, but will become enabled as a docking point.
- return 0
-
-
/obj/structure/mining_shuttle_beacon
name = "mining shuttle beacon"
desc = "A bluespace beacon calibrated to mark a landing spot for the mining shuttle when deployed near the auxillary mining base."
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index e4acea1cf0e..5f8830139c9 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 dc1de44176d..f052e809e63 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 4d6ffe69d89..b1a97aab47c 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/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 48f1c88fc9a..8ca69b5e402 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())
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 0087687688d..0232da4e831 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 8607dfc8656..14021cc60ca 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 a97f9ad4a71..d6ef4a38857 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 5cdf91ee623..b8c0737f00e 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -410,7 +410,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/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c86c12476d4..7f24b13f511 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -317,7 +317,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set name = "Re-enter Corpse"
if(!client)
return
- if(!(mind && mind.current))
+ if(!mind || QDELETED(mind.current))
to_chat(src, "You have no body.")
return
if(!can_reenter_corpse)
@@ -326,7 +326,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(mind.current.key && copytext(mind.current.key,1,2)!="@") //makes sure we don't accidentally kick any clients
to_chat(usr, "Another consciousness is in your body...It is resisting you.")
return
- client.view = world.view
+ client.change_view(world.view)
SStgui.on_transfer(src, mind.current) // Transfer NanoUIs.
mind.current.key = key
return 1
@@ -468,16 +468,16 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
views |= i
var/new_view = input("Choose your new view", "Modify view range", 7) as null|anything in views
if(new_view)
- client.view = Clamp(new_view, 1, max_view)
+ client.change_view(Clamp(new_view, 1, max_view))
else
- client.view = world.view
+ client.change_view(world.view)
/mob/dead/observer/verb/add_view_range(input as num)
set name = "Add View Range"
set hidden = TRUE
var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT
if(input)
- client.view = Clamp(client.view + input, 1, max_view)
+ client.change_view(Clamp(client.view + input, 1, max_view))
/mob/dead/observer/verb/boo()
set category = "Ghost"
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index 69eacbb69e1..8e547eeb120 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -137,7 +137,8 @@
if(blood_id == C.get_blood_id())//both mobs have the same blood substance
if(blood_id == "blood") //normal blood
if(blood_data["viruses"])
- for(var/datum/disease/D in blood_data["viruses"])
+ for(var/thing in blood_data["viruses"])
+ var/datum/disease/D = thing
if((D.spread_flags & SPECIAL) || (D.spread_flags & NON_CONTAGIOUS))
continue
C.ForceContractDisease(D)
@@ -162,7 +163,8 @@
blood_data["donor"] = src
blood_data["viruses"] = list()
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
blood_data["viruses"] += D.Copy()
blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0)
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 9cad58c2014..8e919491bb4 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 6f39718acf1..5161f948083 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 e98859b90ff..9366f4d4235 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 ac92c3479cd..44f8810b560 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/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 46facdc4547..a31dba9fa94 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -1,8 +1,8 @@
/mob/living/carbon/alien/spawn_gibs(with_bodyparts)
if(with_bodyparts)
- new /obj/effect/gibspawner/xeno(loc,viruses)
+ new /obj/effect/gibspawner/xeno(get_turf(src))
else
- new /obj/effect/gibspawner/xenobodypartless(loc,viruses)
+ new /obj/effect/gibspawner/xenobodypartless(get_turf(src))
/mob/living/carbon/alien/gib_animation()
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a")
diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm
index 585e5779c62..f49e545dfad 100644
--- a/code/modules/mob/living/carbon/alien/larva/death.dm
+++ b/code/modules/mob/living/carbon/alien/larva/death.dm
@@ -8,9 +8,9 @@
/mob/living/carbon/alien/larva/spawn_gibs(with_bodyparts)
if(with_bodyparts)
- new /obj/effect/gibspawner/larva(loc,viruses)
+ new /obj/effect/gibspawner/larva(get_turf(src))
else
- new /obj/effect/gibspawner/larvabodypartless(loc,viruses)
+ new /obj/effect/gibspawner/larvabodypartless(get_turf(src))
/mob/living/carbon/alien/larva/gib_animation()
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l")
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index f0d8f1d4ca8..1c07c408d38 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -45,7 +45,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
@@ -710,8 +710,9 @@
var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain)
if(B)
B.damaged_brain = 0
- for(var/datum/disease/D in viruses)
- if (D.severity != NONTHREAT)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
+ if(D.severity != NONTHREAT)
D.cure(0)
if(admin_revive)
regenerate_limbs()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index de507286f3d..cd9f2f5af4e 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -107,11 +107,13 @@
/mob/living/carbon/attack_hand(mob/living/carbon/human/user)
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
if(D.IsSpreadByTouch())
user.ContractDisease(D)
- for(var/datum/disease/D in user.viruses)
+ for(var/thing in user.viruses)
+ var/datum/disease/D = thing
if(D.IsSpreadByTouch())
ContractDisease(D)
@@ -124,11 +126,13 @@
/mob/living/carbon/attack_paw(mob/living/carbon/monkey/M)
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
if(D.IsSpreadByTouch())
M.ContractDisease(D)
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
if(D.IsSpreadByTouch())
ContractDisease(D)
@@ -137,7 +141,8 @@
return 0
if(..()) //successful monkey bite.
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
ForceContractDisease(D)
return 1
diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm
index 5051b333b00..6192dbbfd72 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)
return 1
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 4547390f56b..a1b67fbee18 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -6,9 +6,9 @@
/mob/living/carbon/human/spawn_gibs(with_bodyparts)
if(with_bodyparts)
- new /obj/effect/gibspawner/human(loc, viruses, dna)
+ new /obj/effect/gibspawner/human(get_turf(src), dna)
else
- new /obj/effect/gibspawner/humanbodypartless(loc, viruses, dna)
+ new /obj/effect/gibspawner/humanbodypartless(get_turf(src), dna)
/mob/living/carbon/human/spawn_dust(just_ash = FALSE)
if(just_ash)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 3c5422be79c..b6b4a2e78c2 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]"
@@ -268,7 +268,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"
@@ -295,7 +295,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)
@@ -313,7 +313,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 0d070c3dd93..214bbd46f8b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -127,7 +127,8 @@
//Virsuses
if(viruses.len)
stat("Viruses:", null)
- for(var/datum/disease/D in viruses)
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
stat("*", "[D.name], Type: [D.spread_text], Stage: [D.stage]/[D.max_stages], Possible Cure: [D.cure_text]")
@@ -397,7 +398,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_%$*"
@@ -590,7 +591,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 73a845868d6..618a2fe9a2a 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]
diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm
index 59676238e76..e439f8ef9e2 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/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 15decb81841..418d213139c 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -30,8 +30,7 @@
return
if(..()) //not dead
- for(var/datum/mutation/human/HM in dna.mutations)
- HM.on_life(src)
+ handle_active_genes()
if(stat != DEAD)
//heart attack stuff
@@ -99,15 +98,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)
@@ -332,6 +333,9 @@
heart.beating = !status
+/mob/living/carbon/human/proc/handle_active_genes()
+ for(var/datum/mutation/human/HM in dna.mutations)
+ HM.on_life(src)
/mob/living/carbon/human/proc/handle_heart()
if(!can_heartattack())
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 70f7a809af0..a2fa6e22a87 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -241,6 +241,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
@@ -1327,6 +1331,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 6331d15789f..804f9bf3a20 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/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 306b929130a..a85fca7c4d1 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -44,7 +44,7 @@
var/mob/dead/observe = M
if(observe.client)
observe.client.screen -= I
- I.loc = src
+ I.forceMove(src)
I.layer = ABOVE_HUD_LAYER
I.plane = ABOVE_HUD_PLANE
I.appearance_flags |= NO_CLIENT_COLOR
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 8bacfe53df7..cd871133df1 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -2,30 +2,28 @@
set invisibility = 0
set background = BACKGROUND_ENABLED
- if (notransform)
+ if(notransform)
return
if(damageoverlaytemp)
damageoverlaytemp = 0
update_damage_hud()
+ if(stat != DEAD) //Reagent processing needs to come before breathing, to prevent edge cases.
+ handle_organs()
+
if(..()) //not dead
handle_blood()
if(stat != DEAD)
- for(var/V in internal_organs)
- var/obj/item/organ/O = V
- O.on_life()
+ handle_liver()
+
if(stat == DEAD)
stop_sound_channel(CHANNEL_HEARTBEAT)
//Updates the number of stored chemicals for powers
handle_changeling()
- if(stat != DEAD)
- handle_liver()
-
-
if(stat != DEAD)
return 1
@@ -112,7 +110,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
@@ -143,14 +141,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
@@ -173,11 +171,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"])
@@ -224,6 +221,20 @@
/mob/living/carbon/proc/handle_blood()
return
+/mob/living/carbon/proc/handle_organs()
+ for(var/V in internal_organs)
+ var/obj/item/organ/O = V
+ O.on_life()
+
+/mob/living/carbon/handle_diseases()
+ for(var/thing in viruses)
+ var/datum/disease/D = thing
+ if(prob(D.infectivity))
+ D.spread()
+
+ if(stat != DEAD)
+ D.stage_act()
+
/mob/living/carbon/proc/handle_changeling()
if(mind && hud_used && hud_used.lingchemdisplay)
if(mind.changeling)
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index c38c624ebb0..4b8454fcdee 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)
@@ -272,7 +272,11 @@
if(Adjacent(target) && isturf(target.loc)) // if right next to perp
// check if target has a weapon
- var/obj/item/weapon/W = locate(/obj/item/weapon) in target.held_items
+ var/obj/item/weapon/W
+ for(var/obj/item/weapon/I in target.held_items)
+ if(!(I.flags & ABSTRACT))
+ W = I
+ break
// if the target has a weapon, chance to disarm them
if(W && prob(MONKEY_ATTACK_DISARM_PROB))
@@ -441,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/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 32cb1b76dfe..6d69e521962 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -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/death.dm b/code/modules/mob/living/death.dm
index eb96d09bde0..0fd86ed02eb 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -18,7 +18,7 @@
return
/mob/living/proc/spawn_gibs()
- new /obj/effect/gibspawner/generic(loc, viruses)
+ new /obj/effect/gibspawner/generic(get_turf(src))
/mob/living/proc/spill_organs()
return
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 30210627d64..170375ecdd1 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -18,12 +18,16 @@
return
var/datum/gas_mixture/environment = loc.return_air()
- if(stat != DEAD)
- //Breathing, if applicable
- handle_breathing(times_fired)
if(stat != DEAD)
//Mutations and radiation
handle_mutations_and_radiation()
+
+ if(stat != DEAD)
+ //Breathing, if applicable
+ handle_breathing(times_fired)
+
+ handle_diseases() // DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not.
+
if(stat != DEAD)
//Random events (vomiting etc)
handle_random_events()
@@ -57,6 +61,9 @@
radiation = 0 //so radiation don't accumulate in simple animals
return
+/mob/living/proc/handle_diseases()
+ return
+
/mob/living/proc/handle_diginvis()
if(!digitaldisguise)
src.digitaldisguise = image(loc = src)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 845769665f5..81d0314e67b 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -99,7 +99,7 @@
if(PushAM(AM))
return
-/mob/living/Bumped(atom/movable/AM)
+/mob/living/CollidedWith(atom/movable/AM)
..()
last_bumped = world.time
@@ -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 ebb9ee074ff..ae28c30a7a6 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
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 97bd12b996d..f31b339bf5b 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/death.dm b/code/modules/mob/living/silicon/death.dm
index 69466e81f2d..2e1adb1959f 100644
--- a/code/modules/mob/living/silicon/death.dm
+++ b/code/modules/mob/living/silicon/death.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/spawn_gibs()
- new /obj/effect/gibspawner/robot(loc,viruses)
+ new /obj/effect/gibspawner/robot(get_turf(src))
/mob/living/silicon/spawn_dust()
new /obj/effect/decal/remains/robot(loc)
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index a4f8638c4a1..0806f457d93 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -513,7 +513,8 @@
Structural Integrity: [M.getBruteLoss() > 50 ? "" : ""][M.getBruteLoss()]
Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)
"}
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
dat += {"Infection Detected.
Name: [D.name]
Type: [D.spread_text]
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 86072d17f73..3ce49353258 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/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 185dc546b7e..9abbf99fdf9 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())
@@ -633,7 +633,7 @@
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))
+ if(istype(I, /obj/item/weapon/storage/bag/ore))
loc.attackby(I, src)
#undef BORG_CAMERA_BUFFER
@@ -800,7 +800,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 394a2ee4a53..5e9400f1396 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -246,7 +246,7 @@
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/weapon/soap/nanotrasen,
/obj/item/borg/cyborghug)
- emag_modules = list(/obj/item/weapon/melee/energy/sword/cyborg)
+ emag_modules = list(/obj/item/weapon/melee/transforming/energy/sword/cyborg)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/ratvarian_spear/cyborg,
@@ -510,7 +510,7 @@
name = "Syndicate Assault"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
- /obj/item/weapon/melee/energy/sword/cyborg,
+ /obj/item/weapon/melee/transforming/energy/sword/cyborg,
/obj/item/weapon/gun/energy/printer,
/obj/item/weapon/gun/ballistic/revolver/grenadelauncher/cyborg,
/obj/item/weapon/card/emag,
@@ -537,7 +537,7 @@
/obj/item/weapon/hemostat,
/obj/item/weapon/cautery,
/obj/item/weapon/scalpel,
- /obj/item/weapon/melee/energy/sword/cyborg/saw,
+ /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw,
/obj/item/roller/robo,
/obj/item/weapon/card/emag,
/obj/item/weapon/crowbar/cyborg,
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 9355b7b9ef5..4cc0ab3a62f 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)
@@ -169,7 +169,7 @@
/mob/living/simple_animal/bot/emag_act(mob/user)
if(locked) //First emag application unlocks the bot's interface. Apply a screwdriver to use the emag again.
locked = FALSE
- emagged = TRUE
+ emagged = 1
to_chat(user, "You bypass [src]'s controls.")
return
if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging.
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index e733ecdcb85..b1894ae0f2f 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 b3b47259146..78e0432545e 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)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 26c394e926f..451a22b063d 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 e7830f2c232..cbec12b1f51 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 a0399d2b2cb..15ee1655e2f 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -245,6 +245,7 @@
to_chat(user, "You short out [src]'s reagent synthesis circuits.")
audible_message("[src] buzzes oddly!")
flick("medibot_spark", src)
+ playsound(src, "sparks", 75, 1)
if(user)
oldpatient = user
@@ -372,7 +373,8 @@
return 1
if(treat_virus && !C.reagents.has_reagent(treatment_virus_avoid) && !C.reagents.has_reagent(treatment_virus))
- for(var/datum/disease/D in C.viruses)
+ for(var/thing in C.viruses)
+ var/datum/disease/D = thing
//the medibot can't detect viruses that are undetectable to Health Analyzers or Pandemic machines.
if(!(D.visibility_flags & HIDDEN_SCANNER || D.visibility_flags & HIDDEN_PANDEMIC) \
&& D.severity != NONTHREAT \
@@ -423,7 +425,8 @@
else
if(treat_virus)
var/virus = 0
- for(var/datum/disease/D in C.viruses)
+ for(var/thing in C.viruses)
+ var/datum/disease/D = thing
//detectable virus
if((!(D.visibility_flags & HIDDEN_SCANNER)) || (!(D.visibility_flags & HIDDEN_PANDEMIC)))
if(D.severity != NONTHREAT) //virus is harmful
@@ -538,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 d6c8eb5cd67..e8936a28638 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
@@ -119,7 +119,7 @@
locked = !locked
to_chat(user, "You [locked ? "lock" : "unlock"] the [src]'s controls!")
flick("mulebot-emagged", src)
- playsound(loc, 'sound/effects/sparks1.ogg', 100, 0)
+ playsound(src, "sparks", 100, 0)
/mob/living/simple_animal/bot/mulebot/update_icon()
if(open)
@@ -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 01f34953b92..42c42bcf162 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 06d7cdb0ef5..45fb411876a 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 2ab1adee236..b49534808a7 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 a158406711e..b5a3e4b2cfc 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -177,13 +177,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)
@@ -213,7 +213,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/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm
index 18a94c87727..78828156999 100644
--- a/code/modules/mob/living/simple_animal/friendly/lizard.dm
+++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm
@@ -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/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm
index 78554e29bad..8f456abc536 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm
@@ -27,7 +27,7 @@
..()
collision_ignite(AM)
-/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj)
+/mob/living/simple_animal/hostile/guardian/fire/CollidedWith(atom/movable/AM)
..()
collision_ignite(AM)
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 6e60f6b958b..d70055779cb 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 843f3a78675..bb7adee174d 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -154,7 +154,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/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 32a579520f2..562af8c1a36 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -437,7 +437,7 @@ Difficulty: Very Hard
playsound(user, activation_sound, 100, 1)
return TRUE
-/obj/machinery/anomalous_crystal/Bumped(atom/AM as mob|obj)
+/obj/machinery/anomalous_crystal/CollidedWith(atom/movable/AM)
..()
if(ismob(AM))
ActivationReaction(AM, ACTIVATE_MOB_BUMP)
@@ -699,7 +699,7 @@ Difficulty: Very Hard
for(var/i in T)
if(isitem(i) && !is_type_in_typecache(i, banned_items_typecache))
var/obj/item/W = i
- if(!W.admin_spawned)
+ if(!W.admin_spawned && !HAS_SECONDARY_FLAG(W, HOLOGRAM) && !(W.flags & ABSTRACT))
L += W
if(L.len)
var/obj/item/CHOSEN = pick(L)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index cd3563661ec..3e2be10d798 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -95,14 +95,6 @@
else
devour(L)
-/mob/living/simple_animal/hostile/megafauna/onShuttleMove()
- var/turf/oldloc = loc
- . = ..()
- if(!.)
- return
- var/turf/newloc = loc
- message_admins("Megafauna [src] [ADMIN_FLW(src)] moved via shuttle from [ADMIN_COORDJMP(oldloc)] to [ADMIN_COORDJMP(newloc)]")
-
/mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L)
if(!L)
return
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 c3c17a22a5c..7f38bebcfb9 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/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index 444820615d1..c562187b0a9 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -25,7 +25,7 @@
unsuitable_atmos_damage = 15
speak_emote = list("yarrs")
loot = list(/obj/effect/mob_spawn/human/corpse/pirate,
- /obj/item/weapon/melee/energy/sword/pirate)
+ /obj/item/weapon/melee/transforming/energy/sword/pirate)
del_on_death = 1
faction = list("pirate")
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 731880c7752..3dcb86f3a58 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -322,7 +322,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
@@ -335,7 +335,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)
@@ -763,7 +763,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 18a5337c99e..236b36dafd9 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/login.dm b/code/modules/mob/login.dm
index 8e732940a19..bed14bdff42 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -39,7 +39,7 @@
if(client)
client.click_intercept = null
- client.view = world.view // Resets the client.view in case it was changed.
+ client.change_view(world.view) // Resets the client.view in case it was changed.
if(!GLOB.individual_log_list[ckey])
GLOB.individual_log_list[ckey] = logging
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 8177621c4f1..a8816ea784d 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -11,8 +11,7 @@
qdel(hud_used)
if(mind && mind.current == src)
spellremove(src)
- for(var/infection in viruses)
- qdel(infection)
+ QDEL_LIST(viruses)
for(var/cc in client_colours)
qdel(cc)
client_colours = null
@@ -386,7 +385,7 @@
set category = "Object"
set src = usr
- if(istype(loc,/obj/mecha))
+ if(istype(loc, /obj/mecha))
return
if(incapacitated())
@@ -861,7 +860,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
@@ -870,7 +869,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/mob_defines.dm b/code/modules/mob/mob_defines.dm
index e6e247fc2c3..c9272c8d6bb 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -113,7 +113,7 @@
//List of active diseases
- var/list/viruses = list() // replaces var/datum/disease/virus
+ var/list/viruses = list() // list of all diseases in a mob
var/list/resistances = list()
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
@@ -141,3 +141,5 @@
var/list/progressbars = null //for stacking do_after bars
var/list/can_ride_typecache = list()
+
+ var/list/mousemove_intercept_objects
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index cf598b7a2e4..e421b84853a 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -65,9 +65,9 @@
if (tr_flags & TR_KEEPVIRUS)
O.viruses = viruses
viruses = list()
- for(var/datum/disease/D in O.viruses)
+ for(var/thing in O.viruses)
+ var/datum/disease/D = thing
D.affected_mob = O
- D.holder = O
//keep damage?
if (tr_flags & TR_KEEPDAMAGE)
@@ -219,9 +219,9 @@
if (tr_flags & TR_KEEPVIRUS)
O.viruses = viruses
viruses = list()
- for(var/datum/disease/D in O.viruses)
+ for(var/thing in O.viruses)
+ var/datum/disease/D = thing
D.affected_mob = O
- D.holder = O
O.med_hud_set_status()
//keep damage?
diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm
index 04063aeeca5..bfbece0cdab 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 56ebabf79de..0f57ca9f612 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 fe556faeab7..dfca4870bdd 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 57a53169f28..f200fbf7473 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 f95c2907343..b334f523f75 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 b5ea32f1b2b..cfe019e1936 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 e30d37b510d..1fa48f5aca8 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/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm
index 2577f84a982..2ad2d7b4cb4 100644
--- a/code/modules/ninja/suit/ninjaDrainAct.dm
+++ b/code/modules/ninja/suit/ninjaDrainAct.dm
@@ -52,6 +52,7 @@ They *could* go in their appropriate files, but this is supposed to be modular
if(!emagged)
flick("apc-spark", G)
+ playsound(loc, "sparks", 50, 1)
emagged = TRUE
locked = FALSE
update_icon()
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 8c298a3c9ac..b673db54560 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 7eaa0a7e268..548c8eae9cc 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/photocopier.dm b/code/modules/paperwork/photocopier.dm
index bd2437aa150..1aa8720c45c 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 468cf527a79..da1e1ed22ba 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 a6ba729eed8..5db3d9c1c54 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)
..()
@@ -612,6 +612,7 @@
to_chat(user, "Nothing happens!")
else
flick("apc-spark", src)
+ playsound(src, "sparks", 75, 1)
emagged = TRUE
locked = FALSE
to_chat(user, "You emag the APC interface.")
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index f63cee2bced..5c2d5a58993 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)
@@ -390,7 +390,7 @@ By design, d1 is the smallest direction and d2 is the highest
qdel(PN)
// cut the cable's powernet at this cable and updates the powergrid
-/obj/structure/cable/proc/cut_cable_from_powernet()
+/obj/structure/cable/proc/cut_cable_from_powernet(remove=TRUE)
var/turf/T1 = loc
var/list/P_list
if(!T1)
@@ -412,7 +412,8 @@ By design, d1 is the smallest direction and d2 is the highest
var/obj/O = P_list[1]
// remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist
- loc = null
+ if(remove)
+ loc = null
powernet.remove_cable(src) //remove the cut cable from its powernet
spawn(0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
@@ -426,43 +427,6 @@ By design, d1 is the smallest direction and d2 is the highest
if(!P.connect_to_network()) //can't find a node cable on a the turf to connect to
P.disconnect_from_network() //remove from current network
-// Ugly procs that ensure proper separation and reconnection of wires on shuttle movement/rotation
-/obj/structure/cable/beforeShuttleMove(turf/T1, rotation)
- var/on_edge = FALSE
- var/A = get_area(src)
-
- for(var/D in GLOB.alldirs)
- if(A != get_area(get_step(src, D)))
- on_edge = TRUE
- break
-
- if(on_edge && powernet)
- var/tmp_loc = loc
- cut_cable_from_powernet()
- loc = tmp_loc
-
-/obj/structure/cable/afterShuttleMove()
- var/on_edge = FALSE
- var/A = get_area(src)
-
- for(var/D in GLOB.alldirs)
- if(A != get_area(get_step(src, D)))
- on_edge = TRUE
- break
-
- if(on_edge)
- var/datum/powernet/PN = new()
- PN.add_cable(src)
-
- mergeConnectedNetworks(d1) //merge the powernet with adjacents powernets
- mergeConnectedNetworks(d2)
- mergeConnectedNetworksOnTurf() //merge the powernet with on turf powernets
-
- if(d1 & (d1 - 1))// if the cable is layed diagonally, check the others 2 possible directions
- mergeDiagonalsNetworks(d1)
- if(d2 & (d2 - 1))
- mergeDiagonalsNetworks(d2)
-
/obj/structure/cable/shuttleRotate(rotation)
//..() is not called because wires are not supposed to have a non-default direction
//Rotate connections
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 40d5222a28e..c5fcc2b018d 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -216,9 +216,10 @@
return ..()
/obj/machinery/power/port_gen/pacman/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- emp_act(EMP_HEAVY)
+ if(emagged)
+ return
+ emagged = TRUE
+ emp_act(EMP_HEAVY)
/obj/machinery/power/port_gen/pacman/attack_hand(mob/user)
..()
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index f2cfd807ce9..b0d07e88d55 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 f74ec9de9b7..5c01b604162 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 464f4da5be2..194c00fc0fe 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
@@ -355,11 +355,12 @@
return ..()
/obj/machinery/power/emitter/emag_act(mob/user)
- if(!emagged)
- locked = FALSE
- emagged = TRUE
- if(user)
- user.visible_message("[user.name] emags the [src.name].","You short out the lock.")
+ if(emagged)
+ return
+ locked = FALSE
+ emagged = TRUE
+ if(user)
+ user.visible_message("[user.name] emags the [src].","You short out the lock.")
/obj/machinery/power/emitter/prototype
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 370e2e6a06b..697a80d7cd1 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/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index eb88503cf21..07190b102c1 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -107,9 +107,8 @@
return
-/obj/singularity/Bumped(atom/A)
- consume(A)
- return
+/obj/singularity/CollidedWith(atom/movable/AM)
+ consume(AM)
/obj/singularity/process()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 315450d0005..b37c8aadca2 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -546,7 +546,7 @@
radiation_pulse(get_turf(src), 1, 1, 150, 1)
-/obj/machinery/power/supermatter_shard/Bumped(atom/AM)
+/obj/machinery/power/supermatter_shard/CollidedWith(atom/movable/AM)
if(isliving(AM))
AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [AM.p_their()] body starts to glow and catch flame before flashing into ash.",\
"You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 4f2cfbc2344..042d827bffc 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -141,8 +141,8 @@ GLOBAL_LIST_INIT(blacklisted_tesla_types, typecacheof(list(/obj/machinery/atmosp
/obj/singularity/energy_ball/Collide(atom/A)
dust_mobs(A)
-/obj/singularity/energy_ball/Bumped(atom/A)
- dust_mobs(A)
+/obj/singularity/energy_ball/CollidedWith(atom/movable/AM)
+ dust_mobs(AM)
/obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target)
if (istype(target))
diff --git a/code/modules/procedural_mapping/mapGenerators/cellular.dm b/code/modules/procedural_mapping/mapGenerators/cellular.dm
index fb7fd32148f..3daa7632ff0 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/syndicate.dm b/code/modules/procedural_mapping/mapGenerators/syndicate.dm
index 98e87a8b91d..b8a6f33b33a 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/gun.dm b/code/modules/projectiles/gun.dm
index 5a21c92f799..39f08d2519a 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -482,11 +482,11 @@
if(WEST)
_x = -zoom_amt
- user.client.view = zoom_out_amt
+ user.client.change_view(zoom_out_amt)
user.client.pixel_x = world.icon_size*_x
user.client.pixel_y = world.icon_size*_y
else
- user.client.view = world.view
+ user.client.change_view(world.view)
user.client.pixel_x = 0
user.client.pixel_y = 0
return zoomed
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index a9f0e4914e8..6c5e4d935cd 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -278,8 +278,8 @@
..()
if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
chamber_round()
- if(istype(A, /obj/item/weapon/melee/energy))
- var/obj/item/weapon/melee/energy/W = A
+ if(istype(A, /obj/item/weapon/melee/transforming/energy))
+ var/obj/item/weapon/melee/transforming/energy/W = A
if(W.active)
sawoff(user)
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter))
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 76c60dd1306..59dc214dc33 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -89,8 +89,8 @@
..()
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter))
sawoff(user)
- if(istype(A, /obj/item/weapon/melee/energy))
- var/obj/item/weapon/melee/energy/W = A
+ if(istype(A, /obj/item/weapon/melee/transforming/energy))
+ var/obj/item/weapon/melee/transforming/energy/W = A
if(W.active)
sawoff(user)
diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm
index 0133edaa19f..e1692f827b1 100644
--- a/code/modules/projectiles/guns/beam_rifle.dm
+++ b/code/modules/projectiles/guns/beam_rifle.dm
@@ -1,4 +1,16 @@
+#define ZOOM_LOCK_AUTOZOOM_FREEMOVE 0
+#define ZOOM_LOCK_AUTOZOOM_ANGLELOCK 1
+#define ZOOM_LOCK_CENTER_VIEW 2
+#define ZOOM_LOCK_OFF 3
+
+#define ZOOM_SPEED_STEP 0
+#define ZOOM_SPEED_INSTANT 1
+
+#define AUTOZOOM_PIXEL_STEP_FACTOR 48
+
+#define AIMING_BEAM_ANGLE_CHANGE_THRESHOLD 0.1
+
/obj/item/weapon/gun/energy/beam_rifle
name = "particle acceleration rifle"
desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targetted by one. \
@@ -12,22 +24,13 @@
force = 15
materials = list()
origin_tech = ""
- recoil = 5
+ recoil = 4
ammo_x_offset = 3
ammo_y_offset = 3
modifystate = FALSE
- zoomable = TRUE
- zoom_amt = 17
- zoom_out_amt = 20
weapon_weight = WEAPON_HEAVY
w_class = WEIGHT_CLASS_BULKY
ammo_type = list(/obj/item/ammo_casing/energy/beam_rifle/hitscan)
- var/hipfire_inaccuracy = 2
- var/hipfire_recoil = 10
- var/scoped_inaccuracy = 0
- var/scoped_recoil = 3
- var/scoped = FALSE
- var/noscope = FALSE //Can you fire this without a scope?
cell_type = /obj/item/weapon/stock_parts/cell/beam_rifle
canMouseDown = TRUE
pin = null
@@ -37,13 +40,14 @@
var/aiming_time_left = 7
var/aiming_time_increase_user_movement = 3
var/scoped_slow = 1
- var/aiming_time_increase_angle_multiplier = 0.6
+ var/aiming_time_increase_angle_multiplier = 0.3
var/lastangle = 0
+ var/aiming_lastangle = 0
var/mob/current_user = null
- var/list/obj/effect/temp_visual/current_tracers = list()
+ var/obj/effect/projectile_beam/current_tracer
- var/structure_piercing = 2 //This doesn't always work!
+ var/structure_piercing = 2 //Amount * 2. For some reason structures aren't respecting this unless you have it doubled. Probably with the objects in question's Bump() code instead of this but I'll deal with this later.
var/structure_bleed_coeff = 0.7
var/wall_pierce_amount = 0
var/wall_devastate = 0
@@ -60,19 +64,122 @@
var/delay = 65
var/lastfire = 0
+ //ZOOMING
+ var/zoom_current_view_increase = 0
+ var/zoom_target_view_increase = 10
+ var/zoom_speed = ZOOM_SPEED_STEP
+ var/zooming = FALSE
+ var/zoom_lock = ZOOM_LOCK_AUTOZOOM_FREEMOVE
+ var/zooming_angle
+ var/current_zoom_x = 0
+ var/current_zoom_y = 0
+ var/zoom_animating = 0
+
var/static/image/charged_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_charged")
var/static/image/drained_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_empty")
+ var/datum/action/item_action/zoom_speed_action/zoom_speed_action
+ var/datum/action/item_action/zoom_lock_action/zoom_lock_action
+
/obj/item/weapon/gun/energy/beam_rifle/debug
delay = 0
cell_type = /obj/item/weapon/stock_parts/cell/infinite
aiming_time = 0
recoil = 0
- scoped_recoil = 0
- hipfire_recoil = 0
- hipfire_inaccuracy = 0
- scoped_inaccuracy = 0
- noscope = 1
+ pin = /obj/item/device/firing_pin
+
+/obj/item/weapon/gun/energy/beam_rifle/equipped(mob/user)
+ set_user(user)
+ . = ..()
+
+/obj/item/weapon/gun/energy/beam_rifle/pickup(mob/user)
+ set_user(user)
+ . = ..()
+
+/obj/item/weapon/gun/energy/beam_rifle/dropped()
+ set_user()
+ . = ..()
+
+/obj/item/weapon/gun/energy/beam_rifle/ui_action_click(owner, action)
+ if(istype(action, /datum/action/item_action/zoom_speed_action))
+ zoom_speed++
+ if(zoom_speed > 1)
+ zoom_speed = ZOOM_SPEED_STEP
+ switch(zoom_speed)
+ if(ZOOM_SPEED_STEP)
+ to_chat(owner, "You switch [src]'s digital zoom to stepper mode.")
+ if(ZOOM_SPEED_INSTANT)
+ to_chat(owner, "You switch [src]'s digital zoom to instant mode.")
+ if(istype(action, /datum/action/item_action/zoom_lock_action))
+ zoom_lock++
+ if(zoom_lock > 3)
+ zoom_lock = 0
+ switch(zoom_lock)
+ if(ZOOM_LOCK_AUTOZOOM_FREEMOVE)
+ to_chat(owner, "You switch [src]'s zooming processor to free directional.")
+ if(ZOOM_LOCK_AUTOZOOM_ANGLELOCK)
+ to_chat(owner, "You switch [src]'s zooming processor to locked directional.")
+ if(ZOOM_LOCK_CENTER_VIEW)
+ to_chat(owner, "You switch [src]'s zooming processor to center mode.")
+ if(ZOOM_LOCK_OFF)
+ to_chat(owner, "You disable [src]'s zooming system.")
+ reset_zooming()
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/smooth_zooming(delay_override = null)
+ if(!check_user() || !zooming || zoom_lock == ZOOM_LOCK_OFF || zoom_lock == ZOOM_LOCK_CENTER_VIEW)
+ return
+ if(zoom_animating && delay_override != 0)
+ return smooth_zooming(zoom_animating + delay_override) //Automatically compensate for ongoing zooming actions.
+ var/total_time = SSfastprocess.wait
+ if(delay_override)
+ total_time = delay_override
+ if(zoom_speed == ZOOM_SPEED_INSTANT)
+ total_time = 0
+ zoom_animating = total_time
+ animate(current_user.client, pixel_x = current_zoom_x, pixel_y = current_zoom_y , total_time, SINE_EASING, ANIMATION_PARALLEL)
+ zoom_animating = 0
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/set_autozoom_pixel_offsets_immediate(current_angle)
+ if(zoom_lock == ZOOM_LOCK_CENTER_VIEW || zoom_lock == ZOOM_LOCK_OFF)
+ return
+ current_zoom_x = sin(current_angle) + sin(current_angle) * AUTOZOOM_PIXEL_STEP_FACTOR * zoom_current_view_increase
+ current_zoom_y = cos(current_angle) + cos(current_angle) * AUTOZOOM_PIXEL_STEP_FACTOR * zoom_current_view_increase
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/handle_zooming()
+ if(!zooming || !check_user())
+ return
+ if(zoom_speed == ZOOM_SPEED_INSTANT)
+ current_user.client.change_view(world.view + zoom_target_view_increase)
+ zoom_current_view_increase = zoom_target_view_increase
+ set_autozoom_pixel_offsets_immediate(zooming_angle)
+ smooth_zooming()
+ return
+ if(zoom_current_view_increase > zoom_target_view_increase)
+ return
+ zoom_current_view_increase++
+ current_user.client.change_view(zoom_current_view_increase + world.view)
+ set_autozoom_pixel_offsets_immediate(zooming_angle)
+ smooth_zooming(SSfastprocess.wait * zoom_target_view_increase * zoom_speed)
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/start_zooming()
+ if(zoom_lock == ZOOM_LOCK_OFF)
+ return
+ zooming = TRUE
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/stop_zooming()
+ zooming = FALSE
+ reset_zooming()
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/reset_zooming()
+ if(!check_user(FALSE))
+ return
+ zoom_animating = 0
+ animate(current_user.client, pixel_x = 0, pixel_y = 0, 0, FALSE, LINEAR_EASING, ANIMATION_END_NOW)
+ zoom_current_view_increase = 0
+ current_user.client.change_view(world.view)
+ zooming_angle = 0
+ current_zoom_x = 0
+ current_zoom_y = 0
/obj/item/weapon/gun/energy/beam_rifle/update_icon()
cut_overlays()
@@ -85,9 +192,10 @@
/obj/item/weapon/gun/energy/beam_rifle/attack_self(mob/user)
projectile_setting_pierce = !projectile_setting_pierce
to_chat(user, "You set \the [src] to [projectile_setting_pierce? "pierce":"impact"] mode.")
+ aiming_beam()
/obj/item/weapon/gun/energy/beam_rifle/proc/update_slowdown()
- if(scoped)
+ if(aiming)
slowdown = scoped_slow
else
slowdown = initial(slowdown)
@@ -95,140 +203,160 @@
/obj/item/weapon/gun/energy/beam_rifle/Initialize()
. = ..()
START_PROCESSING(SSfastprocess, src)
+ zoom_speed_action = new(src)
+ zoom_lock_action = new(src)
/obj/item/weapon/gun/energy/beam_rifle/Destroy()
STOP_PROCESSING(SSfastprocess, src)
- ..()
-
-/obj/item/weapon/gun/energy/beam_rifle/zoom(user, forced_zoom)
- . = ..()
- scope(user, .)
-
-/obj/item/weapon/gun/energy/beam_rifle/proc/scope(mob/user, forced)
- var/scoping
- switch(forced)
- if(TRUE)
- scoping = TRUE
- if(FALSE)
- scoping = FALSE
- else
- scoping = !scoped
- if(scoping)
- spread = scoped_inaccuracy
- recoil = scoped_recoil
- scoped = TRUE
- user << "You bring your [src] up and use its scope..."
- else
- spread = hipfire_inaccuracy
- recoil = hipfire_recoil
- scoped = FALSE
- user << "You lower your [src]."
- update_slowdown()
-
-/obj/item/weapon/gun/energy/beam_rifle/can_trigger_gun(var/mob/living/user)
- if(!scoped && !noscope)
- user << "This beam rifle can only be used while scoped!"
- return FALSE
- . = ..(user)
+ set_user(null)
+ QDEL_NULL(current_tracer)
+ return ..()
/obj/item/weapon/gun/energy/beam_rifle/emp_act(severity)
chambered = null
recharge_newshot()
-/obj/item/weapon/gun/energy/beam_rifle/proc/aiming_beam()
- var/atom/A = current_user.client.mouseObject
- if(!istype(A) || !A.loc)
- return
- var/turf/T = get_turf(current_user.client.mouseObject)
- if(!istype(T))
+/obj/item/weapon/gun/energy/beam_rifle/proc/aiming_beam(force_update = FALSE)
+ var/diff = abs(aiming_lastangle - lastangle)
+ check_user()
+ if(diff < AIMING_BEAM_ANGLE_CHANGE_THRESHOLD && !force_update)
return
+ aiming_lastangle = lastangle
var/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/P = new
P.gun = src
P.wall_pierce_amount = wall_pierce_amount
P.structure_pierce_amount = structure_piercing
P.do_pierce = projectile_setting_pierce
- P.preparePixelProjectile(current_user.client.mouseObject, T, current_user, current_user.client.mouseParams, 0)
if(aiming_time)
var/percent = ((100/aiming_time)*aiming_time_left)
P.color = rgb(255 * percent,255 * ((100 - percent) / 100),0)
else
P.color = rgb(0, 255, 0)
- clear_tracers()
- P.fire()
-
-/obj/item/weapon/gun/energy/beam_rifle/proc/clear_tracers()
- for(var/I in current_tracers)
- current_tracers -= I
- var/obj/effect/temp_visual/projectile_beam/PB = I
- qdel(PB)
-
-/obj/item/weapon/gun/energy/beam_rifle/proc/terminate_aiming()
- stop_aiming()
- clear_tracers()
+ var/turf/curloc = get_turf(src)
+ var/turf/targloc = get_turf(current_user.client.mouseObject)
+ if(!istype(targloc))
+ if(!istype(curloc))
+ return
+ targloc = get_turf_in_angle(lastangle, curloc, 10)
+ P.preparePixelProjectile(targloc, targloc, current_user, current_user.client.mouseParams, 0)
+ P.fire(lastangle)
/obj/item/weapon/gun/energy/beam_rifle/process()
if(!aiming)
return
- if(!istype(current_user) || !isturf(current_user.loc) || !(src in current_user.held_items) || current_user.incapacitated()) //Doesn't work if you're not holding it!
- terminate_aiming()
- return
+ check_user()
+ handle_zooming()
if(aiming_time_left > 0)
aiming_time_left--
- aiming_beam()
- process_aim()
+ aiming_beam(TRUE)
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/check_user(automatic_cleanup = TRUE)
+ if(!istype(current_user) || !isturf(current_user.loc) || !(src in current_user.held_items) || current_user.incapacitated()) //Doesn't work if you're not holding it!
+ if(automatic_cleanup)
+ stop_aiming()
+ set_user(null)
+ return FALSE
+ return TRUE
/obj/item/weapon/gun/energy/beam_rifle/proc/process_aim()
- if(current_user.client.mouseParams)
- var/list/mouse_control = params2list(current_user.client.mouseParams)
- if(isturf(current_user.client.mouseLocation))
- current_user.face_atom(current_user.client.mouseLocation)
- if(mouse_control["screen-loc"])
- var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",")
- var/list/screen_loc_X = splittext(screen_loc_params[1],":")
- var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
- var/x = (text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32)
- var/y = (text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32)
- var/screenview = (current_user.client.view * 2 + 1) * world.icon_size //Refer to http://www.byond.com/docs/ref/info.html#/client/var/view for mad maths
- var/ox = round(screenview/2) - current_user.client.pixel_x //"origin" x
- var/oy = round(screenview/2) - current_user.client.pixel_y //"origin" y
- var/angle = NORM_ROT(Atan2(y - oy, x - ox))
- var/difference = abs(lastangle - angle)
- delay_penalty(difference * aiming_time_increase_angle_multiplier)
- lastangle = angle
+ if(istype(current_user) && current_user.client && current_user.client.mouseParams)
+ var/angle = mouse_angle_from_client(current_user.client)
+ switch(angle)
+ if(316 to 360)
+ current_user.setDir(NORTH)
+ if(0 to 45)
+ current_user.setDir(NORTH)
+ if(46 to 135)
+ current_user.setDir(EAST)
+ if(136 to 225)
+ current_user.setDir(SOUTH)
+ if(226 to 315)
+ current_user.setDir(WEST)
+ var/difference = abs(lastangle - angle)
+ if(difference > 350) //Too lazy to properly math, detects 360 --> 0 changes.
+ difference = (lastangle > 350? ((360 - lastangle) + angle) : ((360 - angle) + lastangle))
+ delay_penalty(difference * aiming_time_increase_angle_multiplier)
+ lastangle = angle
/obj/item/weapon/gun/energy/beam_rifle/on_mob_move()
- delay_penalty(aiming_time_increase_user_movement)
+ check_user()
+ if(aiming)
+ delay_penalty(aiming_time_increase_user_movement)
+ process_aim()
+ aiming_beam(TRUE)
/obj/item/weapon/gun/energy/beam_rifle/proc/start_aiming()
aiming_time_left = aiming_time
aiming = TRUE
+ process_aim()
+ aiming_beam(TRUE)
+ zooming_angle = lastangle
+ start_zooming()
/obj/item/weapon/gun/energy/beam_rifle/proc/stop_aiming()
+ set waitfor = FALSE
aiming_time_left = aiming_time
aiming = FALSE
+ QDEL_NULL(current_tracer)
+ stop_zooming()
+
+/obj/item/weapon/gun/energy/beam_rifle/proc/set_user(mob/user)
+ if(user == current_user)
+ return
+ stop_aiming()
+ if(istype(current_user))
+ LAZYREMOVE(current_user.mousemove_intercept_objects, src)
+ current_user = null
+ if(istype(user))
+ current_user = user
+ LAZYADD(current_user.mousemove_intercept_objects, src)
/obj/item/weapon/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
- current_user = mob
+ if(aiming)
+ process_aim()
+ aiming_beam()
+ if(zoom_lock == ZOOM_LOCK_AUTOZOOM_FREEMOVE)
+ zooming_angle = lastangle
+ set_autozoom_pixel_offsets_immediate(zooming_angle)
+ smooth_zooming(2)
+ return ..()
-/obj/item/weapon/gun/energy/beam_rifle/onMouseDown(object, location, params, mob)
+/obj/item/weapon/gun/energy/beam_rifle/onMouseDown(object, location, params, mob/mob)
+ if(istype(mob))
+ set_user(mob)
+ if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
+ return
+ if((object in mob.contents) || (object == mob))
+ return
start_aiming()
- current_user = mob
+ return ..()
/obj/item/weapon/gun/energy/beam_rifle/onMouseUp(object, location, params, mob/M)
+ if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
+ return
process_aim()
- if(aiming_time_left <= aiming_time_fire_threshold)
+ if(aiming_time_left <= aiming_time_fire_threshold && check_user())
sync_ammo()
afterattack(M.client.mouseObject, M, FALSE, M.client.mouseParams, passthrough = TRUE)
stop_aiming()
- clear_tracers()
+ QDEL_NULL(current_tracer)
+ return ..()
/obj/item/weapon/gun/energy/beam_rifle/afterattack(atom/target, mob/living/user, flag, params, passthrough = FALSE)
+ if(flag) //It's adjacent, is the user, or is on the user's person
+ if(target in user.contents) //can't shoot stuff inside us.
+ return
+ if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack
+ return
+ if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected)
+ return
if(!passthrough && (aiming_time > aiming_time_fire_threshold))
return
if(lastfire > world.time + delay)
return
lastfire = world.time
- . = ..()
+ stop_aiming()
+ return ..()
/obj/item/weapon/gun/energy/beam_rifle/proc/sync_ammo()
for(var/obj/item/ammo_casing/energy/beam_rifle/AC in contents)
@@ -298,6 +426,25 @@
HS_BB.do_pierce = do_pierce
HS_BB.gun = host
+/obj/item/ammo_casing/energy/beam_rifle/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread)
+ var/turf/curloc = get_turf(user)
+ if(!istype(curloc) || !BB)
+ return FALSE
+ var/obj/item/weapon/gun/energy/beam_rifle/gun = loc
+ if(!targloc && gun)
+ targloc = get_turf_in_angle(gun.lastangle, curloc, 10)
+ else if(!targloc)
+ return FALSE
+ var/firing_dir
+ if(BB.firer)
+ firing_dir = BB.firer.dir
+ if(!BB.suppressed && firing_effect_type)
+ new firing_effect_type(get_turf(src), firing_dir)
+ BB.preparePixelProjectile(target, targloc, user, params, spread)
+ BB.fire(gun? gun.lastangle : null, null)
+ BB = null
+ return TRUE
+
/obj/item/ammo_casing/energy/beam_rifle/hitscan
projectile_type = /obj/item/projectile/beam/beam_rifle/hitscan
select_name = "beam"
@@ -330,6 +477,7 @@
var/impact_structure_damage = 0
var/impact_direct_damage = 0
var/turf/cached
+ var/list/pierced = list()
/obj/item/projectile/beam/beam_rifle/proc/AOE(turf/epicenter)
set waitfor = FALSE
@@ -351,20 +499,29 @@
/obj/item/projectile/beam/beam_rifle/proc/check_pierce(atom/target)
if(!do_pierce)
return FALSE
+ if(pierced[target]) //we already pierced them go away
+ loc = get_turf(target)
+ return TRUE
if(isclosedturf(target))
if(wall_pierce++ < wall_pierce_amount)
loc = target
if(prob(wall_devastate))
- target.ex_act(EXPLODE_HEAVY)
+ if(istype(target, /turf/closed/wall))
+ var/turf/closed/wall/W = target
+ W.dismantle_wall(TRUE, TRUE)
+ else
+ target.ex_act(EXPLODE_HEAVY)
return TRUE
if(ismovableatom(target))
var/atom/movable/AM = target
if(AM.density && !AM.CanPass(src, get_turf(target)) && !ismob(AM))
- if(structure_pierce++ < structure_pierce_amount)
+ if(structure_pierce < structure_pierce_amount)
if(isobj(AM))
var/obj/O = AM
O.take_damage((impact_structure_damage + aoe_structure_damage) * structure_bleed_coeff * get_damage_coeff(AM), BURN, "energy", FALSE)
+ pierced[AM] = TRUE
loc = get_turf(AM)
+ structure_pierce++
return TRUE
return FALSE
@@ -396,22 +553,69 @@
handle_impact(target)
/obj/item/projectile/beam/beam_rifle/Collide(atom/target)
+ paused = TRUE
if(check_pierce(target))
permutated += target
return FALSE
if(!QDELETED(target))
cached = get_turf(target)
+ paused = FALSE
. = ..()
/obj/item/projectile/beam/beam_rifle/on_hit(atom/target, blocked = FALSE)
+ paused = TRUE
if(!QDELETED(target))
cached = get_turf(target)
handle_hit(target)
+ paused = FALSE
. = ..()
/obj/item/projectile/beam/beam_rifle/hitscan
icon_state = ""
- var/tracer_type = /obj/effect/temp_visual/projectile_beam/tracer
+ var/tracer_type = /obj/effect/projectile_beam/tracer
+ var/starting_z
+ var/starting_p_x
+ var/starting_p_y
+ var/constant_tracer = FALSE
+ var/travelled_p_x = 0
+ var/travelled_p_y = 0
+ var/tracer_spawned = FALSE
+
+/obj/item/projectile/beam/beam_rifle/hitscan/Destroy()
+ paused = TRUE //STOP HITTING WHEN YOU'RE ALREADY BEING DELETED!
+ spawn_tracer(constant_tracer)
+ return ..()
+
+/obj/item/projectile/beam/beam_rifle/hitscan/proc/spawn_tracer(put_in_rifle = FALSE)
+ if(tracer_spawned)
+ return
+ tracer_spawned = TRUE
+ //Remind me to port baystation trajectories so this shit isn't needed...
+ var/pixels_travelled = round(sqrt(travelled_p_x**2 + travelled_p_y**2),1)
+ var/scaling = pixels_travelled/world.icon_size
+ var/midpoint_p_x = round(starting_p_x + (travelled_p_x / 2))
+ var/midpoint_p_y = round(starting_p_y + (travelled_p_y / 2))
+ var/tracer_px = midpoint_p_x % world.icon_size
+ var/tracer_py = midpoint_p_y % world.icon_size
+ var/tracer_lx = (midpoint_p_x - tracer_px) / world.icon_size
+ var/tracer_ly = (midpoint_p_y - tracer_py) / world.icon_size
+ var/obj/effect/projectile_beam/PB = new tracer_type(src)
+ PB.apply_vars(Angle, tracer_px, tracer_py, color, scaling, locate(tracer_lx,tracer_ly,starting_z))
+ if(put_in_rifle && istype(gun))
+ if(gun.current_tracer)
+ QDEL_NULL(gun.current_tracer)
+ gun.current_tracer = PB
+ else
+ QDEL_IN(PB, 5)
+
+/obj/item/projectile/beam/beam_rifle/hitscan/proc/check_for_turf_edge(turf/T)
+ if(!istype(T))
+ return TRUE
+ var/tx = T.x
+ var/ty = T.y
+ if(tx < 10 || tx > (world.maxx - 10) || ty < 10 || ty > (world.maxy-10))
+ return TRUE
+ return FALSE
/obj/item/projectile/beam/beam_rifle/hitscan/fire(setAngle, atom/direct_target) //oranges didn't let me make this a var the first time around so copypasta time
set waitfor = 0
@@ -423,6 +627,12 @@
var/old_pixel_x = pixel_x
var/old_pixel_y = pixel_y
var/safety = 0 //The code works fine, but... just in case...
+ var/turf/c2
+ var/starting_x = loc.x
+ var/starting_y = loc.y
+ starting_z = loc.z
+ starting_p_x = starting_x * world.icon_size + pixel_x
+ starting_p_y = starting_y * world.icon_size + pixel_y
while(loc)
if(++safety > (range * 3)) //If it's looping for way, way too long...
return //Kill!
@@ -437,6 +647,8 @@
transform = M
var/Pixel_x=sin(Angle)+16*sin(Angle)*2
var/Pixel_y=cos(Angle)+16*cos(Angle)*2
+ travelled_p_x += Pixel_x
+ travelled_p_y += Pixel_y
var/pixel_x_offset = old_pixel_x + Pixel_x
var/pixel_y_offset = old_pixel_y + Pixel_y
var/new_x = x
@@ -469,27 +681,23 @@
animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (delay <= 3 ? delay - 1 : delay)), flags = ANIMATION_END_NOW)
old_pixel_x = pixel_x_offset
old_pixel_y = pixel_y_offset
- if(original && (original.layer>=2.75) || ismob(original))
- if(loc == get_turf(original))
- if(!(original in permutated))
- Collide(original)
+ if(can_hit_target(original, permutated))
+ Collide(original)
+ c2 = loc
Range()
-
-/obj/item/projectile/beam/beam_rifle/hitscan/Range()
- spawn_tracer_effect()
- if(!QDELETED(src) && loc)
- cached = get_turf(src)
-
-/obj/item/projectile/beam/beam_rifle/hitscan/proc/spawn_tracer_effect()
- QDEL_IN((new tracer_type(loc, time = 5, angle_override = Angle, p_x = pixel_x, p_y = pixel_y, color_override = color)), 5)
+ if(check_for_turf_edge(loc))
+ spawn_tracer(constant_tracer)
+ if(istype(c2))
+ cached = c2
/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam
- tracer_type = /obj/effect/temp_visual/projectile_beam/tracer/aiming
+ tracer_type = /obj/effect/projectile_beam/tracer/aiming
name = "aiming beam"
hitsound = null
hitsound_wall = null
nodamage = TRUE
damage = 0
+ constant_tracer = TRUE
/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target)
qdel(src)
@@ -499,37 +707,67 @@
qdel(src)
return FALSE
-/obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/spawn_tracer_effect()
- var/obj/effect/temp_visual/projectile_beam/T = new tracer_type(loc, time = 5, angle_override = Angle, p_x = pixel_x, p_y = pixel_y, color_override = color)
- if(istype(gun) && istype(T))
- gun.current_tracers[T] = TRUE
-
-/obj/effect/temp_visual/projectile_beam
+/obj/effect/projectile_beam
icon = 'icons/obj/projectiles.dmi'
layer = ABOVE_MOB_LAYER
anchored = TRUE
- duration = 5
- randomdir = FALSE
light_power = 1
light_range = 2
light_color = "#00ffff"
+ mouse_opacity = 0
+ flags = ABSTRACT
+ appearance_flags = 0
-/obj/effect/temp_visual/projectile_beam/New(time = 5, angle_override, p_x, p_y, color_override)
- duration = time
+/obj/effect/projectile_beam/proc/scale_to(nx,ny,override=TRUE)
+ var/matrix/M
+ if(!override)
+ M = transform
+ else
+ M = new
+ M.Scale(nx,ny)
+ transform = M
+
+/obj/effect/projectile_beam/proc/turn_to(angle,override=TRUE)
+ var/matrix/M
+ if(!override)
+ M = transform
+ else
+ M = new
+ M.Turn(angle)
+ transform = M
+
+/obj/effect/projectile_beam/New(angle_override, p_x, p_y, color_override, scaling = 1)
+ if(angle_override && p_x && p_y && color_override && scaling)
+ apply_vars(angle_override, p_x, p_y, color_override, scaling)
+ return ..()
+
+/obj/effect/projectile_beam/proc/apply_vars(angle_override, p_x, p_y, color_override, scaling = 1, new_loc, increment = 0)
var/mutable_appearance/look = new(src)
look.pixel_x = p_x
look.pixel_y = p_y
if(color_override)
look.color = color_override
- var/matrix/M = new
- M.Turn(angle_override)
- look.transform = M
appearance = look
- ..()
+ scale_to(1,scaling, FALSE)
+ turn_to(angle_override, FALSE)
+ if(!isnull(new_loc)) //If you want to null it just delete it...
+ forceMove(new_loc)
+ for(var/i in 1 to increment)
+ pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1)
+ pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1)
-/obj/effect/temp_visual/projectile_beam/tracer
+/obj/effect/projectile_beam/tracer
icon_state = "tracer_beam"
-/obj/effect/temp_visual/projectile_beam/tracer/aiming
+/obj/effect/projectile_beam/tracer/aiming
icon_state = "gbeam"
- duration = 1
+
+/datum/action/item_action/zoom_speed_action
+ name = "Toggle Zooming Speed"
+ button_icon_state = "projectile"
+ background_icon_state = "bg_tech"
+
+/datum/action/item_action/zoom_lock_action
+ name = "Switch Zoom Mode"
+ button_icon_state = "zoom_mode"
+ background_icon_state = "bg_tech"
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index 2e46b50f31d..72a0b2ea8d9 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -39,9 +39,10 @@
to_chat(user, "This firearm already has a firing pin installed.")
/obj/item/device/firing_pin/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- to_chat(user, "You override the authentication mechanism.")
+ if(emagged)
+ return
+ emagged = TRUE
+ to_chat(user, "You override the authentication mechanism.")
/obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/weapon/gun/G)
gun = G
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 5a30677cc74..c877eec9eca 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -264,11 +264,8 @@
animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (delay <= 3 ? delay - 1 : delay)), flags = ANIMATION_END_NOW)
old_pixel_x = pixel_x_offset
old_pixel_y = pixel_y_offset
-
- if(original && (original.layer >= PROJECTILE_HIT_THRESHHOLD_LAYER) || ismob(original))
- if(loc == get_turf(original))
- if(!(original in permutated))
- Collide(original)
+ if(can_hit_target(original, permutated))
+ Collide(original)
Range()
if (delay > 0)
sleep(delay)
@@ -280,13 +277,19 @@
if((!( current ) || loc == current))
current = locate(Clamp(x+xo,1,world.maxx),Clamp(y+yo,1,world.maxy),z)
step_towards(src, current)
- if(original && (original.layer >= PROJECTILE_HIT_THRESHHOLD_LAYER) || ismob(original))
- if(loc == get_turf(original))
- if(!(original in permutated))
- Collide(original)
+ if(can_hit_target(original, permutated))
+ Collide(original)
Range()
sleep(config.run_speed * 0.9)
+//Returns true if the target atom is on our current turf and above the right layer
+/obj/item/projectile/proc/can_hit_target(atom/target, var/list/passthrough)
+ if(target && (target.layer >= PROJECTILE_HIT_THRESHHOLD_LAYER) || ismob(target))
+ if(loc == get_turf(target))
+ if(!(target in passthrough))
+ return TRUE
+ return FALSE
+
/obj/item/projectile/proc/preparePixelProjectile(atom/target, var/turf/targloc, mob/living/user, params, spread)
var/turf/curloc = get_turf(user)
forceMove(get_turf(user))
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 6a2ea8bb40c..844a8a46621 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 0a493516654..7a1c12639f6 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/special.dm b/code/modules/projectiles/projectile/special.dm
index 8917556a854..089f73b1c83 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -69,6 +69,7 @@
desc = "Boom"
icon_state = "missile"
damage = 30
+ ricochets_max = 0 //it's a MISSILE
/obj/item/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
..()
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index ab68dffc0bd..1685eeb72db 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -149,7 +149,7 @@
if(!new_name || ..())
return
A.AssignName(new_name)
- for(var/datum/disease/advance/AD in SSdisease.processing)
+ for(var/datum/disease/advance/AD in SSdisease.active_diseases)
AD.Refresh()
. = TRUE
if("create_culture_bottle")
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 944e03190fe..a75a0851e58 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 56922316f58..adf7292a560 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -58,13 +58,11 @@
M.confused = 0
M.SetSleeping(0, 0)
M.jitteriness = 0
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
if(D.severity == NONTHREAT)
continue
- D.spread_text = "Remissive"
- D.stage--
- if(D.stage < 1)
- D.cure()
+ D.cure()
..()
. = 1
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index fb7b99ce4da..bd659d95cde 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -13,7 +13,8 @@
/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, reac_volume)
if(data && data["viruses"])
- for(var/datum/disease/D in data["viruses"])
+ for(var/thing in data["viruses"])
+ var/datum/disease/D = thing
if((D.spread_flags & SPECIAL) || (D.spread_flags & NON_CONTAGIOUS))
continue
@@ -73,11 +74,6 @@
if(data["blood_DNA"])
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
- for(var/datum/disease/D in data["viruses"])
- var/datum/disease/newVirus = D.Copy(1)
- B.viruses += newVirus
- newVirus.holder = B
-
/datum/reagent/liquidgibs
name = "Liquid gibs"
@@ -96,7 +92,8 @@
/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, reac_volume)
if(islist(data) && (method == INGEST || method == INJECT))
- for(var/datum/disease/D in M.viruses)
+ for(var/thing in M.viruses)
+ var/datum/disease/D = thing
if(D.GetDiseaseID() in data)
D.cure()
M.resistances |= data
@@ -151,12 +148,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
@@ -932,7 +929,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 f7640fd8e35..b536dc962a4 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)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index a8845055c1f..83de0ce3ebb 100755
--- 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/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm
index 975b9e1408a..55528ff9fa0 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 af31bd9760d..ff632f1f6c8 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 618a17e8d63..0537380b20e 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)
@@ -458,7 +458,7 @@
..()
flush()
-/obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute
+/obj/machinery/disposal/deliveryChute/CollidedWith(atom/movable/AM) //Go straight into the chute
if(!AM.disposalEnterTry())
return
switch(dir)
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index ae5449d90f8..132ebdf8fdd 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/experimentor.dm b/code/modules/research/experimentor.dm
index 9ad6d10d850..23b9ad00c80 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 4826ecaeb18..cf367680492 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
@@ -150,10 +150,11 @@ won't update every console in existence) but it's more of a hassle to do. Also,
/obj/machinery/computer/rdconsole/emag_act(mob/user)
- if(!emagged)
- playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
- emagged = TRUE
- to_chat(user, "You disable the security protocols")
+ if(emagged)
+ return
+ playsound(src, "sparks", 75, 1)
+ emagged = TRUE
+ to_chat(user, "You disable the security protocols")
/obj/machinery/computer/rdconsole/Topic(href, href_list)
if(..())
@@ -320,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 67123a75754..7437db26946 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()
. = ..()
@@ -316,10 +316,11 @@
src.updateUsrDialog()
/obj/machinery/computer/rdservercontrol/emag_act(mob/user)
- if(!emagged)
- playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
- emagged = TRUE
- to_chat(user, "You you disable the security protocols.")
+ if(emagged)
+ return
+ playsound(src, "sparks", 75, 1)
+ emagged = TRUE
+ to_chat(user, "You you disable the security protocols.")
/obj/machinery/r_n_d/server/robotics
name = "Robotics R&D Server"
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 6c9337b02ad..93ac3324ac3 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -563,16 +563,16 @@
/obj/effect/timestop/Initialize()
. = ..()
- for(var/M in GLOB.living_mob_list)
+ for(var/M in GLOB.player_list)
var/mob/living/L = M
- for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in L.mind.spell_list) //People who can stop time are immune to timestop
- immune |= L
+ if(locate(/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects
+ immune += L
timestop()
/obj/effect/timestop/proc/timestop()
set waitfor = FALSE
- playsound(get_turf(src), 'sound/magic/timeparadox2.ogg', 100, 1, -1)
+ playsound(src, 'sound/magic/timeparadox2.ogg', 75, 1, -1)
for(var/i in 1 to duration-1)
for(var/atom/A in orange (freezerange, src.loc))
if(isliving(A))
@@ -598,6 +598,7 @@
stoplag()
//End
+ playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse!
for(var/mob/living/M in stopped_atoms)
unfreeze_mob(M)
diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm
index 2fbc61c2399..3a3e7886646 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"
@@ -161,7 +161,7 @@
/datum/outfit/lavaland_syndicate/comms
name = "Lavaland Syndicate Comms Agent"
- r_hand = /obj/item/weapon/melee/energy/sword/saber
+ r_hand = /obj/item/weapon/melee/transforming/energy/sword/saber
mask = /obj/item/clothing/mask/chameleon
suit = /obj/item/clothing/suit/armor/vest
l_pocket = /obj/item/weapon/card/id/syndicate/anyone
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 288ff7ad743..0567ee5d512 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/computer.dm b/code/modules/shuttle/computer.dm
index 9b60a27ecc7..179f1e7d0a0 100644
--- a/code/modules/shuttle/computer.dm
+++ b/code/modules/shuttle/computer.dm
@@ -72,8 +72,9 @@
to_chat(usr, "Unable to comply.")
/obj/machinery/computer/shuttle/emag_act(mob/user)
- if(!emagged)
- src.req_access = list()
- emagged = TRUE
- to_chat(user, "You fried the consoles ID checking system.")
+ if(emagged)
+ return
+ req_access = null
+ emagged = TRUE
+ to_chat(user, "You fried the consoles ID checking system.")
diff --git a/code/modules/shuttle/elevator.dm b/code/modules/shuttle/elevator.dm
index 12f9c24f9a4..de0febf2bf2 100644
--- a/code/modules/shuttle/elevator.dm
+++ b/code/modules/shuttle/elevator.dm
@@ -4,7 +4,7 @@
dwidth = 3
width = 7
height = 7
- knockdown = FALSE
+ movement_force = list("KNOCKDOWN" = 0, "THROW" = 0)
/obj/docking_port/mobile/elevator/request(obj/docking_port/stationary/S) //No transit, no ignition, just a simple up/down platform
dock(S, TRUE)
\ No newline at end of file
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 51552294d66..85a485411b7 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
@@ -259,7 +259,7 @@
continue
if(isbrain(player)) //also technically dead
continue
- if(get_area(player) == areaInstance)
+ if(shuttle_areas[get_area(player)])
has_people = TRUE
var/location = get_turf(player.mind.current)
if(!(player.mind.special_role == "traitor" || player.mind.special_role == "Syndicate") && !istype(location, /turf/open/floor/plasteel/shuttle/red) && !istype(location, /turf/open/floor/mineral/plastitanium/brig))
@@ -369,13 +369,20 @@
for(var/area/shuttle/escape/E in GLOB.sortedAreas)
areas += E
hyperspace_sound(HYPERSPACE_END, areas)
- if(areaInstance.parallax_movedir && time_left <= PARALLAX_LOOP_TIME)
- parallax_slowdown()
- for(var/A in SSshuttle.mobile)
- var/obj/docking_port/mobile/M = A
- if(M.launch_status == ENDGAME_LAUNCHED)
- if(istype(M, /obj/docking_port/mobile/pod))
- M.parallax_slowdown()
+ if(time_left <= PARALLAX_LOOP_TIME)
+ var/area_parallax = FALSE
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(shuttle_area.parallax_movedir)
+ area_parallax = TRUE
+ break
+ if(area_parallax)
+ parallax_slowdown()
+ for(var/A in SSshuttle.mobile)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == ENDGAME_LAUNCHED)
+ if(istype(M, /obj/docking_port/mobile/pod))
+ M.parallax_slowdown()
if(time_left <= 0)
//move each escape pod to its corresponding escape dock
@@ -448,9 +455,10 @@
return
/obj/machinery/computer/shuttle/pod/emag_act(mob/user)
- if(!emagged)
- emagged = TRUE
- to_chat(user, "You fry the pod's alert level checking system.")
+ if(emagged)
+ return
+ emagged = TRUE
+ to_chat(user, "You fry the pod's alert level checking system.")
/obj/docking_port/stationary/random
name = "escape pod"
@@ -530,12 +538,6 @@
/obj/item/weapon/storage/pod/attack_hand(mob/user)
return MouseDrop(user)
-/obj/item/weapon/storage/pod/onShuttleMove()
- unlocked = TRUE
- // If the pod was launched, the storage will always open.
- return ..()
-
-
/obj/docking_port/mobile/emergency/backup
name = "backup shuttle"
id = "backup"
diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm
index a5226abd58f..c05ec7664cc 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 f9ae5996a21..237b42bd0f2 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -1,64 +1,133 @@
-// Called before shuttle starts moving atoms.
-/atom/movable/proc/beforeShuttleMove(turf/T1, rotation)
- return
+/*
+All ShuttleMove procs go here
+*/
+
+/************************************Base procs************************************/
+
+// Called on every turf in the shuttle region, return false if it doesn't want to move
+/turf/proc/fromShuttleMove(turf/newT, turf_type, baseturf_type)
+ if(type == turf_type && baseturf == baseturf_type)
+ return FALSE
+ return TRUE
+
+// Called from the new turf before anything has been moved
+// Only gets called if fromShuttleMove returns true first
+/turf/proc/toShuttleMove(turf/oldT, shuttle_dir)
+ for(var/i in contents)
+ var/atom/movable/thing = i
+ if(ismob(thing))
+ if(isliving(thing))
+ var/mob/living/M = thing
+ if(M.buckled)
+ M.buckled.unbuckle_mob(M, 1)
+ if(M.pulledby)
+ M.pulledby.stop_pulling()
+ M.stop_pulling()
+ M.visible_message("[src] slams into [M]!")
+ if(M.key || M.get_ghost(TRUE))
+ SSblackbox.add_details("shuttle_gib", "[type]")
+ else
+ SSblackbox.add_details("shuttle_gib_unintelligent", "[type]")
+ M.gib()
+
+ else //non-living mobs shouldn't be affected by shuttles, which is why this is an else
+ if(istype(thing, /obj/singularity) && !istype(thing, /obj/singularity/narsie)) //it's a singularity but not a god, ignore it.
+ continue
+ if(!thing.anchored)
+ step(thing, shuttle_dir)
+ else
+ qdel(thing)
+
+ return TRUE
+
+// Called on the old turf to move the turf data
+/turf/proc/onShuttleMove(turf/newT, turf_type, baseturf_type, rotation, list/movement_force, move_dir)
+ if(newT == src) // In case of in place shuttle rotation shenanigans.
+ return
+
+ //Destination turf changes
+ var/destination_turf_type = newT.type
+ copyTurf(newT)
+ newT.baseturf = destination_turf_type
+
+ if(isopenturf(newT))
+ var/turf/open/new_open = newT
+ new_open.copy_air_with_tile(src)
+
+ //Source turf changes
+ ChangeTurf(turf_type, FALSE, TRUE, baseturf_type)
+
+ return TRUE
+
+// Called on the new turf after everything has been moved
+/turf/proc/afterShuttleMove(turf/oldT)
+ if(SSlighting.initialized && FALSE)
+ var/atom/movable/lighting_object/old_obj = lighting_object
+ var/atom/movable/lighting_object/new_obj = oldT.lighting_object
+ if(old_obj)
+ old_obj.update()
+ if(new_obj)
+ new_obj.update()
+ return TRUE
+
+/////////////////////////////////////////////////////////////////////////////////////
+
+// Called on every atom in shuttle turf contents before anything has been moved
+// Return true if it should be moved regardless of turf being moved
+/atom/movable/proc/beforeShuttleMove(turf/newT, rotation)
+ return FALSE
+
+// Called on atoms to move the atom to the new location
+/atom/movable/proc/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir)
+ if(newT == oldT) // In case of in place shuttle rotation shenanigans.
+ return
+
+ if(locs && locs.len > 1) // This is for multi tile objects
+ if(loc != oldT)
+ return
-// Called when shuttle attempts to move an atom.
-/atom/movable/proc/onShuttleMove(turf/T1, rotation, knockdown = TRUE)
if(rotation)
shuttleRotate(rotation)
- loc = T1
- if (length(client_mobs_in_contents))
+ loc = newT
+ if(length(client_mobs_in_contents))
update_parallax_contents()
- return 1
+ return TRUE
-// Called after all of the atoms on shuttle are moved.
-/atom/movable/proc/afterShuttleMove()
- return
+// Called on atoms after everything has been moved
+/atom/movable/proc/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
+ if(light)
+ update_light()
+ return TRUE
+/////////////////////////////////////////////////////////////////////////////////////
-/obj/onShuttleMove()
- if(invisibility >= INVISIBILITY_ABSTRACT)
- return 0
- . = ..()
+// Called on areas before anything has been moved
+/area/proc/beforeShuttleMove()
+ return TRUE
-
-/atom/movable/light/onShuttleMove()
- return 0
-
-/obj/machinery/door/airlock/onShuttleMove()
- shuttledocked = 0
- for(var/obj/machinery/door/airlock/A in range(1, src))
- A.shuttledocked = 0
- A.air_tight = TRUE
- INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
- . = ..()
- shuttledocked = 1
- for(var/obj/machinery/door/airlock/A in range(1, src))
- A.shuttledocked = 1
-/mob/onShuttleMove()
- if(!move_on_shuttle)
- return 0
- . = ..()
- if(!.)
+// Called on areas to move their turf between areas
+/area/proc/onShuttleMove(turf/oldT, turf/newT, area/underlying_old_area)
+ if(newT == oldT) // In case of in place shuttle rotation shenanigans.
return
- if(client)
- if(buckled)
- shake_camera(src, 2, 1) // turn it down a bit come on
- else
- shake_camera(src, 7, 1)
-/mob/living/carbon/onShuttleMove(turf/T1, rotation, knockdown = TRUE)
- . = ..()
- if(!.)
- return
- if(!buckled && knockdown)
- Knockdown(60)
+ contents -= oldT
+ underlying_old_area.contents += oldT
+ oldT.change_area(src, underlying_old_area)
+ //The old turf has now been given back to the area that turf originaly belonged to
-/obj/effect/abstract/proximity_checker/onShuttleMove()
- //timer so it only happens once
- addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE)
+ var/area/old_dest_area = newT.loc
+ parallax_movedir = old_dest_area.parallax_movedir
+
+ old_dest_area.contents -= newT
+ contents += newT
+ newT.change_area(old_dest_area, src)
+ return TRUE
-// Shuttle Rotation //
+// Called on areas after everything has been moved
+/area/proc/afterShuttleMove()
+ return TRUE
+
+/************************************Shuttle Rotation************************************/
/atom/proc/shuttleRotate(rotation)
//rotate our direction
@@ -76,4 +145,236 @@
var/oldPX = pixel_x
var/oldPY = pixel_y
pixel_x = oldPY
- pixel_y = (oldPX*(-1))
\ No newline at end of file
+ pixel_y = (oldPX*(-1))
+
+/************************************Turf move procs************************************/
+
+/turf/open/afterShuttleMove(turf/oldT) //Recalculates SSair stuff for turfs on both sides
+ . = ..()
+ SSair.remove_from_active(src)
+ SSair.remove_from_active(oldT)
+
+ src.CalculateAdjacentTurfs()
+ oldT.CalculateAdjacentTurfs()
+
+ SSair.add_to_active(src, TRUE)
+ SSair.add_to_active(oldT, TRUE)
+
+/************************************Machinery move procs************************************/
+
+/obj/machinery/door/airlock/beforeShuttleMove()
+ . = ..()
+ shuttledocked = 0
+ for(var/obj/machinery/door/airlock/A in range(1, src))
+ A.shuttledocked = 0
+ A.air_tight = TRUE
+ INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
+
+/obj/machinery/door/airlock/afterShuttleMove()
+ . = ..()
+ shuttledocked = 1
+ for(var/obj/machinery/door/airlock/A in range(1, src))
+ A.shuttledocked = 1
+
+/obj/machinery/camera/beforeShuttleMove()
+ . = ..()
+ GLOB.cameranet.removeCamera(src)
+ GLOB.cameranet.updateChunk()
+ return TRUE
+
+/obj/machinery/camera/afterShuttleMove()
+ . = ..()
+ if(can_use())
+ GLOB.cameranet.addCamera(src)
+ var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(x, y, z)
+ chunk.hasChanged(TRUE)
+
+/obj/machinery/telecomms/onShuttleMove(turf/T1)
+ . = ..()
+ if(. && T1) // Update listening Z, just in case you have telecomm relay on a shuttle
+ listening_level = T1.z
+
+/obj/machinery/mech_bay_recharge_port/afterShuttleMove()
+ . = ..()
+ recharging_turf = get_step(loc, dir)
+
+/obj/machinery/atmospherics/afterShuttleMove()
+ . = ..()
+ if(pipe_vision_img)
+ pipe_vision_img.loc = loc
+
+/obj/machinery/computer/auxillary_base/onShuttleMove(turf/T1)
+ . = ..()
+ if(z == ZLEVEL_MINING) //Avoids double logging and landing on other Z-levels due to badminnery
+ SSblackbox.add_details("colonies_dropped", "[x]|[y]|[z]") //Number of times a base has been dropped!
+
+/obj/machinery/gravity_generator/main/beforeShuttleMove()
+ . = ..()
+ on = FALSE
+ update_list()
+
+/obj/machinery/gravity_generator/main/afterShuttleMove()
+ . = ..()
+ if(charge_count != 0 && charging_state != POWER_UP)
+ on = TRUE
+ update_list()
+
+/obj/machinery/thruster/beforeShuttleMove()
+ . = ..()
+ . = TRUE
+
+//Properly updates pipes on shuttle movement
+/obj/machinery/atmospherics/shuttleRotate(rotation)
+ var/list/real_node_connect = getNodeConnects()
+ for(DEVICE_TYPE_LOOP)
+ real_node_connect[I] = angle2dir(rotation+dir2angle(real_node_connect[I]))
+
+ . = ..()
+ SetInitDirections()
+ var/list/supposed_node_connect = getNodeConnects()
+ var/list/nodes_copy = nodes.Copy()
+
+ for(DEVICE_TYPE_LOOP)
+ var/new_pos = supposed_node_connect.Find(real_node_connect[I])
+ nodes[new_pos] = nodes_copy[I]
+
+/obj/machinery/atmospherics/afterShuttleMove()
+ . = ..()
+ var/missing_nodes = FALSE
+ for(DEVICE_TYPE_LOOP)
+ if(src.nodes[I])
+ var/obj/machinery/atmospherics/node = src.nodes[I]
+ var/connected = FALSE
+ for(var/D in GLOB.cardinals)
+ if(node in get_step(src, D))
+ connected = TRUE
+ break
+
+ if(!connected)
+ nullifyNode(I)
+
+ if(!src.nodes[I])
+ missing_nodes = TRUE
+
+ if(missing_nodes)
+ atmosinit()
+ for(var/obj/machinery/atmospherics/A in pipeline_expansion())
+ A.atmosinit()
+ if(A.returnPipenet())
+ A.addMember(src)
+ build_network()
+ else
+ // atmosinit() calls update_icon(), so we don't need to call it
+ update_icon()
+
+/obj/machinery/atmospherics/pipe/afterShuttleMove()
+ . = ..()
+ var/turf/T = loc
+ hide(T.intact)
+
+/obj/machinery/navbeacon/beforeShuttleMove()
+ . = ..()
+ GLOB.navbeacons["[z]"] -= src
+ GLOB.deliverybeacons -= src
+
+/obj/machinery/navbeacon/afterShuttleMove()
+ . = ..()
+ var/turf/T = loc
+ hide(T.intact)
+ if(codes["patrol"])
+ if(!GLOB.navbeacons["[z]"])
+ GLOB.navbeacons["[z]"] = list()
+ GLOB.navbeacons["[z]"] += src //Register with the patrol list!
+ if(codes["delivery"])
+ GLOB.deliverybeacons += src
+ GLOB.deliverybeacontags += location
+
+/obj/machinery/power/terminal/afterShuttleMove()
+ . = ..()
+ var/turf/T = src.loc
+ if(level==1)
+ hide(T.intact)
+
+/************************************Item move procs************************************/
+
+/obj/item/weapon/storage/pod/onShuttleMove()
+ unlocked = TRUE
+ // If the pod was launched, the storage will always open.
+ return ..()
+
+/************************************Mob move procs************************************/
+
+/mob/onShuttleMove()
+ if(!move_on_shuttle)
+ return 0
+ . = ..()
+ if(!.)
+ return
+ if(client)
+ if(buckled)
+ shake_camera(src, 2, 1) // turn it down a bit come on
+ else
+ shake_camera(src, 7, 1)
+
+/mob/living/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
+ . = ..()
+ if(movement_force && !buckled)
+ if(movement_force["THROW"])
+ var/throw_dir = move_dir
+ var/turf/target = get_edge_target_turf(src, throw_dir)
+ var/range = movement_force["THROW"]
+ var/speed = range/5
+ src.throw_at(target, range, speed)
+ if(movement_force["KNOCKDOWN"])
+ Knockdown(movement_force["KNOCKDOWN"])
+
+/mob/living/simple_animal/hostile/megafauna/onShuttleMove()
+ var/turf/oldT = loc
+ . = ..()
+ message_admins("Megafauna [src] [ADMIN_FLW(src)] moved via shuttle from [ADMIN_COORDJMP(oldT)] to [ADMIN_COORDJMP(loc)]")
+
+/************************************Structure move procs************************************/
+
+/obj/structure/grille/beforeShuttleMove()
+ . = ..()
+ . = TRUE
+
+/obj/structure/lattice/beforeShuttleMove()
+ . = ..()
+ . = TRUE
+
+/obj/structure/disposalpipe/afterShuttleMove()
+ . = ..()
+ update()
+
+/obj/structure/cable/afterShuttleMove()
+ . = ..()
+ var/turf/T = loc
+ if(level==1)
+ hide(T.intact)
+
+/************************************Misc move procs************************************/
+
+/atom/movable/lighting_object/onShuttleMove()
+ return FALSE
+
+/atom/movable/light/onShuttleMove()
+ return FALSE
+
+/obj/docking_port/stationary/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force)
+ var/obj/docking_port/mobile/docked_port = get_docked()
+ if(!docked_port)
+ docked_port = locate(/obj/docking_port/mobile) in newT
+
+ if(docked_port && locate(/obj/docking_port/stationary) in newT)
+ return FALSE //There's a mobile dock that's moving to the new turf to be with another stationary dock! After all I did for them...
+
+ . = ..()
+
+obj/docking_port/stationary/public_mining_dock/onShuttleMove()
+ id = "mining_public" //It will not move with the base, but will become enabled as a docking point.
+ return 0
+
+/obj/effect/abstract/proximity_checker/onShuttleMove()
+ //timer so it only happens once
+ addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE)
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index f850bbb6064..d25fc4ab95a 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -74,7 +74,7 @@
//returns turfs within our projected rectangle in a specific order.
//this ensures that turfs are copied over in the same order, regardless of any rotation
-/obj/docking_port/proc/return_ordered_turfs(_x, _y, _z, _dir, area/A)
+/obj/docking_port/proc/return_ordered_turfs(_x, _y, _z, _dir, area_type)
if(!_dir)
_dir = dir
if(!_x)
@@ -105,8 +105,8 @@
xi = _x + (dx-dwidth)*cos - (dy-dheight)*sin
yi = _y + (dy-dheight)*cos + (dx-dwidth)*sin
var/turf/T = locate(xi, yi, _z)
- if(A)
- if(get_area(T) == A)
+ if(area_type)
+ if(istype(get_area(T), area_type))
. += T
else
. += null
@@ -142,6 +142,7 @@
name = "dock"
var/turf_type = /turf/open/space
+ var/baseturf_type = /turf/open/space
var/area_type = /area/space
var/last_dock_time
@@ -173,14 +174,16 @@
SSshuttle.transit += src
/obj/docking_port/stationary/transit/proc/dezone()
- for(var/i in assigned_turfs)
- var/turf/T = i
+ 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)
+ T.ChangeTurf(/turf/open/space,new_baseturf=/turf/open/space)
T.flags |= UNUSED_TRANSIT_TURF
/obj/docking_port/stationary/transit/Destroy(force=FALSE)
if(force)
+ if(get_docked())
+ to_chat("A transit dock was destroyed while something was docked to it.")
SSshuttle.transit -= src
if(owner)
owner = null
@@ -195,7 +198,8 @@
name = "shuttle"
icon_state = "pinonclose"
- var/area/shuttle/areaInstance
+ var/area_type = /area/shuttle
+ var/list/area/shuttle/shuttle_areas
var/timer //used as a timer (if you want time left to complete move, use timeLeft proc)
var/last_timer_length
@@ -217,7 +221,7 @@
var/launch_status = NOLAUNCH
- var/knockdown = TRUE //Will it knock down mobs when it docks?
+ var/list/movement_force = list("KNOCKDOWN" = 3, "THROW" = 0)
// A timid shuttle will not register itself with the shuttle subsystem
// All shuttle templates are timid
@@ -237,7 +241,7 @@
destination = null
previous = null
assigned_transit = null
- areaInstance = null
+ shuttle_areas = null
. = ..()
/obj/docking_port/mobile/Initialize(mapload)
@@ -245,19 +249,18 @@
if(!timid)
register()
- var/area/A = get_area(src)
- if(istype(A, /area/shuttle))
- areaInstance = A
-
if(!id)
id = "[SSshuttle.mobile.len]"
if(name == "shuttle")
name = "shuttle[SSshuttle.mobile.len]"
- if(!areaInstance)
- areaInstance = new()
- areaInstance.name = name
- areaInstance.contents += return_ordered_turfs()
+ shuttle_areas = list()
+ var/list/all_turfs = return_ordered_turfs(x, y, z, dir)
+ for(var/i in 1 to all_turfs.len)
+ var/turf/curT = all_turfs[i]
+ var/area/cur_area = curT.loc
+ if(istype(cur_area, area_type))
+ shuttle_areas[cur_area] = TRUE
initial_engines = count_engines()
current_engines = initial_engines
@@ -378,32 +381,41 @@
/obj/docking_port/mobile/proc/jumpToNullSpace()
// Destroys the docking port and the shuttle contents.
// Not in a fancy way, it just ceases.
- var/obj/docking_port/stationary/S0 = get_docked()
+ var/obj/docking_port/stationary/current_dock = get_docked()
+
var/turf_type = /turf/open/space
+ var/baseturf_type = /turf/open/space
var/area_type = /area/space
// If the shuttle is docked to a stationary port, restore its normal
// "empty" area and turf
- if(S0)
- if(S0.turf_type)
- turf_type = S0.turf_type
- if(S0.area_type)
- area_type = S0.area_type
+ if(current_dock)
+ if(current_dock.turf_type)
+ turf_type = current_dock.turf_type
+ if(current_dock.baseturf_type)
+ baseturf_type = current_dock.baseturf_type
+ if(current_dock.area_type)
+ area_type = current_dock.area_type
- var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
+ var/list/shuttle_turfs = return_ordered_turfs(x, y, z, dir, area_type)
//remove area surrounding docking port
- if(areaInstance.contents.len)
- var/area/A0 = locate("[area_type]")
- if(!A0)
- A0 = new area_type(null)
- for(var/turf/T0 in L0)
- A0.contents += T0
+ 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 L0)
- var/turf/T0 =i
- if(!T0)
+ for(var/i in shuttle_turfs)
+ var/turf/T = i
+ if(!T)
continue
- T0.empty(turf_type)
+ T.empty(turf_type, baseturf_type)
qdel(src, force=TRUE)
@@ -418,7 +430,7 @@
ripples.Cut()
/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1)
- var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
+ var/list/L0 = return_ordered_turfs(x, y, z, dir, area_type)
var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
var/list/ripple_turfs = list()
@@ -439,117 +451,134 @@
for(var/obj/machinery/door/poddoor/shuttledock/pod in GLOB.airlocks)
pod.check()
-//this is the main proc. It instantly moves our mobile port to stationary port S1
-//it handles all the generic behaviour, such as sanity checks, closing doors on the shuttle, stunning mobs, etc
-/obj/docking_port/mobile/proc/dock(obj/docking_port/stationary/S1, force=FALSE)
- if(S1.get_docked() == src)
- remove_ripples()
- return
+//this is the main proc. It instantly moves our mobile port to stationary port new_dock
+/obj/docking_port/mobile/proc/dock(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE)
// Crashing this ship with NO SURVIVORS
+
+ if(new_dock.get_docked() == src)
+ remove_ripples()
+ return DOCKING_COMPLETE
+
if(!force)
- if(!check_dock(S1))
- return -1
+ if(!check_dock(new_dock))
+ return DOCKING_BLOCKED
if(!canMove())
- return -1
+ return DOCKING_IMMOBILIZED
- var/obj/docking_port/stationary/S0 = get_docked()
- var/turf_type = /turf/open/space
- var/area_type = /area/space
- if(S0)
- if(S0.turf_type)
- turf_type = S0.turf_type
- if(S0.area_type)
- area_type = S0.area_type
+ var/obj/docking_port/stationary/old_dock = get_docked()
+ var/turf_type = /turf/open/space //The turf that gets placed under where the shuttle moved from
+ var/baseturf_type = /turf/open/space //The baseturf that the gets assigned to the turf_type above
+ var/area_type = /area/space //The area that gets placed under where the shuttle moved from
+ if(old_dock) //Dock overwrites
+ if(old_dock.turf_type)
+ turf_type = old_dock.turf_type
+ if(old_dock.baseturf_type)
+ baseturf_type = old_dock.baseturf_type
+ if(old_dock.area_type)
+ area_type = old_dock.area_type
- var/destination_turf_type = S1.turf_type
+ var/list/old_turfs = return_ordered_turfs(x, y, z, dir)
+ var/list/new_turfs = return_ordered_turfs(new_dock.x, new_dock.y, new_dock.z, new_dock.dir)
+ var/list/old_contents = list() //Lists of turfs to only move contents and area but not move the turf
+ var/list/new_contents = list() //For structures etc that act attached to the ship
- var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
- var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
+ var/area/underlying_old_area = locate("[area_type]")
+ if(!underlying_old_area)
+ underlying_old_area = new area_type(null)
- var/rotation = dir2angle(S1.dir)-dir2angle(dir)
- if ((rotation % 90) != 0)
- rotation += (rotation % 90) //diagonal rotations not allowed, round up
- rotation = SimplifyDegrees(rotation)
+ var/rotation = 0
+ if(new_dock.dir != dir) //Even when the dirs are the same rotation is coming out as not 0 for some reason
+ rotation = dir2angle(new_dock)-dir2angle(dir)
+ if ((rotation % 90) != 0)
+ rotation += (rotation % 90) //diagonal rotations not allowed, round up
+ rotation = SimplifyDegrees(rotation)
+
+ if(!movement_direction)
+ movement_direction = turn(preferred_direction, 180)
- //remove area surrounding docking port
- if(areaInstance.contents.len)
- var/area/A0 = locate("[area_type]")
- if(!A0)
- A0 = new area_type(null)
- for(var/turf/T0 in L0)
- var/area/old = T0.loc
- A0.contents += T0
- T0.change_area(old, A0)
- if (istype(S1, /obj/docking_port/stationary/transit))
- areaInstance.parallax_movedir = preferred_direction
- else
- areaInstance.parallax_movedir = FALSE
remove_ripples()
- //move or squish anything in the way ship at destination
- roadkill(L0, L1, S1.dir)
+ var/list/moved_atoms = list() //Everything not a turf that gets moved in the shuttle
+ var/list/areas_to_move = list() //unique assoc list of areas on turfs being moved
-
- for(var/i in 1 to L0.len)
- var/turf/T0 = L0[i]
- if(!T0)
+ /****************************************All beforeShuttleMove procs*****************************************/
+ var/index = 1
+ while(index <= old_turfs.len)
+ var/turf/oldT = old_turfs[index]
+ var/turf/newT = new_turfs[index]
+ var/area/old_area = oldT.loc
+ var/move_turf = TRUE //Should this turf be moved, if false remove from the turf list
+ if(!(shuttle_areas[old_area]))
+ move_turf = FALSE
+ if(move_turf)
+ move_turf = oldT.fromShuttleMove(newT, turf_type, baseturf_type) //turf
+ if(move_turf) //Only call toShuttleMove if the source turf is willing to move
+ move_turf = newT.toShuttleMove(oldT, dir) //turf
+ for(var/ii in 1 to oldT.contents.len)
+ var/atom/movable/moving_atom = oldT.contents[ii]
+ if(moving_atom.beforeShuttleMove(newT, rotation) && !move_turf) //atoms
+ old_contents += oldT
+ new_contents += newT
+ if(!move_turf)
+ old_turfs.Cut(index,index+1)
+ new_turfs.Cut(index,index+1)
continue
- var/turf/T1 = L1[i]
- if(!T1)
+ areas_to_move[old_area] = TRUE
+ index++
+
+ for(var/thing in areas_to_move)
+ var/area/internal_area = thing
+ internal_area.beforeShuttleMove() //areas
+
+ if(!old_turfs.len && !old_contents.len) //This should only happen if no shuttle area has been specified
+ return DOCKING_AREA_EMPTY
+
+ /*******************************************All onShuttleMove procs******************************************/
+
+ for(var/i in 1 to old_turfs.len)
+ var/turf/oldT = old_turfs[i]
+ var/turf/newT = new_turfs[i]
+ if(!oldT || !newT) //This really shouldn't happen
continue
- if(T0.type == T0.baseturf)
+ for(var/thing in oldT) //Needs to be this kind of loop in case, because of shuttle rotation shenanigans, the destination turf is the same as the source turf
+ var/atom/movable/moving_atom = thing
+ moving_atom.onShuttleMove(newT, oldT, rotation, movement_force, movement_direction) //atoms
+ moved_atoms += moving_atom
+ oldT.onShuttleMove(newT, turf_type, baseturf_type, rotation, movement_force, movement_direction) //turfs
+ var/area/shuttle_area = oldT.loc
+ shuttle_area.onShuttleMove(oldT, newT, underlying_old_area) //areas
+
+ for(var/i in 1 to old_contents.len) //This is for moving atoms that need to move without their turf
+ var/turf/oldT = old_contents[i] //I'll figure out a way of merging these loops eventualy, probably
+ var/turf/newT = new_contents[i]
+ if(!oldT || !newT)
continue
- for(var/atom/movable/AM in T0)
- AM.beforeShuttleMove(T1, rotation)
+ for(var/thing in oldT)
+ var/atom/movable/moving_atom = thing
+ moving_atom.onShuttleMove(newT, oldT, rotation, movement_force, movement_direction) //atoms
+ moved_atoms += moving_atom
+
+ /******************************************All afterShuttleMove procs****************************************/
+
+ for(var/i in 1 to new_turfs.len)
+ var/turf/oldT = old_turfs[i]
+ var/turf/newT = new_turfs[i]
+ newT.afterShuttleMove(oldT) //turfs
- var/list/moved_atoms = list()
+ for(var/i in 1 to moved_atoms.len)
+ var/atom/movable/moved_object = moved_atoms[i]
+ moved_object.afterShuttleMove(movement_force, dir, preferred_direction, movement_direction) //atoms
- for(var/i in 1 to L0.len)
- var/turf/T0 = L0[i]
- if(!T0)
- continue
- var/turf/T1 = L1[i]
- if(!T1)
- continue
- if(T0.type != T0.baseturf) //So if there is a hole in the shuttle we don't drag along the space/asteroid/etc to wherever we are going next
- T0.copyTurf(T1)
- T1.baseturf = destination_turf_type
- var/area/old = T1.loc
- areaInstance.contents += T1
- T1.change_area(old, areaInstance)
+ underlying_old_area.afterShuttleMove()
- //copy over air
- if(isopenturf(T1))
- var/turf/open/Ts1 = T1
- Ts1.copy_air_with_tile(T0)
+ for(var/thing in areas_to_move)
+ var/area/internal_area = thing
+ internal_area.afterShuttleMove() //areas
- //move mobile to new location
- for(var/atom/movable/AM in T0)
- if(AM.onShuttleMove(T1, rotation, knockdown))
- moved_atoms += AM
+ new_dock.last_dock_time = world.time
+ setDir(new_dock.dir)
- if(rotation)
- T1.shuttleRotate(rotation)
-
- SSair.remove_from_active(T1)
- T1.CalculateAdjacentTurfs()
- SSair.add_to_active(T1,1)
-
- T0.ChangeTurf(turf_type)
-
- SSair.remove_from_active(T0)
- T0.CalculateAdjacentTurfs()
- SSair.add_to_active(T0,1)
-
- for(var/am in moved_atoms)
- var/atom/movable/AM = am
- AM.afterShuttleMove()
-
- check_poddoors()
- S1.last_dock_time = world.time
-
- loc = S1.loc
- setDir(S1.dir)
+ return DOCKING_SUCCESS
/obj/docking_port/mobile/proc/findRoundstartDock()
return SSshuttle.getDock(roundstart_move)
@@ -567,40 +596,6 @@
/obj/effect/landmark/shuttle_import
name = "Shuttle Import"
-/obj/docking_port/mobile/proc/roadkill(list/L0, list/L1, dir)
- for(var/i in 1 to L0.len)
- var/turf/T0 = L0[i]
- var/turf/T1 = L1[i]
- if(!T0 || !T1)
- continue
- if(T0.type == T0.baseturf)
- continue
- // The corresponding tile will not be changed, so no roadkill
-
- for(var/atom/movable/AM in T1)
- if(ismob(AM))
- if(isliving(AM))
- var/mob/living/M = AM
- if(M.buckled)
- M.buckled.unbuckle_mob(M, 1)
- if(M.pulledby)
- M.pulledby.stop_pulling()
- M.stop_pulling()
- M.visible_message("[src] slams into [M]!")
- if(M.key || M.get_ghost(TRUE))
- SSblackbox.add_details("shuttle_gib", "[type]")
- else
- SSblackbox.add_details("shuttle_gib_unintelligent", "[type]")
- M.gib()
-
- else //non-living mobs shouldn't be affected by shuttles, which is why this is an else
- if(istype(AM, /obj/singularity) && !istype(AM, /obj/singularity/narsie)) //it's a singularity but not a god, ignore it.
- continue
- if(!AM.anchored)
- step(AM, dir)
- else
- qdel(AM)
-
//used by shuttle subsystem to check timers
/obj/docking_port/mobile/proc/check()
check_effects()
@@ -614,7 +609,7 @@
// then try again
switch(mode)
if(SHUTTLE_CALL)
- if(dock(destination))
+ if(dock(destination, preferred_direction))
setTimer(20)
return
if(SHUTTLE_RECALL)
@@ -643,14 +638,19 @@
create_ripples(destination, tl)
var/obj/docking_port/stationary/S0 = get_docked()
- if(areaInstance.parallax_movedir && istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME)
- parallax_slowdown()
+ if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME)
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ if(shuttle_area.parallax_movedir)
+ parallax_slowdown()
/obj/docking_port/mobile/proc/parallax_slowdown()
- areaInstance.parallax_movedir = FALSE
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ shuttle_area.parallax_movedir = FALSE
if(assigned_transit && assigned_transit.assigned_area)
assigned_transit.assigned_area.parallax_movedir = FALSE
- var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
+ var/list/L0 = return_ordered_turfs(x, y, z, dir, area_type)
for (var/thing in L0)
var/turf/T = thing
for (var/thing2 in T)
@@ -740,9 +740,11 @@
// attempts to locate /obj/machinery/computer/shuttle with matching ID inside the shuttle
/obj/docking_port/mobile/proc/getControlConsole()
- for(var/obj/machinery/computer/shuttle/S in areaInstance)
- if(S.shuttleId == id)
- return S
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ for(var/obj/machinery/computer/shuttle/S in shuttle_area)
+ if(S.shuttleId == id)
+ return S
return null
/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas)
@@ -785,9 +787,11 @@
/obj/docking_port/mobile/proc/count_engines()
. = 0
- for(var/obj/structure/shuttle/engine/E in areaInstance.contents)
- if(!QDELETED(E))
- . += E.engine_power
+ for(var/thing in shuttle_areas)
+ var/area/shuttle/areaInstance = thing
+ for(var/obj/structure/shuttle/engine/E in areaInstance.contents)
+ if(!QDELETED(E))
+ . += E.engine_power
// Double initial engines to get to 0.5 minimum
// Lose all initial engines to get to 2
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 169d9360153..7a5f4936d95 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 feca936dfb5..c0d3714acfa 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -41,15 +41,17 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/docking_port/mobile/supply/canMove()
if(z == ZLEVEL_STATION)
- return check_blacklist(areaInstance)
+ return check_blacklist(shuttle_areas)
return ..()
-/obj/docking_port/mobile/supply/proc/check_blacklist(areaInstance)
- for(var/trf in areaInstance)
- var/turf/T = trf
- for(var/a in T.GetAllContents())
- if(is_type_in_typecache(a, GLOB.blacklisted_cargo_types))
- return FALSE
+/obj/docking_port/mobile/supply/proc/check_blacklist(areaInstances)
+ for(var/place in areaInstances)
+ var/area/shuttle/shuttle_area = place
+ for(var/trf in shuttle_area)
+ var/turf/T = trf
+ for(var/a in T.GetAllContents())
+ if(is_type_in_typecache(a, GLOB.blacklisted_cargo_types))
+ return FALSE
return TRUE
/obj/docking_port/mobile/supply/request()
@@ -70,10 +72,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
return
var/list/empty_turfs = list()
- for(var/turf/open/floor/T in areaInstance)
- if(is_blocked_turf(T))
- continue
- empty_turfs += T
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ for(var/turf/open/floor/T in shuttle_area)
+ if(is_blocked_turf(T))
+ continue
+ empty_turfs += T
var/value = 0
var/purchases = 0
@@ -107,10 +111,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
var/msg = ""
var/sold_atoms = ""
- for(var/atom/movable/AM in areaInstance)
- if(AM.anchored && !istype(AM, /obj/mecha))
- continue
- sold_atoms += export_item_and_contents(AM, contraband, emagged, dry_run = FALSE)
+ for(var/place in shuttle_areas)
+ var/area/shuttle/shuttle_area = place
+ for(var/atom/movable/AM in shuttle_area)
+ if(AM.anchored)
+ continue
+ sold_atoms += export_item_and_contents(AM, contraband, emagged, dry_run = FALSE)
if(sold_atoms)
sold_atoms += "."
diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm
index 57a8ffd7efa..47eb22c397b 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 d21b54b0704..f026cd14838 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 9cc3e3b5a8d..5f5547c281b 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 3985328827c..bc88dacf7d3 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 77b063af213..9d300e8e528 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 0442b2c02a8..bc5ce48c7bb 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/projectile.dm b/code/modules/spells/spell_types/projectile.dm
index 7502db48cea..f96b9bb1c6d 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 90c7730f5a7..74490fea287 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 9ce3d28070f..074c206c1fd 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 ddcfaf08d11..55ae1cc2b0e 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/station_goals/shield.dm b/code/modules/station_goals/shield.dm
index f9f24a4fb4b..1543f7615af 100644
--- a/code/modules/station_goals/shield.dm
+++ b/code/modules/station_goals/shield.dm
@@ -176,7 +176,8 @@
change_meteor_chance(0.5)
/obj/machinery/satellite/meteor_shield/emag_act()
- if(!emagged)
- emagged = TRUE
- if(active)
- change_meteor_chance(2)
+ if(emagged)
+ return
+ emagged = TRUE
+ if(active)
+ change_meteor_chance(2)
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index af7bb411269..f8f8ba9be26 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -9,7 +9,7 @@
/datum/surgery_step/sever_limb
name = "sever limb"
- implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
+ implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index d93fc658ddb..b239e395761 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 00a01e2d2e4..c956380d200 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/generic_steps.dm b/code/modules/surgery/generic_steps.dm
index eb0f5c77a5b..8ddce18cf11 100644
--- a/code/modules/surgery/generic_steps.dm
+++ b/code/modules/surgery/generic_steps.dm
@@ -2,7 +2,7 @@
//make incision
/datum/surgery_step/incise
name = "make incision"
- implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/melee/energy/sword = 75, /obj/item/weapon/kitchen/knife = 65,
+ implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/melee/transforming/energy/sword = 75, /obj/item/weapon/kitchen/knife = 65,
/obj/item/weapon/shard = 45, /obj/item = 30) // 30% success with any sharp item.
time = 16
@@ -87,7 +87,7 @@
//saw bone
/datum/surgery_step/saw
name = "saw bone"
- implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100,
+ implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100,
/obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/mounted_chainsaw = 65, /obj/item/weapon/twohanded/required/chainsaw = 50,
/obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 54
diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm
index 32b4f7c8c6b..c965640ade5 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/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm
index 5cb9298544a..4570b5a6618 100644
--- a/code/modules/surgery/lipoplasty.dm
+++ b/code/modules/surgery/lipoplasty.dm
@@ -12,7 +12,7 @@
//cut fat
/datum/surgery_step/cut_fat
name = "cut excess fat"
- implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
+ implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 4fc22ec2c2a..5c0e31456ed 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -192,7 +192,7 @@
/obj/item/organ/cyberimp/arm/esword
name = "arm-mounted energy blade"
desc = "An illegal, and highly dangerous cybernetic implant that can project a deadly blade of concentrated enregy."
- contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight)
+ contents = newlist(/obj/item/weapon/melee/transforming/energy/blade/hardlight)
origin_tech = "materials=4;combat=5;biotech=3;powerstorage=2;syndicate=5"
/obj/item/organ/cyberimp/arm/medibeam
@@ -222,7 +222,7 @@
/obj/item/organ/cyberimp/arm/combat
name = "combat cybernetics implant"
desc = "A powerful cybernetic implant that contains combat modules built into the user's arm"
- contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant)
+ contents = newlist(/obj/item/weapon/melee/transforming/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant)
origin_tech = "materials=5;combat=7;biotech=5;powerstorage=5;syndicate=6;programming=5"
/obj/item/organ/cyberimp/arm/combat/Initialize()
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 9c19826fc58..dc1a4d0f641 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -117,7 +117,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
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 4a529409c9a..f95e2cd996e 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/surgery/tail_modification.dm b/code/modules/surgery/tail_modification.dm
index b8e8da5d318..34993b02c63 100644
--- a/code/modules/surgery/tail_modification.dm
+++ b/code/modules/surgery/tail_modification.dm
@@ -18,7 +18,7 @@
/datum/surgery_step/sever_tail
name = "sever tail"
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100,
- /obj/item/weapon/melee/sabre = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100,
+ /obj/item/weapon/melee/sabre = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100,
/obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80,
/obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50,
/obj/item/weapon/hatchet = 40, /obj/item = 30) // 30% success with any sharp item.
diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm
index 5c646f76f30..7b455b7d80f 100644
--- a/code/modules/uplink/uplink_item.dm
+++ b/code/modules/uplink/uplink_item.dm
@@ -280,7 +280,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once.
name = "Energy Sword"
desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be \
pocketed when inactive. Activating it produces a loud, distinctive noise."
- item = /obj/item/weapon/melee/energy/sword/saber
+ item = /obj/item/weapon/melee/transforming/energy/sword/saber
cost = 8
/datum/uplink_item/dangerous/doublesword
@@ -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/vehicle.dm b/code/modules/vehicles/vehicle.dm
index ef7b5eea920..b26a8054aad 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -68,7 +68,7 @@
if(auto_door_open)
if(istype(M, /obj/machinery/door) && has_buckled_mobs())
for(var/m in buckled_mobs)
- M.Bumped(m)
+ M.CollidedWith(m)
/obj/vehicle/Process_Spacemove(direction)
diff --git a/config/config.txt b/config/config.txt
index 4cad95a5c8e..2ed021a36b1 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -265,10 +265,10 @@ NOTIFY_NEW_PLAYER_ACCOUNT_AGE 1
## If panic bunker is on and a player is rejected (see above), attempt to send them to this connected server (see below) instead.
## You probably want this to be the same as CROSS_SERVER_ADDRESS
-PANIC_SERVER_ADDRESS byond://address:port
+#PANIC_SERVER_ADDRESS byond://address:port
##Name of the place to send people rejected by the bunker
-PANIC_SERVER_NAME [Put the name here]
+#PANIC_SERVER_NAME [Put the name here]
## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog
#AGGRESSIVE_CHANGELOG
diff --git a/html/changelog.html b/html/changelog.html
index 9437cc602ed..b44d458f239 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,83 @@
-->
+ 18 July 2017
+ BeeSting12 updated:
+
+ - Deltastation's auxiliary storage in arrivals can be accessed by anyone now.
+ - Deltastation's cargo bay maintenance can now be accessed by cargo techs.
+
+ Dannno/Supermichael777/InsaneHyena updated:
+
+ - 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.
+
+ Ergovisavi updated:
+
+ - Fixed the refresher variant of the anomalous crystal making holodeck items real
+
+ Fox McCloud updated:
+
+ - blood and gibs on turfs can no longer infect nearby people
+ - Tuberculosis bypasses species virus immunity (it's not a virus!)
+ - Disease and appendicitis events no longer infect clientless mobs
+ - Disease event will no longer pick virus immune mobs
+ - Appendicitis event will no longer pick mobs without an appendix
+ - Fixed changeling panacea curing non-harmful viruses
+ - Fixes IV drips not properly injecting the right amount of blood
+
+ Joan updated:
+
+ - Removed the Soul Vessel, Cogscarab, and Anima Fragment Scriptures.
+ - The Ark of the Clockwork Justicar will still forcibly take up a 3x3 area even if it still needs components to activate.
+
+ MrStonedOne & Fox-McCloud updated:
+
+ - Made pathfinding much quicker
+
+ NewSta updated:
+
+ - Fixes the maid apron being invisible when in-hand or attached to the maid outfit.
+
+ XDTM updated:
+
+ - Viruses and symptoms have been havily reworked.
+ - 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.
+ - Some symptoms no longer scale linearly with stats, and instead have thresholds.
+ - The symptom limit is now 6.
+ - Viruses can no longer be made invisible to the Pandemic
+ - 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.
+ - The symptoms Blood Vomit and Projectile Vomit have been removed, and are now bonuses for the base Vomit symptom.
+ - The Weakness symptom has been removed as it was completely useless.
+ - The Sensory Destruction symptom has been reworked into Narcolepsy, which causes drowsiness and sleep.
+ - Viral Aggressive Metabolism now has a timer before it starts decaying the virus. It scales with the highest between Resistance or Stage Speed.
+ - 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.
+
+ Xhuis updated:
+
+ - The tachyon-doppler array's rotation now has messages, sprites, and examine text.
+ - Time stop is now fixed, finally!
+ - Time stop's sound now plays in reverse when the effect ends.
+ - Missiles can no longer ricochet off of shuttle walls, etc.
+ - Winter coats now hold all flashlights properly, instead of seclites.
+
+ Xhuis & Cyberboss updated:
+
+ - New hivebot invasion event
+
+ kevinz000 updated:
+
+ - Personal Cabinets now have piano synthesizers for handheld piano playing.
+ - Thank @nicbn for the sprites!
+
+ ninjanomnom updated:
+
+ - Thank you for updating your ShuttlSoft product! Your last update was -ERROR- years ago. A full changelog can be found at CYG10408.SHSO.b9 along with the EULA. This update lays a foundation for new things to come and a sample in the form of new and improved docking procedures.
+
+ shizcalev updated:
+
+ - Cerestation's emergency shuttle autopilot will no longer fly you in reverse back to Centcom!
+
+
11 July 2017
RandomMarine updated:
@@ -1152,231 +1229,6 @@
- Magic eightballs are now tiny items, able to fit into a box and pocket.
-
- 16 May 2017
- Moonlighting Mac says updated:
-
- - Starthistles now return seeds when they are harvested, amongst having a overhaul of description, alteration of statistics & a mutational path into harebells. These seeds have been supplied into the hydroponics seed vendor.
- - Starthistle tray sprites have been restructured & also fixed from a issue of them being broken and not appearing in trays. In addition there are new sprites for its seeds.
-
- Penguaro updated:
-
- - There is now Space under the rocks at the Dragoon's Tomb
- - Centcom Intelligence reports that the Hidden Syndicate Research Base may have received a shipment of viruses.
-
- QualityVan updated:
-
- - Fixed fire alarms not being repairable if the board was broken
- - People without eyes and ears are no longer susceptible to flashbangs they aren't directly on top of
-
- Robustin updated:
-
- - Summoning Nar'Sie now triggers a different ending. No shuttle is coming! Survivors must escape on a pod or survive the Red Harvest for 3 minutes. If Nar'Sie acquires enough souls, the round ends immediately with a **special ending**.
- - New Harvester Sprite
- - Harvesters can now track a random survivor on the station, then switch back to tracking Nar'Sie, via a new action button.
-
- fludd12 updated:
-
- - You can now add grills to a bonfire, letting you cook things on top of them.
-
-
- 15 May 2017
- Dorsidwarf updated:
-
- - Nanotrasen Robotics Supply Division has successfully petitioned to replace the "My First Robot" motors in turret coverings with a standard commercial brand. As such, they will now open faster.
-
- Expletive updated:
-
- - You can now create water bottles and wet floor signs by using plastic sheets.
- - You can create toy swords out of plastic sheets, a piece of cable, and a light bulb.
-
- Joan updated:
-
- - Glowshrooms now have a less saturated glow.
- - The summoned ghosts from Manifest Spirit can no longer break airlocks with their standard blade.
- - Manifest Spirit now does a small amount of damage when initially manifesting a ghost.
-
- McBawbaggings updated:
-
- - SMES units will now accept charge from the power network even if the available load is less than the input rate. Credit to Zaers for the original code.
- - Wizards are now at least 30 years old. Apprentices will be in-between ages 17 to 29.
-
- Penguaro updated:
-
- - The Gravity Generator description now mentions a graviton field as opposed to a gravaton field. What is Gravaty anyway?
- - Centcom Engineering has reviewed the plans for the Box series station and has addressed some concerns related to some APCs not affecting their designated section. APCs for the Detective's Office, Cargobay, and Gateway, now control those rooms. The Bridge Maintenance APC has been removed from future construction as it serves no purpose and thus is an unnecessary construction cost.
- - The pipe from the station to the AI Satellite has been completed.
-
- Profakos updated:
-
- - Centcom has decided to upgrade the Ore Redemption machines with a floppy drive, intended for design disks.
-
- Qbopper updated:
-
- - The supermatter crystal now sends its warning messages to the engineering channel. (if it's in critical condition the message will be sent to the common radio channel as before)
-
- Swindly updated:
-
- - Nitrous oxide now causes anemia.
-
- coiax updated:
-
- - Curator soapstones now successfully leave messages for future shifts.
- - Soapstones can no longer be purchased in cargo.
- - The janitor no longer starts with an empty soapstone.
- - Engraved messages can be left anywhere in the world, but be wary that the terrain of places like lavaland and space can change shift to shift.
- - Goats on the station have developed a taste for glowshrooms, and will eat them if they encounter any.
-
- ma44 updated:
-
- - Seed vault remapped
- - The seed vault random seed spawner can now spawn cherry bombs instead of regular cherry seeds
- - BEES to plant vault
-
- octareenroon91 updated:
-
- - Ambrosia Deus can now mutate into Gaia, and Gaia into Deus.
- - A single branch of Ambrosia Gaia will not immediately make a hydroponics tray self-sufficient.
- - A (total) dose of 20u Earthsblood (from Gaia) will make a hydroponics tray self-sufficient.
-
- uraniummeltdown updated:
-
- - Ambrosia Gaia is back
-
-
- 14 May 2017
- coiax updated:
-
- - Free Golems can purchase Royal Capes of the Liberator at their mining equipment vendor.
-
-
- 13 May 2017
- QualityVan updated:
-
- - Pizza boxes once again look different when open
-
- Tacolizard Forever: It's hip to fuck bees updated:
-
- - Added a honey jar item. It's not implemented yet.
- - Honey is now more robust at healing, but don't eat too much or you'll turn into a fatty landwhale.
-
- TehZombehz updated:
-
- - Butter noodles, butter biscuits, buttered toast, and pigs in a blanket can now be crafted using sticks of butter and other ingredients.
-
- coiax updated:
-
- - Servant golems now follow the "Material Golem (123)" naming scheme.
-
- octareenroon91 updated:
-
- - Hermit ruin now includes a portable seed extractor.
-
-
- 12 May 2017
- Joan updated:
-
- - Manifest Spirit will no longer continue to cost the user health if the summoned ghost is put into critical or gibbed.
- - Ghosts summoned by Manifest Spirit are outfitted with ghostly armor and a ghostly cult blade that does slightly less damage than a normal cult blade.
- - Manifest Spirit now consumes 1 health per second per summoned ghost, from 0.333~.
- - Manifest Spirit can now only summon a maximum of 5 ghosts per rune, and the summoned ghosts cannot use Manifest Spirit to summon more ghosts.
- - Wraiths now refund Phase Shift's cooldown by attacking; 1 second on normal attacks, 5 seconds when putting a target into critical, and a full refund when killing a target.
- - Increased Phase Shift's cooldown from 20 seconds to 25 seconds.
-
- KorPhaeron updated:
-
- - Zombies can now see in the dark. If you steal their eyes you'll be able to see in the dark as well!
-
- MMMiracles (Cerestation) updated:
-
- - Hydroponics has been revamped, adding a few things missing before and adding a bee room in place of the backroom.
- - Fixed some other stuff.
-
- New Antag Alert sounds updated:
-
- - added sounds that alert players to their antag status
- - Blood cult has a new alert sound
- - Clock cult has a new alert sound
- - changeling has a new alert sound
- - Malf/traitor AI has a new alert sound
- - Nuke Ops has a new alert sound
- - Ragin' Mages has a new alert sound
- - Traitor has a new alert sound
-
- Swindly updated:
-
- - Solid plasma now begins burning at the temperature at which it was ignited.
- - Snow walls no longer block explosions, are deconstructed faster, and no longer leave girders when deconstructed.
-
- coiax updated:
-
- - Nanotrasen Cloning Divison's three hundred identical scientists have announced an upgrade to the cloning computer's software. You can now scan brains or dismembered heads and successfully clone from them. Brains seem to remember the DNA of the last body they were attached to.
-
-
- 11 May 2017
- Joan updated:
-
- - You can now buy double eswords from the uplink for 16 telecrystals. They cannot be bought below 25 players.
- - You can no longer use two eswords to construct a double esword.
-
- Joan, Robustin updated:
-
- - Harvesters can no longer break walls, construct walls, convert floors, or emit paralyzing smoke.
- - Harvesters now remove the limbs of humans when attacking, can heal OTHER constructs, have thermal vision, and can move through cult walls.
- - Harvesters can now convert turfs in a small area around them and can create a wall of force.
- - Harvesters are now cultists.
- - When Nar-Sie is summoned, she will convert all living non-construct cultists to harvesters, who will automatically track her.
-
- Kor updated:
-
- - a new mysterious book has been discovered in lavaland chests!
- - weird purple hearts found in lavaland chests have started beating again! what could this mean?
-
- MrStonedOne updated:
-
- - Fixes t-ray mode on engineering goggles not resetting the lighting override properly.
-
- QualityVan updated:
-
- - Machine names will be capitalized when they talk on radio
-
- Robustin updated:
-
- - Dominators now require a significant amount of open (non-walled) space around them in order to operate.
-
- TehZombehz updated:
-
- - Sticks of butter and liquid mayonnaise can now be produced via a new 'mix' function on the grinder. Please eat responsibly.
-
- XDTM updated:
-
- - Plasma Golems now have the correct updated tip.
- - Plasma Golems no longer take damage from fire, and take normal instead of increased burn damage from other sources. They will still explode if on fire and hot enough.
- - Plasma Golems can now self-ignite with an action button.
- - Plasma Golems are now warned when they're close to exploding.
- - Plasma Golems now have a constant chance of exploding after 850K instead of a precise threshold at 900K, making it less predictable.
-
- bandit updated:
-
- - Nanotrasen has enhanced personality matchmaking for its personal AIs. pAI candidates will now see who is requesting a pAI personality.
-
- duncathan updated:
-
- - opening a dangerous canister will only alert admins if it contains meaningful amounts of a dangerous gas. No more being bwoinked because you opened an empty canister that used to have plasma in it.
-
- lordpidey updated:
-
- - Modified chances for returning someone's soul using an employment contract. Now everyone has a chance, not just lawyers and HoP.
- - Particularly brain damaged people can no longer sign infernal contracts properly.
- - Infernal contracts for power no longer give fireball, and instead give robeless 'lightning bolt' spell.
- - Devils can now sell you a friend, for the cost of your soul.
- - The codex gigas should now be easier to use, and less finicky.
- - The codex gigas no longer sintouches readers.
-
- ma44 updated:
-
- - Doubles the amount of points wooden planks sell for (now 50 points)
-
GoonStation 13 Development Team
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 2a85da1c8f8..58dd0dda400 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -12223,3 +12223,73 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
shizcalev:
- tweak: The supermatter reporting system has been updated to report remaining integrity,
as opposed to how unstable the SM currently is.
+2017-07-18:
+ BeeSting12:
+ - tweak: Deltastation's auxiliary storage in arrivals can be accessed by anyone
+ now.
+ - bugfix: Deltastation's cargo bay maintenance can now be accessed by cargo techs.
+ Dannno/Supermichael777/InsaneHyena:
+ - 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.
+ Ergovisavi:
+ - bugfix: Fixed the refresher variant of the anomalous crystal making holodeck items
+ real
+ Fox McCloud:
+ - rscdel: blood and gibs on turfs can no longer infect nearby people
+ - tweak: Tuberculosis bypasses species virus immunity (it's not a virus!)
+ - tweak: Disease and appendicitis events no longer infect clientless mobs
+ - tweak: Disease event will no longer pick virus immune mobs
+ - tweak: Appendicitis event will no longer pick mobs without an appendix
+ - bugfix: Fixed changeling panacea curing non-harmful viruses
+ - bugfix: Fixes IV drips not properly injecting the right amount of blood
+ Joan:
+ - rscdel: Removed the Soul Vessel, Cogscarab, and Anima Fragment Scriptures.
+ - bugfix: The Ark of the Clockwork Justicar will still forcibly take up a 3x3 area
+ even if it still needs components to activate.
+ MrStonedOne & Fox-McCloud:
+ - tweak: Made pathfinding much quicker
+ NewSta:
+ - bugfix: Fixes the maid apron being invisible when in-hand or attached to the maid
+ outfit.
+ XDTM:
+ - 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.
+ Xhuis:
+ - tweak: The tachyon-doppler array's rotation now has messages, sprites, and examine
+ text.
+ - bugfix: Time stop is now fixed, finally!
+ - soundadd: Time stop's sound now plays in reverse when the effect ends.
+ - bugfix: Missiles can no longer ricochet off of shuttle walls, etc.
+ - bugfix: Winter coats now hold all flashlights properly, instead of seclites.
+ Xhuis & Cyberboss:
+ - rscadd: New hivebot invasion event
+ kevinz000:
+ - rscadd: Personal Cabinets now have piano synthesizers for handheld piano playing.
+ - experiment: Thank @nicbn for the sprites!
+ ninjanomnom:
+ - experiment: Thank you for updating your ShuttlSoft product! Your last update was
+ -ERROR- years ago. A full changelog can be found at CYG10408.SHSO.b9 along with
+ the EULA. This update lays a foundation for new things to come and a sample
+ in the form of new and improved docking procedures.
+ shizcalev:
+ - bugfix: Cerestation's emergency shuttle autopilot will no longer fly you in reverse
+ back to Centcom!
diff --git a/html/changelogs/AutoChangeLog-pr-28514.yml b/html/changelogs/AutoChangeLog-pr-28514.yml
deleted file mode 100644
index cb3fe65c3cf..00000000000
--- a/html/changelogs/AutoChangeLog-pr-28514.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Xhuis & Cyberboss"
-delete-after: True
-changes:
- - rscadd: "New hivebot invasion event"
diff --git a/html/changelogs/AutoChangeLog-pr-28556.yml b/html/changelogs/AutoChangeLog-pr-28556.yml
deleted file mode 100644
index ad49c4159c0..00000000000
--- a/html/changelogs/AutoChangeLog-pr-28556.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-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-29155.yml b/html/changelogs/AutoChangeLog-pr-29155.yml
deleted file mode 100644
index 8f05a46a390..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29155.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "MrStonedOne & Fox-McCloud"
-delete-after: True
-changes:
- - tweak: "Made pathfinding much quicker"
diff --git a/html/changelogs/AutoChangeLog-pr-29165.yml b/html/changelogs/AutoChangeLog-pr-29165.yml
deleted file mode 100644
index ca4515abc47..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29165.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "shizcalev"
-delete-after: True
-changes:
- - bugfix: "Cerestation's emergency shuttle autopilot will no longer fly you in reverse back to Centcom!"
diff --git a/html/changelogs/AutoChangeLog-pr-29174.yml b/html/changelogs/AutoChangeLog-pr-29174.yml
deleted file mode 100644
index 0a11b6bbaa1..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29174.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Xhuis"
-delete-after: True
-changes:
- - tweak: "The tachyon-doppler array's rotation now has messages, sprites, and examine text."
diff --git a/html/changelogs/AutoChangeLog-pr-29197.yml b/html/changelogs/AutoChangeLog-pr-29197.yml
deleted file mode 100644
index 4065c3520d3..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29197.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "kevinz000"
-delete-after: True
-changes:
- - rscadd: "Personal Cabinets now have piano synthesizers for handheld piano playing."
- - experiment: "Thank @nicbn for the sprites!"
diff --git a/html/changelogs/AutoChangeLog-pr-29212.yml b/html/changelogs/AutoChangeLog-pr-29212.yml
deleted file mode 100644
index 01d111e6b4d..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29212.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "BeeSting12"
-delete-after: True
-changes:
- - tweak: "Deltastation's auxiliary storage in arrivals can be accessed by anyone now."
- - bugfix: "Deltastation's cargo bay maintenance can now be accessed by cargo techs."
diff --git a/html/changelogs/AutoChangeLog-pr-29228.yml b/html/changelogs/AutoChangeLog-pr-29228.yml
deleted file mode 100644
index b9b6702370e..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29228.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Fox McCloud"
-delete-after: True
-changes:
- - bugfix: "Fixes IV drips not properly injecting the right amount of blood"
diff --git a/html/changelogs/AutoChangeLog-pr-29244.yml b/html/changelogs/AutoChangeLog-pr-29244.yml
deleted file mode 100644
index 811519bc50f..00000000000
--- a/html/changelogs/AutoChangeLog-pr-29244.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "NewSta"
-delete-after: True
-changes:
- - bugfix: "Fixes the maid apron being invisible when in-hand or attached to the maid outfit."
diff --git a/html/changelogs/AutoChangeLog-pr-29280.yml b/html/changelogs/AutoChangeLog-pr-29280.yml
new file mode 100644
index 00000000000..0e2c4e9e655
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-29280.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-29290.yml b/html/changelogs/AutoChangeLog-pr-29290.yml
new file mode 100644
index 00000000000..f1e7af58faa
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-29290.yml
@@ -0,0 +1,4 @@
+author: "Joan"
+delete-after: True
+changes:
+ - balance: "Unwrenching clockwork structures no longer damages them."
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index a9651492cd0..6742ca68c77 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/icons/mob/augmentation/augments.dmi b/icons/mob/augmentation/augments.dmi
new file mode 100644
index 00000000000..a532348d6d1
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 00000000000..8aeaaf04e08
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 00000000000..b79c54e9c89
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 00000000000..8f57f77c4b8
Binary files /dev/null and b/icons/mob/augmentation/augments_security.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 7124c35105e..00000000000
Binary files a/icons/mob/augments.dmi and /dev/null differ
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index 7e12b8aeee1..afc3c4f815e 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ
diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi
index 1f0df7e7280..1f1e7e5a309 100644
Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ
diff --git a/sound/instruments/accordion/Ab2.mid b/sound/instruments/accordion/Ab2.mid
new file mode 100644
index 00000000000..0be99493a6c
Binary files /dev/null and b/sound/instruments/accordion/Ab2.mid differ
diff --git a/sound/instruments/accordion/Ab3.mid b/sound/instruments/accordion/Ab3.mid
new file mode 100644
index 00000000000..df3fbb658b2
Binary files /dev/null and b/sound/instruments/accordion/Ab3.mid differ
diff --git a/sound/instruments/accordion/Ab4.mid b/sound/instruments/accordion/Ab4.mid
new file mode 100644
index 00000000000..81cc7dd887c
Binary files /dev/null and b/sound/instruments/accordion/Ab4.mid differ
diff --git a/sound/instruments/accordion/Ab5.mid b/sound/instruments/accordion/Ab5.mid
new file mode 100644
index 00000000000..8a6f9b63a4c
Binary files /dev/null and b/sound/instruments/accordion/Ab5.mid differ
diff --git a/sound/instruments/accordion/Ab6.mid b/sound/instruments/accordion/Ab6.mid
new file mode 100644
index 00000000000..c636071299e
Binary files /dev/null and b/sound/instruments/accordion/Ab6.mid differ
diff --git a/sound/instruments/accordion/An2.mid b/sound/instruments/accordion/An2.mid
new file mode 100644
index 00000000000..fcae8a3be76
Binary files /dev/null and b/sound/instruments/accordion/An2.mid differ
diff --git a/sound/instruments/accordion/An3.mid b/sound/instruments/accordion/An3.mid
new file mode 100644
index 00000000000..0eaea1a1fd7
Binary files /dev/null and b/sound/instruments/accordion/An3.mid differ
diff --git a/sound/instruments/accordion/An4.mid b/sound/instruments/accordion/An4.mid
new file mode 100644
index 00000000000..2ae28df7a3a
Binary files /dev/null and b/sound/instruments/accordion/An4.mid differ
diff --git a/sound/instruments/accordion/An5.mid b/sound/instruments/accordion/An5.mid
new file mode 100644
index 00000000000..c955b7f2d93
Binary files /dev/null and b/sound/instruments/accordion/An5.mid differ
diff --git a/sound/instruments/accordion/An6.mid b/sound/instruments/accordion/An6.mid
new file mode 100644
index 00000000000..76c44f3bb37
Binary files /dev/null and b/sound/instruments/accordion/An6.mid differ
diff --git a/sound/instruments/accordion/Bb2.mid b/sound/instruments/accordion/Bb2.mid
new file mode 100644
index 00000000000..8af7ec2a6c5
Binary files /dev/null and b/sound/instruments/accordion/Bb2.mid differ
diff --git a/sound/instruments/accordion/Bb3.mid b/sound/instruments/accordion/Bb3.mid
new file mode 100644
index 00000000000..2fdaae5d9de
Binary files /dev/null and b/sound/instruments/accordion/Bb3.mid differ
diff --git a/sound/instruments/accordion/Bb4.mid b/sound/instruments/accordion/Bb4.mid
new file mode 100644
index 00000000000..b360ccbc9b7
Binary files /dev/null and b/sound/instruments/accordion/Bb4.mid differ
diff --git a/sound/instruments/accordion/Bb5.mid b/sound/instruments/accordion/Bb5.mid
new file mode 100644
index 00000000000..d1ed0340d5f
Binary files /dev/null and b/sound/instruments/accordion/Bb5.mid differ
diff --git a/sound/instruments/accordion/Bb6.mid b/sound/instruments/accordion/Bb6.mid
new file mode 100644
index 00000000000..45973b3eef2
Binary files /dev/null and b/sound/instruments/accordion/Bb6.mid differ
diff --git a/sound/instruments/accordion/Bn2.mid b/sound/instruments/accordion/Bn2.mid
new file mode 100644
index 00000000000..b2dec87c97a
Binary files /dev/null and b/sound/instruments/accordion/Bn2.mid differ
diff --git a/sound/instruments/accordion/Bn3.mid b/sound/instruments/accordion/Bn3.mid
new file mode 100644
index 00000000000..19aa78aded9
Binary files /dev/null and b/sound/instruments/accordion/Bn3.mid differ
diff --git a/sound/instruments/accordion/Bn4.mid b/sound/instruments/accordion/Bn4.mid
new file mode 100644
index 00000000000..1caba6169c5
Binary files /dev/null and b/sound/instruments/accordion/Bn4.mid differ
diff --git a/sound/instruments/accordion/Bn5.mid b/sound/instruments/accordion/Bn5.mid
new file mode 100644
index 00000000000..4a41cbbd746
Binary files /dev/null and b/sound/instruments/accordion/Bn5.mid differ
diff --git a/sound/instruments/accordion/Bn6.mid b/sound/instruments/accordion/Bn6.mid
new file mode 100644
index 00000000000..7d267c4b5ab
Binary files /dev/null and b/sound/instruments/accordion/Bn6.mid differ
diff --git a/sound/instruments/accordion/Cn2.mid b/sound/instruments/accordion/Cn2.mid
new file mode 100644
index 00000000000..dfc8a56b9b0
Binary files /dev/null and b/sound/instruments/accordion/Cn2.mid differ
diff --git a/sound/instruments/accordion/Cn3.mid b/sound/instruments/accordion/Cn3.mid
new file mode 100644
index 00000000000..494b4114e2f
Binary files /dev/null and b/sound/instruments/accordion/Cn3.mid differ
diff --git a/sound/instruments/accordion/Cn4.mid b/sound/instruments/accordion/Cn4.mid
new file mode 100644
index 00000000000..2ac47a442dc
Binary files /dev/null and b/sound/instruments/accordion/Cn4.mid differ
diff --git a/sound/instruments/accordion/Cn5.mid b/sound/instruments/accordion/Cn5.mid
new file mode 100644
index 00000000000..636502e6295
Binary files /dev/null and b/sound/instruments/accordion/Cn5.mid differ
diff --git a/sound/instruments/accordion/Cn6.mid b/sound/instruments/accordion/Cn6.mid
new file mode 100644
index 00000000000..57a674e7beb
Binary files /dev/null and b/sound/instruments/accordion/Cn6.mid differ
diff --git a/sound/instruments/accordion/Db2.mid b/sound/instruments/accordion/Db2.mid
new file mode 100644
index 00000000000..602e4523eea
Binary files /dev/null and b/sound/instruments/accordion/Db2.mid differ
diff --git a/sound/instruments/accordion/Db3.mid b/sound/instruments/accordion/Db3.mid
new file mode 100644
index 00000000000..4c32f61c8d0
Binary files /dev/null and b/sound/instruments/accordion/Db3.mid differ
diff --git a/sound/instruments/accordion/Db4.mid b/sound/instruments/accordion/Db4.mid
new file mode 100644
index 00000000000..99439056170
Binary files /dev/null and b/sound/instruments/accordion/Db4.mid differ
diff --git a/sound/instruments/accordion/Db5.mid b/sound/instruments/accordion/Db5.mid
new file mode 100644
index 00000000000..b4db898b292
Binary files /dev/null and b/sound/instruments/accordion/Db5.mid differ
diff --git a/sound/instruments/accordion/Db6.mid b/sound/instruments/accordion/Db6.mid
new file mode 100644
index 00000000000..b0cb648759c
Binary files /dev/null and b/sound/instruments/accordion/Db6.mid differ
diff --git a/sound/instruments/accordion/Dn2.mid b/sound/instruments/accordion/Dn2.mid
new file mode 100644
index 00000000000..a6c30398b12
Binary files /dev/null and b/sound/instruments/accordion/Dn2.mid differ
diff --git a/sound/instruments/accordion/Dn3.mid b/sound/instruments/accordion/Dn3.mid
new file mode 100644
index 00000000000..b64354f8109
Binary files /dev/null and b/sound/instruments/accordion/Dn3.mid differ
diff --git a/sound/instruments/accordion/Dn4.mid b/sound/instruments/accordion/Dn4.mid
new file mode 100644
index 00000000000..670b2ec4d35
Binary files /dev/null and b/sound/instruments/accordion/Dn4.mid differ
diff --git a/sound/instruments/accordion/Dn5.mid b/sound/instruments/accordion/Dn5.mid
new file mode 100644
index 00000000000..aea9116fb80
Binary files /dev/null and b/sound/instruments/accordion/Dn5.mid differ
diff --git a/sound/instruments/accordion/Dn6.mid b/sound/instruments/accordion/Dn6.mid
new file mode 100644
index 00000000000..84c9e9359ca
Binary files /dev/null and b/sound/instruments/accordion/Dn6.mid differ
diff --git a/sound/instruments/accordion/Eb2.mid b/sound/instruments/accordion/Eb2.mid
new file mode 100644
index 00000000000..9d274b6baf4
Binary files /dev/null and b/sound/instruments/accordion/Eb2.mid differ
diff --git a/sound/instruments/accordion/Eb3.mid b/sound/instruments/accordion/Eb3.mid
new file mode 100644
index 00000000000..9a32aee1238
Binary files /dev/null and b/sound/instruments/accordion/Eb3.mid differ
diff --git a/sound/instruments/accordion/Eb4.mid b/sound/instruments/accordion/Eb4.mid
new file mode 100644
index 00000000000..257ed5e9048
Binary files /dev/null and b/sound/instruments/accordion/Eb4.mid differ
diff --git a/sound/instruments/accordion/Eb5.mid b/sound/instruments/accordion/Eb5.mid
new file mode 100644
index 00000000000..de3edcd18cc
Binary files /dev/null and b/sound/instruments/accordion/Eb5.mid differ
diff --git a/sound/instruments/accordion/Eb6.mid b/sound/instruments/accordion/Eb6.mid
new file mode 100644
index 00000000000..a43a976ffc8
Binary files /dev/null and b/sound/instruments/accordion/Eb6.mid differ
diff --git a/sound/instruments/accordion/En2.mid b/sound/instruments/accordion/En2.mid
new file mode 100644
index 00000000000..1ebe0e081d8
Binary files /dev/null and b/sound/instruments/accordion/En2.mid differ
diff --git a/sound/instruments/accordion/En3.mid b/sound/instruments/accordion/En3.mid
new file mode 100644
index 00000000000..b24ef90118f
Binary files /dev/null and b/sound/instruments/accordion/En3.mid differ
diff --git a/sound/instruments/accordion/En4.mid b/sound/instruments/accordion/En4.mid
new file mode 100644
index 00000000000..df0b16b1968
Binary files /dev/null and b/sound/instruments/accordion/En4.mid differ
diff --git a/sound/instruments/accordion/En5.mid b/sound/instruments/accordion/En5.mid
new file mode 100644
index 00000000000..760c5e1f514
Binary files /dev/null and b/sound/instruments/accordion/En5.mid differ
diff --git a/sound/instruments/accordion/En6.mid b/sound/instruments/accordion/En6.mid
new file mode 100644
index 00000000000..92639712044
Binary files /dev/null and b/sound/instruments/accordion/En6.mid differ
diff --git a/sound/instruments/accordion/Fn2.mid b/sound/instruments/accordion/Fn2.mid
new file mode 100644
index 00000000000..31eb932cb7d
Binary files /dev/null and b/sound/instruments/accordion/Fn2.mid differ
diff --git a/sound/instruments/accordion/Fn3.mid b/sound/instruments/accordion/Fn3.mid
new file mode 100644
index 00000000000..c1c2a4a197d
Binary files /dev/null and b/sound/instruments/accordion/Fn3.mid differ
diff --git a/sound/instruments/accordion/Fn4.mid b/sound/instruments/accordion/Fn4.mid
new file mode 100644
index 00000000000..701c5ea46c5
Binary files /dev/null and b/sound/instruments/accordion/Fn4.mid differ
diff --git a/sound/instruments/accordion/Fn5.mid b/sound/instruments/accordion/Fn5.mid
new file mode 100644
index 00000000000..49d44d3de84
Binary files /dev/null and b/sound/instruments/accordion/Fn5.mid differ
diff --git a/sound/instruments/accordion/Fn6.mid b/sound/instruments/accordion/Fn6.mid
new file mode 100644
index 00000000000..acb192950bd
Binary files /dev/null and b/sound/instruments/accordion/Fn6.mid differ
diff --git a/sound/instruments/accordion/Gb2.mid b/sound/instruments/accordion/Gb2.mid
new file mode 100644
index 00000000000..4625e867af0
Binary files /dev/null and b/sound/instruments/accordion/Gb2.mid differ
diff --git a/sound/instruments/accordion/Gb3.mid b/sound/instruments/accordion/Gb3.mid
new file mode 100644
index 00000000000..3ce6d7ba923
Binary files /dev/null and b/sound/instruments/accordion/Gb3.mid differ
diff --git a/sound/instruments/accordion/Gb4.mid b/sound/instruments/accordion/Gb4.mid
new file mode 100644
index 00000000000..1106ebf9039
Binary files /dev/null and b/sound/instruments/accordion/Gb4.mid differ
diff --git a/sound/instruments/accordion/Gb5.mid b/sound/instruments/accordion/Gb5.mid
new file mode 100644
index 00000000000..9ff54c7af0f
Binary files /dev/null and b/sound/instruments/accordion/Gb5.mid differ
diff --git a/sound/instruments/accordion/Gb6.mid b/sound/instruments/accordion/Gb6.mid
new file mode 100644
index 00000000000..05b05b9870f
Binary files /dev/null and b/sound/instruments/accordion/Gb6.mid differ
diff --git a/sound/instruments/accordion/Gn2.mid b/sound/instruments/accordion/Gn2.mid
new file mode 100644
index 00000000000..def96a74d17
Binary files /dev/null and b/sound/instruments/accordion/Gn2.mid differ
diff --git a/sound/instruments/accordion/Gn3.mid b/sound/instruments/accordion/Gn3.mid
new file mode 100644
index 00000000000..4c88ab05076
Binary files /dev/null and b/sound/instruments/accordion/Gn3.mid differ
diff --git a/sound/instruments/accordion/Gn4.mid b/sound/instruments/accordion/Gn4.mid
new file mode 100644
index 00000000000..b76b5a22c63
Binary files /dev/null and b/sound/instruments/accordion/Gn4.mid differ
diff --git a/sound/instruments/accordion/Gn5.mid b/sound/instruments/accordion/Gn5.mid
new file mode 100644
index 00000000000..0fb395db34c
Binary files /dev/null and b/sound/instruments/accordion/Gn5.mid differ
diff --git a/sound/instruments/accordion/Gn6.mid b/sound/instruments/accordion/Gn6.mid
new file mode 100644
index 00000000000..b6117319ad5
Binary files /dev/null and b/sound/instruments/accordion/Gn6.mid differ
diff --git a/sound/instruments/bikehorn/Ab2.ogg b/sound/instruments/bikehorn/Ab2.ogg
new file mode 100644
index 00000000000..cc33da35f45
Binary files /dev/null and b/sound/instruments/bikehorn/Ab2.ogg differ
diff --git a/sound/instruments/bikehorn/Ab3.ogg b/sound/instruments/bikehorn/Ab3.ogg
new file mode 100644
index 00000000000..b046ed2e74a
Binary files /dev/null and b/sound/instruments/bikehorn/Ab3.ogg differ
diff --git a/sound/instruments/bikehorn/Ab4.ogg b/sound/instruments/bikehorn/Ab4.ogg
new file mode 100644
index 00000000000..ba50324d626
Binary files /dev/null and b/sound/instruments/bikehorn/Ab4.ogg differ
diff --git a/sound/instruments/bikehorn/An2.ogg b/sound/instruments/bikehorn/An2.ogg
new file mode 100644
index 00000000000..ddfbe21910b
Binary files /dev/null and b/sound/instruments/bikehorn/An2.ogg differ
diff --git a/sound/instruments/bikehorn/An3.ogg b/sound/instruments/bikehorn/An3.ogg
new file mode 100644
index 00000000000..c69e59a8da0
Binary files /dev/null and b/sound/instruments/bikehorn/An3.ogg differ
diff --git a/sound/instruments/bikehorn/An4.ogg b/sound/instruments/bikehorn/An4.ogg
new file mode 100644
index 00000000000..5b42fe4ae8f
Binary files /dev/null and b/sound/instruments/bikehorn/An4.ogg differ
diff --git a/sound/instruments/bikehorn/Bb2.ogg b/sound/instruments/bikehorn/Bb2.ogg
new file mode 100644
index 00000000000..4a909bdfc53
Binary files /dev/null and b/sound/instruments/bikehorn/Bb2.ogg differ
diff --git a/sound/instruments/bikehorn/Bb3.ogg b/sound/instruments/bikehorn/Bb3.ogg
new file mode 100644
index 00000000000..2055984a86c
Binary files /dev/null and b/sound/instruments/bikehorn/Bb3.ogg differ
diff --git a/sound/instruments/bikehorn/Bb4.ogg b/sound/instruments/bikehorn/Bb4.ogg
new file mode 100644
index 00000000000..73003e040c1
Binary files /dev/null and b/sound/instruments/bikehorn/Bb4.ogg differ
diff --git a/sound/instruments/bikehorn/Bn2.ogg b/sound/instruments/bikehorn/Bn2.ogg
new file mode 100644
index 00000000000..17532a6a7c9
Binary files /dev/null and b/sound/instruments/bikehorn/Bn2.ogg differ
diff --git a/sound/instruments/bikehorn/Bn3.ogg b/sound/instruments/bikehorn/Bn3.ogg
new file mode 100644
index 00000000000..ff36b917093
Binary files /dev/null and b/sound/instruments/bikehorn/Bn3.ogg differ
diff --git a/sound/instruments/bikehorn/Bn4.ogg b/sound/instruments/bikehorn/Bn4.ogg
new file mode 100644
index 00000000000..6750a931552
Binary files /dev/null and b/sound/instruments/bikehorn/Bn4.ogg differ
diff --git a/sound/instruments/bikehorn/Cn3.ogg b/sound/instruments/bikehorn/Cn3.ogg
new file mode 100644
index 00000000000..f75ddaa83f2
Binary files /dev/null and b/sound/instruments/bikehorn/Cn3.ogg differ
diff --git a/sound/instruments/bikehorn/Cn4.ogg b/sound/instruments/bikehorn/Cn4.ogg
new file mode 100644
index 00000000000..e5889f04bce
Binary files /dev/null and b/sound/instruments/bikehorn/Cn4.ogg differ
diff --git a/sound/instruments/bikehorn/Cn5.ogg b/sound/instruments/bikehorn/Cn5.ogg
new file mode 100644
index 00000000000..328a6edf10e
Binary files /dev/null and b/sound/instruments/bikehorn/Cn5.ogg differ
diff --git a/sound/instruments/bikehorn/Db3.ogg b/sound/instruments/bikehorn/Db3.ogg
new file mode 100644
index 00000000000..3c3e8d10305
Binary files /dev/null and b/sound/instruments/bikehorn/Db3.ogg differ
diff --git a/sound/instruments/bikehorn/Db4.ogg b/sound/instruments/bikehorn/Db4.ogg
new file mode 100644
index 00000000000..35dd47df475
Binary files /dev/null and b/sound/instruments/bikehorn/Db4.ogg differ
diff --git a/sound/instruments/bikehorn/Db5.ogg b/sound/instruments/bikehorn/Db5.ogg
new file mode 100644
index 00000000000..54c10b54c54
Binary files /dev/null and b/sound/instruments/bikehorn/Db5.ogg differ
diff --git a/sound/instruments/bikehorn/Dn3.ogg b/sound/instruments/bikehorn/Dn3.ogg
new file mode 100644
index 00000000000..33a863c8426
Binary files /dev/null and b/sound/instruments/bikehorn/Dn3.ogg differ
diff --git a/sound/instruments/bikehorn/Dn4.ogg b/sound/instruments/bikehorn/Dn4.ogg
new file mode 100644
index 00000000000..bd4c353e625
Binary files /dev/null and b/sound/instruments/bikehorn/Dn4.ogg differ
diff --git a/sound/instruments/bikehorn/Dn5.ogg b/sound/instruments/bikehorn/Dn5.ogg
new file mode 100644
index 00000000000..11b355b11cf
Binary files /dev/null and b/sound/instruments/bikehorn/Dn5.ogg differ
diff --git a/sound/instruments/bikehorn/Eb3.ogg b/sound/instruments/bikehorn/Eb3.ogg
new file mode 100644
index 00000000000..367cc5456dc
Binary files /dev/null and b/sound/instruments/bikehorn/Eb3.ogg differ
diff --git a/sound/instruments/bikehorn/Eb4.ogg b/sound/instruments/bikehorn/Eb4.ogg
new file mode 100644
index 00000000000..d7344da37c9
Binary files /dev/null and b/sound/instruments/bikehorn/Eb4.ogg differ
diff --git a/sound/instruments/bikehorn/Eb5.ogg b/sound/instruments/bikehorn/Eb5.ogg
new file mode 100644
index 00000000000..c94b994d199
Binary files /dev/null and b/sound/instruments/bikehorn/Eb5.ogg differ
diff --git a/sound/instruments/bikehorn/En2.ogg b/sound/instruments/bikehorn/En2.ogg
new file mode 100644
index 00000000000..6c2e4de57dd
Binary files /dev/null and b/sound/instruments/bikehorn/En2.ogg differ
diff --git a/sound/instruments/bikehorn/En3.ogg b/sound/instruments/bikehorn/En3.ogg
new file mode 100644
index 00000000000..37b96d48518
Binary files /dev/null and b/sound/instruments/bikehorn/En3.ogg differ
diff --git a/sound/instruments/bikehorn/En4.ogg b/sound/instruments/bikehorn/En4.ogg
new file mode 100644
index 00000000000..2a23deabf57
Binary files /dev/null and b/sound/instruments/bikehorn/En4.ogg differ
diff --git a/sound/instruments/bikehorn/Fn2.ogg b/sound/instruments/bikehorn/Fn2.ogg
new file mode 100644
index 00000000000..3ddbcb90339
Binary files /dev/null and b/sound/instruments/bikehorn/Fn2.ogg differ
diff --git a/sound/instruments/bikehorn/Fn3.ogg b/sound/instruments/bikehorn/Fn3.ogg
new file mode 100644
index 00000000000..47f8625ea9b
Binary files /dev/null and b/sound/instruments/bikehorn/Fn3.ogg differ
diff --git a/sound/instruments/bikehorn/Fn4.ogg b/sound/instruments/bikehorn/Fn4.ogg
new file mode 100644
index 00000000000..ee330535668
Binary files /dev/null and b/sound/instruments/bikehorn/Fn4.ogg differ
diff --git a/sound/instruments/bikehorn/Gb2.ogg b/sound/instruments/bikehorn/Gb2.ogg
new file mode 100644
index 00000000000..e78f9430104
Binary files /dev/null and b/sound/instruments/bikehorn/Gb2.ogg differ
diff --git a/sound/instruments/bikehorn/Gb3.ogg b/sound/instruments/bikehorn/Gb3.ogg
new file mode 100644
index 00000000000..be59509ee92
Binary files /dev/null and b/sound/instruments/bikehorn/Gb3.ogg differ
diff --git a/sound/instruments/bikehorn/Gb4.ogg b/sound/instruments/bikehorn/Gb4.ogg
new file mode 100644
index 00000000000..fac913aaff4
Binary files /dev/null and b/sound/instruments/bikehorn/Gb4.ogg differ
diff --git a/sound/instruments/bikehorn/Gn2.ogg b/sound/instruments/bikehorn/Gn2.ogg
new file mode 100644
index 00000000000..80997735440
Binary files /dev/null and b/sound/instruments/bikehorn/Gn2.ogg differ
diff --git a/sound/instruments/bikehorn/Gn3.ogg b/sound/instruments/bikehorn/Gn3.ogg
new file mode 100644
index 00000000000..1966dfd0e86
Binary files /dev/null and b/sound/instruments/bikehorn/Gn3.ogg differ
diff --git a/sound/instruments/bikehorn/Gn4.ogg b/sound/instruments/bikehorn/Gn4.ogg
new file mode 100644
index 00000000000..86f81bc1cbb
Binary files /dev/null and b/sound/instruments/bikehorn/Gn4.ogg differ
diff --git a/sound/instruments/eguitar/ab4.ogg b/sound/instruments/eguitar/ab4.ogg
new file mode 100644
index 00000000000..de291593ee0
Binary files /dev/null and b/sound/instruments/eguitar/ab4.ogg differ
diff --git a/sound/instruments/eguitar/ab5.ogg b/sound/instruments/eguitar/ab5.ogg
new file mode 100644
index 00000000000..8103ab40234
Binary files /dev/null and b/sound/instruments/eguitar/ab5.ogg differ
diff --git a/sound/instruments/eguitar/ab6.ogg b/sound/instruments/eguitar/ab6.ogg
new file mode 100644
index 00000000000..220e1571d4c
Binary files /dev/null and b/sound/instruments/eguitar/ab6.ogg differ
diff --git a/sound/instruments/eguitar/an4.ogg b/sound/instruments/eguitar/an4.ogg
new file mode 100644
index 00000000000..250b1b435a0
Binary files /dev/null and b/sound/instruments/eguitar/an4.ogg differ
diff --git a/sound/instruments/eguitar/an5.ogg b/sound/instruments/eguitar/an5.ogg
new file mode 100644
index 00000000000..54d198d3954
Binary files /dev/null and b/sound/instruments/eguitar/an5.ogg differ
diff --git a/sound/instruments/eguitar/an6.ogg b/sound/instruments/eguitar/an6.ogg
new file mode 100644
index 00000000000..aacaa90f036
Binary files /dev/null and b/sound/instruments/eguitar/an6.ogg differ
diff --git a/sound/instruments/eguitar/bb4.ogg b/sound/instruments/eguitar/bb4.ogg
new file mode 100644
index 00000000000..c275fdc0b75
Binary files /dev/null and b/sound/instruments/eguitar/bb4.ogg differ
diff --git a/sound/instruments/eguitar/bb5.ogg b/sound/instruments/eguitar/bb5.ogg
new file mode 100644
index 00000000000..3d32c5280d4
Binary files /dev/null and b/sound/instruments/eguitar/bb5.ogg differ
diff --git a/sound/instruments/eguitar/bb6.ogg b/sound/instruments/eguitar/bb6.ogg
new file mode 100644
index 00000000000..c89618326ae
Binary files /dev/null and b/sound/instruments/eguitar/bb6.ogg differ
diff --git a/sound/instruments/eguitar/bn4.ogg b/sound/instruments/eguitar/bn4.ogg
new file mode 100644
index 00000000000..458ea14336a
Binary files /dev/null and b/sound/instruments/eguitar/bn4.ogg differ
diff --git a/sound/instruments/eguitar/bn5.ogg b/sound/instruments/eguitar/bn5.ogg
new file mode 100644
index 00000000000..4bd02b83c3b
Binary files /dev/null and b/sound/instruments/eguitar/bn5.ogg differ
diff --git a/sound/instruments/eguitar/bn6.ogg b/sound/instruments/eguitar/bn6.ogg
new file mode 100644
index 00000000000..c1d1cf5f4b0
Binary files /dev/null and b/sound/instruments/eguitar/bn6.ogg differ
diff --git a/sound/instruments/eguitar/cn4.ogg b/sound/instruments/eguitar/cn4.ogg
new file mode 100644
index 00000000000..43f43080632
Binary files /dev/null and b/sound/instruments/eguitar/cn4.ogg differ
diff --git a/sound/instruments/eguitar/cn5.ogg b/sound/instruments/eguitar/cn5.ogg
new file mode 100644
index 00000000000..4a97fdcfad1
Binary files /dev/null and b/sound/instruments/eguitar/cn5.ogg differ
diff --git a/sound/instruments/eguitar/cn6.ogg b/sound/instruments/eguitar/cn6.ogg
new file mode 100644
index 00000000000..c67fcae46c4
Binary files /dev/null and b/sound/instruments/eguitar/cn6.ogg differ
diff --git a/sound/instruments/eguitar/cn7.ogg b/sound/instruments/eguitar/cn7.ogg
new file mode 100644
index 00000000000..f193f5b0627
Binary files /dev/null and b/sound/instruments/eguitar/cn7.ogg differ
diff --git a/sound/instruments/eguitar/db4.ogg b/sound/instruments/eguitar/db4.ogg
new file mode 100644
index 00000000000..ee975d555a2
Binary files /dev/null and b/sound/instruments/eguitar/db4.ogg differ
diff --git a/sound/instruments/eguitar/db5.ogg b/sound/instruments/eguitar/db5.ogg
new file mode 100644
index 00000000000..6904962cd77
Binary files /dev/null and b/sound/instruments/eguitar/db5.ogg differ
diff --git a/sound/instruments/eguitar/db6.ogg b/sound/instruments/eguitar/db6.ogg
new file mode 100644
index 00000000000..421b0590492
Binary files /dev/null and b/sound/instruments/eguitar/db6.ogg differ
diff --git a/sound/instruments/eguitar/dn4.ogg b/sound/instruments/eguitar/dn4.ogg
new file mode 100644
index 00000000000..b6287800fb7
Binary files /dev/null and b/sound/instruments/eguitar/dn4.ogg differ
diff --git a/sound/instruments/eguitar/dn5.ogg b/sound/instruments/eguitar/dn5.ogg
new file mode 100644
index 00000000000..92f723cff01
Binary files /dev/null and b/sound/instruments/eguitar/dn5.ogg differ
diff --git a/sound/instruments/eguitar/dn6.ogg b/sound/instruments/eguitar/dn6.ogg
new file mode 100644
index 00000000000..53c2de97d23
Binary files /dev/null and b/sound/instruments/eguitar/dn6.ogg differ
diff --git a/sound/instruments/eguitar/eb4.ogg b/sound/instruments/eguitar/eb4.ogg
new file mode 100644
index 00000000000..0349b819b33
Binary files /dev/null and b/sound/instruments/eguitar/eb4.ogg differ
diff --git a/sound/instruments/eguitar/eb5.ogg b/sound/instruments/eguitar/eb5.ogg
new file mode 100644
index 00000000000..40d3c89a90b
Binary files /dev/null and b/sound/instruments/eguitar/eb5.ogg differ
diff --git a/sound/instruments/eguitar/eb6.ogg b/sound/instruments/eguitar/eb6.ogg
new file mode 100644
index 00000000000..dd1fcbc58df
Binary files /dev/null and b/sound/instruments/eguitar/eb6.ogg differ
diff --git a/sound/instruments/eguitar/en4.ogg b/sound/instruments/eguitar/en4.ogg
new file mode 100644
index 00000000000..2ceeafe4d7b
Binary files /dev/null and b/sound/instruments/eguitar/en4.ogg differ
diff --git a/sound/instruments/eguitar/en5.ogg b/sound/instruments/eguitar/en5.ogg
new file mode 100644
index 00000000000..2be8538db7f
Binary files /dev/null and b/sound/instruments/eguitar/en5.ogg differ
diff --git a/sound/instruments/eguitar/en6.ogg b/sound/instruments/eguitar/en6.ogg
new file mode 100644
index 00000000000..5b0a135a789
Binary files /dev/null and b/sound/instruments/eguitar/en6.ogg differ
diff --git a/sound/instruments/eguitar/fn4.ogg b/sound/instruments/eguitar/fn4.ogg
new file mode 100644
index 00000000000..b23a19278b0
Binary files /dev/null and b/sound/instruments/eguitar/fn4.ogg differ
diff --git a/sound/instruments/eguitar/fn5.ogg b/sound/instruments/eguitar/fn5.ogg
new file mode 100644
index 00000000000..4caadbee978
Binary files /dev/null and b/sound/instruments/eguitar/fn5.ogg differ
diff --git a/sound/instruments/eguitar/fn6.ogg b/sound/instruments/eguitar/fn6.ogg
new file mode 100644
index 00000000000..5177ad4dcd9
Binary files /dev/null and b/sound/instruments/eguitar/fn6.ogg differ
diff --git a/sound/instruments/eguitar/gb4.ogg b/sound/instruments/eguitar/gb4.ogg
new file mode 100644
index 00000000000..aba86ff66c1
Binary files /dev/null and b/sound/instruments/eguitar/gb4.ogg differ
diff --git a/sound/instruments/eguitar/gb5.ogg b/sound/instruments/eguitar/gb5.ogg
new file mode 100644
index 00000000000..758a83f792a
Binary files /dev/null and b/sound/instruments/eguitar/gb5.ogg differ
diff --git a/sound/instruments/eguitar/gb6.ogg b/sound/instruments/eguitar/gb6.ogg
new file mode 100644
index 00000000000..7caed1f85f6
Binary files /dev/null and b/sound/instruments/eguitar/gb6.ogg differ
diff --git a/sound/instruments/eguitar/gn4.ogg b/sound/instruments/eguitar/gn4.ogg
new file mode 100644
index 00000000000..9f7a35b3935
Binary files /dev/null and b/sound/instruments/eguitar/gn4.ogg differ
diff --git a/sound/instruments/eguitar/gn5.ogg b/sound/instruments/eguitar/gn5.ogg
new file mode 100644
index 00000000000..d55d4148815
Binary files /dev/null and b/sound/instruments/eguitar/gn5.ogg differ
diff --git a/sound/instruments/eguitar/gn6.ogg b/sound/instruments/eguitar/gn6.ogg
new file mode 100644
index 00000000000..4cb5e2c63ee
Binary files /dev/null and b/sound/instruments/eguitar/gn6.ogg differ
diff --git a/sound/instruments/glockenspiel/Ab2.mid b/sound/instruments/glockenspiel/Ab2.mid
new file mode 100644
index 00000000000..5686905944d
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab2.mid differ
diff --git a/sound/instruments/glockenspiel/Ab3.mid b/sound/instruments/glockenspiel/Ab3.mid
new file mode 100644
index 00000000000..284a1fff4e3
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab3.mid differ
diff --git a/sound/instruments/glockenspiel/Ab4.mid b/sound/instruments/glockenspiel/Ab4.mid
new file mode 100644
index 00000000000..fa423da6d5b
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab4.mid differ
diff --git a/sound/instruments/glockenspiel/Ab5.mid b/sound/instruments/glockenspiel/Ab5.mid
new file mode 100644
index 00000000000..4f49969b557
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab5.mid differ
diff --git a/sound/instruments/glockenspiel/Ab6.mid b/sound/instruments/glockenspiel/Ab6.mid
new file mode 100644
index 00000000000..a9900e304d4
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab6.mid differ
diff --git a/sound/instruments/glockenspiel/Ab7.mid b/sound/instruments/glockenspiel/Ab7.mid
new file mode 100644
index 00000000000..46a3712bc08
Binary files /dev/null and b/sound/instruments/glockenspiel/Ab7.mid differ
diff --git a/sound/instruments/glockenspiel/An2.mid b/sound/instruments/glockenspiel/An2.mid
new file mode 100644
index 00000000000..225c8d8e677
Binary files /dev/null and b/sound/instruments/glockenspiel/An2.mid differ
diff --git a/sound/instruments/glockenspiel/An3.mid b/sound/instruments/glockenspiel/An3.mid
new file mode 100644
index 00000000000..4517bccccf1
Binary files /dev/null and b/sound/instruments/glockenspiel/An3.mid differ
diff --git a/sound/instruments/glockenspiel/An4.mid b/sound/instruments/glockenspiel/An4.mid
new file mode 100644
index 00000000000..b0bfafe19d7
Binary files /dev/null and b/sound/instruments/glockenspiel/An4.mid differ
diff --git a/sound/instruments/glockenspiel/An5.mid b/sound/instruments/glockenspiel/An5.mid
new file mode 100644
index 00000000000..203f31ec8bf
Binary files /dev/null and b/sound/instruments/glockenspiel/An5.mid differ
diff --git a/sound/instruments/glockenspiel/An6.mid b/sound/instruments/glockenspiel/An6.mid
new file mode 100644
index 00000000000..b3c81f947e2
Binary files /dev/null and b/sound/instruments/glockenspiel/An6.mid differ
diff --git a/sound/instruments/glockenspiel/An7.mid b/sound/instruments/glockenspiel/An7.mid
new file mode 100644
index 00000000000..5f5d1f2482e
Binary files /dev/null and b/sound/instruments/glockenspiel/An7.mid differ
diff --git a/sound/instruments/glockenspiel/Bb2.mid b/sound/instruments/glockenspiel/Bb2.mid
new file mode 100644
index 00000000000..c847d75145b
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb2.mid differ
diff --git a/sound/instruments/glockenspiel/Bb3.mid b/sound/instruments/glockenspiel/Bb3.mid
new file mode 100644
index 00000000000..1bb96dd7b03
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb3.mid differ
diff --git a/sound/instruments/glockenspiel/Bb4.mid b/sound/instruments/glockenspiel/Bb4.mid
new file mode 100644
index 00000000000..d96c70754d0
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb4.mid differ
diff --git a/sound/instruments/glockenspiel/Bb5.mid b/sound/instruments/glockenspiel/Bb5.mid
new file mode 100644
index 00000000000..b8ca38884b8
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb5.mid differ
diff --git a/sound/instruments/glockenspiel/Bb6.mid b/sound/instruments/glockenspiel/Bb6.mid
new file mode 100644
index 00000000000..b82b11dbf20
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb6.mid differ
diff --git a/sound/instruments/glockenspiel/Bb7.mid b/sound/instruments/glockenspiel/Bb7.mid
new file mode 100644
index 00000000000..dfcf25c6e3f
Binary files /dev/null and b/sound/instruments/glockenspiel/Bb7.mid differ
diff --git a/sound/instruments/glockenspiel/Bn2.mid b/sound/instruments/glockenspiel/Bn2.mid
new file mode 100644
index 00000000000..c34397b078a
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn2.mid differ
diff --git a/sound/instruments/glockenspiel/Bn3.mid b/sound/instruments/glockenspiel/Bn3.mid
new file mode 100644
index 00000000000..6572ba58a69
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn3.mid differ
diff --git a/sound/instruments/glockenspiel/Bn4.mid b/sound/instruments/glockenspiel/Bn4.mid
new file mode 100644
index 00000000000..28059d9d39a
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn4.mid differ
diff --git a/sound/instruments/glockenspiel/Bn5.mid b/sound/instruments/glockenspiel/Bn5.mid
new file mode 100644
index 00000000000..acad7d78a4e
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn5.mid differ
diff --git a/sound/instruments/glockenspiel/Bn6.mid b/sound/instruments/glockenspiel/Bn6.mid
new file mode 100644
index 00000000000..28cecdb28e0
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn6.mid differ
diff --git a/sound/instruments/glockenspiel/Bn7.mid b/sound/instruments/glockenspiel/Bn7.mid
new file mode 100644
index 00000000000..879cdf81a13
Binary files /dev/null and b/sound/instruments/glockenspiel/Bn7.mid differ
diff --git a/sound/instruments/glockenspiel/Cn2.mid b/sound/instruments/glockenspiel/Cn2.mid
new file mode 100644
index 00000000000..c25e5eb02fa
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn2.mid differ
diff --git a/sound/instruments/glockenspiel/Cn3.mid b/sound/instruments/glockenspiel/Cn3.mid
new file mode 100644
index 00000000000..2e9dc47abd1
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn3.mid differ
diff --git a/sound/instruments/glockenspiel/Cn4.mid b/sound/instruments/glockenspiel/Cn4.mid
new file mode 100644
index 00000000000..6ebe22570d5
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn4.mid differ
diff --git a/sound/instruments/glockenspiel/Cn5.mid b/sound/instruments/glockenspiel/Cn5.mid
new file mode 100644
index 00000000000..383cf88b989
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn5.mid differ
diff --git a/sound/instruments/glockenspiel/Cn6.mid b/sound/instruments/glockenspiel/Cn6.mid
new file mode 100644
index 00000000000..919ba370850
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn6.mid differ
diff --git a/sound/instruments/glockenspiel/Cn7.mid b/sound/instruments/glockenspiel/Cn7.mid
new file mode 100644
index 00000000000..6d02413f0ae
Binary files /dev/null and b/sound/instruments/glockenspiel/Cn7.mid differ
diff --git a/sound/instruments/glockenspiel/Db2.mid b/sound/instruments/glockenspiel/Db2.mid
new file mode 100644
index 00000000000..e6c4c968b5c
Binary files /dev/null and b/sound/instruments/glockenspiel/Db2.mid differ
diff --git a/sound/instruments/glockenspiel/Db3.mid b/sound/instruments/glockenspiel/Db3.mid
new file mode 100644
index 00000000000..d793ec8c5f1
Binary files /dev/null and b/sound/instruments/glockenspiel/Db3.mid differ
diff --git a/sound/instruments/glockenspiel/Db4.mid b/sound/instruments/glockenspiel/Db4.mid
new file mode 100644
index 00000000000..1c042478500
Binary files /dev/null and b/sound/instruments/glockenspiel/Db4.mid differ
diff --git a/sound/instruments/glockenspiel/Db5.mid b/sound/instruments/glockenspiel/Db5.mid
new file mode 100644
index 00000000000..bd0a7712876
Binary files /dev/null and b/sound/instruments/glockenspiel/Db5.mid differ
diff --git a/sound/instruments/glockenspiel/Db6.mid b/sound/instruments/glockenspiel/Db6.mid
new file mode 100644
index 00000000000..2c25f018b23
Binary files /dev/null and b/sound/instruments/glockenspiel/Db6.mid differ
diff --git a/sound/instruments/glockenspiel/Db7.mid b/sound/instruments/glockenspiel/Db7.mid
new file mode 100644
index 00000000000..e42abd2921a
Binary files /dev/null and b/sound/instruments/glockenspiel/Db7.mid differ
diff --git a/sound/instruments/glockenspiel/Dn2.mid b/sound/instruments/glockenspiel/Dn2.mid
new file mode 100644
index 00000000000..8b82df85769
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn2.mid differ
diff --git a/sound/instruments/glockenspiel/Dn3.mid b/sound/instruments/glockenspiel/Dn3.mid
new file mode 100644
index 00000000000..c367cdf2799
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn3.mid differ
diff --git a/sound/instruments/glockenspiel/Dn4.mid b/sound/instruments/glockenspiel/Dn4.mid
new file mode 100644
index 00000000000..98af4007fe3
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn4.mid differ
diff --git a/sound/instruments/glockenspiel/Dn5.mid b/sound/instruments/glockenspiel/Dn5.mid
new file mode 100644
index 00000000000..e51591d8879
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn5.mid differ
diff --git a/sound/instruments/glockenspiel/Dn6.mid b/sound/instruments/glockenspiel/Dn6.mid
new file mode 100644
index 00000000000..7a3723915df
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn6.mid differ
diff --git a/sound/instruments/glockenspiel/Dn7.mid b/sound/instruments/glockenspiel/Dn7.mid
new file mode 100644
index 00000000000..5be8aa77e1f
Binary files /dev/null and b/sound/instruments/glockenspiel/Dn7.mid differ
diff --git a/sound/instruments/glockenspiel/Eb2.mid b/sound/instruments/glockenspiel/Eb2.mid
new file mode 100644
index 00000000000..c50981843db
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb2.mid differ
diff --git a/sound/instruments/glockenspiel/Eb3.mid b/sound/instruments/glockenspiel/Eb3.mid
new file mode 100644
index 00000000000..36354cb7152
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb3.mid differ
diff --git a/sound/instruments/glockenspiel/Eb4.mid b/sound/instruments/glockenspiel/Eb4.mid
new file mode 100644
index 00000000000..3d08fd703be
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb4.mid differ
diff --git a/sound/instruments/glockenspiel/Eb5.mid b/sound/instruments/glockenspiel/Eb5.mid
new file mode 100644
index 00000000000..25aebfc3274
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb5.mid differ
diff --git a/sound/instruments/glockenspiel/Eb6.mid b/sound/instruments/glockenspiel/Eb6.mid
new file mode 100644
index 00000000000..62cc1ef0e7f
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb6.mid differ
diff --git a/sound/instruments/glockenspiel/Eb7.mid b/sound/instruments/glockenspiel/Eb7.mid
new file mode 100644
index 00000000000..b60cdad77b5
Binary files /dev/null and b/sound/instruments/glockenspiel/Eb7.mid differ
diff --git a/sound/instruments/glockenspiel/En2.mid b/sound/instruments/glockenspiel/En2.mid
new file mode 100644
index 00000000000..39758cd85f9
Binary files /dev/null and b/sound/instruments/glockenspiel/En2.mid differ
diff --git a/sound/instruments/glockenspiel/En3.mid b/sound/instruments/glockenspiel/En3.mid
new file mode 100644
index 00000000000..efc81900312
Binary files /dev/null and b/sound/instruments/glockenspiel/En3.mid differ
diff --git a/sound/instruments/glockenspiel/En4.mid b/sound/instruments/glockenspiel/En4.mid
new file mode 100644
index 00000000000..99cc66e8ee8
Binary files /dev/null and b/sound/instruments/glockenspiel/En4.mid differ
diff --git a/sound/instruments/glockenspiel/En5.mid b/sound/instruments/glockenspiel/En5.mid
new file mode 100644
index 00000000000..ad00fdf4193
Binary files /dev/null and b/sound/instruments/glockenspiel/En5.mid differ
diff --git a/sound/instruments/glockenspiel/En6.mid b/sound/instruments/glockenspiel/En6.mid
new file mode 100644
index 00000000000..f09ef0b2609
Binary files /dev/null and b/sound/instruments/glockenspiel/En6.mid differ
diff --git a/sound/instruments/glockenspiel/En7.mid b/sound/instruments/glockenspiel/En7.mid
new file mode 100644
index 00000000000..3bcb9da49ff
Binary files /dev/null and b/sound/instruments/glockenspiel/En7.mid differ
diff --git a/sound/instruments/glockenspiel/Fn2.mid b/sound/instruments/glockenspiel/Fn2.mid
new file mode 100644
index 00000000000..f127d40a4ac
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn2.mid differ
diff --git a/sound/instruments/glockenspiel/Fn3.mid b/sound/instruments/glockenspiel/Fn3.mid
new file mode 100644
index 00000000000..2429099d112
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn3.mid differ
diff --git a/sound/instruments/glockenspiel/Fn4.mid b/sound/instruments/glockenspiel/Fn4.mid
new file mode 100644
index 00000000000..be631cfb219
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn4.mid differ
diff --git a/sound/instruments/glockenspiel/Fn5.mid b/sound/instruments/glockenspiel/Fn5.mid
new file mode 100644
index 00000000000..a9fa10ed92a
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn5.mid differ
diff --git a/sound/instruments/glockenspiel/Fn6.mid b/sound/instruments/glockenspiel/Fn6.mid
new file mode 100644
index 00000000000..e31280486c7
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn6.mid differ
diff --git a/sound/instruments/glockenspiel/Fn7.mid b/sound/instruments/glockenspiel/Fn7.mid
new file mode 100644
index 00000000000..d58406a9eb1
Binary files /dev/null and b/sound/instruments/glockenspiel/Fn7.mid differ
diff --git a/sound/instruments/glockenspiel/Gb2.mid b/sound/instruments/glockenspiel/Gb2.mid
new file mode 100644
index 00000000000..a75712fdcd9
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb2.mid differ
diff --git a/sound/instruments/glockenspiel/Gb3.mid b/sound/instruments/glockenspiel/Gb3.mid
new file mode 100644
index 00000000000..ce8eb61c040
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb3.mid differ
diff --git a/sound/instruments/glockenspiel/Gb4.mid b/sound/instruments/glockenspiel/Gb4.mid
new file mode 100644
index 00000000000..d15ee2f97b2
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb4.mid differ
diff --git a/sound/instruments/glockenspiel/Gb5.mid b/sound/instruments/glockenspiel/Gb5.mid
new file mode 100644
index 00000000000..393b6d76574
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb5.mid differ
diff --git a/sound/instruments/glockenspiel/Gb6.mid b/sound/instruments/glockenspiel/Gb6.mid
new file mode 100644
index 00000000000..6b0e3aef091
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb6.mid differ
diff --git a/sound/instruments/glockenspiel/Gb7.mid b/sound/instruments/glockenspiel/Gb7.mid
new file mode 100644
index 00000000000..318a1ea9caa
Binary files /dev/null and b/sound/instruments/glockenspiel/Gb7.mid differ
diff --git a/sound/instruments/glockenspiel/Gn2.mid b/sound/instruments/glockenspiel/Gn2.mid
new file mode 100644
index 00000000000..39d22d66123
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn2.mid differ
diff --git a/sound/instruments/glockenspiel/Gn3.mid b/sound/instruments/glockenspiel/Gn3.mid
new file mode 100644
index 00000000000..d9494886a1c
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn3.mid differ
diff --git a/sound/instruments/glockenspiel/Gn4.mid b/sound/instruments/glockenspiel/Gn4.mid
new file mode 100644
index 00000000000..00a2f114bac
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn4.mid differ
diff --git a/sound/instruments/glockenspiel/Gn5.mid b/sound/instruments/glockenspiel/Gn5.mid
new file mode 100644
index 00000000000..55205eae3fe
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn5.mid differ
diff --git a/sound/instruments/glockenspiel/Gn6.mid b/sound/instruments/glockenspiel/Gn6.mid
new file mode 100644
index 00000000000..1aebe5ec222
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn6.mid differ
diff --git a/sound/instruments/glockenspiel/Gn7.mid b/sound/instruments/glockenspiel/Gn7.mid
new file mode 100644
index 00000000000..cd0a43ceac6
Binary files /dev/null and b/sound/instruments/glockenspiel/Gn7.mid differ
diff --git a/sound/instruments/guitar/Ab3.ogg b/sound/instruments/guitar/Ab3.ogg
new file mode 100644
index 00000000000..6e242786c40
Binary files /dev/null and b/sound/instruments/guitar/Ab3.ogg differ
diff --git a/sound/instruments/guitar/Ab4.ogg b/sound/instruments/guitar/Ab4.ogg
new file mode 100644
index 00000000000..6f854ea5d3f
Binary files /dev/null and b/sound/instruments/guitar/Ab4.ogg differ
diff --git a/sound/instruments/guitar/Ab5.ogg b/sound/instruments/guitar/Ab5.ogg
new file mode 100644
index 00000000000..53ba1c01520
Binary files /dev/null and b/sound/instruments/guitar/Ab5.ogg differ
diff --git a/sound/instruments/guitar/Ab6.ogg b/sound/instruments/guitar/Ab6.ogg
new file mode 100644
index 00000000000..d0a238ba607
Binary files /dev/null and b/sound/instruments/guitar/Ab6.ogg differ
diff --git a/sound/instruments/guitar/An3.ogg b/sound/instruments/guitar/An3.ogg
new file mode 100644
index 00000000000..1f06e6d4f28
Binary files /dev/null and b/sound/instruments/guitar/An3.ogg differ
diff --git a/sound/instruments/guitar/An4.ogg b/sound/instruments/guitar/An4.ogg
new file mode 100644
index 00000000000..f3354df46b9
Binary files /dev/null and b/sound/instruments/guitar/An4.ogg differ
diff --git a/sound/instruments/guitar/An5.ogg b/sound/instruments/guitar/An5.ogg
new file mode 100644
index 00000000000..fc3b1b345c9
Binary files /dev/null and b/sound/instruments/guitar/An5.ogg differ
diff --git a/sound/instruments/guitar/An6.ogg b/sound/instruments/guitar/An6.ogg
new file mode 100644
index 00000000000..f58a50d2a65
Binary files /dev/null and b/sound/instruments/guitar/An6.ogg differ
diff --git a/sound/instruments/guitar/Bb3.ogg b/sound/instruments/guitar/Bb3.ogg
new file mode 100644
index 00000000000..e88343d88fb
Binary files /dev/null and b/sound/instruments/guitar/Bb3.ogg differ
diff --git a/sound/instruments/guitar/Bb4.ogg b/sound/instruments/guitar/Bb4.ogg
new file mode 100644
index 00000000000..11b883285da
Binary files /dev/null and b/sound/instruments/guitar/Bb4.ogg differ
diff --git a/sound/instruments/guitar/Bb5.ogg b/sound/instruments/guitar/Bb5.ogg
new file mode 100644
index 00000000000..5d9b10f87a6
Binary files /dev/null and b/sound/instruments/guitar/Bb5.ogg differ
diff --git a/sound/instruments/guitar/Bb6.ogg b/sound/instruments/guitar/Bb6.ogg
new file mode 100644
index 00000000000..c7f11ef59a6
Binary files /dev/null and b/sound/instruments/guitar/Bb6.ogg differ
diff --git a/sound/instruments/guitar/Bn3.ogg b/sound/instruments/guitar/Bn3.ogg
new file mode 100644
index 00000000000..0d6022369fa
Binary files /dev/null and b/sound/instruments/guitar/Bn3.ogg differ
diff --git a/sound/instruments/guitar/Bn4.ogg b/sound/instruments/guitar/Bn4.ogg
new file mode 100644
index 00000000000..7e8682d5ff0
Binary files /dev/null and b/sound/instruments/guitar/Bn4.ogg differ
diff --git a/sound/instruments/guitar/Bn5.ogg b/sound/instruments/guitar/Bn5.ogg
new file mode 100644
index 00000000000..1912da7f66c
Binary files /dev/null and b/sound/instruments/guitar/Bn5.ogg differ
diff --git a/sound/instruments/guitar/Bn6.ogg b/sound/instruments/guitar/Bn6.ogg
new file mode 100644
index 00000000000..985ec744dfb
Binary files /dev/null and b/sound/instruments/guitar/Bn6.ogg differ
diff --git a/sound/instruments/guitar/Cn4.ogg b/sound/instruments/guitar/Cn4.ogg
new file mode 100644
index 00000000000..0279b73f8bd
Binary files /dev/null and b/sound/instruments/guitar/Cn4.ogg differ
diff --git a/sound/instruments/guitar/Cn5.ogg b/sound/instruments/guitar/Cn5.ogg
new file mode 100644
index 00000000000..ece600a6c1a
Binary files /dev/null and b/sound/instruments/guitar/Cn5.ogg differ
diff --git a/sound/instruments/guitar/Cn6.ogg b/sound/instruments/guitar/Cn6.ogg
new file mode 100644
index 00000000000..8c2fecc62aa
Binary files /dev/null and b/sound/instruments/guitar/Cn6.ogg differ
diff --git a/sound/instruments/guitar/Db4.ogg b/sound/instruments/guitar/Db4.ogg
new file mode 100644
index 00000000000..8a14f1f8365
Binary files /dev/null and b/sound/instruments/guitar/Db4.ogg differ
diff --git a/sound/instruments/guitar/Db5.ogg b/sound/instruments/guitar/Db5.ogg
new file mode 100644
index 00000000000..46a67f20ce0
Binary files /dev/null and b/sound/instruments/guitar/Db5.ogg differ
diff --git a/sound/instruments/guitar/Db6.ogg b/sound/instruments/guitar/Db6.ogg
new file mode 100644
index 00000000000..a07095c6033
Binary files /dev/null and b/sound/instruments/guitar/Db6.ogg differ
diff --git a/sound/instruments/guitar/Dn4.ogg b/sound/instruments/guitar/Dn4.ogg
new file mode 100644
index 00000000000..587099a0ddc
Binary files /dev/null and b/sound/instruments/guitar/Dn4.ogg differ
diff --git a/sound/instruments/guitar/Dn5.ogg b/sound/instruments/guitar/Dn5.ogg
new file mode 100644
index 00000000000..d6a9c38415a
Binary files /dev/null and b/sound/instruments/guitar/Dn5.ogg differ
diff --git a/sound/instruments/guitar/Dn6.ogg b/sound/instruments/guitar/Dn6.ogg
new file mode 100644
index 00000000000..4e44d5e72fe
Binary files /dev/null and b/sound/instruments/guitar/Dn6.ogg differ
diff --git a/sound/instruments/guitar/Eb4.ogg b/sound/instruments/guitar/Eb4.ogg
new file mode 100644
index 00000000000..1f93c8273d1
Binary files /dev/null and b/sound/instruments/guitar/Eb4.ogg differ
diff --git a/sound/instruments/guitar/Eb5.ogg b/sound/instruments/guitar/Eb5.ogg
new file mode 100644
index 00000000000..5b795377f38
Binary files /dev/null and b/sound/instruments/guitar/Eb5.ogg differ
diff --git a/sound/instruments/guitar/Eb6.ogg b/sound/instruments/guitar/Eb6.ogg
new file mode 100644
index 00000000000..5febf7a37b3
Binary files /dev/null and b/sound/instruments/guitar/Eb6.ogg differ
diff --git a/sound/instruments/guitar/En3.ogg b/sound/instruments/guitar/En3.ogg
new file mode 100644
index 00000000000..d9679bd78ea
Binary files /dev/null and b/sound/instruments/guitar/En3.ogg differ
diff --git a/sound/instruments/guitar/En4.ogg b/sound/instruments/guitar/En4.ogg
new file mode 100644
index 00000000000..50dad80f506
Binary files /dev/null and b/sound/instruments/guitar/En4.ogg differ
diff --git a/sound/instruments/guitar/En5.ogg b/sound/instruments/guitar/En5.ogg
new file mode 100644
index 00000000000..8617c069201
Binary files /dev/null and b/sound/instruments/guitar/En5.ogg differ
diff --git a/sound/instruments/guitar/En6.ogg b/sound/instruments/guitar/En6.ogg
new file mode 100644
index 00000000000..a487ce33e4b
Binary files /dev/null and b/sound/instruments/guitar/En6.ogg differ
diff --git a/sound/instruments/guitar/Fn3.ogg b/sound/instruments/guitar/Fn3.ogg
new file mode 100644
index 00000000000..4e37dc58126
Binary files /dev/null and b/sound/instruments/guitar/Fn3.ogg differ
diff --git a/sound/instruments/guitar/Fn4.ogg b/sound/instruments/guitar/Fn4.ogg
new file mode 100644
index 00000000000..3bf9957d48a
Binary files /dev/null and b/sound/instruments/guitar/Fn4.ogg differ
diff --git a/sound/instruments/guitar/Fn5.ogg b/sound/instruments/guitar/Fn5.ogg
new file mode 100644
index 00000000000..ad0a0ecec79
Binary files /dev/null and b/sound/instruments/guitar/Fn5.ogg differ
diff --git a/sound/instruments/guitar/Fn6.ogg b/sound/instruments/guitar/Fn6.ogg
new file mode 100644
index 00000000000..50457e7bf4c
Binary files /dev/null and b/sound/instruments/guitar/Fn6.ogg differ
diff --git a/sound/instruments/guitar/Gb3.ogg b/sound/instruments/guitar/Gb3.ogg
new file mode 100644
index 00000000000..1b2e6c503de
Binary files /dev/null and b/sound/instruments/guitar/Gb3.ogg differ
diff --git a/sound/instruments/guitar/Gb4.ogg b/sound/instruments/guitar/Gb4.ogg
new file mode 100644
index 00000000000..122a0c5c17d
Binary files /dev/null and b/sound/instruments/guitar/Gb4.ogg differ
diff --git a/sound/instruments/guitar/Gb5.ogg b/sound/instruments/guitar/Gb5.ogg
new file mode 100644
index 00000000000..b0346e2f365
Binary files /dev/null and b/sound/instruments/guitar/Gb5.ogg differ
diff --git a/sound/instruments/guitar/Gb6.ogg b/sound/instruments/guitar/Gb6.ogg
new file mode 100644
index 00000000000..4f873de27cf
Binary files /dev/null and b/sound/instruments/guitar/Gb6.ogg differ
diff --git a/sound/instruments/guitar/Gn3.ogg b/sound/instruments/guitar/Gn3.ogg
new file mode 100644
index 00000000000..783cded9fe5
Binary files /dev/null and b/sound/instruments/guitar/Gn3.ogg differ
diff --git a/sound/instruments/guitar/Gn4.ogg b/sound/instruments/guitar/Gn4.ogg
new file mode 100644
index 00000000000..92f9cd2fd9d
Binary files /dev/null and b/sound/instruments/guitar/Gn4.ogg differ
diff --git a/sound/instruments/guitar/Gn5.ogg b/sound/instruments/guitar/Gn5.ogg
new file mode 100644
index 00000000000..42fdebc209b
Binary files /dev/null and b/sound/instruments/guitar/Gn5.ogg differ
diff --git a/sound/instruments/guitar/Gn6.ogg b/sound/instruments/guitar/Gn6.ogg
new file mode 100644
index 00000000000..a36bf38f001
Binary files /dev/null and b/sound/instruments/guitar/Gn6.ogg differ
diff --git a/sound/instruments/harmonica/Ab2.mid b/sound/instruments/harmonica/Ab2.mid
new file mode 100644
index 00000000000..c4c3ddeecd0
Binary files /dev/null and b/sound/instruments/harmonica/Ab2.mid differ
diff --git a/sound/instruments/harmonica/Ab3.mid b/sound/instruments/harmonica/Ab3.mid
new file mode 100644
index 00000000000..ab6c88ed510
Binary files /dev/null and b/sound/instruments/harmonica/Ab3.mid differ
diff --git a/sound/instruments/harmonica/Ab4.mid b/sound/instruments/harmonica/Ab4.mid
new file mode 100644
index 00000000000..d511cdb4750
Binary files /dev/null and b/sound/instruments/harmonica/Ab4.mid differ
diff --git a/sound/instruments/harmonica/Ab5.mid b/sound/instruments/harmonica/Ab5.mid
new file mode 100644
index 00000000000..abab8dc3221
Binary files /dev/null and b/sound/instruments/harmonica/Ab5.mid differ
diff --git a/sound/instruments/harmonica/Ab6.mid b/sound/instruments/harmonica/Ab6.mid
new file mode 100644
index 00000000000..15ca0f0d8f7
Binary files /dev/null and b/sound/instruments/harmonica/Ab6.mid differ
diff --git a/sound/instruments/harmonica/An2.mid b/sound/instruments/harmonica/An2.mid
new file mode 100644
index 00000000000..62bb9299352
Binary files /dev/null and b/sound/instruments/harmonica/An2.mid differ
diff --git a/sound/instruments/harmonica/An3.mid b/sound/instruments/harmonica/An3.mid
new file mode 100644
index 00000000000..20ee9dddcc6
Binary files /dev/null and b/sound/instruments/harmonica/An3.mid differ
diff --git a/sound/instruments/harmonica/An4.mid b/sound/instruments/harmonica/An4.mid
new file mode 100644
index 00000000000..a791135fa81
Binary files /dev/null and b/sound/instruments/harmonica/An4.mid differ
diff --git a/sound/instruments/harmonica/An5.mid b/sound/instruments/harmonica/An5.mid
new file mode 100644
index 00000000000..b78f0793c8a
Binary files /dev/null and b/sound/instruments/harmonica/An5.mid differ
diff --git a/sound/instruments/harmonica/An6.mid b/sound/instruments/harmonica/An6.mid
new file mode 100644
index 00000000000..e250b41e9f8
Binary files /dev/null and b/sound/instruments/harmonica/An6.mid differ
diff --git a/sound/instruments/harmonica/Bb2.mid b/sound/instruments/harmonica/Bb2.mid
new file mode 100644
index 00000000000..610e1f0f380
Binary files /dev/null and b/sound/instruments/harmonica/Bb2.mid differ
diff --git a/sound/instruments/harmonica/Bb3.mid b/sound/instruments/harmonica/Bb3.mid
new file mode 100644
index 00000000000..79f0966663d
Binary files /dev/null and b/sound/instruments/harmonica/Bb3.mid differ
diff --git a/sound/instruments/harmonica/Bb4.mid b/sound/instruments/harmonica/Bb4.mid
new file mode 100644
index 00000000000..af1eb969c62
Binary files /dev/null and b/sound/instruments/harmonica/Bb4.mid differ
diff --git a/sound/instruments/harmonica/Bb5.mid b/sound/instruments/harmonica/Bb5.mid
new file mode 100644
index 00000000000..e816d9cbdd0
Binary files /dev/null and b/sound/instruments/harmonica/Bb5.mid differ
diff --git a/sound/instruments/harmonica/Bb6.mid b/sound/instruments/harmonica/Bb6.mid
new file mode 100644
index 00000000000..ad5b9d2f9e6
Binary files /dev/null and b/sound/instruments/harmonica/Bb6.mid differ
diff --git a/sound/instruments/harmonica/Bn2.mid b/sound/instruments/harmonica/Bn2.mid
new file mode 100644
index 00000000000..f03c0f95358
Binary files /dev/null and b/sound/instruments/harmonica/Bn2.mid differ
diff --git a/sound/instruments/harmonica/Bn3.mid b/sound/instruments/harmonica/Bn3.mid
new file mode 100644
index 00000000000..3d078bba8ed
Binary files /dev/null and b/sound/instruments/harmonica/Bn3.mid differ
diff --git a/sound/instruments/harmonica/Bn4.mid b/sound/instruments/harmonica/Bn4.mid
new file mode 100644
index 00000000000..fff2f5e7b80
Binary files /dev/null and b/sound/instruments/harmonica/Bn4.mid differ
diff --git a/sound/instruments/harmonica/Bn5.mid b/sound/instruments/harmonica/Bn5.mid
new file mode 100644
index 00000000000..b3cf8fe0516
Binary files /dev/null and b/sound/instruments/harmonica/Bn5.mid differ
diff --git a/sound/instruments/harmonica/Bn6.mid b/sound/instruments/harmonica/Bn6.mid
new file mode 100644
index 00000000000..03b60c6a49a
Binary files /dev/null and b/sound/instruments/harmonica/Bn6.mid differ
diff --git a/sound/instruments/harmonica/Cn2.mid b/sound/instruments/harmonica/Cn2.mid
new file mode 100644
index 00000000000..6501f021d29
Binary files /dev/null and b/sound/instruments/harmonica/Cn2.mid differ
diff --git a/sound/instruments/harmonica/Cn3.mid b/sound/instruments/harmonica/Cn3.mid
new file mode 100644
index 00000000000..462bc973ef7
Binary files /dev/null and b/sound/instruments/harmonica/Cn3.mid differ
diff --git a/sound/instruments/harmonica/Cn4.mid b/sound/instruments/harmonica/Cn4.mid
new file mode 100644
index 00000000000..1d4d9ad83b2
Binary files /dev/null and b/sound/instruments/harmonica/Cn4.mid differ
diff --git a/sound/instruments/harmonica/Cn5.mid b/sound/instruments/harmonica/Cn5.mid
new file mode 100644
index 00000000000..7f0698266e3
Binary files /dev/null and b/sound/instruments/harmonica/Cn5.mid differ
diff --git a/sound/instruments/harmonica/Cn6.mid b/sound/instruments/harmonica/Cn6.mid
new file mode 100644
index 00000000000..9edc25c6259
Binary files /dev/null and b/sound/instruments/harmonica/Cn6.mid differ
diff --git a/sound/instruments/harmonica/Cn7.mid b/sound/instruments/harmonica/Cn7.mid
new file mode 100644
index 00000000000..d670d4f07c7
Binary files /dev/null and b/sound/instruments/harmonica/Cn7.mid differ
diff --git a/sound/instruments/harmonica/Db2.mid b/sound/instruments/harmonica/Db2.mid
new file mode 100644
index 00000000000..dab89a2a1bf
Binary files /dev/null and b/sound/instruments/harmonica/Db2.mid differ
diff --git a/sound/instruments/harmonica/Db3.mid b/sound/instruments/harmonica/Db3.mid
new file mode 100644
index 00000000000..06d826dfc75
Binary files /dev/null and b/sound/instruments/harmonica/Db3.mid differ
diff --git a/sound/instruments/harmonica/Db4.mid b/sound/instruments/harmonica/Db4.mid
new file mode 100644
index 00000000000..1e9f67c9ad3
Binary files /dev/null and b/sound/instruments/harmonica/Db4.mid differ
diff --git a/sound/instruments/harmonica/Db5.mid b/sound/instruments/harmonica/Db5.mid
new file mode 100644
index 00000000000..08346dd8389
Binary files /dev/null and b/sound/instruments/harmonica/Db5.mid differ
diff --git a/sound/instruments/harmonica/Db6.mid b/sound/instruments/harmonica/Db6.mid
new file mode 100644
index 00000000000..2269113e007
Binary files /dev/null and b/sound/instruments/harmonica/Db6.mid differ
diff --git a/sound/instruments/harmonica/Dn2.mid b/sound/instruments/harmonica/Dn2.mid
new file mode 100644
index 00000000000..652990ac1a4
Binary files /dev/null and b/sound/instruments/harmonica/Dn2.mid differ
diff --git a/sound/instruments/harmonica/Dn3.mid b/sound/instruments/harmonica/Dn3.mid
new file mode 100644
index 00000000000..e2e3a63d345
Binary files /dev/null and b/sound/instruments/harmonica/Dn3.mid differ
diff --git a/sound/instruments/harmonica/Dn4.mid b/sound/instruments/harmonica/Dn4.mid
new file mode 100644
index 00000000000..d9a23a5445f
Binary files /dev/null and b/sound/instruments/harmonica/Dn4.mid differ
diff --git a/sound/instruments/harmonica/Dn5.mid b/sound/instruments/harmonica/Dn5.mid
new file mode 100644
index 00000000000..3ff298d3946
Binary files /dev/null and b/sound/instruments/harmonica/Dn5.mid differ
diff --git a/sound/instruments/harmonica/Dn6.mid b/sound/instruments/harmonica/Dn6.mid
new file mode 100644
index 00000000000..6aa4c5ef434
Binary files /dev/null and b/sound/instruments/harmonica/Dn6.mid differ
diff --git a/sound/instruments/harmonica/Eb2.mid b/sound/instruments/harmonica/Eb2.mid
new file mode 100644
index 00000000000..d1a8e3fbea2
Binary files /dev/null and b/sound/instruments/harmonica/Eb2.mid differ
diff --git a/sound/instruments/harmonica/Eb3.mid b/sound/instruments/harmonica/Eb3.mid
new file mode 100644
index 00000000000..c31c6ab6e9f
Binary files /dev/null and b/sound/instruments/harmonica/Eb3.mid differ
diff --git a/sound/instruments/harmonica/Eb4.mid b/sound/instruments/harmonica/Eb4.mid
new file mode 100644
index 00000000000..eabad551599
Binary files /dev/null and b/sound/instruments/harmonica/Eb4.mid differ
diff --git a/sound/instruments/harmonica/Eb5.mid b/sound/instruments/harmonica/Eb5.mid
new file mode 100644
index 00000000000..8da3b86e483
Binary files /dev/null and b/sound/instruments/harmonica/Eb5.mid differ
diff --git a/sound/instruments/harmonica/Eb6.mid b/sound/instruments/harmonica/Eb6.mid
new file mode 100644
index 00000000000..db3d2b17b9e
Binary files /dev/null and b/sound/instruments/harmonica/Eb6.mid differ
diff --git a/sound/instruments/harmonica/En2.mid b/sound/instruments/harmonica/En2.mid
new file mode 100644
index 00000000000..48ea2d8bcb9
Binary files /dev/null and b/sound/instruments/harmonica/En2.mid differ
diff --git a/sound/instruments/harmonica/En3.mid b/sound/instruments/harmonica/En3.mid
new file mode 100644
index 00000000000..d7d2492add0
Binary files /dev/null and b/sound/instruments/harmonica/En3.mid differ
diff --git a/sound/instruments/harmonica/En4.mid b/sound/instruments/harmonica/En4.mid
new file mode 100644
index 00000000000..b2731141e6e
Binary files /dev/null and b/sound/instruments/harmonica/En4.mid differ
diff --git a/sound/instruments/harmonica/En5.mid b/sound/instruments/harmonica/En5.mid
new file mode 100644
index 00000000000..22026c14c4f
Binary files /dev/null and b/sound/instruments/harmonica/En5.mid differ
diff --git a/sound/instruments/harmonica/En6.mid b/sound/instruments/harmonica/En6.mid
new file mode 100644
index 00000000000..6730a7c5287
Binary files /dev/null and b/sound/instruments/harmonica/En6.mid differ
diff --git a/sound/instruments/harmonica/Fn2.mid b/sound/instruments/harmonica/Fn2.mid
new file mode 100644
index 00000000000..833662178d0
Binary files /dev/null and b/sound/instruments/harmonica/Fn2.mid differ
diff --git a/sound/instruments/harmonica/Fn3.mid b/sound/instruments/harmonica/Fn3.mid
new file mode 100644
index 00000000000..7dc41a47c88
Binary files /dev/null and b/sound/instruments/harmonica/Fn3.mid differ
diff --git a/sound/instruments/harmonica/Fn4.mid b/sound/instruments/harmonica/Fn4.mid
new file mode 100644
index 00000000000..025583e38d3
Binary files /dev/null and b/sound/instruments/harmonica/Fn4.mid differ
diff --git a/sound/instruments/harmonica/Fn5.mid b/sound/instruments/harmonica/Fn5.mid
new file mode 100644
index 00000000000..710b458d85b
Binary files /dev/null and b/sound/instruments/harmonica/Fn5.mid differ
diff --git a/sound/instruments/harmonica/Fn6.mid b/sound/instruments/harmonica/Fn6.mid
new file mode 100644
index 00000000000..44112e36595
Binary files /dev/null and b/sound/instruments/harmonica/Fn6.mid differ
diff --git a/sound/instruments/harmonica/Gb2.mid b/sound/instruments/harmonica/Gb2.mid
new file mode 100644
index 00000000000..8edd298ec13
Binary files /dev/null and b/sound/instruments/harmonica/Gb2.mid differ
diff --git a/sound/instruments/harmonica/Gb3.mid b/sound/instruments/harmonica/Gb3.mid
new file mode 100644
index 00000000000..438a939095a
Binary files /dev/null and b/sound/instruments/harmonica/Gb3.mid differ
diff --git a/sound/instruments/harmonica/Gb4.mid b/sound/instruments/harmonica/Gb4.mid
new file mode 100644
index 00000000000..7844063205c
Binary files /dev/null and b/sound/instruments/harmonica/Gb4.mid differ
diff --git a/sound/instruments/harmonica/Gb5.mid b/sound/instruments/harmonica/Gb5.mid
new file mode 100644
index 00000000000..4139bce10e0
Binary files /dev/null and b/sound/instruments/harmonica/Gb5.mid differ
diff --git a/sound/instruments/harmonica/Gb6.mid b/sound/instruments/harmonica/Gb6.mid
new file mode 100644
index 00000000000..e6b1a8fb897
Binary files /dev/null and b/sound/instruments/harmonica/Gb6.mid differ
diff --git a/sound/instruments/harmonica/Gn2.mid b/sound/instruments/harmonica/Gn2.mid
new file mode 100644
index 00000000000..d26e7c83af6
Binary files /dev/null and b/sound/instruments/harmonica/Gn2.mid differ
diff --git a/sound/instruments/harmonica/Gn3.mid b/sound/instruments/harmonica/Gn3.mid
new file mode 100644
index 00000000000..c741d556c9e
Binary files /dev/null and b/sound/instruments/harmonica/Gn3.mid differ
diff --git a/sound/instruments/harmonica/Gn4.mid b/sound/instruments/harmonica/Gn4.mid
new file mode 100644
index 00000000000..c6e7a3c9bb2
Binary files /dev/null and b/sound/instruments/harmonica/Gn4.mid differ
diff --git a/sound/instruments/harmonica/Gn5.mid b/sound/instruments/harmonica/Gn5.mid
new file mode 100644
index 00000000000..a9608e9d210
Binary files /dev/null and b/sound/instruments/harmonica/Gn5.mid differ
diff --git a/sound/instruments/harmonica/Gn6.mid b/sound/instruments/harmonica/Gn6.mid
new file mode 100644
index 00000000000..98f6d32bfc5
Binary files /dev/null and b/sound/instruments/harmonica/Gn6.mid differ
diff --git a/sound/instruments/piano/Ab1.ogg b/sound/instruments/piano/Ab1.ogg
new file mode 100644
index 00000000000..0c5ae362163
Binary files /dev/null and b/sound/instruments/piano/Ab1.ogg differ
diff --git a/sound/instruments/piano/Ab2.ogg b/sound/instruments/piano/Ab2.ogg
new file mode 100644
index 00000000000..4dabf2cc82c
Binary files /dev/null and b/sound/instruments/piano/Ab2.ogg differ
diff --git a/sound/instruments/piano/Ab3.ogg b/sound/instruments/piano/Ab3.ogg
new file mode 100644
index 00000000000..beb96005de0
Binary files /dev/null and b/sound/instruments/piano/Ab3.ogg differ
diff --git a/sound/instruments/piano/Ab4.ogg b/sound/instruments/piano/Ab4.ogg
new file mode 100644
index 00000000000..bfcf3018777
Binary files /dev/null and b/sound/instruments/piano/Ab4.ogg differ
diff --git a/sound/instruments/piano/Ab5.ogg b/sound/instruments/piano/Ab5.ogg
new file mode 100644
index 00000000000..b95acaf5a02
Binary files /dev/null and b/sound/instruments/piano/Ab5.ogg differ
diff --git a/sound/instruments/piano/Ab6.ogg b/sound/instruments/piano/Ab6.ogg
new file mode 100644
index 00000000000..501f51b3e13
Binary files /dev/null and b/sound/instruments/piano/Ab6.ogg differ
diff --git a/sound/instruments/piano/Ab7.ogg b/sound/instruments/piano/Ab7.ogg
new file mode 100644
index 00000000000..b96f4e0766f
Binary files /dev/null and b/sound/instruments/piano/Ab7.ogg differ
diff --git a/sound/instruments/piano/Ab8.ogg b/sound/instruments/piano/Ab8.ogg
new file mode 100644
index 00000000000..c4bd37195bd
Binary files /dev/null and b/sound/instruments/piano/Ab8.ogg differ
diff --git a/sound/instruments/piano/An1.ogg b/sound/instruments/piano/An1.ogg
new file mode 100644
index 00000000000..5698578e796
Binary files /dev/null and b/sound/instruments/piano/An1.ogg differ
diff --git a/sound/instruments/piano/An2.ogg b/sound/instruments/piano/An2.ogg
new file mode 100644
index 00000000000..aaff9b8e657
Binary files /dev/null and b/sound/instruments/piano/An2.ogg differ
diff --git a/sound/instruments/piano/An3.ogg b/sound/instruments/piano/An3.ogg
new file mode 100644
index 00000000000..16fe54be836
Binary files /dev/null and b/sound/instruments/piano/An3.ogg differ
diff --git a/sound/instruments/piano/An4.ogg b/sound/instruments/piano/An4.ogg
new file mode 100644
index 00000000000..52cfc701a0e
Binary files /dev/null and b/sound/instruments/piano/An4.ogg differ
diff --git a/sound/instruments/piano/An5.ogg b/sound/instruments/piano/An5.ogg
new file mode 100644
index 00000000000..ba4ad8ee61f
Binary files /dev/null and b/sound/instruments/piano/An5.ogg differ
diff --git a/sound/instruments/piano/An6.ogg b/sound/instruments/piano/An6.ogg
new file mode 100644
index 00000000000..49be4e31a88
Binary files /dev/null and b/sound/instruments/piano/An6.ogg differ
diff --git a/sound/instruments/piano/An7.ogg b/sound/instruments/piano/An7.ogg
new file mode 100644
index 00000000000..da5f477db78
Binary files /dev/null and b/sound/instruments/piano/An7.ogg differ
diff --git a/sound/instruments/piano/An8.ogg b/sound/instruments/piano/An8.ogg
new file mode 100644
index 00000000000..32e5cb81e74
Binary files /dev/null and b/sound/instruments/piano/An8.ogg differ
diff --git a/sound/instruments/piano/Bb1.ogg b/sound/instruments/piano/Bb1.ogg
new file mode 100644
index 00000000000..c872abe1a97
Binary files /dev/null and b/sound/instruments/piano/Bb1.ogg differ
diff --git a/sound/instruments/piano/Bb2.ogg b/sound/instruments/piano/Bb2.ogg
new file mode 100644
index 00000000000..acd54ab3882
Binary files /dev/null and b/sound/instruments/piano/Bb2.ogg differ
diff --git a/sound/instruments/piano/Bb3.ogg b/sound/instruments/piano/Bb3.ogg
new file mode 100644
index 00000000000..33bea9f0797
Binary files /dev/null and b/sound/instruments/piano/Bb3.ogg differ
diff --git a/sound/instruments/piano/Bb4.ogg b/sound/instruments/piano/Bb4.ogg
new file mode 100644
index 00000000000..736fa1fc8d2
Binary files /dev/null and b/sound/instruments/piano/Bb4.ogg differ
diff --git a/sound/instruments/piano/Bb5.ogg b/sound/instruments/piano/Bb5.ogg
new file mode 100644
index 00000000000..38bddcf7610
Binary files /dev/null and b/sound/instruments/piano/Bb5.ogg differ
diff --git a/sound/instruments/piano/Bb6.ogg b/sound/instruments/piano/Bb6.ogg
new file mode 100644
index 00000000000..e7a04257457
Binary files /dev/null and b/sound/instruments/piano/Bb6.ogg differ
diff --git a/sound/instruments/piano/Bb7.ogg b/sound/instruments/piano/Bb7.ogg
new file mode 100644
index 00000000000..89441baba6c
Binary files /dev/null and b/sound/instruments/piano/Bb7.ogg differ
diff --git a/sound/instruments/piano/Bb8.ogg b/sound/instruments/piano/Bb8.ogg
new file mode 100644
index 00000000000..49dce93253c
Binary files /dev/null and b/sound/instruments/piano/Bb8.ogg differ
diff --git a/sound/instruments/piano/Bn1.ogg b/sound/instruments/piano/Bn1.ogg
new file mode 100644
index 00000000000..2ddf3f59b85
Binary files /dev/null and b/sound/instruments/piano/Bn1.ogg differ
diff --git a/sound/instruments/piano/Bn2.ogg b/sound/instruments/piano/Bn2.ogg
new file mode 100644
index 00000000000..92b49a24ca2
Binary files /dev/null and b/sound/instruments/piano/Bn2.ogg differ
diff --git a/sound/instruments/piano/Bn3.ogg b/sound/instruments/piano/Bn3.ogg
new file mode 100644
index 00000000000..20aa8ca434a
Binary files /dev/null and b/sound/instruments/piano/Bn3.ogg differ
diff --git a/sound/instruments/piano/Bn4.ogg b/sound/instruments/piano/Bn4.ogg
new file mode 100644
index 00000000000..b2ecc85255a
Binary files /dev/null and b/sound/instruments/piano/Bn4.ogg differ
diff --git a/sound/instruments/piano/Bn5.ogg b/sound/instruments/piano/Bn5.ogg
new file mode 100644
index 00000000000..e03af44292e
Binary files /dev/null and b/sound/instruments/piano/Bn5.ogg differ
diff --git a/sound/instruments/piano/Bn6.ogg b/sound/instruments/piano/Bn6.ogg
new file mode 100644
index 00000000000..1acf0d94d03
Binary files /dev/null and b/sound/instruments/piano/Bn6.ogg differ
diff --git a/sound/instruments/piano/Bn7.ogg b/sound/instruments/piano/Bn7.ogg
new file mode 100644
index 00000000000..b68372b4ab7
Binary files /dev/null and b/sound/instruments/piano/Bn7.ogg differ
diff --git a/sound/instruments/piano/Bn8.ogg b/sound/instruments/piano/Bn8.ogg
new file mode 100644
index 00000000000..5db915a607b
Binary files /dev/null and b/sound/instruments/piano/Bn8.ogg differ
diff --git a/sound/instruments/piano/Cn1.ogg b/sound/instruments/piano/Cn1.ogg
new file mode 100644
index 00000000000..e05b36d3252
Binary files /dev/null and b/sound/instruments/piano/Cn1.ogg differ
diff --git a/sound/instruments/piano/Cn2.ogg b/sound/instruments/piano/Cn2.ogg
new file mode 100644
index 00000000000..cc96f265705
Binary files /dev/null and b/sound/instruments/piano/Cn2.ogg differ
diff --git a/sound/instruments/piano/Cn3.ogg b/sound/instruments/piano/Cn3.ogg
new file mode 100644
index 00000000000..6d2f2069278
Binary files /dev/null and b/sound/instruments/piano/Cn3.ogg differ
diff --git a/sound/instruments/piano/Cn4.ogg b/sound/instruments/piano/Cn4.ogg
new file mode 100644
index 00000000000..d0c0f4995ed
Binary files /dev/null and b/sound/instruments/piano/Cn4.ogg differ
diff --git a/sound/instruments/piano/Cn5.ogg b/sound/instruments/piano/Cn5.ogg
new file mode 100644
index 00000000000..1d95dfa0992
Binary files /dev/null and b/sound/instruments/piano/Cn5.ogg differ
diff --git a/sound/instruments/piano/Cn6.ogg b/sound/instruments/piano/Cn6.ogg
new file mode 100644
index 00000000000..f1e847d32f5
Binary files /dev/null and b/sound/instruments/piano/Cn6.ogg differ
diff --git a/sound/instruments/piano/Cn7.ogg b/sound/instruments/piano/Cn7.ogg
new file mode 100644
index 00000000000..85cb1dd0fe9
Binary files /dev/null and b/sound/instruments/piano/Cn7.ogg differ
diff --git a/sound/instruments/piano/Cn8.ogg b/sound/instruments/piano/Cn8.ogg
new file mode 100644
index 00000000000..f081d91d8bb
Binary files /dev/null and b/sound/instruments/piano/Cn8.ogg differ
diff --git a/sound/instruments/piano/Cn9.ogg b/sound/instruments/piano/Cn9.ogg
new file mode 100644
index 00000000000..06172ca6f10
Binary files /dev/null and b/sound/instruments/piano/Cn9.ogg differ
diff --git a/sound/instruments/piano/Db1.ogg b/sound/instruments/piano/Db1.ogg
new file mode 100644
index 00000000000..a33554e4764
Binary files /dev/null and b/sound/instruments/piano/Db1.ogg differ
diff --git a/sound/instruments/piano/Db2.ogg b/sound/instruments/piano/Db2.ogg
new file mode 100644
index 00000000000..dd45c2f11da
Binary files /dev/null and b/sound/instruments/piano/Db2.ogg differ
diff --git a/sound/instruments/piano/Db3.ogg b/sound/instruments/piano/Db3.ogg
new file mode 100644
index 00000000000..ebfa23bbc34
Binary files /dev/null and b/sound/instruments/piano/Db3.ogg differ
diff --git a/sound/instruments/piano/Db4.ogg b/sound/instruments/piano/Db4.ogg
new file mode 100644
index 00000000000..52486484ebf
Binary files /dev/null and b/sound/instruments/piano/Db4.ogg differ
diff --git a/sound/instruments/piano/Db5.ogg b/sound/instruments/piano/Db5.ogg
new file mode 100644
index 00000000000..8250bbb7cb6
Binary files /dev/null and b/sound/instruments/piano/Db5.ogg differ
diff --git a/sound/instruments/piano/Db6.ogg b/sound/instruments/piano/Db6.ogg
new file mode 100644
index 00000000000..8ec394da17c
Binary files /dev/null and b/sound/instruments/piano/Db6.ogg differ
diff --git a/sound/instruments/piano/Db7.ogg b/sound/instruments/piano/Db7.ogg
new file mode 100644
index 00000000000..9a6c81dc343
Binary files /dev/null and b/sound/instruments/piano/Db7.ogg differ
diff --git a/sound/instruments/piano/Db8.ogg b/sound/instruments/piano/Db8.ogg
new file mode 100644
index 00000000000..2790f603907
Binary files /dev/null and b/sound/instruments/piano/Db8.ogg differ
diff --git a/sound/instruments/piano/Dn1.ogg b/sound/instruments/piano/Dn1.ogg
new file mode 100644
index 00000000000..89ac14cc143
Binary files /dev/null and b/sound/instruments/piano/Dn1.ogg differ
diff --git a/sound/instruments/piano/Dn2.ogg b/sound/instruments/piano/Dn2.ogg
new file mode 100644
index 00000000000..bb5f18fbf75
Binary files /dev/null and b/sound/instruments/piano/Dn2.ogg differ
diff --git a/sound/instruments/piano/Dn3.ogg b/sound/instruments/piano/Dn3.ogg
new file mode 100644
index 00000000000..6a54b775499
Binary files /dev/null and b/sound/instruments/piano/Dn3.ogg differ
diff --git a/sound/instruments/piano/Dn4.ogg b/sound/instruments/piano/Dn4.ogg
new file mode 100644
index 00000000000..8f930b8b50d
Binary files /dev/null and b/sound/instruments/piano/Dn4.ogg differ
diff --git a/sound/instruments/piano/Dn5.ogg b/sound/instruments/piano/Dn5.ogg
new file mode 100644
index 00000000000..981d37e9101
Binary files /dev/null and b/sound/instruments/piano/Dn5.ogg differ
diff --git a/sound/instruments/piano/Dn6.ogg b/sound/instruments/piano/Dn6.ogg
new file mode 100644
index 00000000000..112f101bb2e
Binary files /dev/null and b/sound/instruments/piano/Dn6.ogg differ
diff --git a/sound/instruments/piano/Dn7.ogg b/sound/instruments/piano/Dn7.ogg
new file mode 100644
index 00000000000..ff2724463cc
Binary files /dev/null and b/sound/instruments/piano/Dn7.ogg differ
diff --git a/sound/instruments/piano/Dn8.ogg b/sound/instruments/piano/Dn8.ogg
new file mode 100644
index 00000000000..5e2523f1237
Binary files /dev/null and b/sound/instruments/piano/Dn8.ogg differ
diff --git a/sound/instruments/piano/Eb1.ogg b/sound/instruments/piano/Eb1.ogg
new file mode 100644
index 00000000000..8923e11fd99
Binary files /dev/null and b/sound/instruments/piano/Eb1.ogg differ
diff --git a/sound/instruments/piano/Eb2.ogg b/sound/instruments/piano/Eb2.ogg
new file mode 100644
index 00000000000..b61faa17374
Binary files /dev/null and b/sound/instruments/piano/Eb2.ogg differ
diff --git a/sound/instruments/piano/Eb3.ogg b/sound/instruments/piano/Eb3.ogg
new file mode 100644
index 00000000000..bf80c6eeeb9
Binary files /dev/null and b/sound/instruments/piano/Eb3.ogg differ
diff --git a/sound/instruments/piano/Eb4.ogg b/sound/instruments/piano/Eb4.ogg
new file mode 100644
index 00000000000..fa991d11c52
Binary files /dev/null and b/sound/instruments/piano/Eb4.ogg differ
diff --git a/sound/instruments/piano/Eb5.ogg b/sound/instruments/piano/Eb5.ogg
new file mode 100644
index 00000000000..e63e0143a58
Binary files /dev/null and b/sound/instruments/piano/Eb5.ogg differ
diff --git a/sound/instruments/piano/Eb6.ogg b/sound/instruments/piano/Eb6.ogg
new file mode 100644
index 00000000000..e3f6ccb4c46
Binary files /dev/null and b/sound/instruments/piano/Eb6.ogg differ
diff --git a/sound/instruments/piano/Eb7.ogg b/sound/instruments/piano/Eb7.ogg
new file mode 100644
index 00000000000..a7dc94edbd0
Binary files /dev/null and b/sound/instruments/piano/Eb7.ogg differ
diff --git a/sound/instruments/piano/Eb8.ogg b/sound/instruments/piano/Eb8.ogg
new file mode 100644
index 00000000000..f6a7f466577
Binary files /dev/null and b/sound/instruments/piano/Eb8.ogg differ
diff --git a/sound/instruments/piano/En1.ogg b/sound/instruments/piano/En1.ogg
new file mode 100644
index 00000000000..fbcb29c2de9
Binary files /dev/null and b/sound/instruments/piano/En1.ogg differ
diff --git a/sound/instruments/piano/En2.ogg b/sound/instruments/piano/En2.ogg
new file mode 100644
index 00000000000..b6f4f1a5e81
Binary files /dev/null and b/sound/instruments/piano/En2.ogg differ
diff --git a/sound/instruments/piano/En3.ogg b/sound/instruments/piano/En3.ogg
new file mode 100644
index 00000000000..5f6ade5f1b4
Binary files /dev/null and b/sound/instruments/piano/En3.ogg differ
diff --git a/sound/instruments/piano/En4.ogg b/sound/instruments/piano/En4.ogg
new file mode 100644
index 00000000000..0f567ffb987
Binary files /dev/null and b/sound/instruments/piano/En4.ogg differ
diff --git a/sound/instruments/piano/En5.ogg b/sound/instruments/piano/En5.ogg
new file mode 100644
index 00000000000..05719f2a2d4
Binary files /dev/null and b/sound/instruments/piano/En5.ogg differ
diff --git a/sound/instruments/piano/En6.ogg b/sound/instruments/piano/En6.ogg
new file mode 100644
index 00000000000..b1295b67ee5
Binary files /dev/null and b/sound/instruments/piano/En6.ogg differ
diff --git a/sound/instruments/piano/En7.ogg b/sound/instruments/piano/En7.ogg
new file mode 100644
index 00000000000..0d97b93fbce
Binary files /dev/null and b/sound/instruments/piano/En7.ogg differ
diff --git a/sound/instruments/piano/En8.ogg b/sound/instruments/piano/En8.ogg
new file mode 100644
index 00000000000..f0ea5f1ec53
Binary files /dev/null and b/sound/instruments/piano/En8.ogg differ
diff --git a/sound/instruments/piano/Fn1.ogg b/sound/instruments/piano/Fn1.ogg
new file mode 100644
index 00000000000..9d10f8ccf63
Binary files /dev/null and b/sound/instruments/piano/Fn1.ogg differ
diff --git a/sound/instruments/piano/Fn2.ogg b/sound/instruments/piano/Fn2.ogg
new file mode 100644
index 00000000000..24cff105e64
Binary files /dev/null and b/sound/instruments/piano/Fn2.ogg differ
diff --git a/sound/instruments/piano/Fn3.ogg b/sound/instruments/piano/Fn3.ogg
new file mode 100644
index 00000000000..313c54b59ae
Binary files /dev/null and b/sound/instruments/piano/Fn3.ogg differ
diff --git a/sound/instruments/piano/Fn4.ogg b/sound/instruments/piano/Fn4.ogg
new file mode 100644
index 00000000000..3331d67fbe9
Binary files /dev/null and b/sound/instruments/piano/Fn4.ogg differ
diff --git a/sound/instruments/piano/Fn5.ogg b/sound/instruments/piano/Fn5.ogg
new file mode 100644
index 00000000000..72941715953
Binary files /dev/null and b/sound/instruments/piano/Fn5.ogg differ
diff --git a/sound/instruments/piano/Fn6.ogg b/sound/instruments/piano/Fn6.ogg
new file mode 100644
index 00000000000..8218928c85e
Binary files /dev/null and b/sound/instruments/piano/Fn6.ogg differ
diff --git a/sound/instruments/piano/Fn7.ogg b/sound/instruments/piano/Fn7.ogg
new file mode 100644
index 00000000000..b459e82acdd
Binary files /dev/null and b/sound/instruments/piano/Fn7.ogg differ
diff --git a/sound/instruments/piano/Fn8.ogg b/sound/instruments/piano/Fn8.ogg
new file mode 100644
index 00000000000..be144990590
Binary files /dev/null and b/sound/instruments/piano/Fn8.ogg differ
diff --git a/sound/instruments/piano/Gb1.ogg b/sound/instruments/piano/Gb1.ogg
new file mode 100644
index 00000000000..d53e3ea9d8f
Binary files /dev/null and b/sound/instruments/piano/Gb1.ogg differ
diff --git a/sound/instruments/piano/Gb2.ogg b/sound/instruments/piano/Gb2.ogg
new file mode 100644
index 00000000000..0ceea3ecc85
Binary files /dev/null and b/sound/instruments/piano/Gb2.ogg differ
diff --git a/sound/instruments/piano/Gb3.ogg b/sound/instruments/piano/Gb3.ogg
new file mode 100644
index 00000000000..53b56c5017d
Binary files /dev/null and b/sound/instruments/piano/Gb3.ogg differ
diff --git a/sound/instruments/piano/Gb4.ogg b/sound/instruments/piano/Gb4.ogg
new file mode 100644
index 00000000000..c982d7beaf0
Binary files /dev/null and b/sound/instruments/piano/Gb4.ogg differ
diff --git a/sound/instruments/piano/Gb5.ogg b/sound/instruments/piano/Gb5.ogg
new file mode 100644
index 00000000000..787c19bed8d
Binary files /dev/null and b/sound/instruments/piano/Gb5.ogg differ
diff --git a/sound/instruments/piano/Gb6.ogg b/sound/instruments/piano/Gb6.ogg
new file mode 100644
index 00000000000..d5a5dbb2d1b
Binary files /dev/null and b/sound/instruments/piano/Gb6.ogg differ
diff --git a/sound/instruments/piano/Gb7.ogg b/sound/instruments/piano/Gb7.ogg
new file mode 100644
index 00000000000..c6f92716803
Binary files /dev/null and b/sound/instruments/piano/Gb7.ogg differ
diff --git a/sound/instruments/piano/Gb8.ogg b/sound/instruments/piano/Gb8.ogg
new file mode 100644
index 00000000000..85c0b707545
Binary files /dev/null and b/sound/instruments/piano/Gb8.ogg differ
diff --git a/sound/instruments/piano/Gn1.ogg b/sound/instruments/piano/Gn1.ogg
new file mode 100644
index 00000000000..d2829a4c0b2
Binary files /dev/null and b/sound/instruments/piano/Gn1.ogg differ
diff --git a/sound/instruments/piano/Gn2.ogg b/sound/instruments/piano/Gn2.ogg
new file mode 100644
index 00000000000..e657124c717
Binary files /dev/null and b/sound/instruments/piano/Gn2.ogg differ
diff --git a/sound/instruments/piano/Gn3.ogg b/sound/instruments/piano/Gn3.ogg
new file mode 100644
index 00000000000..c1e88555f17
Binary files /dev/null and b/sound/instruments/piano/Gn3.ogg differ
diff --git a/sound/instruments/piano/Gn4.ogg b/sound/instruments/piano/Gn4.ogg
new file mode 100644
index 00000000000..bbae7fa3e8b
Binary files /dev/null and b/sound/instruments/piano/Gn4.ogg differ
diff --git a/sound/instruments/piano/Gn5.ogg b/sound/instruments/piano/Gn5.ogg
new file mode 100644
index 00000000000..556cd6085a3
Binary files /dev/null and b/sound/instruments/piano/Gn5.ogg differ
diff --git a/sound/instruments/piano/Gn6.ogg b/sound/instruments/piano/Gn6.ogg
new file mode 100644
index 00000000000..6bf8c36013d
Binary files /dev/null and b/sound/instruments/piano/Gn6.ogg differ
diff --git a/sound/instruments/piano/Gn7.ogg b/sound/instruments/piano/Gn7.ogg
new file mode 100644
index 00000000000..0637492985e
Binary files /dev/null and b/sound/instruments/piano/Gn7.ogg differ
diff --git a/sound/instruments/piano/Gn8.ogg b/sound/instruments/piano/Gn8.ogg
new file mode 100644
index 00000000000..85f89a198ea
Binary files /dev/null and b/sound/instruments/piano/Gn8.ogg differ
diff --git a/sound/instruments/recorder/Ab2.mid b/sound/instruments/recorder/Ab2.mid
new file mode 100644
index 00000000000..2fb39fa140b
Binary files /dev/null and b/sound/instruments/recorder/Ab2.mid differ
diff --git a/sound/instruments/recorder/Ab3.mid b/sound/instruments/recorder/Ab3.mid
new file mode 100644
index 00000000000..7a04ef76019
Binary files /dev/null and b/sound/instruments/recorder/Ab3.mid differ
diff --git a/sound/instruments/recorder/Ab4.mid b/sound/instruments/recorder/Ab4.mid
new file mode 100644
index 00000000000..93e51322a02
Binary files /dev/null and b/sound/instruments/recorder/Ab4.mid differ
diff --git a/sound/instruments/recorder/Ab5.mid b/sound/instruments/recorder/Ab5.mid
new file mode 100644
index 00000000000..ad91ee6e0a3
Binary files /dev/null and b/sound/instruments/recorder/Ab5.mid differ
diff --git a/sound/instruments/recorder/Ab6.mid b/sound/instruments/recorder/Ab6.mid
new file mode 100644
index 00000000000..3376b0c0ee6
Binary files /dev/null and b/sound/instruments/recorder/Ab6.mid differ
diff --git a/sound/instruments/recorder/An2.mid b/sound/instruments/recorder/An2.mid
new file mode 100644
index 00000000000..d9e9c0e4c3c
Binary files /dev/null and b/sound/instruments/recorder/An2.mid differ
diff --git a/sound/instruments/recorder/An3.mid b/sound/instruments/recorder/An3.mid
new file mode 100644
index 00000000000..91aa5c253c7
Binary files /dev/null and b/sound/instruments/recorder/An3.mid differ
diff --git a/sound/instruments/recorder/An4.mid b/sound/instruments/recorder/An4.mid
new file mode 100644
index 00000000000..bbfba81a4a7
Binary files /dev/null and b/sound/instruments/recorder/An4.mid differ
diff --git a/sound/instruments/recorder/An5.mid b/sound/instruments/recorder/An5.mid
new file mode 100644
index 00000000000..ab73190d684
Binary files /dev/null and b/sound/instruments/recorder/An5.mid differ
diff --git a/sound/instruments/recorder/An6.mid b/sound/instruments/recorder/An6.mid
new file mode 100644
index 00000000000..8417f2916ff
Binary files /dev/null and b/sound/instruments/recorder/An6.mid differ
diff --git a/sound/instruments/recorder/Bb2.mid b/sound/instruments/recorder/Bb2.mid
new file mode 100644
index 00000000000..9ec20e3d2f3
Binary files /dev/null and b/sound/instruments/recorder/Bb2.mid differ
diff --git a/sound/instruments/recorder/Bb3.mid b/sound/instruments/recorder/Bb3.mid
new file mode 100644
index 00000000000..bd6fc036e99
Binary files /dev/null and b/sound/instruments/recorder/Bb3.mid differ
diff --git a/sound/instruments/recorder/Bb4.mid b/sound/instruments/recorder/Bb4.mid
new file mode 100644
index 00000000000..48f9db73fa0
Binary files /dev/null and b/sound/instruments/recorder/Bb4.mid differ
diff --git a/sound/instruments/recorder/Bb5.mid b/sound/instruments/recorder/Bb5.mid
new file mode 100644
index 00000000000..20ffe453eba
Binary files /dev/null and b/sound/instruments/recorder/Bb5.mid differ
diff --git a/sound/instruments/recorder/Bb6.mid b/sound/instruments/recorder/Bb6.mid
new file mode 100644
index 00000000000..954c1c20793
Binary files /dev/null and b/sound/instruments/recorder/Bb6.mid differ
diff --git a/sound/instruments/recorder/Bn2.mid b/sound/instruments/recorder/Bn2.mid
new file mode 100644
index 00000000000..ca1e63c25b4
Binary files /dev/null and b/sound/instruments/recorder/Bn2.mid differ
diff --git a/sound/instruments/recorder/Bn3.mid b/sound/instruments/recorder/Bn3.mid
new file mode 100644
index 00000000000..11b0c2fe374
Binary files /dev/null and b/sound/instruments/recorder/Bn3.mid differ
diff --git a/sound/instruments/recorder/Bn4.mid b/sound/instruments/recorder/Bn4.mid
new file mode 100644
index 00000000000..5b11df50ffd
Binary files /dev/null and b/sound/instruments/recorder/Bn4.mid differ
diff --git a/sound/instruments/recorder/Bn5.mid b/sound/instruments/recorder/Bn5.mid
new file mode 100644
index 00000000000..b353150df85
Binary files /dev/null and b/sound/instruments/recorder/Bn5.mid differ
diff --git a/sound/instruments/recorder/Bn6.mid b/sound/instruments/recorder/Bn6.mid
new file mode 100644
index 00000000000..cf69ce6d21d
Binary files /dev/null and b/sound/instruments/recorder/Bn6.mid differ
diff --git a/sound/instruments/recorder/Cn2.mid b/sound/instruments/recorder/Cn2.mid
new file mode 100644
index 00000000000..858ec955afd
Binary files /dev/null and b/sound/instruments/recorder/Cn2.mid differ
diff --git a/sound/instruments/recorder/Cn3.mid b/sound/instruments/recorder/Cn3.mid
new file mode 100644
index 00000000000..2c65b49f741
Binary files /dev/null and b/sound/instruments/recorder/Cn3.mid differ
diff --git a/sound/instruments/recorder/Cn4.mid b/sound/instruments/recorder/Cn4.mid
new file mode 100644
index 00000000000..9fc1fd5b5a8
Binary files /dev/null and b/sound/instruments/recorder/Cn4.mid differ
diff --git a/sound/instruments/recorder/Cn5.mid b/sound/instruments/recorder/Cn5.mid
new file mode 100644
index 00000000000..6a86a7e06f1
Binary files /dev/null and b/sound/instruments/recorder/Cn5.mid differ
diff --git a/sound/instruments/recorder/Cn6.mid b/sound/instruments/recorder/Cn6.mid
new file mode 100644
index 00000000000..43355e27c31
Binary files /dev/null and b/sound/instruments/recorder/Cn6.mid differ
diff --git a/sound/instruments/recorder/Cn7.mid b/sound/instruments/recorder/Cn7.mid
new file mode 100644
index 00000000000..ff5e08b0e5d
Binary files /dev/null and b/sound/instruments/recorder/Cn7.mid differ
diff --git a/sound/instruments/recorder/Db2.mid b/sound/instruments/recorder/Db2.mid
new file mode 100644
index 00000000000..1ac1299e6dd
Binary files /dev/null and b/sound/instruments/recorder/Db2.mid differ
diff --git a/sound/instruments/recorder/Db3.mid b/sound/instruments/recorder/Db3.mid
new file mode 100644
index 00000000000..7a45bdc91b8
Binary files /dev/null and b/sound/instruments/recorder/Db3.mid differ
diff --git a/sound/instruments/recorder/Db4.mid b/sound/instruments/recorder/Db4.mid
new file mode 100644
index 00000000000..6dca8557091
Binary files /dev/null and b/sound/instruments/recorder/Db4.mid differ
diff --git a/sound/instruments/recorder/Db5.mid b/sound/instruments/recorder/Db5.mid
new file mode 100644
index 00000000000..5d83733262a
Binary files /dev/null and b/sound/instruments/recorder/Db5.mid differ
diff --git a/sound/instruments/recorder/Db6.mid b/sound/instruments/recorder/Db6.mid
new file mode 100644
index 00000000000..3f45f77bcd2
Binary files /dev/null and b/sound/instruments/recorder/Db6.mid differ
diff --git a/sound/instruments/recorder/Db7.mid b/sound/instruments/recorder/Db7.mid
new file mode 100644
index 00000000000..d326ab7bd1a
Binary files /dev/null and b/sound/instruments/recorder/Db7.mid differ
diff --git a/sound/instruments/recorder/Dn2.mid b/sound/instruments/recorder/Dn2.mid
new file mode 100644
index 00000000000..8ddef0e0d04
Binary files /dev/null and b/sound/instruments/recorder/Dn2.mid differ
diff --git a/sound/instruments/recorder/Dn3.mid b/sound/instruments/recorder/Dn3.mid
new file mode 100644
index 00000000000..b11ff85aab5
Binary files /dev/null and b/sound/instruments/recorder/Dn3.mid differ
diff --git a/sound/instruments/recorder/Dn4.mid b/sound/instruments/recorder/Dn4.mid
new file mode 100644
index 00000000000..ae877932997
Binary files /dev/null and b/sound/instruments/recorder/Dn4.mid differ
diff --git a/sound/instruments/recorder/Dn5.mid b/sound/instruments/recorder/Dn5.mid
new file mode 100644
index 00000000000..440da3c7781
Binary files /dev/null and b/sound/instruments/recorder/Dn5.mid differ
diff --git a/sound/instruments/recorder/Dn6.mid b/sound/instruments/recorder/Dn6.mid
new file mode 100644
index 00000000000..d96623529fd
Binary files /dev/null and b/sound/instruments/recorder/Dn6.mid differ
diff --git a/sound/instruments/recorder/Eb2.mid b/sound/instruments/recorder/Eb2.mid
new file mode 100644
index 00000000000..5e5b8385f96
Binary files /dev/null and b/sound/instruments/recorder/Eb2.mid differ
diff --git a/sound/instruments/recorder/Eb3.mid b/sound/instruments/recorder/Eb3.mid
new file mode 100644
index 00000000000..8a907f6ebfe
Binary files /dev/null and b/sound/instruments/recorder/Eb3.mid differ
diff --git a/sound/instruments/recorder/Eb4.mid b/sound/instruments/recorder/Eb4.mid
new file mode 100644
index 00000000000..4cf1c0ed28c
Binary files /dev/null and b/sound/instruments/recorder/Eb4.mid differ
diff --git a/sound/instruments/recorder/Eb5.mid b/sound/instruments/recorder/Eb5.mid
new file mode 100644
index 00000000000..ea7c8983d38
Binary files /dev/null and b/sound/instruments/recorder/Eb5.mid differ
diff --git a/sound/instruments/recorder/Eb6.mid b/sound/instruments/recorder/Eb6.mid
new file mode 100644
index 00000000000..0c477b65fdc
Binary files /dev/null and b/sound/instruments/recorder/Eb6.mid differ
diff --git a/sound/instruments/recorder/En2.mid b/sound/instruments/recorder/En2.mid
new file mode 100644
index 00000000000..ff9a551a8e0
Binary files /dev/null and b/sound/instruments/recorder/En2.mid differ
diff --git a/sound/instruments/recorder/En3.mid b/sound/instruments/recorder/En3.mid
new file mode 100644
index 00000000000..fd192ab704f
Binary files /dev/null and b/sound/instruments/recorder/En3.mid differ
diff --git a/sound/instruments/recorder/En4.mid b/sound/instruments/recorder/En4.mid
new file mode 100644
index 00000000000..77c01ec6471
Binary files /dev/null and b/sound/instruments/recorder/En4.mid differ
diff --git a/sound/instruments/recorder/En5.mid b/sound/instruments/recorder/En5.mid
new file mode 100644
index 00000000000..be74f3f0972
Binary files /dev/null and b/sound/instruments/recorder/En5.mid differ
diff --git a/sound/instruments/recorder/En6.mid b/sound/instruments/recorder/En6.mid
new file mode 100644
index 00000000000..95365e9a264
Binary files /dev/null and b/sound/instruments/recorder/En6.mid differ
diff --git a/sound/instruments/recorder/Fn2.mid b/sound/instruments/recorder/Fn2.mid
new file mode 100644
index 00000000000..3a2563ea2ce
Binary files /dev/null and b/sound/instruments/recorder/Fn2.mid differ
diff --git a/sound/instruments/recorder/Fn3.mid b/sound/instruments/recorder/Fn3.mid
new file mode 100644
index 00000000000..3114cce6d81
Binary files /dev/null and b/sound/instruments/recorder/Fn3.mid differ
diff --git a/sound/instruments/recorder/Fn4.mid b/sound/instruments/recorder/Fn4.mid
new file mode 100644
index 00000000000..012754e474c
Binary files /dev/null and b/sound/instruments/recorder/Fn4.mid differ
diff --git a/sound/instruments/recorder/Fn5.mid b/sound/instruments/recorder/Fn5.mid
new file mode 100644
index 00000000000..83a83cc62e9
Binary files /dev/null and b/sound/instruments/recorder/Fn5.mid differ
diff --git a/sound/instruments/recorder/Fn6.mid b/sound/instruments/recorder/Fn6.mid
new file mode 100644
index 00000000000..9e7fbf85280
Binary files /dev/null and b/sound/instruments/recorder/Fn6.mid differ
diff --git a/sound/instruments/recorder/Gb2.mid b/sound/instruments/recorder/Gb2.mid
new file mode 100644
index 00000000000..639ea8a2d00
Binary files /dev/null and b/sound/instruments/recorder/Gb2.mid differ
diff --git a/sound/instruments/recorder/Gb3.mid b/sound/instruments/recorder/Gb3.mid
new file mode 100644
index 00000000000..b5b10b4993a
Binary files /dev/null and b/sound/instruments/recorder/Gb3.mid differ
diff --git a/sound/instruments/recorder/Gb4.mid b/sound/instruments/recorder/Gb4.mid
new file mode 100644
index 00000000000..4fdf67d9b99
Binary files /dev/null and b/sound/instruments/recorder/Gb4.mid differ
diff --git a/sound/instruments/recorder/Gb5.mid b/sound/instruments/recorder/Gb5.mid
new file mode 100644
index 00000000000..233260ecc17
Binary files /dev/null and b/sound/instruments/recorder/Gb5.mid differ
diff --git a/sound/instruments/recorder/Gb6.mid b/sound/instruments/recorder/Gb6.mid
new file mode 100644
index 00000000000..d594ae7c956
Binary files /dev/null and b/sound/instruments/recorder/Gb6.mid differ
diff --git a/sound/instruments/recorder/Gn2.mid b/sound/instruments/recorder/Gn2.mid
new file mode 100644
index 00000000000..2786935b6d2
Binary files /dev/null and b/sound/instruments/recorder/Gn2.mid differ
diff --git a/sound/instruments/recorder/Gn3.mid b/sound/instruments/recorder/Gn3.mid
new file mode 100644
index 00000000000..d1aae368ab4
Binary files /dev/null and b/sound/instruments/recorder/Gn3.mid differ
diff --git a/sound/instruments/recorder/Gn4.mid b/sound/instruments/recorder/Gn4.mid
new file mode 100644
index 00000000000..3308c871d48
Binary files /dev/null and b/sound/instruments/recorder/Gn4.mid differ
diff --git a/sound/instruments/recorder/Gn5.mid b/sound/instruments/recorder/Gn5.mid
new file mode 100644
index 00000000000..a46440992c8
Binary files /dev/null and b/sound/instruments/recorder/Gn5.mid differ
diff --git a/sound/instruments/recorder/Gn6.mid b/sound/instruments/recorder/Gn6.mid
new file mode 100644
index 00000000000..0f84be6cdc7
Binary files /dev/null and b/sound/instruments/recorder/Gn6.mid differ
diff --git a/sound/instruments/saxophone/Ab2.mid b/sound/instruments/saxophone/Ab2.mid
new file mode 100644
index 00000000000..3408aba1316
Binary files /dev/null and b/sound/instruments/saxophone/Ab2.mid differ
diff --git a/sound/instruments/saxophone/Ab3.mid b/sound/instruments/saxophone/Ab3.mid
new file mode 100644
index 00000000000..e469c51b65b
Binary files /dev/null and b/sound/instruments/saxophone/Ab3.mid differ
diff --git a/sound/instruments/saxophone/Ab4.mid b/sound/instruments/saxophone/Ab4.mid
new file mode 100644
index 00000000000..6ee2a9e41be
Binary files /dev/null and b/sound/instruments/saxophone/Ab4.mid differ
diff --git a/sound/instruments/saxophone/Ab5.mid b/sound/instruments/saxophone/Ab5.mid
new file mode 100644
index 00000000000..40b60e31715
Binary files /dev/null and b/sound/instruments/saxophone/Ab5.mid differ
diff --git a/sound/instruments/saxophone/Ab6.mid b/sound/instruments/saxophone/Ab6.mid
new file mode 100644
index 00000000000..d38a8a6c714
Binary files /dev/null and b/sound/instruments/saxophone/Ab6.mid differ
diff --git a/sound/instruments/saxophone/An2.mid b/sound/instruments/saxophone/An2.mid
new file mode 100644
index 00000000000..d481ec5a450
Binary files /dev/null and b/sound/instruments/saxophone/An2.mid differ
diff --git a/sound/instruments/saxophone/An3.mid b/sound/instruments/saxophone/An3.mid
new file mode 100644
index 00000000000..744579fb4b6
Binary files /dev/null and b/sound/instruments/saxophone/An3.mid differ
diff --git a/sound/instruments/saxophone/An4.mid b/sound/instruments/saxophone/An4.mid
new file mode 100644
index 00000000000..1885ad32228
Binary files /dev/null and b/sound/instruments/saxophone/An4.mid differ
diff --git a/sound/instruments/saxophone/An5.mid b/sound/instruments/saxophone/An5.mid
new file mode 100644
index 00000000000..23cf20713cf
Binary files /dev/null and b/sound/instruments/saxophone/An5.mid differ
diff --git a/sound/instruments/saxophone/An6.mid b/sound/instruments/saxophone/An6.mid
new file mode 100644
index 00000000000..0c94d822557
Binary files /dev/null and b/sound/instruments/saxophone/An6.mid differ
diff --git a/sound/instruments/saxophone/Bb2.mid b/sound/instruments/saxophone/Bb2.mid
new file mode 100644
index 00000000000..d30855aaee1
Binary files /dev/null and b/sound/instruments/saxophone/Bb2.mid differ
diff --git a/sound/instruments/saxophone/Bb3.mid b/sound/instruments/saxophone/Bb3.mid
new file mode 100644
index 00000000000..2354e4c3e87
Binary files /dev/null and b/sound/instruments/saxophone/Bb3.mid differ
diff --git a/sound/instruments/saxophone/Bb4.mid b/sound/instruments/saxophone/Bb4.mid
new file mode 100644
index 00000000000..5ac9de9585d
Binary files /dev/null and b/sound/instruments/saxophone/Bb4.mid differ
diff --git a/sound/instruments/saxophone/Bb5.mid b/sound/instruments/saxophone/Bb5.mid
new file mode 100644
index 00000000000..347560269eb
Binary files /dev/null and b/sound/instruments/saxophone/Bb5.mid differ
diff --git a/sound/instruments/saxophone/Bb6.mid b/sound/instruments/saxophone/Bb6.mid
new file mode 100644
index 00000000000..335a8df26c3
Binary files /dev/null and b/sound/instruments/saxophone/Bb6.mid differ
diff --git a/sound/instruments/saxophone/Bn2.mid b/sound/instruments/saxophone/Bn2.mid
new file mode 100644
index 00000000000..9f215b5c7ce
Binary files /dev/null and b/sound/instruments/saxophone/Bn2.mid differ
diff --git a/sound/instruments/saxophone/Bn3.mid b/sound/instruments/saxophone/Bn3.mid
new file mode 100644
index 00000000000..1d28aca7076
Binary files /dev/null and b/sound/instruments/saxophone/Bn3.mid differ
diff --git a/sound/instruments/saxophone/Bn4.mid b/sound/instruments/saxophone/Bn4.mid
new file mode 100644
index 00000000000..5c8bdf9775e
Binary files /dev/null and b/sound/instruments/saxophone/Bn4.mid differ
diff --git a/sound/instruments/saxophone/Bn5.mid b/sound/instruments/saxophone/Bn5.mid
new file mode 100644
index 00000000000..e74f1f7415c
Binary files /dev/null and b/sound/instruments/saxophone/Bn5.mid differ
diff --git a/sound/instruments/saxophone/Bn6.mid b/sound/instruments/saxophone/Bn6.mid
new file mode 100644
index 00000000000..59d6e12a145
Binary files /dev/null and b/sound/instruments/saxophone/Bn6.mid differ
diff --git a/sound/instruments/saxophone/Cn2.mid b/sound/instruments/saxophone/Cn2.mid
new file mode 100644
index 00000000000..7a816e603b8
Binary files /dev/null and b/sound/instruments/saxophone/Cn2.mid differ
diff --git a/sound/instruments/saxophone/Cn3.mid b/sound/instruments/saxophone/Cn3.mid
new file mode 100644
index 00000000000..1a575b087dc
Binary files /dev/null and b/sound/instruments/saxophone/Cn3.mid differ
diff --git a/sound/instruments/saxophone/Cn4.mid b/sound/instruments/saxophone/Cn4.mid
new file mode 100644
index 00000000000..56377f1aed9
Binary files /dev/null and b/sound/instruments/saxophone/Cn4.mid differ
diff --git a/sound/instruments/saxophone/Cn5.mid b/sound/instruments/saxophone/Cn5.mid
new file mode 100644
index 00000000000..cc023521272
Binary files /dev/null and b/sound/instruments/saxophone/Cn5.mid differ
diff --git a/sound/instruments/saxophone/Cn6.mid b/sound/instruments/saxophone/Cn6.mid
new file mode 100644
index 00000000000..ed149684846
Binary files /dev/null and b/sound/instruments/saxophone/Cn6.mid differ
diff --git a/sound/instruments/saxophone/Db2.mid b/sound/instruments/saxophone/Db2.mid
new file mode 100644
index 00000000000..3ccbf59863c
Binary files /dev/null and b/sound/instruments/saxophone/Db2.mid differ
diff --git a/sound/instruments/saxophone/Db3.mid b/sound/instruments/saxophone/Db3.mid
new file mode 100644
index 00000000000..0d10fa08d80
Binary files /dev/null and b/sound/instruments/saxophone/Db3.mid differ
diff --git a/sound/instruments/saxophone/Db4.mid b/sound/instruments/saxophone/Db4.mid
new file mode 100644
index 00000000000..2684d9bd02d
Binary files /dev/null and b/sound/instruments/saxophone/Db4.mid differ
diff --git a/sound/instruments/saxophone/Db5.mid b/sound/instruments/saxophone/Db5.mid
new file mode 100644
index 00000000000..8380516db07
Binary files /dev/null and b/sound/instruments/saxophone/Db5.mid differ
diff --git a/sound/instruments/saxophone/Db6.mid b/sound/instruments/saxophone/Db6.mid
new file mode 100644
index 00000000000..29f95c9e0c8
Binary files /dev/null and b/sound/instruments/saxophone/Db6.mid differ
diff --git a/sound/instruments/saxophone/Dn2.mid b/sound/instruments/saxophone/Dn2.mid
new file mode 100644
index 00000000000..19cf21557b4
Binary files /dev/null and b/sound/instruments/saxophone/Dn2.mid differ
diff --git a/sound/instruments/saxophone/Dn3.mid b/sound/instruments/saxophone/Dn3.mid
new file mode 100644
index 00000000000..24077502dd0
Binary files /dev/null and b/sound/instruments/saxophone/Dn3.mid differ
diff --git a/sound/instruments/saxophone/Dn4.mid b/sound/instruments/saxophone/Dn4.mid
new file mode 100644
index 00000000000..5208e98b43f
Binary files /dev/null and b/sound/instruments/saxophone/Dn4.mid differ
diff --git a/sound/instruments/saxophone/Dn5.mid b/sound/instruments/saxophone/Dn5.mid
new file mode 100644
index 00000000000..cb40d8ca9c2
Binary files /dev/null and b/sound/instruments/saxophone/Dn5.mid differ
diff --git a/sound/instruments/saxophone/Dn6.mid b/sound/instruments/saxophone/Dn6.mid
new file mode 100644
index 00000000000..f18bcbb6d7a
Binary files /dev/null and b/sound/instruments/saxophone/Dn6.mid differ
diff --git a/sound/instruments/saxophone/Eb2.mid b/sound/instruments/saxophone/Eb2.mid
new file mode 100644
index 00000000000..967622de3f0
Binary files /dev/null and b/sound/instruments/saxophone/Eb2.mid differ
diff --git a/sound/instruments/saxophone/Eb3.mid b/sound/instruments/saxophone/Eb3.mid
new file mode 100644
index 00000000000..160ed39a06b
Binary files /dev/null and b/sound/instruments/saxophone/Eb3.mid differ
diff --git a/sound/instruments/saxophone/Eb4.mid b/sound/instruments/saxophone/Eb4.mid
new file mode 100644
index 00000000000..f125b54a120
Binary files /dev/null and b/sound/instruments/saxophone/Eb4.mid differ
diff --git a/sound/instruments/saxophone/Eb5.mid b/sound/instruments/saxophone/Eb5.mid
new file mode 100644
index 00000000000..7cde98bb88f
Binary files /dev/null and b/sound/instruments/saxophone/Eb5.mid differ
diff --git a/sound/instruments/saxophone/Eb6.mid b/sound/instruments/saxophone/Eb6.mid
new file mode 100644
index 00000000000..f1804b61657
Binary files /dev/null and b/sound/instruments/saxophone/Eb6.mid differ
diff --git a/sound/instruments/saxophone/En2.mid b/sound/instruments/saxophone/En2.mid
new file mode 100644
index 00000000000..5f8168a3cbd
Binary files /dev/null and b/sound/instruments/saxophone/En2.mid differ
diff --git a/sound/instruments/saxophone/En3.mid b/sound/instruments/saxophone/En3.mid
new file mode 100644
index 00000000000..1762e61de97
Binary files /dev/null and b/sound/instruments/saxophone/En3.mid differ
diff --git a/sound/instruments/saxophone/En4.mid b/sound/instruments/saxophone/En4.mid
new file mode 100644
index 00000000000..0304e520a0f
Binary files /dev/null and b/sound/instruments/saxophone/En4.mid differ
diff --git a/sound/instruments/saxophone/En5.mid b/sound/instruments/saxophone/En5.mid
new file mode 100644
index 00000000000..40d32ab74ac
Binary files /dev/null and b/sound/instruments/saxophone/En5.mid differ
diff --git a/sound/instruments/saxophone/En6.mid b/sound/instruments/saxophone/En6.mid
new file mode 100644
index 00000000000..5bdd835c5c4
Binary files /dev/null and b/sound/instruments/saxophone/En6.mid differ
diff --git a/sound/instruments/saxophone/Fn2.mid b/sound/instruments/saxophone/Fn2.mid
new file mode 100644
index 00000000000..9260b884d8a
Binary files /dev/null and b/sound/instruments/saxophone/Fn2.mid differ
diff --git a/sound/instruments/saxophone/Fn3.mid b/sound/instruments/saxophone/Fn3.mid
new file mode 100644
index 00000000000..fb22409dcc8
Binary files /dev/null and b/sound/instruments/saxophone/Fn3.mid differ
diff --git a/sound/instruments/saxophone/Fn4.mid b/sound/instruments/saxophone/Fn4.mid
new file mode 100644
index 00000000000..fb4ffd3a593
Binary files /dev/null and b/sound/instruments/saxophone/Fn4.mid differ
diff --git a/sound/instruments/saxophone/Fn5.mid b/sound/instruments/saxophone/Fn5.mid
new file mode 100644
index 00000000000..9b7241e59e3
Binary files /dev/null and b/sound/instruments/saxophone/Fn5.mid differ
diff --git a/sound/instruments/saxophone/Fn6.mid b/sound/instruments/saxophone/Fn6.mid
new file mode 100644
index 00000000000..c402032321a
Binary files /dev/null and b/sound/instruments/saxophone/Fn6.mid differ
diff --git a/sound/instruments/saxophone/Gb2.mid b/sound/instruments/saxophone/Gb2.mid
new file mode 100644
index 00000000000..2a872b5dec5
Binary files /dev/null and b/sound/instruments/saxophone/Gb2.mid differ
diff --git a/sound/instruments/saxophone/Gb3.mid b/sound/instruments/saxophone/Gb3.mid
new file mode 100644
index 00000000000..5e5e5322826
Binary files /dev/null and b/sound/instruments/saxophone/Gb3.mid differ
diff --git a/sound/instruments/saxophone/Gb4.mid b/sound/instruments/saxophone/Gb4.mid
new file mode 100644
index 00000000000..758125de3e6
Binary files /dev/null and b/sound/instruments/saxophone/Gb4.mid differ
diff --git a/sound/instruments/saxophone/Gb5.mid b/sound/instruments/saxophone/Gb5.mid
new file mode 100644
index 00000000000..4afd8c65c90
Binary files /dev/null and b/sound/instruments/saxophone/Gb5.mid differ
diff --git a/sound/instruments/saxophone/Gb6.mid b/sound/instruments/saxophone/Gb6.mid
new file mode 100644
index 00000000000..a8f1d2107e4
Binary files /dev/null and b/sound/instruments/saxophone/Gb6.mid differ
diff --git a/sound/instruments/saxophone/Gn2.mid b/sound/instruments/saxophone/Gn2.mid
new file mode 100644
index 00000000000..750be55f685
Binary files /dev/null and b/sound/instruments/saxophone/Gn2.mid differ
diff --git a/sound/instruments/saxophone/Gn4.mid b/sound/instruments/saxophone/Gn4.mid
new file mode 100644
index 00000000000..2892048d15e
Binary files /dev/null and b/sound/instruments/saxophone/Gn4.mid differ
diff --git a/sound/instruments/saxophone/Gn5.mid b/sound/instruments/saxophone/Gn5.mid
new file mode 100644
index 00000000000..8ef4ceffe0d
Binary files /dev/null and b/sound/instruments/saxophone/Gn5.mid differ
diff --git a/sound/instruments/saxophone/Gn6.mid b/sound/instruments/saxophone/Gn6.mid
new file mode 100644
index 00000000000..26cbd145668
Binary files /dev/null and b/sound/instruments/saxophone/Gn6.mid differ
diff --git a/sound/instruments/trombone/Ab2.mid b/sound/instruments/trombone/Ab2.mid
new file mode 100644
index 00000000000..5802027e672
Binary files /dev/null and b/sound/instruments/trombone/Ab2.mid differ
diff --git a/sound/instruments/trombone/Ab3.mid b/sound/instruments/trombone/Ab3.mid
new file mode 100644
index 00000000000..9e6dc5559f2
Binary files /dev/null and b/sound/instruments/trombone/Ab3.mid differ
diff --git a/sound/instruments/trombone/Ab4.mid b/sound/instruments/trombone/Ab4.mid
new file mode 100644
index 00000000000..b5bcb5fc93d
Binary files /dev/null and b/sound/instruments/trombone/Ab4.mid differ
diff --git a/sound/instruments/trombone/Ab5.mid b/sound/instruments/trombone/Ab5.mid
new file mode 100644
index 00000000000..e42b8f6f6f1
Binary files /dev/null and b/sound/instruments/trombone/Ab5.mid differ
diff --git a/sound/instruments/trombone/Ab6.mid b/sound/instruments/trombone/Ab6.mid
new file mode 100644
index 00000000000..40d6d6b7b92
Binary files /dev/null and b/sound/instruments/trombone/Ab6.mid differ
diff --git a/sound/instruments/trombone/An2.mid b/sound/instruments/trombone/An2.mid
new file mode 100644
index 00000000000..30523e3cc3d
Binary files /dev/null and b/sound/instruments/trombone/An2.mid differ
diff --git a/sound/instruments/trombone/An3.mid b/sound/instruments/trombone/An3.mid
new file mode 100644
index 00000000000..05d4d28e2e4
Binary files /dev/null and b/sound/instruments/trombone/An3.mid differ
diff --git a/sound/instruments/trombone/An4.mid b/sound/instruments/trombone/An4.mid
new file mode 100644
index 00000000000..99d1a22bc72
Binary files /dev/null and b/sound/instruments/trombone/An4.mid differ
diff --git a/sound/instruments/trombone/An5.mid b/sound/instruments/trombone/An5.mid
new file mode 100644
index 00000000000..99978bf4bdc
Binary files /dev/null and b/sound/instruments/trombone/An5.mid differ
diff --git a/sound/instruments/trombone/An6.mid b/sound/instruments/trombone/An6.mid
new file mode 100644
index 00000000000..11e6557fe82
Binary files /dev/null and b/sound/instruments/trombone/An6.mid differ
diff --git a/sound/instruments/trombone/Bb2.mid b/sound/instruments/trombone/Bb2.mid
new file mode 100644
index 00000000000..e1068d551c1
Binary files /dev/null and b/sound/instruments/trombone/Bb2.mid differ
diff --git a/sound/instruments/trombone/Bb3.mid b/sound/instruments/trombone/Bb3.mid
new file mode 100644
index 00000000000..ce9a57613f0
Binary files /dev/null and b/sound/instruments/trombone/Bb3.mid differ
diff --git a/sound/instruments/trombone/Bb4.mid b/sound/instruments/trombone/Bb4.mid
new file mode 100644
index 00000000000..5dfdf26ec5d
Binary files /dev/null and b/sound/instruments/trombone/Bb4.mid differ
diff --git a/sound/instruments/trombone/Bb5.mid b/sound/instruments/trombone/Bb5.mid
new file mode 100644
index 00000000000..ea74dc444b9
Binary files /dev/null and b/sound/instruments/trombone/Bb5.mid differ
diff --git a/sound/instruments/trombone/Bb6.mid b/sound/instruments/trombone/Bb6.mid
new file mode 100644
index 00000000000..e30707df542
Binary files /dev/null and b/sound/instruments/trombone/Bb6.mid differ
diff --git a/sound/instruments/trombone/Bn2.mid b/sound/instruments/trombone/Bn2.mid
new file mode 100644
index 00000000000..7c89dff091c
Binary files /dev/null and b/sound/instruments/trombone/Bn2.mid differ
diff --git a/sound/instruments/trombone/Bn3.mid b/sound/instruments/trombone/Bn3.mid
new file mode 100644
index 00000000000..df92f0e4e32
Binary files /dev/null and b/sound/instruments/trombone/Bn3.mid differ
diff --git a/sound/instruments/trombone/Bn4.mid b/sound/instruments/trombone/Bn4.mid
new file mode 100644
index 00000000000..c46cb4d6a78
Binary files /dev/null and b/sound/instruments/trombone/Bn4.mid differ
diff --git a/sound/instruments/trombone/Bn5.mid b/sound/instruments/trombone/Bn5.mid
new file mode 100644
index 00000000000..f09d981ac05
Binary files /dev/null and b/sound/instruments/trombone/Bn5.mid differ
diff --git a/sound/instruments/trombone/Bn6.mid b/sound/instruments/trombone/Bn6.mid
new file mode 100644
index 00000000000..c23f2435681
Binary files /dev/null and b/sound/instruments/trombone/Bn6.mid differ
diff --git a/sound/instruments/trombone/Cn2.mid b/sound/instruments/trombone/Cn2.mid
new file mode 100644
index 00000000000..3a24f39ff91
Binary files /dev/null and b/sound/instruments/trombone/Cn2.mid differ
diff --git a/sound/instruments/trombone/Cn3.mid b/sound/instruments/trombone/Cn3.mid
new file mode 100644
index 00000000000..d24dd658b66
Binary files /dev/null and b/sound/instruments/trombone/Cn3.mid differ
diff --git a/sound/instruments/trombone/Cn4.mid b/sound/instruments/trombone/Cn4.mid
new file mode 100644
index 00000000000..756ba0ab8d2
Binary files /dev/null and b/sound/instruments/trombone/Cn4.mid differ
diff --git a/sound/instruments/trombone/Cn5.mid b/sound/instruments/trombone/Cn5.mid
new file mode 100644
index 00000000000..3d5d0a3446d
Binary files /dev/null and b/sound/instruments/trombone/Cn5.mid differ
diff --git a/sound/instruments/trombone/Cn6.mid b/sound/instruments/trombone/Cn6.mid
new file mode 100644
index 00000000000..605eec24ee1
Binary files /dev/null and b/sound/instruments/trombone/Cn6.mid differ
diff --git a/sound/instruments/trombone/Db2.mid b/sound/instruments/trombone/Db2.mid
new file mode 100644
index 00000000000..ef959df821c
Binary files /dev/null and b/sound/instruments/trombone/Db2.mid differ
diff --git a/sound/instruments/trombone/Db3.mid b/sound/instruments/trombone/Db3.mid
new file mode 100644
index 00000000000..664d67be67d
Binary files /dev/null and b/sound/instruments/trombone/Db3.mid differ
diff --git a/sound/instruments/trombone/Db4.mid b/sound/instruments/trombone/Db4.mid
new file mode 100644
index 00000000000..2b4e028f409
Binary files /dev/null and b/sound/instruments/trombone/Db4.mid differ
diff --git a/sound/instruments/trombone/Db5.mid b/sound/instruments/trombone/Db5.mid
new file mode 100644
index 00000000000..2748ba3cd4c
Binary files /dev/null and b/sound/instruments/trombone/Db5.mid differ
diff --git a/sound/instruments/trombone/Db6.mid b/sound/instruments/trombone/Db6.mid
new file mode 100644
index 00000000000..d7737f180ac
Binary files /dev/null and b/sound/instruments/trombone/Db6.mid differ
diff --git a/sound/instruments/trombone/Dn2.mid b/sound/instruments/trombone/Dn2.mid
new file mode 100644
index 00000000000..cddd3ce5bd8
Binary files /dev/null and b/sound/instruments/trombone/Dn2.mid differ
diff --git a/sound/instruments/trombone/Dn3.mid b/sound/instruments/trombone/Dn3.mid
new file mode 100644
index 00000000000..3555246d9d3
Binary files /dev/null and b/sound/instruments/trombone/Dn3.mid differ
diff --git a/sound/instruments/trombone/Dn4.mid b/sound/instruments/trombone/Dn4.mid
new file mode 100644
index 00000000000..51f80eb7f03
Binary files /dev/null and b/sound/instruments/trombone/Dn4.mid differ
diff --git a/sound/instruments/trombone/Dn5.mid b/sound/instruments/trombone/Dn5.mid
new file mode 100644
index 00000000000..d91a461b89a
Binary files /dev/null and b/sound/instruments/trombone/Dn5.mid differ
diff --git a/sound/instruments/trombone/Dn6.mid b/sound/instruments/trombone/Dn6.mid
new file mode 100644
index 00000000000..d2dc6f0e217
Binary files /dev/null and b/sound/instruments/trombone/Dn6.mid differ
diff --git a/sound/instruments/trombone/Eb2.mid b/sound/instruments/trombone/Eb2.mid
new file mode 100644
index 00000000000..7658c914be6
Binary files /dev/null and b/sound/instruments/trombone/Eb2.mid differ
diff --git a/sound/instruments/trombone/Eb3.mid b/sound/instruments/trombone/Eb3.mid
new file mode 100644
index 00000000000..5d781dd543d
Binary files /dev/null and b/sound/instruments/trombone/Eb3.mid differ
diff --git a/sound/instruments/trombone/Eb4.mid b/sound/instruments/trombone/Eb4.mid
new file mode 100644
index 00000000000..6ee879de04a
Binary files /dev/null and b/sound/instruments/trombone/Eb4.mid differ
diff --git a/sound/instruments/trombone/Eb5.mid b/sound/instruments/trombone/Eb5.mid
new file mode 100644
index 00000000000..a2278114546
Binary files /dev/null and b/sound/instruments/trombone/Eb5.mid differ
diff --git a/sound/instruments/trombone/Eb6.mid b/sound/instruments/trombone/Eb6.mid
new file mode 100644
index 00000000000..a9ffc37b89b
Binary files /dev/null and b/sound/instruments/trombone/Eb6.mid differ
diff --git a/sound/instruments/trombone/En2.mid b/sound/instruments/trombone/En2.mid
new file mode 100644
index 00000000000..f47e4460a12
Binary files /dev/null and b/sound/instruments/trombone/En2.mid differ
diff --git a/sound/instruments/trombone/En3.mid b/sound/instruments/trombone/En3.mid
new file mode 100644
index 00000000000..5f78d13af97
Binary files /dev/null and b/sound/instruments/trombone/En3.mid differ
diff --git a/sound/instruments/trombone/En4.mid b/sound/instruments/trombone/En4.mid
new file mode 100644
index 00000000000..687a503af0b
Binary files /dev/null and b/sound/instruments/trombone/En4.mid differ
diff --git a/sound/instruments/trombone/En5.mid b/sound/instruments/trombone/En5.mid
new file mode 100644
index 00000000000..134bf651b60
Binary files /dev/null and b/sound/instruments/trombone/En5.mid differ
diff --git a/sound/instruments/trombone/En6.mid b/sound/instruments/trombone/En6.mid
new file mode 100644
index 00000000000..c852475e1b1
Binary files /dev/null and b/sound/instruments/trombone/En6.mid differ
diff --git a/sound/instruments/trombone/Fn2.mid b/sound/instruments/trombone/Fn2.mid
new file mode 100644
index 00000000000..f9bc985538c
Binary files /dev/null and b/sound/instruments/trombone/Fn2.mid differ
diff --git a/sound/instruments/trombone/Fn3.mid b/sound/instruments/trombone/Fn3.mid
new file mode 100644
index 00000000000..cd5656da075
Binary files /dev/null and b/sound/instruments/trombone/Fn3.mid differ
diff --git a/sound/instruments/trombone/Fn4.mid b/sound/instruments/trombone/Fn4.mid
new file mode 100644
index 00000000000..c677ade9b17
Binary files /dev/null and b/sound/instruments/trombone/Fn4.mid differ
diff --git a/sound/instruments/trombone/Fn5.mid b/sound/instruments/trombone/Fn5.mid
new file mode 100644
index 00000000000..f610ce04c6f
Binary files /dev/null and b/sound/instruments/trombone/Fn5.mid differ
diff --git a/sound/instruments/trombone/Fn6.mid b/sound/instruments/trombone/Fn6.mid
new file mode 100644
index 00000000000..07382533cab
Binary files /dev/null and b/sound/instruments/trombone/Fn6.mid differ
diff --git a/sound/instruments/trombone/Gb2.mid b/sound/instruments/trombone/Gb2.mid
new file mode 100644
index 00000000000..d506f40642b
Binary files /dev/null and b/sound/instruments/trombone/Gb2.mid differ
diff --git a/sound/instruments/trombone/Gb3.mid b/sound/instruments/trombone/Gb3.mid
new file mode 100644
index 00000000000..fe18266802c
Binary files /dev/null and b/sound/instruments/trombone/Gb3.mid differ
diff --git a/sound/instruments/trombone/Gb4.mid b/sound/instruments/trombone/Gb4.mid
new file mode 100644
index 00000000000..7a22419215f
Binary files /dev/null and b/sound/instruments/trombone/Gb4.mid differ
diff --git a/sound/instruments/trombone/Gb5.mid b/sound/instruments/trombone/Gb5.mid
new file mode 100644
index 00000000000..7733d574e84
Binary files /dev/null and b/sound/instruments/trombone/Gb5.mid differ
diff --git a/sound/instruments/trombone/Gb6.mid b/sound/instruments/trombone/Gb6.mid
new file mode 100644
index 00000000000..3a6e4893b4d
Binary files /dev/null and b/sound/instruments/trombone/Gb6.mid differ
diff --git a/sound/instruments/trombone/Gn2.mid b/sound/instruments/trombone/Gn2.mid
new file mode 100644
index 00000000000..cdebb6bc0a3
Binary files /dev/null and b/sound/instruments/trombone/Gn2.mid differ
diff --git a/sound/instruments/trombone/Gn3.mid b/sound/instruments/trombone/Gn3.mid
new file mode 100644
index 00000000000..8c915effeb3
Binary files /dev/null and b/sound/instruments/trombone/Gn3.mid differ
diff --git a/sound/instruments/trombone/Gn4.mid b/sound/instruments/trombone/Gn4.mid
new file mode 100644
index 00000000000..1ddcaa30819
Binary files /dev/null and b/sound/instruments/trombone/Gn4.mid differ
diff --git a/sound/instruments/trombone/Gn5.mid b/sound/instruments/trombone/Gn5.mid
new file mode 100644
index 00000000000..ba787045f01
Binary files /dev/null and b/sound/instruments/trombone/Gn5.mid differ
diff --git a/sound/instruments/trombone/Gn6.mid b/sound/instruments/trombone/Gn6.mid
new file mode 100644
index 00000000000..b2e6f3f13d6
Binary files /dev/null and b/sound/instruments/trombone/Gn6.mid differ
diff --git a/sound/instruments/violin/Ab1.mid b/sound/instruments/violin/Ab1.mid
new file mode 100644
index 00000000000..b8253364b4e
Binary files /dev/null and b/sound/instruments/violin/Ab1.mid differ
diff --git a/sound/instruments/violin/Ab2.mid b/sound/instruments/violin/Ab2.mid
new file mode 100644
index 00000000000..4cd7f9b55a7
Binary files /dev/null and b/sound/instruments/violin/Ab2.mid differ
diff --git a/sound/instruments/violin/Ab3.mid b/sound/instruments/violin/Ab3.mid
new file mode 100644
index 00000000000..e827cfc635e
Binary files /dev/null and b/sound/instruments/violin/Ab3.mid differ
diff --git a/sound/instruments/violin/Ab4.mid b/sound/instruments/violin/Ab4.mid
new file mode 100644
index 00000000000..57e1f76c976
Binary files /dev/null and b/sound/instruments/violin/Ab4.mid differ
diff --git a/sound/instruments/violin/Ab5.mid b/sound/instruments/violin/Ab5.mid
new file mode 100644
index 00000000000..59e95a6d997
Binary files /dev/null and b/sound/instruments/violin/Ab5.mid differ
diff --git a/sound/instruments/violin/Ab6.mid b/sound/instruments/violin/Ab6.mid
new file mode 100644
index 00000000000..9bd3436287b
Binary files /dev/null and b/sound/instruments/violin/Ab6.mid differ
diff --git a/sound/instruments/violin/Ab7.mid b/sound/instruments/violin/Ab7.mid
new file mode 100644
index 00000000000..3c90af807e2
Binary files /dev/null and b/sound/instruments/violin/Ab7.mid differ
diff --git a/sound/instruments/violin/Ab8.mid b/sound/instruments/violin/Ab8.mid
new file mode 100644
index 00000000000..873d771f2ae
Binary files /dev/null and b/sound/instruments/violin/Ab8.mid differ
diff --git a/sound/instruments/violin/An1.mid b/sound/instruments/violin/An1.mid
new file mode 100644
index 00000000000..d7f8a001d93
Binary files /dev/null and b/sound/instruments/violin/An1.mid differ
diff --git a/sound/instruments/violin/An2.mid b/sound/instruments/violin/An2.mid
new file mode 100644
index 00000000000..2f01800a075
Binary files /dev/null and b/sound/instruments/violin/An2.mid differ
diff --git a/sound/instruments/violin/An3.mid b/sound/instruments/violin/An3.mid
new file mode 100644
index 00000000000..c8ed3cdfa6c
Binary files /dev/null and b/sound/instruments/violin/An3.mid differ
diff --git a/sound/instruments/violin/An4.mid b/sound/instruments/violin/An4.mid
new file mode 100644
index 00000000000..e7984ca7e62
Binary files /dev/null and b/sound/instruments/violin/An4.mid differ
diff --git a/sound/instruments/violin/An5.mid b/sound/instruments/violin/An5.mid
new file mode 100644
index 00000000000..e1fd228f7a9
Binary files /dev/null and b/sound/instruments/violin/An5.mid differ
diff --git a/sound/instruments/violin/An6.mid b/sound/instruments/violin/An6.mid
new file mode 100644
index 00000000000..1c8df6c98e5
Binary files /dev/null and b/sound/instruments/violin/An6.mid differ
diff --git a/sound/instruments/violin/An7.mid b/sound/instruments/violin/An7.mid
new file mode 100644
index 00000000000..2784428daf9
Binary files /dev/null and b/sound/instruments/violin/An7.mid differ
diff --git a/sound/instruments/violin/An8.mid b/sound/instruments/violin/An8.mid
new file mode 100644
index 00000000000..2db2ab70a7d
Binary files /dev/null and b/sound/instruments/violin/An8.mid differ
diff --git a/sound/instruments/violin/Bb1.mid b/sound/instruments/violin/Bb1.mid
new file mode 100644
index 00000000000..693b73f5420
Binary files /dev/null and b/sound/instruments/violin/Bb1.mid differ
diff --git a/sound/instruments/violin/Bb2.mid b/sound/instruments/violin/Bb2.mid
new file mode 100644
index 00000000000..40da5f3da15
Binary files /dev/null and b/sound/instruments/violin/Bb2.mid differ
diff --git a/sound/instruments/violin/Bb3.mid b/sound/instruments/violin/Bb3.mid
new file mode 100644
index 00000000000..5bab6ccd636
Binary files /dev/null and b/sound/instruments/violin/Bb3.mid differ
diff --git a/sound/instruments/violin/Bb4.mid b/sound/instruments/violin/Bb4.mid
new file mode 100644
index 00000000000..dce830448ef
Binary files /dev/null and b/sound/instruments/violin/Bb4.mid differ
diff --git a/sound/instruments/violin/Bb5.mid b/sound/instruments/violin/Bb5.mid
new file mode 100644
index 00000000000..fda796e27b9
Binary files /dev/null and b/sound/instruments/violin/Bb5.mid differ
diff --git a/sound/instruments/violin/Bb6.mid b/sound/instruments/violin/Bb6.mid
new file mode 100644
index 00000000000..9e5da684f43
Binary files /dev/null and b/sound/instruments/violin/Bb6.mid differ
diff --git a/sound/instruments/violin/Bb7.mid b/sound/instruments/violin/Bb7.mid
new file mode 100644
index 00000000000..215c56cbe7e
Binary files /dev/null and b/sound/instruments/violin/Bb7.mid differ
diff --git a/sound/instruments/violin/Bb8.mid b/sound/instruments/violin/Bb8.mid
new file mode 100644
index 00000000000..4b55c34691f
Binary files /dev/null and b/sound/instruments/violin/Bb8.mid differ
diff --git a/sound/instruments/violin/Bn1.mid b/sound/instruments/violin/Bn1.mid
new file mode 100644
index 00000000000..27968b5f9e7
Binary files /dev/null and b/sound/instruments/violin/Bn1.mid differ
diff --git a/sound/instruments/violin/Bn2.mid b/sound/instruments/violin/Bn2.mid
new file mode 100644
index 00000000000..54c9b99d03f
Binary files /dev/null and b/sound/instruments/violin/Bn2.mid differ
diff --git a/sound/instruments/violin/Bn3.mid b/sound/instruments/violin/Bn3.mid
new file mode 100644
index 00000000000..f73476fb7bb
Binary files /dev/null and b/sound/instruments/violin/Bn3.mid differ
diff --git a/sound/instruments/violin/Bn4.mid b/sound/instruments/violin/Bn4.mid
new file mode 100644
index 00000000000..2aa30708a6c
Binary files /dev/null and b/sound/instruments/violin/Bn4.mid differ
diff --git a/sound/instruments/violin/Bn5.mid b/sound/instruments/violin/Bn5.mid
new file mode 100644
index 00000000000..0ebe636b714
Binary files /dev/null and b/sound/instruments/violin/Bn5.mid differ
diff --git a/sound/instruments/violin/Bn6.mid b/sound/instruments/violin/Bn6.mid
new file mode 100644
index 00000000000..3b8e1c217f7
Binary files /dev/null and b/sound/instruments/violin/Bn6.mid differ
diff --git a/sound/instruments/violin/Bn7.mid b/sound/instruments/violin/Bn7.mid
new file mode 100644
index 00000000000..afcb1982a13
Binary files /dev/null and b/sound/instruments/violin/Bn7.mid differ
diff --git a/sound/instruments/violin/Bn8.mid b/sound/instruments/violin/Bn8.mid
new file mode 100644
index 00000000000..3afd469256c
Binary files /dev/null and b/sound/instruments/violin/Bn8.mid differ
diff --git a/sound/instruments/violin/Cn1.mid b/sound/instruments/violin/Cn1.mid
new file mode 100644
index 00000000000..857120f31f4
Binary files /dev/null and b/sound/instruments/violin/Cn1.mid differ
diff --git a/sound/instruments/violin/Cn2.mid b/sound/instruments/violin/Cn2.mid
new file mode 100644
index 00000000000..3ccd6670e87
Binary files /dev/null and b/sound/instruments/violin/Cn2.mid differ
diff --git a/sound/instruments/violin/Cn3.mid b/sound/instruments/violin/Cn3.mid
new file mode 100644
index 00000000000..1851e4f8d27
Binary files /dev/null and b/sound/instruments/violin/Cn3.mid differ
diff --git a/sound/instruments/violin/Cn4.mid b/sound/instruments/violin/Cn4.mid
new file mode 100644
index 00000000000..65e8b0efe4e
Binary files /dev/null and b/sound/instruments/violin/Cn4.mid differ
diff --git a/sound/instruments/violin/Cn5.mid b/sound/instruments/violin/Cn5.mid
new file mode 100644
index 00000000000..544f921e43b
Binary files /dev/null and b/sound/instruments/violin/Cn5.mid differ
diff --git a/sound/instruments/violin/Cn6.mid b/sound/instruments/violin/Cn6.mid
new file mode 100644
index 00000000000..7c78dab2f07
Binary files /dev/null and b/sound/instruments/violin/Cn6.mid differ
diff --git a/sound/instruments/violin/Cn7.mid b/sound/instruments/violin/Cn7.mid
new file mode 100644
index 00000000000..3abe4cde086
Binary files /dev/null and b/sound/instruments/violin/Cn7.mid differ
diff --git a/sound/instruments/violin/Cn8.mid b/sound/instruments/violin/Cn8.mid
new file mode 100644
index 00000000000..06f14081b3b
Binary files /dev/null and b/sound/instruments/violin/Cn8.mid differ
diff --git a/sound/instruments/violin/Cn9.mid b/sound/instruments/violin/Cn9.mid
new file mode 100644
index 00000000000..62f4eef045a
Binary files /dev/null and b/sound/instruments/violin/Cn9.mid differ
diff --git a/sound/instruments/violin/Db1.mid b/sound/instruments/violin/Db1.mid
new file mode 100644
index 00000000000..88dba851452
Binary files /dev/null and b/sound/instruments/violin/Db1.mid differ
diff --git a/sound/instruments/violin/Db2.mid b/sound/instruments/violin/Db2.mid
new file mode 100644
index 00000000000..b510926b45f
Binary files /dev/null and b/sound/instruments/violin/Db2.mid differ
diff --git a/sound/instruments/violin/Db3.mid b/sound/instruments/violin/Db3.mid
new file mode 100644
index 00000000000..9954bbe478a
Binary files /dev/null and b/sound/instruments/violin/Db3.mid differ
diff --git a/sound/instruments/violin/Db4.mid b/sound/instruments/violin/Db4.mid
new file mode 100644
index 00000000000..2c5ff74db0a
Binary files /dev/null and b/sound/instruments/violin/Db4.mid differ
diff --git a/sound/instruments/violin/Db5.mid b/sound/instruments/violin/Db5.mid
new file mode 100644
index 00000000000..e5850a3fd04
Binary files /dev/null and b/sound/instruments/violin/Db5.mid differ
diff --git a/sound/instruments/violin/Db6.mid b/sound/instruments/violin/Db6.mid
new file mode 100644
index 00000000000..217c0ad014c
Binary files /dev/null and b/sound/instruments/violin/Db6.mid differ
diff --git a/sound/instruments/violin/Db7.mid b/sound/instruments/violin/Db7.mid
new file mode 100644
index 00000000000..ec32bdbf904
Binary files /dev/null and b/sound/instruments/violin/Db7.mid differ
diff --git a/sound/instruments/violin/Db8.mid b/sound/instruments/violin/Db8.mid
new file mode 100644
index 00000000000..555bce3db0d
Binary files /dev/null and b/sound/instruments/violin/Db8.mid differ
diff --git a/sound/instruments/violin/Dn1.mid b/sound/instruments/violin/Dn1.mid
new file mode 100644
index 00000000000..92e4e0d9581
Binary files /dev/null and b/sound/instruments/violin/Dn1.mid differ
diff --git a/sound/instruments/violin/Dn2.mid b/sound/instruments/violin/Dn2.mid
new file mode 100644
index 00000000000..34eb9d1db1b
Binary files /dev/null and b/sound/instruments/violin/Dn2.mid differ
diff --git a/sound/instruments/violin/Dn3.mid b/sound/instruments/violin/Dn3.mid
new file mode 100644
index 00000000000..fbd56085aaf
Binary files /dev/null and b/sound/instruments/violin/Dn3.mid differ
diff --git a/sound/instruments/violin/Dn4.mid b/sound/instruments/violin/Dn4.mid
new file mode 100644
index 00000000000..e13c7448292
Binary files /dev/null and b/sound/instruments/violin/Dn4.mid differ
diff --git a/sound/instruments/violin/Dn5.mid b/sound/instruments/violin/Dn5.mid
new file mode 100644
index 00000000000..8fd41e5c6fe
Binary files /dev/null and b/sound/instruments/violin/Dn5.mid differ
diff --git a/sound/instruments/violin/Dn6.mid b/sound/instruments/violin/Dn6.mid
new file mode 100644
index 00000000000..d47329e8f9e
Binary files /dev/null and b/sound/instruments/violin/Dn6.mid differ
diff --git a/sound/instruments/violin/Dn7.mid b/sound/instruments/violin/Dn7.mid
new file mode 100644
index 00000000000..b2496603876
Binary files /dev/null and b/sound/instruments/violin/Dn7.mid differ
diff --git a/sound/instruments/violin/Dn8.mid b/sound/instruments/violin/Dn8.mid
new file mode 100644
index 00000000000..56667a1a86d
Binary files /dev/null and b/sound/instruments/violin/Dn8.mid differ
diff --git a/sound/instruments/violin/Eb1.mid b/sound/instruments/violin/Eb1.mid
new file mode 100644
index 00000000000..829e6fcf185
Binary files /dev/null and b/sound/instruments/violin/Eb1.mid differ
diff --git a/sound/instruments/violin/Eb2.mid b/sound/instruments/violin/Eb2.mid
new file mode 100644
index 00000000000..66029b340cc
Binary files /dev/null and b/sound/instruments/violin/Eb2.mid differ
diff --git a/sound/instruments/violin/Eb3.mid b/sound/instruments/violin/Eb3.mid
new file mode 100644
index 00000000000..c982375941e
Binary files /dev/null and b/sound/instruments/violin/Eb3.mid differ
diff --git a/sound/instruments/violin/Eb4.mid b/sound/instruments/violin/Eb4.mid
new file mode 100644
index 00000000000..016ed4f1edf
Binary files /dev/null and b/sound/instruments/violin/Eb4.mid differ
diff --git a/sound/instruments/violin/Eb5.mid b/sound/instruments/violin/Eb5.mid
new file mode 100644
index 00000000000..ddb511795df
Binary files /dev/null and b/sound/instruments/violin/Eb5.mid differ
diff --git a/sound/instruments/violin/Eb6.mid b/sound/instruments/violin/Eb6.mid
new file mode 100644
index 00000000000..b7242b9ab99
Binary files /dev/null and b/sound/instruments/violin/Eb6.mid differ
diff --git a/sound/instruments/violin/Eb7.mid b/sound/instruments/violin/Eb7.mid
new file mode 100644
index 00000000000..773538340a5
Binary files /dev/null and b/sound/instruments/violin/Eb7.mid differ
diff --git a/sound/instruments/violin/Eb8.mid b/sound/instruments/violin/Eb8.mid
new file mode 100644
index 00000000000..4ad074e173b
Binary files /dev/null and b/sound/instruments/violin/Eb8.mid differ
diff --git a/sound/instruments/violin/En1.mid b/sound/instruments/violin/En1.mid
new file mode 100644
index 00000000000..79ab68df9df
Binary files /dev/null and b/sound/instruments/violin/En1.mid differ
diff --git a/sound/instruments/violin/En2.mid b/sound/instruments/violin/En2.mid
new file mode 100644
index 00000000000..cd61c8d0de5
Binary files /dev/null and b/sound/instruments/violin/En2.mid differ
diff --git a/sound/instruments/violin/En3.mid b/sound/instruments/violin/En3.mid
new file mode 100644
index 00000000000..da5b703d545
Binary files /dev/null and b/sound/instruments/violin/En3.mid differ
diff --git a/sound/instruments/violin/En4.mid b/sound/instruments/violin/En4.mid
new file mode 100644
index 00000000000..f7d3af024ff
Binary files /dev/null and b/sound/instruments/violin/En4.mid differ
diff --git a/sound/instruments/violin/En5.mid b/sound/instruments/violin/En5.mid
new file mode 100644
index 00000000000..d3d353943f9
Binary files /dev/null and b/sound/instruments/violin/En5.mid differ
diff --git a/sound/instruments/violin/En6.mid b/sound/instruments/violin/En6.mid
new file mode 100644
index 00000000000..73eb5b0697d
Binary files /dev/null and b/sound/instruments/violin/En6.mid differ
diff --git a/sound/instruments/violin/En7.mid b/sound/instruments/violin/En7.mid
new file mode 100644
index 00000000000..79a9462c844
Binary files /dev/null and b/sound/instruments/violin/En7.mid differ
diff --git a/sound/instruments/violin/En8.mid b/sound/instruments/violin/En8.mid
new file mode 100644
index 00000000000..88947fc7318
Binary files /dev/null and b/sound/instruments/violin/En8.mid differ
diff --git a/sound/instruments/violin/Fn1.mid b/sound/instruments/violin/Fn1.mid
new file mode 100644
index 00000000000..abe0d4e4051
Binary files /dev/null and b/sound/instruments/violin/Fn1.mid differ
diff --git a/sound/instruments/violin/Fn2.mid b/sound/instruments/violin/Fn2.mid
new file mode 100644
index 00000000000..d245bef3b54
Binary files /dev/null and b/sound/instruments/violin/Fn2.mid differ
diff --git a/sound/instruments/violin/Fn3.mid b/sound/instruments/violin/Fn3.mid
new file mode 100644
index 00000000000..e532e30dac9
Binary files /dev/null and b/sound/instruments/violin/Fn3.mid differ
diff --git a/sound/instruments/violin/Fn4.mid b/sound/instruments/violin/Fn4.mid
new file mode 100644
index 00000000000..47219c72fa2
Binary files /dev/null and b/sound/instruments/violin/Fn4.mid differ
diff --git a/sound/instruments/violin/Fn5.mid b/sound/instruments/violin/Fn5.mid
new file mode 100644
index 00000000000..630d16371d9
Binary files /dev/null and b/sound/instruments/violin/Fn5.mid differ
diff --git a/sound/instruments/violin/Fn6.mid b/sound/instruments/violin/Fn6.mid
new file mode 100644
index 00000000000..08cbc981bdb
Binary files /dev/null and b/sound/instruments/violin/Fn6.mid differ
diff --git a/sound/instruments/violin/Fn7.mid b/sound/instruments/violin/Fn7.mid
new file mode 100644
index 00000000000..6c28c7d272e
Binary files /dev/null and b/sound/instruments/violin/Fn7.mid differ
diff --git a/sound/instruments/violin/Fn8.mid b/sound/instruments/violin/Fn8.mid
new file mode 100644
index 00000000000..2d73762f269
Binary files /dev/null and b/sound/instruments/violin/Fn8.mid differ
diff --git a/sound/instruments/violin/Gb1.mid b/sound/instruments/violin/Gb1.mid
new file mode 100644
index 00000000000..d18668e8911
Binary files /dev/null and b/sound/instruments/violin/Gb1.mid differ
diff --git a/sound/instruments/violin/Gb2.mid b/sound/instruments/violin/Gb2.mid
new file mode 100644
index 00000000000..302f0c6fdc1
Binary files /dev/null and b/sound/instruments/violin/Gb2.mid differ
diff --git a/sound/instruments/violin/Gb3.mid b/sound/instruments/violin/Gb3.mid
new file mode 100644
index 00000000000..1f592fc9039
Binary files /dev/null and b/sound/instruments/violin/Gb3.mid differ
diff --git a/sound/instruments/violin/Gb4.mid b/sound/instruments/violin/Gb4.mid
new file mode 100644
index 00000000000..45854126f98
Binary files /dev/null and b/sound/instruments/violin/Gb4.mid differ
diff --git a/sound/instruments/violin/Gb5.mid b/sound/instruments/violin/Gb5.mid
new file mode 100644
index 00000000000..fb1e1da339a
Binary files /dev/null and b/sound/instruments/violin/Gb5.mid differ
diff --git a/sound/instruments/violin/Gb6.mid b/sound/instruments/violin/Gb6.mid
new file mode 100644
index 00000000000..bfa896bb784
Binary files /dev/null and b/sound/instruments/violin/Gb6.mid differ
diff --git a/sound/instruments/violin/Gb7.mid b/sound/instruments/violin/Gb7.mid
new file mode 100644
index 00000000000..a27763c1d47
Binary files /dev/null and b/sound/instruments/violin/Gb7.mid differ
diff --git a/sound/instruments/violin/Gb8.mid b/sound/instruments/violin/Gb8.mid
new file mode 100644
index 00000000000..aaab80a7276
Binary files /dev/null and b/sound/instruments/violin/Gb8.mid differ
diff --git a/sound/instruments/violin/Gn1.mid b/sound/instruments/violin/Gn1.mid
new file mode 100644
index 00000000000..1df52ab0760
Binary files /dev/null and b/sound/instruments/violin/Gn1.mid differ
diff --git a/sound/instruments/violin/Gn2.mid b/sound/instruments/violin/Gn2.mid
new file mode 100644
index 00000000000..6e0ca383127
Binary files /dev/null and b/sound/instruments/violin/Gn2.mid differ
diff --git a/sound/instruments/violin/Gn3.mid b/sound/instruments/violin/Gn3.mid
new file mode 100644
index 00000000000..bb3e6dedcbf
Binary files /dev/null and b/sound/instruments/violin/Gn3.mid differ
diff --git a/sound/instruments/violin/Gn4.mid b/sound/instruments/violin/Gn4.mid
new file mode 100644
index 00000000000..0c46432afee
Binary files /dev/null and b/sound/instruments/violin/Gn4.mid differ
diff --git a/sound/instruments/violin/Gn5.mid b/sound/instruments/violin/Gn5.mid
new file mode 100644
index 00000000000..f39dcf5e2b9
Binary files /dev/null and b/sound/instruments/violin/Gn5.mid differ
diff --git a/sound/instruments/violin/Gn6.mid b/sound/instruments/violin/Gn6.mid
new file mode 100644
index 00000000000..0efa2259ca1
Binary files /dev/null and b/sound/instruments/violin/Gn6.mid differ
diff --git a/sound/instruments/violin/Gn7.mid b/sound/instruments/violin/Gn7.mid
new file mode 100644
index 00000000000..22fd1b6bcb0
Binary files /dev/null and b/sound/instruments/violin/Gn7.mid differ
diff --git a/sound/instruments/violin/Gn8.mid b/sound/instruments/violin/Gn8.mid
new file mode 100644
index 00000000000..16b7171d627
Binary files /dev/null and b/sound/instruments/violin/Gn8.mid differ
diff --git a/sound/instruments/xylophone/Ab2.mid b/sound/instruments/xylophone/Ab2.mid
new file mode 100644
index 00000000000..f8d08b5995a
Binary files /dev/null and b/sound/instruments/xylophone/Ab2.mid differ
diff --git a/sound/instruments/xylophone/Ab3.mid b/sound/instruments/xylophone/Ab3.mid
new file mode 100644
index 00000000000..f34de3dcd6b
Binary files /dev/null and b/sound/instruments/xylophone/Ab3.mid differ
diff --git a/sound/instruments/xylophone/Ab4.mid b/sound/instruments/xylophone/Ab4.mid
new file mode 100644
index 00000000000..ecca495a6ae
Binary files /dev/null and b/sound/instruments/xylophone/Ab4.mid differ
diff --git a/sound/instruments/xylophone/Ab5.mid b/sound/instruments/xylophone/Ab5.mid
new file mode 100644
index 00000000000..4d277c9e0c7
Binary files /dev/null and b/sound/instruments/xylophone/Ab5.mid differ
diff --git a/sound/instruments/xylophone/Ab6.mid b/sound/instruments/xylophone/Ab6.mid
new file mode 100644
index 00000000000..b13d6aacdd7
Binary files /dev/null and b/sound/instruments/xylophone/Ab6.mid differ
diff --git a/sound/instruments/xylophone/An2.mid b/sound/instruments/xylophone/An2.mid
new file mode 100644
index 00000000000..cf6be5cf199
Binary files /dev/null and b/sound/instruments/xylophone/An2.mid differ
diff --git a/sound/instruments/xylophone/An3.mid b/sound/instruments/xylophone/An3.mid
new file mode 100644
index 00000000000..196be155a63
Binary files /dev/null and b/sound/instruments/xylophone/An3.mid differ
diff --git a/sound/instruments/xylophone/An4.mid b/sound/instruments/xylophone/An4.mid
new file mode 100644
index 00000000000..f7236042a6a
Binary files /dev/null and b/sound/instruments/xylophone/An4.mid differ
diff --git a/sound/instruments/xylophone/An5.mid b/sound/instruments/xylophone/An5.mid
new file mode 100644
index 00000000000..c44d8a43aa4
Binary files /dev/null and b/sound/instruments/xylophone/An5.mid differ
diff --git a/sound/instruments/xylophone/An6.mid b/sound/instruments/xylophone/An6.mid
new file mode 100644
index 00000000000..c94d839e673
Binary files /dev/null and b/sound/instruments/xylophone/An6.mid differ
diff --git a/sound/instruments/xylophone/Bb2.mid b/sound/instruments/xylophone/Bb2.mid
new file mode 100644
index 00000000000..ad96c63e5d1
Binary files /dev/null and b/sound/instruments/xylophone/Bb2.mid differ
diff --git a/sound/instruments/xylophone/Bb3.mid b/sound/instruments/xylophone/Bb3.mid
new file mode 100644
index 00000000000..96e4eabfd3f
Binary files /dev/null and b/sound/instruments/xylophone/Bb3.mid differ
diff --git a/sound/instruments/xylophone/Bb4.mid b/sound/instruments/xylophone/Bb4.mid
new file mode 100644
index 00000000000..5a9b40b71dd
Binary files /dev/null and b/sound/instruments/xylophone/Bb4.mid differ
diff --git a/sound/instruments/xylophone/Bb5.mid b/sound/instruments/xylophone/Bb5.mid
new file mode 100644
index 00000000000..74817b705a7
Binary files /dev/null and b/sound/instruments/xylophone/Bb5.mid differ
diff --git a/sound/instruments/xylophone/Bb6.mid b/sound/instruments/xylophone/Bb6.mid
new file mode 100644
index 00000000000..7a998a857b7
Binary files /dev/null and b/sound/instruments/xylophone/Bb6.mid differ
diff --git a/sound/instruments/xylophone/Bn2.mid b/sound/instruments/xylophone/Bn2.mid
new file mode 100644
index 00000000000..7bc2a1bb76d
Binary files /dev/null and b/sound/instruments/xylophone/Bn2.mid differ
diff --git a/sound/instruments/xylophone/Bn3.mid b/sound/instruments/xylophone/Bn3.mid
new file mode 100644
index 00000000000..c7375e6577c
Binary files /dev/null and b/sound/instruments/xylophone/Bn3.mid differ
diff --git a/sound/instruments/xylophone/Bn4.mid b/sound/instruments/xylophone/Bn4.mid
new file mode 100644
index 00000000000..dfdcc32f5f9
Binary files /dev/null and b/sound/instruments/xylophone/Bn4.mid differ
diff --git a/sound/instruments/xylophone/Bn5.mid b/sound/instruments/xylophone/Bn5.mid
new file mode 100644
index 00000000000..f51313d527f
Binary files /dev/null and b/sound/instruments/xylophone/Bn5.mid differ
diff --git a/sound/instruments/xylophone/Bn6.mid b/sound/instruments/xylophone/Bn6.mid
new file mode 100644
index 00000000000..6dcbc8cd6a1
Binary files /dev/null and b/sound/instruments/xylophone/Bn6.mid differ
diff --git a/sound/instruments/xylophone/Cn2.mid b/sound/instruments/xylophone/Cn2.mid
new file mode 100644
index 00000000000..6ae074d342d
Binary files /dev/null and b/sound/instruments/xylophone/Cn2.mid differ
diff --git a/sound/instruments/xylophone/Cn3.mid b/sound/instruments/xylophone/Cn3.mid
new file mode 100644
index 00000000000..bdc7d688ee4
Binary files /dev/null and b/sound/instruments/xylophone/Cn3.mid differ
diff --git a/sound/instruments/xylophone/Cn4.mid b/sound/instruments/xylophone/Cn4.mid
new file mode 100644
index 00000000000..956e93f460e
Binary files /dev/null and b/sound/instruments/xylophone/Cn4.mid differ
diff --git a/sound/instruments/xylophone/Cn5.mid b/sound/instruments/xylophone/Cn5.mid
new file mode 100644
index 00000000000..b88f09ea41a
Binary files /dev/null and b/sound/instruments/xylophone/Cn5.mid differ
diff --git a/sound/instruments/xylophone/Cn6.mid b/sound/instruments/xylophone/Cn6.mid
new file mode 100644
index 00000000000..fd1e01d0e5f
Binary files /dev/null and b/sound/instruments/xylophone/Cn6.mid differ
diff --git a/sound/instruments/xylophone/Db2.mid b/sound/instruments/xylophone/Db2.mid
new file mode 100644
index 00000000000..d6c6250abf5
Binary files /dev/null and b/sound/instruments/xylophone/Db2.mid differ
diff --git a/sound/instruments/xylophone/Db3.mid b/sound/instruments/xylophone/Db3.mid
new file mode 100644
index 00000000000..22ad1728373
Binary files /dev/null and b/sound/instruments/xylophone/Db3.mid differ
diff --git a/sound/instruments/xylophone/Db4.mid b/sound/instruments/xylophone/Db4.mid
new file mode 100644
index 00000000000..19d2b5acd6a
Binary files /dev/null and b/sound/instruments/xylophone/Db4.mid differ
diff --git a/sound/instruments/xylophone/Db5.mid b/sound/instruments/xylophone/Db5.mid
new file mode 100644
index 00000000000..bc747935ec7
Binary files /dev/null and b/sound/instruments/xylophone/Db5.mid differ
diff --git a/sound/instruments/xylophone/Db6.mid b/sound/instruments/xylophone/Db6.mid
new file mode 100644
index 00000000000..6b5e16cf66f
Binary files /dev/null and b/sound/instruments/xylophone/Db6.mid differ
diff --git a/sound/instruments/xylophone/Dn2.mid b/sound/instruments/xylophone/Dn2.mid
new file mode 100644
index 00000000000..caf81563c16
Binary files /dev/null and b/sound/instruments/xylophone/Dn2.mid differ
diff --git a/sound/instruments/xylophone/Dn3.mid b/sound/instruments/xylophone/Dn3.mid
new file mode 100644
index 00000000000..b98e10291e8
Binary files /dev/null and b/sound/instruments/xylophone/Dn3.mid differ
diff --git a/sound/instruments/xylophone/Dn4.mid b/sound/instruments/xylophone/Dn4.mid
new file mode 100644
index 00000000000..cb1b295f359
Binary files /dev/null and b/sound/instruments/xylophone/Dn4.mid differ
diff --git a/sound/instruments/xylophone/Dn5.mid b/sound/instruments/xylophone/Dn5.mid
new file mode 100644
index 00000000000..53061570639
Binary files /dev/null and b/sound/instruments/xylophone/Dn5.mid differ
diff --git a/sound/instruments/xylophone/Dn6.mid b/sound/instruments/xylophone/Dn6.mid
new file mode 100644
index 00000000000..79459d4b156
Binary files /dev/null and b/sound/instruments/xylophone/Dn6.mid differ
diff --git a/sound/instruments/xylophone/Eb2.mid b/sound/instruments/xylophone/Eb2.mid
new file mode 100644
index 00000000000..efd033ea415
Binary files /dev/null and b/sound/instruments/xylophone/Eb2.mid differ
diff --git a/sound/instruments/xylophone/Eb3.mid b/sound/instruments/xylophone/Eb3.mid
new file mode 100644
index 00000000000..16cfc8f32be
Binary files /dev/null and b/sound/instruments/xylophone/Eb3.mid differ
diff --git a/sound/instruments/xylophone/Eb4.mid b/sound/instruments/xylophone/Eb4.mid
new file mode 100644
index 00000000000..cc4333d5579
Binary files /dev/null and b/sound/instruments/xylophone/Eb4.mid differ
diff --git a/sound/instruments/xylophone/Eb5.mid b/sound/instruments/xylophone/Eb5.mid
new file mode 100644
index 00000000000..b25d5fded35
Binary files /dev/null and b/sound/instruments/xylophone/Eb5.mid differ
diff --git a/sound/instruments/xylophone/Eb6.mid b/sound/instruments/xylophone/Eb6.mid
new file mode 100644
index 00000000000..7418778e66a
Binary files /dev/null and b/sound/instruments/xylophone/Eb6.mid differ
diff --git a/sound/instruments/xylophone/En2.mid b/sound/instruments/xylophone/En2.mid
new file mode 100644
index 00000000000..ee49b6d26d7
Binary files /dev/null and b/sound/instruments/xylophone/En2.mid differ
diff --git a/sound/instruments/xylophone/En3.mid b/sound/instruments/xylophone/En3.mid
new file mode 100644
index 00000000000..8cc2fc4514a
Binary files /dev/null and b/sound/instruments/xylophone/En3.mid differ
diff --git a/sound/instruments/xylophone/En4.mid b/sound/instruments/xylophone/En4.mid
new file mode 100644
index 00000000000..12e688e309a
Binary files /dev/null and b/sound/instruments/xylophone/En4.mid differ
diff --git a/sound/instruments/xylophone/En5.mid b/sound/instruments/xylophone/En5.mid
new file mode 100644
index 00000000000..1608556bb59
Binary files /dev/null and b/sound/instruments/xylophone/En5.mid differ
diff --git a/sound/instruments/xylophone/En6.mid b/sound/instruments/xylophone/En6.mid
new file mode 100644
index 00000000000..2b728aa02f6
Binary files /dev/null and b/sound/instruments/xylophone/En6.mid differ
diff --git a/sound/instruments/xylophone/Fn2.mid b/sound/instruments/xylophone/Fn2.mid
new file mode 100644
index 00000000000..2d329eafab0
Binary files /dev/null and b/sound/instruments/xylophone/Fn2.mid differ
diff --git a/sound/instruments/xylophone/Fn3.mid b/sound/instruments/xylophone/Fn3.mid
new file mode 100644
index 00000000000..262398bd647
Binary files /dev/null and b/sound/instruments/xylophone/Fn3.mid differ
diff --git a/sound/instruments/xylophone/Fn4.mid b/sound/instruments/xylophone/Fn4.mid
new file mode 100644
index 00000000000..d0103d46f0a
Binary files /dev/null and b/sound/instruments/xylophone/Fn4.mid differ
diff --git a/sound/instruments/xylophone/Fn5.mid b/sound/instruments/xylophone/Fn5.mid
new file mode 100644
index 00000000000..2fb0d481d7e
Binary files /dev/null and b/sound/instruments/xylophone/Fn5.mid differ
diff --git a/sound/instruments/xylophone/Fn6.mid b/sound/instruments/xylophone/Fn6.mid
new file mode 100644
index 00000000000..851cc387df7
Binary files /dev/null and b/sound/instruments/xylophone/Fn6.mid differ
diff --git a/sound/instruments/xylophone/Gb2.mid b/sound/instruments/xylophone/Gb2.mid
new file mode 100644
index 00000000000..1429339b866
Binary files /dev/null and b/sound/instruments/xylophone/Gb2.mid differ
diff --git a/sound/instruments/xylophone/Gb3.mid b/sound/instruments/xylophone/Gb3.mid
new file mode 100644
index 00000000000..2e7ffcc7317
Binary files /dev/null and b/sound/instruments/xylophone/Gb3.mid differ
diff --git a/sound/instruments/xylophone/Gb4.mid b/sound/instruments/xylophone/Gb4.mid
new file mode 100644
index 00000000000..dcb800e3af8
Binary files /dev/null and b/sound/instruments/xylophone/Gb4.mid differ
diff --git a/sound/instruments/xylophone/Gb5.mid b/sound/instruments/xylophone/Gb5.mid
new file mode 100644
index 00000000000..9bfd1db08e9
Binary files /dev/null and b/sound/instruments/xylophone/Gb5.mid differ
diff --git a/sound/instruments/xylophone/Gb6.mid b/sound/instruments/xylophone/Gb6.mid
new file mode 100644
index 00000000000..2329d70b8f0
Binary files /dev/null and b/sound/instruments/xylophone/Gb6.mid differ
diff --git a/sound/instruments/xylophone/Gn2.mid b/sound/instruments/xylophone/Gn2.mid
new file mode 100644
index 00000000000..67e8ff80b15
Binary files /dev/null and b/sound/instruments/xylophone/Gn2.mid differ
diff --git a/sound/instruments/xylophone/Gn3.mid b/sound/instruments/xylophone/Gn3.mid
new file mode 100644
index 00000000000..416b3603110
Binary files /dev/null and b/sound/instruments/xylophone/Gn3.mid differ
diff --git a/sound/instruments/xylophone/Gn4.mid b/sound/instruments/xylophone/Gn4.mid
new file mode 100644
index 00000000000..81c84e8ae96
Binary files /dev/null and b/sound/instruments/xylophone/Gn4.mid differ
diff --git a/sound/instruments/xylophone/Gn5.mid b/sound/instruments/xylophone/Gn5.mid
new file mode 100644
index 00000000000..34b94805a5e
Binary files /dev/null and b/sound/instruments/xylophone/Gn5.mid differ
diff --git a/sound/instruments/xylophone/Gn6.mid b/sound/instruments/xylophone/Gn6.mid
new file mode 100644
index 00000000000..2ea9104e419
Binary files /dev/null and b/sound/instruments/xylophone/Gn6.mid differ
diff --git a/strings/tips.txt b/strings/tips.txt
index fa2bd82c395..59c929bde9b 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -159,24 +159,22 @@ As a Servant, your Clockwork Slab fits in pockets and does not need to be held t
As a Servant, remember that while the selection of scripture and tools Servant cyborgs get is limited, it is still extremely useful, and some of it is unique; for example, engineering and janitor cyborgs get a proselytizer that can use their own power in addition to its own.
As a Servant, the Judicial Visor is an effective defensive combat tool in small spaces, as it stuns and mutes anyone still on it after 3 seconds. It is also useful for stunning already-stunned enemies for long enough to convert them or finish them off.
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, 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 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, 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.
As a Servant, placing components in a slab or cache places those components in a globally-accessable storage that slabs will draw from to invoke scripture.
As a Servant, you can stack different types of Sigils on the same turf; try stacking a Sigil of Transgression and a Sigil of Submission for a subtle conversion trap.
As a Servant, you can deconstruct a Clockwork Wall with a Replica Fabricator to regain 1000W power. You can also construct Clockwork Walls on Clockwork Floors for a cost of 1000W power.
-As a Servant, Volt Void will drain power from nearby Sigils of Transmission to up to double the damage of each volt ray. It'll even use your own power if you happen to be a cyborg!
As a Servant, Fellowship Armory invokes much faster for each nearby servant and attempts to provide each affected servant with powerful armor against melee, bullet, and bomb attacks. The gauntlets provided are also immune to elecricity.
As a Servant, Spatial Gateway can teleport to any living Servant or Clockwork Obelisk, and gains additional uses and duration for each Servant assisting in the invocation.
As a Servant, creating and activating the Gateway to the Celestial Derelict is your ultimate goal, and you must defend it with all the tools you have available.
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, 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 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 b5d6cd31c16..8c13f0dfb52 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"
@@ -28,6 +29,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"
@@ -245,6 +247,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"
@@ -428,7 +431,6 @@
#include "code\game\gamemodes\clock_cult\clock_items\replica_fabricator.dm"
#include "code\game\gamemodes\clock_cult\clock_items\soul_vessel.dm"
#include "code\game\gamemodes\clock_cult\clock_items\wraith_spectacles.dm"
-#include "code\game\gamemodes\clock_cult\clock_mobs\anima_fragment.dm"
#include "code\game\gamemodes\clock_cult\clock_mobs\clockwork_marauder.dm"
#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_applications.dm"
#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_cyborg.dm"
@@ -436,7 +438,6 @@
#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_judgement.dm"
#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_scripts.dm"
#include "code\game\gamemodes\clock_cult\clock_structures\ark_of_the_clockwork_justicar.dm"
-#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"
@@ -514,6 +515,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"
|