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 += "" 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 += "
JobSlotsOpen jobClose jobPrioritize
" 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 += "" @@ -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 += "
[C]
" - 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 += "" 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"
Blob
Progress: [GLOB.blobs_legit.len]/[mode.blobwincount]