diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm index 1ea3f19c62..862c745f81 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm @@ -70,7 +70,7 @@ /obj/structure/alien/weeds, /obj/item/clothing/mask/facehugger/impregnated, /obj/item/clothing/glasses/night, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /obj/effect/decal/cleanable/blood/old, /obj/item/clothing/under/syndicate/tacticool, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 2ec5b88792..b22c9787ba 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -526,8 +526,8 @@ /obj/structure/closet/crate/secure/gear{ req_access_txt = "150" }, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, +/obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/under/syndicate/combat, /obj/item/clothing/under/syndicate/combat, /obj/item/storage/belt/military, @@ -4197,7 +4197,7 @@ "kw" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/combat{ +/obj/item/clothing/gloves/tackler/combat/insulated{ pixel_y = -6 }, /obj/item/tank/internals/emergency_oxygen{ diff --git a/_maps/RandomRuins/SpaceRuins/advancedlab.dmm b/_maps/RandomRuins/SpaceRuins/advancedlab.dmm index 66a3d4e55d..b553bb5c97 100644 --- a/_maps/RandomRuins/SpaceRuins/advancedlab.dmm +++ b/_maps/RandomRuins/SpaceRuins/advancedlab.dmm @@ -185,7 +185,7 @@ name = "Clothes" }, /obj/item/clothing/head/chameleon, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/suit/chameleon, /obj/item/clothing/under/chameleon, /obj/item/clothing/shoes/chameleon, @@ -221,7 +221,7 @@ }, /obj/item/clothing/under/rank/centcom/commander, /obj/item/clothing/head/centhat, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/suit/armor/vest, /obj/item/clothing/shoes/sneakers/brown, /turf/open/floor/wood, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index bf4f0dbfa6..a4c60023e8 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -2202,11 +2202,11 @@ /area/ruin/space/has_grav/deepstorage/armory) "eO" = ( /obj/structure/table, -/obj/item/clothing/gloves/combat{ +/obj/item/clothing/gloves/tackler/combat/insulated{ pixel_x = -3; pixel_y = 4 }, -/obj/item/clothing/gloves/combat{ +/obj/item/clothing/gloves/tackler/combat/insulated{ pixel_x = 3; pixel_y = -2 }, diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm index 37bc2a7dde..a9c5eab318 100644 --- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm +++ b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm @@ -103,10 +103,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel, /area/engine/engineering) -"dw" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) "dZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -1170,7 +1166,8 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ dir = 1 }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, /area/engine/engineering) "Hp" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -1332,7 +1329,8 @@ /area/engine/engineering) "LS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, /area/engine/engineering) "Mf" = ( /obj/structure/closet/secure_closet/engineering_personal, @@ -2629,7 +2627,7 @@ EN fq LS Hn -dw +tw yf Rh yf @@ -2655,9 +2653,9 @@ XW ST Ok MP -dw -dw -dw +tw +tw +tw Rh Rh Rh diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 97ebb80101..de0b7cc430 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -4322,7 +4322,7 @@ /turf/open/floor/plating/asteroid/snow, /area/awaymission/academy/academycellar) "mV" = ( -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /turf/open/floor/plating/asteroid/snow, /area/awaymission/academy/academycellar) "mW" = ( diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 66d7f556b4..ca44e7d7b7 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -243,7 +243,7 @@ /area/awaymission/spacebattle/syndicate1) "bg" = ( /obj/structure/table/reinforced, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /turf/open/floor/mineral/plastitanium/red, /area/awaymission/spacebattle/syndicate1) "bh" = ( diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 28eded5c85..dbc857dfd7 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -705,6 +705,7 @@ /obj/item/circuitboard/machine/vending/donksofttoyvendor, /obj/item/storage/pill_bottle/happy, /obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/cogstation/cluwne, /turf/open/floor/plating, /area/crew_quarters/theatre/clown) "abJ" = ( @@ -800,24 +801,11 @@ /turf/closed/wall/r_wall, /area/router/aux) "abX" = ( -/obj/machinery/computer/secure_data, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Security Checkpoint"; - pixel_x = 22 - }, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/security/checkpoint) "abY" = ( /obj/structure/grille, @@ -1523,9 +1511,9 @@ dir = 1 }, /obj/structure/closet, -/obj/item/clothing/under/staffassistant, -/obj/item/clothing/under/staffassistant, -/obj/item/clothing/under/staffassistant, +/obj/item/clothing/under/misc/staffassistant, +/obj/item/clothing/under/misc/staffassistant, +/obj/item/clothing/under/misc/staffassistant, /turf/open/floor/plasteel, /area/crew_quarters/lounge) "adK" = ( @@ -3511,9 +3499,9 @@ c_tag = "Clown's Office"; pixel_x = 22 }, -/obj/item/clothing/under/rank/yellowclown, -/obj/item/clothing/under/rank/blueclown, -/obj/item/clothing/under/rank/greenclown, +/obj/item/clothing/under/rank/civilian/clown/yellow, +/obj/item/clothing/under/rank/civilian/clown/blue, +/obj/item/clothing/under/rank/civilian/clown/green, /obj/item/toy/crayon/spraycan/lubecan, /obj/item/megaphone/clown, /turf/open/floor/plating, @@ -4141,20 +4129,12 @@ /turf/open/floor/plasteel, /area/construction/secondary) "akd" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-4" }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel, +/obj/structure/cable, +/turf/open/floor/plating, /area/security/checkpoint) "ake" = ( /obj/machinery/firealarm{ @@ -4809,6 +4789,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/item/paper/guides/cogstation/letter_sec, /turf/open/floor/plasteel, /area/security/warden) "alG" = ( @@ -6070,8 +6051,27 @@ /turf/open/floor/plasteel/dark/corner, /area/hallway/secondary/entry) "aoy" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/machinery/computer/secure_data, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Security Checkpoint"; + pixel_x = 22 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, /area/security/checkpoint) "aoz" = ( /obj/structure/closet, @@ -7342,7 +7342,7 @@ pixel_y = 26 }, /obj/effect/landmark/start/bartender, -/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/costume/maid, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/grimy, /area/crew_quarters/bar) @@ -8418,6 +8418,7 @@ /obj/item/storage/bag/tray, /obj/item/clothing/gloves/color/white, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/item/paper/guides/cogstation/cooks, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "atP" = ( @@ -9400,12 +9401,19 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/barbershop) "avY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 }, -/turf/open/floor/plating, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 5; + pixel_y = -24 + }, +/obj/machinery/door/window/westleft{ + name = "AI Core Access"; + req_access_txt = "65" + }, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "avZ" = ( /obj/effect/landmark/start/cook, @@ -9528,13 +9536,15 @@ /turf/closed/wall/r_wall, /area/maintenance/solars/port) "awn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" }, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "awo" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -10387,11 +10397,16 @@ /turf/open/floor/plasteel, /area/hydroponics/lobby) "axZ" = ( -/obj/machinery/light{ - dir = 1; - light_color = "#e8eaff" +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 0; + pixel_y = 28 + }, +/obj/machinery/door/window/eastright{ + name = "AI Core Access"; + req_access_txt = "65" }, -/obj/structure/disposalpipe/segment, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aya" = ( @@ -11286,9 +11301,9 @@ "azR" = ( /obj/structure/closet/secure_closet/bar, /obj/structure/disposalpipe/segment, -/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/costume/maid, /obj/item/stack/spacecash/c10, -/obj/item/clothing/under/waiter, +/obj/item/clothing/under/suit/waiter, /turf/open/floor/plasteel/grimy, /area/crew_quarters/bar) "azS" = ( @@ -11768,27 +11783,31 @@ /turf/closed/wall, /area/crew_quarters/toilet) "aAP" = ( -/obj/effect/turf_decal/tile/red, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/security/brig) +"aAQ" = ( /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "2-8" }, /turf/open/floor/plasteel, -/area/security/brig) -"aAQ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = "63" - }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/main) +/area/security/checkpoint) "aAR" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, @@ -12361,11 +12380,20 @@ /turf/open/floor/plating, /area/security/main) "aCb" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, /area/security/brig) "aCc" = ( /obj/structure/closet/secure_closet/security/sec, @@ -12680,6 +12708,7 @@ /obj/item/stack/packageWrap, /obj/item/hand_labeler, /obj/item/book/manual/wiki/security_space_law, +/obj/item/paper/guides/cogstation/letter_sec, /turf/open/floor/carpet/red, /area/security/brig) "aCM" = ( @@ -12867,9 +12896,11 @@ /area/crew_quarters/barbershop) "aDb" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plating, -/area/security/main) +/area/security/checkpoint) "aDc" = ( /obj/machinery/firealarm{ dir = 4; @@ -12972,16 +13003,19 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet) "aDm" = ( -/obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/computer/security{ + dir = 1 + }, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/security/checkpoint) "aDn" = ( @@ -13176,19 +13210,23 @@ /area/maintenance/port/fore) "aDF" = ( /obj/structure/table, -/obj/machinery/firealarm{ - pixel_y = 26 - }, +/obj/machinery/recharger, +/obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ - dir = 4 + dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/paper_bin, -/obj/item/pen, /turf/open/floor/plasteel, -/area/security/main) +/area/security/checkpoint) "aDG" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, @@ -13340,18 +13378,26 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "aEc" = ( -/obj/structure/closet{ - name = "Evidence Closet 5" +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" }, -/obj/machinery/light_switch{ - pixel_y = -24 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" }, /turf/open/floor/plasteel, /area/security/brig) @@ -13839,7 +13885,7 @@ "aFc" = ( /obj/structure/table, /obj/item/clothing/suit/toggle/owlwings, -/obj/item/clothing/under/owl, +/obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask, /turf/open/floor/plating/asteroid, /area/hydroponics/garden{ @@ -13904,12 +13950,11 @@ /turf/closed/wall/r_wall, /area/crew_quarters/heads/hos) "aFk" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/security/main) +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/checkpoint) "aFl" = ( /obj/structure/chair/sofa/right, /obj/effect/turf_decal/tile/green{ @@ -14215,10 +14260,18 @@ /turf/open/floor/plasteel, /area/storage/emergency/generic) "aFP" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, -/area/security/checkpoint) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/security/main) "aFQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -14241,11 +14294,17 @@ /turf/open/floor/plasteel, /area/storage/emergency/generic) "aFT" = ( -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/turf/closed/wall, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, /area/security/brig) "aFU" = ( /obj/machinery/atmospherics/components/binary/circulator/cold{ @@ -15134,17 +15193,14 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aHE" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -6; - pixel_y = 2 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = 6; - pixel_y = 3 +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/bridge) +/turf/open/floor/plating/airless, +/area/space/nearstation) "aHF" = ( /turf/open/floor/plasteel/dark, /area/bridge) @@ -15191,7 +15247,7 @@ }, /area/chapel/main) "aHK" = ( -/obj/structure/piano, +/obj/structure/musician/piano, /turf/open/floor/carpet{ icon_state = "carpetsymbol" }, @@ -15630,34 +15686,71 @@ /turf/open/floor/plasteel, /area/hallway/secondary/civilian) "aIC" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/main) "aID" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/security/main) "aIE" = ( /turf/open/floor/carpet/royalblue, /area/bridge) "aIF" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/noticeboard{ + pixel_y = 28 + }, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/recharger, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/main) "aIG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ +/obj/structure/table, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/plating, -/area/security/detectives_office) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/main) "aIH" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 6 @@ -15752,14 +15845,42 @@ /turf/open/floor/plasteel, /area/hydroponics) "aIS" = ( +/obj/structure/disposalpipe/segment, /obj/effect/landmark/start/ai, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 27; + pixel_y = -7 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 27; + pixel_y = 5 + }, /obj/machinery/button/door{ id = "AIShutter"; layer = 3.6; name = "AI Core Shutter Control"; - pixel_x = 24 + pixel_x = 24; + pixel_y = -24 + }, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/machinery/button/door{ + id = "AIChamberShutter"; + layer = 3.6; + name = "AI Chamber Shutter Control"; + pixel_x = -24; + pixel_y = -24 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aIT" = ( @@ -15918,14 +16039,23 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "aJj" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/chair{ + dir = 4 }, -/obj/machinery/light_switch{ - pixel_y = 24 +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/obj/machinery/power/apc{ + areastring = "/area/maintenance/aft"; + dir = 8; + name = "Chapel APC"; + pixel_x = -26 + }, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) "aJk" = ( /obj/structure/table/wood, /obj/item/candle, @@ -16429,11 +16559,21 @@ /turf/open/floor/carpet/red, /area/security/brig) "aKi" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/main) "aKj" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 6 @@ -17300,25 +17440,12 @@ /turf/open/floor/plasteel, /area/security/brig) "aLX" = ( -/obj/structure/table, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/noticeboard{ - pixel_y = 28 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/recharger, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "0-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, +/obj/structure/cable, +/turf/open/floor/plating, /area/security/main) "aLY" = ( /obj/effect/turf_decal/tile/red, @@ -17718,13 +17845,12 @@ /turf/open/floor/plasteel, /area/hallway/secondary/civilian) "aMN" = ( -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, /area/security/main) "aMO" = ( @@ -17909,9 +18035,7 @@ /turf/open/floor/plasteel, /area/bridge) "aNh" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aNi" = ( @@ -17990,37 +18114,13 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "aNo" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AIShutter"; + name = "AI Core Shutters" }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/item/aiModule/supplied/oxygen{ - pixel_x = 2; - pixel_y = 10 - }, -/obj/item/aiModule/supplied/quarantine{ - pixel_x = 1; - pixel_y = 8 - }, -/obj/item/aiModule/zeroth/oneHuman{ - pixel_y = 4 - }, -/obj/effect/spawner/lootdrop/aimodule_harmful{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/item/aiModule/supplied/protectStation{ - pixel_x = -2 - }, -/obj/structure/window/reinforced/spawner/north, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) "aNp" = ( /obj/effect/turf_decal/delivery, @@ -18038,17 +18138,11 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "aNr" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/north, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aNs" = ( /obj/effect/turf_decal/tile/yellow{ @@ -18119,21 +18213,10 @@ }, /area/chapel/main) "aNz" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/machinery/door/window/northleft{ - name = "AI Chamber"; - req_one_access_txt = "65" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aNA" = ( /obj/machinery/door/firedoor, @@ -18407,6 +18490,9 @@ "aOe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) "aOf" = ( @@ -18682,16 +18768,15 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aOI" = ( -/obj/structure/chair/stool, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/machinery/flasher{ + id = "ID"; + pixel_x = 8; + pixel_y = 24 }, -/obj/structure/window/reinforced/spawner/north, -/turf/open/floor/plasteel, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aOJ" = ( /turf/closed/wall/r_wall, @@ -18784,7 +18869,7 @@ /obj/effect/turf_decal/bot, /obj/item/clothing/accessory/armband/hydro, /obj/item/encryptionkey/headset_service, -/obj/item/clothing/under/rank/vice, +/obj/item/clothing/under/misc/vice_officer, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ dir = 4 }, @@ -18859,21 +18944,13 @@ name = "Engine Room" }) "aPf" = ( -/obj/machinery/computer/upload/ai{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 6 }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/north, -/turf/open/floor/plasteel, +/turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aPg" = ( /obj/structure/grille, @@ -18976,15 +19053,15 @@ }, /area/hallway/primary/central) "aPs" = ( -/obj/structure/closet/secure_closet/hop, -/obj/machinery/light{ - dir = 1; - light_color = "#e8eaff" +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit, -/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hop) +/obj/effect/turf_decal/tile/red, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/main) "aPt" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -19101,6 +19178,9 @@ pixel_y = 6 }, /obj/item/clothing/glasses/meson, +/obj/machinery/status_display{ + pixel_x = -32 + }, /turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "aPF" = ( @@ -19245,30 +19325,40 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/fitness/cogpool) "aPT" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-02" +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/bridge) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "aPU" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/camera{ - c_tag = "Bridge - Port Quarter"; - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/keycard_auth{ - pixel_y = -24 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/bridge) "aPV" = ( -/obj/machinery/photocopier, -/turf/open/floor/plasteel/dark, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, /area/bridge) "aPW" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel/dark, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, /area/bridge) "aPX" = ( /obj/structure/table, @@ -20551,9 +20641,20 @@ /turf/open/floor/plasteel, /area/hallway/secondary/civilian) "aSJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/heads/captain) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = "63" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/security/main) "aSK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20819,11 +20920,16 @@ /turf/open/floor/plating, /area/maintenance/department/eva) "aTo" = ( -/obj/effect/landmark/start/captain, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "0-4" }, -/area/crew_quarters/heads/captain) +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/security/detectives_office) "aTp" = ( /obj/structure/chair{ dir = 4 @@ -20856,17 +20962,24 @@ }, /area/chapel/main) "aTr" = ( -/obj/structure/table/wood, -/obj/machinery/recharger, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/captain) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/detectives_office) "aTs" = ( /turf/closed/wall, /area/maintenance/department/eva) "aTt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/heads/hop) +/obj/structure/closet/secure_closet/detective, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aTu" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -20962,14 +21075,16 @@ /turf/closed/wall, /area/router/public) "aTH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plating, +/area/bridge) "aTI" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line, @@ -20985,16 +21100,12 @@ /turf/open/floor/plasteel, /area/router/public) "aTJ" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/fourcolor, -/obj/item/pen/fountain{ - pixel_x = 2; - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/item/stamp/hop, -/turf/open/floor/carpet/green, -/area/crew_quarters/heads/hop) +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aTK" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -21551,9 +21662,13 @@ /turf/open/floor/plasteel, /area/science/mixing) "aVa" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aVb" = ( /obj/structure/pool/Rboard, @@ -22108,9 +22223,12 @@ /turf/open/floor/plasteel, /area/gateway) "aWn" = ( -/obj/structure/closet/secure_closet/detective, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aWo" = ( @@ -22197,27 +22315,40 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aWw" = ( -/obj/structure/table/wood, -/obj/item/pinpointer/nuke, -/obj/item/card/id/captains_spare, -/obj/item/hand_tele, -/obj/item/disk/nuclear, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) -"aWx" = ( -/obj/structure/table/wood, -/obj/machinery/light, -/obj/item/storage/photo_album/Captain, -/obj/item/camera{ - pixel_y = -6 +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/stamp/captain, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aWx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/detectives_office) "aWy" = ( -/obj/machinery/suit_storage_unit/captain, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aWz" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -23026,9 +23157,12 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aYm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ai_monitored/storage/eva) +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aYn" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line{ @@ -23188,30 +23322,40 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "aYD" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/eva) -"aYE" = ( -/obj/item/beacon, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/eva) -"aYF" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-2" }, -/turf/open/floor/plasteel/checker, -/area/ai_monitored/storage/eva) +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aYE" = ( +/obj/structure/closet/crate/trashcart, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/junction, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aYF" = ( +/obj/structure/table/wood, +/obj/item/storage/box/evidence, +/obj/item/hand_labeler, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "aYG" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -23229,14 +23373,17 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aYI" = ( -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/turf/open/floor/plasteel/dark/side{ - dir = 4 +/obj/machinery/photocopier, +/obj/structure/extinguisher_cabinet{ + pixel_y = -32 }, -/area/hallway/primary/central) +/obj/item/paper/guides/cogstation/letter_sec, +/turf/open/floor/plasteel, +/area/security/main) "aYJ" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -23584,7 +23731,7 @@ /obj/effect/turf_decal/bot_white/left, /obj/item/stack/sheet/mineral/diamond, /obj/item/gun/ballistic/revolver/mateba, -/obj/item/clothing/under/soviet, +/obj/item/clothing/under/costume/soviet, /obj/item/clothing/suit/armor/vest/russian_coat, /obj/item/clothing/head/helmet/rus_helmet, /obj/machinery/light, @@ -23857,6 +24004,9 @@ /obj/item/aiModule/core/full/custom{ pixel_x = -4 }, +/obj/machinery/status_display{ + pixel_x = 32 + }, /turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "aZQ" = ( @@ -23884,10 +24034,18 @@ /turf/open/floor/plasteel/dark/corner, /area/ai_monitored/storage/eva) "aZT" = ( -/obj/structure/table/wood, -/obj/item/stack/packageWrap, -/turf/open/floor/carpet/royalblue, -/area/bridge) +/obj/structure/closet/secure_closet/hos, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/obj/item/storage/box/deputy, +/obj/item/paper/guides/cogstation/letter_hos, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/heads/hos) "aZU" = ( /obj/structure/chair, /obj/machinery/light{ @@ -24280,8 +24438,8 @@ "baP" = ( /obj/structure/closet/secure_closet/captains, /obj/item/reagent_containers/food/drinks/flask/gold, -/obj/item/clothing/under/gimmick/rank/captain/suit, -/obj/item/clothing/under/gimmick/rank/captain/suit/skirt, +/obj/item/clothing/under/rank/captain/suit, +/obj/item/clothing/under/rank/captain/suit/skirt, /obj/machinery/airalarm{ pixel_y = 24 }, @@ -24349,11 +24507,39 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "baW" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/item/aiModule/core/full/asimov{ + pixel_x = 2; + pixel_y = 10 + }, +/obj/effect/spawner/lootdrop/aimodule_neutral{ + pixel_x = 1; + pixel_y = 8 + }, +/obj/effect/spawner/lootdrop/aimodule_harmless{ + pixel_y = 6 + }, +/obj/item/aiModule/core/freeformcore{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/aiModule/supplied/freeform{ + pixel_x = -2 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "baX" = ( /obj/effect/turf_decal/tile/yellow, @@ -25772,36 +25958,12 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "beu" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/item/aiModule/core/full/asimov{ - pixel_x = 2; - pixel_y = 10 - }, -/obj/effect/spawner/lootdrop/aimodule_neutral{ - pixel_x = 1; - pixel_y = 8 - }, -/obj/effect/spawner/lootdrop/aimodule_harmless{ - pixel_y = 6 - }, -/obj/item/aiModule/core/freeformcore{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/item/aiModule/supplied/freeform{ - pixel_x = -2 - }, -/turf/open/floor/plasteel, +/obj/structure/cable, +/turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) "bev" = ( /obj/structure/cable{ @@ -25943,7 +26105,11 @@ /area/security/courtroom/jury) "beQ" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/grimy, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall, /area/security/detectives_office) "beR" = ( /obj/structure/chair{ @@ -26304,23 +26470,19 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "bfH" = ( -/obj/structure/chair{ - dir = 4 +/obj/machinery/light{ + dir = 1 }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/light_switch{ + pixel_y = 24 }, -/obj/machinery/power/apc{ - areastring = "/area/maintenance/aft"; - dir = 8; - name = "Chapel APC"; - pixel_x = -24 +/obj/machinery/button/crematorium{ + id = "foo"; + pixel_x = 8; + pixel_y = 24 }, -/turf/open/floor/plasteel{ - icon_state = "chapel" - }, -/area/chapel/main) +/turf/open/floor/plasteel/dark, +/area/chapel/office) "bfI" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -26349,6 +26511,10 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, +/obj/item/paper/fluff/cogstation/letter_chap{ + pixel_x = 10; + pixel_y = 2 + }, /turf/open/floor/carpet{ icon_state = "carpetsymbol" }, @@ -26549,18 +26715,13 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "bgh" = ( -/obj/machinery/conveyor_switch{ - id = "EngiCargoConveyer" +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 6 }, -/obj/structure/cable, -/obj/machinery/power/apc{ - areastring = "/area/quartermaster/sorting"; - dir = 8; - name = "Delivery Office APC"; - pixel_x = -24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/sorting) +/turf/open/space/basic, +/area/space/nearstation) "bgi" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -27190,18 +27351,15 @@ /turf/open/floor/plasteel, /area/quartermaster/sorting) "bhB" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/structure/table/wood, +/obj/item/stack/packageWrap, +/obj/item/paper/fluff/cogstation/bsrb, +/obj/item/paper/fluff/cogstation/survey{ + pixel_x = -4; + pixel_y = 2 }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/obj/item/clothing/suit/space/eva, -/obj/item/clothing/head/helmet/space/eva, -/turf/open/floor/plasteel, -/area/quartermaster/qm) +/turf/open/floor/carpet/royalblue, +/area/bridge) "bhC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/orange/hidden, @@ -27517,16 +27675,12 @@ /turf/open/floor/plating, /area/quartermaster/storage) "bik" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-2" }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/bridge) "bil" = ( /obj/effect/turf_decal/stripes/line{ @@ -27573,14 +27727,16 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "biq" = ( -/obj/machinery/computer/cargo/request{ - dir = 1 +/obj/structure/closet/secure_closet/hop, +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" }, -/obj/machinery/keycard_auth{ - pixel_x = 24; - pixel_y = -8 +/obj/item/clothing/under/rank/civilian/head_of_personnel/suit, +/obj/item/clothing/under/rank/civilian/head_of_personnel/suit/skirt{ + name = "head of personnel's suitskirt" }, -/turf/open/floor/carpet/green, +/turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hop) "bir" = ( /obj/effect/turf_decal/tile/brown{ @@ -28094,17 +28250,25 @@ /turf/open/floor/plating, /area/security/courtroom/jury) "bjw" = ( -/obj/machinery/computer/card{ - dir = 8 +/obj/item/storage/secure/safe{ + pixel_x = 4; + pixel_y = 32 }, -/obj/machinery/keycard_auth{ - pixel_x = 8; - pixel_y = -24 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" }, -/area/crew_quarters/heads/captain) +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/central) "bjx" = ( /obj/structure/table/optable, /obj/effect/turf_decal/bot, @@ -28136,21 +28300,13 @@ /turf/open/floor/plating, /area/maintenance/department/eva) "bjB" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/item/folder/red, -/turf/open/floor/plasteel, -/area/security/checkpoint/supply) +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/brig) "bjC" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -28193,9 +28349,18 @@ }, /area/engine/atmos) "bjF" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/checkpoint/supply) +/obj/machinery/power/apc{ + areastring = "/area/maintenance/aft"; + dir = 8; + name = "Head of Personnel APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/turf/open/floor/carpet/green, +/area/crew_quarters/heads/hop) "bjG" = ( /obj/structure/rack, /turf/open/floor/plasteel, @@ -28350,21 +28515,24 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bjV" = ( +/obj/structure/closet{ + name = "Evidence Closet 5" + }, +/obj/machinery/light_switch{ + pixel_y = -24 + }, /obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/chair{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/security/checkpoint/supply) +/area/security/brig) "bjW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28642,12 +28810,12 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "bkC" = ( -/obj/machinery/modular_computer/console/preset/research{ - dir = 8 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/item/reagent_containers/food/drinks/coffee, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hor) +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "bkD" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -29496,13 +29664,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bmj" = ( -/obj/structure/closet/secure_closet/RD, -/obj/machinery/light{ - dir = 4; - light_color = "#c1caff" +/obj/machinery/vending/wardrobe/cap_wardrobe, +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hor) +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/captain) "bmk" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, @@ -29914,6 +30081,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, +/obj/item/paper/guides/cogstation/cdn_chap, /turf/open/floor/plasteel/dark, /area/chapel/office) "bmY" = ( @@ -30540,9 +30708,17 @@ /turf/closed/wall/r_wall, /area/crew_quarters/fitness/cogpool) "boj" = ( -/obj/structure/rack, -/obj/item/caution, -/obj/item/caution, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/quartermaster/warehouse) "bok" = ( @@ -31307,17 +31483,10 @@ name = "Aft Air Hookup" }) "bpW" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/closed/wall, /area/security/brig) "bpX" = ( /obj/machinery/disposal/bin, @@ -32621,12 +32790,9 @@ /turf/open/floor/plating, /area/maintenance/disposal) "bsz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; dir = 4 }, /turf/open/space/basic, @@ -32770,15 +32936,11 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "bsT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 10 }, -/obj/structure/transit_tube/crossing/horizontal, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible, /turf/open/space/basic, /area/space/nearstation) "bsU" = ( @@ -33505,19 +33667,25 @@ /turf/open/floor/plating, /area/maintenance/department/chapel) "buM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/heads/cmo) +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/captain) "buN" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/closed/wall/rust, /area/chapel/main) "buO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/closed/wall, -/area/security/detectives_office) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "buP" = ( /obj/item/trash/plate, /obj/item/lighter/greyscale, @@ -33535,22 +33703,15 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "buR" = ( -/obj/item/storage/secure/safe{ - pixel_x = 4; - pixel_y = 32 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plating, -/area/maintenance/starboard/central) +/area/crew_quarters/heads/hop) "buS" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/cmo) @@ -34517,7 +34678,7 @@ dir = 8 }, /obj/structure/table, -/obj/item/clothing/under/rank/mailman, +/obj/item/clothing/under/misc/mailman, /obj/item/clothing/head/mailman, /obj/item/wirecutters, /obj/item/stack/packageWrap, @@ -34620,8 +34781,8 @@ /obj/structure/disposalpipe/segment, /obj/item/clothing/gloves/color/purple, /obj/item/clothing/gloves/color/purple, -/obj/item/clothing/under/janimaid, -/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/costume/maid, +/obj/item/clothing/under/costume/maid, /obj/structure/sign/poster/official/bless_this_spess{ pixel_x = -32 }, @@ -35067,13 +35228,19 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "byd" = ( -/obj/machinery/computer/crew, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fourcolor, +/obj/item/pen/fountain{ + pixel_x = 2; + pixel_y = 6 }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) +/obj/item/stamp/hop, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/heads/hop) "bye" = ( /obj/structure/safe/floor, /obj/effect/turf_decal/tile/green, @@ -35615,19 +35782,16 @@ /turf/open/floor/plating/airless, /area/quartermaster/miningoffice) "bzw" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/machinery/conveyor{ - dir = 4; - id = "MiningConveyer" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 }, -/obj/machinery/door/poddoor{ - id = "MiningConveyerBlastDoor"; - name = "Asteroid Mining Load Door" - }, -/turf/open/floor/plating/airless, -/area/quartermaster/miningoffice) +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/plasteel, +/area/quartermaster/warehouse) "bzx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -35701,45 +35865,10 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "bzH" = ( -/obj/structure/table, -/obj/machinery/light{ - dir = 4; - light_color = "#c1caff" - }, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus{ - pixel_y = 8 - }, -/obj/item/stock_parts/cell/high/plus{ - pixel_y = 8 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/flash{ - pixel_x = -8; - pixel_y = 4 - }, -/turf/open/floor/plasteel/dark, -/area/science/robotics/lab) +/obj/structure/disposalpipe/segment, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/disposal) "bzI" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -35995,17 +36124,20 @@ /turf/open/floor/plasteel, /area/router) "bAn" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/dark/side{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 }, -/area/gateway) +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/heads/hop) "bAo" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -36131,12 +36263,13 @@ /area/science/mixing) "bAA" = ( /obj/structure/lattice, -/obj/structure/disposalpipe/segment, -/obj/machinery/camera{ - c_tag = "Supply - Warehouse Exterior"; - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/space/basic, /area/space/nearstation) "bAB" = ( @@ -36327,16 +36460,22 @@ /turf/closed/wall, /area/hallway/secondary/exit) "bAX" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/photocopier, -/obj/structure/extinguisher_cabinet{ - pixel_y = -32 +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plasteel, -/area/security/main) +/obj/item/paper/fluff/cogstation/letter_cap{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/flashlight/lamp, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bAY" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -36520,17 +36659,16 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bBt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/carpet/green, -/area/crew_quarters/heads/hop) +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bBu" = ( /turf/open/floor/plasteel/showroomfloor, /area/medical/morgue) @@ -36827,11 +36965,14 @@ /turf/open/floor/plasteel, /area/router/eva) "bCd" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 +/obj/effect/landmark/start/captain, +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/white, -/area/gateway) +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bCe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36996,7 +37137,7 @@ }, /obj/effect/turf_decal/tile/yellow, /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/under/overalls, +/obj/item/clothing/under/misc/overalls, /obj/structure/window/reinforced/spawner/east, /turf/open/floor/plasteel, /area/storage/primary) @@ -37007,9 +37148,11 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bCB" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/disposal) "bCC" = ( @@ -37038,8 +37181,11 @@ /turf/open/floor/plating, /area/router/eva) "bCF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) @@ -37376,11 +37522,8 @@ "bDw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" - }, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ - dir = 10 + id = "AIChamberShutter"; + name = "AI Chamber Shutters" }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) @@ -37580,13 +37723,11 @@ /turf/open/floor/plasteel, /area/medical/chemistry) "bDU" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 6 + id = "AIChamberShutter"; + name = "AI Chamber Shutters" }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) @@ -37594,13 +37735,16 @@ /turf/open/floor/plasteel/stairs/left, /area/crew_quarters/bar) "bDW" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "AI Chamber"; + req_access_txt = "65" }, -/turf/open/floor/circuit, +/turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) "bDX" = ( /turf/open/floor/plasteel/stairs/right, @@ -37797,18 +37941,22 @@ /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/fore) "bEq" = ( -/obj/machinery/computer/security{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plasteel, -/area/security/checkpoint) +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bEr" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -38011,23 +38159,13 @@ /turf/open/floor/plating, /area/maintenance/fore) "bEL" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = "63" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/disposal) "bEM" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -38178,12 +38316,12 @@ /turf/open/floor/plating, /area/router) "bEZ" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" + id = "AIChamberShutter"; + name = "AI Chamber Shutters" }, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) "bFa" = ( @@ -38221,13 +38359,36 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "bFf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AIShutter"; - name = "AI Core Shutters" +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/item/aiModule/supplied/oxygen{ + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/aiModule/supplied/quarantine{ + pixel_x = 1; + pixel_y = 8 + }, +/obj/item/aiModule/zeroth/oneHuman{ + pixel_y = 4 + }, +/obj/effect/spawner/lootdrop/aimodule_harmful{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/aiModule/supplied/protectStation{ + pixel_x = -2 + }, +/turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "bFg" = ( /obj/effect/turf_decal/tile/brown, @@ -38329,8 +38490,16 @@ /turf/open/floor/plating, /area/medical/chemistry) "bFv" = ( -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, -/turf/open/floor/circuit, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "bFw" = ( /obj/machinery/monkey_recycler, @@ -38352,27 +38521,22 @@ /turf/open/floor/plasteel, /area/medical/chemistry) "bFy" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - areastring = "/area/maintenance/aft"; - dir = 8; - name = "Head of Personnel APC"; - pixel_x = -24 +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 }, -/turf/open/floor/carpet/green, -/area/crew_quarters/heads/hop) -"bFz" = ( /obj/structure/cable{ - icon_state = "2-8" + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/dark/side{ - dir = 8 - }, -/area/gateway) +/area/crew_quarters/heads/captain) +"bFz" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/item/paper/guides/cogstation/janitor, +/turf/open/floor/plasteel, +/area/janitor) "bFA" = ( /obj/structure/chair/stool, /obj/effect/turf_decal/tile/neutral, @@ -38760,11 +38924,17 @@ /turf/open/floor/plasteel, /area/security/main) "bGg" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/circuit, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "bGh" = ( /obj/structure/lattice, @@ -38967,11 +39137,10 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/structure/disposalpipe/segment, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-8" }, -/obj/structure/window/reinforced/spawner/north, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "bGC" = ( @@ -38991,7 +39160,6 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/structure/window/reinforced/spawner/north, /obj/machinery/atmospherics/pipe/simple/orange/hidden, /turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) @@ -39103,9 +39271,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/clothing/under/staffassistant, -/obj/item/clothing/under/staffassistant, -/obj/item/clothing/under/staffassistant, +/obj/item/clothing/under/misc/staffassistant, +/obj/item/clothing/under/misc/staffassistant, +/obj/item/clothing/under/misc/staffassistant, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bGS" = ( @@ -39372,7 +39540,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/clothing/under/staffassistant, +/obj/item/clothing/under/misc/staffassistant, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bHw" = ( @@ -39384,7 +39552,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/clothing/under/staffassistant, +/obj/item/clothing/under/misc/staffassistant, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bHx" = ( @@ -39901,17 +40069,15 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "bIC" = ( -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/conveyor/auto{ + id = "disposal" }, -/obj/machinery/power/apc{ - areastring = "/area/maintenance/aft"; - dir = 8; - name = "Aft Maintenance APC"; - pixel_x = -24 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/disposal) "bID" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/neutral{ @@ -40061,16 +40227,11 @@ name = "Research Sector" }) "bIT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible, -/obj/machinery/atmospherics/pipe/simple/violet/hidden{ - icon_state = "pipe11-2"; - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/violet/hidden, /turf/open/space/basic, /area/space/nearstation) "bIU" = ( @@ -40121,12 +40282,9 @@ /turf/open/floor/plasteel, /area/maintenance/department/chapel) "bIY" = ( -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 10 - }, -/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden, /turf/open/space/basic, -/area/space/nearstation) +/area/space) "bIZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -40749,16 +40907,13 @@ /turf/open/floor/plating, /area/quartermaster/miningoffice) "bKp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) "bKq" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -40932,12 +41087,18 @@ /turf/open/floor/engine, /area/science/xenobiology) "bKG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/computer/cargo/request{ + dir = 1 }, -/turf/open/floor/plating, -/area/science/xenobiology) +/obj/machinery/keycard_auth{ + pixel_x = 24; + pixel_y = -8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/heads/hop) "bKH" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 @@ -40952,25 +41113,23 @@ /turf/open/floor/engine, /area/science/mixing) "bKJ" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) "bKK" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) "bKL" = ( /obj/structure/cable{ icon_state = "2-4" @@ -41191,12 +41350,13 @@ /turf/open/floor/engine, /area/science/xenobiology) "bLe" = ( -/obj/machinery/door/window/westright{ - name = "Containment Pen"; - req_one_access_txt = "55" +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/engine, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/crew_quarters/heads/hop) "bLf" = ( /obj/machinery/door/window/eastleft{ name = "Containment Pen"; @@ -41218,8 +41378,23 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bLh" = ( -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/obj/structure/bed, +/obj/item/radio/intercom{ + name = "Station Intercom (Common)"; + pixel_y = -28 + }, +/obj/item/bedsheet/captain, +/obj/effect/landmark/start/captain, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bLi" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ @@ -41237,12 +41412,16 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bLk" = ( -/obj/machinery/door/window/eastleft{ - name = "Containment Pen"; - req_one_access_txt = "55" +/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ + dir = 1 }, -/turf/open/floor/engine, -/area/science/xenobiology) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bLl" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 4 @@ -41703,11 +41882,23 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "bMh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bMi" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ @@ -41731,7 +41922,7 @@ "bMm" = ( /obj/structure/table/wood, /obj/machinery/light, -/obj/item/clothing/under/assistantformal{ +/obj/item/clothing/under/misc/assistantformal{ pixel_y = 4 }, /turf/open/floor/carpet{ @@ -41979,10 +42170,14 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bMK" = ( -/obj/machinery/atmospherics/pipe/simple/violet/visible{ +/obj/structure/lattice, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; dir = 5 }, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "bML" = ( @@ -42100,9 +42295,13 @@ /turf/open/floor/plating, /area/router) "bMX" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/violet/visible, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ +/obj/structure/lattice, +/obj/structure/sign/warning{ + name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; dir = 4 }, /turf/open/space/basic, @@ -42879,15 +43078,17 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bOJ" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/science/xenobiology) +/mob/living/simple_animal/pet/cat/space, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bOK" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/northright{ @@ -42897,18 +43098,20 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bOL" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 +/obj/machinery/computer/card{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/keycard_auth{ + pixel_x = 8; + pixel_y = -24 }, -/obj/item/clothing/mask/gas, -/obj/item/clothing/glasses/science, -/turf/open/floor/plasteel, -/area/science/xenobiology) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/heads/captain) "bOM" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/stripes/line{ @@ -42938,22 +43141,47 @@ /turf/open/floor/plating, /area/science/xenobiology) "bOQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/plating, -/area/science/xenobiology) -"bOR" = ( -/obj/machinery/door/window/southright{ - name = "Secure Xenobiological Containment"; - req_one_access_txt = "55" +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/engine, -/area/science/xenobiology) +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/captain) +"bOR" = ( +/obj/structure/table/wood, +/obj/item/pinpointer/nuke, +/obj/item/card/id/captains_spare, +/obj/item/hand_tele, +/obj/item/disk/nuclear, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/captain) "bOS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/science/xenobiology) +/obj/structure/table/wood, +/obj/machinery/light, +/obj/item/storage/photo_album/Captain, +/obj/item/camera{ + pixel_y = -6 + }, +/obj/item/stamp/captain, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/captain) "bOT" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1 @@ -43048,15 +43276,14 @@ /turf/open/floor/engine, /area/science/xenobiology) "bPh" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/engine, -/area/engine/secure_construction{ - name = "Engineering Construction Area" - }) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/space/basic, +/area/space/nearstation) "bPi" = ( /obj/structure/chair{ dir = 8 @@ -43070,8 +43297,8 @@ /area/science/xenobiology) "bPk" = ( /obj/structure/table/reinforced, -/obj/item/clothing/under/staffassistant, -/obj/item/clothing/under/staffassistant, +/obj/item/clothing/under/misc/staffassistant, +/obj/item/clothing/under/misc/staffassistant, /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/suit/apron/surgical, /turf/open/floor/engine, @@ -43141,10 +43368,14 @@ /turf/open/floor/plating, /area/maintenance/disposal) "bPr" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 10 +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 4 }, /turf/open/space/basic, /area/space/nearstation) @@ -43329,9 +43560,15 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bPK" = ( -/obj/structure/window/reinforced/spawner/north, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/dark, +/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai) "bPL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -43445,18 +43682,13 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "bPX" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Engineering Foyer"; - req_one_access_txt = "10;24" +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 9 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/space/basic, +/area/space/nearstation) "bPY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/orange/hidden, @@ -43502,7 +43734,8 @@ dir = 1; name = "AI Chamber turret control"; pixel_x = 5; - pixel_y = 24 + pixel_y = 24; + req_access_txt = "65" }, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ dir = 6 @@ -44084,11 +44317,9 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/captain) "bRc" = ( +/obj/machinery/suit_storage_unit/captain, /obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 5 + icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) @@ -44187,36 +44418,26 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bRn" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Engineering Foyer"; - req_one_access_txt = "10;24" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"bRo" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 8 }, /turf/open/space/basic, /area/space/nearstation) +"bRo" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden, +/turf/open/space/basic, +/area/space/nearstation) "bRp" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible, /turf/open/space/basic, /area/space/nearstation) "bRq" = ( @@ -44325,20 +44546,14 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "bRA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Access"; - req_one_access_txt = "10;24" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/light{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/engine, +/area/engine/secure_construction{ + name = "Engineering Construction Area" + }) "bRB" = ( /obj/item/radio/intercom{ name = "Station Intercom (Common)"; @@ -44356,14 +44571,20 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bRD" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 6; + pixel_y = 3 + }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/bridge) "bRE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45375,17 +45596,13 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "bTJ" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; dir = 8 }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 23 - }, -/turf/open/floor/plasteel, -/area/engine/secure_construction{ - name = "Engineering Construction Area" - }) +/turf/open/space/basic, +/area/space/nearstation) "bTK" = ( /turf/open/floor/engine/co2, /area/engine/atmos) @@ -45704,15 +45921,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bUt" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" }, -/turf/open/floor/plating, -/area/science/server{ - name = "Computer Core" - }) +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/hallway/primary/central) "bUu" = ( /obj/structure/grille, /obj/structure/disposalpipe/segment{ @@ -45972,23 +46189,19 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "bUS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/photocopier, -/obj/structure/disposalpipe/segment{ +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - name = "Cargo RC"; - pixel_y = 30 - }, -/obj/machinery/camera{ - c_tag = "Supply - Delivery Office Aft"; - network = list("ss13","rd") - }, +/obj/effect/turf_decal/tile/brown, +/obj/item/clothing/suit/space/eva, +/obj/item/clothing/head/helmet/space/eva, +/obj/item/paper/fluff/cogstation/letter_qm, /turf/open/floor/plasteel, -/area/quartermaster/sorting) +/area/quartermaster/qm) "bUT" = ( /obj/effect/turf_decal/delivery, /obj/machinery/light{ @@ -46009,13 +46222,14 @@ /turf/open/floor/plasteel, /area/ai_monitored/turret_protected/ai_upload_foyer) "bUV" = ( -/obj/effect/turf_decal/stripes/white/full, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/lattice, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 10 }, -/turf/open/floor/plasteel, -/area/engine/atmos) +/turf/open/space/basic, +/area/space/nearstation) "bUW" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 @@ -46032,12 +46246,13 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "bUX" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/engine/atmos) +/turf/open/floor/engine, +/area/engine/secure_construction{ + name = "Engineering Construction Area" + }) "bUY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -46068,21 +46283,15 @@ /turf/open/floor/plasteel, /area/router) "bVb" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Access"; - req_one_access_txt = "10;24" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/secure_construction{ + name = "Engineering Construction Area" + }) "bVc" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -46157,17 +46366,12 @@ /turf/open/floor/plasteel, /area/maintenance/department/chapel) "bVj" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor/auto{ + id = "disposal" }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) +/turf/open/floor/plating, +/area/maintenance/disposal) "bVk" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ @@ -46477,9 +46681,13 @@ name = "Research Sector" }) "bVN" = ( -/obj/structure/closet/l3closet/scientist, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hor) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "bVO" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -47522,30 +47730,15 @@ /turf/open/floor/plasteel, /area/hydroponics) "bXI" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/computer/security{ - dir = 8 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/apc{ - areastring = "/area/security/checkpoint/supply"; - dir = 4; - name = "Cargo Security Checkpoint APC"; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/supply) +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "bXJ" = ( /obj/structure/chair{ dir = 8 @@ -47769,15 +47962,13 @@ /turf/open/floor/plating, /area/router) "bYg" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "toxins launcher bay door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, -/area/maintenance/starboard/aft) +/area/science/mixing) "bYh" = ( /obj/structure/cable{ icon_state = "1-8" @@ -48328,10 +48519,11 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "bZe" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/grille, /obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-2" }, /turf/open/floor/plating, /area/science/server{ @@ -48748,17 +48940,11 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "caf" = ( +/obj/structure/lattice, /obj/structure/disposalpipe/segment, -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 5 }, /turf/open/space/basic, /area/space/nearstation) @@ -49168,15 +49354,16 @@ /turf/open/floor/plating, /area/science/storage) "cbi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "cbj" = ( /obj/structure/cable{ icon_state = "1-8" @@ -49237,12 +49424,13 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cbp" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/captain) "cbq" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -49304,20 +49492,12 @@ /turf/open/floor/engine, /area/science/explab) "cbA" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1 - }, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) "cbB" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -49361,21 +49541,16 @@ /turf/open/space/basic, /area/space/nearstation) "cbH" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) "cbI" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -50097,11 +50272,16 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "cda" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/dark/corner, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cdb" = ( /obj/structure/disposalpipe/trunk{ @@ -50202,13 +50382,20 @@ /turf/open/floor/plasteel, /area/engine/break_room) "cdm" = ( -/obj/structure/closet/secure_closet/CMO, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/photocopier, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) +/obj/item/paper/guides/cogstation/disposals, +/turf/open/floor/plasteel, +/area/engine/break_room) "cdn" = ( /obj/structure/cable{ icon_state = "1-4" @@ -50233,10 +50420,14 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "cdp" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/violet/visible, -/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ - dir = 4 +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/obj/machinery/atmospherics/pipe/simple/violet/hidden{ + icon_state = "pipe11-2"; + dir = 8 }, /turf/open/space/basic, /area/space/nearstation) @@ -50572,14 +50763,24 @@ /turf/closed/wall/r_wall, /area/medical/medbay/lobby) "cea" = ( -/obj/machinery/computer/cloning, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/segment, -/obj/item/paper/guides/jobs/medical/cloning{ - pixel_x = -4 +/obj/effect/turf_decal/delivery, +/obj/machinery/photocopier, +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + name = "Cargo RC"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Supply - Delivery Office Aft"; + network = list("ss13","rd") + }, +/obj/item/paper/guides/cogstation/disposals, /turf/open/floor/plasteel, -/area/medical/medbay/central) +/area/quartermaster/sorting) "ceb" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line, @@ -51327,10 +51528,18 @@ name = "Engineering Construction Area" }) "cfx" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 23 + }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel, -/area/engine/atmos) +/area/engine/secure_construction{ + name = "Engineering Construction Area" + }) "cfy" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -51815,18 +52024,10 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "cgt" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, +/obj/structure/rack, +/obj/item/caution, +/obj/item/caution, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ - dir = 4 - }, /turf/open/floor/plasteel, /area/quartermaster/warehouse) "cgu" = ( @@ -52674,13 +52875,23 @@ /turf/open/floor/plating, /area/maintenance/disposal) "cij" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/disposaloutlet, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/disposal) +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/westleft{ + name = "Science Desk"; + req_access_txt = "0"; + req_one_access_txt = "29;47" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/lab) "cik" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52827,17 +53038,10 @@ /turf/open/floor/plating/airless, /area/maintenance/port/fore) "ciC" = ( -/obj/structure/closet/secure_closet/hos, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/obj/item/storage/box/deputy, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/heads/hos) +/obj/structure/table, +/obj/item/paper/pamphlet/gateway, +/turf/open/floor/plasteel/white, +/area/gateway) "ciD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52848,26 +53052,13 @@ /turf/open/floor/plasteel/dark, /area/engine/teg_cold) "ciE" = ( -/obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - name = "Security RC"; - pixel_x = 32 - }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, -/area/security/checkpoint/supply) +/area/quartermaster/office) "ciF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53087,15 +53278,13 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "cjb" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ - dir = 9 +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/effect/landmark/start/shaft_miner, /turf/open/floor/plasteel, -/area/quartermaster/warehouse) +/area/quartermaster/miningoffice) "cjc" = ( /obj/structure/fans/tiny, /obj/structure/plasticflaps, @@ -53196,15 +53385,16 @@ /turf/closed/wall/rust, /area/maintenance/port/central) "cjr" = ( -/obj/structure/table, -/obj/machinery/airalarm{ - pixel_y = 24 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/item/hand_labeler, -/obj/item/reagent_containers/glass/bottle/formaldehyde, -/obj/item/paper/guides/jobs/medical/morgue, -/turf/open/floor/plasteel/showroomfloor, -/area/medical/morgue) +/obj/structure/cable, +/turf/open/floor/plating, +/area/science/server{ + name = "Computer Core" + }) "cjs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -53344,13 +53534,11 @@ /turf/open/space/basic, /area/space/nearstation) "cjG" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/window/reinforced/spawner, /turf/open/floor/plasteel, -/area/science/xenobiology) +/area/ai_monitored/storage/eva) "cjH" = ( /obj/structure/lattice, /obj/structure/sign/warning/electricshock{ @@ -53581,13 +53769,12 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cjZ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/item/beacon, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/window/reinforced/spawner/north, /turf/open/floor/plasteel, -/area/science/xenobiology) +/area/ai_monitored/storage/eva) "cka" = ( /obj/item/beacon, /obj/structure/cable{ @@ -53651,22 +53838,15 @@ name = "Research Sector" }) "ckg" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, +/obj/effect/landmark/event_spawn, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/turf/open/floor/plasteel/dark/corner, +/area/ai_monitored/storage/eva) "ckh" = ( /obj/machinery/light_switch{ pixel_x = -24 @@ -53971,7 +54151,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple, -/obj/item/clothing/under/rank/miner, +/obj/item/clothing/under/rank/cargo/miner, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "ckL" = ( @@ -53983,7 +54163,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/purple, -/obj/item/clothing/under/rank/miner, +/obj/item/clothing/under/rank/cargo/miner, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "ckM" = ( @@ -53995,7 +54175,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/purple, -/obj/item/clothing/under/rank/miner, +/obj/item/clothing/under/rank/cargo/miner, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "ckN" = ( @@ -54116,26 +54296,25 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "ckY" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/turf/open/floor/plasteel/checker, +/area/ai_monitored/storage/eva) "ckZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ai_monitored/storage/eva) "cla" = ( /obj/structure/cable{ icon_state = "4-8" @@ -54975,12 +55154,26 @@ /turf/open/floor/plasteel, /area/medical/chemistry) "cmT" = ( -/obj/machinery/door/poddoor{ - id = "toxinsdriver"; - name = "toxins launcher bay door" +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/turf/open/floor/plating, -/area/science/mixing) +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/item/folder/red, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/machinery/door/window/northright{ + name = "Security Checkpoint"; + req_access_txt = "1" + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) "cmU" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -55181,12 +55374,12 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "cnm" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/turf/open/floor/plating, +/area/gateway) "cnn" = ( /obj/structure/cable{ icon_state = "2-4" @@ -55331,10 +55524,10 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/chair{ + dir = 4 }, -/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, /area/security/checkpoint/supply) "cnC" = ( @@ -56486,19 +56679,14 @@ /turf/open/floor/plasteel, /area/engine/teg_hot) "cpM" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/turretid{ - control_area = "area/science/server"; - icon_state = "control_stun"; - name = "Computer Core turret control"; - pixel_x = -3; - pixel_y = -23 +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" }, /turf/open/floor/plasteel, -/area/ai_monitored/turret_protected/ai_upload_foyer) +/area/engine/atmos) "cpN" = ( /obj/structure/closet/secure_closet/atmospherics, /obj/item/cartridge/atmos, @@ -56947,24 +57135,16 @@ /turf/open/floor/plasteel, /area/engine/teg_cold) "cqB" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/absinthe, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/computer/secure_data{ - dir = 8 - }, -/obj/machinery/newscaster/security_unit{ - pixel_x = 30 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/supply) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/hor) "cqC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, @@ -57777,7 +57957,11 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, /area/security/checkpoint/supply) "csi" = ( @@ -57804,15 +57988,15 @@ /turf/open/floor/plasteel, /area/science/explab) "csl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-8" }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/turf/open/floor/plating, +/area/crew_quarters/heads/hor) "csm" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -57918,37 +58102,33 @@ /turf/open/floor/plasteel, /area/engine/teg_cold) "csu" = ( -/obj/structure/table, -/obj/machinery/computer/med_data/laptop, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Medical Officer's Desk"; - departmentType = 5; - name = "Chief Medical Officer RC"; - pixel_y = 32 +/turf/open/floor/plasteel/dark/side{ + dir = 8 }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) +/area/gateway) "csv" = ( -/obj/machinery/computer/card/minor/cmo{ - dir = 1 +/obj/structure/table, +/obj/effect/turf_decal/tile/brown{ + dir = 8 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/effect/turf_decal/tile/brown, +/obj/item/storage/toolbox/mechanical, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/keycard_auth{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) +/obj/item/paper/guides/cogstation/letter_supp, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) "csw" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -57960,19 +58140,17 @@ /turf/open/floor/plasteel, /area/security/main) "csx" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/structure/closet/secure_closet/RD, +/obj/machinery/light{ + dir = 4; + light_color = "#c1caff" }, -/obj/machinery/photocopier, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/obj/item/paper/fluff/cogstation/letter_rd, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/hor) "csy" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 @@ -58325,17 +58503,22 @@ /turf/open/floor/plasteel, /area/quartermaster/sorting) "ctn" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown, -/obj/item/storage/toolbox/mechanical, -/obj/structure/disposalpipe/segment{ +/obj/structure/closet/secure_closet/engineering_chief, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 1; + locked = 0; + pixel_y = -22 + }, +/obj/item/paper/guides/cogstation/letter_chief, /turf/open/floor/plasteel, -/area/quartermaster/sorting) +/area/crew_quarters/heads/chief) "cto" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/tile/brown, @@ -58388,14 +58571,20 @@ /area/quartermaster/sorting) "ctu" = ( /obj/structure/table, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/bot, +/obj/machinery/camera{ + c_tag = "Supply - Cargo Office"; dir = 1 }, +/obj/machinery/newscaster{ + pixel_y = -28 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/storage/box/disks, /turf/open/floor/plasteel, -/area/quartermaster/miningoffice) +/area/quartermaster/office) "ctv" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/tile/brown, @@ -59209,7 +59398,9 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, -/obj/effect/landmark/event_spawn, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/gateway) "cuR" = ( @@ -59732,13 +59923,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "cvM" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/absinthe, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hor) +/obj/effect/landmark/event_spawn, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/gateway) "cvN" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -60186,20 +60379,13 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "cwx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/transit_tube/station/reverse/flipped{ - dir = 1 - }, -/obj/structure/transit_tube_pod{ - dir = 8 +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, +/obj/effect/turf_decal/stripes/white/full, /turf/open/floor/plasteel, -/area/engine/secure_construction{ - name = "Engineering Construction Area" - }) +/area/engine/atmos) "cwy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/transit_tube/horizontal, @@ -60238,24 +60424,19 @@ /turf/open/floor/plasteel, /area/engine/workshop) "cwF" = ( -/obj/structure/lattice, -/obj/structure/transit_tube/curved{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/plasteel, +/area/engine/atmos) "cwG" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment, -/obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/plasteel, +/area/engine/atmos) "cwH" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden, /turf/closed/wall, @@ -60283,6 +60464,9 @@ dir = 4 }, /obj/structure/transit_tube/station/reverse/flipped, +/obj/structure/transit_tube_pod{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/atmos) "cwN" = ( @@ -60828,19 +61012,15 @@ /area/quartermaster/miningoffice) "cxT" = ( /obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/camera{ - c_tag = "Supply - Cargo Office"; +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/machinery/newscaster{ - pixel_y = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, +/obj/item/paper/guides/cogstation/letter_supp, /turf/open/floor/plasteel, -/area/quartermaster/office) +/area/quartermaster/miningoffice) "cxU" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -60881,10 +61061,15 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cxZ" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/delivery, +/obj/machinery/button/door{ + id = "MiningConveyorBlastDoor"; + name = "Mining Conveyor Access"; + pixel_x = 8; + pixel_y = -24; + req_access_txt = "0"; + req_one_access_txt = "10;24;48" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "cya" = ( @@ -61497,19 +61682,19 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "czf" = ( -/obj/structure/chair/office/light{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 }, -/obj/effect/landmark/start/chief_medical_officer, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark/side{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) +/area/gateway) "czg" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -61708,26 +61893,32 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "czz" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ - name = "CMO's Office"; - req_access_txt = "40" + name = "Gateway Chamber"; + req_access_txt = "62" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/gateway) +"czA" = ( +/obj/machinery/modular_computer/console/preset/research{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/coffee, +/obj/structure/cable{ + icon_state = "2-4" }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/white, -/area/crew_quarters/heads/cmo) -"czA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, -/area/crew_quarters/heads/cmo) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/hor) "czB" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ @@ -62159,9 +62350,23 @@ /turf/open/floor/plating, /area/maintenance/disposal) "cAo" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/window/northright{ + name = "Medbay Desk"; + req_access_txt = "5" + }, +/obj/item/clipboard, +/obj/item/clothing/glasses/hud/health, /obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel, -/area/janitor) +/obj/item/paper/fluff/cogstation/sleepers, +/obj/item/pen, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel/white, +/area/medical/medbay/lobby) "cAp" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ @@ -62480,16 +62685,12 @@ /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "cAQ" = ( -/obj/structure/closet/crate/trashcart, -/obj/machinery/light/small{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/structure/disposalpipe/junction, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/turf/open/floor/plating, +/area/crew_quarters/heads/hor) "cAR" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 @@ -62499,13 +62700,20 @@ }, /area/chapel/office) "cAS" = ( -/obj/structure/table/wood, -/obj/item/storage/box/evidence, -/obj/item/hand_labeler, -/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark/side{ + dir = 8 + }, +/area/gateway) "cAT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, @@ -62778,15 +62986,12 @@ name = "Aft Air Hookup" }) "cBt" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = "63" +/obj/structure/closet/l3closet/scientist, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel, -/area/security/main) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/hor) "cBu" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -63668,11 +63873,19 @@ /turf/open/floor/plasteel/stairs/left, /area/hallway/primary/central) "cCO" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 4 +/obj/structure/table, +/obj/machinery/airalarm{ + pixel_y = 24 }, -/turf/open/floor/plasteel, -/area/security/main) +/obj/item/hand_labeler, +/obj/item/reagent_containers/glass/bottle/formaldehyde, +/obj/item/paper/guides/jobs/medical/morgue, +/obj/item/paper/guides/cogstation/cdn_med{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/medical/morgue) "cCP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -63832,21 +64045,19 @@ /turf/open/floor/plating, /area/quartermaster/sorting) "cDh" = ( -/obj/structure/closet/secure_closet/engineering_chief, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/computer/card/minor/cmo{ + dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/machinery/airalarm{ - dir = 1; - locked = 0; - pixel_y = -22 +/obj/machinery/keycard_auth{ + pixel_x = -24 }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/chief) +/obj/item/paper/guides/cogstation/letter_cmo, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/cmo) "cDi" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -63861,11 +64072,18 @@ /turf/open/floor/plasteel, /area/storage/primary) "cDj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" }, -/turf/open/floor/plating, /area/crew_quarters/heads/hor) "cDk" = ( /obj/machinery/door/firedoor, @@ -63996,9 +64214,21 @@ /turf/closed/wall/r_wall, /area/crew_quarters/heads/captain) "cDv" = ( -/obj/machinery/vending/wardrobe/cap_wardrobe, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/captain) +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/hor) "cDw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -64019,35 +64249,39 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/captain) "cDy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/hor) +"cDz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/security/checkpoint/supply) +"cDA" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = 30 + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/captain) -"cDz" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/captain) -"cDA" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/captain) +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) "cDB" = ( /obj/item/storage/secure/safe{ pixel_x = -24 @@ -64072,49 +64306,64 @@ }, /area/crew_quarters/heads/captain) "cDD" = ( -/obj/structure/bed, -/obj/item/radio/intercom{ - name = "Station Intercom (Common)"; - pixel_y = -28 - }, -/obj/item/bedsheet/captain, -/obj/effect/landmark/start/captain, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/captain) -"cDE" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 1 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/captain) -"cDF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/area/crew_quarters/heads/captain) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/computer/security{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/supply"; + dir = 4; + name = "Cargo Security Checkpoint APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"cDE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) +"cDF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) "cDG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, -/mob/living/simple_animal/pet/cat/space, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" }, -/area/crew_quarters/heads/captain) +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) "cDH" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 @@ -64128,16 +64377,19 @@ /turf/open/floor/plasteel, /area/gateway) "cDJ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/computer/crew, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/dark/side{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/area/gateway) +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/cmo) "cDK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -64286,29 +64538,35 @@ }, /area/crew_quarters/heads/hor) "cDZ" = ( +/obj/structure/table, +/obj/machinery/computer/med_data/laptop, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer RC"; + pixel_y = 32 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/heads/hor) +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/cmo) "cEa" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/hor) +/obj/structure/cable, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) "cEb" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -64726,22 +64984,17 @@ /turf/open/floor/plasteel, /area/science/lab) "cEE" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/westleft{ - name = "Science Desk"; - req_access_txt = "29;47" +/obj/machinery/power/apc{ + areastring = "/area/maintenance/aft"; + dir = 8; + name = "Aft Maintenance APC"; + pixel_x = -26 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/lab) +/turf/open/floor/plating, +/area/maintenance/aft) "cEF" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -66706,23 +66959,20 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "cHV" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/machinery/power/apc{ - areastring = "/area/medical/genetics"; - dir = 8; - name = "Genetics Lab APC"; - pixel_x = -24 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/aft) +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) "cHW" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/item/reagent_containers/glass/beaker, @@ -68061,21 +68311,14 @@ /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "cKj" = ( -/obj/structure/table/reinforced, +/obj/structure/closet/secure_closet/CMO, +/obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/door/window/northright{ - name = "Medbay Desk"; - req_access_txt = "5" - }, -/obj/item/clipboard, -/obj/item/pen, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/item/paper/guides/cogstation/letter_cmo, /turf/open/floor/plasteel/white, -/area/medical/medbay/lobby) +/area/crew_quarters/heads/cmo) "cKk" = ( /obj/structure/chair/office/light{ dir = 1; @@ -68258,20 +68501,22 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "cKC" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/landmark/start/chief_medical_officer, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/cmo) "cKD" = ( /obj/machinery/atmospherics/pipe/manifold/orange/hidden{ dir = 8 @@ -68550,7 +68795,7 @@ dir = 8 }, /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/under/overalls, +/obj/item/clothing/under/misc/overalls, /turf/open/floor/plasteel, /area/storage/primary) "cLo" = ( @@ -68633,7 +68878,7 @@ "cLz" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/under/overalls, +/obj/item/clothing/under/misc/overalls, /turf/open/floor/plasteel, /area/storage/primary) "cLA" = ( @@ -70405,6 +70650,1037 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"cPz" = ( +/obj/structure/lattice, +/obj/structure/transit_tube/curved{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/turf/open/space/basic, +/area/space/nearstation) +"cPA" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment, +/obj/structure/transit_tube/horizontal, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/turf/open/space/basic, +/area/space/nearstation) +"cPB" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/transit_tube/crossing/horizontal, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/turf/open/space/basic, +/area/space/nearstation) +"cPC" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/transit_tube/horizontal, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cPD" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cPE" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/space/basic, +/area/space/nearstation) +"cPF" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/space/basic, +/area/space/nearstation) +"cPG" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Supply - Warehouse Exterior"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/space/basic, +/area/space/nearstation) +"cPH" = ( +/obj/machinery/conveyor_switch{ + id = "EngiCargoConveyer" + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/sorting"; + dir = 8; + name = "Delivery Office APC"; + pixel_x = -26 + }, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"cPI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Foyer"; + req_one_access_txt = "10;24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cPJ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Foyer"; + req_one_access_txt = "10;24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cPK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Access"; + req_one_access_txt = "10;24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cPL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Access"; + req_one_access_txt = "10;24" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/break_room) +"cPM" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security RC"; + pixel_x = 32 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) +"cPN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cPO" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cPP" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4; + light_color = "#c1caff" + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus{ + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_y = 8 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/robotics/lab) +"cPQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + areastring = "/area/medical/genetics"; + dir = 8; + name = "Genetics Lab APC"; + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cPR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) +"cPS" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "CMO's Office"; + req_access_txt = "40" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/white, +/area/crew_quarters/heads/cmo) +"cPT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads/cmo) +"cPU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cPV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cPW" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cPX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"cPY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cPZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQa" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQb" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQc" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQd" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQe" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + id = "xenobio2"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQg" = ( +/obj/machinery/door/window/westright{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQh" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQj" = ( +/obj/machinery/door/window/eastleft{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQl" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/north, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + id = "xenobio1"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQm" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQq" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQr" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner, +/obj/machinery/button/door{ + id = "xenobio4"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQs" = ( +/obj/machinery/door/window/westright{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQu" = ( +/obj/machinery/door/window/eastleft{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQv" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/button/door{ + id = "xenobio3"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQw" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQx" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner, +/obj/machinery/button/door{ + id = "xenobio6"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQy" = ( +/obj/machinery/door/window/westright{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQz" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQB" = ( +/obj/machinery/door/window/eastleft{ + name = "Containment Pen"; + req_one_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio6"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQC" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/button/door{ + id = "xenobio5"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQD" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQE" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQF" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"cQH" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "xenobio7"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQI" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/glasses/science, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cQJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQL" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQM" = ( +/obj/machinery/door/window/southright{ + name = "Secure Xenobiological Containment"; + req_one_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio7"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"cQN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQP" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"cQQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQR" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/bridge) +"cQT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/bridge) +"cQU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/bridge) +"cQV" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-02" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQW" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/machinery/camera{ + c_tag = "Bridge - Port Quarter"; + dir = 1 + }, +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQX" = ( +/obj/machinery/photocopier, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQY" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cQZ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"cRa" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "MiningConveyer" + }, +/obj/machinery/door/poddoor{ + id = "MiningConveyorBlastDoor"; + name = "Asteroid Mining Load Door" + }, +/turf/open/floor/plating/airless, +/area/quartermaster/miningoffice) +"cRb" = ( +/obj/machinery/computer/cloning, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/segment, +/obj/item/paper/guides/jobs/medical/cloning{ + pixel_x = -4 + }, +/obj/item/paper/fluff/cogstation/cloner{ + pixel_x = 6 + }, +/turf/open/floor/plasteel, +/area/medical/medbay/central) +"cRc" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/door/airlock/research{ + name = "Aft Observatory"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel/dark, +/area/science/misc_lab{ + name = "Research Observatory" + }) +"cRd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/machinery/door/airlock/research{ + name = "Aft Observatory"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel/dark, +/area/science/misc_lab{ + name = "Research Observatory" + }) +"cRe" = ( +/obj/machinery/computer/upload/ai{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai) +"cRf" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/flasher{ + id = "ID"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"cRg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/white/corner, +/area/engine/atmos) +"cRh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/turretid{ + control_area = "area/science/server"; + icon_state = "control_stun"; + name = "Computer Core turret control"; + pixel_x = -3; + pixel_y = -23; + req_access_txt = "65" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/turret_protected/ai_upload_foyer) "cVq" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -70697,16 +71973,6 @@ /obj/machinery/atmospherics/pipe/simple/violet/visible, /turf/open/space/basic, /area/space) -"kxL" = ( -/obj/structure/lattice, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) "kzb" = ( /obj/machinery/atmospherics/pipe/manifold/orange/hidden{ dir = 4 @@ -70881,17 +72147,6 @@ /obj/machinery/atmospherics/pipe/simple/supplymain/visible, /turf/open/space/basic, /area/space/nearstation) -"qnM" = ( -/obj/structure/lattice, -/obj/structure/sign/warning{ - name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) "qvB" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 8 @@ -70911,14 +72166,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"rbJ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/space/basic, -/area/space/nearstation) "rdF" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 6 @@ -71123,13 +72370,6 @@ /obj/item/pen, /turf/open/floor/plasteel, /area/engine/atmos) -"xqa" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/violet/visible{ - dir = 5 - }, -/turf/open/space/basic, -/area/space/nearstation) "xCy" = ( /obj/machinery/atmospherics/components/binary/pump, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ @@ -84607,7 +85847,7 @@ aaU aaa aaU aEa -aTH +aHE bab aaa aaa @@ -84864,7 +86104,7 @@ aaU aaU aaU aEb -bRD +aPT aaU aaU aye @@ -85121,7 +86361,7 @@ aaU aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -85378,7 +86618,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -85635,7 +86875,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -85892,7 +87132,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -86149,7 +87389,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -86406,7 +87646,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -86663,7 +87903,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -86920,7 +88160,7 @@ aaa aaa aaU aEb -bRD +aPT aaU aaa aaa @@ -87177,7 +88417,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -87434,7 +88674,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -87691,7 +88931,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -87948,7 +89188,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -88205,7 +89445,7 @@ aaa aaa aaU aEa -bRD +aPT aaU aaa aaa @@ -88462,19 +89702,19 @@ aaa aaa aaU aEa -bRD +aPT aaU aaU aaa aaU -aGn -aGn -aGn -aGn -aGn -aGn -aGn -aGn +aPV +bik +bik +bik +bik +bik +bik +cQT aaU aaa aaU @@ -88547,22 +89787,22 @@ bFt bJs bJV bxT -bKG -bLe -bFl +cQa +cQg +cQk bxT -bKG -bLe -bFl +cQa +cQs +cQk bxT -bKG -bLe -bFl +cQa +cQy +cQk bxT cvz cKA bOH -bFl +cQJ bxT bKM bKM @@ -88719,21 +89959,21 @@ aaU aaU aaU aEa -bRD +aPT aaU aaU -aGn -aGn -aGn +aPV +bik +cQS aIA aJe aLE aLy aMQ aNF -aGn -aGn -aGn +cQU +bik +cQT aaU aaa aaa @@ -88806,20 +90046,20 @@ bJW bxT cbo bLf -cjZ +cQl bxT cbo bLf -cjZ +cQv bxT cbo bLf -cjZ +cQC bxT ctT cKB bOI -bOQ +cQK bOT bKM bKM @@ -88976,10 +90216,10 @@ abh abh abh aEb -bRD +aPT aaU aaU -aGn +aPW aHD aIg aHF @@ -88989,8 +90229,8 @@ aHF aJn aHF aPp -aPT -aGn +cQV +cQS aaU aaa aaa @@ -89058,25 +90298,25 @@ bxT bFo bHV bYz -cbi -cbp -cbA -cbH -cjP -cjP -ckg -cjP -cjP -cjP -ckg -cjP -ckY -cjP +cPU +cPW +cPY +cQb +cQh +cQm +cQh +cQh +cQh +cQh +cQw +cQh +cQz +cQD cjP ctR -cKC -bOJ -bFl +cQF +cQH +cQL bKM bKM bKM @@ -89233,11 +90473,11 @@ aaU aaU aaU aEa -bRD +aPT aaU -aGn -aGn -aHE +aPU +aTH +bRD aHF aHF aIE @@ -89246,7 +90486,7 @@ aIE aIE csD aHF -aPU +cQW aGq aaU aaa @@ -89315,25 +90555,25 @@ bxT cdD bHW bIG -csl -bzy -bKp -bKJ -bLh -bLh -bLh -bLh -bMh -bLh -bLh -bLh -ckZ -bLh +cPV +cPX +cPZ +cQc +cQi +cQn +cQi +cQp +cQt +cQi +cQi +cQp +cQA +cQE cbF cnl cla bOK -bOR +cQM bKM bKM bPa @@ -89494,21 +90734,21 @@ aLK aGq aGq aKH -aHF +cQQ aHF aIE aJu aKA -aZT +bhB aMX aIE aHF -aPV +cQX aQW -aSJ -aSJ +bkC +bkC aQW -aSJ +bkC aQW aaU aaa @@ -89575,22 +90815,22 @@ bIH cGA bJX bKq -bKK +cQd bLi bLi bLF -bLi +cQq bMi bLi -bLF bLi +cQq bLi bLi cvV ckS -cla -bOL -bFl +cQG +cQI +cQN bKM bKM bKM @@ -89751,7 +90991,7 @@ aUz bDP aGq aGL -aHF +cQQ aHF aIH aJz @@ -89760,16 +91000,16 @@ aLI aMX aIE aHF -aPW +cQY aQW -cDv -cjQ +bmj +bBt cDB -cDD +bLh aQW aQW -aSJ -aSJ +bkC +bVN aaa aaa aaa @@ -89804,7 +91044,7 @@ aaa bcw bde bcw -cmT +bYg bcy bfp cwY @@ -89832,22 +91072,22 @@ bII cGB bFw bxT -cjG +cQe bLj ckN bxT -cjG +cQr bLj ckN bxT -cjG +cQx bLj ckN bxT bOy cla bOM -bOS +cQO bOU bKM bKM @@ -90008,7 +91248,7 @@ aZq bDQ hcR aGM -aHF +cQQ aHF aII aJu @@ -90017,16 +91257,16 @@ aRe aXS bbb aHF -aHF +cQQ aQW baP -aTo +bCd cjQ -cDE +bLk aVP cpt -aWw -aSJ +bOR +bXI aaa aaa aaa @@ -90073,7 +91313,7 @@ bAN bKH cbh clc -csR +cGJ cGJ cGO cGU @@ -90089,22 +91329,22 @@ bIJ cGC bXO bxT -bFl -bLk -bKG +cQf +cQj +cQo bxT -bFl -bLk -bKG +cQf +cQu +cQo bxT -bFl -bLk -bKG +cQf +cQB +cQo bxT ctU ckX bON -bFl +cQP bxT bKM bKM @@ -90265,7 +91505,7 @@ bdz bDR aKF aLm -aMi +cQR aMi aQh aQN @@ -90274,16 +91514,16 @@ aRl aXT bbc bbD -bik +cQZ cDt cDw -cDy +bEq cps -cDF +bMh bRb -bRc -aWx -aSJ +bOQ +bOS +cbi aaa aaa aaa @@ -90534,13 +91774,13 @@ bbG bit cDu cDx -cDz +bFy cDC -cDG +bOJ aVR bBj -aWy -aSJ +bRc +bXI aaa aaa aaa @@ -90790,14 +92030,14 @@ aSW aHM biF aQW -aTr -cDA +buM +bAX bEN -bjw +bOL aQW aQW -aSJ -aSJ +buO +cbp aaa aaa aaa @@ -90845,7 +92085,7 @@ bcy cbC cnO cnO -cnO +csR cGQ cGW cGV @@ -91047,10 +92287,10 @@ aSW aHM bju aQW -aSJ -aSJ +buO +buO aQW -aSJ +buO aQW aaU aaa @@ -91818,9 +93058,9 @@ csr aNR blf aNR -aTt -aTt -aTt +buR +bKp +bKJ aaa bdg bdg @@ -92074,10 +93314,10 @@ aGq aNR aNR bly -bFy -aTJ +bjF +byd aUB -aTt +bKK aaa bdg beN @@ -92329,12 +93569,12 @@ aKS aSW cDs aNR -aPs +biq blA bqh buG bIW -aTt +bKK aaa bdg beR @@ -92591,7 +93831,7 @@ aYR csE bvJ aUF -aTt +bKK aaa bdg beJ @@ -92832,7 +94072,7 @@ aAv aOO aCl aFj -ciC +aZT aGv bLp bEV @@ -92846,9 +94086,9 @@ bbf bsf bnI aRo -bBt -biq -aTt +bAn +bKG +bLe aaa bdg beJ @@ -93696,7 +94936,7 @@ ckT ckT ckT ckV -cHK +cRc clg ctc cua @@ -93921,8 +95161,8 @@ csN biA biA csL -cDZ -bgX +cDj +cDy bPl bXx bXT @@ -93953,7 +95193,7 @@ ckQ ckU ckQ ckW -cHL +cRd csX ctP cuk @@ -94178,8 +95418,8 @@ cve bky biA biA -cDZ -bgX +cDj +cDy bWT bXh bYa @@ -94431,11 +95671,11 @@ aaU aaU bgW biI -cvM -bkC -bVN -bmj -cEa +cqB +czA +cBt +csx +cDv bgW bWU bXl @@ -94688,8 +95928,8 @@ aaU aUk bgW bgW -cDj -bgX +csl +cAQ bgW bgW cEb @@ -96426,10 +97666,10 @@ aQg akv aew azf -bpW -aAP -aEc +aCb aFT +bjV +bpW aZO aXu aZX @@ -96487,8 +97727,8 @@ aaU aTV aVk bfu -bAn -bFz +csu +cAS cDV cDX cEg @@ -96682,9 +97922,9 @@ alU aQA aSZ aew -abS -bEL -aCb +aAP +aEc +bjB asL asL bfm @@ -96729,7 +97969,7 @@ aZy beJ bfd bjg -aYI +bUt bai baV cKF @@ -96744,7 +97984,7 @@ aaU aTV aVq bfx -bCd +cuQ cpP aTV bVR @@ -96999,9 +98239,9 @@ aaa aaa aaU aUi -aVq +ciC bzz -cuQ +cvM cts aTV bVM @@ -97258,7 +98498,7 @@ aaU aTV aYf beo -bCd +cuQ cwe aTV bVS @@ -97453,7 +98693,7 @@ awS azB aBC atc -aLX +aIF aJv aJZ aLY @@ -97515,7 +98755,7 @@ aaU aTV bHH aWp -cDJ +czf coI aTV bVT @@ -97710,10 +98950,10 @@ awT aAk cjN atc -aDF +aIG aRU aDX -bAX +aYI atc aVQ aWa @@ -97771,8 +99011,8 @@ aaa aaU aUk aUk -aUi -cDK +cnm +czz aUk aUk bWa @@ -97966,9 +99206,9 @@ bGf bHh cqd cBb -cBt +aFP +aKi aMN -cCO aQw coU atc @@ -98223,9 +99463,9 @@ avL axw cqH bhN -aDb +aIC aDP -aFk +aPs aGh csn atc @@ -98303,7 +99543,7 @@ bRJ bth bTB cek -cKj +cAo cKk cKl cKm @@ -98480,9 +99720,9 @@ avM avL csw aBK -aCa -aCa -aAQ +aID +aLX +aSJ aHZ atc atc @@ -98808,7 +100048,7 @@ cEn bWR bSH bSG -cEE +cij bSG bSC bSC @@ -100054,9 +101294,9 @@ aWB bsl cjJ aXH -aYm -aYm -aYm +cbA +cbH +ckZ aZv bRP aWB @@ -100101,9 +101341,9 @@ ceY bst cyG bst -buM -buM -buM +cDE +cDG +cEa buS buS bFX @@ -100312,7 +101552,7 @@ aWK aXo aXI aYn -aYD +cda aZj aZw bRQ @@ -100358,11 +101598,11 @@ bqm cdW cyG cdY -buM -byd -czf -csv -buM +cDF +cDJ +cKC +cDh +cPR bFJ cFa cFk @@ -100569,7 +101809,7 @@ aWM aXr aXJ aXr -aXr +cjG aXr aXr bRU @@ -100616,10 +101856,10 @@ cmU cyG cdX buS -csu +cDZ czg czt -czz +cPS czD cFb bEl @@ -100826,7 +102066,7 @@ aWO bPz bQf aYs -aYE +cjZ aYs aYs bSV @@ -100876,7 +102116,7 @@ buS bAJ czh czu -czA +cPT czE cFc bEl @@ -101083,7 +102323,7 @@ aWP aXy aXN aXy -cda +ckg aXy aXy aXy @@ -101132,7 +102372,7 @@ bqm buS caR czi -cdm +cKj buS bFY cEX @@ -101340,7 +102580,7 @@ aWQ aXz aXU aYu -aYF +ckY aZn aZx bEs @@ -102380,7 +103620,7 @@ ajO ajO ajO ajO -ajO +aQa ajO ajO aRy @@ -102633,13 +103873,13 @@ ajO aGi axI axI -axI aGi -aNo -aPE -beu ajO +bFf +aPE baW +aYZ +beu beK bTX bWI @@ -102889,10 +104129,10 @@ avv ajO bCv axI -bCF -axI -axI -aNr +aNh +aNz +bDw +bFv bHp bLm ajO @@ -103144,12 +104384,12 @@ aSt brs avv ajO -axI avY -bDw -bEZ -bFv -bGB +ajO +ajO +aOI +bDU +bGg bIF bLz bNe @@ -103193,7 +104433,7 @@ bqq cPx cFh bJe -cea +cRb cHP bKA bKV @@ -103401,12 +104641,12 @@ bns aya avy alo -axZ awn aIS -awn +aNo aJp -aNz +bDW +bGB aHq bki bPp @@ -103423,11 +104663,11 @@ cwd bYZ bZc cgQ -bUt -bUt -bUt -bUt bZe +bZe +bZe +bZe +cjr brL brL bVW @@ -103658,19 +104898,19 @@ aSt brs avv ajO -axI -avY -bDU -bFf -bGg +axZ +ajO +ajO +aPf +bEZ bGD bJk bLC -bPK +cRf bPV bQT bVq -cpM +cRh bfh cbY cdn @@ -103917,10 +105157,10 @@ avv ajO aze azJ -bDW -azJ -aNh -aOI +aNr +bCF +bDw +bPK bKx bmv ajO @@ -103958,7 +105198,7 @@ cpI csK cKi cvR -bzH +cPP bts bCY bHJ @@ -104175,9 +105415,9 @@ ajO aGi axI aIX -axI aGi -aPf +ajO +cRe aZP bmH aYZ @@ -104481,7 +105721,7 @@ bJi bDa czw byQ -cHV +cPQ cIc cIc cIp @@ -104986,7 +106226,7 @@ bpE bpE cyQ byQ -cjr +cCO czx czC czG @@ -105196,19 +106436,19 @@ bUp cci btZ aSq -rTW -kxw -kxw -tpQ -kxw -tpQ -kxw -kxw -kxw -kxw -kxw -kxw -xqa +bgh +bIY +bIY +bRo +bIY +bRo +bIY +bIY +bIY +bIY +bIY +bIY +bRp aaa aaU bWv @@ -105453,7 +106693,7 @@ bUL btT btT cjE -opd +bsz aaU aaU cdV @@ -105495,7 +106735,7 @@ bZk bZn bZq bZh -bIC +cEE bpD cmL cyS @@ -105710,7 +106950,7 @@ bUY ccj aSw aaW -opd +bsz aaa aaa aaa @@ -105967,7 +107207,7 @@ bVa btT aaU aby -opd +bsz aaa aaa aaa @@ -106224,7 +107464,7 @@ bVu bvB aaU aby -opd +bsz aaa aaa aaa @@ -106481,7 +107721,7 @@ bVA btT aaU aby -opd +bsz aaa aaa aaa @@ -106738,8 +107978,8 @@ bXp btT aaU abH -aZp -kxL +bAA +bMK aZp ceq cet @@ -106996,7 +108236,7 @@ bvB bWq acY adz -opd +bsz aaa aaU cdt @@ -107253,7 +108493,7 @@ btT btT btT cjF -qnM +bMX cdt cdt cdt @@ -107510,7 +108750,7 @@ ccn ccA ccy aTl -opd +bsz cdG cer cew @@ -107767,7 +109007,7 @@ cco ccE btZ aTl -opd +bsz cdU ces ces @@ -107792,7 +109032,7 @@ csQ cqs cqG crt -csx +cdm ctl cuL cvd @@ -108024,7 +109264,7 @@ btT btT btT cjF -qnM +bMX cdt cdt cdt @@ -108281,7 +109521,7 @@ btT aaU aVt adN -opd +bsz aaa aaU cdt @@ -108538,7 +109778,7 @@ aaU aaU aTl qeq -rbJ +bPh guK hXk hXk @@ -108742,11 +109982,11 @@ aFr aKg ahO aml -aoy -aoy +abX +akd aoA awt -aoy +aDb aqL anB alS @@ -108795,7 +110035,7 @@ cuy cuD cuG eUF -opd +bsz aej agc agT @@ -108822,12 +110062,12 @@ bwR cBx cCR cdz -bPX +cPI cdJ cdM cdJ cdO -bRA +cPK bbY cIM bZl @@ -109000,10 +110240,10 @@ apv aiF amr aqL -abX +aoy aoD aoj -bEq +aDm aqL aji aKs @@ -109052,7 +110292,7 @@ aQJ aRZ aVK cxa -bsz +bPr sVC aNH bbQ @@ -109257,11 +110497,11 @@ apv ajb amt anH -akd +aAQ aoG bvp -aDm -aFP +aDF +aFk aHh aKB aNu @@ -109309,7 +110549,7 @@ aaU aSu aYU cxb -opd +bsz aej agC aoJ @@ -109336,12 +110576,12 @@ bEW bQF cah cdA -bRn +cPJ cdL cmv cdL cdQ -bVb +cPL bUD cIV coN @@ -109563,10 +110803,10 @@ aaa aaa aaa aaa -rTW -aTl -cdp -wPS +bgh +bGQ +bIT +bPX aaU atF atF @@ -109820,7 +111060,7 @@ aaa aaa aaa aaa -opd +bsz aTl cxc aaa @@ -110077,7 +111317,7 @@ aaa aaa aaa aaa -opd +bsz aTl cxc aaa @@ -110334,7 +111574,7 @@ aaa aWR aaa aaU -opd +bsz aTl cxc atF @@ -110591,7 +111831,7 @@ cgd bwW beE bwW -opd +bsz aTl cxc atF @@ -110625,7 +111865,7 @@ biQ bXf bkG cwP -cDh +ctn bob bib bXX @@ -110824,9 +112064,9 @@ aIN aMK aOc aSA -aVa -aWn -bsR +aTo +aTt +aTJ bsR bCG bCK @@ -110848,7 +112088,7 @@ cgX chC cik bwW -bGh +bsT bGQ bHe bHA @@ -111081,9 +112321,9 @@ aKj aVy aRx aSF -aHA +aTr arH -aIC +aVa aIK aKk aTU @@ -111340,7 +112580,7 @@ aND aWH aHx asc -aID +aWn bvG aKl bCQ @@ -111597,7 +112837,7 @@ bkT aWJ aHz btb -aID +aWn bvR bCI bDJ @@ -111854,14 +113094,14 @@ aci aXQ aHy bDc -aIF -aKi +aWw +aWy +aYm +aYD +aYE +aYF beQ -cnm -cAQ -cAS -buO -buR +bjw bwu bAd aMo @@ -112111,8 +113351,8 @@ aWX aZF anK aHz -aIG -aHA +aWx +aTr boA cAF bCL @@ -112136,7 +113376,7 @@ aMD arp bCk aqk -bIT +bRn qlJ qlJ bcG @@ -112393,9 +113633,9 @@ bwW ciV bwW aaU -bIY -bHg -bMK +bsT +bRo +bRp anr bcI bgw @@ -112652,10 +113892,10 @@ bwW aaU aaa aaa -bJv +bsz cJx cJF -bPh +bRA cJJ bsX cJM @@ -112909,11 +114149,11 @@ bwW aaU aaa aaa -bJv +bsz anr bcI sdp -bgw +bUX bgw uwK bhm @@ -113166,12 +114406,12 @@ bwW aaU aaa aaa -bJv +bsz anr bcI aXp -cwx -bTJ +bVb +cfx bhs bmm bcI @@ -113397,7 +114637,7 @@ aCJ bFn bFn aJd -aJj +bfH bdq bet bmu @@ -113423,7 +114663,7 @@ bwW aaU aaa aaa -bJv +bsz anr bcI bcI @@ -113680,13 +114920,13 @@ bwW aaU aaa aaa -bJv +bsz anr aaU aaa cwz aaa -bfW +jyu aaa aaa aaU @@ -113937,13 +115177,13 @@ bwW aMD bwW aaa -bIY -bMX -tpQ -xqa +bsT +bHe +bRo +bRp aaa cwD -bfW +jyu aaa aaa aaU @@ -114197,10 +115437,10 @@ bwW aaU bdR cJr -opd +bTJ aaa aaa -cwF +cPz aaa aaa aaU @@ -114222,11 +115462,11 @@ bUR cfO cja cja -cgt +boj cxq cxv bgf -bVj +brQ cxC bgq bhX @@ -114423,7 +115663,7 @@ aNy aSd aTq aVY -bfH +aJj aJd btm bdo @@ -114454,10 +115694,10 @@ cwv bAQ bAQ cJs -bPr -bRo +bUV +caf bam -cwG +cPA bam bYl bam @@ -114479,7 +115719,7 @@ cdx cga cgq cgq -cjb +bzw cxr cxw cxx @@ -114712,9 +115952,9 @@ bsu bsx cJt sVC -bRp +cdp sVC -bsT +cPB sVC bZp sVC @@ -114738,7 +115978,7 @@ bZd cfX ciP cjB -boj +cgt bcl bfc bgs @@ -114952,7 +116192,7 @@ aMA czU czY cAe -cAo +bFz cAs cAx bhU @@ -114973,11 +116213,11 @@ bRv bsD bww bsD -caf -bsD -bsD -bsD -bAA +cPE +cPF +cPF +cPF +cPG bBL bBL bCm @@ -115003,7 +116243,7 @@ cxC bhX biJ bjQ -cxT +ctu biZ btz bPm @@ -115263,7 +116503,7 @@ cxQ cxU cxW cxX -bPm +cPN clX bZu cmM @@ -115473,7 +116713,7 @@ aMB bzn bjz cgZ -bmS +bzH bJS bmW bmW @@ -115499,7 +116739,7 @@ bbT bbT bkm brV -bgh +cPH bfU bFD bgO @@ -115988,7 +117228,7 @@ bzn bwW bxF aMD -cih +bEL bAK bjz aMI @@ -116034,7 +117274,7 @@ bGC bpQ bpQ cOa -bYg +cPO cya cya cya @@ -116245,8 +117485,8 @@ bzn bwW byW bCB -ciX -cij +bIC +bVj cip cpE aaa @@ -116502,7 +117742,7 @@ bzn aMD bzh bwW -ciV +cih aMI aMI aMI @@ -116534,7 +117774,7 @@ bLu bVr cth cje -ctn +csv bcV bby bck @@ -117044,7 +118284,7 @@ bgk bbT bkd bbT -bUS +cea bVG cgn cje @@ -117055,13 +118295,13 @@ bcA bdM bdM cNA -bhP -biv -bjB -bjV +bhb +ciE +cmT cnB csh -ciE +cHV +cPM bjn btI buc @@ -117283,8 +118523,8 @@ bMY bMY bPB xoj -cwB -cwM +cwx +cPC cww cbN cww @@ -117314,9 +118554,9 @@ bdM bdM bhP biv -bjF -cqB -bXI +cDz +cDA +cDD bnX bjn bjn @@ -117540,8 +118780,8 @@ bMZ bMZ bPC uAY -cwB -bUV +cwF +cwM cww cge cww @@ -117793,12 +119033,12 @@ aaa bJv bMp cww -bNa +cpM bNa bPJ bRC -cfx -bUX +cwG +cPD bVE cbT cww @@ -117830,7 +119070,7 @@ ccv boS boI bqZ -ctu +cxT bMH btN buy @@ -118090,7 +119330,7 @@ cxR cxV cxV cxV -cxZ +cjb cxV cyb cyc @@ -118314,7 +119554,7 @@ qgO chO cpN bWG -cJo +cRg jiZ bhI cLY @@ -118349,7 +119589,7 @@ btd btd bDy bxR -btS +cxZ boI bBA bFh @@ -118582,7 +119822,7 @@ anr aaa aaU bfC -bhB +bUS bAv bPW cBz @@ -119377,7 +120617,7 @@ boI cre cow boI -bzw +cRa boI aaa aaa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 61ed3edba7..02e44d0a5a 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -52240,6 +52240,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable/white{ + icon_state = "0-4" + }, /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bLJ" = ( @@ -52257,6 +52260,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, /turf/open/floor/plasteel/dark, /area/engine/transit_tube) "bLK" = ( @@ -53546,9 +53552,6 @@ /turf/open/floor/plasteel/dark, /area/aisat) "bND" = ( -/obj/structure/cable/white{ - icon_state = "0-4" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -53562,6 +53565,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable/white{ + icon_state = "0-4" + }, /turf/open/floor/plasteel/dark, /area/aisat) "bNE" = ( @@ -56011,27 +56017,33 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bRB" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, /obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bRC" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) @@ -57108,10 +57120,16 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bTr" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, /obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bTs" = ( @@ -57123,6 +57141,9 @@ start_active = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bTt" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index bdbce36c9c..64d4bd344a 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -23111,7 +23111,7 @@ name = "Hydroponics Desk"; req_access_txt = "35" }, -/obj/item/reagent_containers/food/snacks/monkeycube, +/obj/item/reagent_containers/food/snacks/cube/monkey, /turf/open/floor/plasteel/dark, /area/hydroponics) "bce" = ( @@ -53150,6 +53150,9 @@ dir = 1; pixel_y = -22 }, +/obj/structure/reflector/double/anchored{ + dir = 9 + }, /turf/open/floor/plasteel/dark, /area/engine/engineering) "dFJ" = ( @@ -56503,6 +56506,16 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"loL" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4; + filter_type = "n2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "lqc" = ( /obj/item/toy/gun, /obj/effect/decal/cleanable/oil, @@ -58403,9 +58416,6 @@ /turf/open/space/basic, /area/space/nearstation) "pCo" = ( -/obj/structure/reflector/single/anchored{ - dir = 6 - }, /obj/machinery/light/small{ dir = 1 }, @@ -59921,10 +59931,10 @@ /turf/open/floor/engine, /area/engine/engineering) "tlV" = ( -/obj/structure/reflector/double/anchored{ - dir = 9 +/obj/structure/reflector/single/anchored{ + dir = 6 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/engine/engineering) "tnP" = ( /obj/machinery/seed_extractor, @@ -60772,19 +60782,6 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"vsG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Research Lab Maintenance"; - req_one_access_txt = "7;29" - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "vsJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -94044,7 +94041,7 @@ jZG bpY bpY bpY -vsG +bNZ bva bva bva @@ -94076,7 +94073,7 @@ bXk pCo wcs wcs -tlV +wcs eyj qkM miw @@ -94330,7 +94327,7 @@ bZA cam mgz aac -cbX +tlV wcs wcs dEy @@ -94592,7 +94589,7 @@ oHa eWi cbX aac -vlC +loL cgx qeY fyO diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index c9b81cefd9..5c054c0bb4 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -7639,7 +7639,7 @@ /obj/item/clothing/suit/space/hardsuit/deathsquad{ pixel_y = 5 }, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/shoes/combat/swat, /obj/item/clothing/mask/gas/sechailer/swat, /obj/effect/turf_decal/stripes/line, diff --git a/code/__DEFINES/__513_compatibility.dm b/code/__DEFINES/__513_compatibility.dm deleted file mode 100644 index 12577fb68b..0000000000 --- a/code/__DEFINES/__513_compatibility.dm +++ /dev/null @@ -1,32 +0,0 @@ - -#if DM_VERSION < 513 - -#define ismovableatom(A) (istype(A, /atom/movable)) - -#define islist(L) (istype(L, /list)) - -#define CLAMP01(x) (CLAMP(x, 0, 1)) - -#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) - -#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) - -#define TAN(x) (sin(x) / cos(x)) - -#define arctan(x) (arcsin(x/sqrt(1+x*x))) - -////////////////////////////////////////////////// - -#else - -#define ismovableatom(A) ismovable(A) - -#define CLAMP01(x) clamp(x, 0, 1) - -#define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) - -#define TAN(x) tan(x) - -#define ATAN2(x, y) arctan(x, y) - -#endif diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 14c78f90d0..e3fbe30b1d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -302,8 +302,8 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( /// Block priorities #define BLOCK_PRIORITY_HELD_ITEM 100 -#define BLOCK_PRIORITY_CLOTHING 50 #define BLOCK_PRIORITY_WEAR_SUIT 75 +#define BLOCK_PRIORITY_CLOTHING 50 #define BLOCK_PRIORITY_UNIFORM 25 #define BLOCK_PRIORITY_DEFAULT BLOCK_PRIORITY_HELD_ITEM diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 53348b3467..4222322f31 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -119,6 +119,8 @@ #define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable) #define COMSIG_MOVABLE_BUMP "movable_bump" //from base of atom/movable/Bump(): (/atom) #define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) + #define COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH 1 ///if true, flip if the impact will push what it hits + #define COMPONENT_MOVABLE_IMPACT_NEVERMIND 2 ///return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on #define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone) #define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force) #define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force) @@ -138,7 +140,6 @@ #define HEARING_SOURCE 8*/ #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) - // /mind signals #define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character) #define COMPONENT_STOP_MIND_TRANSFER 1 //stops the mind transfer from happening. @@ -148,6 +149,8 @@ #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) #define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed) #define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat. +#define COMSIG_MOB_CLICKON "mob_clickon" //from base of mob/clickon(): (atom/A, params) + #define COMSIG_MOB_CANCEL_CLICKON 1 #define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize) #define COMPONENT_BLOCK_GHOSTING (1<<0) #define COMPONENT_DO_NOT_PENALIZE_GHOSTING (1<<1) @@ -197,6 +200,7 @@ #define COMSIG_LIVING_RUN_BLOCK "living_do_run_block" //from base of mob/living/do_run_block(): (real_attack, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone) #define COMSIG_LIVING_COMBAT_ENABLED "combatmode_enabled" //from base of mob/living/enable_combat_mode() (was_forced) #define COMSIG_LIVING_COMBAT_DISABLED "combatmode_disabled" //from base of mob/living/disable_combat_mode() (was_forced) +#define COMSIG_LIVING_GET_BLOCKING_ITEMS "get_blocking_items" //from base of mob/living/get_blocking_items(): (list/items) //ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS! #define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore) @@ -212,7 +216,7 @@ // /mob/living/carbon signals #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) #define COMSIG_CARBON_IDENTITY_TRANSFERRED_TO "carbon_id_transferred_to" //from datum/dna/transfer_identity(): (datum/dna, transfer_SE) - +#define COMSIG_CARBON_TACKLED "carbon_tackled" //sends from tackle.dm on tackle completion // /mob/living/simple_animal/hostile signals #define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" #define COMPONENT_HOSTILE_NO_ATTACK 1 @@ -238,6 +242,8 @@ #define COMSIG_ITEM_ALT_AFTERATTACK "item_alt_afterattack" //from base of obj/item/altafterattack(): (atom/target, mob/user, proximity, params) #define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) #define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user) + // relocated, tell inventory procs if those called this that the item isn't available anymore. + #define COMPONENT_DROPPED_RELOCATION 1 #define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker) #define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) #define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user) diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index f37efd694c..e418b8b4c6 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -17,6 +17,8 @@ #define PERCENT(val) (round((val)*100, 0.1)) +#define CLAMP01(x) clamp(x, 0, 1) + //time of day but automatically adjusts to the server going into the next day within the same round. //for when you need a reliable time number that doesn't depend on byond time. #define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK)) @@ -30,13 +32,13 @@ #define FLOOR(x, y) ( round((x) / (y)) * (y) ) // Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive -#define WRAP(val, min, max) CLAMP(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max-1) +#define WRAP(val, min, max) clamp(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max-1) // Real modulus that handles decimals #define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) ) // Cotangent -#define COT(x) (1 / TAN(x)) +#define COT(x) (1 / tan(x)) // Secant #define SEC(x) (1 / cos(x)) @@ -169,8 +171,8 @@ 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) + new_x = clamp(new_x, 0, world.maxx) + new_y = clamp(new_y, 0, world.maxy) return locate(new_x, new_y, starting.z) // Returns a list where [1] is all x values and [2] is all y values that overlap between the given pair of rectangles @@ -195,7 +197,7 @@ #define EXP_DISTRIBUTION(desired_mean) ( -(1/(1/desired_mean)) * log(rand(1, 1000) * 0.001) ) -#define LORENTZ_DISTRIBUTION(x, s) ( s*TAN(TODEGREES(PI*(rand()-0.5))) + x ) +#define LORENTZ_DISTRIBUTION(x, s) ( s*tan(TODEGREES(PI*(rand()-0.5))) + x ) #define LORENTZ_CUMULATIVE_DISTRIBUTION(x, y, s) ( (1/PI)*TORADIANS(arctan((x-y)/s)) + 1/2 ) #define RULE_OF_THREE(a, b, x) ((a*x)/b) diff --git a/code/__DEFINES/misc/return_values.dm b/code/__DEFINES/misc/return_values.dm new file mode 100644 index 0000000000..d55f603de9 --- /dev/null +++ b/code/__DEFINES/misc/return_values.dm @@ -0,0 +1,3 @@ +// obj/item/dropped +/// dropped() relocated this item, return FALSE for doUnEquip. +#define ITEM_RELOCATED_BY_DROPPED "relocated_by_dropped" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e70e0ba743..e1fc8fa001 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -150,6 +150,8 @@ #define TRAIT_PUGILIST "pugilist" //This guy punches people for a living #define TRAIT_KI_VAMPIRE "ki-vampire" //when someone with this trait rolls maximum damage on a punch and stuns the target, they regain some stamina and do clone damage #define TRAIT_PASSTABLE "passtable" +#define TRAIT_GIANT "giant" +#define TRAIT_DWARF "dwarf" // mobility flag traits // IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 7e52fbe273..801a2cd431 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -61,7 +61,7 @@ var/adjacencies = 0 var/atom/movable/AM - if(ismovableatom(A)) + if(ismovable(A)) AM = A if(AM.can_be_unanchored && !AM.anchored) return 0 diff --git a/code/__HELPERS/mouse_control.dm b/code/__HELPERS/mouse_control.dm index a69c139d80..10fe976c26 100644 --- a/code/__HELPERS/mouse_control.dm +++ b/code/__HELPERS/mouse_control.dm @@ -11,7 +11,7 @@ var/screenviewY = screenview[2] * world.icon_size var/ox = round(screenviewX/2) - client.pixel_x //"origin" x var/oy = round(screenviewY/2) - client.pixel_y //"origin" y - var/angle = SIMPLIFY_DEGREES(ATAN2(y - oy, x - ox)) + var/angle = SIMPLIFY_DEGREES(arctan(y - oy, x - ox)) return angle //Wow, specific name! diff --git a/code/__HELPERS/radio.dm b/code/__HELPERS/radio.dm index 5fe87bdf5b..dc52299025 100644 --- a/code/__HELPERS/radio.dm +++ b/code/__HELPERS/radio.dm @@ -2,9 +2,9 @@ /proc/sanitize_frequency(frequency, free = FALSE) frequency = round(frequency) if(free) - . = CLAMP(frequency, MIN_FREE_FREQ, MAX_FREE_FREQ) + . = clamp(frequency, MIN_FREE_FREQ, MAX_FREE_FREQ) else - . = CLAMP(frequency, MIN_FREQ, MAX_FREQ) + . = clamp(frequency, MIN_FREQ, MAX_FREQ) if(!(. % 2)) // Ensure the last digit is an odd number . += 1 diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm index faa8c22f38..dadd4322fb 100644 --- a/code/__HELPERS/sanitize_values.dm +++ b/code/__HELPERS/sanitize_values.dm @@ -6,6 +6,13 @@ return number return default +/proc/sanitize_num_clamp(number, min=0, max=1, default=0, quantize=0) + if(!isnum(number)) + return default + . = clamp(number, min, max) + if(quantize) + . = round(number, quantize) + /proc/sanitize_text(text, default="") if(istext(text)) return text diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 5b91afca4c..8c55aebddb 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -777,8 +777,8 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list( tX = splittext(tX[1], ":") tX = tX[1] var/list/actual_view = getviewsize(C ? C.view : world.view) - tX = CLAMP(origin.x + text2num(tX) - round(actual_view[1] / 2) - 1, 1, world.maxx) - tY = CLAMP(origin.y + text2num(tY) - round(actual_view[2] / 2) - 1, 1, world.maxy) + tX = clamp(origin.x + text2num(tX) - round(actual_view[1] / 2) - 1, 1, world.maxx) + tY = clamp(origin.y + text2num(tY) - round(actual_view[2] / 2) - 1, 1, world.maxy) return locate(tX, tY, tZ) /proc/screen_loc2turf(text, turf/origin, client/C) @@ -791,8 +791,8 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list( tX = text2num(tX[2]) tZ = origin.z var/list/actual_view = getviewsize(C ? C.view : world.view) - tX = CLAMP(origin.x + round(actual_view[1] / 2) - tX, 1, world.maxx) - tY = CLAMP(origin.y + round(actual_view[2] / 2) - tY, 1, world.maxy) + tX = clamp(origin.x + round(actual_view[1] / 2) - tX, 1, world.maxx) + tY = clamp(origin.y + round(actual_view[2] / 2) - tY, 1, world.maxy) return locate(tX, tY, tZ) /proc/IsValidSrc(datum/D) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index fe4761ddcd..9a36c626ba 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -32,31 +32,12 @@ #endif //Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 512 -#if DM_VERSION < MIN_COMPILER_VERSION +#define MIN_COMPILER_VERSION 513 +#define MIN_COMPILER_BUILD 1508 +#if DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 512 or higher -#endif - -//Compatability -- These procs were added in 513.1493, not 513.1490 -//Which really shoulda bumped us up to 514 right then and there but instead Lummox is a dumb dumb -#if DM_BUILD < 1493 -#define length_char(args...) length(args) -#define text2ascii_char(args...) text2ascii(args) -#define copytext_char(args...) copytext(args) -#define splittext_char(args...) splittext(args) -#define spantext_char(args...) spantext(args) -#define nonspantext_char(args...) nonspantext(args) -#define findtext_char(args...) findtext(args) -#define findtextEx_char(args...) findtextEx(args) -#define findlasttext_char(args...) findlasttext(args) -#define findlasttextEx_char(args...) findlasttextEx(args) -#define replacetext_char(args...) replacetext(args) -#define replacetextEx_char(args...) replacetextEx(args) -// /regex procs -#define Find_char(args...) Find(args) -#define Replace_char(args...) Replace(args) +#error You need version 513.1508 or higher #endif //Additional code for the above flags. diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index f85503a678..632904202d 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -115,5 +115,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/autosurgeon/penis = 1, /obj/item/autosurgeon/testicles = 1, /obj/item/storage/box/marshmallow = 2, + /obj/item/clothing/gloves/tackler/offbrand = 1, "" = 3 )) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 46c2c919f4..9ce96585d3 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -75,6 +75,9 @@ if(notransform) return + if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, params) & COMSIG_MOB_CANCEL_CLICKON) + return + var/list/modifiers = params2list(params) if(modifiers["shift"] && modifiers["middle"]) ShiftMiddleClickOn(A) diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index e028212e96..5e474331f6 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -102,8 +102,8 @@ add_overlay(standard_background) /obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE) - width = CLAMP(width, 0, max_dimensions) - height = CLAMP(height, 0, max_dimensions) + width = clamp(width, 0, max_dimensions) + height = clamp(height, 0, max_dimensions) src.width = width src.height = height diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index b0e1d39d9a..98db89a100 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -155,9 +155,9 @@ /obj/item/proc/get_clamped_volume() if(w_class) if(force) - return CLAMP((force + w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 + return clamp((force + w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 else - return CLAMP(w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 + return clamp(w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 /mob/living/proc/send_item_attack_message(obj/item/I, mob/living/user, hit_area) var/message_verb = "attacked" diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index d596b5fabf..9f9870a9e5 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -5,7 +5,7 @@ return // seems legit. // Things you might plausibly want to follow - if(ismovableatom(A)) + if(ismovable(A)) ManualFollow(A) // Otherwise jump diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index d7323700e4..4647b83cd7 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -103,7 +103,7 @@ return FALSE var/temp = text2num(trim(str_val)) if(!isnull(temp)) - config_entry_value = CLAMP(integer ? round(temp) : temp, min_val, max_val) + config_entry_value = clamp(integer ? round(temp) : temp, min_val, max_val) if(config_entry_value != temp && !(datum_flags & DF_VAR_EDITED)) log_config("Changing [name] from [temp] to [config_entry_value]!") return TRUE diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index bff3fade61..f5525a10bd 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -457,10 +457,12 @@ config_entry_value = RESIZE_DEFAULT_SIZE min_val = 0.1 //to avoid issues with zeros and negative values. max_val = RESIZE_DEFAULT_SIZE + integer = FALSE /datum/config_entry/number/body_size_max config_entry_value = RESIZE_DEFAULT_SIZE min_val = RESIZE_DEFAULT_SIZE + integer = FALSE //Pun-Pun movement slowdown given to characters with a body size smaller than this value, //to compensate for their smaller hitbox. @@ -469,13 +471,14 @@ config_entry_value = RESIZE_DEFAULT_SIZE * 0.85 min_val = 0 max_val = RESIZE_DEFAULT_SIZE + integer = FALSE //multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation. //doesn't apply to floating or crawling mobs /datum/config_entry/number/body_size_slowdown_multiplier config_entry_value = 0.25 min_val = 0.1 //To encourage folks to disable the slowdown through the above config instead. + integer = FALSE //Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. -/datum/config_entry/number/allow_custom_skintones - config_entry_value = 1 +/datum/config_entry/flag/allow_custom_skintones diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 12b467b624..c6e6a84bcf 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -6,7 +6,6 @@ SUBSYSTEM_DEF(lighting) name = "Lighting" wait = 2 init_order = INIT_ORDER_LIGHTING - flags = SS_TICKER /datum/controller/subsystem/lighting/stat_entry() ..("L:[GLOB.lighting_update_lights.len]|C:[GLOB.lighting_update_corners.len]|O:[GLOB.lighting_update_objects.len]") @@ -85,4 +84,4 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Recover() initialized = SSlighting.initialized - ..() \ No newline at end of file + ..() diff --git a/code/controllers/subsystem/processing/flightpacks.dm b/code/controllers/subsystem/processing/flightpacks.dm deleted file mode 100644 index a462e2b645..0000000000 --- a/code/controllers/subsystem/processing/flightpacks.dm +++ /dev/null @@ -1,25 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(flightpacks) - name = "Flightpack Movement" - priority = FIRE_PRIORITY_FLIGHTPACKS - wait = 2 - stat_tag = "FM" - flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING - - var/flightsuit_processing = FLIGHTSUIT_PROCESSING_FULL - -/datum/controller/subsystem/processing/flightpacks/Initialize() - sync_flightsuit_processing() - -/datum/controller/subsystem/processing/flightpacks/vv_edit_var(var_name, var_value) - ..() - switch(var_name) - if("flightsuit_processing") - sync_flightsuit_processing() - -/datum/controller/subsystem/processing/flightpacks/proc/sync_flightsuit_processing() - for(var/obj/item/flightpack/FP in processing) - FP.sync_processing(src) - if(flightsuit_processing == FLIGHTSUIT_PROCESSING_NONE) //Don't even bother firing. - can_fire = FALSE - else - can_fire = TRUE diff --git a/code/controllers/subsystem/profiler.dm b/code/controllers/subsystem/profiler.dm index ec8b243073..ef10e0626c 100644 --- a/code/controllers/subsystem/profiler.dm +++ b/code/controllers/subsystem/profiler.dm @@ -5,7 +5,7 @@ SUBSYSTEM_DEF(profiler) init_order = INIT_ORDER_PROFILER runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY wait = 3000 - flags = SS_NO_TICK_CHECK + flags = SS_NO_TICK_CHECK var/fetch_cost = 0 var/write_cost = 0 @@ -31,23 +31,12 @@ SUBSYSTEM_DEF(profiler) return ..() /datum/controller/subsystem/profiler/proc/StartProfiling() -#if DM_BUILD < 1506 || DM_VERSION < 513 - stack_trace("Auto profiling unsupported on this byond version") - CONFIG_SET(flag/auto_profile, FALSE) -#else world.Profile(PROFILE_START) -#endif /datum/controller/subsystem/profiler/proc/StopProfiling() -#if DM_BUILD >= 1506 && DM_VERSION >= 513 world.Profile(PROFILE_STOP) -#endif /datum/controller/subsystem/profiler/proc/DumpFile() -#if DM_BUILD < 1506 || DM_VERSION < 513 - stack_trace("Auto profiling unsupported on this byond version") - CONFIG_SET(flag/auto_profile, FALSE) -#else var/timer = TICK_USAGE_REAL var/current_profile_data = world.Profile(PROFILE_REFRESH,format="json") fetch_cost = MC_AVERAGE(fetch_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) @@ -60,4 +49,3 @@ SUBSYSTEM_DEF(profiler) timer = TICK_USAGE_REAL WRITE_FILE(json_file, current_profile_data) write_cost = MC_AVERAGE(write_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) -#endif diff --git a/code/controllers/subsystem/time_track.dm b/code/controllers/subsystem/time_track.dm index cd53c8f0ba..2f4949fc1e 100644 --- a/code/controllers/subsystem/time_track.dm +++ b/code/controllers/subsystem/time_track.dm @@ -23,7 +23,7 @@ SUBSYSTEM_DEF(time_track) var/time_dilation_text /datum/controller/subsystem/time_track/fire() - stat_time_text = "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]\n\nRound Time: [WORLDTIME2TEXT("hh:mm:ss")]\n\nStation Time: [STATION_TIME_TIMESTAMP("hh:mm:ss", world.time)]\n\n[time_dilation_text]" + stat_time_text = "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]\n\nRound Time: [DisplayTimeText(world.time - SSticker.round_start_time, 1)] \n\nStation Time: [STATION_TIME_TIMESTAMP("hh:mm:ss", world.time)]\n\n[time_dilation_text]" if(++last_measurement == measurement_delay) last_measurement = 0 diff --git a/code/datums/components/bouncy.dm b/code/datums/components/bouncy.dm index c7ca85455b..fed603410e 100644 --- a/code/datums/components/bouncy.dm +++ b/code/datums/components/bouncy.dm @@ -4,7 +4,7 @@ var/list/bounce_signals = list(COMSIG_MOVABLE_IMPACT, COMSIG_ITEM_HIT_REACT, COMSIG_ITEM_ATTACK) /datum/component/bouncy/Initialize(_bouncy_mod, list/_bounce_signals) - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE if(_bouncy_mod) bouncy_mod = _bouncy_mod diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index e5625dee6a..441a161428 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -55,7 +55,7 @@ log_combat(user, H, "starts slicing the throat of") playsound(H.loc, butcher_sound, 50, TRUE, -1) - if(do_mob(user, H, CLAMP(500 / source.force, 30, 100)) && H.Adjacent(source)) + if(do_mob(user, H, clamp(500 / source.force, 30, 100)) && H.Adjacent(source)) if(H.has_status_effect(/datum/status_effect/neck_slice)) user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") @@ -65,7 +65,7 @@ "[user] slits your throat...") log_combat(user, H, "finishes slicing the throat of") H.apply_damage(source.force, BRUTE, BODY_ZONE_HEAD) - H.bleed_rate = CLAMP(H.bleed_rate + 20, 0, 30) + H.bleed_rate = clamp(H.bleed_rate + 20, 0, 30) H.apply_status_effect(/datum/status_effect/neck_slice) /datum/component/butchering/proc/Butcher(mob/living/butcher, mob/living/meat) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 2b6f1a5b81..bc76082f0a 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -23,3 +23,4 @@ */ /datum/crafting_recipe/proc/check_requirements(mob/user, list/collected_requirements) return TRUE + diff --git a/code/datums/components/crafting/recipes/recipes_clothing.dm b/code/datums/components/crafting/recipes/recipes_clothing.dm index 8f52e06f30..02dd3f2c05 100644 --- a/code/datums/components/crafting/recipes/recipes_clothing.dm +++ b/code/datums/components/crafting/recipes/recipes_clothing.dm @@ -327,3 +327,16 @@ /obj/item/stack/cable_coil = 10) time = 100 //Takes awhile to put all the garlics on the coil and knot it. category = CAT_CLOTHING + +/datum/crafting_recipe/gripperoffbrand + name = "Improvised Gripper Gloves" + reqs = list( + /obj/item/clothing/gloves/fingerless = 1, + // /obj/item/stack/sticky_tape = 1 + /obj/item/stack/cable_coil = 5, + /obj/item/stack/sheet/cloth = 2, + ) + result = /obj/item/clothing/gloves/tackler/offbrand + category = CAT_CLOTHING + tools = list(TOOL_WIRECUTTER) + time = 20 diff --git a/code/datums/components/edit_complainer.dm b/code/datums/components/edit_complainer.dm index bf52296e2c..e2cca2eb50 100644 --- a/code/datums/components/edit_complainer.dm +++ b/code/datums/components/edit_complainer.dm @@ -3,7 +3,7 @@ var/list/say_lines /datum/component/edit_complainer/Initialize(list/text) - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE var/static/list/default_lines = list( diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm index 820208a319..2e5834c025 100644 --- a/code/datums/components/explodable.dm +++ b/code/datums/components/explodable.dm @@ -13,7 +13,7 @@ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack) RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item) RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate) - if(ismovableatom(parent)) + if(ismovable(parent)) RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump) if(isitem(parent)) diff --git a/code/datums/components/fantasy/prefixes.dm b/code/datums/components/fantasy/prefixes.dm index 702ec9329a..5ef2ac2baf 100644 --- a/code/datums/components/fantasy/prefixes.dm +++ b/code/datums/components/fantasy/prefixes.dm @@ -54,7 +54,7 @@ /datum/fantasy_affix/pyromantic/apply(datum/component/fantasy/comp, newName) var/obj/item/master = comp.parent - comp.appliedComponents += master.AddComponent(/datum/component/igniter, CLAMP(comp.quality, 1, 10)) + comp.appliedComponents += master.AddComponent(/datum/component/igniter, clamp(comp.quality, 1, 10)) return "pyromantic [newName]" /datum/fantasy_affix/vampiric diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index ad2b7ded14..8d3c6ab81f 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -13,7 +13,7 @@ expire_time = world.time + expire_in QDEL_IN(src, expire_in) - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm index 988a0e575e..3899e92a22 100644 --- a/code/datums/components/knockback.dm +++ b/code/datums/components/knockback.dm @@ -34,7 +34,7 @@ do_knockback(target, null, angle2dir(Angle)) /datum/component/knockback/proc/do_knockback(atom/target, mob/thrower, throw_dir) - if(!ismovableatom(target) || throw_dir == null) + if(!ismovable(target) || throw_dir == null) return var/atom/movable/throwee = target if(throwee.anchored && !throw_anchored) diff --git a/code/datums/components/magnetic_catch.dm b/code/datums/components/magnetic_catch.dm index c7e59e0ead..181b24260b 100644 --- a/code/datums/components/magnetic_catch.dm +++ b/code/datums/components/magnetic_catch.dm @@ -2,7 +2,7 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) - if(ismovableatom(parent)) + if(ismovable(parent)) RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/crossed_react) RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/uncrossed_react) for(var/i in get_turf(parent)) diff --git a/code/datums/components/mirage_border.dm b/code/datums/components/mirage_border.dm index 20e3b317ec..de4425e208 100644 --- a/code/datums/components/mirage_border.dm +++ b/code/datums/components/mirage_border.dm @@ -14,8 +14,8 @@ var/x = target.x var/y = target.y var/z = target.z - var/turf/southwest = locate(CLAMP(x - (direction & WEST ? range : 0), 1, world.maxx), CLAMP(y - (direction & SOUTH ? range : 0), 1, world.maxy), CLAMP(z, 1, world.maxz)) - var/turf/northeast = locate(CLAMP(x + (direction & EAST ? range : 0), 1, world.maxx), CLAMP(y + (direction & NORTH ? range : 0), 1, world.maxy), CLAMP(z, 1, world.maxz)) + var/turf/southwest = locate(clamp(x - (direction & WEST ? range : 0), 1, world.maxx), clamp(y - (direction & SOUTH ? range : 0), 1, world.maxy), clamp(z, 1, world.maxz)) + var/turf/northeast = locate(clamp(x + (direction & EAST ? range : 0), 1, world.maxx), clamp(y + (direction & NORTH ? range : 0), 1, world.maxy), clamp(z, 1, world.maxz)) //holder.vis_contents += block(southwest, northeast) // This doesnt work because of beta bug memes for(var/i in block(southwest, northeast)) holder.vis_contents += i diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 7aacb745b6..8ba748dac7 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -175,7 +175,7 @@ return (nanite_volume > 0) /datum/component/nanites/proc/adjust_nanites(datum/source, amount) - nanite_volume = CLAMP(nanite_volume + amount, 0, max_nanites) + nanite_volume = clamp(nanite_volume + amount, 0, max_nanites) if(nanite_volume <= 0) //oops we ran out qdel(src) @@ -187,7 +187,7 @@ if(remove || stealth) return //bye icon var/nanite_percent = (nanite_volume / max_nanites) * 100 - nanite_percent = CLAMP(CEILING(nanite_percent, 10), 10, 100) + nanite_percent = clamp(CEILING(nanite_percent, 10), 10, 100) holder.icon_state = "nanites[nanite_percent]" /datum/component/nanites/proc/on_emp(datum/source, severity) @@ -249,13 +249,13 @@ return FALSE /datum/component/nanites/proc/set_volume(datum/source, amount) - nanite_volume = CLAMP(amount, 0, max_nanites) + nanite_volume = clamp(amount, 0, max_nanites) /datum/component/nanites/proc/set_max_volume(datum/source, amount) max_nanites = max(1, max_nanites) /datum/component/nanites/proc/set_cloud(datum/source, amount) - cloud_id = CLAMP(amount, 0, 100) + cloud_id = clamp(amount, 0, 100) /datum/component/nanites/proc/set_cloud_sync(datum/source, method) switch(method) @@ -267,7 +267,7 @@ cloud_active = TRUE /datum/component/nanites/proc/set_safety(datum/source, amount) - safety_threshold = CLAMP(amount, 0, max_nanites) + safety_threshold = clamp(amount, 0, max_nanites) /datum/component/nanites/proc/set_regen(datum/source, amount) regen_rate = amount diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 2be22d01e5..49e6b91c6d 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -22,14 +22,14 @@ /datum/component/orbiter/RegisterWithParent() . = ..() var/atom/target = parent - while(ismovableatom(target)) + while(ismovable(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react) target = target.loc /datum/component/orbiter/UnregisterFromParent() . = ..() var/atom/target = parent - while(ismovableatom(target)) + while(ismovable(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) target = target.loc @@ -111,12 +111,12 @@ // These are prety rarely activated, how often are you following something in a bag? if(oldloc && !isturf(oldloc)) // We used to be registered to it, probably var/atom/target = oldloc - while(ismovableatom(target)) + while(ismovable(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) target = target.loc if(orbited?.loc && orbited.loc != newturf) // We want to know when anything holding us moves too var/atom/target = orbited.loc - while(ismovableatom(target)) + while(ismovable(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react, TRUE) target = target.loc diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 4d8cfc4412..d185221163 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -21,7 +21,7 @@ var/list/offhands = list() // keyed list containing all the current riding offsets associated by mob /datum/component/riding/Initialize() - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle) RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index 422d73520e..6a32a46aef 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -14,7 +14,7 @@ var/default_rotation_direction = ROTATION_CLOCKWISE /datum/component/simple_rotation/Initialize(rotation_flags = NONE ,can_user_rotate,can_be_rotated,after_rotation) - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE //throw if no rotation direction is specificed ? diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm new file mode 100644 index 0000000000..2052e57f49 --- /dev/null +++ b/code/datums/components/shielded.dm @@ -0,0 +1,191 @@ +/datum/component/shielded + dupe_mode = COMPONENT_DUPE_ALLOWED + can_transfer = TRUE + var/charges = 3 + var/max_charges = 3 + var/recharge_delay = 20 SECONDS //How long after we've been attacked before we can start recharging. + var/recharge_rate = 1 //How quickly the shield recharges once it starts charging. Can be a decimal. set to zero to disable. + var/last_time_used //Last time the shield attempted to stop an attack. + var/accepted_slots + var/shield_state = "shield-old" //the state of the shield overlay. + var/broken_state //null by default. + var/recharge_sound = 'sound/magic/charge.ogg' + var/recharge_end_sound = 'sound/machines/ding.ogg' + var/mob/living/holder //who is currently benefiting from the shield. + var/dissipating = FALSE //Is this shield meant to dissipate over time instead of recharging. + var/del_on_overload = FALSE //will delete itself once it has no charges left. + +/datum/component/shielded/Initialize(current, max = 3, delay = 20 SECONDS, rate = 1, slots, state = "shield-old", broken, \ + sound = 'sound/magic/charge.ogg', end_sound = 'sound/machines/ding.ogg', diss = FALSE, del_overload = FALSE) + var/isitem = isitem(parent) + if(!isitem && !isliving(parent)) + return COMPONENT_INCOMPATIBLE + max_charges = max + charges = !isnull(current) ? current : max_charges + recharge_delay = delay + recharge_rate = rate + accepted_slots = slots + shield_state = state + broken_state = broken + recharge_sound = sound + recharge_end_sound = end_sound + dissipating = diss + del_on_overload = del_overload + if(dissipating && recharge_rate > 0) + recharge_rate = -recharge_rate + if(recharge_delay && recharge_rate && (charges < max_charges || dissipating)) + START_PROCESSING(SSdcs, src) + +/datum/component/shielded/RegisterWithParent() + . = ..() + if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + else //it's a mob + var/mob/living/L = parent + RegisterSignal(L, COMSIG_LIVING_RUN_BLOCK, .proc/living_block) + holder = L + var/to_add = charges >= 1 ? shield_state : broken_state + if(to_add) + var/mutable_appearance/M = mutable_appearance('icons/effects/effects.dmi', to_add) + M.layer = (L.layer > MOB_LAYER ? L.layer : MOB_LAYER) + 0.01 + holder.add_overlay(M, TRUE) + +/datum/component/shielded/UnregisterFromParent() + . = ..() + if(parent != holder) //not a mob, thus an item. + UnregisterSignal(parent, list(COMSIG_ITEM_RUN_BLOCK,COMSIG_ITEM_CHECK_BLOCK,COMSIG_ITEM_EQUIPPED,COMSIG_ITEM_DROPPED)) + if(holder) + UnregisterSignal(holder, list(COMSIG_LIVING_RUN_BLOCK, COMSIG_LIVING_GET_BLOCKING_ITEMS)) + var/to_remove = charges >= 1 ? shield_state : broken_state + if(to_remove) + holder.cut_overlay(mutable_appearance('icons/effects/effects.dmi', to_remove), TRUE) + holder = null + +/datum/component/shielded/process() + if(world.time < last_time_used && !dissipating) + return + var/old_charges = charges + charges = clamp(charges + recharge_rate, 0, max_charges) + if(round(old_charges) >= round(charges)) //only send outputs if it effectively gained at least one charge + return + var/sound = recharge_sound + if(dissipating ? !charges : charges == max_charges ) + STOP_PROCESSING(SSdcs, src) + sound = recharge_end_sound + if(parent && sound) + playsound(parent, sound, 50, 1) + if(charges < 1 && del_on_overload) + if(holder) + holder.visible_message("[holder]'s shield overloads!") + qdel(src) + return + if(holder && (old_charges < 1 && charges >= 1) || (!del_on_overload && old_charges >= 1 && charges < 1)) + update_shield_overlay(charges < 1) + +/datum/component/shielded/proc/adjust_charges(amount) + var/old_charges = charges + charges = clamp(charges + amount, 0, max_charges) + if(recharge_delay && recharge_rate && (dissipating ? !charges : charges == max_charges)) + STOP_PROCESSING(SSdcs, src) + if(charges < 1 && del_on_overload) + if(holder) + holder.visible_message("[holder]'s shield overloads!") + qdel(src) + return + if(holder && (old_charges < 1 && charges >= 1) || (!del_on_overload && old_charges >= 1 && charges < 1)) + update_shield_overlay(charges < 1) + +/datum/component/shielded/proc/update_shield_overlay(broken) + if(!holder) + return + var/to_remove = broken ? shield_state : broken_state + var/to_add = broken ? broken_state : shield_state + if(to_remove) + holder.cut_overlay(mutable_appearance('icons/effects/effects.dmi', to_remove), TRUE) + if(to_add) + var/mutable_appearance/M = mutable_appearance('icons/effects/effects.dmi', to_add) + M.layer = (holder.layer > MOB_LAYER ? holder.layer : MOB_LAYER) + 0.01 + holder.add_overlay(M, TRUE) + +/datum/component/shielded/proc/on_equip(obj/item/source, mob/living/equipper, slot) + if(!(accepted_slots & slotdefine2slotbit(slot))) + return + holder = equipper + RegisterSignal(parent, COMSIG_ITEM_RUN_BLOCK, .proc/on_run_block) + RegisterSignal(parent, COMSIG_ITEM_CHECK_BLOCK, .proc/on_check_block) + RegisterSignal(equipper, COMSIG_LIVING_GET_BLOCKING_ITEMS, .proc/include_shield) + var/to_add = charges >= 1 ? shield_state : broken_state + if(to_add) + var/mutable_appearance/M = mutable_appearance('icons/effects/effects.dmi', to_add) + M.layer = (holder.layer > MOB_LAYER ? holder.layer : MOB_LAYER) + 0.01 + equipper.add_overlay(M, TRUE) + +/datum/component/shielded/proc/on_drop(obj/item/source, mob/dropper) + if(holder == dropper) + UnregisterSignal(holder, COMSIG_LIVING_GET_BLOCKING_ITEMS) + UnregisterSignal(parent, list(COMSIG_ITEM_RUN_BLOCK, COMSIG_ITEM_CHECK_BLOCK)) + var/to_remove = charges >= 1 ? shield_state : broken_state + if(to_remove) + holder.cut_overlay(mutable_appearance('icons/effects/effects.dmi', to_remove), TRUE) + holder = null + +/datum/component/shielded/proc/include_shield(mob/source, list/items) + items += parent + +/datum/component/shielded/proc/on_run_block(obj/item/source, mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) + if(block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] >= 100) //already blocked by another shielded item, don't do anything. + block_return[BLOCK_RETURN_BLOCK_CAPACITY] += round(charges) + return BLOCK_NONE + last_time_used = world.time + recharge_delay + if(charges < 1) + return BLOCK_NONE + var/datum/effect_system/spark_spread/s = new + s.set_up(2, 1, source) + s.start() + owner.visible_message("[holder]'s shields deflect [attack_text] in a shower of sparks!") + charges-- + var/rounded_charges = round(charges) + if(recharge_delay && recharge_rate && !dissipating) + START_PROCESSING(SSdcs, src) + if(charges < 1) + owner.visible_message("[holder]'s shield overloads!") + if(del_on_overload) + qdel(src) + else + update_shield_overlay(TRUE) + block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100 + block_return[BLOCK_RETURN_BLOCK_CAPACITY] += rounded_charges + return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL + +/datum/component/shielded/proc/on_check_block(obj/item/source, mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) + if(charges >= 1) + block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100 + block_return[BLOCK_RETURN_BLOCK_CAPACITY] += round(charges) + +/datum/component/shielded/proc/living_block(mob/living/source, real_attack, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list) + if(!real_attack) + if(charges >= 1) + return_list[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100 + return_list[BLOCK_RETURN_BLOCK_CAPACITY] = round(charges) + return + last_time_used = world.time + recharge_delay + if(charges < 1) + return BLOCK_NONE + var/datum/effect_system/spark_spread/s = new + s.set_up(2, 1, source) + s.start() + source.visible_message("[source]'s shields deflect [attack_text] in a shower of sparks!") + charges-- + var/rounded_charges = round(charges) + if(recharge_delay && recharge_rate && !dissipating) + START_PROCESSING(SSdcs, src) + if(charges < 1) + source.visible_message("[source]'s shield overloads!") + if(del_on_overload) + qdel(src) + else + update_shield_overlay(TRUE) + return_list[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100 + return_list[BLOCK_RETURN_BLOCK_CAPACITY] += rounded_charges + return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index ad538760db..792222b27b 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -16,7 +16,7 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) - if(ismovableatom(parent)) + if(ismovable(parent)) RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index 13267e74c3..b651133274 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -5,7 +5,7 @@ var/allow_death = FALSE /datum/component/stationloving/Initialize(inform_admins = FALSE, allow_death = FALSE) - if(!ismovableatom(parent)) + if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds) RegisterSignal(parent, list(COMSIG_MOVABLE_SECLUDED_LOCATION), .proc/relocate) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 4d3ecc8d17..851885b2ed 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -56,7 +56,8 @@ /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/firing_pin, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/automatic/magrifle/pistol + /obj/item/firing_pin, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/automatic/magrifle/pistol, + /obj/item/toy/plush/snakeplushie )) /datum/component/storage/concrete/pockets/shoes/clown/Initialize() diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 4100942fec..aad6e8289f 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -15,6 +15,7 @@ var/datum/component/storage/concrete/master //If not null, all actions act on master and this is just an access point. var/list/can_hold //if this is set, only things in this typecache will fit. + var/list/can_hold_extra //if this is set, it will also be able to hold these. var/list/cant_hold //if this is set, anything in this typecache will not be able to fit. var/list/mob/is_using //lazy list of mobs looking at the contents of this storage. @@ -493,26 +494,25 @@ if(M && !stop_messages) host.add_fingerprint(M) return FALSE - if(length(can_hold)) - if(!is_type_in_typecache(I, can_hold)) + if(!length(can_hold_extra) || !is_type_in_typecache(I, can_hold_extra)) + if(length(can_hold) && !is_type_in_typecache(I, can_hold)) if(!stop_messages) to_chat(M, "[host] cannot hold [I]!") return FALSE - if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold. - if(!stop_messages) - to_chat(M, "[host] cannot hold [I]!") - return FALSE - // STORAGE LIMITS + if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold. + if(!stop_messages) + to_chat(M, "[host] cannot hold [I]!") + return FALSE + if(storage_flags & STORAGE_LIMIT_MAX_W_CLASS && I.w_class > max_w_class) + if(!stop_messages) + to_chat(M, "[I] is too long for [host]!") + return FALSE + // STORAGE LIMITS if(storage_flags & STORAGE_LIMIT_MAX_ITEMS) if(real_location.contents.len >= max_items) if(!stop_messages) to_chat(M, "[host] has too many things in it, make some space!") return FALSE //Storage item is full - if(storage_flags & STORAGE_LIMIT_MAX_W_CLASS) - if(I.w_class > max_w_class) - if(!stop_messages) - to_chat(M, "[I] is too long for [host]!") - return FALSE if(storage_flags & STORAGE_LIMIT_COMBINED_W_CLASS) var/sum_w_class = I.w_class for(var/obj/item/_I in real_location) diff --git a/code/datums/components/storage/ui.dm b/code/datums/components/storage/ui.dm index dd8607a51c..f37f574002 100644 --- a/code/datums/components/storage/ui.dm +++ b/code/datums/components/storage/ui.dm @@ -27,8 +27,8 @@ numbered_contents = _process_numerical_display() adjusted_contents = numbered_contents.len - var/columns = CLAMP(max_items, 1, maxcolumns ? maxcolumns : screen_max_columns) - var/rows = CLAMP(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows) + var/columns = clamp(max_items, 1, maxcolumns ? maxcolumns : screen_max_columns) + var/rows = clamp(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows) // First, boxes. ui_boxes = get_ui_boxes() @@ -105,7 +105,7 @@ // after this point we are sure we can somehow fit all items into our max number of rows. // determine rows - var/rows = CLAMP(CEILING(min_pixels / horizontal_pixels, 1), 1, screen_max_rows) + var/rows = clamp(CEILING(min_pixels / horizontal_pixels, 1), 1, screen_max_rows) var/overrun = FALSE if(used > our_volume) @@ -198,7 +198,7 @@ M.active_storage.ui_hide(M) M.active_storage = src LAZYOR(is_using, M) - if(volumetric_ui()) + if(!M.client?.prefs?.no_tetris_storage && volumetric_ui()) //new volumetric ui bay-style M.client.screen |= orient2hud_volumetric(M, maxallowedscreensize) else diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm new file mode 100644 index 0000000000..ddc47d59a1 --- /dev/null +++ b/code/datums/components/tackle.dm @@ -0,0 +1,491 @@ +#define MAX_TABLE_MESSES 8 // how many things can we knock off a table at once? + +/** + *#tackle.dm + * + * For when you want to throw a person at something and have fun stuff happen + * + * This component is made for carbon mobs (really, humans), and allows its parent to throw themselves and perform tackles. This is done by enabling throw mode, then clicking on your + * intended target with an empty hand. You will then launch toward your target. If you hit a carbon, you'll roll to see how hard you hit them. If you hit a solid non-mob, you'll + * roll to see how badly you just messed yourself up. If, along your journey, you hit a table, you'll slam onto it and send up to MAX_TABLE_MESSES (8) /obj/items on the table flying, + * and take a bit of extra damage and stun for each thing launched. + * + * There are 2 """skill rolls""" involved here, which are handled and explained in sack() and rollTackle() (for roll 1, carbons), and splat() (for roll 2, walls and solid objects) +*/ +/datum/component/tackler + dupe_mode = COMPONENT_DUPE_UNIQUE + ///How much stamina it takes to launch a tackle + var/stamina_cost + ///Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again. + var/base_knockdown + ///Your max range for how far you can tackle. + var/range + ///How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle. + var/speed + ///A flat modifier to your roll against your target, as described in [rollTackle()][/datum/component/tackler/proc/rollTackle]. Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle. + var/skill_mod + ///Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else! + var/min_distance + ///The throwdatum we're currently dealing with, if we need it + var/datum/thrownthing/tackle + +/datum/component/tackler/Initialize(stamina_cost = 25, base_knockdown = 1 SECONDS, range = 4, speed = 1, skill_mod = 0, min_distance = min_distance) + if(!iscarbon(parent)) + return COMPONENT_INCOMPATIBLE + + src.stamina_cost = stamina_cost + src.base_knockdown = base_knockdown + src.range = range + src.speed = speed + src.skill_mod = skill_mod + src.min_distance = min_distance + + var/mob/living/carbon/P = parent + to_chat(P, "You are now able to launch tackles! You can do so by activating throw intent, and clicking on your target with an empty hand.") + P.tackling = TRUE + addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + +/datum/component/tackler/Destroy() + var/mob/living/carbon/P = parent + to_chat(P, "You can no longer tackle.") + P.tackling = FALSE + ..() + +/datum/component/tackler/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOB_CLICKON, .proc/checkTackle) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/sack) + RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/registerTackle) + +/datum/component/tackler/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_MOB_CLICKON, COMSIG_MOVABLE_IMPACT, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_POST_THROW)) + +///Store the thrownthing datum for later use +/datum/component/tackler/proc/registerTackle(mob/living/carbon/user, datum/thrownthing/TT) + tackle = TT + +///See if we can tackle or not. If we can, leap! +/datum/component/tackler/proc/checkTackle(mob/living/carbon/user, atom/A, params) + if(!user.in_throw_mode || user.get_active_held_item() || user.pulling || user.buckling) + return + + if(HAS_TRAIT(user, TRAIT_HULK)) + to_chat(user, "You're too angry to remember how to tackle!") + return + + if(user.restrained()) + to_chat(user, "You need free use of your hands to tackle!") + return + + if(!(user.mobility_flags & MOBILITY_STAND)) + to_chat(user, "You must be standing to tackle!") + return + + if(user.tackling) + to_chat(user, "You're not ready to tackle!") + return + + if(user.has_status_effect(STATUS_EFFECT_TASED)) // can't tackle if you just got tased + to_chat(user, "You can't tackle while tased!") + return + + user.face_atom(A) + + var/list/modifiers = params2list(params) + if(modifiers["alt"] || modifiers["shift"] || modifiers["ctrl"] || modifiers["middle"]) + return + + user.tackling = TRUE + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle) + playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1) + + var/leap_word = iscatperson(user) ? "pounce" : "leap" ///If cat, "pounce" instead of "leap". + if(can_see(user, A, 7)) + user.visible_message("[user] [leap_word]s at [A]!", "You [leap_word] at [A]!") + else + user.visible_message("[user] [leap_word]s!", "You [leap_word]!") + + if(get_dist(user, A) < min_distance) + A = get_ranged_target_turf(user, get_dir(user, A), min_distance) //TODO: this only works in cardinals/diagonals, make it work with in-betweens too! + + user.Knockdown(base_knockdown, TRUE, TRUE) + user.adjustStaminaLoss(stamina_cost) + user.throw_at(A, range, speed, user, FALSE) + user.toggle_throw_mode() + addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + return(COMSIG_MOB_CANCEL_CLICKON) + +/** + * sack() + * + * sack() is called when you actually smack into something, assuming we're mid-tackle. First it deals with smacking into non-carbons, in two cases: + * * If it's a non-carbon mob, we don't care, get out of here and do normal thrown-into-mob stuff + * * Else, if it's something dense (walls, machinery, structures, most things other than the floor), go to splat() and get ready for some high grade shit + * + * If it's a carbon we hit, we'll call rollTackle() which rolls a die and calculates modifiers for both the tackler and target, then gives us a number. Negatives favor the target, while positives favor the tackler. + * Check [rollTackle()][/datum/component/tackler/proc/rollTackle] for a more thorough explanation on the modifiers at play. + * + * Then, we figure out what effect we want, and we get to work! Note that with standard gripper gloves and no modifiers, the range of rolls is (-3, 3). The results are as follows, based on what we rolled: + * * -inf to -5: Seriously botched tackle, tackler suffers a concussion, brute damage, and a 3 second paralyze, target suffers nothing + * * -4 to -2: weak tackle, tackler gets 3 second knockdown, target gets shove slowdown but is otherwise fine + * * -1 to 0: decent tackle, tackler gets up a bit quicker than the target + * * 1: solid tackle, tackler has more of an advantage getting up quicker + * * 2 to 4: expert tackle, tackler has sizeable advantage and lands on their feet with a free passive grab + * * 5 to inf: MONSTER tackle, tackler gets up immediately and gets a free aggressive grab, target takes sizeable stamina damage from the hit and is paralyzed for one and a half seconds and knocked down for three seconds + * + * Finally, we return a bitflag to [COMSIG_MOVABLE_IMPACT] that forces the hitpush to false so that we don't knock them away. +*/ +/datum/component/tackler/proc/sack(mob/living/carbon/user, atom/hit) + if(!user.tackling || !tackle) + return + + if(!iscarbon(hit)) + if(hit.density) + return splat(user, hit) + return + + var/mob/living/carbon/target = hit + var/tackle_word = iscatperson(user) ? "pounce" : "tackle" ///If cat, "pounce" instead of "tackle". + + var/roll = rollTackle(target) + user.tackling = FALSE + + switch(roll) + if(-INFINITY to -5) + user.visible_message("[user] botches [user.p_their()] [tackle_word] and slams [user.p_their()] head into [target], knocking [user.p_them()]self silly!", "You botch your [tackle_word] and slam your head into [target], knocking yourself silly!", target) + to_chat(target, "[user] botches [user.p_their()] [tackle_word] and slams [user.p_their()] head into you, knocking [user.p_them()]self silly!") + + user.Paralyze(30) + var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD) + if(hed) + hed.receive_damage(brute=20, updating_health=TRUE) + user.gain_trauma(/datum/brain_trauma/mild/concussion) + + if(-4 to -2) // glancing blow at best + user.visible_message("[user] lands a weak [tackle_word] on [target], briefly knocking [target.p_them()] off-balance!", "You land a weak [tackle_word] on [target], briefly knocking [target.p_them()] off-balance!", target) + to_chat(target, "[user] lands a weak [tackle_word] on you, briefly knocking you off-balance!") + + user.Knockdown(30) + target.apply_status_effect(STATUS_EFFECT_TASED_WEAK, 6 SECONDS) + + if(-1 to 0) // decent hit, both parties are about equally inconvenienced + user.visible_message("[user] lands a passable [tackle_word] on [target], sending them both tumbling!", "You land a passable [tackle_word] on [target], sending you both tumbling!", target) + to_chat(target, "[user] lands a passable [tackle_word] on you, sending you both tumbling!") + + target.adjustStaminaLoss(stamina_cost) + target.Paralyze(5) + user.Knockdown(20) + target.Knockdown(25) + + if(1 to 2) // solid hit, tackler has a slight advantage + user.visible_message("[user] lands a solid [tackle_word] on [target], knocking them both down hard!", "You land a solid [tackle_word] on [target], knocking you both down hard!", target) + to_chat(target, "[user] lands a solid [tackle_word] on you, knocking you both down hard!") + + target.adjustStaminaLoss(30) + target.Paralyze(5) + user.Knockdown(10) + target.Knockdown(20) + + if(3 to 4) // really good hit, the target is definitely worse off here. Without positive modifiers, this is as good a tackle as you can land + user.visible_message("[user] lands an expert [tackle_word] on [target], knocking [target.p_them()] down hard while landing on [user.p_their()] feet with a passive grip!", "You land an expert [tackle_word] on [target], knocking [target.p_them()] down hard while landing on your feet with a passive grip!", target) + to_chat(target, "[user] lands an expert [tackle_word] on you, knocking you down hard and maintaining a passive grab!") + + user.SetKnockdown(0) + user.set_resting(FALSE, TRUE, FALSE) + user.forceMove(get_turf(target)) + target.adjustStaminaLoss(40) + target.Paralyze(5) + target.Knockdown(30) + if(ishuman(target) && iscarbon(user)) + target.grabbedby(user) + + if(5 to INFINITY) // absolutely BODIED + user.visible_message("[user] lands a monster [tackle_word] on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", "You land a monster [tackle_word] on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", target) + to_chat(target, "[user] lands a monster [tackle_word] on you, knocking you senseless and aggressively pinning you!") + + user.SetKnockdown(0) + user.set_resting(FALSE, TRUE, FALSE) + user.forceMove(get_turf(target)) + target.adjustStaminaLoss(40) + target.Paralyze(5) + target.Knockdown(30) + if(ishuman(target) && iscarbon(user)) + target.grabbedby(user) + target.grippedby(user, instant = TRUE) + + SEND_SIGNAL(user, COMSIG_CARBON_TACKLED, roll) + return COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH + +/** + * rollTackle() + * + * This handles all of the modifiers for the actual carbon-on-carbon tackling, and gets its own proc because of how many there are (with plenty more in mind!) + * + * The base roll is between (-3, 3), with negative numbers favoring the target, and positive numbers favoring the tackler. The target and the tackler are both assessed for + * how easy they are to knock over, with clumsiness and dwarfiness being strong maluses for each, and gigantism giving a bonus for each. These numbers and ideas + * are absolutely subject to change. + + * In addition, after subtracting the defender's mod and adding the attacker's mod to the roll, the component's base (skill) mod is added as well. Some sources of tackles + * are better at taking people down, like the bruiser and rocket gloves, while the dolphin gloves have a malus in exchange for better mobility. +*/ +/datum/component/tackler/proc/rollTackle(mob/living/carbon/target) + var/defense_mod = 0 + var/attack_mod = 0 + + // DE-FENSE + if(target.drunkenness > 60) // drunks are easier to knock off balance + defense_mod -= 3 + else if(target.drunkenness > 30) + defense_mod -= 1 + if(HAS_TRAIT(target, TRAIT_CLUMSY)) + defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_FAT)) // chonkers are harder to knock over + defense_mod += 1 + //if(HAS_TRAIT(target, TRAIT_GRABWEAKNESS)) Todo, port the pushover trait + //defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_DWARF)) + defense_mod -= 2 + if(HAS_TRAIT(target, TRAIT_GIANT)) + defense_mod += 2 + + if(ishuman(target)) + var/mob/living/carbon/human/T = target + var/suit_slot = T.get_item_by_slot(ITEM_SLOT_OCLOTHING) + + if(isnull(T.wear_suit) && isnull(T.w_uniform)) // who honestly puts all of their effort into tackling a naked guy? + defense_mod += 2 + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/space/hardsuit))) + defense_mod += 1 + if(T.is_shove_knockdown_blocked()) // riot armor and such + defense_mod += 5 + if(T.is_holding_item_of_type(/obj/item/shield)) + defense_mod += 2 + + if(islizard(T)) + if(!T.getorganslot(ORGAN_SLOT_TAIL)) // lizards without tails are off-balance + defense_mod -= 1 + else if(T.dna.species.is_wagging_tail()) // lizard tail wagging is robust and can swat away assailants! + defense_mod += 1 + + // OF-FENSE + var/mob/living/carbon/sacker = parent + + if(sacker.drunkenness > 60) // you're far too drunk to hold back! + attack_mod += 1 + else if(sacker.drunkenness > 30) // if you're only a bit drunk though, you're just sloppy + attack_mod -= 1 + if(HAS_TRAIT(sacker, TRAIT_CLUMSY)) + attack_mod -= 2 + if(HAS_TRAIT(sacker, TRAIT_DWARF)) + attack_mod -= 2 + if(HAS_TRAIT(sacker, TRAIT_GIANT)) + attack_mod += 2 + + if(ishuman(target)) + var/mob/living/carbon/human/S = sacker + + var/suit_slot = S.get_item_by_slot(ITEM_SLOT_OCLOTHING) + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/armor/riot))) // tackling in riot armor is more effective, but tiring + attack_mod += 2 + sacker.adjustStaminaLoss(20) + + var/r = rand(-3, 3) - defense_mod + attack_mod + skill_mod + return r + + +/** + * splat() + * + * This is where we handle diving into dense atoms, generally with effects ranging from bad to REALLY bad. This works as a percentile roll that is modified in two steps as detailed below. The higher + * the roll, the more severe the result. + * + * Mod 1: Speed + * * Base tackle speed is 1, which is what normal gripper gloves use. For other sources with higher speed tackles, like dolphin and ESPECIALLY rocket gloves, we obey Newton's laws and hit things harder. + * * For every unit of speed above 1, move the lower bound of the roll up by 15. Unlike Mod 2, this only serves to raise the lower bound, so it can't be directly counteracted by anything you can control. + * + * Mod 2: Misc + * -Flat modifiers, these take whatever you rolled and add/subtract to it, with the end result capped between the minimum from Mod 1 and 100. Note that since we can't roll higher than 100 to start with, + * wearing a helmet should be enough to remove any chance of permanently paralyzing yourself and dramatically lessen knocking yourself unconscious, even with rocket gloves. Will expand on maybe + * * Wearing a helmet: -6 + * * Wearing armor: -6 + * * Clumsy: +6 + * + * Effects: Below are the outcomes based off your roll, in order of increasing severity + * * 1-63: Knocked down for a few seconds and a bit of brute and stamina damage + * * 64-83: Knocked silly, gain some confusion as well as the above + * * 84-93: Cranial trauma, get a concussion and more confusion, plus more damage + * * 94-98: Knocked unconscious, significant chance to get a random mild brain trauma, as well as a fair amount of damage + * * 99-100: Break your spinal cord, get paralyzed, take a bunch of damage too. Very unlucky! +*/ +/datum/component/tackler/proc/splat(mob/living/carbon/user, atom/hit) + if(istype(hit, /obj/structure/window)) + var/obj/structure/window/W = hit + splatWindow(user, W) + if(QDELETED(W)) + return COMPONENT_MOVABLE_IMPACT_NEVERMIND + return + + var/oopsie_mod = 0 + var/danger_zone = (speed - 1) * 15 // for every extra speed we have over 1, take away 15 of the safest chance + danger_zone = max(min(danger_zone, 100), 1) + + if(ishuman(user)) + var/mob/living/carbon/human/S = user + var/head_slot = S.get_item_by_slot(ITEM_SLOT_HEAD) + var/suit_slot = S.get_item_by_slot(ITEM_SLOT_OCLOTHING) + if(head_slot && (istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat))) + oopsie_mod -= 6 + if(suit_slot && (istype(suit_slot,/obj/item/clothing/suit/armor/))) + oopsie_mod -= 6 + + if(HAS_TRAIT(user, TRAIT_CLUMSY)) + oopsie_mod += 6 //honk! + + var/oopsie = rand(danger_zone, 100) + if(oopsie >= 94 && oopsie_mod < 0) // good job avoiding getting paralyzed! gold star! + to_chat(user, "You're really glad you're wearing protection!") + oopsie += oopsie_mod + + switch(oopsie) + if(99 to INFINITY) + // can you imagine standing around minding your own business when all of the sudden some guy fucking launches himself into a wall at full speed and irreparably paralyzes himself? + user.visible_message("[user] slams face-first into [hit] at an awkward angle, severing [user.p_their()] spinal column with a sickening crack! Holy shit!", "You slam face-first into [hit] at an awkward angle, severing your spinal column with a sickening crack! Holy shit!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(30) + playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE) + playsound(user, 'sound/effects/splat.ogg', 70, TRUE) + user.emote("scream") + user.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) // oopsie indeed! + shake_camera(user, 7, 7) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 4.5) + + if(94 to 98) + user.visible_message("[user] slams face-first into [hit] with a concerning squish, immediately going limp!", "You slam face-first into [hit], and immediately lose consciousness!") + user.adjustStaminaLoss(100) + user.adjustBruteLoss(30) + user.Unconscious(100) + user.gain_trauma_type(BRAIN_TRAUMA_MILD) + user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9) + shake_camera(user, 6, 6) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 3.5) + + if(84 to 93) + user.visible_message("[user] slams head-first into [hit], suffering major cranial trauma!", "You slam head-first into [hit], and the world explodes around you!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(30) + user.confused += 15 + if(prob(80)) + user.gain_trauma(/datum/brain_trauma/mild/concussion) + user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9) + user.DefaultCombatKnockdown(40) + shake_camera(user, 5, 5) + user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + user.clear_fullscreen("flash", 2.5) + + if(64 to 83) + user.visible_message("[user] slams hard into [hit], knocking [user.p_them()] senseless!", "You slam hard into [hit], knocking yourself senseless!") + user.adjustStaminaLoss(30) + user.adjustBruteLoss(10) + user.confused += 10 + user.DefaultCombatKnockdown(30) + shake_camera(user, 3, 4) + + if(1 to 63) + user.visible_message("[user] slams into [hit]!", "You slam into [hit]!") + user.adjustStaminaLoss(20) + user.adjustBruteLoss(10) + user.DefaultCombatKnockdown(30) + shake_camera(user, 2, 2) + + playsound(user, 'sound/weapons/smash.ogg', 70, TRUE) + + +/datum/component/tackler/proc/resetTackle() + var/mob/living/carbon/P = parent + P.tackling = FALSE + QDEL_NULL(tackle) + UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) + +///A special case for splatting for handling windows +/datum/component/tackler/proc/splatWindow(mob/living/carbon/user, obj/structure/window/W) + playsound(user, "sound/effects/Glasshit.ogg", 140, TRUE) + + if(W.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows + for(var/i = 0, i < speed, i++) + var/obj/item/shard/shard = new /obj/item/shard(get_turf(user)) + //shard.embedding = list(embed_chance = 100, ignore_throwspeed_threshold = TRUE, impact_pain_mult=3, pain_chance=5) + //shard.AddElement(/datum/element/embed, shard.embedding) + user.hitby(shard, skipcatch = TRUE, hitpush = FALSE) + //shard.embedding = list() + //shard.AddElement(/datum/element/embed, shard.embedding) + W.obj_destruction() + user.adjustStaminaLoss(10 * speed) + user.DefaultCombatKnockdown(40) + user.Paralyze(5) + user.visible_message("[user] slams into [W] and shatters it, shredding [user.p_them()]self with glass!", "You slam into [W] and shatter it, shredding yourself with glass!") + + else + user.visible_message("[user] slams into [W] like a bug, then slowly slides off it!", "You slam into [W] like a bug, then slowly slide off it!") + user.Paralyze(2) + user.DefaultCombatKnockdown(20) + W.take_damage(20 * speed) + user.adjustStaminaLoss(10 * speed) + user.adjustBruteLoss(5 * speed) + +/datum/component/tackler/proc/delayedSmash(obj/structure/window/W) + if(W) + W.obj_destruction() + playsound(W, "shatter", 70, TRUE) + +///Check to see if we hit a table, and if so, make a big mess! +/datum/component/tackler/proc/checkObstacle(mob/living/carbon/owner) + if(!owner.tackling) + return + + var/turf/T = get_turf(owner) + var/obj/structure/table/kevved = locate(/obj/structure/table) in T.contents + if(!kevved) + return + + var/list/messes = list() + + // we split the mess-making into two parts (check what we're gonna send flying, intermission for dealing with the tackler, then actually send stuff flying) for the benefit of making sure the face-slam text + // comes before the list of stuff that goes flying, but can still adjust text + damage to how much of a mess it made + for(var/obj/item/I in T.contents) + if(!I.anchored) + messes += I + if(messes.len >= MAX_TABLE_MESSES) + break + + /// for telling HOW big of a mess we just made + var/HOW_big_of_a_miss_did_we_just_make = "" + if(messes.len) + if(messes.len < MAX_TABLE_MESSES / 4) + HOW_big_of_a_miss_did_we_just_make = ", making a mess" + else if(messes.len < MAX_TABLE_MESSES / 2) + HOW_big_of_a_miss_did_we_just_make = ", making a big mess" + else if(messes.len < MAX_TABLE_MESSES) + HOW_big_of_a_miss_did_we_just_make = ", making a giant mess" + else + HOW_big_of_a_miss_did_we_just_make = ", making a ginormous mess!" // an extra exclamation point!! for emphasis!!! + + owner.visible_message("[owner] trips over [kevved] and slams into it face-first[HOW_big_of_a_miss_did_we_just_make]!", "You trip over [kevved] and slam into it face-first[HOW_big_of_a_miss_did_we_just_make]!") + owner.adjustStaminaLoss(20 + messes.len * 2) + owner.adjustBruteLoss(10 + messes.len) + owner.Paralyze(2 * messes.len) + owner.DefaultCombatKnockdown(20 + 5 * messes.len) // 2 seconds of knockdown after the paralyze + + for(var/obj/item/I in messes) + var/dist = rand(1, 3) + var/sp = 2 + if(prob(25 * (src.speed - 1))) // if our tackle speed is higher than 1, with chance (speed - 1 * 25%), throw the thing at our tackle speed + 1 + sp = speed + 1 + I.throw_at(get_ranged_target_turf(I, pick(GLOB.alldirs), range = dist), range = dist, speed = sp) + I.visible_message("[I] goes flying[sp > 3 ? " dangerously fast" : ""]!") // standard embed speed + + playsound(owner, 'sound/weapons/smash.ogg', 70, TRUE) + tackle.finalize(hit=TRUE) + resetTackle() + +#undef MAX_TABLE_MESSES diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 30c6625049..0fbbcd59b0 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -181,7 +181,7 @@ /datum/component/wet_floor/proc/_do_add_wet(type, duration_minimum, duration_add, duration_maximum) var/time = 0 if(LAZYACCESS(time_left_list, "[type]")) - time = CLAMP(LAZYACCESS(time_left_list, "[type]") + duration_add, duration_minimum, duration_maximum) + time = clamp(LAZYACCESS(time_left_list, "[type]") + duration_add, duration_minimum, duration_maximum) else time = min(duration_minimum, duration_maximum) LAZYSET(time_left_list, "[type]", time) diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index c31139dcd7..80570d0c3b 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -42,7 +42,7 @@ addtimer(CALLBACK(src, .proc/charge), charge_rate) /datum/action/innate/dash/proc/charge() - current_charges = CLAMP(current_charges + 1, 0, max_charges) + current_charges = clamp(current_charges + 1, 0, max_charges) holder.update_action_buttons_icon() if(recharge_sound) playsound(dashing_item, recharge_sound, 50, 1) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 330a3494d9..7e3ac29b2d 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -246,10 +246,10 @@ else visibility_flags &= ~HIDDEN_SCANNER - SetSpread(CLAMP(2 ** (properties["transmittable"] - symptoms.len), DISEASE_SPREAD_BLOOD, DISEASE_SPREAD_AIRBORNE)) + SetSpread(clamp(2 ** (properties["transmittable"] - symptoms.len), DISEASE_SPREAD_BLOOD, DISEASE_SPREAD_AIRBORNE)) permeability_mod = max(CEILING(0.4 * properties["transmittable"], 1), 1) - cure_chance = 15 - CLAMP(properties["resistance"], -5, 5) // can be between 10 and 20 + cure_chance = 15 - clamp(properties["resistance"], -5, 5) // can be between 10 and 20 stage_prob = max(properties["stage_rate"], 2) SetSeverity(properties["severity"]) GenerateCure(properties) @@ -304,7 +304,7 @@ // Will generate a random cure, the less resistance the symptoms have, the harder the cure. /datum/disease/advance/proc/GenerateCure() if(properties && properties.len) - var/res = CLAMP(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len) + var/res = clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len) if(res == oldres) return cures = list(pick(advance_cures[res])) diff --git a/code/datums/elements/cleaning.dm b/code/datums/elements/cleaning.dm index 3f80204089..d86fe22632 100644 --- a/code/datums/elements/cleaning.dm +++ b/code/datums/elements/cleaning.dm @@ -1,6 +1,6 @@ /datum/element/cleaning/Attach(datum/target) . = ..() - if(!ismovableatom(target)) + if(!ismovable(target)) return ELEMENT_INCOMPATIBLE RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean) diff --git a/code/datums/elements/firestacker.dm b/code/datums/elements/firestacker.dm index 39021d23bb..771812242f 100644 --- a/code/datums/elements/firestacker.dm +++ b/code/datums/elements/firestacker.dm @@ -10,7 +10,7 @@ /datum/element/firestacker/Attach(datum/target, amount) . = ..() - if(!ismovableatom(target)) + if(!ismovable(target)) return ELEMENT_INCOMPATIBLE src.amount = amount diff --git a/code/datums/elements/squish.dm b/code/datums/elements/squish.dm new file mode 100644 index 0000000000..823d391e14 --- /dev/null +++ b/code/datums/elements/squish.dm @@ -0,0 +1,28 @@ +#define SHORT 5/7 +#define TALL 7/5 + +/datum/element/squish + element_flags = ELEMENT_DETACH + +/datum/element/squish/Attach(datum/target, duration) + . = ..() + if(!iscarbon(target)) + return ELEMENT_INCOMPATIBLE + + var/mob/living/carbon/C = target + var/was_lying = (C.lying != 0) + addtimer(CALLBACK(src, .proc/Detach, C, was_lying), duration) + + C.transform = C.transform.Scale(TALL, SHORT) + +/datum/element/squish/Detach(mob/living/carbon/C, was_lying) + . = ..() + if(istype(C)) + var/is_lying = (C.lying != 0) + if(was_lying == is_lying) + C.transform = C.transform.Scale(SHORT, TALL) + else + C.transform = C.transform.Scale(TALL, SHORT) + +#undef SHORT +#undef TALL diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 7be4489e86..f763affcd1 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -121,14 +121,14 @@ GLOBAL_LIST_EMPTY(explosions) if(dist <= round(max_range + world.view - 2, 1)) M.playsound_local(epicenter, null, 100, 1, frequency, falloff = 5, S = explosion_sound) if(baseshakeamount > 0) - shake_camera(M, 25, CLAMP(baseshakeamount, 0, 10)) + shake_camera(M, 25, clamp(baseshakeamount, 0, 10)) // You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station. else if(dist <= far_dist) - var/far_volume = CLAMP(far_dist, 30, 50) // Volume is based on explosion size and dist + var/far_volume = clamp(far_dist, 30, 50) // Volume is based on explosion size and dist far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion M.playsound_local(epicenter, null, far_volume, 1, frequency, falloff = 5, S = far_explosion_sound) if(baseshakeamount > 0) - shake_camera(M, 10, CLAMP(baseshakeamount*0.25, 0, 2.5)) + shake_camera(M, 10, clamp(baseshakeamount*0.25, 0, 2.5)) EX_PREPROCESS_CHECK_TICK //postpone processing for a bit diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 4332b09ac6..f054867de4 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -116,7 +116,7 @@ "[A] slams your chest! You can't breathe!") playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) if(D.losebreath <= 10) - D.losebreath = CLAMP(D.losebreath + 5, 0, 10) + D.losebreath = clamp(D.losebreath + 5, 0, 10) D.adjustOxyLoss(damage + 5) log_combat(A, D, "quickchoked") return TRUE @@ -128,7 +128,7 @@ playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) D.apply_damage(damage, BRUTE) if(D.silent <= 10) - D.silent = CLAMP(D.silent + 10, 0, 10) + D.silent = clamp(D.silent + 10, 0, 10) log_combat(A, D, "neck chopped") return TRUE @@ -187,7 +187,7 @@ if(damage >= stunthreshold) D.visible_message("[D] sputters and recoils in pain!", "You recoil in pain as you are jabbed in a nerve!") D.drop_all_held_items() - + return TRUE //Krav Maga Gloves diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index c3d0deeac6..f07b1d8792 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -92,7 +92,7 @@ Unless you know what you're doing, only use the first three numbers. They're in /datum/material/plasma/on_applied(atom/source, amount, material_flags) . = ..() - if(ismovableatom(source)) + if(ismovable(source)) source.AddElement(/datum/element/firestacker, amount=1) source.AddComponent(/datum/component/explodable, 0, 0, amount / 2500, amount / 1250) diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index ab7fe986fb..9f8c74e2db 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -81,6 +81,7 @@ /datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) if(..()) return + ADD_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) owner.transform = owner.transform.Scale(1, 0.8) passtable_on(owner, GENETIC_MUTATION) owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") @@ -88,6 +89,7 @@ /datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) if(..()) return + REMOVE_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) owner.transform = owner.transform.Scale(1, 1.25) passtable_off(owner, GENETIC_MUTATION) owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") @@ -339,6 +341,7 @@ /datum/mutation/human/gigantism/on_acquiring(mob/living/carbon/human/owner) if(..()) return + ADD_TRAIT(owner, TRAIT_GIANT, GENETIC_MUTATION) owner.resize = 1.25 owner.update_transform() owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") @@ -346,6 +349,7 @@ /datum/mutation/human/gigantism/on_losing(mob/living/carbon/human/owner) if(..()) return + REMOVE_TRAIT(owner, TRAIT_GIANT, GENETIC_MUTATION) owner.resize = 0.8 owner.update_transform() owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index 44ff87e8ae..608683c3dc 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -20,7 +20,7 @@ return sqrt(((b.x - a.x) ** 2) + ((b.y - a.y) ** 2)) /proc/angle_between_points(datum/point/a, datum/point/b) - return ATAN2((b.y - a.y), (b.x - a.x)) + return arctan((b.y - a.y), (b.x - a.x)) /datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. var/x = 0 diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index faecf809cc..fbc194cc6f 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -38,7 +38,7 @@ if (user.client) user.client.images += bar - progress = CLAMP(progress, 0, goal) + progress = clamp(progress, 0, goal) bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]" if (!shown) user.client.images += bar diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 69b74841df..e22b33d90a 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -336,7 +336,7 @@ if(prob(severity * 0.15)) to_chat(owner, "\"[text2ratvar(pick(mania_messages))]\"") owner.playsound_local(get_turf(motor), hum, severity, 1) - owner.adjust_drugginess(CLAMP(max(severity * 0.075, 1), 0, max(0, 50 - owner.druggy))) //7.5% of severity per second, minimum 1 + owner.adjust_drugginess(clamp(max(severity * 0.075, 1), 0, max(0, 50 - owner.druggy))) //7.5% of severity per second, minimum 1 if(owner.hallucination < 50) owner.hallucination = min(owner.hallucination + max(severity * 0.075, 1), 50) //7.5% of severity per second, minimum 1 if(owner.dizziness < 50) @@ -594,7 +594,7 @@ old_health = owner.health if(!old_oxyloss) old_oxyloss = owner.getOxyLoss() - var/health_difference = old_health - owner.health - CLAMP(owner.getOxyLoss() - old_oxyloss,0, owner.getOxyLoss()) + var/health_difference = old_health - owner.health - clamp(owner.getOxyLoss() - old_oxyloss,0, owner.getOxyLoss()) if(!health_difference) return owner.visible_message("The light in [owner]'s eyes dims as [owner.p_theyre()] harmed!", \ diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 3cc8fb90a7..621e06eb2f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -195,7 +195,7 @@ reagents = new() reagents.reagent_list.Add(A) reagents.conditional_update() - else if(ismovableatom(A)) + else if(ismovable(A)) var/atom/movable/M = A if(isliving(M.loc)) var/mob/living/L = M.loc @@ -695,7 +695,7 @@ /atom/vv_get_dropdown() . = ..() VV_DROPDOWN_OPTION("", "---------") - if(!ismovableatom(src)) + if(!ismovable(src)) var/turf/curturf = get_turf(src) if(curturf) . += "" diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6089d11d6c..cc6f84a18f 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -251,8 +251,13 @@ /atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 - SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) - return hit_atom.hitby(src, throwingdatum=throwingdatum) + var/hitpush = TRUE + var/impact_signal = SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) + if(impact_signal & COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH) + hitpush = FALSE // hacky, tie this to something else or a proper workaround later + + if(impact_signal & ~COMPONENT_MOVABLE_IMPACT_NEVERMIND) // in case a signal interceptor broke or deleted the thing before we could process our hit + return hit_atom.hitby(src, throwingdatum = throwingdatum, hitpush = hitpush) /atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked, datum/thrownthing/throwingdatum) if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO)))) diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index bb776d7bc0..c54de16e2e 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -53,7 +53,7 @@ restricted_jobs += "Assistant" // Set number of Vamps - recommended_enemies = CLAMP(round(num_players()/10), 1, 6); + recommended_enemies = clamp(round(num_players()/10), 1, 6); // Select Antags for(var/i = 0, i < recommended_enemies, i++) @@ -195,7 +195,7 @@ return FALSE if(target.stat > UNCONSCIOUS) return FALSE - + // Check Overdose: Am I even addicted to blood? Do I even have any in me? //if (!target.reagents.addiction_list || !target.reagents.reagent_list) //message_admins("DEBUG2: can_make_vassal() Abort: No reagents") diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 48e306b2b5..4378a5c440 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -105,7 +105,7 @@ if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles))) job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it - var/threat = CLAMP(round(mode.threat_level/10),1,10) + var/threat = clamp(round(mode.threat_level/10),1,10) if (job_check < required_enemies[threat]) SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles") return FALSE @@ -671,7 +671,7 @@ message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by dynamic.") log_game("[key_name(Ninja)] was spawned as a ninja by dynamic.") return Ninja - + /datum/dynamic_ruleset/midround/from_ghosts/ninja/finish_setup(mob/new_character, index) return diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index a7fc9b86ce..edaadeae1c 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -789,7 +789,7 @@ if (prob(meteorminutes/2)) wavetype = GLOB.meteors_catastrophic - var/ramp_up_final = CLAMP(round(meteorminutes/rampupdelta), 1, 10) + var/ramp_up_final = clamp(round(meteorminutes/rampupdelta), 1, 10) spawn_meteors(ramp_up_final, wavetype) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index c37eb9bc2a..3639ada166 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -11,7 +11,7 @@ WAROPS_ALWAYS_ALLOWED: Can always do warops, regardless of threat level. USE_PREF_WEIGHTS: Will use peoples' preferences to change the threat centre. FORCE_IF_WON: If this mode won the vote, forces it - USE_PREV_ROUND_WEIGHTS: Changes its threat centre based on the average chaos of previous rounds. + USE_PREV_ROUND_WEIGHTS: Changes its threat centre based on the average chaos of previous rounds. */ var/flags = 0 var/dead_player_weight = 1 // How much dead players matter for threat calculation @@ -22,11 +22,11 @@ var/datum/game_mode/dynamic/mode = null // Cached as soon as it's made, by dynamic. /** -Property weights are: +Property weights are: "story_potential" -- essentially how many different ways the antag can be played. "trust" -- How much it makes the crew trust each other. Negative values means they're suspicious. Team antags are like this. "chaos" -- How chaotic it makes the round. Has some overlap with "valid" and somewhat contradicts "extended". -"valid" -- How likely the non-antag-enemy crew are to get involved, e.g. nukies encouraging the warden to +"valid" -- How likely the non-antag-enemy crew are to get involved, e.g. nukies encouraging the warden to let everyone into the armory, wizard moving around and being a nuisance, nightmare busting lights. "extended" -- How much the antag is conducive to a long round. Nukies and cults are bad for this; Wizard is less bad; and so on. "conversion" -- Basically a bool. Conversion antags, well, convert. It's its own class for a good reason. @@ -34,13 +34,13 @@ Property weights are: /datum/dynamic_storyteller/proc/start_injection_cooldowns() var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_latejoin_delay_max + GLOB.dynamic_first_latejoin_delay_min) - mode.latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_first_latejoin_delay_min, GLOB.dynamic_first_latejoin_delay_max)) + world.time + mode.latejoin_injection_cooldown = round(clamp(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_first_latejoin_delay_min, GLOB.dynamic_first_latejoin_delay_max)) + world.time var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_midround_delay_min + GLOB.dynamic_first_midround_delay_max) - mode.midround_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_first_midround_delay_min, GLOB.dynamic_first_midround_delay_max)) + world.time - + mode.midround_injection_cooldown = round(clamp(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_first_midround_delay_min, GLOB.dynamic_first_midround_delay_max)) + world.time + var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) - mode.event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) + mode.event_injection_cooldown = (round(clamp(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) /datum/dynamic_storyteller/proc/calculate_threat() var/threat = 0 @@ -99,15 +99,15 @@ Property weights are: /datum/dynamic_storyteller/proc/get_midround_cooldown() var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_midround_delay_max + GLOB.dynamic_midround_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) + return round(clamp(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) /datum/dynamic_storyteller/proc/get_event_cooldown() var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + return round(clamp(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) /datum/dynamic_storyteller/proc/get_latejoin_cooldown() var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + return round(clamp(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) /datum/dynamic_storyteller/proc/get_injection_chance(dry_run = FALSE) if(mode.forced_injection) @@ -144,7 +144,7 @@ Property weights are: if(!(rule.flags & MINOR_RULESET)) // makes the traitor rulesets always possible anyway var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat)) /* Basically, the closer the cost is to the current threat-level-away-from-threat, the more likely it is to - pick this particular ruleset. + pick this particular ruleset. Let's use a toy example: there's 60 threat level and 10 threat spent. We want to pick a ruleset that's close to that, so we run the below equation, on two rulesets. Ruleset 1 has 30 cost, ruleset 2 has 5 cost. @@ -212,7 +212,7 @@ Property weights are: flags = WAROPS_ALWAYS_ALLOWED min_players = 40 var/refund_cooldown = 0 - + /datum/dynamic_storyteller/chaotic/do_process() if(refund_cooldown < world.time) mode.create_threat(20) @@ -221,7 +221,7 @@ Property weights are: /datum/dynamic_storyteller/chaotic/get_midround_cooldown() return ..() / 4 - + /datum/dynamic_storyteller/chaotic/get_latejoin_cooldown() return ..() / 4 diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index 7857eb8253..afeebb770b 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -25,7 +25,7 @@ if (prob(meteorminutes/2)) wavetype = GLOB.meteors_catastrophic - var/ramp_up_final = CLAMP(round(meteorminutes/rampupdelta), 1, 10) + var/ramp_up_final = clamp(round(meteorminutes/rampupdelta), 1, 10) spawn_meteors(ramp_up_final, wavetype) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 48a298984c..93852e917c 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -121,7 +121,6 @@ uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat - back = /obj/item/storage/backpack ears = /obj/item/radio/headset/syndicate/alt l_pocket = /obj/item/pinpointer/nuke/syndicate id = /obj/item/card/id/syndicate diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 74554ac9f8..9eed18d906 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -70,7 +70,7 @@ /datum/game_mode/revolution/post_setup() var/list/heads = SSjob.get_living_heads() var/list/sec = SSjob.get_living_sec() - var/weighted_score = CLAMP(round(heads.len - ((3 - sec.len) / 3)), 1, max_headrevs) + var/weighted_score = clamp(round(heads.len - ((3 - sec.len) / 3)), 1, max_headrevs) for(var/datum/mind/rev_mind in headrev_candidates) //People with return to lobby may still be in the lobby. Let's pick someone else in that case. if(isnewplayer(rev_mind.current)) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index e12e4c6cf5..0816388e0a 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -171,7 +171,7 @@ var/multiplier = text2num(href_list["multiplier"]) var/is_stack = ispath(being_built.build_path, /obj/item/stack) - multiplier = CLAMP(multiplier,1,50) + multiplier = clamp(multiplier,1,50) ///////////////// diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ecea8c74c3..cfe9d14663 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -72,7 +72,7 @@ for(var/obj/item/stock_parts/manipulator/P in component_parts) speed_coeff += (P.rating / 2) speed_coeff = max(1, speed_coeff) - heal_level = CLAMP((efficiency * 10) + 10, MINIMUM_HEAL_LEVEL, 100) + heal_level = clamp((efficiency * 10) + 10, MINIMUM_HEAL_LEVEL, 100) //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 6d22f9d6c8..eae2d5fa5b 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -150,7 +150,7 @@ return log_activity("changed greater than charge filter to \"[new_filter]\"") if(new_filter) - new_filter = CLAMP(new_filter, 0, 100) + new_filter = clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) result_filters["Charge Above"] = new_filter if(href_list["below_filter"]) @@ -160,7 +160,7 @@ return log_activity("changed lesser than charge filter to \"[new_filter]\"") if(new_filter) - new_filter = CLAMP(new_filter, 0, 100) + new_filter = clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) result_filters["Charge Below"] = new_filter if(href_list["access_filter"]) diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm index 370f85b4b9..ad325455ad 100644 --- a/code/game/machinery/computer/arcade/minesweeper.dm +++ b/code/game/machinery/computer/arcade/minesweeper.dm @@ -308,12 +308,12 @@ var/new_rows = input(user, "How many rows do you want? (Minimum: 4, Maximum: 30)", "Minesweeper Rows") as null|num if(!new_rows || !user.canUseTopic(src, !hasSiliconAccessInArea(user))) return FALSE - new_rows = CLAMP(new_rows + 1, 4, 30) + new_rows = clamp(new_rows + 1, 4, 30) playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10) var/new_columns = input(user, "How many columns do you want? (Minimum: 4, Maximum: 50)", "Minesweeper Squares") as null|num if(!new_columns || !user.canUseTopic(src, !hasSiliconAccessInArea(user))) return FALSE - new_columns = CLAMP(new_columns + 1, 4, 50) + new_columns = clamp(new_columns + 1, 4, 50) playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10) var/grid_area = (new_rows - 1) * (new_columns - 1) var/lower_limit = round(grid_area*0.156) @@ -324,7 +324,7 @@ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10) rows = new_rows columns = new_columns - mine_limit = CLAMP(new_mine_limit, lower_limit, upper_limit) + mine_limit = clamp(new_mine_limit, lower_limit, upper_limit) return TRUE /obj/machinery/computer/arcade/minesweeper/proc/make_mines(var/reset_everything) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 22e102b54b..79ea51eca4 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -296,7 +296,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) if("rate") var/target = text2num(params["rate"]) if(!isnull(target)) - target = CLAMP(target, 0, MAX_TRANSFER_RATE) + target = clamp(target, 0, MAX_TRANSFER_RATE) signal.data += list("tag" = input_tag, "set_volume_rate" = target) . = TRUE if("output") @@ -305,7 +305,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) if("pressure") var/target = text2num(params["pressure"]) if(!isnull(target)) - target = CLAMP(target, 0, MAX_OUTPUT_PRESSURE) + target = clamp(target, 0, MAX_OUTPUT_PRESSURE) signal.data += list("tag" = output_tag, "set_internal_pressure" = target) . = TRUE radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index b9bd3da95e..d465ff2022 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -604,13 +604,13 @@ if("setbufferlabel") var/text = sanitize(input(usr, "Input a new label:", "Input a Text", null) as text|null) if(num && text) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) buffer_slot["label"] = text if("setbuffer") if(num && viable_occupant) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) buffer[num] = list( "label"="Buffer[num]:[viable_occupant.real_name]", "UI"=viable_occupant.dna.uni_identity, @@ -620,7 +620,7 @@ ) if("clearbuffer") if(num) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) buffer_slot.Cut() @@ -635,7 +635,7 @@ apply_buffer(SCANNER_ACTION_MIXED,num) if("injector") if(num && injectorready < world.time) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) var/obj/item/dnainjector/timed/I @@ -662,11 +662,11 @@ injectorready = world.time + INJECTOR_TIMEOUT if("loaddisk") if(num && diskette && diskette.fields) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) buffer[num] = diskette.fields.Copy() if("savedisk") if(num && diskette && !diskette.read_only) - num = CLAMP(num, 1, NUMBER_OF_BUFFERS) + num = clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) diskette.name = "data disk \[[buffer_slot["label"]]\]" @@ -953,7 +953,7 @@ return viable_occupant /obj/machinery/computer/scan_consolenew/proc/apply_buffer(action,buffer_num) - buffer_num = CLAMP(buffer_num, 1, NUMBER_OF_BUFFERS) + buffer_num = clamp(buffer_num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[buffer_num] var/mob/living/carbon/viable_occupant = get_viable_occupant() if(istype(buffer_slot)) diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm index e4a6a0b2d4..ca75ff1dd0 100644 --- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm +++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm @@ -97,7 +97,7 @@ return if(!new_goal) new_goal = default_goal - contained_id.goal = CLAMP(new_goal, 0, 1000) //maximum 1000 points + contained_id.goal = clamp(new_goal, 0, 1000) //maximum 1000 points return TRUE if("toggle_open") if(teleporter.locked) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 686b62d1c3..67113fcf78 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -33,7 +33,7 @@ to_chat(user, "You begin repairing [src]...") if(I.use_tool(src, user, 40, volume=40)) - obj_integrity = CLAMP(obj_integrity + 20, 0, max_integrity) + obj_integrity = clamp(obj_integrity + 20, 0, max_integrity) else return ..() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index adc1748ded..cd22b2dc05 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -135,7 +135,7 @@ . /= 10 /obj/machinery/door_timer/proc/set_timer(value) - var/new_time = CLAMP(value,0,MAX_TIMER) + var/new_time = clamp(value,0,MAX_TIMER) . = new_time == timer_duration //return 1 on no change timer_duration = new_time diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index d01f7e3e40..c8219e9ebf 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -68,9 +68,9 @@ if(teleporting) return if(!isnull(x)) - x_offset = CLAMP(x, -range, range) + x_offset = clamp(x, -range, range) if(!isnull(y)) - y_offset = CLAMP(y, -range, range) + y_offset = clamp(y, -range, range) /obj/machinery/launchpad/proc/doteleport(mob/user, sending) if(teleporting) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index b0e26ce129..c144616c05 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -55,9 +55,9 @@ new /obj/item/pipe_meter(loc) wait = world.time + 15 if(href_list["layer_up"]) - piping_layer = CLAMP(++piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + piping_layer = clamp(++piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) if(href_list["layer_down"]) - piping_layer = CLAMP(--piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + piping_layer = clamp(--piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) return /obj/machinery/pipedispenser/attackby(obj/item/W, mob/user, params) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index c152e302fe..34db7b0e08 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -270,7 +270,7 @@ use_stored_power(50) /obj/machinery/shieldwallgen/proc/use_stored_power(amount) - power = CLAMP(power - amount, 0, maximum_stored_power) + power = clamp(power - amount, 0, maximum_stored_power) update_activity() /obj/machinery/shieldwallgen/proc/update_activity() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 41dfe8e3ac..f9f4eb3e80 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -127,7 +127,7 @@ settableTemperatureRange = cap * 30 efficiency = (cap + 1) * 10000 - targetTemperature = CLAMP(targetTemperature, + targetTemperature = clamp(targetTemperature, max(settableTemperatureMedian - settableTemperatureRange, TCMB), settableTemperatureMedian + settableTemperatureRange) @@ -230,7 +230,7 @@ target= text2num(target) + T0C . = TRUE if(.) - targetTemperature = CLAMP(round(target), + targetTemperature = clamp(round(target), max(settableTemperatureMedian - settableTemperatureRange, TCMB), settableTemperatureMedian + settableTemperatureRange) if("eject") diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index b8d4ef26e8..50984c43b8 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -195,7 +195,7 @@ /obj/machinery/syndicatebomb/proc/settings(mob/user) var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station - timer_set = CLAMP(new_timer, minimum_timer, maximum_timer) + timer_set = clamp(new_timer, minimum_timer, maximum_timer) loc.visible_message("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.") if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user)) if(defused || active) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 985c1166b7..16ae158ea7 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -70,7 +70,7 @@ com.target = null visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") return - if (ismovableatom(M)) + if (ismovable(M)) if(do_teleport(M, com.target, channel = TELEPORT_CHANNEL_BLUESPACE)) use_power(5000) diff --git a/code/game/machinery/toylathe.dm b/code/game/machinery/toylathe.dm index c679f3f983..4e039d304c 100644 --- a/code/game/machinery/toylathe.dm +++ b/code/game/machinery/toylathe.dm @@ -156,7 +156,7 @@ var/multiplier = text2num(href_list["multiplier"]) var/is_stack = ispath(being_built.build_path, /obj/item/stack) - multiplier = CLAMP(multiplier,1,50) + multiplier = clamp(multiplier,1,50) ///////////////// @@ -240,7 +240,7 @@ T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) T -= M.rating*0.2 - prod_coeff = CLAMP(T,1,0) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 + prod_coeff = clamp(T,1,0) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 /obj/machinery/autoylathe/proc/main_win(mob/user) var/dat = "

Autoylathe Menu:


" diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index f1fa5ddd20..65aa001fe1 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -484,7 +484,7 @@ /obj/item/punching_glove/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) - if(ismovableatom(hit_atom)) + if(ismovable(hit_atom)) var/atom/movable/AM = hit_atom AM.safe_throw_at(get_edge_target_turf(AM,get_dir(src, AM)), 7, 2) qdel(src) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 3b5a029df4..5276062121 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -17,7 +17,7 @@ target = get_turf(src) if(acid_amt) - acid_level = min( (CLAMP(round(acid_amt, 1), 0, INFINITY)) *acid_pwr, 12000) //capped so the acid effect doesn't last a half hour on the floor. + acid_level = min( (clamp(round(acid_amt, 1), 0, INFINITY)) *acid_pwr, 12000) //capped so the acid effect doesn't last a half hour on the floor. //handle APCs and newscasters and stuff nicely pixel_x = target.pixel_x + rand(-4,4) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 2cdf57bf70..9893e9c7d3 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -521,7 +521,7 @@ /obj/item/gun/ballistic/automatic/toy/pistol = 5, /obj/item/firing_pin = 5, /obj/item/grenade/empgrenade = 15, - /obj/item/clothing/gloves/combat = 10, + /obj/item/clothing/gloves/tackler/combat/insulated = 10, /obj/item/clothing/shoes/sneakers/noslip = 10 ) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 01edd82ccb..80178c95c4 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -52,7 +52,7 @@ var/list/affecting = list() /obj/effect/step_trigger/thrower/Trigger(atom/A) - if(!A || !ismovableatom(A)) + if(!A || !ismovable(A)) return var/atom/movable/AM = A var/curtiles = 0 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5c80b81ba5..9455a610c5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -392,7 +392,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(item_flags & DROPDEL) qdel(src) item_flags &= ~IN_INVENTORY - SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user) + if(SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user) & COMPONENT_DROPPED_RELOCATION) + return ITEM_RELOCATED_BY_DROPPED user.update_equipment_speed_mods() // called just as an item is picked up (loc is not yet changed) diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 6b3428698b..c3b6c0312f 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -193,7 +193,7 @@ /obj/effect/chrono_field/update_icon() var/ttk_frame = 1 - (tickstokill / initial(tickstokill)) - ttk_frame = CLAMP(CEILING(ttk_frame * CHRONO_FRAME_COUNT, 1), 1, CHRONO_FRAME_COUNT) + ttk_frame = clamp(CEILING(ttk_frame * CHRONO_FRAME_COUNT, 1), 1, CHRONO_FRAME_COUNT) if(ttk_frame != RPpos) RPpos = ttk_frame mob_underlay.icon_state = "frame[RPpos]" diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index fe6452ecc0..c5cf8955ad 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -806,7 +806,7 @@ var/new_cloud = input("Set the public nanite chamber's Cloud ID (1-100).", "Cloud ID", cloud_id) as num|null if(new_cloud == null) return - cloud_id = CLAMP(round(new_cloud, 1), 1, 100) + cloud_id = clamp(round(new_cloud, 1), 1, 100) /obj/item/circuitboard/machine/public_nanite_chamber/examine(mob/user) . = ..() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 09c045497c..3dad3877b7 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -59,7 +59,7 @@ var/edible = TRUE // That doesn't mean eating it is a good idea - var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1) + var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1) // If the user can toggle the colour, a la vanilla spraycan var/can_change_colour = FALSE @@ -346,8 +346,8 @@ var/clicky if(click_params && click_params["icon-x"] && click_params["icon-y"]) - clickx = CLAMP(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) - clicky = CLAMP(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) + clickx = clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + clicky = clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) if(!instant) to_chat(user, "You start drawing a [temp] on the [target.name]...") @@ -487,56 +487,56 @@ icon_state = "crayonred" paint_color = "#DA0000" crayon_color = "red" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/red = 0.9) dye_color = DYE_RED /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" crayon_color = "orange" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/orange = 0.9) dye_color = DYE_ORANGE /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" crayon_color = "yellow" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 0.9) dye_color = DYE_YELLOW /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" crayon_color = "green" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/green = 0.9) dye_color = DYE_GREEN /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" crayon_color = "blue" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/blue = 0.9) dye_color = DYE_BLUE /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" crayon_color = "purple" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/purple = 0.9) dye_color = DYE_PURPLE /obj/item/toy/crayon/black icon_state = "crayonblack" paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. crayon_color = "black" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/black = 0.9) dye_color = DYE_BLACK /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" crayon_color = "white" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/white = 0.9) dye_color = DYE_WHITE /obj/item/toy/crayon/mime @@ -544,7 +544,7 @@ desc = "A very sad-looking crayon." paint_color = "#FFFFFF" crayon_color = "mime" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 0.9) charges = -1 dye_color = DYE_MIME @@ -552,10 +552,9 @@ icon_state = "crayonrainbow" paint_color = "#FFF000" crayon_color = "rainbow" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/colorful_reagent = 0.9) drawtype = RANDOM_ANY // just the default starter. dye_color = DYE_RAINBOW - charges = -1 /obj/item/toy/crayon/rainbow/afterattack(atom/target, mob/user, proximity, params) diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index e5dcfc0075..e3385dc13f 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -39,7 +39,7 @@ var/new_duration = input(user, "Set the duration (5-300):", "Desynchronizer", duration / 10) as null|num if(new_duration) new_duration = new_duration SECONDS - new_duration = CLAMP(new_duration, 50, max_duration) + new_duration = clamp(new_duration, 50, max_duration) duration = new_duration to_chat(user, "You set the duration to [DisplayTimeText(duration)].") return TRUE diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 9a09be093d..981a811bc3 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(GPS_list) if(!ui) // Variable window height, depending on how many GPS units there are // to show, clamped to relatively safe range. - var/gps_window_height = CLAMP(325 + GLOB.GPS_list.len * 14, 325, 700) + var/gps_window_height = clamp(325 + GLOB.GPS_list.len * 14, 325, 700) ui = new(user, src, ui_key, "gps", "Global Positioning System", 470, gps_window_height, master_ui, state) //width, height ui.open() diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index bee59b254c..9ab6115634 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -171,7 +171,7 @@ // Negative numbers will subtract /obj/item/lightreplacer/proc/AddUses(amount = 1) - uses = CLAMP(uses + amount, 0, max_uses) + uses = clamp(uses + amount, 0, max_uses) /obj/item/lightreplacer/proc/AddShards(amount = 1, user) bulb_shards += amount diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 1eee083c80..e94d14a57d 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -81,7 +81,7 @@ if(!usr.canUseTopic(src, BE_CLOSE)) return new_code = round(new_code) - new_code = CLAMP(new_code, 1, 100) + new_code = clamp(new_code, 1, 100) code = new_code if(href_list["set"] == "power") diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 4bab5a5bcd..b6261b9060 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -232,7 +232,7 @@ effective or pretty fucking useless. charge = max(0,charge - 25)//Quick decrease in light else charge = min(max_charge,charge + 50) //Charge in the dark - animate(user,alpha = CLAMP(255 - charge,0,255),time = 10) + animate(user,alpha = clamp(255 - charge,0,255),time = 10) /obj/item/jammer diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index f572d0a841..4fdb862288 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -170,7 +170,7 @@ /obj/item/dice/proc/diceroll(mob/user) result = roll(sides) if(rigged && result != rigged) - if(prob(CLAMP(1/(sides - 1) * 100, 25, 80))) + if(prob(clamp(1/(sides - 1) * 100, 25, 80))) result = rigged var/fake_result = roll(sides)//Daredevil isn't as good as he used to be var/comment = "" diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index eaecae5a92..66869d6f04 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -94,7 +94,7 @@ return var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num if(user.get_active_held_item() == src) - newtime = CLAMP(newtime, 10, 60000) + newtime = clamp(newtime, 10, 60000) det_time = newtime to_chat(user, "Timer set for [det_time] seconds.") diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index c961134244..6e270b6374 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -197,9 +197,9 @@ /obj/item/his_grace/proc/adjust_bloodthirst(amt) prev_bloodthirst = bloodthirst if(prev_bloodthirst < HIS_GRACE_CONSUME_OWNER && !ascended) - bloodthirst = CLAMP(bloodthirst + amt, HIS_GRACE_SATIATED, HIS_GRACE_CONSUME_OWNER) + bloodthirst = clamp(bloodthirst + amt, HIS_GRACE_SATIATED, HIS_GRACE_CONSUME_OWNER) else if(!ascended) - bloodthirst = CLAMP(bloodthirst + amt, HIS_GRACE_CONSUME_OWNER, HIS_GRACE_FALL_ASLEEP) + bloodthirst = clamp(bloodthirst + amt, HIS_GRACE_CONSUME_OWNER, HIS_GRACE_FALL_ASLEEP) update_stats() /obj/item/his_grace/proc/update_stats() diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 5f74830c99..347ec118fd 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -74,7 +74,7 @@ L.SetAllImmobility(0) L.SetSleeping(0) L.SetUnconscious(0) - L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, CLAMP(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! + L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, clamp(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! colorize(L) /obj/item/hot_potato/examine(mob/user) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 342f756ffc..23be8cbb9a 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -201,8 +201,8 @@ return target var/x_o = (target.x - starting.x) var/y_o = (target.y - starting.y) - var/new_x = CLAMP((starting.x + (x_o * range_multiplier)), 0, world.maxx) - var/new_y = CLAMP((starting.y + (y_o * range_multiplier)), 0, world.maxy) + var/new_x = clamp((starting.x + (x_o * range_multiplier)), 0, world.maxx) + var/new_y = clamp((starting.y + (y_o * range_multiplier)), 0, world.maxy) var/turf/newtarget = locate(new_x, new_y, starting.z) return newtarget diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 318753e4ad..abb2d12a1f 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -649,7 +649,7 @@ continue usage += projectile_tick_speed_ecost usage += (tracked[I] * projectile_damage_tick_ecost_coefficient) - energy = CLAMP(energy - usage, 0, maxenergy) + energy = clamp(energy - usage, 0, maxenergy) if(energy <= 0) deactivate_field() visible_message("[src] blinks \"ENERGY DEPLETED\".") @@ -659,7 +659,7 @@ if(iscyborg(host.loc)) host = host.loc else - energy = CLAMP(energy + energy_recharge, 0, maxenergy) + energy = clamp(energy + energy_recharge, 0, maxenergy) return if(host.cell && (host.cell.charge >= (host.cell.maxcharge * cyborg_cell_critical_percentage)) && (energy < maxenergy)) host.cell.use(energy_recharge*energy_recharge_cyborg_drain_coefficient) diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm index 93056adc99..014d4cb159 100644 --- a/code/game/objects/items/sharpener.dm +++ b/code/game/objects/items/sharpener.dm @@ -35,14 +35,14 @@ if(TH.force_wielded > initial(TH.force_wielded)) to_chat(user, "[TH] has already been refined before. It cannot be sharpened further!") return - TH.force_wielded = CLAMP(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay + TH.force_wielded = clamp(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay if(I.force > initial(I.force)) to_chat(user, "[I] has already been refined before. It cannot be sharpened further!") return user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.") I.sharpness = IS_SHARP_ACCURATE - I.force = CLAMP(I.force + increment, 0, max) - I.throwforce = CLAMP(I.throwforce + increment, 0, max) + I.force = clamp(I.force + increment, 0, max) + I.throwforce = clamp(I.throwforce + increment, 0, max) I.name = "[prefix] [I.name]" name = "worn out [name]" desc = "[desc] At least, it used to." diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 6d8e582c29..863a825771 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -33,11 +33,11 @@ return TRUE /obj/item/shield/alt_pre_attack(atom/A, mob/living/user, params) - user_shieldbash(user, A, user.a_intent != INTENT_HARM) + user_shieldbash(user, A, user.a_intent == INTENT_HARM) return TRUE /obj/item/shield/altafterattack(atom/target, mob/user, proximity_flag, click_parameters) - user_shieldbash(user, target, user.a_intent != INTENT_HARM) + user_shieldbash(user, target, user.a_intent == INTENT_HARM) return TRUE /obj/item/shield/proc/do_shieldbash_effect(mob/living/user, dir, harmful) @@ -52,13 +52,13 @@ px = 12 if(WEST) px = -12 - var/oldpx = user.pixel_x - var/oldpy = user.pixel_y - animate(user, pixel_x = px, pixel_y = py, time = 3, easing = SINE_EASING | EASE_OUT, flags = ANIMATION_END_NOW) - animate(user, pixel_x = oldpx, pixel_y = oldpy, time = 3) - user.visible_message("[user] [harmful? "charges forwards with" : "sweeps"] [src]!") var/obj/effect/temp_visual/dir_setting/shield_bash/effect = new(user.loc, dir) - animate(effect, alpha = 0, pixel_x = px + 4, pixel_y = py + 4, time = 3) + effect.pixel_x = user.pixel_x - 32 //96x96 effect, -32. + effect.pixel_y = user.pixel_y - 32 + user.visible_message("[user] [harmful? "charges forwards with" : "sweeps"] [src]!") + animate(user, pixel_x = px, pixel_y = py, time = 3, easing = SINE_EASING | EASE_OUT, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE) + animate(user, pixel_x = -px, pixel_y = -py, time = 3, flags = ANIMATION_RELATIVE) + animate(effect, alpha = 0, pixel_x = px * 1.5, pixel_y = py * 1.5, time = 3, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE) /obj/item/shield/proc/bash_target(mob/living/user, mob/living/target, bashdir, harmful) if(!(target.status_flags & CANKNOCKDOWN) || HAS_TRAIT(src, TRAIT_STUNIMMUNE)) // should probably add stun absorption check at some point I guess.. @@ -76,7 +76,7 @@ "[user] shoves you with [src]!") for(var/i in 1 to harmful? shieldbash_knockback : shieldbash_push_distance) var/turf/new_turf = get_step(target, bashdir) - var/mob/living/carbon/human/H = locate() in new_turf + var/mob/living/carbon/human/H = locate() in (new_turf.contents - target) if(H && harmful) H.visible_message("[target] is sent crashing into [H]!", "[target] is sent crashing into you!") @@ -113,7 +113,8 @@ if(world.time < last_shieldbash + shieldbash_cooldown) to_chat(user, "You can't bash with [src] again so soon!") return FALSE - if(isliving(target)) //GROUND SLAAAM + var/mob/living/livingtarget = target //only access after an isliving check! + if(isliving(target) && !CHECK_MOBILITY(livingtarget, MOBILITY_STAND)) //GROUND SLAAAM if(!(shield_flags & SHIELD_BASH_GROUND_SLAM)) to_chat(user, "You can't ground slam with [src]!") return FALSE @@ -122,7 +123,7 @@ playsound(src, harmful? "swing_hit" : 'sound/weapons/thudswoosh.ogg', 75, 1) last_shieldbash = world.time user.adjustStaminaLossBuffered(shieldbash_stamcost) - return 1 + return TRUE // Directional sweep! last_shieldbash = world.time user.adjustStaminaLossBuffered(shieldbash_stamcost) @@ -164,11 +165,12 @@ attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time var/repair_material = /obj/item/stack/sheet/mineral/titanium + var/can_shatter = TRUE shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_TRANSPARENT max_integrity = 75 /obj/item/shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - if(ismovableatom(object)) + if(ismovable(object)) var/atom/movable/AM = object if(CHECK_BITFIELD(shield_flags, SHIELD_TRANSPARENT) && (AM.pass_flags & PASSGLASS)) return BLOCK_NONE @@ -213,7 +215,7 @@ new /obj/item/shard((get_turf(src))) /obj/item/shield/riot/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - if(obj_integrity <= damage) + if(can_shatter && (obj_integrity <= damage)) var/turf/T = get_turf(owner) T.visible_message("[attack_text] destroys [src]!") shatter(owner) @@ -324,7 +326,6 @@ obj/item/shield/riot/bullet_proof armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80) lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - icon = 'icons/obj/items_and_weapons.dmi' item_state = "metal" icon_state = "makeshift_shield" custom_materials = list(/datum/material/iron = 18000) @@ -340,7 +341,6 @@ obj/item/shield/riot/bullet_proof armor = list("melee" = 95, "bullet" = 95, "laser" = 75, "energy" = 60, "bomb" = 90, "bio" = 90, "rad" = 0, "fire" = 90, "acid" = 10) //Armor for the item, dosnt transfer to user item_state = "metal" icon_state = "metal" - icon = 'icons/obj/items_and_weapons.dmi' block_chance = 75 //1/4 shots will hit* force = 16 slowdown = 2 @@ -356,20 +356,47 @@ obj/item/shield/riot/bullet_proof block_chance = 50 /obj/item/shield/riot/implant - name = "riot tower shield" - desc = "A massive shield that can block a lot of attacks and can take a lot of abuse before breaking." //It cant break unless it is removed from the implant + name = "telescoping shield implant" + desc = "A compact, arm-mounted telescopic shield. While nigh-indestructible when powered by a host user, it will eventually overload from damage. Recharges while inside its implant." item_state = "metal" icon_state = "metal" - block_chance = 30 //May be big but hard to move around to block. + block_chance = 50 slowdown = 1 shield_flags = SHIELD_FLAGS_DEFAULT + max_integrity = 60 + obj_integrity = 60 + can_shatter = FALSE item_flags = SLOWS_WHILE_IN_HAND + var/recharge_timerid + var/recharge_delay = 15 SECONDS -/obj/item/shield/riot/implant/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - if(attack_type & ATTACK_TYPE_PROJECTILE) - final_block_chance = 60 //Massive shield - return ..() +/// Entirely overriden take_damage. This shouldn't exist outside of an implant (other than maybe christmas). +/obj/item/shield/riot/implant/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) + obj_integrity -= damage_amount + if(obj_integrity < 0) + obj_integrity = 0 + if(obj_integrity == 0) + if(ismob(loc)) + var/mob/living/L = loc + playsound(src, 'sound/effects/glassbr3.ogg', 100) + L.visible_message("[src] overloads from the damage sustained!") + L.dropItemToGround(src) //implant component catch hook will grab it. +/obj/item/shield/riot/implant/Moved() + . = ..() + if(istype(loc, /obj/item/organ/cyberimp/arm/shield)) + recharge_timerid = addtimer(CALLBACK(src, .proc/recharge), recharge_delay, flags = TIMER_STOPPABLE) + else //extending + if(recharge_timerid) + deltimer(recharge_timerid) + recharge_timerid = null + +/obj/item/shield/riot/implant/proc/recharge() + if(obj_integrity == max_integrity) + return + obj_integrity = max_integrity + if(ismob(loc.loc)) //cyberimplant.user + to_chat(loc, "[src] has recharged its reinforcement matrix and is ready for use!") /obj/item/shield/energy name = "energy combat shield" diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index 4c64ed9dd4..dc761ee3bf 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -37,7 +37,7 @@ /obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder) for(var/atom/X in orange(5,pull)) - if(ismovableatom(X)) + if(ismovable(X)) var/atom/movable/A = X if(A == wielder) continue diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 70b00c72ec..add9ebd6b2 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -71,9 +71,9 @@ /obj/item/stack/proc/update_weight() if(amount <= (max_amount * (1/3))) - w_class = CLAMP(full_w_class-2, WEIGHT_CLASS_TINY, full_w_class) + w_class = clamp(full_w_class-2, WEIGHT_CLASS_TINY, full_w_class) else if (amount <= (max_amount * (2/3))) - w_class = CLAMP(full_w_class-1, WEIGHT_CLASS_TINY, full_w_class) + w_class = clamp(full_w_class-1, WEIGHT_CLASS_TINY, full_w_class) else w_class = full_w_class diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 103dabdeec..52802fa3df 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -412,7 +412,7 @@ STR.max_combined_w_class = 200 STR.max_items = 25 STR.insert_preposition = "in" - STR.can_hold = typecacheof(list(/obj/item/slime_extract, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/blood, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/food/snacks/deadmouse, /obj/item/reagent_containers/food/snacks/monkeycube, /obj/item/organ, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/bodypart)) + STR.can_hold = typecacheof(list(/obj/item/slime_extract, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/blood, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/food/snacks/deadmouse, /obj/item/reagent_containers/food/snacks/cube, /obj/item/organ, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/bodypart)) STR.cant_hold = typecacheof(list(/obj/item/organ/brain, /obj/item/organ/liver/cybernetic, /obj/item/organ/heart/cybernetic, /obj/item/organ/lungs/cybernetic, /obj/item/organ/tongue/cybernetic, /obj/item/organ/ears/cybernetic, /obj/item/organ/eyes/robotic, /obj/item/organ/cyberimp)) /obj/item/storage/bag/bio/holding diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 91206df4c2..4cf613ef95 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -454,11 +454,11 @@ . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 7 - STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/monkeycube)) + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/cube/monkey)) /obj/item/storage/box/monkeycubes/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/food/snacks/monkeycube(src) + new /obj/item/reagent_containers/food/snacks/cube/monkey(src) /obj/item/storage/box/ids name = "box of spare IDs" diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 50620b90fe..64e0a6b492 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -138,7 +138,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) new /obj/item/crowbar/red(src) new /obj/item/wirecutters(src, "red") new /obj/item/multitool(src) - new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/tackler/combat/insulated(src) /obj/item/storage/toolbox/drone name = "mechanical toolbox" @@ -311,7 +311,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) new /obj/item/crowbar/red(src) new /obj/item/wirecutters(src, "red") new /obj/item/multitool/ai_detect(src) - new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/tackler/combat/insulated(src) /obj/item/storage/toolbox/gold_real/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 874c858b3f..cf0afb638b 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -501,3 +501,13 @@ new item2(src) new item3(src) new /obj/item/paper/contractor_guide(src) //Paper guide + +/obj/item/storage/box/syndie_kit/northstar + +/obj/item/storage/box/syndie_kit/northstar/PopulateContents() + new /obj/item/clothing/gloves/fingerless/pugilist/rapid(src) + new /obj/item/clothing/accessory/padding(src) + new /obj/item/clothing/under/chameleon(src) + new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) + new /obj/item/lighter(src) + diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 58e16ad615..1c92ed4e61 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -204,7 +204,7 @@ pressure = text2num(pressure) . = TRUE if(.) - distribute_pressure = CLAMP(round(pressure), TANK_MIN_RELEASE_PRESSURE, TANK_MAX_RELEASE_PRESSURE) + distribute_pressure = clamp(round(pressure), TANK_MIN_RELEASE_PRESSURE, TANK_MAX_RELEASE_PRESSURE) /obj/item/tank/remove_air(amount) return air_contents.remove(amount) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 6fbf9316ed..08390e1607 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -256,7 +256,7 @@ . = ..() if(!sliver) return - if(proximity && ismovableatom(O) && O != sliver) + if(proximity && ismovable(O) && O != sliver) Consume(O, user) /obj/item/hemostat/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) // no instakill supermatter javelins diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index e582aa7e67..8dac972d04 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -31,7 +31,7 @@ if(damage_flag) armor_protection = armor.getRating(damage_flag) if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. - armor_protection = CLAMP(armor_protection - armour_penetration, 0, 100) + armor_protection = clamp(armor_protection - armour_penetration, 0, 100) return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) //the sound played when the obj is damaged. @@ -213,7 +213,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(T.intact && level == 1) //fire can't damage things hidden below the floor. return if(exposed_temperature && !(resistance_flags & FIRE_PROOF)) - take_damage(CLAMP(0.02 * exposed_temperature, 0, 20), BURN, "fire", 0) + take_damage(clamp(0.02 * exposed_temperature, 0, 20), BURN, "fire", 0) if(!(resistance_flags & ON_FIRE) && (resistance_flags & FLAMMABLE)) resistance_flags |= ON_FIRE SSfire_burning.processing[src] = src @@ -244,7 +244,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(has_buckled_mobs()) for(var/m in buckled_mobs) var/mob/living/buckled_mob = m - buckled_mob.electrocute_act((CLAMP(round(strength/400), 10, 90) + rand(-5, 5)), src, flags = SHOCK_TESLA) + buckled_mob.electrocute_act((clamp(round(strength/400), 10, 90) + rand(-5, 5)), src, flags = SHOCK_TESLA) /obj/proc/reset_shocked() obj_flags &= ~BEING_SHOCKED diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index a40314c7ad..5da04a6686 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -505,7 +505,7 @@ /obj/structure/closet/container_resist(mob/living/user) if(opened) return - if(ismovableatom(loc)) + if(ismovable(loc)) user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT var/atom/movable/AM = loc diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 83827b56b6..0da502283b 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -37,8 +37,8 @@ ..() new /obj/item/clothing/glasses/eyepatch(src) new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/tackler/combat(src) + new /obj/item/clothing/gloves/tackler/combat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/mask/gas/sechailer/swat(src) diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm index ee8f285230..ca66dbd8de 100644 --- a/code/game/objects/structures/fireplace.dm +++ b/code/game/objects/structures/fireplace.dm @@ -130,7 +130,7 @@ if(burn_time_remaining() < MAXIMUM_BURN_TIMER) flame_expiry_timer = world.time + MAXIMUM_BURN_TIMER else - fuel_added = CLAMP(fuel_added + amount, 0, MAXIMUM_BURN_TIMER) + fuel_added = clamp(fuel_added + amount, 0, MAXIMUM_BURN_TIMER) /obj/structure/fireplace/proc/burn_time_remaining() if(lit) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index d0be6c8469..801940df7c 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -453,7 +453,7 @@ name = "Syndicate Operative Empty" uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/syndicate/alt back = /obj/item/storage/backpack implants = list(/obj/item/implant/weapons_auth) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 7c373f2734..fd62ffd368 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -294,7 +294,7 @@ /obj/structure/girder/CanAStarPass(ID, dir, caller) . = !density - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSGRILLE) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 61983dcb4f..54e08db210 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -129,7 +129,7 @@ /obj/structure/grille/CanAStarPass(ID, dir, caller) . = !density - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSGRILLE) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index be783f387e..e32def727a 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -159,7 +159,7 @@ if(H.dna.species.use_skintones) var/list/choices = GLOB.skin_tones - if(CONFIG_GET(number/allow_custom_skintones)) + if(CONFIG_GET(flag/allow_custom_skintones)) choices += "custom" var/new_s_tone = input(H, "Choose your skin tone:", "Race change") as null|anything in choices if(new_s_tone) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 8cf5b1ee66..79a7ce0519 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -333,7 +333,7 @@ GLOBAL_LIST_EMPTY(crematoriums) to_chat(user, "That's not connected to anything!") /obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user) - if(!ismovableatom(O) || O.anchored || !Adjacent(user) || !user.Adjacent(O) || O.loc == user) + if(!ismovable(O) || O.anchored || !Adjacent(user) || !user.Adjacent(O) || O.loc == user) return if(!ismob(O)) if(!istype(O, /obj/structure/closet/body_bag)) @@ -375,6 +375,6 @@ GLOBAL_LIST_EMPTY(crematoriums) /obj/structure/tray/m_tray/CanAStarPass(ID, dir, caller) . = !density - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSTABLE) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 550c0216c6..bbdf6925f9 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -103,7 +103,7 @@ /obj/structure/table/CanAStarPass(ID, dir, caller) . = !density - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSTABLE) @@ -175,8 +175,8 @@ if(!click_params || !click_params["icon-x"] || !click_params["icon-y"]) return //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - I.pixel_x = CLAMP(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) - I.pixel_y = CLAMP(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) + I.pixel_x = clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + I.pixel_y = clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) return 1 else return ..() @@ -610,7 +610,7 @@ /obj/structure/rack/CanAStarPass(ID, dir, caller) . = !density - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSTABLE) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index bc4cd8df33..3a719d05b9 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -256,9 +256,9 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( if(depth) var/list/target_baseturfs if(length(copytarget.baseturfs)) - // with default inputs this would be Copy(CLAMP(2, -INFINITY, baseturfs.len)) + // with default inputs this would be Copy(clamp(2, -INFINITY, baseturfs.len)) // Don't forget a lower index is lower in the baseturfs stack, the bottom is baseturfs[1] - target_baseturfs = copytarget.baseturfs.Copy(CLAMP(1 + ignore_bottom, 1 + copytarget.baseturfs.len - depth, copytarget.baseturfs.len)) + target_baseturfs = copytarget.baseturfs.Copy(clamp(1 + ignore_bottom, 1 + copytarget.baseturfs.len - depth, copytarget.baseturfs.len)) else if(!ignore_bottom) target_baseturfs = list(copytarget.baseturfs) if(target_baseturfs) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index f31649eaca..849b6cf45d 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -441,7 +441,7 @@ for(var/V in contents) var/atom/A = V if(!QDELETED(A) && A.level >= affecting_level) - if(ismovableatom(A)) + if(ismovable(A)) var/atom/movable/AM = A if(!AM.ex_check(explosion_id)) continue diff --git a/code/game/world.dm b/code/game/world.dm index 77361310b8..bee595047f 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -10,9 +10,7 @@ GLOBAL_LIST(topic_status_cache) /world/New() enable_debugger() -#if DM_VERSION >= 513 && DM_BUILD >= 1506 world.Profile(PROFILE_START) -#endif log_world("World loaded at [TIME_STAMP("hh:mm:ss", FALSE)]!") diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm index 3de5e39ff4..c13353b7cd 100644 --- a/code/modules/admin/callproc/callproc.dm +++ b/code/modules/admin/callproc/callproc.dm @@ -120,7 +120,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) //adv proc call this, ya nerds /world/proc/WrapAdminProcCall(datum/target, procname, list/arguments) if(target == GLOBAL_PROC) - return call(procname)(arglist(arguments)) + return call(text2path("/proc/[procname]"))(arglist(arguments)) else if(target != world) return call(target, procname)(arglist(arguments)) else diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 702e2071bd..56c778dc85 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -95,7 +95,7 @@ var/new_volume = input(user, "Choose a volume.", "Sound Emitter", sound_volume) as null|num if(isnull(new_volume)) return - new_volume = CLAMP(new_volume, 0, 100) + new_volume = clamp(new_volume, 0, 100) sound_volume = new_volume to_chat(user, "Volume set to [sound_volume]%.") if(href_list["edit_mode"]) @@ -118,7 +118,7 @@ var/new_radius = input(user, "Choose a radius.", "Sound Emitter", sound_volume) as null|num if(isnull(new_radius)) return - new_radius = CLAMP(new_radius, 0, 127) + new_radius = clamp(new_radius, 0, 127) play_radius = new_radius to_chat(user, "Audible radius set to [play_radius].") if(href_list["play"]) diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 7b59e72403..356746ddbc 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -393,7 +393,7 @@ var/nsd = CONFIG_GET(number/note_stale_days) var/nfd = CONFIG_GET(number/note_fresh_days) if (agegate && type == "note" && isnum(nsd) && isnum(nfd) && nsd > nfd) - var/alpha = CLAMP(100 - (age - nfd) * (85 / (nsd - nfd)), 15, 100) + var/alpha = clamp(100 - (age - nfd) * (85 / (nsd - nfd)), 15, 100) if (alpha < 100) if (alpha <= 15) if (skipped) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 62c2dc900c..342f2ca6eb 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2363,7 +2363,7 @@ return var/list/offset = splittext(href_list["offset"],",") - var/number = CLAMP(text2num(href_list["object_count"]), 1, 100) + var/number = clamp(text2num(href_list["object_count"]), 1, 100) var/X = offset.len > 0 ? text2num(offset[1]) : 0 var/Y = offset.len > 1 ? text2num(offset[2]) : 0 var/Z = offset.len > 2 ? text2num(offset[3]) : 0 diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index 83f2839438..869e44e4f5 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -85,7 +85,7 @@ if ("set_charge") var/newcharge = input("New charge (0-[borg.cell.maxcharge]):", borg.name, borg.cell.charge) as num|null if (newcharge) - borg.cell.charge = CLAMP(newcharge, 0, borg.cell.maxcharge) + borg.cell.charge = clamp(newcharge, 0, borg.cell.maxcharge) message_admins("[key_name_admin(user)] set the charge of [ADMIN_LOOKUPFLW(borg)] to [borg.cell.charge].") log_admin("[key_name(user)] set the charge of [key_name(borg)] to [borg.cell.charge].") if ("remove_cell") diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index cbbec40f85..066c38bcba 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -10,7 +10,7 @@ var/freq = input(usr, "What frequency would you like the sound to play at?",, 1) as null|num if(!freq) freq = 1 - vol = CLAMP(vol, 1, 100) + vol = clamp(vol, 1, 100) var/sound/admin_sound = new() admin_sound.file = S diff --git a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 3757aecd02..fbdeea6b84 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -42,7 +42,7 @@ /mob/living/simple_animal/hostile/blob/fire_act(exposed_temperature, exposed_volume) ..() if(exposed_temperature) - adjustFireLoss(CLAMP(0.01 * exposed_temperature, 1, 5)) + adjustFireLoss(clamp(0.01 * exposed_temperature, 1, 5)) else adjustFireLoss(5) diff --git a/code/modules/antagonists/blob/blob/overmind.dm b/code/modules/antagonists/blob/blob/overmind.dm index aed64e4039..02be432045 100644 --- a/code/modules/antagonists/blob/blob/overmind.dm +++ b/code/modules/antagonists/blob/blob/overmind.dm @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) B.hud_used.blobpwrdisplay.maptext = "
[round(blob_core.obj_integrity)]
" /mob/camera/blob/proc/add_points(points) - blob_points = CLAMP(blob_points + points, 0, max_blob_points) + blob_points = clamp(blob_points + points, 0, max_blob_points) hud_used.blobpwrdisplay.maptext = "
[round(blob_points)]
" /mob/camera/blob/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm index 444b10684b..5717dc557d 100644 --- a/code/modules/antagonists/blob/blob/theblob.dm +++ b/code/modules/antagonists/blob/blob/theblob.dm @@ -77,7 +77,7 @@ /obj/structure/blob/CanAStarPass(ID, dir, caller) . = 0 - if(ismovableatom(caller)) + if(ismovable(caller)) var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSBLOB) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index efccb5591e..3bfc76322d 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -39,7 +39,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/antagonist/bloodsucker/proc/AddBloodVolume(value) - owner.current.blood_volume = CLAMP(owner.current.blood_volume + value, 0, max_blood_volume) + owner.current.blood_volume = clamp(owner.current.blood_volume + value, 0, max_blood_volume) update_hud() /datum/antagonist/bloodsucker/proc/HandleFeeding(mob/living/carbon/target, mult=1) @@ -112,7 +112,7 @@ CheckVampOrgans() // Heart, Eyes if(check_limbs(costMult)) return TRUE - + // BRUTE: Always Heal var/bruteheal = min(C.getBruteLoss(), actual_regen) var/toxinheal = min(C.getToxLoss(), actual_regen) @@ -121,7 +121,7 @@ if(mult == 0) return TRUE if(owner.current.stat >= UNCONSCIOUS) //Faster regeneration while unconcious, so you dont have to wait all day - mult *= 2 + mult *= 2 // We have damage. Let's heal (one time) C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body. C.adjustFireLoss(-fireheal * mult, forced = TRUE) @@ -129,7 +129,7 @@ //C.heal_overall_damage(bruteheal * mult, fireheal * mult) // REMOVED: We need to FORCE this, because otherwise, vamps won't heal EVER. Swapped to above. AddBloodVolume((bruteheal * -0.5 + fireheal * -1 + toxinheal * -0.2) / mult * costMult) // Costs blood to heal return TRUE // Healed! Done for this tick. - + /datum/antagonist/bloodsucker/proc/check_limbs(costMult) @@ -137,7 +137,7 @@ var/mob/living/carbon/C = owner.current var/list/missing = C.get_missing_limbs() if(missing.len && C.blood_volume < limb_regen_cost + 5) - return FALSE + return FALSE for(var/targetLimbZone in missing) // 1) Find ONE Limb and regenerate it. C.regenerate_limb(targetLimbZone, FALSE) // regenerate_limbs() <--- If you want to EXCLUDE certain parts, do it like this ----> regenerate_limbs(0, list("head")) AddBloodVolume(50) @@ -183,7 +183,7 @@ owner.current.blur_eyes(8 - 8 * (owner.current.blood_volume / BLOOD_VOLUME_BAD)) // Nutrition owner.current.nutrition = clamp(owner.current.blood_volume, 545, 0) //The amount of blood is how full we are. - //A bit higher regeneration based on blood volume + //A bit higher regeneration based on blood volume if(owner.current.blood_volume < 700) additional_regen = 0.4 else if(owner.current.blood_volume < BLOOD_VOLUME_NORMAL) @@ -369,8 +369,8 @@ //Puke blood only if puke_blood is true, and loose some blood, else just puke normally. if(puke_blood) C.blood_volume = max(0, C.blood_volume - foodInGut * 2) - C.vomit(foodInGut * 4, foodInGut * 2, 0) - else + C.vomit(foodInGut * 4, foodInGut * 2, 0) + else C.vomit(foodInGut * 4, FALSE, 0) C.Stun(30) //C.Dizzy(50) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_objectives.dm b/code/modules/antagonists/bloodsucker/bloodsucker_objectives.dm index 0c80ce0dee..7043c2f429 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_objectives.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_objectives.dm @@ -87,7 +87,7 @@ // Heads? if (target_role == "HEAD") target_amount = rand(1, round(SSticker.mode.num_players() / 20)) - target_amount = CLAMP(target_amount,1,3) + target_amount = clamp(target_amount,1,3) // Department? else switch(target_role) @@ -100,7 +100,7 @@ if("Quartermaster") department_string = "Cargo" target_amount = rand(round(SSticker.mode.num_players() / 20), round(SSticker.mode.num_players() / 10)) - target_amount = CLAMP(target_amount, 2, 4) + target_amount = clamp(target_amount, 2, 4) ..() // EXPLANATION diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm index f68191d6d7..dd7e835d3a 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm @@ -63,7 +63,7 @@ // Find Animals in Area /* if(rand(0,2) == 0) var/mobCount = 0 - var/mobMax = CLAMP(area_turfs.len / 25, 1, 4) + var/mobMax = clamp(area_turfs.len / 25, 1, 4) for (var/turf/T in area_turfs) if(!T) continue var/mob/living/simple_animal/SA = locate() in T diff --git a/code/modules/antagonists/bloodsucker/powers/fortitude.dm b/code/modules/antagonists/bloodsucker/powers/fortitude.dm index a58034df0d..76f3cc77a4 100644 --- a/code/modules/antagonists/bloodsucker/powers/fortitude.dm +++ b/code/modules/antagonists/bloodsucker/powers/fortitude.dm @@ -3,7 +3,7 @@ /datum/action/bloodsucker/fortitude - name = "Fortitude"//"Cellular Emporium" + name = "Fortitude" desc = "Withstand egregious physical wounds and walk away from attacks that would stun, pierce, and dismember lesser beings. You cannot run while active." button_icon_state = "power_fortitude" bloodcost = 30 @@ -11,28 +11,27 @@ bloodsucker_can_buy = TRUE amToggle = TRUE warn_constant_cost = TRUE + var/was_running - var/this_resist // So we can raise and lower your brute resist based on what your level_current WAS. + var/fortitude_resist // So we can raise and lower your brute resist based on what your level_current WAS. /datum/action/bloodsucker/fortitude/ActivatePower() - var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + var/datum/antagonist/bloodsucker/B = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) var/mob/living/user = owner to_chat(user, "Your flesh, skin, and muscles become as steel.") // Traits & Effects ADD_TRAIT(user, TRAIT_PIERCEIMMUNE, "fortitude") ADD_TRAIT(user, TRAIT_NODISMEMBER, "fortitude") ADD_TRAIT(user, TRAIT_STUNIMMUNE, "fortitude") - ADD_TRAIT(user, TRAIT_NORUNNING, "fortitude") if(ishuman(owner)) var/mob/living/carbon/human/H = owner - this_resist = max(0.3, 0.7 - level_current * 0.1) - H.physiology.brute_mod *= this_resist//0.5 - H.physiology.burn_mod *= this_resist//0.5 - // Stop Running (Taken from /datum/quirk/nyctophobia in negative.dm) - var/was_running = (user.m_intent == MOVE_INTENT_RUN) + fortitude_resist = max(0.3, 0.7 - level_current * 0.1) + H.physiology.brute_mod *= fortitude_resist + H.physiology.burn_mod *= fortitude_resist + was_running = (user.m_intent == MOVE_INTENT_RUN) if(was_running) user.toggle_move_intent() - while(bloodsuckerdatum && ContinueActive(user) || user.m_intent == MOVE_INTENT_RUN) + while(B && ContinueActive(user) || user.m_intent == MOVE_INTENT_RUN) if(istype(user.buckled, /obj/vehicle)) //We dont want people using fortitude being able to use vehicles var/obj/vehicle/V = user.buckled var/datum/component/riding/VRD = V.GetComponent(/datum/component/riding) @@ -44,20 +43,21 @@ to_chat(user, "You fall off the [V], your weight making you too heavy to be supported by it.") // Pay Blood Toll (if awake) if(user.stat == CONSCIOUS) - bloodsuckerdatum.AddBloodVolume(-0.5) // Used to be 0.3 blood per 2 seconds, but we're making it more expensive to keep on. + B.AddBloodVolume(-0.5) sleep(20) // Check every few ticks that we haven't disabled this power // Return to Running (if you were before) - if(was_running && user.m_intent != MOVE_INTENT_RUN) - user.toggle_move_intent() - + /datum/action/bloodsucker/fortitude/DeactivatePower(mob/living/user = owner, mob/living/target) ..() // Restore Traits & Effects REMOVE_TRAIT(user, TRAIT_PIERCEIMMUNE, "fortitude") REMOVE_TRAIT(user, TRAIT_NODISMEMBER, "fortitude") REMOVE_TRAIT(user, TRAIT_STUNIMMUNE, "fortitude") - REMOVE_TRAIT(user, TRAIT_NORUNNING, "fortitude") - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - H.physiology.brute_mod /= this_resist//0.5 - H.physiology.burn_mod /= this_resist//0.5 + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.physiology.brute_mod /= fortitude_resist + H.physiology.burn_mod /= fortitude_resist + if(was_running && user.m_intent == MOVE_INTENT_WALK) + user.toggle_move_intent() + diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm index f6dfc8ba72..db7868fa8a 100644 --- a/code/modules/antagonists/bloodsucker/powers/lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm @@ -1,88 +1,46 @@ -// Level 1: Grapple level 2 -// Level 2: Grapple 3 from Behind -// Level 3: Grapple 3 from Shadows -/datum/action/bloodsucker/targeted/lunge + + +/datum/action/bloodsucker/lunge name = "Predatory Lunge" - desc = "Spring at your target and aggressively grapple them without warning. Attacks from concealment or the rear may even knock them down." + desc = "Prepare the strenght to grapple your prey." button_icon_state = "power_lunge" bloodcost = 10 - cooldown = 120 - target_range = 3 - power_activates_immediately = TRUE - message_Trigger = "Whom will you ensnare within your grasp?" - must_be_capacitated = TRUE + cooldown = 30 bloodsucker_can_buy = TRUE + warn_constant_cost = TRUE + amToggle = TRUE + var/leap_skill_mod = 5 -/datum/action/bloodsucker/targeted/lunge/CheckCanUse(display_error) - if(!..(display_error))// DEFAULT CHECKS - return FALSE - // Being Grabbed - if(owner.pulledby && owner.pulledby.grab_state >= GRAB_AGGRESSIVE) - if(display_error) - to_chat(owner, "You're being grabbed!") - return FALSE - if(!owner.has_gravity(owner.loc))//TODO figure out how to check if theyre able to move while in nograv - if(display_error) - to_chat(owner, "You cant lunge while floating!") - return FALSE - return TRUE +/datum/action/bloodsucker/lunge/New() + . = ..() + -/datum/action/bloodsucker/targeted/lunge/CheckValidTarget(atom/A) - return iscarbon(A) +/datum/action/bloodsucker/lunge/Destroy() + . = ..() + UnregisterSignal(owner, COMSIG_CARBON_TACKLED) -/datum/action/bloodsucker/targeted/lunge/CheckCanTarget(atom/A, display_error) - // Check: Self - if(target == owner) - return FALSE - // Check: Range - //if (!(target in view(target_range, get_turf(owner)))) - // if (display_error) - // to_chat(owner, "Your victim is too far away.") - // return FALSE - // DEFAULT CHECKS (Distance) - if(!..()) - return FALSE - // Check: Turf - var/mob/living/L = A - if(!isturf(L.loc)) - return FALSE - return TRUE +/datum/action/bloodsucker/lunge/ActivatePower() + var/mob/living/carbon/user = owner + var/datum/antagonist/bloodsucker/B = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + var/datum/component/tackler/T = user.LoadComponent(/datum/component/tackler) + T.stamina_cost = 50 + T.base_knockdown = 3 SECONDS + T.range = 4 + T.speed = 0.8 + T.skill_mod = 5 //Monstrous tackling + T.min_distance = 2 + active = TRUE + user.toggle_throw_mode() + RegisterSignal(user, COMSIG_CARBON_TACKLED, .proc/DelayedDeactivatePower) + while(B && ContinueActive(user)) + B.AddBloodVolume(-0.1) + sleep(5) -/datum/action/bloodsucker/targeted/lunge/FireTargetedPower(atom/A) - // set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done. - var/mob/living/carbon/target = A - var/turf/T = get_turf(target) - var/mob/living/L = owner - // Clear Vars - owner.pulling = null - // Will we Knock them Down? - var/do_knockdown = !is_A_facing_B(target,owner) || owner.alpha <= 0 || istype(owner.loc, /obj/structure/closet) - // CAUSES: Target has their back to me, I'm invisible, or I'm in a Closet - // Step One: Heatseek toward Target's Turf - addtimer(CALLBACK(GLOBAL_PROC, .proc/_walk, owner, 0), 2 SECONDS) - target.playsound_local(get_turf(owner), 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // target-only telegraphing - owner.playsound_local(owner, 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // audio feedback to the user - if(do_mob(owner, owner, 7, TRUE, TRUE)) - walk_towards(owner, T, 0.1, 10) // yes i know i shouldn't use this but i don't know how to work in anything better - if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(L, MOBILITY_STAND)) - var/send_dir = get_dir(owner, T) - new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) - owner.spin(10) - // Step Two: Check if I'm at/adjectent to Target's CURRENT turf (not original...that was just a destination) - for(var/i in 1 to 6) - if (target.Adjacent(owner)) - // LEVEL 2: If behind target, mute or unconscious! - if(do_knockdown) // && level_current >= 1) - target.Knockdown(15 + 10 * level_current,1) - target.adjustStaminaLoss(40 + 10 * level_current) - // Cancel Walk (we were close enough to contact them) - walk(owner, 0) - target.Stun(10,1) //Without this the victim can just walk away - target.grabbedby(owner) // Taken from mutations.dm under changelings - target.grippedby(owner, instant = TRUE) //instant aggro grab - break - sleep(3) +//Without this, the leap component would get removed too early, causing the normal crash into effects. +/datum/action/bloodsucker/lunge/proc/DelayedDeactivatePower() + addtimer(CALLBACK(src, .proc/DeactivatePower), 1 SECONDS, TIMER_UNIQUE) -/datum/action/bloodsucker/targeted/lunge/DeactivatePower(mob/living/user = owner, mob/living/target) - ..() // activate = FALSE - user.update_mobility() +/datum/action/bloodsucker/lunge/DeactivatePower(mob/living/user = owner) + . = ..() + qdel(user.GetComponent(/datum/component/tackler)) + UnregisterSignal(user, COMSIG_CARBON_TACKLED) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 967715ce2f..336d21c974 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -430,7 +430,7 @@ objectives += destroy_objective else if(prob(70)) - var/datum/objective/assassinate/kill_objective = new + var/datum/objective/assassinate/once/kill_objective = new kill_objective.owner = owner if(team_mode) //No backstabbing while in a team kill_objective.find_target_by_role(role = ROLE_CHANGELING, role_type = 1, invert = 1) diff --git a/code/modules/antagonists/changeling/powers/humanform.dm b/code/modules/antagonists/changeling/powers/humanform.dm index a6f7b0b6e9..91119e1c06 100644 --- a/code/modules/antagonists/changeling/powers/humanform.dm +++ b/code/modules/antagonists/changeling/powers/humanform.dm @@ -27,7 +27,7 @@ changeling.purchasedpowers -= src - var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS) + var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) changeling_transform(newmob, chosen_prof) return TRUE diff --git a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm index 05f11294de..b0259c460e 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm @@ -239,7 +239,7 @@ if(!do_after(user, repair_values["healing_for_cycle"] * fabricator.speed_multiplier, target = src, \ extra_checks = CALLBACK(fabricator, /obj/item/clockwork/replica_fabricator.proc/fabricator_repair_checks, repair_values, src, user, TRUE))) break - obj_integrity = CLAMP(obj_integrity + repair_values["healing_for_cycle"], 0, max_integrity) + obj_integrity = clamp(obj_integrity + repair_values["healing_for_cycle"], 0, max_integrity) adjust_clockwork_power(-repair_values["power_required"]) playsound(src, 'sound/machines/click.ogg', 50, 1) diff --git a/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm index f927fc237d..628add0cb3 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm @@ -10,7 +10,7 @@ if(GLOB.ratvar_awakens) current_power = GLOB.clockwork_power = INFINITY else - current_power = GLOB.clockwork_power = CLAMP(GLOB.clockwork_power + amount, 0, MAX_CLOCKWORK_POWER) + current_power = GLOB.clockwork_power = clamp(GLOB.clockwork_power + amount, 0, MAX_CLOCKWORK_POWER) for(var/obj/effect/clockwork/sigil/transmission/T in GLOB.all_clockwork_objects) T.update_icon() var/unlock_message diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index c7c9c42ee9..de2e85a501 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -211,7 +211,7 @@ var/mob/living/carbon/C = L C.stuttering = max(8, C.stuttering) C.drowsyness = max(8, C.drowsyness) - C.confused += CLAMP(16 - C.confused, 0, 8) + C.confused += clamp(16 - C.confused, 0, 8) C.apply_status_effect(STATUS_EFFECT_BELLIGERENT) L.adjustFireLoss(15) ..() diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index 4a10862e28..234f0445e0 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -59,7 +59,7 @@ if(issilicon(L)) L.DefaultCombatKnockdown(100) else if(iscultist(L)) - L.confused += CLAMP(10 - L.confused, 0, 5) // Spearthrow now confuses enemy cultists + just deals extra damage / sets on fire instead of hardstunning + damage + L.confused += clamp(10 - L.confused, 0, 5) // Spearthrow now confuses enemy cultists + just deals extra damage / sets on fire instead of hardstunning + damage to_chat(L, "[src] crashes into you with burning force, sending you reeling!") L.adjust_fire_stacks(2) L.DefaultCombatKnockdown(1) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index 0fd6c8a8dc..ffe9ecfa80 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -111,7 +111,7 @@ var/mob/living/L = M.current if(ishuman(L) && L.stat != DEAD) human_servants++ - construct_limit = round(CLAMP((human_servants / 4), 1, 3)) //1 per 4 human servants, maximum of 3 + construct_limit = round(clamp((human_servants / 4), 1, 3)) //1 per 4 human servants, maximum of 3 //Summon Neovgre: Summon a very powerful combat mech that explodes when destroyed for massive damage. /datum/clockwork_scripture/create_object/summon_arbiter diff --git a/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm b/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm index 9b4ac8085c..5fbaf9fd57 100644 --- a/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm +++ b/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm @@ -63,4 +63,4 @@ break if(!M) M = H.apply_status_effect(STATUS_EFFECT_MANIAMOTOR, src) - M.severity = CLAMP(M.severity + ((11 - get_dist(src, H)) * efficiency * efficiency), 0, MAX_MANIA_SEVERITY) + M.severity = clamp(M.severity + ((11 - get_dist(src, H)) * efficiency * efficiency), 0, MAX_MANIA_SEVERITY) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index d64e99d206..28d1a66e00 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -454,16 +454,16 @@ S.emp_act(EMP_HEAVY) else if(iscarbon(target)) var/mob/living/carbon/C = L - C.silent += CLAMP(12 - C.silent, 0, 6) - C.stuttering += CLAMP(30 - C.stuttering, 0, 15) - C.cultslurring += CLAMP(30 - C.cultslurring, 0, 15) + C.silent += clamp(12 - C.silent, 0, 6) + C.stuttering += clamp(30 - C.stuttering, 0, 15) + C.cultslurring += clamp(30 - C.cultslurring, 0, 15) C.Jitter(15) else // cultstun no longer hardstuns + damages hostile cultists, instead debuffs them hard + deals some damage; debuffs for a bit longer since they don't add the clockie belligerent debuff if(iscarbon(target)) var/mob/living/carbon/C = L C.stuttering = max(10, C.stuttering) C.drowsyness = max(10, C.drowsyness) - C.confused += CLAMP(20 - C.confused, 0, 10) + C.confused += clamp(20 - C.confused, 0, 10) L.adjustBruteLoss(15) to_chat(user, "In an brilliant flash of red, [L] [iscultist(L) ? "writhes in pain" : "falls to the ground!"]") uses-- diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b05aa7f769..fcb57a5a2e 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -731,7 +731,7 @@ if(!L.anti_magic_check()) if(is_servant_of_ratvar(L)) to_chat(L, "\"Kneel for me, scum\"") - L.confused += CLAMP(10 - L.confused, 0, 5) //confuses and lightly knockdowns + damages hostile cultists instead of hardstunning like before + L.confused += clamp(10 - L.confused, 0, 5) //confuses and lightly knockdowns + damages hostile cultists instead of hardstunning like before L.DefaultCombatKnockdown(15) L.adjustBruteLoss(10) else diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index b4f896fa08..5552efef1f 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -358,7 +358,7 @@ if(NUKEUI_AWAIT_TIMER) var/number_value = text2num(numeric_input) if(number_value) - timer_set = CLAMP(number_value, minimum_timer_set, maximum_timer_set) + timer_set = clamp(number_value, minimum_timer_set, maximum_timer_set) playsound(src, 'sound/machines/nuke/general_beep.ogg', 50, FALSE) set_safety() . = TRUE diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 0fbc5cf71c..8a0645f311 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -229,6 +229,7 @@ var/flashcd = 20 var/overheat = 0 var/obj/item/organ/cyberimp/arm/flash/I = null + var/active_light_strength = 7 /obj/item/assembly/flash/armimplant/burn_out() if(I && I.owner) @@ -248,6 +249,12 @@ update_icon(1) return TRUE +/obj/item/assembly/flash/armimplant/Moved(oldLoc, dir) + . = ..() + if(!ismob(loc)) + set_light(0) + else + set_light(7) /obj/item/assembly/flash/armimplant/proc/cooldown() overheat = FALSE diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index ebe894138d..59ef15b4cf 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -282,7 +282,7 @@ var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - air.temperature = CLAMP(((air.temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB,INFINITY) + air.temperature = clamp(((air.temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB,INFINITY) return REACTING /datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires N2O as a catalyst. diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 9238b8602b..2dc0afac26 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -159,13 +159,13 @@ pump_direction = 1 if("set_input_pressure" in signal.data) - input_pressure_min = CLAMP(text2num(signal.data["set_input_pressure"]),0,ONE_ATMOSPHERE*50) + input_pressure_min = clamp(text2num(signal.data["set_input_pressure"]),0,ONE_ATMOSPHERE*50) if("set_output_pressure" in signal.data) - output_pressure_max = CLAMP(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) + output_pressure_max = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) if("set_external_pressure" in signal.data) - external_pressure_bound = CLAMP(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) + external_pressure_bound = clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) if("status" in signal.data) spawn(2) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 02eb95acab..051dc965ad 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -122,7 +122,7 @@ Passive gate is similar to the regular pump except: pressure = text2num(pressure) . = TRUE if(.) - target_pressure = CLAMP(pressure, 0, MAX_OUTPUT_PRESSURE) + target_pressure = clamp(pressure, 0, MAX_OUTPUT_PRESSURE) investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() @@ -144,7 +144,7 @@ Passive gate is similar to the regular pump except: on = !on if("set_output_pressure" in signal.data) - target_pressure = CLAMP(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) + target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) if(on != old_on) investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 9e49953df5..0e41f78e20 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -145,7 +145,7 @@ pressure = text2num(pressure) . = TRUE if(.) - target_pressure = CLAMP(pressure, 0, MAX_OUTPUT_PRESSURE) + target_pressure = clamp(pressure, 0, MAX_OUTPUT_PRESSURE) investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() @@ -167,7 +167,7 @@ on = !on if("set_output_pressure" in signal.data) - target_pressure = CLAMP(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) + target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) if(on != old_on) investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/relief_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/relief_valve.dm index bc58ef158f..7bdd22cbd1 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/relief_valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/relief_valve.dm @@ -91,7 +91,7 @@ pressure = text2num(pressure) . = TRUE if(.) - open_pressure = CLAMP(pressure, close_pressure, 50*ONE_ATMOSPHERE) + open_pressure = clamp(pressure, close_pressure, 50*ONE_ATMOSPHERE) investigate_log("open pressure was set to [open_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) if("close_pressure") var/pressure = params["close_pressure"] @@ -106,6 +106,6 @@ pressure = text2num(pressure) . = TRUE if(.) - close_pressure = CLAMP(pressure, 0, open_pressure) + close_pressure = clamp(pressure, 0, open_pressure) investigate_log("close pressure was set to [close_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 864e3eef5e..1005f72afe 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -135,7 +135,7 @@ rate = text2num(rate) . = TRUE if(.) - transfer_rate = CLAMP(rate, 0, MAX_TRANSFER_RATE) + transfer_rate = clamp(rate, 0, MAX_TRANSFER_RATE) investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() @@ -153,7 +153,7 @@ if("set_transfer_rate" in signal.data) var/datum/gas_mixture/air1 = airs[1] - transfer_rate = CLAMP(text2num(signal.data["set_transfer_rate"]),0,air1.volume) + transfer_rate = clamp(text2num(signal.data["set_transfer_rate"]),0,air1.volume) if(on != old_on) investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 1099020662..78258dd10a 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -175,7 +175,7 @@ rate = text2num(rate) . = TRUE if(.) - transfer_rate = CLAMP(rate, 0, MAX_TRANSFER_RATE) + transfer_rate = clamp(rate, 0, MAX_TRANSFER_RATE) investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) if("filter") filter_type = null diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 5b929452fe..dcf0d09bee 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -164,7 +164,7 @@ pressure = text2num(pressure) . = TRUE if(.) - target_pressure = CLAMP(pressure, 0, MAX_OUTPUT_PRESSURE) + target_pressure = clamp(pressure, 0, MAX_OUTPUT_PRESSURE) investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) if("node1") var/value = text2num(params["concentration"]) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 87ab4fa643..05720583f9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -123,7 +123,7 @@ if("set_volume_rate" in signal.data) var/number = text2num(signal.data["set_volume_rate"]) var/datum/gas_mixture/air_contents = airs[1] - volume_rate = CLAMP(number, 0, air_contents.volume) + volume_rate = clamp(number, 0, air_contents.volume) if("status" in signal.data) spawn(2) @@ -172,7 +172,7 @@ rate = text2num(rate) . = TRUE if(.) - volume_rate = CLAMP(rate, 0, MAX_TRANSFER_RATE) + volume_rate = clamp(rate, 0, MAX_TRANSFER_RATE) investigate_log("was set to [volume_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm b/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm index 4b6a4a4c10..1d8b875528 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm @@ -92,7 +92,7 @@ pressure = text2num(pressure) . = TRUE if(.) - open_pressure = CLAMP(pressure, close_pressure, 50*ONE_ATMOSPHERE) + open_pressure = clamp(pressure, close_pressure, 50*ONE_ATMOSPHERE) investigate_log("open pressure was set to [open_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) if("close_pressure") var/pressure = params["close_pressure"] @@ -107,6 +107,6 @@ pressure = text2num(pressure) . = TRUE if(.) - close_pressure = CLAMP(pressure, 0, open_pressure) + close_pressure = clamp(pressure, 0, open_pressure) investigate_log("close pressure was set to [close_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 877826c1c1..f98f628cab 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -170,7 +170,7 @@ target = text2num(target) . = TRUE if(.) - target_temperature = CLAMP(target, min_temperature, max_temperature) + target_temperature = clamp(target, min_temperature, max_temperature) investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index f2f2329661..9788bcb4ee 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -210,13 +210,13 @@ if("set_internal_pressure" in signal.data) var/old_pressure = internal_pressure_bound - internal_pressure_bound = CLAMP(text2num(signal.data["set_internal_pressure"]),0,ONE_ATMOSPHERE*50) + internal_pressure_bound = clamp(text2num(signal.data["set_internal_pressure"]),0,ONE_ATMOSPHERE*50) if(old_pressure != internal_pressure_bound) investigate_log(" internal pressure was set to [internal_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) if("set_external_pressure" in signal.data) var/old_pressure = external_pressure_bound - external_pressure_bound = CLAMP(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) + external_pressure_bound = clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) if(old_pressure != external_pressure_bound) investigate_log(" external pressure was set to [external_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) @@ -227,10 +227,10 @@ internal_pressure_bound = 0 if("adjust_internal_pressure" in signal.data) - internal_pressure_bound = CLAMP(internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]),0,ONE_ATMOSPHERE*50) + internal_pressure_bound = clamp(internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]),0,ONE_ATMOSPHERE*50) if("adjust_external_pressure" in signal.data) - external_pressure_bound = CLAMP(external_pressure_bound + text2num(signal.data["adjust_external_pressure"]),0,ONE_ATMOSPHERE*50) + external_pressure_bound = clamp(external_pressure_bound + text2num(signal.data["adjust_external_pressure"]),0,ONE_ATMOSPHERE*50) if("init" in signal.data) name = signal.data["init"] diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index b98098584f..33092f5354 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -128,7 +128,7 @@ if(initialize_directions & dir) return ..() if((NORTH|EAST) & dir) - user.ventcrawl_layer = CLAMP(user.ventcrawl_layer + 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + user.ventcrawl_layer = clamp(user.ventcrawl_layer + 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) if((SOUTH|WEST) & dir) - user.ventcrawl_layer = CLAMP(user.ventcrawl_layer - 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + user.ventcrawl_layer = clamp(user.ventcrawl_layer - 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) to_chat(user, "You align yourself with the [user.ventcrawl_layer]\th output.") diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 0b26cfc2f0..a41bdee3b6 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -390,7 +390,7 @@ pressure = text2num(pressure) . = TRUE if(.) - release_pressure = CLAMP(round(pressure), can_min_release_pressure, can_max_release_pressure) + release_pressure = clamp(round(pressure), can_min_release_pressure, can_max_release_pressure) investigate_log("was set to [release_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS) if("valve") var/logmsg @@ -434,7 +434,7 @@ var/N = text2num(user_input) if(!N) return - timer_set = CLAMP(N,minimum_timer_set,maximum_timer_set) + timer_set = clamp(N,minimum_timer_set,maximum_timer_set) log_admin("[key_name(usr)] has activated a prototype valve timer") . = TRUE if("toggle_timer") diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 3603e46490..18e4da621a 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -150,7 +150,7 @@ pressure = text2num(pressure) . = TRUE if(.) - pump.target_pressure = CLAMP(round(pressure), PUMP_MIN_PRESSURE, PUMP_MAX_PRESSURE) + pump.target_pressure = clamp(round(pressure), PUMP_MIN_PRESSURE, PUMP_MAX_PRESSURE) investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS) if("eject") if(holding) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 0d96c125a1..f841ae20ca 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -487,8 +487,7 @@ suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf toggle_helmet = FALSE // see the whites of their eyes shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat - id = /obj/item/card/id/syndicate + gloves = /obj/item/clothing/gloves/tackler/combat belt = /obj/item/gun/ballistic/automatic/pistol/deagle/ctf l_pocket = /obj/item/ammo_box/magazine/recharge/ctf r_pocket = /obj/item/ammo_box/magazine/recharge/ctf diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 5dc11ed100..c11267a5f3 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -490,7 +490,7 @@ glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba head = /obj/item/clothing/head/centhat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat shoes = /obj/item/clothing/shoes/combat/swat r_pocket = /obj/item/lighter id = /obj/item/card/id @@ -507,7 +507,7 @@ uniform = /obj/item/clothing/under/rank/security/officer suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat mask = /obj/item/clothing/mask/gas/sechailer/swat head = /obj/item/clothing/head/helmet/swat/nanotrasen back = /obj/item/storage/backpack/security diff --git a/code/modules/buildmode/effects/line.dm b/code/modules/buildmode/effects/line.dm index 60191de934..8bba27ac88 100644 --- a/code/modules/buildmode/effects/line.dm +++ b/code/modules/buildmode/effects/line.dm @@ -12,7 +12,7 @@ var/matrix/mat = matrix() mat.Translate(0, 16) mat.Scale(1, sqrt((x_offset * x_offset) + (y_offset * y_offset)) / 32) - mat.Turn(90 - ATAN2(x_offset, y_offset)) // So... You pass coords in order x,y to this version of atan2. It should be called acsc2. + mat.Turn(90 - arctan(x_offset, y_offset)) // So... You pass coords in order x,y to this version of atan2. It should be called acsc2. mat.Translate(atom_a.pixel_x, atom_a.pixel_y) transform = mat diff --git a/code/modules/buildmode/submodes/copy.dm b/code/modules/buildmode/submodes/copy.dm index ba415c50fc..4aed8ac700 100644 --- a/code/modules/buildmode/submodes/copy.dm +++ b/code/modules/buildmode/submodes/copy.dm @@ -23,6 +23,6 @@ DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T) log_admin("Build Mode: [key_name(c)] copied [stored] to [AREACOORD(object)]") else if(right_click) - if(ismovableatom(object)) // No copying turfs for now. + if(ismovable(object)) // No copying turfs for now. to_chat(c, "[object] set as template.") stored = object diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm index 4db7c68efd..8dba7f69da 100644 --- a/code/modules/cargo/exports/gear.dm +++ b/code/modules/cargo/exports/gear.dm @@ -309,7 +309,7 @@ /datum/export/gear/combatgloves cost = 80 unit_name = "combat gloves" - export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/clothing/gloves/krav_maga) + export_types = list(/obj/item/clothing/gloves/tackler/combat, /obj/item/clothing/gloves/tackler/dolphin, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/clothing/gloves/krav_maga) include_subtypes = TRUE /datum/export/gear/bonegloves @@ -797,4 +797,4 @@ datum/export/gear/glasses //glasses are not worth selling export_types = list(/obj/item/clothing/head/chameleon, /obj/item/clothing/mask/chameleon, /obj/item/clothing/under/chameleon, /obj/item/clothing/suit/chameleon, /obj/item/clothing/glasses/chameleon,\ /obj/item/clothing/gloves/chameleon, /obj/item/clothing/head/chameleon, /obj/item/clothing/shoes/chameleon, /obj/item/storage/backpack/chameleon, \ /obj/item/storage/belt/chameleon, /obj/item/radio/headset/chameleon, /obj/item/pda/chameleon, /obj/item/stamp/chameleon, /obj/item/clothing/neck/cloak/chameleon) - include_subtypes = TRUE \ No newline at end of file + include_subtypes = TRUE diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index d832200201..501b1426ae 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -175,7 +175,7 @@ /obj/item/clothing/suit/armor/vest/russian, /obj/item/clothing/head/helmet/rus_helmet, /obj/item/clothing/shoes/russian, - /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/under/syndicate/rus_army, /obj/item/clothing/under/costume/soviet, /obj/item/clothing/mask/russian_balaclava, @@ -201,8 +201,8 @@ /obj/item/clothing/mask/gas/sechailer/swat, /obj/item/storage/belt/military/assault, /obj/item/storage/belt/military/assault, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat) + /obj/item/clothing/gloves/tackler/combat/insulated, + /obj/item/clothing/gloves/tackler/combat/insulated) crate_name = "swat crate" /datum/supply_pack/security/armory/wt550 diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 97b7636f58..22cb518926 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -205,7 +205,7 @@ desc = "Need some meat? With this do-it-yourself kit you'll be swimming in it! Contains a monkey cube, an IV drip, and some cryoxadone!" cost = 2150 contraband = TRUE - contains = list(/obj/item/reagent_containers/food/snacks/monkeycube, + contains = list(/obj/item/reagent_containers/food/snacks/cube/monkey, /obj/item/restraints/handcuffs/cable, /obj/machinery/iv_drip, /obj/item/reagent_containers/glass/beaker/cryoxadone, diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index aea7b95742..ee750b8df7 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -91,8 +91,8 @@ /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/head/helmet/alt, /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/tackler/combat/insulated, + /obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas) crate_name = "surplus russian clothing" @@ -109,7 +109,7 @@ /obj/item/clothing/head/ushanka, /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/tackler/combat/insulated, /obj/item/clothing/mask/gas, /obj/item/gun/ballistic/shotgun/boltaction, /obj/item/ammo_box/a762) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 74885d0ac0..989ccaf450 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -888,8 +888,8 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/viewscale = getviewsize(view) var/x = viewscale[1] var/y = viewscale[2] - x = CLAMP(x+change, min, max) - y = CLAMP(y+change, min,max) + x = clamp(x+change, min, max) + y = clamp(y+change, min,max) change_view("[x]x[y]") /client/proc/change_view(new_size) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0bc59e4877..d413be56b9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -208,6 +208,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/show_mismatched_markings = FALSE //determines whether or not the markings lists should show markings that don't match the currently selected species. Intentionally left unsaved. + var/no_tetris_storage = FALSE + /datum/preferences/New(client/C) parent = C @@ -863,6 +865,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
" dat += "Auto stand: [autostand ? "Enabled" : "Disabled"]
" dat += "Auto OOC: [auto_ooc ? "Enabled" : "Disabled"]
" + dat += "Force Slot Storage HUD: [no_tetris_storage ? "Enabled" : "Disabled"]
" dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" if (user && user.client && !user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" @@ -1839,7 +1842,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("s_tone") var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones - if(CONFIG_GET(number/allow_custom_skintones)) + if(CONFIG_GET(flag/allow_custom_skintones)) choices += "custom" var/new_s_tone = input(user, "Choose your character's skin tone:", "Character Preference") as null|anything in choices if(new_s_tone) @@ -1968,7 +1971,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/max_D = CONFIG_GET(number/penis_max_inches_prefs) var/new_length = input(user, "Penis length in inches:\n([min_D]-[max_D])", "Character Preference") as num|null if(new_length) - features["cock_length"] = CLAMP(round(new_length), min_D, max_D) + features["cock_length"] = clamp(round(new_length), min_D, max_D) if("cock_shape") var/new_shape @@ -2165,7 +2168,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/danger = CONFIG_GET(number/threshold_body_size_slowdown) var/new_body_size = input(user, "Choose your desired sprite size:\n([min*100]%-[max*100]%), Warning: May make your character look distorted[danger > min ? ", and an exponential slowdown will occur for those smaller than [danger*100]%!" : "!"]", "Character Preference", features["body_size"]*100) as num|null if (new_body_size) - new_body_size = CLAMP(new_body_size * 0.01, min, max) + new_body_size = clamp(new_body_size * 0.01, min, max) var/dorfy if(danger > new_body_size) dorfy = alert(user, "The chosen size appears to be smaller than the threshold of [danger*100]%, which will lead to an added exponential slowdown. Are you sure about that?", "Dwarfism Alert", "Yes", "Move it to the threshold", "No") @@ -2206,6 +2209,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) autostand = !autostand if("auto_ooc") auto_ooc = !auto_ooc + if("no_tetris_storage") + no_tetris_storage = !no_tetris_storage if ("screenshake") var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num if (!isnull(desiredshake)) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index ec63064538..b8fa500aec 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -253,7 +253,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["autostand"] >> autostand S["cit_toggles"] >> cit_toggles S["preferred_chaos"] >> preferred_chaos - S["auto_ooc"] >> auto_ooc + S["auto_ooc"] >> auto_ooc + S["no_tetris_storage"] >> no_tetris_storage //try to fix any outdated data if necessary @@ -290,10 +291,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_skin = sanitize_inlist(pda_skin, GLOB.pda_reskins, PDA_SKIN_ALT) screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) - widescreenpref = sanitize_integer(widescreenpref, 0, 1, initial(widescreenpref)) + widescreenpref = sanitize_integer(widescreenpref, 0, 1, initial(widescreenpref)) autostand = sanitize_integer(autostand, 0, 1, initial(autostand)) cit_toggles = sanitize_integer(cit_toggles, 0, 16777215, initial(cit_toggles)) auto_ooc = sanitize_integer(auto_ooc, 0, 1, initial(auto_ooc)) + no_tetris_storage = sanitize_integer(no_tetris_storage, 0, 1, initial(no_tetris_storage)) return 1 @@ -358,6 +360,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["cit_toggles"], cit_toggles) WRITE_FILE(S["preferred_chaos"], preferred_chaos) WRITE_FILE(S["auto_ooc"], auto_ooc) + WRITE_FILE(S["no_tetris_storage"], no_tetris_storage) return 1 @@ -568,11 +571,16 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car hair_color = sanitize_hexcolor(hair_color, 3, 0) facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0) eye_color = sanitize_hexcolor(eye_color, 3, 0) - use_custom_skin_tone = sanitize_integer(use_custom_skin_tone, FALSE, TRUE, initial(use_custom_skin_tone)) - if(use_custom_skin_tone && CONFIG_GET(number/allow_custom_skintones)) + + var/static/allow_custom_skintones + if(isnull(allow_custom_skintones)) + allow_custom_skintones = CONFIG_GET(flag/allow_custom_skintones) + use_custom_skin_tone = allow_custom_skintones ? sanitize_integer(use_custom_skin_tone, FALSE, TRUE, initial(use_custom_skin_tone)) : FALSE + if(use_custom_skin_tone) skin_tone = sanitize_hexcolor(skin_tone, 6, TRUE, "#FFFFFF") else skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones - GLOB.nonstandard_skin_tones, initial(skin_tone)) + horn_color = sanitize_hexcolor(horn_color, 3, FALSE) wing_color = sanitize_hexcolor(wing_color, 3, FALSE, "#FFFFFF") backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag)) @@ -599,7 +607,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/static/size_max if(!size_max) size_max = CONFIG_GET(number/body_size_max) - features["body_size"] = sanitize_integer(features["body_size"], size_min, size_max, RESIZE_DEFAULT_SIZE) + features["body_size"] = sanitize_num_clamp(features["body_size"], size_min, size_max, RESIZE_DEFAULT_SIZE, 0.01) var/static/list/B_sizes if(!B_sizes) diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm new file mode 100644 index 0000000000..ddbeeab7f6 --- /dev/null +++ b/code/modules/clothing/gloves/tacklers.dm @@ -0,0 +1,97 @@ +/obj/item/clothing/gloves/tackler + name = "gripper gloves" + desc = "Special gloves that manipulate the blood vessels in the wearer's hands, granting them the ability to launch headfirst into walls." + icon_state = "tackle" + item_state = "tackle" + transfer_prints = TRUE + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + resistance_flags = NONE + //custom_premium_price = 350 + /// For storing our tackler datum so we can remove it after + var/datum/component/tackler + /// See: [/datum/component/tackler/var/stamina_cost] + var/tackle_stam_cost = 25 + /// See: [/datum/component/tackler/var/base_knockdown] + var/base_knockdown = 1 SECONDS + /// See: [/datum/component/tackler/var/range] + var/tackle_range = 4 + /// See: [/datum/component/tackler/var/min_distance] + var/min_distance = 0 + /// See: [/datum/component/tackler/var/speed] + var/tackle_speed = 1 + /// See: [/datum/component/tackler/var/skill_mod] + var/skill_mod = 1 + +/obj/item/clothing/gloves/tackler/equipped(mob/user, slot) + . = ..() + if(!ishuman(user)) + return + if(slot == ITEM_SLOT_GLOVES) + var/mob/living/carbon/human/H = user + tackler = H.AddComponent(/datum/component/tackler, stamina_cost=tackle_stam_cost, base_knockdown = base_knockdown, range = tackle_range, speed = tackle_speed, skill_mod = skill_mod, min_distance = min_distance) + +/obj/item/clothing/gloves/tackler/dropped(mob/user) + . = ..() + if(tackler) + qdel(tackler) + +/obj/item/clothing/gloves/tackler/dolphin + name = "dolphin gloves" + desc = "Sleek, aerodynamic gripper gloves that are less effective at actually performing takedowns, but more effective at letting the user sail through the hallways and cause accidents." + icon_state = "tackledolphin" + item_state = "tackledolphin" + + tackle_stam_cost = 15 + base_knockdown = 0.5 SECONDS + tackle_range = 5 + tackle_speed = 2 + min_distance = 2 + skill_mod = -2 + +/obj/item/clothing/gloves/tackler/combat + name = "gorilla gloves" + desc = "Premium quality combative gloves, heavily reinforced to give the user an edge in close combat tackles, though they are more taxing to use than normal gripper gloves. Fireproof to boot!" + icon_state = "combat" + item_state = "blackgloves" + + tackle_stam_cost = 35 + base_knockdown = 1.5 SECONDS + tackle_range = 5 + skill_mod = 3 + + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + resistance_flags = NONE + +/obj/item/clothing/gloves/tackler/combat/insulated + name = "guerrilla gloves" + desc = "Superior quality combative gloves, good for performing tackle takedowns as well as absorbing electrical shocks." + siemens_coefficient = 0 + permeability_coefficient = 0.05 + +/obj/item/clothing/gloves/tackler/rocket + name = "rocket gloves" + desc = "The ultimate in high risk, high reward, perfect for when you need to stop a criminal from fifty feet away or die trying. Banned in most Spinward gridiron football and rugby leagues." + icon_state = "tacklerocket" + item_state = "tacklerocket" + + tackle_stam_cost = 50 + base_knockdown = 2 SECONDS + tackle_range = 10 + min_distance = 7 + tackle_speed = 6 + skill_mod = 7 + +/obj/item/clothing/gloves/tackler/offbrand + name = "improvised gripper gloves" + desc = "Ratty looking fingerless gloves wrapped with sticky tape. Beware anyone wearing these, for they clearly have no shame and nothing to lose." + icon_state = "fingerless" + item_state = "fingerless" + + tackle_stam_cost = 30 + base_knockdown = 1.75 SECONDS + min_distance = 2 + skill_mod = -1 diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 48cc92db61..7cd2e9b394 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -3,7 +3,7 @@ uniform = /obj/item/clothing/under/rank/centcom/officer shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/headset_cent/alt /datum/outfit/ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) @@ -69,8 +69,8 @@ id = /obj/item/card/id/ert/Security suit = /obj/item/clothing/suit/space/hardsuit/ert/sec glasses = /obj/item/clothing/glasses/hud/security/sunglasses - back = /obj/item/storage/backpack/security belt = /obj/item/storage/belt/security/full + back = /obj/item/storage/backpack/security backpack_contents = list(/obj/item/storage/box/engineer=1,\ /obj/item/storage/box/handcuffs=1,\ /obj/item/clothing/mask/gas/sechailer=1,\ diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index b1f6e7696d..d692f9c3fb 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -205,7 +205,7 @@ uniform = /obj/item/clothing/under/rank/centcom/commander suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/headset_cent/commander glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba @@ -234,7 +234,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/officer shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated glasses = /obj/item/clothing/glasses/thermal/eyepatch ears = /obj/item/radio/headset/headset_cent/commander mask = /obj/item/clothing/mask/cigarette/cigar/havana @@ -316,7 +316,7 @@ uniform = /obj/item/clothing/under/costume/soviet head = /obj/item/clothing/head/pirate/captain shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/headset_cent glasses = /obj/item/clothing/glasses/thermal/eyepatch suit = /obj/item/clothing/suit/pirate/captain @@ -372,7 +372,7 @@ uniform = /obj/item/clothing/under/color/green suit = /obj/item/clothing/suit/space/hardsuit/deathsquad shoes = /obj/item/clothing/shoes/combat/swat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated mask = /obj/item/clothing/mask/gas/sechailer/swat glasses = /obj/item/clothing/glasses/hud/toggle/thermal back = /obj/item/storage/backpack/security @@ -431,7 +431,7 @@ glasses = /obj/item/clothing/glasses/debug ears = /obj/item/radio/headset/headset_cent/commander mask = /obj/item/clothing/mask/gas/welding/up - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated belt = /obj/item/storage/belt/utility/chief/full l_pocket = /obj/item/gun/magic/wand/resurrection/debug r_pocket = /obj/item/gun/magic/wand/death/debug diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm index 669c03be2c..ff4ef28649 100644 --- a/code/modules/clothing/outfits/vr.dm +++ b/code/modules/clothing/outfits/vr.dm @@ -23,7 +23,7 @@ name = "Syndicate VR Operative - Basic" uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated back = /obj/item/storage/backpack id = /obj/item/card/id/syndicate/locked_banking belt = /obj/item/gun/ballistic/automatic/pistol diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 8a7092d8a6..bc0aaf23f8 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -408,7 +408,6 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl mutantrace_variation = STYLE_DIGITIGRADE - //Wizard hardsuit /obj/item/clothing/head/helmet/space/hardsuit/wizard name = "gem-encrusted hardsuit helmet" @@ -473,6 +472,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" + slowdown = 0.8 allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical @@ -748,63 +748,20 @@ allowed = null 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 var/max_charges = 3 //How many charges total the shielding has + var/current_charges //if null, will default to max_chargs var/recharge_delay = 200 //How long after we've been shot before we can start recharging. 20 seconds here - var/recharge_cooldown = 0 //Time since we've last been shot var/recharge_rate = 1 //How quickly the shield recharges once it starts charging var/shield_state = "shield-old" - var/shield_on = "shield-old" /obj/item/clothing/suit/space/hardsuit/shielded/Initialize() . = ..() if(!allowed) allowed = GLOB.advanced_hardsuit_allowed -/obj/item/clothing/suit/space/hardsuit/shielded/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - if(current_charges > 0) - block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100 - block_return[BLOCK_RETURN_BLOCK_CAPACITY] = (block_return[BLOCK_RETURN_BLOCK_CAPACITY] || 0) + current_charges - return ..() - -/obj/item/clothing/suit/space/hardsuit/shielded/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - recharge_cooldown = world.time + recharge_delay - if(current_charges > 0) - var/datum/effect_system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() - owner.visible_message("[owner]'s shields deflect [attack_text] in a shower of sparks!") - current_charges-- - if(recharge_rate) - START_PROCESSING(SSobj, src) - if(current_charges <= 0) - owner.visible_message("[owner]'s shield overloads!") - shield_state = "broken" - owner.update_inv_wear_suit() - return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL - return BLOCK_NONE - -/obj/item/clothing/suit/space/hardsuit/shielded/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/clothing/suit/space/hardsuit/shielded/process() - if(world.time > recharge_cooldown && current_charges < max_charges) - current_charges = CLAMP((current_charges + recharge_rate), 0, max_charges) - playsound(loc, 'sound/magic/charge.ogg', 50, 1) - if(current_charges == max_charges) - playsound(loc, 'sound/machines/ding.ogg', 50, 1) - STOP_PROCESSING(SSobj, src) - shield_state = "[shield_on]" - if(ishuman(loc)) - var/mob/living/carbon/human/C = loc - C.update_inv_wear_suit() - -/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE) +/obj/item/clothing/suit/space/hardsuit/shielded/ComponentInitialize() . = ..() - if(!isinhands) - var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi' - . += mutable_appearance(file2use, shield_state, MOB_LAYER + 0.01) + AddComponent(/datum/component/shielded, current_charges, max_charges, recharge_delay, recharge_rate, ITEM_SLOT_OCLOTHING, shield_state) /obj/item/clothing/head/helmet/space/hardsuit/shielded resistance_flags = FIRE_PROOF | ACID_PROOF @@ -833,7 +790,6 @@ hardsuit_type = "ert_security" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red shield_state = "shield-red" - shield_on = "shield-red" /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue name = "blue shielded hardsuit" @@ -896,7 +852,6 @@ item_state = "swat_suit" hardsuit_type = "syndi" max_charges = 4 - current_charges = 4 recharge_delay = 15 armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 8b5e87d63b..e392a6b2d1 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -199,10 +199,9 @@ icon_state = "battlemage" item_state = "battlemage" recharge_rate = 0 + max_charges = INFINITY current_charges = 15 - recharge_cooldown = INFINITY shield_state = "shield-red" - shield_on = "shield-red" min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard @@ -243,6 +242,7 @@ if(!istype(W)) to_chat(user, "The rune can only be used on battlemage armour!") return - W.current_charges += 8 - to_chat(user, "You charge \the [W]. It can now absorb [W.current_charges] hits.") + var/datum/component/shielded/S = GetComponent(/datum/component/shielded) + S.adjust_charges(8) + to_chat(user, "You charge \the [W]. It can now absorb [S.charges] hits.") qdel(src) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index fe3aaf4bda..0d08b59be9 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -26,6 +26,8 @@ . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color()) + if(accessory_overlay) + . += accessory_overlay /obj/item/clothing/under/attackby(obj/item/I, mob/user, params) if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil)) @@ -99,8 +101,7 @@ if((flags_inv & HIDEACCESSORY) || (A.flags_inv & HIDEACCESSORY)) return TRUE - var/accessory_color = attached_accessory.icon_state - accessory_overlay = mutable_appearance('icons/mob/clothing/accessories.dmi', "[accessory_color]") + accessory_overlay = mutable_appearance('icons/mob/clothing/accessories.dmi', "attached_accessory.icon_state") accessory_overlay.alpha = attached_accessory.alpha accessory_overlay.color = attached_accessory.color diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 4fc62893b5..3f61c4b45f 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -57,8 +57,7 @@ icon_state = "tactifool" item_state = "bl_suit" has_sensor = TRUE - mutantrace_variation = NONE - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index b7f8b8f911..a8137acf48 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -57,7 +57,7 @@ if(!(ismecha(M) && mech_sized)) return - if(ismovableatom(M)) + if(ismovable(M)) if(GLOB.portals.len) var/obj/effect/portal/P = pick(GLOB.portals) if(P && isturf(P.loc)) diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 1342b1fcbf..203eb3eef6 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -25,7 +25,7 @@ pixel_y = rand(-5, 5) /obj/item/reagent_containers/food/proc/adjust_food_quality(new_quality) - food_quality = CLAMP(new_quality,0,100) + food_quality = clamp(new_quality,0,100) /obj/item/reagent_containers/food/proc/checkLiked(var/fraction, mob/M) if(last_check_time + 50 < world.time) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 7e831b6cd6..c7c74fb560 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -222,36 +222,6 @@ tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) foodtype = MEAT -/obj/item/reagent_containers/food/snacks/monkeycube - name = "monkey cube" - desc = "Just add water!" - icon_state = "monkeycube" - bitesize = 12 - list_reagents = list(/datum/reagent/consumable/nutriment = 2) - filling_color = "#CD853F" - tastes = list("the jungle" = 1, "bananas" = 1) - foodtype = MEAT | SUGAR - -/obj/item/reagent_containers/food/snacks/monkeycube/On_Consume(mob/living/carbon/M) - if(iscarbon(M)) - M.visible_message("[src] bursts out of [M]!") - M.emote("scream") - M.DefaultCombatKnockdown(40) - M.adjustBruteLoss(60) - Expand() - return TRUE - return ..() - -/obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand() - var/mob/spammer = get_mob_by_key(fingerprintslast) - var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) - if (!QDELETED(bananas)) - visible_message("[src] expands!") - bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", LOG_ATTACK) - else if (!spammer) // Visible message in case there are no fingerprints - visible_message("[src] fails to expand!") - qdel(src) - /obj/item/reagent_containers/food/snacks/enchiladas name = "enchiladas" desc = "Viva La Mexico!" @@ -372,3 +342,70 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 3, "smokey sauce" = 1) foodtype = MEAT + +////////////// Cubes ////////// + +/obj/item/reagent_containers/food/snacks/cube + name = "debug cube" + desc = "Just add water!" + icon_state = "monkeycube" + bitesize = 12 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + filling_color = "#CD853F" + tastes = list("broken" = 1, "code" = 1) + foodtype = MEAT | SUGAR + var/dried_being = /mob/living/carbon/monkey //What the cube will spawn mob wise + +/obj/item/reagent_containers/food/snacks/cube/On_Consume(mob/living/carbon/M) + if(iscarbon(M)) + M.visible_message("[src] bursts out of [M]!") + M.emote("scream") + M.DefaultCombatKnockdown(40) + M.adjustBruteLoss(60) + Expand() + return TRUE + return ..() + +/obj/item/reagent_containers/food/snacks/cube/proc/Expand() + var/mob/spammer = get_mob_by_key(fingerprintslast) + var/mob/living/water = new dried_being(drop_location(), TRUE, spammer) + if (!QDELETED(water)) + visible_message("[src] expands!") + water.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", LOG_ATTACK) + else if (!spammer) // Visible message in case there are no fingerprints + visible_message("[src] fails to expand!") + qdel(src) + +/obj/item/reagent_containers/food/snacks/cube/monkey + name = "monkey cube" + desc = "Just add water!" + tastes = list("the jungle" = 1, "bananas" = 1) + dried_being = /mob/living/carbon/monkey + +/obj/item/reagent_containers/food/snacks/cube/beno + name = "alien drone cube" + desc = "Just add water and run!" + tastes = list("the jungle" = 1, "acid" = 1) + dried_being = /mob/living/carbon/alien/humanoid/drone + +/obj/item/reagent_containers/food/snacks/cube/goat + name = "goat cube" + tastes = list("grass" = 1) + dried_being = /mob/living/simple_animal/hostile/retaliate/goat + +/obj/item/reagent_containers/food/snacks/cube/cow + name = "cow cube" + tastes = list("milk" = 1, "beef" = 1) + dried_being = /mob/living/simple_animal/cow + +/obj/item/reagent_containers/food/snacks/cube/egg +//Well eggs normally are able to hatch into small birds, this one does not. +//Also in order to have a normal egg hatch you need a hen to lay the egg that is able to hatch, meaning this one is for on-demand hen needs. + name = "egg cube thing" + desc = "Just add water, hey wait a second..." + icon_state = "egg" + filling_color = "#F0E68C" + cooked_type = /obj/item/reagent_containers/food/snacks/boiledegg + list_reagents = list(/datum/reagent/consumable/eggyolk = 5) + tastes = list("dried eggs" = 1, "confusion" = 1) + dried_being = /mob/living/simple_animal/chicken diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 68cc84c639..feba35da97 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -118,7 +118,7 @@ break if(href_list["portion"]) - portion = CLAMP(input("How much drink do you want to dispense per glass?") as num, 0, 50) + portion = clamp(input("How much drink do you want to dispense per glass?") as num, 0, 50) if(href_list["pour"] || href_list["m_pour"]) if(glasses-- <= 0) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 3d7341308b..2318c54508 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -78,7 +78,7 @@ playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= required_grind for(var/i = 0, i < cube_production, i++) - new /obj/item/reagent_containers/food/snacks/monkeycube(src.loc) + new /obj/item/reagent_containers/food/snacks/cube/monkey(src.loc) to_chat(user, "The machine's display flashes that it has [grinded] monkeys worth of material left.") else to_chat(user, "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded].") diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 94c8d7219c..19ded25b08 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -125,7 +125,7 @@ return else bomb_timer = input(user, "Set the [bomb] timer from [BOMB_TIMER_MIN] to [BOMB_TIMER_MAX].", bomb, bomb_timer) as num - bomb_timer = CLAMP(CEILING(bomb_timer / 2, 1), BOMB_TIMER_MIN, BOMB_TIMER_MAX) + bomb_timer = clamp(CEILING(bomb_timer / 2, 1), BOMB_TIMER_MIN, BOMB_TIMER_MAX) bomb_defused = FALSE var/message = "[ADMIN_LOOKUPFLW(user)] has trapped a [src] with [bomb] set to [bomb_timer * 2] seconds." diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm index 90036c0e2a..f25aaab6fd 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm @@ -68,7 +68,7 @@ /datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/consumable/blackpepper = 1, /obj/item/reagent_containers/glass/bowl = 1, - /obj/item/reagent_containers/food/snacks/monkeycube = 1, + /obj/item/reagent_containers/food/snacks/cube/monkey = 1, /obj/item/reagent_containers/food/snacks/grown/banana = 1 ) result = /obj/item/reagent_containers/food/snacks/soup/monkeysdelight diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 74432c7cbe..6d9e141309 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -138,7 +138,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico /datum/chatOutput/proc/setMusicVolume(volume = "") if(volume) - adminMusicVolume = CLAMP(text2num(volume), 0, 100) + adminMusicVolume = clamp(text2num(volume), 0, 100) //Sends client connection details to the chat to handle and save /datum/chatOutput/proc/sendClientData() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 6a3fd56208..7fac7ef9b6 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -311,7 +311,7 @@ else if(href_list["create"]) var/amount = (text2num(href_list["amount"])) //Can't be outside these (if you change this keep a sane limit) - amount = CLAMP(amount, 1, 50) + amount = clamp(amount, 1, 50) var/id = href_list["create"] if(!stored_research.researched_designs.Find(id)) //naughty naughty diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 1775a1f9b1..a18dbe165d 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -199,8 +199,8 @@ if(!click_params || !click_params["icon-x"] || !click_params["icon-y"]) return //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - W.pixel_x = CLAMP(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) - W.pixel_y = CLAMP(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) + W.pixel_x = clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + W.pixel_y = clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) else return ..() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 718033ac56..b7665d7b5d 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -928,26 +928,26 @@ /// Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds./// /obj/machinery/hydroponics/proc/adjustNutri(adjustamt) - nutrilevel = CLAMP(nutrilevel + adjustamt, 0, maxnutri) + nutrilevel = clamp(nutrilevel + adjustamt, 0, maxnutri) /obj/machinery/hydroponics/proc/adjustWater(adjustamt) - waterlevel = CLAMP(waterlevel + adjustamt, 0, maxwater) + waterlevel = clamp(waterlevel + adjustamt, 0, maxwater) if(adjustamt>0) adjustToxic(-round(adjustamt/4))//Toxicity dilutation code. The more water you put in, the lesser the toxin concentration. /obj/machinery/hydroponics/proc/adjustHealth(adjustamt) if(myseed && !dead) - plant_health = CLAMP(plant_health + adjustamt, 0, myseed.endurance) + plant_health = clamp(plant_health + adjustamt, 0, myseed.endurance) /obj/machinery/hydroponics/proc/adjustToxic(adjustamt) - toxic = CLAMP(toxic + adjustamt, 0, 100) + toxic = clamp(toxic + adjustamt, 0, 100) /obj/machinery/hydroponics/proc/adjustPests(adjustamt) - pestlevel = CLAMP(pestlevel + adjustamt, 0, 10) + pestlevel = clamp(pestlevel + adjustamt, 0, 10) /obj/machinery/hydroponics/proc/adjustWeeds(adjustamt) - weedlevel = CLAMP(weedlevel + adjustamt, 0, 10) + weedlevel = clamp(weedlevel + adjustamt, 0, 10) /obj/machinery/hydroponics/proc/spawnplant() // why would you put strange reagent in a hydro tray you monster I bet you also feed them blood var/list/livingplants = list(/mob/living/simple_animal/hostile/tree, /mob/living/simple_animal/hostile/killertomato) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index aa0e789721..5e49a32a23 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -211,7 +211,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) /// Setters procs /// /obj/item/seeds/proc/adjust_yield(adjustamt) if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable - yield = CLAMP(yield + adjustamt, 0, 10) + yield = clamp(yield + adjustamt, 0, 10) if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism)) yield = 1 // Mushrooms always have a minimum yield of 1. @@ -220,39 +220,39 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) C.value = yield /obj/item/seeds/proc/adjust_lifespan(adjustamt) - lifespan = CLAMP(lifespan + adjustamt, 10, 100) + lifespan = clamp(lifespan + adjustamt, 10, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan) if(C) C.value = lifespan /obj/item/seeds/proc/adjust_endurance(adjustamt) - endurance = CLAMP(endurance + adjustamt, 10, 100) + endurance = clamp(endurance + adjustamt, 10, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance) if(C) C.value = endurance /obj/item/seeds/proc/adjust_production(adjustamt) if(yield != -1) - production = CLAMP(production + adjustamt, 1, 10) + production = clamp(production + adjustamt, 1, 10) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production) if(C) C.value = production /obj/item/seeds/proc/adjust_potency(adjustamt) if(potency != -1) - potency = CLAMP(potency + adjustamt, 0, 100) + potency = clamp(potency + adjustamt, 0, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency) if(C) C.value = potency /obj/item/seeds/proc/adjust_weed_rate(adjustamt) - weed_rate = CLAMP(weed_rate + adjustamt, 0, 10) + weed_rate = clamp(weed_rate + adjustamt, 0, 10) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate) if(C) C.value = weed_rate /obj/item/seeds/proc/adjust_weed_chance(adjustamt) - weed_chance = CLAMP(weed_chance + adjustamt, 0, 67) + weed_chance = clamp(weed_chance + adjustamt, 0, 67) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance) if(C) C.value = weed_chance @@ -261,7 +261,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) /obj/item/seeds/proc/set_yield(adjustamt) if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable - yield = CLAMP(adjustamt, 0, 10) + yield = clamp(adjustamt, 0, 10) if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism)) yield = 1 // Mushrooms always have a minimum yield of 1. @@ -270,39 +270,39 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) C.value = yield /obj/item/seeds/proc/set_lifespan(adjustamt) - lifespan = CLAMP(adjustamt, 10, 100) + lifespan = clamp(adjustamt, 10, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan) if(C) C.value = lifespan /obj/item/seeds/proc/set_endurance(adjustamt) - endurance = CLAMP(adjustamt, 10, 100) + endurance = clamp(adjustamt, 10, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance) if(C) C.value = endurance /obj/item/seeds/proc/set_production(adjustamt) if(yield != -1) - production = CLAMP(adjustamt, 1, 10) + production = clamp(adjustamt, 1, 10) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production) if(C) C.value = production /obj/item/seeds/proc/set_potency(adjustamt) if(potency != -1) - potency = CLAMP(adjustamt, 0, 100) + potency = clamp(adjustamt, 0, 100) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency) if(C) C.value = potency /obj/item/seeds/proc/set_weed_rate(adjustamt) - weed_rate = CLAMP(adjustamt, 0, 10) + weed_rate = clamp(adjustamt, 0, 10) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate) if(C) C.value = weed_rate /obj/item/seeds/proc/set_weed_chance(adjustamt) - weed_chance = CLAMP(adjustamt, 0, 67) + weed_chance = clamp(adjustamt, 0, 67) var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance) if(C) C.value = weed_chance diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm index 67feb14457..30d8b7b3a7 100644 --- a/code/modules/instruments/songs/_song.dm +++ b/code/modules/instruments/songs/_song.dm @@ -213,7 +213,7 @@ /datum/song/proc/sanitize_tempo(new_tempo) new_tempo = abs(new_tempo) - return CLAMP(round(new_tempo, world.tick_lag), world.tick_lag, 5 SECONDS) + return clamp(round(new_tempo, world.tick_lag), world.tick_lag, 5 SECONDS) /datum/song/proc/get_bpm() return 600 / tempo @@ -242,22 +242,22 @@ cached_linear_dropoff = volume_decrease_per_decisecond /datum/song/proc/set_volume(volume) - src.volume = CLAMP(volume, max(0, min_volume), min(100, max_volume)) + src.volume = clamp(volume, max(0, min_volume), min(100, max_volume)) update_sustain() updateDialog() /datum/song/proc/set_dropoff_volume(volume) - sustain_dropoff_volume = CLAMP(volume, INSTRUMENT_MIN_SUSTAIN_DROPOFF, 100) + sustain_dropoff_volume = clamp(volume, INSTRUMENT_MIN_SUSTAIN_DROPOFF, 100) update_sustain() updateDialog() /datum/song/proc/set_exponential_drop_rate(drop) - sustain_exponential_dropoff = CLAMP(drop, INSTRUMENT_EXP_FALLOFF_MIN, INSTRUMENT_EXP_FALLOFF_MAX) + sustain_exponential_dropoff = clamp(drop, INSTRUMENT_EXP_FALLOFF_MIN, INSTRUMENT_EXP_FALLOFF_MAX) update_sustain() updateDialog() /datum/song/proc/set_linear_falloff_duration(duration) - sustain_linear_duration = CLAMP(duration, 0.1, INSTRUMENT_MAX_TOTAL_SUSTAIN) + sustain_linear_duration = clamp(duration, 0.1, INSTRUMENT_MAX_TOTAL_SUSTAIN) update_sustain() updateDialog() diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm index 873ff0e1a7..d9595797d7 100644 --- a/code/modules/instruments/songs/editor.dm +++ b/code/modules/instruments/songs/editor.dm @@ -230,7 +230,7 @@ else if(href_list["setnoteshift"]) var/amount = input(usr, "Set note shift", "Note Shift") as null|num if(!isnull(amount)) - note_shift = CLAMP(amount, note_shift_min, note_shift_max) + note_shift = clamp(amount, note_shift_min, note_shift_max) else if(href_list["setsustainmode"]) var/choice = input(usr, "Choose a sustain mode", "Sustain Mode") as null|anything in list("Linear", "Exponential") diff --git a/code/modules/instruments/songs/play_synthesized.dm b/code/modules/instruments/songs/play_synthesized.dm index 2573da324a..5e7c5652a0 100644 --- a/code/modules/instruments/songs/play_synthesized.dm +++ b/code/modules/instruments/songs/play_synthesized.dm @@ -52,8 +52,8 @@ if(!num) //it's an accidental accents[key] = oct_acc //if they misspelled it/fucked up that's on them lmao, no safety checks. else //octave - octaves[key] = CLAMP(num, octave_min, octave_max) - compiled_chord += CLAMP((note_offset_lookup[key] + octaves[key] * 12 + accent_lookup[accents[key]]), key_min, key_max) + octaves[key] = clamp(num, octave_min, octave_max) + compiled_chord += clamp((note_offset_lookup[key] + octaves[key] * 12 + accent_lookup[accents[key]]), key_min, key_max) compiled_chord += tempodiv //this goes last if(length(compiled_chord)) compiled_chords[++compiled_chords.len] = compiled_chord diff --git a/code/modules/integrated_electronics/core/special_pins/index_pin.dm b/code/modules/integrated_electronics/core/special_pins/index_pin.dm index 06267eec61..e904c4c6d0 100644 --- a/code/modules/integrated_electronics/core/special_pins/index_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/index_pin.dm @@ -14,7 +14,7 @@ new_data = 0 if(isnum(new_data)) - data = CLAMP(round(new_data), 0, IC_MAX_LIST_LENGTH) + data = clamp(round(new_data), 0, IC_MAX_LIST_LENGTH) holder.on_data_written() /datum/integrated_io/index/display_pin_type() diff --git a/code/modules/integrated_electronics/subtypes/atmospherics.dm b/code/modules/integrated_electronics/subtypes/atmospherics.dm index 6b4f46f83d..219e30c57f 100644 --- a/code/modules/integrated_electronics/subtypes/atmospherics.dm +++ b/code/modules/integrated_electronics/subtypes/atmospherics.dm @@ -308,7 +308,7 @@ obj/item/integrated_circuit/atmospherics/connector/portableConnectorReturnAir() /obj/item/integrated_circuit/atmospherics/pump/filter/on_data_written() var/amt = get_pin_data(IC_INPUT, 5) - target_pressure = CLAMP(amt, 0, PUMP_MAX_PRESSURE) + target_pressure = clamp(amt, 0, PUMP_MAX_PRESSURE) /obj/item/integrated_circuit/atmospherics/pump/filter/do_work() activate_pin(2) diff --git a/code/modules/integrated_electronics/subtypes/data_transfer.dm b/code/modules/integrated_electronics/subtypes/data_transfer.dm index 8e1c715d83..8db1db4e00 100644 --- a/code/modules/integrated_electronics/subtypes/data_transfer.dm +++ b/code/modules/integrated_electronics/subtypes/data_transfer.dm @@ -125,7 +125,7 @@ /obj/item/integrated_circuit/transfer/pulsedemultiplexer/do_work() var/output_index = get_pin_data(IC_INPUT, 1) - if(output_index == CLAMP(output_index, 1, number_of_pins)) + if(output_index == clamp(output_index, 1, number_of_pins)) activate_pin(round(output_index + 1 ,1)) /obj/item/integrated_circuit/transfer/pulsedemultiplexer/medium diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 0be6fd8686..49e6855b38 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -389,8 +389,8 @@ activate_pin(3) return var/turf/T = get_turf(assembly) - var/target_x = CLAMP(get_pin_data(IC_INPUT, 1), 0, world.maxx) - var/target_y = CLAMP(get_pin_data(IC_INPUT, 2), 0, world.maxy) + var/target_x = clamp(get_pin_data(IC_INPUT, 1), 0, world.maxx) + var/target_y = clamp(get_pin_data(IC_INPUT, 2), 0, world.maxy) var/turf/A = locate(target_x, target_y, T.z) set_pin_data(IC_OUTPUT, 1, null) if(!A || !(A in view(T))) @@ -532,7 +532,7 @@ var/rad = get_pin_data(IC_INPUT, 2) if(isnum(rad)) - rad = CLAMP(rad, 0, 8) + rad = clamp(rad, 0, 8) radius = rad /obj/item/integrated_circuit/input/advanced_locator_list/do_work() @@ -594,7 +594,7 @@ /obj/item/integrated_circuit/input/advanced_locator/on_data_written() var/rad = get_pin_data(IC_INPUT, 2) if(isnum(rad)) - rad = CLAMP(rad, 0, 8) + rad = clamp(rad, 0, 8) radius = rad /obj/item/integrated_circuit/input/advanced_locator/do_work() diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index d1cd852651..fd4e6abfc5 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -236,7 +236,7 @@ var/mode = get_pin_data(IC_INPUT, 2) switch(ord) if(1) - mode = CLAMP(mode, GRAB_PASSIVE, max_grab) + mode = clamp(mode, GRAB_PASSIVE, max_grab) if(AM) if(check_target(AM, exclude_contents = TRUE)) acting_object.investigate_log("grabbed ([AM]) using [src].", INVESTIGATE_CIRCUIT) @@ -329,9 +329,9 @@ // If the item is in a grabber circuit we'll update the grabber's outputs after we've thrown it. var/obj/item/integrated_circuit/manipulation/grabber/G = A.loc - var/x_abs = CLAMP(T.x + target_x_rel, 0, world.maxx) - var/y_abs = CLAMP(T.y + target_y_rel, 0, world.maxy) - var/range = round(CLAMP(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) + var/x_abs = clamp(T.x + target_x_rel, 0, world.maxx) + var/y_abs = clamp(T.y + target_y_rel, 0, world.maxy) + var/range = round(clamp(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) //remove damage A.throwforce = 0 A.embedding = list("embed_chance" = 0) @@ -447,7 +447,7 @@ if(!S) activate_pin(4) return - if(materials.insert_item(S, CLAMP(get_pin_data(IC_INPUT, 2),0,100), multiplier = 1) ) + if(materials.insert_item(S, clamp(get_pin_data(IC_INPUT, 2),0,100), multiplier = 1) ) AfterMaterialInsert() activate_pin(3) else @@ -458,7 +458,7 @@ for(var/I in 1 to mtypes.len) var/datum/material/M = materials.materials[mtypes[I]] if(M) - var/U = CLAMP(get_pin_data(IC_INPUT, I+2),-100000,100000) + var/U = clamp(get_pin_data(IC_INPUT, I+2),-100000,100000) if(!U) continue if(!mt) //Invalid input diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 6005709dde..47b6e151cb 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -112,7 +112,7 @@ var/brightness = get_pin_data(IC_INPUT, 2) if(new_color && isnum(brightness)) - brightness = CLAMP(brightness, 0, 10) + brightness = clamp(brightness, 0, 10) light_rgb = new_color light_brightness = brightness @@ -151,7 +151,7 @@ var/selected_sound = sounds[ID] if(!selected_sound) return - vol = CLAMP(vol ,0 , 100) + vol = clamp(vol ,0 , 100) playsound(get_turf(src), selected_sound, vol, freq, -1) var/atom/A = get_object() A.investigate_log("played a sound ([selected_sound]) as [type].", INVESTIGATE_CIRCUIT) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 0fc9f58db8..663ba9fe16 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -94,7 +94,7 @@ else direction_mode = SYRINGE_INJECT if(isnum(new_amount)) - new_amount = CLAMP(new_amount, 0, volume) + new_amount = clamp(new_amount, 0, volume) transfer_amount = new_amount @@ -222,7 +222,7 @@ else direction_mode = SYRINGE_INJECT if(isnum(new_amount)) - new_amount = CLAMP(new_amount, 0, 50) + new_amount = clamp(new_amount, 0, 50) transfer_amount = new_amount /obj/item/integrated_circuit/reagent/pump/do_work() @@ -468,7 +468,7 @@ else direction_mode = SYRINGE_INJECT if(isnum(new_amount)) - new_amount = CLAMP(new_amount, 0, 50) + new_amount = clamp(new_amount, 0, 50) transfer_amount = new_amount /obj/item/integrated_circuit/reagent/filter/do_work() diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm index d0c47f0950..5dc866c556 100644 --- a/code/modules/integrated_electronics/subtypes/smart.dm +++ b/code/modules/integrated_electronics/subtypes/smart.dm @@ -57,8 +57,8 @@ activate_pin(3) return var/turf/T = get_turf(assembly) - var/target_x = CLAMP(get_pin_data(IC_INPUT, 1), 0, world.maxx) - var/target_y = CLAMP(get_pin_data(IC_INPUT, 2), 0, world.maxy) + var/target_x = clamp(get_pin_data(IC_INPUT, 1), 0, world.maxx) + var/target_y = clamp(get_pin_data(IC_INPUT, 2), 0, world.maxy) var/turf/A = locate(target_x, target_y, T.z) set_pin_data(IC_OUTPUT, 1, null) if(!A||A==T) diff --git a/code/modules/integrated_electronics/subtypes/time.dm b/code/modules/integrated_electronics/subtypes/time.dm index 1f1d5444bb..cae43718c2 100644 --- a/code/modules/integrated_electronics/subtypes/time.dm +++ b/code/modules/integrated_electronics/subtypes/time.dm @@ -64,7 +64,7 @@ /obj/item/integrated_circuit/time/delay/custom/do_work() var/delay_input = get_pin_data(IC_INPUT, 1) if(delay_input && isnum(delay_input) ) - var/new_delay = CLAMP(delay_input ,1 ,36000) //An hour. + var/new_delay = clamp(delay_input ,1 ,36000) //An hour. delay = new_delay ..() @@ -119,7 +119,7 @@ /obj/item/integrated_circuit/time/ticker/custom/on_data_written() var/delay_input = get_pin_data(IC_INPUT, 2) if(delay_input && isnum(delay_input) ) - var/new_delay = CLAMP(delay_input ,1 ,1 HOURS) + var/new_delay = clamp(delay_input ,1 ,1 HOURS) delay = new_delay ..() diff --git a/code/modules/integrated_electronics/subtypes/trig.dm b/code/modules/integrated_electronics/subtypes/trig.dm index cefa25e945..75580911c3 100644 --- a/code/modules/integrated_electronics/subtypes/trig.dm +++ b/code/modules/integrated_electronics/subtypes/trig.dm @@ -71,7 +71,7 @@ var/result = null var/A = get_pin_data(IC_INPUT, 1) if(!isnull(A)) - result = TAN(A) + result = tan(A) set_pin_data(IC_OUTPUT, 1, result) push_data() diff --git a/code/modules/integrated_electronics/subtypes/weaponized.dm b/code/modules/integrated_electronics/subtypes/weaponized.dm index 02340970af..2f6a2cd841 100644 --- a/code/modules/integrated_electronics/subtypes/weaponized.dm +++ b/code/modules/integrated_electronics/subtypes/weaponized.dm @@ -102,8 +102,8 @@ yo.data = round(yo.data, 1) var/turf/T = get_turf(assembly) - var/target_x = CLAMP(T.x + xo.data, 0, world.maxx) - var/target_y = CLAMP(T.y + yo.data, 0, world.maxy) + var/target_x = clamp(T.x + xo.data, 0, world.maxx) + var/target_y = clamp(T.y + yo.data, 0, world.maxy) assembly.visible_message("[assembly] fires [installed_gun]!") shootAt(locate(target_x, target_y, T.z)) @@ -191,7 +191,7 @@ var/datum/integrated_io/detonation_time = inputs[1] var/dt if(isnum(detonation_time.data) && detonation_time.data > 0) - dt = CLAMP(detonation_time.data, 1, 12)*10 + dt = clamp(detonation_time.data, 1, 12)*10 else dt = 15 addtimer(CALLBACK(attached_grenade, /obj/item/grenade.proc/prime), dt) @@ -293,9 +293,9 @@ // If the item is in a grabber circuit we'll update the grabber's outputs after we've thrown it. var/obj/item/integrated_circuit/manipulation/grabber/G = A.loc - var/x_abs = CLAMP(T.x + target_x_rel, 0, world.maxx) - var/y_abs = CLAMP(T.y + target_y_rel, 0, world.maxy) - var/range = round(CLAMP(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) + var/x_abs = clamp(T.x + target_x_rel, 0, world.maxx) + var/y_abs = clamp(T.y + target_y_rel, 0, world.maxy) + var/range = round(clamp(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) assembly.visible_message("\The [assembly] has thrown [A]!") log_attack("[assembly] [REF(assembly)] has thrown [A] with lethal force.") A.forceMove(drop_location()) @@ -324,7 +324,7 @@ /obj/item/integrated_circuit/weaponized/stun/do_work() - var/stunforce = CLAMP(get_pin_data(IC_INPUT, 1),1,70) + var/stunforce = clamp(get_pin_data(IC_INPUT, 1),1,70) var/mob/living/L = assembly.loc if(attempt_stun(L,stunforce)) activate_pin(2) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index b307e66b39..f31ea9022b 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -74,7 +74,7 @@ var/datum/language_holder/other if(istype(thing, /datum/language_holder)) other = thing - else if(ismovableatom(thing)) + else if(ismovable(thing)) var/atom/movable/AM = thing other = AM.get_language_holder() else if(istype(thing, /datum/mind)) @@ -94,7 +94,7 @@ language_menu.ui_interact(user) /datum/language_holder/proc/get_atom() - if(ismovableatom(owner)) + if(ismovable(owner)) . = owner else if(istype(owner, /datum/mind)) var/datum/mind/M = owner diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 008724b10f..144037b3a7 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -267,7 +267,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "(Order book by SS13BN)

" dat += "" dat += "" - dat += libcomp_menu[CLAMP(page,1,libcomp_menu.len)] + dat += libcomp_menu[clamp(page,1,libcomp_menu.len)] dat += "" dat += "
AUTHORTITLECATEGORY
<<<< >>>>
" dat += "
(Return to main menu)
" diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 8712a66290..779dd9c3ea 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -38,7 +38,7 @@ if (!light_power || !light_range) // We won't emit light anyways, destroy the light source. QDEL_NULL(light) else - if (!ismovableatom(loc)) // We choose what atom should be the top atom of the light here. + if (!ismovable(loc)) // We choose what atom should be the top atom of the light here. . = src else . = loc diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 86b501c455..e7d7fd4898 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -93,7 +93,7 @@ gridSet.ycrd = text2num(dmmRegex.group[4]) gridSet.zcrd = text2num(dmmRegex.group[5]) - bounds[MAP_MINX] = min(bounds[MAP_MINX], CLAMP(gridSet.xcrd, x_lower, x_upper)) + bounds[MAP_MINX] = min(bounds[MAP_MINX], clamp(gridSet.xcrd, x_lower, x_upper)) bounds[MAP_MINZ] = min(bounds[MAP_MINZ], gridSet.zcrd) bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], gridSet.zcrd) @@ -113,15 +113,15 @@ if(gridLines.len && gridLines[gridLines.len] == "") gridLines.Cut(gridLines.len) // Remove only one blank line at the end. - bounds[MAP_MINY] = min(bounds[MAP_MINY], CLAMP(gridSet.ycrd, y_lower, y_upper)) + bounds[MAP_MINY] = min(bounds[MAP_MINY], clamp(gridSet.ycrd, y_lower, y_upper)) gridSet.ycrd += gridLines.len - 1 // Start at the top and work down - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], CLAMP(gridSet.ycrd, y_lower, y_upper)) + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], clamp(gridSet.ycrd, y_lower, y_upper)) var/maxx = gridSet.xcrd if(gridLines.len) //Not an empty map maxx = max(maxx, gridSet.xcrd + length(gridLines[1]) / key_len - 1) - bounds[MAP_MAXX] = CLAMP(max(bounds[MAP_MAXX], maxx), x_lower, x_upper) + bounds[MAP_MAXX] = clamp(max(bounds[MAP_MAXX], maxx), x_lower, x_upper) CHECK_TICK // Indicate failure to parse any coordinates by nulling bounds diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 56e1a04b95..4dd86a847a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -428,7 +428,7 @@ /obj/item/projectile/hook/on_hit(atom/target) . = ..() - if(ismovableatom(target)) + if(ismovable(target)) var/atom/movable/A = target if(A.anchored) return @@ -833,13 +833,13 @@ force = 0 var/ghost_counter = ghost_check() - force = CLAMP((ghost_counter * 4), 0, 75) + force = clamp((ghost_counter * 4), 0, 75) user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!") return ..() /obj/item/melee/ghost_sword/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) var/ghost_counter = ghost_check() - final_block_chance += CLAMP((ghost_counter * 5), 0, 75) + final_block_chance += clamp((ghost_counter * 5), 0, 75) owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") return ..() diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index c0356dd1ab..09246abc46 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -116,7 +116,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/list/logs = GLOB.silo_access_logs[REF(src)] var/len = LAZYLEN(logs) var/num_pages = 1 + round((len - 1) / 30) - var/page = CLAMP(log_page, 1, num_pages) + var/page = clamp(log_page, 1, num_pages) if(num_pages > 1) for(var/i in 1 to num_pages) if(i == page) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 0182dec254..bcb196a103 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -194,7 +194,7 @@ prize_list += list( new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/mining, 250), new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250), - new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 300), + new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/cube/monkey, 300), new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility, 350), new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500), new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000), diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index d04c0104e5..e89bbef58d 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -87,7 +87,7 @@ if(istype(new_material)) chosen = new_material if(href_list["chooseAmt"]) - coinsToProduce = CLAMP(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) + coinsToProduce = clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) updateUsrDialog() if(href_list["makeCoins"]) var/temp_coins = coinsToProduce diff --git a/code/modules/mob/dead/new_player/sprite_accessories/pines.dm b/code/modules/mob/dead/new_player/sprite_accessories/spines.dm similarity index 100% rename from code/modules/mob/dead/new_player/sprite_accessories/pines.dm rename to code/modules/mob/dead/new_player/sprite_accessories/spines.dm diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index b2d02d8fa2..dc7384124d 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -570,7 +570,7 @@ 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.change_view(CLAMP(new_view, 7, max_view)) + client.change_view(clamp(new_view, 7, max_view)) else client.change_view(CONFIG_GET(string/default_view)) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 9f7d2067de..fad3a7e534 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -333,7 +333,8 @@ I.moveToNullspace() else I.forceMove(newloc) - I.dropped(src) + if(I.dropped(src) == ITEM_RELOCATED_BY_DROPPED) + return FALSE return TRUE //Outdated but still in use apparently. This should at least be a human proc. diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index f32d84ae73..4cb93a1b6a 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -229,7 +229,7 @@ var/adjusted_amount if(amount >= 0 && maximum) var/brainloss = get_brain_damage() - var/new_brainloss = CLAMP(brainloss + amount, 0, maximum) + var/new_brainloss = clamp(brainloss + amount, 0, maximum) if(brainloss > new_brainloss) //brainloss is over the cap already return 0 adjusted_amount = new_brainloss - brainloss diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 4a63a72686..71d61cab25 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -20,5 +20,5 @@ /mob/living/carbon/alien/AdjustStun(amount, updating = 1, ignore_canstun = 0) . = ..() if(!.) - move_delay_add = CLAMP(move_delay_add + round(amount/2), 0, 10) + move_delay_add = clamp(move_delay_add + round(amount/2), 0, 10) */ diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 25f0cb5b89..377540233f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -98,6 +98,8 @@ /mob/living/carbon/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() var/hurt = TRUE + if(GetComponent(/datum/component/tackler)) + return if(throwingdatum?.thrower && iscyborg(throwingdatum.thrower)) var/mob/living/silicon/robot/R = throwingdatum.thrower if(!R.emagged) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 689ab56842..15413f76d4 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -63,3 +63,4 @@ var/damageoverlaytemp = 0 var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects + var/tackling = FALSE //Whether or not we are tackling, this will prevent the knock into effects for carbons diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 94aba6851a..29c7321660 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -768,7 +768,7 @@ return else if(hud_used.healths) - var/health_amount = min(health, maxHealth - CLAMP(getStaminaLoss()-50, 0, 80))//CIT CHANGE - makes staminaloss have less of an impact on the health hud + var/health_amount = min(health, maxHealth - clamp(getStaminaLoss()-50, 0, 80))//CIT CHANGE - makes staminaloss have less of an impact on the health hud if(..(health_amount)) //not dead switch(hal_screwyhud) if(SCREWYHUD_CRIT) diff --git a/code/modules/mob/living/carbon/human/human_block.dm b/code/modules/mob/living/carbon/human/human_block.dm index b1a5153ce5..8fe0376a08 100644 --- a/code/modules/mob/living/carbon/human/human_block.dm +++ b/code/modules/mob/living/carbon/human/human_block.dm @@ -1,8 +1,8 @@ /mob/living/carbon/human/get_blocking_items() . = ..() if(wear_suit) - . += wear_suit + . |= wear_suit if(w_uniform) - . += w_uniform + . |= w_uniform if(wear_neck) - . += wear_neck + . |= wear_neck diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index 235dacc70a..50b88579f4 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -6,7 +6,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // name = "Dwarf" id = "dwarf" //Also called Homo sapiens pumilionis default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR,TRAIT_DWARF) inherent_traits = list() limbs_id = "human" use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM @@ -36,7 +36,6 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM. RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) //We register handle_speech is being used. - /datum/species/dwarf/on_species_loss(mob/living/carbon/H, datum/species/new_species) . = ..() H.transform = H.transform.Scale(1, 1.25) //And we undo it. @@ -170,7 +169,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // for(var/datum/reagent/R in owner.reagents.reagent_list) if(istype(R, /datum/reagent/consumable/ethanol)) var/datum/reagent/consumable/ethanol/E = R - stored_alcohol = CLAMP(stored_alcohol + E.boozepwr / 50, 0, max_alcohol) + stored_alcohol = clamp(stored_alcohol + E.boozepwr / 50, 0, max_alcohol) var/heal_amt = heal_rate stored_alcohol -= alcohol_rate //Subtracts alcohol_Rate from stored alcohol so EX: 250 - 0.25 per each loop that occurs. if(stored_alcohol > 400) //If they are over 400 they start regenerating diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index abc2288e9b..7a5e347060 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -397,7 +397,7 @@ var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) var/turf/target = get_turf(P.starting) // redirect the projectile - P.preparePixelProjectile(locate(CLAMP(target.x + new_x, 1, world.maxx), CLAMP(target.y + new_y, 1, world.maxy), H.z), H) + P.preparePixelProjectile(locate(clamp(target.x + new_x, 1, world.maxx), clamp(target.y + new_y, 1, world.maxy), H.z), H) return BULLET_ACT_FORCE_PIERCE return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 775f36cfc7..10a29c72c1 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -606,7 +606,7 @@ var/max_D = CONFIG_GET(number/penis_max_inches_prefs) var/new_length = input(owner, "Penis length in inches:\n([min_D]-[max_D])", "Genital Alteration") as num|null if(new_length) - H.dna.features["cock_length"] = CLAMP(round(new_length), min_D, max_D) + H.dna.features["cock_length"] = clamp(round(new_length), min_D, max_D) H.update_genitals() H.apply_overlay() H.give_genital(/obj/item/organ/genital/testicles) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index f37e718462..f720aa7f8a 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -106,8 +106,8 @@ to_chat(victim, "[H] is draining your blood!") to_chat(H, "You drain some blood!") playsound(H, 'sound/items/drink.ogg', 30, 1, -2) - victim.blood_volume = CLAMP(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM) - H.blood_volume = CLAMP(H.blood_volume + drained_blood, 0, BLOOD_VOLUME_MAXIMUM) + victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM) + H.blood_volume = clamp(H.blood_volume + drained_blood, 0, BLOOD_VOLUME_MAXIMUM) if(!victim.blood_volume) to_chat(H, "You finish off [victim]'s blood supply!") diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 8097859aac..00a0991e19 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -235,7 +235,7 @@ //TOXINS/PLASMA if(Toxins_partialpressure > safe_tox_max) var/ratio = (breath_gases[/datum/gas/plasma]/safe_tox_max) * 10 - adjustToxLoss(CLAMP(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) + 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("too_much_tox") diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 6c497bb8d4..a47bb7fb4a 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -23,10 +23,10 @@ clear_alert("high") /mob/living/carbon/adjust_disgust(amount) - disgust = CLAMP(disgust+amount, 0, DISGUST_LEVEL_MAXEDOUT) + disgust = clamp(disgust+amount, 0, DISGUST_LEVEL_MAXEDOUT) /mob/living/carbon/set_disgust(amount) - disgust = CLAMP(amount, 0, DISGUST_LEVEL_MAXEDOUT) + disgust = clamp(amount, 0, DISGUST_LEVEL_MAXEDOUT) ////////////////////////////////////////TRAUMAS///////////////////////////////////////// diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index d5e1fa6fc4..3257b0e3bf 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -88,7 +88,7 @@ if(EFFECT_STUN) Stun(effect * hit_percent) if(EFFECT_KNOCKDOWN) - DefaultCombatKnockdown(effect * hit_percent, override_stamdmg = knockdown_stammax ? CLAMP(knockdown_stamoverride, 0, knockdown_stammax-getStaminaLoss()) : knockdown_stamoverride) + DefaultCombatKnockdown(effect * hit_percent, override_stamdmg = knockdown_stammax ? clamp(knockdown_stamoverride, 0, knockdown_stammax-getStaminaLoss()) : knockdown_stamoverride) if(EFFECT_UNCONSCIOUS) Unconscious(effect * hit_percent) if(EFFECT_IRRADIATE) @@ -140,7 +140,7 @@ /mob/living/proc/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - bruteloss = CLAMP((bruteloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) + bruteloss = clamp((bruteloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) if(updating_health) updatehealth() return amount @@ -151,7 +151,7 @@ /mob/living/proc/adjustOxyLoss(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - oxyloss = CLAMP((oxyloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) + oxyloss = clamp((oxyloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) if(updating_health) updatehealth() return amount @@ -170,7 +170,7 @@ /mob/living/proc/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - toxloss = CLAMP((toxloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) + toxloss = clamp((toxloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) if(updating_health) updatehealth() return amount @@ -189,7 +189,7 @@ /mob/living/proc/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - fireloss = CLAMP((fireloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) + fireloss = clamp((fireloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) if(updating_health) updatehealth() return amount @@ -200,7 +200,7 @@ /mob/living/proc/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - cloneloss = CLAMP((cloneloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) + cloneloss = clamp((cloneloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) if(updating_health) updatehealth() return amount diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 22a0da2cf6..89f8381087 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -68,7 +68,7 @@ var/obj/O = A if(ObjBump(O)) return - if(ismovableatom(A)) + if(ismovable(A)) var/atom/movable/AM = A if(PushAM(AM, move_force)) return @@ -645,7 +645,7 @@ attempt_resist_grab(FALSE) // Return as we should only resist one thing at a time. Give clickdelay if the grab wasn't passive. return old_gs? TRUE : FALSE - + // unbuckling yourself. stops the chain if you try it. if(buckled && last_special <= world.time) log_combat(src, buckled, "resisted buckle") @@ -1030,7 +1030,7 @@ update_fire() /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person - fire_stacks = CLAMP(fire_stacks + add_fire_stacks, -20, 20) + fire_stacks = clamp(fire_stacks + add_fire_stacks, -20, 20) if(on_fire && fire_stacks <= 0) ExtinguishMob() diff --git a/code/modules/mob/living/living_block.dm b/code/modules/mob/living/living_block.dm index d9e3309e47..d39abb1250 100644 --- a/code/modules/mob/living/living_block.dm +++ b/code/modules/mob/living/living_block.dm @@ -57,7 +57,7 @@ if(real_attack) for(var/obj/item/I in tocheck) // i don't like this too - var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example + var/final_block_chance = I.block_chance - (clamp((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example var/results = I.run_block(src, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, return_list) . |= results if((results & BLOCK_SUCCESS) && !(results & BLOCK_CONTINUE_CHAIN)) @@ -65,12 +65,13 @@ else for(var/obj/item/I in tocheck) // i don't like this too - var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example + var/final_block_chance = I.block_chance - (clamp((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example I.check_block(src, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, return_list) /// Gets an unsortedlist of objects to run block checks on. /mob/living/proc/get_blocking_items() . = list() + SEND_SIGNAL(src, COMSIG_LIVING_GET_BLOCKING_ITEMS, .) for(var/obj/item/I in held_items) // this is a bad check but i am not removing it until a better catchall is made if(istype(I, /obj/item/clothing)) @@ -85,11 +86,13 @@ /// Runs block and returns flag for do_run_block to process. /obj/item/proc/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - SEND_SIGNAL(src, COMSIG_ITEM_RUN_BLOCK, owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) + . = SEND_SIGNAL(src, COMSIG_ITEM_RUN_BLOCK, owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) + if(. & BLOCK_SUCCESS) + return if(prob(final_block_chance)) owner.visible_message("[owner] blocks [attack_text] with [src]!") - return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL - return BLOCK_NONE + return . | BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL + return . | BLOCK_NONE /// Returns block information using list/block_return. Used for check_block() on mobs. /obj/item/proc/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 7d220739d5..39a94232a3 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -88,9 +88,9 @@ /obj/item/proc/get_volume_by_throwforce_and_or_w_class() if(throwforce && w_class) - return CLAMP((throwforce + w_class) * 5, 30, 100)// Add the item's throwforce to its weight class and multiply by 5, then clamp the value between 30 and 100 + return clamp((throwforce + w_class) * 5, 30, 100)// Add the item's throwforce to its weight class and multiply by 5, then clamp the value between 30 and 100 else if(w_class) - return CLAMP(w_class * 8, 20, 100) // Multiply the item's weight class by 8, then clamp the value between 20 and 100 + return clamp(w_class * 8, 20, 100) // Multiply the item's weight class by 8, then clamp the value between 20 and 100 else return 0 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d178af9fb0..e959144ed5 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -869,7 +869,7 @@ if(istype(A, /obj/machinery/camera)) current = A if(client) - if(ismovableatom(A)) + if(ismovable(A)) if(A != GLOB.ai_camera_room_landmark) end_multicam() client.perspective = EYE_PERSPECTIVE @@ -1016,7 +1016,7 @@ if("Yes.") src.ghostize(FALSE, penalize = TRUE) var/announce_rank = "Artificial Intelligence," - if(GLOB.announcement_systems.len) + if(GLOB.announcement_systems.len) // Sends an announcement the AI has cryoed. var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) announcer.announce("CRYOSTORAGE", src.real_name, announce_rank, list()) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 26fa3b505d..9eb1bbc9e4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -154,7 +154,7 @@ /mob/living/silicon/pai/proc/process_hack() if(cable && cable.machine && istype(cable.machine, /obj/machinery/door) && cable.machine == hackdoor && get_dist(src, hackdoor) <= 1) - hackprogress = CLAMP(hackprogress + 4, 0, 100) + hackprogress = clamp(hackprogress + 4, 0, 100) else temp = "Door Jack: Connection to airlock has been lost. Hack aborted." hackprogress = 0 @@ -301,7 +301,7 @@ update_stat() /mob/living/silicon/pai/process() - emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) + emitterhealth = clamp((emitterhealth + emitterregen), -50, emittermaxhealth) /obj/item/paicard/attackby(obj/item/W, mob/user, params) ..() diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index 0477492c0a..ba162ecf2c 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -69,7 +69,7 @@ return FALSE //No we're not flammable /mob/living/silicon/pai/proc/take_holo_damage(amount) - emitterhealth = CLAMP((emitterhealth - amount), -50, emittermaxhealth) + emitterhealth = clamp((emitterhealth - amount), -50, emittermaxhealth) if(emitterhealth < 0) fold_in(force = TRUE) if(amount > 0) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index cf67517c52..e04943a8c5 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -21,7 +21,7 @@ if(cell && cell.charge) if(cell.charge <= 100) uneq_all() - var/amt = CLAMP((lamp_intensity - 2) * 2,1,cell.charge) //Always try to use at least one charge per tick, but allow it to completely drain the cell. + var/amt = clamp((lamp_intensity - 2) * 2,1,cell.charge) //Always try to use at least one charge per tick, but allow it to completely drain the cell. cell.use(amt) //Usage table: 1/tick if off/lowest setting, 4 = 4/tick, 6 = 8/tick, 8 = 12/tick, 10 = 16/tick else uneq_all() diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 2e0e9dadb4..585bf58d95 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -20,7 +20,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas head = /obj/item/clothing/head/helmet/swat @@ -39,7 +39,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/hardsuit/syndi shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/syndicate back = /obj/item/tank/jetpack/oxygen @@ -59,7 +59,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/syndicate back = /obj/item/tank/jetpack/oxygen/harness @@ -130,7 +130,7 @@ uniform = /obj/item/clothing/under/syndicate/camo suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat ears = /obj/item/radio/headset head = /obj/item/clothing/head/helmet/alt mask = /obj/item/clothing/mask/balaclava @@ -177,7 +177,7 @@ uniform = /obj/item/clothing/under/rank/security/officer suit = /obj/item/clothing/suit/armor/vest shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat ears = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/sechailer/swat head = /obj/item/clothing/head/helmet/swat/nanotrasen diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm index 0cc097dc08..90fdeb0a62 100644 --- a/code/modules/mob/living/simple_animal/damage_procs.dm +++ b/code/modules/mob/living/simple_animal/damage_procs.dm @@ -2,7 +2,7 @@ /mob/living/simple_animal/proc/adjustHealth(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE - bruteloss = round(CLAMP(bruteloss + amount, 0, maxHealth),DAMAGE_PRECISION) + bruteloss = round(clamp(bruteloss + amount, 0, maxHealth),DAMAGE_PRECISION) if(updating_health) updatehealth() return amount diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 9e1ae48bdd..cce5edc513 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -11,7 +11,7 @@ blood_volume = 350 speak_chance = 1 turns_per_move = 5 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcrab = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcrab = 4) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stomps" diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3b9700bb58..2045e194d2 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -175,7 +175,7 @@ AddElement(/datum/element/cleaning) /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() - if(ismovableatom(target)) + if(ismovable(target)) if(istype(target, /obj/effect/decal/cleanable)) visible_message("[src] cleans up \the [target].") qdel(target) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 5e75088f53..d2680fbf61 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -65,10 +65,10 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/Life() ..() - move_to_delay = CLAMP(round((health/maxHealth) * 10), 3, 10) + move_to_delay = clamp(round((health/maxHealth) * 10), 3, 10) /mob/living/simple_animal/hostile/megafauna/bubblegum/OpenFire() - anger_modifier = CLAMP(((maxHealth - health)/50),0,20) + anger_modifier = clamp(((maxHealth - health)/50),0,20) if(charging) return ranged_cooldown = world.time + ranged_cooldown_time 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 83d27e7ea6..73fb9d4e48 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -56,7 +56,7 @@ Difficulty: Very Hard L.dust() /mob/living/simple_animal/hostile/megafauna/colossus/OpenFire() - anger_modifier = CLAMP(((maxHealth - health)/50),0,20) + anger_modifier = clamp(((maxHealth - health)/50),0,20) ranged_cooldown = world.time + 120 if(enrage(target)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 4644992ad0..159f8a7f5c 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -105,7 +105,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/OpenFire() if(swooping) return - anger_modifier = CLAMP(((maxHealth - health)/50),0,20) + anger_modifier = clamp(((maxHealth - health)/50),0,20) ranged_cooldown = world.time + ranged_cooldown_time if(prob(15 + anger_modifier) && !client) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index a9d42373a2..477c2ce3aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -191,7 +191,7 @@ Difficulty: Normal /mob/living/simple_animal/hostile/megafauna/hierophant/proc/calculate_rage() //how angry we are overall did_reset = FALSE //oh hey we're doing SOMETHING, clearly we might need to heal if we recall - anger_modifier = CLAMP(((maxHealth - health) / 42),0,50) + anger_modifier = clamp(((maxHealth - health) / 42),0,50) burst_range = initial(burst_range) + round(anger_modifier * 0.08) beam_range = initial(beam_range) + round(anger_modifier * 0.12) 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 89d9919981..8487564c98 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 @@ -200,7 +200,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) visible_message("[name] burrows into the flesh of [H]!") var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L - if(H.dna.check_mutation(DWARFISM)) //dwarf legions aren't just fluff! + if(HAS_TRAIT(H, TRAIT_DWARF)) //dwarf legions aren't just fluff! L = new /mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf(H.loc) else L = new(H.loc) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 3feed2129b..230bb9ecb7 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -128,7 +128,7 @@ /mob/living/simple_animal/updatehealth() ..() - health = CLAMP(health, 0, maxHealth) + health = clamp(health, 0, maxHealth) /mob/living/simple_animal/update_stat() if(status_flags & GODMODE) diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index 4f8e271d6f..d5da6d76fc 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -190,7 +190,7 @@ step_away(M,src) M.Friends = Friends.Copy() babies += M - M.mutation_chance = CLAMP(mutation_chance+(rand(5,-5)),0,100) + M.mutation_chance = clamp(mutation_chance+(rand(5,-5)),0,100) SSblackbox.record_feedback("tally", "slime_babies_born", 1, M.colour) var/mob/living/simple_animal/slime/new_slime = pick(babies) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index fd786c8631..8fa1367aad 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -284,7 +284,7 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA /mob/proc/reset_perspective(atom/A) if(client) if(A) - if(ismovableatom(A)) + if(ismovable(A)) //Set the the thing unless it's us if(A != src) client.perspective = EYE_PERSPECTIVE diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 10abf460c6..cf86e962bd 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -20,7 +20,7 @@ dizziness = max(amount, 0) /** - * Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work + * Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work */ /mob/proc/blind_eyes(amount) var/old_blind = eye_blind || HAS_TRAIT(src, TRAIT_BLIND) @@ -90,8 +90,8 @@ return var/obj/screen/plane_master/game_world/GW = locate(/obj/screen/plane_master/game_world) in client.screen var/obj/screen/plane_master/floor/F = locate(/obj/screen/plane_master/floor) in client.screen - GW.add_filter("blurry_eyes", 2, EYE_BLUR(CLAMP(eye_blurry*0.1,0.6,3))) - F.add_filter("blurry_eyes", 2, EYE_BLUR(CLAMP(eye_blurry*0.1,0.6,3))) + GW.add_filter("blurry_eyes", 2, EYE_BLUR(clamp(eye_blurry*0.1,0.6,3))) + F.add_filter("blurry_eyes", 2, EYE_BLUR(clamp(eye_blurry*0.1,0.6,3))) /mob/proc/remove_eyeblur() if(!client) @@ -120,4 +120,4 @@ ///Adjust the body temperature of a mob, with min/max settings /mob/proc/adjust_bodytemperature(amount,min_temp=0,max_temp=INFINITY) if(bodytemperature >= min_temp && bodytemperature <= max_temp) - bodytemperature = CLAMP(bodytemperature + amount,min_temp,max_temp) + bodytemperature = clamp(bodytemperature + amount,min_temp,max_temp) diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 0090856d83..705888a427 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -54,8 +54,8 @@ return var/desired_x = input(user, "How high do you want the camera to shoot, between [picture_size_x_min] and [picture_size_x_max]?", "Zoom", picture_size_x) as num var/desired_y = input(user, "How wide do you want the camera to shoot, between [picture_size_y_min] and [picture_size_y_max]?", "Zoom", picture_size_y) as num - picture_size_x = min(CLAMP(desired_x, picture_size_x_min, picture_size_x_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) - picture_size_y = min(CLAMP(desired_y, picture_size_y_min, picture_size_y_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) + picture_size_x = min(clamp(desired_x, picture_size_x_min, picture_size_x_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) + picture_size_y = min(clamp(desired_y, picture_size_y_min, picture_size_y_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) return TRUE /obj/item/camera/attack(mob/living/carbon/human/M, mob/user) @@ -156,8 +156,8 @@ if(!isturf(target_turf)) blending = FALSE return FALSE - size_x = CLAMP(size_x, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) - size_y = CLAMP(size_y, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) + size_x = clamp(size_x, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) + size_y = clamp(size_y, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) var/list/desc = list("This is a photo of an area of [size_x+1] meters by [size_y+1] meters.") var/ai_user = isAI(user) var/list/seen diff --git a/code/modules/photography/camera/camera_image_capturing.dm b/code/modules/photography/camera/camera_image_capturing.dm index f25d80c050..5bd9c108d1 100644 --- a/code/modules/photography/camera/camera_image_capturing.dm +++ b/code/modules/photography/camera/camera_image_capturing.dm @@ -4,7 +4,7 @@ if(istype(A)) appearance = A.appearance dir = A.dir - if(ismovableatom(A)) + if(ismovable(A)) var/atom/movable/AM = A step_x = AM.step_x step_y = AM.step_y @@ -68,7 +68,7 @@ for(var/atom/A in sorted) var/xo = (A.x - center.x) * world.icon_size + A.pixel_x + xcomp var/yo = (A.y - center.y) * world.icon_size + A.pixel_y + ycomp - if(ismovableatom(A)) + if(ismovable(A)) var/atom/movable/AM = A xo += AM.step_x yo += AM.step_y diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index d29b0b62fd..6293c9c472 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -208,7 +208,7 @@ GLOB.apcs_list -= src if(malfai && operating) - malfai.malf_picker.processing_time = CLAMP(malfai.malf_picker.processing_time - 10,0,1000) + malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000) area.power_light = FALSE area.power_equip = FALSE area.power_environ = FALSE @@ -1447,7 +1447,7 @@ /obj/machinery/power/apc/proc/set_broken() if(malfai && operating) - malfai.malf_picker.processing_time = CLAMP(malfai.malf_picker.processing_time - 10,0,1000) + malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000) stat |= BROKEN operating = FALSE if(occupier) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 2e117bf241..425b4801b8 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -217,7 +217,7 @@ By design, d1 is the smallest direction and d2 is the highest /obj/structure/cable/proc/surplus() if(powernet) - return CLAMP(powernet.avail-powernet.load, 0, powernet.avail) + return clamp(powernet.avail-powernet.load, 0, powernet.avail) else return 0 @@ -233,7 +233,7 @@ By design, d1 is the smallest direction and d2 is the highest /obj/structure/cable/proc/delayed_surplus() if(powernet) - return CLAMP(powernet.newavail - powernet.delayedload, 0, powernet.newavail) + return clamp(powernet.newavail - powernet.delayedload, 0, powernet.newavail) else return 0 diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 93fe7e8fa6..cc321fdb4d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -157,7 +157,7 @@ /obj/item/stock_parts/cell/proc/get_electrocute_damage() if(charge >= 1000) - return CLAMP(round(charge/10000), 10, 90) + rand(-5,5) + return clamp(round(charge/10000), 10, 90) + rand(-5,5) else return 0 @@ -334,7 +334,7 @@ . = ..() if(. & EMP_PROTECT_SELF) return - charge = CLAMP((charge-(10000/severity)),0,maxcharge) + charge = clamp((charge-(10000/severity)),0,maxcharge) /obj/item/stock_parts/cell/emergency_light name = "miniature power cell" diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 02ff4127eb..7ad9f3a6ce 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -314,7 +314,7 @@ . = ..() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) if(on && status == LIGHT_OK) - SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, CLAMP(light_power*250, 30, 200)) + SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, clamp(light_power*250, 30, 200)) // update the icon_state and luminosity of the light depending on its state diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index fba526edbd..4cec49945a 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -42,7 +42,7 @@ /obj/machinery/power/proc/surplus() if(powernet) - return CLAMP(powernet.avail-powernet.load, 0, powernet.avail) + return clamp(powernet.avail-powernet.load, 0, powernet.avail) else return 0 @@ -58,7 +58,7 @@ /obj/machinery/power/proc/delayed_surplus() if(powernet) - return CLAMP(powernet.newavail - powernet.delayedload, 0, powernet.newavail) + return clamp(powernet.newavail - powernet.delayedload, 0, powernet.newavail) else return 0 diff --git a/code/modules/power/powernet.dm b/code/modules/power/powernet.dm index 3b70383bee..65d5202ff4 100644 --- a/code/modules/power/powernet.dm +++ b/code/modules/power/powernet.dm @@ -96,6 +96,6 @@ /datum/powernet/proc/get_electrocute_damage() if(avail >= 1000) - return CLAMP(round(avail/10000), 10, 90) + rand(-5,5) + return clamp(round(avail/10000), 10, 90) + rand(-5,5) else return 0 \ No newline at end of file diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index c471047682..ed3a098dae 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -201,7 +201,7 @@ // if(defer_powernet_rebuild != 2) // defer_powernet_rebuild = 1 for(var/atom/X in urange(consume_range,src,1)) - if(isturf(X) || ismovableatom(X)) + if(isturf(X) || ismovable(X)) consume(X) // if(defer_powernet_rebuild != 2) // defer_powernet_rebuild = 0 diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 47de07cd71..41ed28f0a5 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -220,7 +220,7 @@ . += "smes-og[clevel]" /obj/machinery/power/smes/proc/chargedisplay() - return CLAMP(round(5.5*charge/capacity),0,5) + return clamp(round(5.5*charge/capacity),0,5) /obj/machinery/power/smes/process() if(stat & BROKEN) @@ -372,7 +372,7 @@ target = text2num(target) . = TRUE if(.) - input_level = CLAMP(target, 0, input_level_max) + input_level = clamp(target, 0, input_level_max) log_smes(usr) if("output") var/target = params["target"] @@ -394,7 +394,7 @@ target = text2num(target) . = TRUE if(.) - output_level = CLAMP(target, 0, output_level_max) + output_level = clamp(target, 0, output_level_max) log_smes(usr) /obj/machinery/power/smes/proc/log_smes(mob/user) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 73ea3ccd59..89452affcb 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -28,10 +28,8 @@ /obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S) . = ..() panel = new() -#if DM_VERSION >= 513 panel.vis_flags = VIS_INHERIT_ID|VIS_INHERIT_ICON|VIS_INHERIT_PLANE vis_contents += panel -#endif panel.icon = icon panel.icon_state = "solar_panel" panel.layer = FLY_LAYER @@ -170,7 +168,7 @@ else //dot product of sun and panel -- Lambert's Cosine Law . = cos(azimuth_current - sun_azimuth) - . = CLAMP(round(., 0.01), 0, 1) + . = clamp(round(., 0.01), 0, 1) sunfrac = . /obj/machinery/power/solar/process() @@ -385,7 +383,7 @@ if(adjust) value = azimuth_rate + adjust if(value != null) - azimuth_rate = round(CLAMP(value, -2 * SSsun.base_rotation, 2 * SSsun.base_rotation), 0.01) + azimuth_rate = round(clamp(value, -2 * SSsun.base_rotation, 2 * SSsun.base_rotation), 0.01) return TRUE return FALSE if(action == "tracking") @@ -464,7 +462,7 @@ ///Rotates the panel to the passed angles /obj/machinery/power/solar_control/proc/set_panels(azimuth) - azimuth = CLAMP(round(azimuth, 0.01), -360, 719.99) + azimuth = clamp(round(azimuth, 0.01), -360, 719.99) if(azimuth >= 360) azimuth -= 360 if(azimuth < 0) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index f91dc43990..92d97365b3 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -346,7 +346,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) else if(takes_damage) //causing damage - damage = max(damage + (max(CLAMP(removed.total_moles() / 200, 0.5, 1) * removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) + damage = max(damage + (max(clamp(removed.total_moles() / 200, 0.5, 1) * removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER, 0) damage = max(damage + (max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80) * DAMAGE_INCREASE_MULTIPLIER, 0) @@ -389,10 +389,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25) if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && co2comp > POWERLOSS_INHIBITION_GAS_THRESHOLD) - powerloss_dynamic_scaling = CLAMP(powerloss_dynamic_scaling + CLAMP(co2comp - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) + powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(co2comp - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) else - powerloss_dynamic_scaling = CLAMP(powerloss_dynamic_scaling - 0.05,0, 1) - powerloss_inhibitor = CLAMP(1-(powerloss_dynamic_scaling * CLAMP(combined_gas/POWERLOSS_INHIBITION_MOLE_BOOST_THRESHOLD,1 ,1.5)),0 ,1) + powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling - 0.05,0, 1) + powerloss_inhibitor = clamp(1-(powerloss_dynamic_scaling * clamp(combined_gas/POWERLOSS_INHIBITION_MOLE_BOOST_THRESHOLD,1 ,1.5)),0 ,1) if(matter_power) var/removed_matter = max(matter_power/MATTER_POWER_CONVERSION, 40) @@ -442,7 +442,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) var/D = sqrt(1 / max(1, get_dist(l, src))) l.hallucination += power_calc * config_hallucination_power * D - l.hallucination = CLAMP(0, 200, l.hallucination) + l.hallucination = clamp(0, 200, l.hallucination) for(var/mob/living/l in range(src, round((power / 100) ** 0.25))) var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) ) @@ -452,7 +452,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if ((100-get_integrity()) < 75) power = (power_calc * ((100 - (0.15*(100-get_integrity()) - 5)**2) / 100)) + power_calc*0.1 else - power = power_calc * (((100-get_integrity())^((3*(100-get_integrity()))/1000) + 2*(100-get_integrity()))/100) //new and improved, more linear + power = power_calc * (((100-get_integrity())**((3*(100-get_integrity()))/1000) + 2*(100-get_integrity()))/100) //new and improved, more linear //power = power_calc * ((((100-get_integrity())**1.3)-(2*(100-get_integrity())))/100) if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point) @@ -466,7 +466,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) supermatter_zap(src, 5, min(power*2, 20000)) else if (damage > damage_penalty_point && prob(20)) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10) - supermatter_zap(src, 5, CLAMP(power*2, 4000, 20000)) + supermatter_zap(src, 5, clamp(power*2, 4000, 20000)) if(prob(15) && power > POWER_PENALTY_THRESHOLD) supermatter_pull(src, power/750) @@ -736,7 +736,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) /obj/machinery/power/supermatter_crystal/proc/supermatter_pull(turf/center, pull_range = 10) playsound(src.loc, 'sound/weapons/marauder.ogg', 100, 1, extrarange = 7) for(var/atom/P in orange(pull_range,center)) - if(ismovableatom(P)) + if(ismovable(P)) var/atom/movable/pulled_object = P if(ishuman(P)) var/mob/living/carbon/human/H = P diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 1b08693d1c..e98fe3c88e 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -65,7 +65,7 @@ pixel_x = -32 pixel_y = -32 for (var/ball in orbiting_balls) - var/range = rand(1, CLAMP(orbiting_balls.len, 3, 7)) + var/range = rand(1, clamp(orbiting_balls.len, 3, 7)) tesla_zap(ball, range, TESLA_MINI_POWER/7*range) else energy = 0 // ensure we dont have miniballs of miniballs diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index 58a5bfb497..461166ab0d 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -1,28 +1,28 @@ // 10mm (Stechkin) /obj/item/ammo_casing/c10mm - name = ".10mm bullet casing" + name = "10mm bullet casing" desc = "A 10mm bullet casing." caliber = "10mm" projectile_type = /obj/item/projectile/bullet/c10mm /obj/item/ammo_casing/c10mm/ap - name = ".10mm armor-piercing bullet casing" + name = "10mm armor-piercing bullet casing" desc = "A 10mm armor-piercing bullet casing." projectile_type = /obj/item/projectile/bullet/c10mm_ap /obj/item/ammo_casing/c10mm/hp - name = ".10mm hollow-point bullet casing" + name = "10mm hollow-point bullet casing" desc = "A 10mm hollow-point bullet casing." projectile_type = /obj/item/projectile/bullet/c10mm_hp /obj/item/ammo_casing/c10mm/fire - name = ".10mm incendiary bullet casing" + name = "10mm incendiary bullet casing" desc = "A 10mm incendiary bullet casing." projectile_type = /obj/item/projectile/bullet/incendiary/c10mm /obj/item/ammo_casing/c10mm/soporific - name = ".10mm soporific bullet casing" + name = "10mm soporific bullet casing" desc = "A 10mm soporific bullet casing." projectile_type = /obj/item/projectile/bullet/c10mm/soporific diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 4f37cf3ba9..594734c86a 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -112,11 +112,7 @@ update_icon() /obj/item/ammo_box/update_icon() - switch(multiple_sprites) - if(1) - icon_state = "[initial(icon_state)]-[stored_ammo.len]" - if(2) - icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]" + . = ..() desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!" for (var/material in bullet_cost) var/material_amount = bullet_cost[material] @@ -124,6 +120,13 @@ custom_materials[material] = material_amount set_custom_materials(custom_materials)//make sure we setup the correct properties again +/obj/item/ammo_box/update_icon_state() + switch(multiple_sprites) + if(1) + icon_state = "[initial(icon_state)]-[stored_ammo.len]" + if(2) + icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]" + //Behavior for magazines /obj/item/ammo_box/magazine/proc/ammo_count() return stored_ammo.len diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index e0c84e7047..ff3f127817 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -232,7 +232,7 @@ ..() if(!automatic_charge_overlays) return - var/ratio = can_shoot() ? CEILING(CLAMP(cell.charge / cell.maxcharge, 0, 1) * charge_sections, 1) : 0 + var/ratio = can_shoot() ? CEILING(clamp(cell.charge / cell.maxcharge, 0, 1) * charge_sections, 1) : 0 // Sets the ratio to 0 if the gun doesn't have enough charge to fire, or if it's power cell is removed. // TG issues #5361 & #47908 if(ratio == old_ratio && !force_update) diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index f230dc7fea..f8ddcb5aae 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -318,7 +318,7 @@ AC.sync_stats() /obj/item/gun/energy/beam_rifle/proc/delay_penalty(amount) - aiming_time_left = CLAMP(aiming_time_left + amount, 0, aiming_time) + aiming_time_left = clamp(aiming_time_left + amount, 0, aiming_time) /obj/item/ammo_casing/energy/beam_rifle name = "particle acceleration lens" @@ -369,11 +369,11 @@ HS_BB.stun = projectile_stun HS_BB.impact_structure_damage = impact_structure_damage HS_BB.aoe_mob_damage = aoe_mob_damage - HS_BB.aoe_mob_range = CLAMP(aoe_mob_range, 0, 15) //Badmin safety lock + HS_BB.aoe_mob_range = clamp(aoe_mob_range, 0, 15) //Badmin safety lock HS_BB.aoe_fire_chance = aoe_fire_chance HS_BB.aoe_fire_range = aoe_fire_range HS_BB.aoe_structure_damage = aoe_structure_damage - HS_BB.aoe_structure_range = CLAMP(aoe_structure_range, 0, 15) //Badmin safety lock + HS_BB.aoe_structure_range = clamp(aoe_structure_range, 0, 15) //Badmin safety lock HS_BB.wall_devastate = wall_devastate HS_BB.wall_pierce_amount = wall_pierce_amount HS_BB.structure_pierce_amount = structure_piercing @@ -465,7 +465,7 @@ else target.ex_act(EXPLODE_HEAVY) return TRUE - if(ismovableatom(target)) + if(ismovable(target)) var/atom/movable/AM = target if(AM.density && !AM.CanPass(src, get_turf(target)) && !ismob(AM)) if(structure_pierce < structure_pierce_amount) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6094a7aa46..b4303dd5a0 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -224,7 +224,7 @@ /obj/item/projectile/proc/vol_by_damage() if(src.damage) - return CLAMP((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 100 + return clamp((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 100 else return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume @@ -255,7 +255,7 @@ def_zone = ran_zone(def_zone, max(100-(7*distance), 5) * zone_accuracy_factor) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. if(isturf(A) && hitsound_wall) - var/volume = CLAMP(vol_by_damage() + 20, 0, 100) + var/volume = clamp(vol_by_damage() + 20, 0, 100) if(suppressed) volume = 5 playsound(loc, hitsound_wall, volume, 1, -1) @@ -392,7 +392,7 @@ stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") qdel(src) return - var/turf/target = locate(CLAMP(starting + xo, 1, world.maxx), CLAMP(starting + yo, 1, world.maxy), starting.z) + var/turf/target = locate(clamp(starting + xo, 1, world.maxx), clamp(starting + yo, 1, world.maxy), starting.z) setAngle(Get_Angle(src, target)) original_angle = Angle if(!nondirectional_sprite) @@ -525,10 +525,10 @@ if(!homing_target) return FALSE var/datum/point/PT = RETURN_PRECISE_POINT(homing_target) - PT.x += CLAMP(homing_offset_x, 1, world.maxx) - PT.y += CLAMP(homing_offset_y, 1, world.maxy) + PT.x += clamp(homing_offset_x, 1, world.maxx) + PT.y += clamp(homing_offset_y, 1, world.maxy) var/angle = closer_angle_difference(Angle, angle_between_points(RETURN_PRECISE_POINT(src), PT)) - setAngle(Angle + CLAMP(angle, -homing_turn_speed, homing_turn_speed)) + setAngle(Angle + clamp(angle, -homing_turn_speed, homing_turn_speed)) /obj/item/projectile/proc/set_homing_target(atom/A) if(!A || (!isturf(A) && !isturf(A.loc))) @@ -622,7 +622,7 @@ var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y - angle = ATAN2(y - oy, x - ox) + angle = arctan(y - oy, x - ox) return list(angle, p_x, p_y) /obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 06d94414be..25809cc7ca 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -60,11 +60,11 @@ if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? M.reagents.add_reagent(R.type, R.volume) else - var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1) + var/transVol = clamp(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1) M.reagents.add_reagent(R.type, transVol) else if(!R.overdose_threshold == 0) - var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) + var/transVol = clamp(R.volume, 0, R.overdose_threshold-1) M.reagents.add_reagent(R.type, transVol) else M.reagents.add_reagent(R.type, R.volume) diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 4411334883..ff95b65a49 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -51,7 +51,7 @@ /obj/item/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE) . = ..() - if(ismovableatom(target)) + if(ismovable(target)) var/atom/movable/M = target var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) M.safe_throw_at(throw_target, 3, 2) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 89dd229407..f4c06f39cc 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -728,7 +728,7 @@ return //Make sure things are limited, but superacids/bases can push forward the reaction - pH = CLAMP(pH, 0, 14) + pH = clamp(pH, 0, 14) //return said amount to compare for next step. return (reactedVol) @@ -849,7 +849,7 @@ /datum/reagents/proc/adjust_thermal_energy(J, min_temp = 2.7, max_temp = 1000) var/S = specific_heat() - chem_temp = CLAMP(chem_temp + (J / (S * total_volume)), min_temp, max_temp) + chem_temp = clamp(chem_temp + (J / (S * total_volume)), min_temp, max_temp) if(istype(my_atom, /obj/item/reagent_containers)) var/obj/item/reagent_containers/RC = my_atom RC.temp_check() @@ -877,7 +877,7 @@ for (var/datum/reagent/reagentgas in reagent_list) R.add_reagent(reagentgas, amount/5) remove_reagent(reagentgas, amount/5) - s.set_up(R, CLAMP(amount/10, 0, 2), T) + s.set_up(R, clamp(amount/10, 0, 2), T) s.start() return FALSE @@ -995,7 +995,7 @@ RC.pH_check()//checks beaker resilience) //clamp the removal amount to be between current reagent amount //and zero, to prevent removing more than the holder has stored - amount = CLAMP(amount, 0, R.volume) + amount = clamp(amount, 0, R.volume) R.volume -= amount update_total() if(!safety)//So it does not handle reactions when it need not to diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 63e9d724a4..8572d30efe 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -151,7 +151,7 @@ target = text2num(target) . = TRUE if(.) - target_temperature = CLAMP(target, 0, 1000) + target_temperature = clamp(target, 0, 1000) if("eject") on = FALSE replace_beaker(usr) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 5eb5b94de9..725b967a63 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) return 0 if(method == VAPOR) //smoke, foam, spray if(M.reagents) - var/modifier = CLAMP((1 - touch_protection), 0, 1) + var/modifier = clamp((1 - touch_protection), 0, 1) var/amount = round(reac_volume*modifier, 0.1) if(amount >= 0.5) M.reagents.add_reagent(type, amount) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index abe5c7de46..8194392871 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -728,7 +728,7 @@ All effects don't start immediately, but rather get worse over time; the rate is var/real_dorf = isdwarf(M) //_species(H, /datum/species/dwarf) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.dna.check_mutation(DWARFISM) || HAS_TRAIT(H, TRAIT_ALCOHOL_TOLERANCE) || real_dorf) + if(HAS_TRAIT(H, TRAIT_DWARF) || HAS_TRAIT(H, TRAIT_ALCOHOL_TOLERANCE || real_dorf)) to_chat(H, "Now THAT is MANLY!") if(real_dorf) boozepwr = 100 // Don't want dwarves to die because of a low booze power @@ -1124,7 +1124,7 @@ All effects don't start immediately, but rather get worse over time; the rate is var/datum/antagonist/changeling/changeling = M.mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) changeling.chem_charges += metabolization_rate - changeling.chem_charges = CLAMP(changeling.chem_charges, 0, changeling.chem_storage) + changeling.chem_charges = clamp(changeling.chem_charges, 0, changeling.chem_storage) return ..() /datum/reagent/consumable/ethanol/irishcarbomb diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index ebbce61c57..85f474920b 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -330,7 +330,6 @@ description = "Encourages the patient to go golfing." color = "#FFB766" quality = DRINK_NICE - nutriment_factor = 2 taste_description = "bitter tea" glass_icon_state = "arnold_palmer" glass_name = "Arnold Palmer" @@ -384,6 +383,7 @@ /datum/reagent/consumable/space_cola name = "Cola" description = "A refreshing beverage." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#100800" // rgb: 16, 8, 0 taste_description = "cola" glass_icon_state = "glass_brown" @@ -418,6 +418,7 @@ /datum/reagent/consumable/spacemountainwind name = "SM Wind" description = "Blows right through you like a space wind." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#102000" // rgb: 16, 32, 0 taste_description = "sweet citrus soda" glass_icon_state = "Space_mountain_wind_glass" @@ -435,6 +436,7 @@ /datum/reagent/consumable/dr_gibb name = "Dr. Gibb" description = "A delicious blend of 42 different flavours." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#102000" // rgb: 16, 32, 0 taste_description = "cherry soda" // FALSE ADVERTISING glass_icon_state = "dr_gibb_glass" @@ -449,6 +451,7 @@ /datum/reagent/consumable/space_up name = "Space-Up" description = "Tastes like a hull breach in your mouth." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#00FF00" // rgb: 0, 255, 0 taste_description = "cherry soda" glass_icon_state = "space-up_glass" @@ -463,6 +466,7 @@ /datum/reagent/consumable/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "tangy lime and lemon soda" glass_icon_state = "glass_yellow" @@ -476,6 +480,7 @@ /datum/reagent/consumable/pwr_game name = "Pwr Game" description = "The only drink with the PWR that true gamers crave." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#9385bf" // rgb: 58, 52, 75 taste_description = "sweet and salty tang" glass_icon_state = "glass_red" @@ -489,6 +494,7 @@ /datum/reagent/consumable/shamblers name = "Shambler's Juice" description = "~Shake me up some of that Shambler's Juice!~" + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#f00060" // rgb: 94, 0, 38 taste_description = "carbonated metallic soda" glass_icon_state = "glass_red" @@ -502,6 +508,7 @@ /datum/reagent/consumable/buzz_fuzz name = "Buzz Fuzz" description = "~A Hive of Flavour!~ NOTICE: Addicting." + nutriment_factor = 0 addiction_threshold = 26 //A can and a sip color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "carbonated honey and pollen" @@ -572,6 +579,7 @@ /datum/reagent/consumable/sodawater name = "Soda Water" description = "A can of club soda. Why not make a scotch and soda?" + nutriment_factor = 0 color = "#619494" // rgb: 97, 148, 148 taste_description = "carbonated water" glass_icon_state = "glass_clear" @@ -604,6 +612,7 @@ /datum/reagent/consumable/ice name = "Ice" description = "Frozen water, your dentist wouldn't like you chewing this." + nutriment_factor = 0 //Its water why would this even geive nutriments? reagent_state = SOLID color = "#619494" // rgb: 97, 148, 148 taste_description = "ice" @@ -705,7 +714,7 @@ description = "A cherry flavored milkshake." color = "#FFB6C1" quality = DRINK_VERYGOOD - nutriment_factor = 4 * REAGENTS_METABOLISM + nutriment_factor = 2 * REAGENTS_METABOLISM taste_description = "creamy cherry" glass_icon_state = "cherryshake" glass_name = "cherry shake" @@ -716,7 +725,7 @@ description = "An exotic milkshake." color = "#00F1FF" quality = DRINK_VERYGOOD - nutriment_factor = 4 * REAGENTS_METABOLISM + nutriment_factor = 2 * REAGENTS_METABOLISM taste_description = "creamy blue cherry" glass_icon_state = "bluecherryshake" glass_name = "blue cherry shake" @@ -727,7 +736,7 @@ description = "A mix of pumpkin juice and coffee." color = "#F4A460" quality = DRINK_VERYGOOD - nutriment_factor = 3 * REAGENTS_METABOLISM + nutriment_factor = 2 * REAGENTS_METABOLISM taste_description = "creamy pumpkin" glass_icon_state = "pumpkin_latte" glass_name = "pumpkin latte" @@ -738,7 +747,7 @@ description = "Ice cream on top of a Dr. Gibb glass." color = "#B22222" quality = DRINK_NICE - nutriment_factor = 3 * REAGENTS_METABOLISM + nutriment_factor = 1 * REAGENTS_METABOLISM taste_description = "creamy cherry" glass_icon_state = "gibbfloats" glass_name = "Gibbfloat" @@ -845,6 +854,7 @@ /datum/reagent/consumable/sol_dry name = "Sol Dry" description = "A soothing, mellow drink made from ginger." + nutriment_factor = 0.5 * REAGENTS_METABOLISM color = "#f7d26a" quality = DRINK_NICE taste_description = "sweet ginger spice" @@ -889,7 +899,7 @@ description = "A drink of a bygone era of milk and artificial sweetener back on a rock." color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinkmilk" - quality = DRINK_FANTASTIC //Love drink + quality = DRINK_FANTASTIC taste_description = "sweet strawberry and milk cream" glass_name = "tall glass of strawberry milk" glass_desc = "Delicious flavored strawberry syrup mixed with milk." @@ -905,7 +915,7 @@ description = "A timeless classic!" color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinktea" - quality = DRINK_FANTASTIC //Love drink + quality = DRINK_FANTASTIC taste_description = "sweet tea with a hint of strawberry" glass_name = "mug of strawberry tea" glass_desc = "Delicious traditional tea flavored with strawberries." diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index c96feec4e2..086515d9dd 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -196,7 +196,7 @@ . = 1 /datum/reagent/drug/methamphetamine/overdose_process(mob/living/M) - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i in 1 to 4) step(M, pick(GLOB.cardinals)) if(prob(20)) @@ -223,7 +223,7 @@ ..() /datum/reagent/drug/methamphetamine/addiction_act_stage3(mob/living/M) - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 4, i++) step(M, pick(GLOB.cardinals)) M.Jitter(15) @@ -233,7 +233,7 @@ ..() /datum/reagent/drug/methamphetamine/addiction_act_stage4(mob/living/carbon/human/M) - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(20) @@ -285,7 +285,7 @@ M.adjustStaminaLoss(-5, 0) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) M.hallucination += 5 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) step(M, pick(GLOB.cardinals)) step(M, pick(GLOB.cardinals)) ..() @@ -293,7 +293,7 @@ /datum/reagent/drug/bath_salts/overdose_process(mob/living/M) M.hallucination += 5 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i in 1 to 8) step(M, pick(GLOB.cardinals)) if(prob(20)) @@ -304,7 +304,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage1(mob/living/M) M.hallucination += 10 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(5) @@ -315,7 +315,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage2(mob/living/M) M.hallucination += 20 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(10) @@ -327,7 +327,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage3(mob/living/M) M.hallucination += 30 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 12, i++) step(M, pick(GLOB.cardinals)) M.Jitter(15) @@ -339,7 +339,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage4(mob/living/carbon/human/M) M.hallucination += 30 - if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) for(var/i = 0, i < 16, i++) step(M, pick(GLOB.cardinals)) M.Jitter(50) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 819af8513f..24c518b70b 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -41,7 +41,7 @@ name = "Nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM + nutriment_factor = 10 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 var/brute_heal = 1 @@ -91,7 +91,7 @@ name = "Vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." value = 0.5 - + nutriment_factor = 15 * REAGENTS_METABOLISM //The are the best food for you! brute_heal = 1 burn_heal = 1 @@ -107,7 +107,7 @@ taste_mult = 0.8 value = 1 taste_description = "oil" - nutriment_factor = 7 * REAGENTS_METABOLISM //Not very healthy on its own + nutriment_factor = 5 * REAGENTS_METABOLISM //Not very healthy on its own metabolization_rate = 10 * REAGENTS_METABOLISM var/fry_temperature = 450 //Around ~350 F (117 C) which deep fryers operate around in the real world var/boiling //Used in mob life to determine if the oil kills, and only on touch application @@ -151,7 +151,7 @@ reagent_state = SOLID color = "#FFFFFF" // rgb: 255, 255, 255 taste_mult = 1.5 // stop sugar drowning out other flavours - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 3 * REAGENTS_METABOLISM metabolization_rate = 2 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock taste_description = "sweetness" @@ -177,21 +177,20 @@ /datum/reagent/consumable/soysauce name = "Soysauce" description = "A salty sauce made from the soy plant." - nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 taste_description = "umami" /datum/reagent/consumable/ketchup name = "Ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 3 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 taste_description = "ketchup" /datum/reagent/consumable/mustard name = "Mustard" description = "Mustard, mostly used on hotdogs, corndogs and burgers." - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 3 * REAGENTS_METABOLISM color = "#DDED26" // rgb: 221, 237, 38 taste_description = "mustard" @@ -376,14 +375,13 @@ name = "Coco Powder" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 3 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 taste_description = "bitterness" /datum/reagent/consumable/hot_coco name = "Hot Chocolate" description = "Made with love! And coco beans." - nutriment_factor = 3 * REAGENTS_METABOLISM color = "#660000" // rgb: 221, 202, 134 taste_description = "creamy chocolate" glass_icon_state = "chocolateglass" @@ -486,13 +484,13 @@ description = "A popular food paste made from ground dry-roasted peanuts." color = "#C29261" value = 3 - nutriment_factor = 15 * REAGENTS_METABOLISM + nutriment_factor = 10 * REAGENTS_METABOLISM taste_description = "peanuts" /datum/reagent/consumable/cornoil name = "Corn Oil" description = "An oil derived from various types of corn." - nutriment_factor = 20 * REAGENTS_METABOLISM + nutriment_factor = 12 * REAGENTS_METABOLISM value = 4 color = "#302000" // rgb: 48, 32, 0 taste_description = "slime" @@ -624,7 +622,7 @@ description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" value = 15 - nutriment_factor = 15 * REAGENTS_METABOLISM + nutriment_factor = 10 * REAGENTS_METABOLISM metabolization_rate = 1 * REAGENTS_METABOLISM taste_description = "sweetness" @@ -694,7 +692,7 @@ name = "Stabilized Nutriment" description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat." reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM + nutriment_factor = 12 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 /datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M) @@ -805,7 +803,7 @@ /datum/reagent/consumable/caramel name = "Caramel" description = "Who would have guessed that heated sugar could be so delicious?" - nutriment_factor = 10 * REAGENTS_METABOLISM + nutriment_factor = 4 * REAGENTS_METABOLISM color = "#D98736" taste_mult = 2 taste_description = "caramel" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index e66ebc5f20..484bea7206 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -271,9 +271,9 @@ /datum/reagent/water/reaction_obj(obj/O, reac_volume) O.extinguish() O.acid_level = 0 - // Monkey cube - if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube)) - var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O + // cubes + if(istype(O, /obj/item/reagent_containers/food/snacks/cube)) + var/obj/item/reagent_containers/food/snacks/cube/cube = O cube.Expand() // Dehydrated carp @@ -2023,9 +2023,9 @@ /datum/reagent/peaceborg_confuse/on_mob_life(mob/living/carbon/M) if(M.confused < 6) - M.confused = CLAMP(M.confused + 3, 0, 5) + M.confused = clamp(M.confused + 3, 0, 5) if(M.dizziness < 6) - M.dizziness = CLAMP(M.dizziness + 3, 0, 5) + M.dizziness = clamp(M.dizziness + 3, 0, 5) if(prob(20)) to_chat(M, "You feel confused and disorientated.") ..() diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 0b32952d20..9cf9acb424 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -105,7 +105,7 @@ if(St.purity < 1) St.volume *= St.purity St.purity = 1 - var/amount = CLAMP(0.002, 0, N.volume) + var/amount = clamp(0.002, 0, N.volume) N.volume -= amount St.data["grown_volume"] = St.data["grown_volume"] + added_volume St.name = "[initial(St.name)] [round(St.data["grown_volume"], 0.1)]u colony" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 2c8be10ace..8782d65f76 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -195,7 +195,7 @@ return holder.remove_reagent(/datum/reagent/sorium, multiplier*4) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(multiplier*4), 1, 6) + var/range = clamp(sqrt(multiplier*4), 1, 6) goonchem_vortex(T, 1, range) /datum/chemical_reaction/sorium_vortex @@ -206,7 +206,7 @@ /datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(multiplier), 1, 6) + var/range = clamp(sqrt(multiplier), 1, 6) goonchem_vortex(T, 1, range) /datum/chemical_reaction/liquid_dark_matter @@ -220,7 +220,7 @@ return holder.remove_reagent(/datum/reagent/liquid_dark_matter, multiplier*3) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(multiplier*3), 1, 6) + var/range = clamp(sqrt(multiplier*3), 1, 6) goonchem_vortex(T, 0, range) /datum/chemical_reaction/ldm_vortex @@ -231,7 +231,7 @@ /datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(multiplier/2), 1, 6) + var/range = clamp(sqrt(multiplier/2), 1, 6) goonchem_vortex(T, 0, range) /datum/chemical_reaction/flash_powder diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index eb473950d5..ead47e2a42 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -42,7 +42,7 @@ /datum/chemical_reaction/slime/slimemonkey/on_reaction(datum/reagents/holder) for(var/i in 1 to 3) - new /obj/item/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom)) + new /obj/item/reagent_containers/food/snacks/cube/monkey(get_turf(holder.my_atom)) ..() //Green diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 89de7c409d..f326b94e44 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -185,7 +185,7 @@ START_PROCESSING(SSobj, src) else if((reagents.pH < -3) || (reagents.pH > 17)) visible_message("[icon2html(src, viewers(src))] \The [src] is damaged by the super pH and begins to deform!") - reagents.pH = CLAMP(reagents.pH, -3, 17) + reagents.pH = clamp(reagents.pH, -3, 17) container_HP -= 1 diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 62ca5d658e..7fea8250d9 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -66,7 +66,7 @@ /obj/item/reagent_containers/spray/proc/spray(atom/A) - var/range = CLAMP(get_dist(src, A), 1, current_range) + var/range = clamp(get_dist(src, A), 1, current_range) var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src)) D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE) var/puff_reagent_left = range //how many turf, mob or dense objet we can react with before we consider the chem puff consumed diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index fc4a95e58d..eda8e1b3a3 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -181,7 +181,7 @@ ///Used by update_icon() and update_overlays() /obj/item/reagent_containers/syringe/proc/get_rounded_vol() if(reagents && reagents.total_volume) - return CLAMP(round((reagents.total_volume / volume * 15),5), 1, 15) + return clamp(round((reagents.total_volume / volume * 15),5), 1, 15) else return 0 diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index d6ad1bf042..b47f0de032 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -57,7 +57,7 @@ return ..() /obj/structure/bigDelivery/relay_container_resist(mob/living/user, obj/O) - if(ismovableatom(loc)) + if(ismovable(loc)) var/atom/movable/AM = loc //can't unwrap the wrapped container if it's inside something. AM.relay_container_resist(user, O) return diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index e82dffbe07..c2bf817ddf 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -72,7 +72,7 @@ id = "mcube" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 250) - build_path = /obj/item/reagent_containers/food/snacks/monkeycube + build_path = /obj/item/reagent_containers/food/snacks/cube/monkey category = list("initial", "Food") /datum/design/smeat diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 04b7bbc668..e407277ebf 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -635,3 +635,27 @@ build_path = /obj/item/circuitboard/computer/sat_control category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + + + +///////////////////////////////////////// +////////////Tackle Gloves//////////////// +///////////////////////////////////////// + +/datum/design/tackle_dolphin + name = "Dolphin Gloves" + id = "tackle_dolphin" + build_type = PROTOLATHE + materials = list(/datum/material/plastic = 2500) + build_path = /obj/item/clothing/gloves/tackler/dolphin + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/tackle_rocket + name = "Rocket Gloves" + id = "tackle_rocket" + build_type = PROTOLATHE + materials = list(/datum/material/plasma = 1000, /datum/material/plastic = 2000) + build_path = /obj/item/clothing/gloves/tackler/rocket + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 41ed6a556e..bd571607d2 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -141,7 +141,7 @@ say("Mineral access is on hold, please contact the quartermaster.") return FALSE var/power = 1000 - amount = CLAMP(amount, 1, 50) + amount = clamp(amount, 1, 50) for(var/M in D.materials) power += round(D.materials[M] * amount / 35) power = min(3000, power) diff --git a/code/modules/research/nanites/extra_settings/number.dm b/code/modules/research/nanites/extra_settings/number.dm index 6e63ae067e..75489635f5 100644 --- a/code/modules/research/nanites/extra_settings/number.dm +++ b/code/modules/research/nanites/extra_settings/number.dm @@ -16,7 +16,7 @@ value = text2num(value) if(!value || !isnum(value)) return - src.value = CLAMP(value, min, max) + src.value = clamp(value, min, max) /datum/nanite_extra_setting/number/get_copy() return new /datum/nanite_extra_setting/number(value, min, max, unit) diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm index 0750d3d268..4650af5c80 100644 --- a/code/modules/research/nanites/nanite_chamber_computer.dm +++ b/code/modules/research/nanites/nanite_chamber_computer.dm @@ -72,14 +72,14 @@ if("set_safety") var/threshold = text2num(params["value"]) if(!isnull(threshold)) - chamber.set_safety(CLAMP(round(threshold, 1),0,500)) + chamber.set_safety(clamp(round(threshold, 1),0,500)) playsound(src, "terminal_type", 25, FALSE) chamber.occupant.investigate_log("'s nanites' safety threshold was set to [threshold] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE if("set_cloud") var/cloud_id = text2num(params["value"]) if(!isnull(cloud_id)) - chamber.set_cloud(CLAMP(round(cloud_id, 1),0,100)) + chamber.set_cloud(clamp(round(cloud_id, 1),0,100)) playsound(src, "terminal_type", 25, FALSE) chamber.occupant.investigate_log("'s nanites' cloud id was set to [cloud_id] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE diff --git a/code/modules/research/nanites/nanite_cloud_controller.dm b/code/modules/research/nanites/nanite_cloud_controller.dm index 439d0c5750..f9d4d71b01 100644 --- a/code/modules/research/nanites/nanite_cloud_controller.dm +++ b/code/modules/research/nanites/nanite_cloud_controller.dm @@ -174,7 +174,7 @@ var/cloud_id = new_backup_id if(!isnull(cloud_id)) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - cloud_id = CLAMP(round(cloud_id, 1),1,100) + cloud_id = clamp(round(cloud_id, 1),1,100) generate_backup(cloud_id, usr) . = TRUE if("delete_backup") diff --git a/code/modules/research/nanites/nanite_programmer.dm b/code/modules/research/nanites/nanite_programmer.dm index d81880c6d9..5315a7a507 100644 --- a/code/modules/research/nanites/nanite_programmer.dm +++ b/code/modules/research/nanites/nanite_programmer.dm @@ -86,13 +86,13 @@ var/target_code = params["target_code"] switch(target_code) if("activation") - program.activation_code = CLAMP(round(new_code, 1),0,9999) + program.activation_code = clamp(round(new_code, 1),0,9999) if("deactivation") - program.deactivation_code = CLAMP(round(new_code, 1),0,9999) + program.deactivation_code = clamp(round(new_code, 1),0,9999) if("kill") - program.kill_code = CLAMP(round(new_code, 1),0,9999) + program.kill_code = clamp(round(new_code, 1),0,9999) if("trigger") - program.trigger_code = CLAMP(round(new_code, 1),0,9999) + program.trigger_code = clamp(round(new_code, 1),0,9999) . = TRUE if("set_extra_setting") program.set_extra_setting(params["target_setting"], params["value"]) @@ -102,7 +102,7 @@ var/timer = text2num(params["delay"]) if(!isnull(timer)) playsound(src, "terminal_type", 25, FALSE) - timer = CLAMP(round(timer, 1), 0, 3600) + timer = clamp(round(timer, 1), 0, 3600) timer *= 10 //convert to deciseconds program.timer_restart = timer . = TRUE @@ -110,7 +110,7 @@ var/timer = text2num(params["delay"]) if(!isnull(timer)) playsound(src, "terminal_type", 25, FALSE) - timer = CLAMP(round(timer, 1), 0, 3600) + timer = clamp(round(timer, 1), 0, 3600) timer *= 10 //convert to deciseconds program.timer_shutdown = timer . = TRUE @@ -118,7 +118,7 @@ var/timer = text2num(params["delay"]) if(!isnull(timer)) playsound(src, "terminal_type", 25, FALSE) - timer = CLAMP(round(timer, 1), 0, 3600) + timer = clamp(round(timer, 1), 0, 3600) timer *= 10 //convert to deciseconds program.timer_trigger = timer . = TRUE @@ -126,7 +126,7 @@ var/timer = text2num(params["delay"]) if(!isnull(timer)) playsound(src, "terminal_type", 25, FALSE) - timer = CLAMP(round(timer, 1), 0, 3600) + timer = clamp(round(timer, 1), 0, 3600) timer *= 10 //convert to deciseconds program.timer_trigger_delay = timer . = TRUE diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm index bd2b9618de..ae0d8d35aa 100644 --- a/code/modules/research/nanites/nanite_programs/weapon.dm +++ b/code/modules/research/nanites/nanite_programs/weapon.dm @@ -84,7 +84,7 @@ /datum/nanite_program/explosive/on_trigger(comm_message) host_mob.visible_message("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow...",\ "You start emitting a high-pitched buzzing, and your skin begins to glow...") - addtimer(CALLBACK(src, .proc/boom), CLAMP((nanites.nanite_volume * 0.35), 25, 150)) + addtimer(CALLBACK(src, .proc/boom), clamp((nanites.nanite_volume * 0.35), 25, 150)) /datum/nanite_program/explosive/proc/boom() var/nanite_amount = nanites.nanite_volume diff --git a/code/modules/research/nanites/nanite_remote.dm b/code/modules/research/nanites/nanite_remote.dm index 71aecc8f2c..0d9361b534 100644 --- a/code/modules/research/nanites/nanite_remote.dm +++ b/code/modules/research/nanites/nanite_remote.dm @@ -106,7 +106,7 @@ return var/new_code = text2num(params["code"]) if(!isnull(new_code)) - new_code = CLAMP(round(new_code, 1),0,9999) + new_code = clamp(round(new_code, 1),0,9999) code = new_code . = TRUE if("set_relay_code") @@ -114,7 +114,7 @@ return var/new_code = text2num(params["code"]) if(!isnull(new_code)) - new_code = CLAMP(round(new_code, 1),0,9999) + new_code = clamp(round(new_code, 1),0,9999) relay_code = new_code . = TRUE if("update_name") diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 95d6c49529..fd4e508e1b 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -624,9 +624,9 @@ datum/status_effect/stabilized/blue/on_remove() O.extinguish() //All shamelessly copied from water's reaction_obj, since I didn't seem to be able to get it here for some reason. O.acid_level = 0 // Monkey cube - if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube)) + if(istype(O, /obj/item/reagent_containers/food/snacks/cube)) to_chat(owner, "[linked_extract] kept your hands wet! It makes [O] expand!") - var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O + var/obj/item/reagent_containers/food/snacks/cube/cube = O cube.Expand() // Dehydrated carp diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index bec2c2c1ae..ac9d2e58c5 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -53,7 +53,7 @@ Industrial extracts: /obj/item/slimecross/industrial/grey colour = "grey" - itempath = /obj/item/reagent_containers/food/snacks/monkeycube + itempath = /obj/item/reagent_containers/food/snacks/cube/monkey itemamount = 5 /obj/item/slimecross/industrial/orange diff --git a/code/modules/research/xenobiology/crossbreeding/reproductive.dm b/code/modules/research/xenobiology/crossbreeding/reproductive.dm index 2f6ca9555a..3662f45355 100644 --- a/code/modules/research/xenobiology/crossbreeding/reproductive.dm +++ b/code/modules/research/xenobiology/crossbreeding/reproductive.dm @@ -19,14 +19,14 @@ Reproductive extracts: return if(istype(O, /obj/item/storage/bag/bio)) var/list/inserted = list() - SEND_SIGNAL(O, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted) + SEND_SIGNAL(O, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/cube/monkey, src, 1, null, null, user, inserted) if(inserted.len) - var/obj/item/reagent_containers/food/snacks/monkeycube/M = inserted[1] + var/obj/item/reagent_containers/food/snacks/cube/monkey/M = inserted[1] if(istype(M)) eat_cube(M, user) else to_chat(user, "There are no monkey cubes in the bio bag!") - if(istype(O,/obj/item/reagent_containers/food/snacks/monkeycube)) + if(istype(O,/obj/item/reagent_containers/food/snacks/cube/monkey)) eat_cube(O, user) if(cubes_eaten >= 3) var/cores = rand(1,4) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 5492e9bc38..ef9c751d57 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -146,7 +146,7 @@ else to_chat(user, "[src] already has the contents of [O] installed!") return - if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS + if(istype(O, /obj/item/reagent_containers/food/snacks/cube/monkey) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS monkeys++ to_chat(user, "You feed [O] to [src]. It now has [monkeys] monkey cubes stored.") qdel(O) @@ -155,7 +155,7 @@ var/obj/item/storage/P = O var/loaded = FALSE for(var/obj/G in P.contents) - if(istype(G, /obj/item/reagent_containers/food/snacks/monkeycube)) + if(istype(G, /obj/item/reagent_containers/food/snacks/cube/monkey)) loaded = TRUE monkeys++ qdel(G) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index a346cd697f..573a735f98 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -83,7 +83,7 @@ /obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) - var/obj/item/reagent_containers/food/snacks/monkeycube/M = new + var/obj/item/reagent_containers/food/snacks/cube/monkey/M = new if(!user.put_in_active_hand(M)) M.forceMove(user.drop_location()) playsound(user, 'sound/effects/splat.ogg', 50, 1) @@ -801,7 +801,7 @@ return to_chat(user, "You feed the slime the stabilizer. It is now less likely to mutate.") - M.mutation_chance = CLAMP(M.mutation_chance-15,0,100) + M.mutation_chance = clamp(M.mutation_chance-15,0,100) qdel(src) /obj/item/slimepotion/slime/mutator @@ -825,7 +825,7 @@ return to_chat(user, "You feed the slime the mutator. It is now more likely to mutate.") - M.mutation_chance = CLAMP(M.mutation_chance+12,0,100) + M.mutation_chance = clamp(M.mutation_chance+12,0,100) M.mutator_used = TRUE qdel(src) diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index d09c1ce86f..2192b2fddb 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -142,7 +142,7 @@ uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/toggle/labcoat shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/tackler/combat/insulated ears = /obj/item/radio/headset/syndicate/alt back = /obj/item/storage/backpack r_pocket = /obj/item/gun/ballistic/automatic/pistol diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 2c466564ff..665361af49 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -757,13 +757,13 @@ var/change_per_engine = (1 - ENGINE_COEFF_MIN) / ENGINE_DEFAULT_MAXSPEED_ENGINES // 5 by default if(initial_engines > 0) change_per_engine = (1 - ENGINE_COEFF_MIN) / initial_engines // or however many it had - return CLAMP(1 - delta * change_per_engine,ENGINE_COEFF_MIN,ENGINE_COEFF_MAX) + return clamp(1 - delta * change_per_engine,ENGINE_COEFF_MIN,ENGINE_COEFF_MAX) if(new_value < initial_engines) var/delta = initial_engines - new_value var/change_per_engine = 1 //doesn't really matter should not be happening for 0 engine shuttles if(initial_engines > 0) change_per_engine = (ENGINE_COEFF_MAX - 1) / initial_engines //just linear drop to max delay - return CLAMP(1 + delta * change_per_engine,ENGINE_COEFF_MIN,ENGINE_COEFF_MAX) + return clamp(1 + delta * change_per_engine,ENGINE_COEFF_MIN,ENGINE_COEFF_MAX) /obj/docking_port/mobile/proc/in_flight() diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index ace542126c..e9432e2f58 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -297,7 +297,7 @@ var/mob/living/M = AM M.DefaultCombatKnockdown(stun_amt, override_hardstun = stun_amt * 0.2) to_chat(M, "You're thrown back by [user]!") - AM.throw_at(throwtarget, ((CLAMP((maxthrow - (CLAMP(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user)//So stuff gets tossed around at the same time. + AM.throw_at(throwtarget, ((clamp((maxthrow - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user)//So stuff gets tossed around at the same time. safety-- /obj/effect/proc_holder/spell/aoe_turf/repulse/xeno //i fixed conflicts only to find out that this is in the WIZARD file instead of the xeno file?! diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index d6f0866936..f5b0ed1a75 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -183,7 +183,7 @@ //We've dealt the physical damages, if there's room lets apply the stamina damage. var/current_damage = get_damage(TRUE) //This time around, count stamina loss too. var/available_damage = max_damage - current_damage - stamina_dam += round(CLAMP(stamina, 0, min(max_stamina_damage - stamina_dam, available_damage)), DAMAGE_PRECISION) + stamina_dam += round(clamp(stamina, 0, min(max_stamina_damage - stamina_dam, available_damage)), DAMAGE_PRECISION) if(disabled && stamina > 10) incoming_stam_mult = max(0.01, incoming_stam_mult/(stamina*0.1)) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 276d4893de..66bca919c4 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -16,7 +16,7 @@ return FALSE var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST) - affecting.receive_damage(CLAMP(brute_dam/2 * affecting.body_damage_coeff, 15, 50), CLAMP(burn_dam/2 * affecting.body_damage_coeff, 0, 50)) //Damage the chest based on limb's existing damage + affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50)) //Damage the chest based on limb's existing damage C.visible_message("[C]'s [src.name] has been violently dismembered!") C.emote("scream") SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index daf3324980..e01059204c 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -20,7 +20,28 @@ update_icon() SetSlotFromZone() - items_list = contents.Copy() + for(var/obj/item/I in contents) + add_item(I) + +/obj/item/organ/cyberimp/arm/proc/add_item(obj/item/I) + if(I in items_list) + return + I.forceMove(src) + items_list += I + // ayy only dropped signal for performance, we can't possibly have shitcode that doesn't call it when removing items from a mob, right? + // .. right??! + RegisterSignal(I, COMSIG_ITEM_DROPPED, .proc/magnetic_catch) + +/obj/item/organ/cyberimp/arm/proc/magnetic_catch(datum/source, mob/user) + . = COMPONENT_DROPPED_RELOCATION + var/obj/item/I = source //if someone is misusing the signal, just runtime + if(I in items_list) + if(I in contents) //already in us somehow? i probably shouldn't catch this so it's easier to spot bugs but eh.. + return + I.visible_message("[I] snaps back into [src]!") + I.forceMove(src) + if(I == holder) + holder = null /obj/item/organ/cyberimp/arm/proc/SetSlotFromZone() switch(zone) @@ -62,7 +83,7 @@ . = ..() if(. & EMP_PROTECT_SELF) return - if(prob(15/severity) && owner) + if(owner) to_chat(owner, "[src] is hit by EMP!") // give the owner an idea about why his implant is glitching Retract() @@ -75,29 +96,20 @@ "[holder] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", "You hear a short mechanical noise.") - if(istype(holder, /obj/item/assembly/flash/armimplant)) - var/obj/item/assembly/flash/F = holder - F.set_light(0) - owner.transferItemToLoc(holder, src, TRUE) holder = null playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) -/obj/item/organ/cyberimp/arm/proc/Extend(var/obj/item/item) +/obj/item/organ/cyberimp/arm/proc/Extend(obj/item/item) if(!(item in src)) return holder = item - ADD_TRAIT(holder, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) holder.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF holder.slot_flags = null holder.set_custom_materials(null) - if(istype(holder, /obj/item/assembly/flash/armimplant)) - var/obj/item/assembly/flash/F = holder - F.set_light(7) - var/obj/item/arm_item = owner.get_active_held_item() if(arm_item) @@ -223,21 +235,6 @@ icon_state = "arm_taser" contents = newlist(/obj/item/gun/energy/e_gun/advtaser/mounted) -/obj/item/organ/cyberimp/arm/gun/emp_act(severity) - . = ..() - if(. & EMP_PROTECT_SELF) - return - if(prob(30/severity) && owner && !(organ_flags & ORGAN_FAILING)) - Retract() - owner.visible_message("A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!") - playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1) - to_chat(owner, "You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!") - owner.adjust_fire_stacks(20) - owner.IgniteMob() - owner.adjustFireLoss(25) - crit_fail = 1 - organ_flags |= ORGAN_FAILING - /obj/item/organ/cyberimp/arm/flash name = "integrated high-intensity photon projector" //Why not desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash." @@ -275,6 +272,12 @@ desc = "A deployable riot shield to help deal with civil unrest." contents = newlist(/obj/item/shield/riot/implant) +/obj/item/organ/cyberimp/arm/shield/Extend(obj/item/I) + if(I.obj_integrity == 0) //that's how the shield recharge works + to_chat(owner, "[I] is still too unstable to extend. Give it some time!") + return FALSE + return ..() + /obj/item/organ/cyberimp/arm/shield/emag_act() . = ..() if(obj_flags & EMAGGED) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 6b93995e62..e5aac2a47d 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -259,7 +259,7 @@ if(!isnum(range)) return - set_distance(CLAMP(range, 0, max_light_beam_distance)) + set_distance(clamp(range, 0, max_light_beam_distance)) assume_rgb(C) /obj/item/organ/eyes/robotic/glow/proc/assume_rgb(newcolor) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index ac2b34b855..1b66af6232 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -146,7 +146,7 @@ if(safe_oxygen_max) if((O2_pp > safe_oxygen_max) && safe_oxygen_max == 0) //I guess plasma men technically need to have a check. var/ratio = (breath_gases[/datum/gas/oxygen]/safe_oxygen_max) * 10 - H.apply_damage_type(CLAMP(ratio, oxy_breath_dam_min, oxy_breath_dam_max), oxy_damage_type) + 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 if((O2_pp > safe_oxygen_max) && !(safe_oxygen_max == 0)) //Why yes, this is like too much CO2 and spahget. Dirty lizards. @@ -188,7 +188,7 @@ if(safe_nitro_max) if(N2_pp > safe_nitro_max) var/ratio = (breath_gases[/datum/gas/nitrogen]/safe_nitro_max) * 10 - H.apply_damage_type(CLAMP(ratio, nitro_breath_dam_min, nitro_breath_dam_max), nitro_damage_type) + 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) H.losebreath += 2 else @@ -255,7 +255,7 @@ if(safe_toxins_max) if(Toxins_pp > safe_toxins_max) var/ratio = (breath_gases[/datum/gas/plasma]/safe_toxins_max) * 10 - H.apply_damage_type(CLAMP(ratio, tox_breath_dam_min, tox_breath_dam_max), tox_damage_type) + 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("too_much_tox") diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index d95901bdbe..4e4268c5fe 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -209,7 +209,7 @@ return FALSE if(maximum < damage) return FALSE - damage = CLAMP(damage + d, 0, maximum) + damage = clamp(damage + d, 0, maximum) var/mess = check_damage_thresholds() prev_damage = damage if(mess && owner) diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm index a33d40198f..321b9121bc 100644 --- a/code/modules/uplink/uplink_items/uplink_bundles.dm +++ b/code/modules/uplink/uplink_items/uplink_bundles.dm @@ -42,6 +42,16 @@ exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) restricted = TRUE +/datum/uplink_item/bundles_TC/northstar_bundle + name = "Northstar Bundle" + desc = "An item usually reserved for the Gorlex Marauders and their operatives, now available for recreational use. \ + These armbands let the user punch people very fast and with the lethality of a legendary martial artist. \ + Does not improve weapon attack speed or the meaty fists of a hulk, but you will be unmatched in martial power. \ + Combines with all martial arts, but the user will be unable to bring themselves to use guns, nor remove the armbands." + item = /obj/item/storage/box/syndie_kit/northstar + cost = 20 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + /datum/uplink_item/suits/infiltrator_bundle name = "Insidious Infiltration Gear Case" desc = "Developed by Roseus Galactic in conjunction with the Gorlex Marauders to produce a functional suit for urban operations, \ diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm index d6336bd982..014e0452b5 100644 --- a/code/modules/uplink/uplink_items/uplink_clothing.dm +++ b/code/modules/uplink/uplink_items/uplink_clothing.dm @@ -89,4 +89,11 @@ name = "Wall Walking Boots" desc = "Through bluespace magic stolen from an organisation that hoards technology, these boots simply allow you to slip through the atoms that make up anything, but only while walking, for safety reasons. As well as this, they unfortunately cause minor breath loss as the majority of atoms in your lungs are sucked out into any solid object you walk through." item = /obj/item/clothing/shoes/wallwalkers - cost = 6 \ No newline at end of file + cost = 6 + +/datum/uplink_item/device_tools/guerillagloves + name = "Guerilla Gloves" + desc = "A pair of highly robust combat gripper gloves that excels at performing takedowns at close range, with an added lining of insulation. Careful not to hit a wall!" + item = /obj/item/clothing/gloves/tackler/combat/insulated + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + cost = 2 diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 868610a149..8ad8b5f1ee 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -22,7 +22,7 @@ /obj/vehicle/ridden/secway/process() var/diff = world.time - last_tick var/regen = chargerate * diff - charge = CLAMP(charge + regen, 0, chargemax) + charge = clamp(charge + regen, 0, chargemax) last_tick = world.time /obj/vehicle/ridden/secway/relaymove(mob/user, direction) diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/dinnerware.dm similarity index 95% rename from code/modules/vending/drinnerware.dm rename to code/modules/vending/dinnerware.dm index 2e574a50a1..0726d3758e 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/dinnerware.dm @@ -20,7 +20,7 @@ /obj/item/reagent_containers/food/condiment/saltshaker = 5, /obj/item/reagent_containers/food/condiment/peppermill = 5) contraband = list( - /obj/item/reagent_containers/food/snacks/monkeycube = 1, + /obj/item/reagent_containers/food/snacks/cube/monkey= 1, /obj/item/kitchen/knife/butcher = 2, /obj/item/reagent_containers/syringe = 3) premium = list( diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 2fc1afa375..1daf0bbfb0 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -21,6 +21,7 @@ /obj/item/clothing/head/helmet/blueshirt = 1, /obj/item/clothing/suit/armor/vest/blueshirt = 1, /obj/item/clothing/under/rank/security/officer/blueshirt = 1, + /obj/item/clothing/gloves/tackler = 5, /obj/item/ssword_kit = 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 diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 74aabf6021..3860fa4b7e 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/uniform_digi.dmi b/icons/mob/clothing/uniform_digi.dmi index 7fe37547e9..7a638ef54c 100644 Binary files a/icons/mob/clothing/uniform_digi.dmi and b/icons/mob/clothing/uniform_digi.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index d53f53c029..2a6ce77f38 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 13f678f53a..0590104c30 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index a485deb9ad..cea11f8a49 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/modular_citadel/code/_onclick/hud/sprint.dm b/modular_citadel/code/_onclick/hud/sprint.dm index 89547c0feb..326bb81745 100644 --- a/modular_citadel/code/_onclick/hud/sprint.dm +++ b/modular_citadel/code/_onclick/hud/sprint.dm @@ -54,5 +54,5 @@ /obj/screen/sprint_buffer/proc/update_to_mob(mob/living/L) var/amount = 0 if(L.sprint_buffer_max > 0) - amount = round(CLAMP((L.sprint_buffer / L.sprint_buffer_max) * 100, 0, 100), 5) + amount = round(clamp((L.sprint_buffer / L.sprint_buffer_max) * 100, 0, 100), 5) icon_state = "prog_bar_[amount]" diff --git a/modular_citadel/code/_onclick/hud/stamina.dm b/modular_citadel/code/_onclick/hud/stamina.dm index a7b9a79ecd..5484014f8f 100644 --- a/modular_citadel/code/_onclick/hud/stamina.dm +++ b/modular_citadel/code/_onclick/hud/stamina.dm @@ -22,7 +22,7 @@ else if(user.hal_screwyhud == 5) icon_state = "stamina0" else - icon_state = "stamina[CLAMP(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]" + icon_state = "stamina[clamp(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]" //stam buffer /obj/screen/staminabuffer diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index c936eb9dc4..213ebb049a 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -54,7 +54,7 @@ desc += " They're leaking [lowertext(R.name)]." var/datum/sprite_accessory/S = GLOB.breasts_shapes_list[shape] var/icon_shape = S ? S.icon_state : "pair" - var/icon_size = CLAMP(breast_values[size], BREASTS_ICON_MIN_SIZE, BREASTS_ICON_MAX_SIZE) + var/icon_size = clamp(breast_values[size], BREASTS_ICON_MIN_SIZE, BREASTS_ICON_MAX_SIZE) icon_state = "breasts_[icon_shape]_[icon_size]" if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -73,7 +73,7 @@ //this is far too lewd wah /obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY) - var/new_value = CLAMP(cached_size + modifier, min, max) + var/new_value = clamp(cached_size + modifier, min, max) if(new_value == cached_size) return prev_size = cached_size diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index c05549aaa0..e1b8dc0dba 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -21,11 +21,11 @@ var/diameter_ratio = COCK_DIAMETER_RATIO_DEF //0.25; check citadel_defines.dm /obj/item/organ/genital/penis/modify_size(modifier, min = -INFINITY, max = INFINITY) - var/new_value = CLAMP(length + modifier, min, max) + var/new_value = clamp(length + modifier, min, max) if(new_value == length) return prev_length = length - length = CLAMP(length + modifier, min, max) + length = clamp(length + modifier, min, max) update() ..() @@ -60,7 +60,7 @@ else if(!enlargement && status_effect) owner.remove_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) if(linked_organ) - linked_organ.size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) + linked_organ.size = clamp(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) linked_organ.update() size = new_size diff --git a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm index 2e8feb793a..6963714f04 100644 --- a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm +++ b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm @@ -6,7 +6,7 @@ var/directstamloss = (bufferedstam + amount) - stambuffer if(directstamloss > 0) adjustStaminaLoss(directstamloss) - bufferedstam = CLAMP(bufferedstam + amount, 0, stambuffer) + bufferedstam = clamp(bufferedstam + amount, 0, stambuffer) stambufferregentime = world.time + 10 if(updating_health) update_health_hud() diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 742ef6c9aa..f59d18686a 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -438,7 +438,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! DefaultCombatKnockdown(15, 1, 1) else L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.DefaultCombatKnockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. + L.DefaultCombatKnockdown(iscarbon(L) ? 60 : 45, override_stamdmg = clamp(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index eb93d273a7..837524d49f 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -95,7 +95,7 @@ if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less) ImpureTot *= volume - var/empVol = CLAMP (volume/10, 0, 15) + var/empVol = clamp(volume/10, 0, 15) empulse(T, empVol, ImpureTot/10, 1) my_atom.reagents.clear_reagents() //just in case diff --git a/tgstation.dme b/tgstation.dme index 286ae179b1..43e240a076 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -17,7 +17,6 @@ #include "_maps\_basemap.dm" #include "code\_compile_options.dm" #include "code\world.dm" -#include "code\__DEFINES\__513_compatibility.dm" #include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_protect.dm" #include "code\__DEFINES\_tick.dm" @@ -125,6 +124,7 @@ #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals.dm" #include "code\__DEFINES\flags\shields.dm" +#include "code\__DEFINES\misc\return_values.dm" #include "code\__HELPERS\_cit_helpers.dm" #include "code\__HELPERS\_lists.dm" #include "code\__HELPERS\_logging.dm" @@ -412,6 +412,7 @@ #include "code\datums\components\remote_materials.dm" #include "code\datums\components\riding.dm" #include "code\datums\components\rotation.dm" +#include "code\datums\components\shielded.dm" #include "code\datums\components\shrapnel.dm" #include "code\datums\components\shrink.dm" #include "code\datums\components\sizzle.dm" @@ -422,6 +423,7 @@ #include "code\datums\components\stationloving.dm" #include "code\datums\components\summoning.dm" #include "code\datums\components\swarming.dm" +#include "code\datums\components\tackle.dm" #include "code\datums\components\tactical.dm" #include "code\datums\components\thermite.dm" #include "code\datums\components\uplink.dm" @@ -1734,6 +1736,7 @@ #include "code\modules\clothing\gloves\color.dm" #include "code\modules\clothing\gloves\miscellaneous.dm" #include "code\modules\clothing\gloves\ring.dm" +#include "code\modules\clothing\gloves\tacklers.dm" #include "code\modules\clothing\head\_head.dm" #include "code\modules\clothing\head\beanie.dm" #include "code\modules\clothing\head\cit_hats.dm" @@ -2229,9 +2232,9 @@ #include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\ipc_synths.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\legs_and_taurs.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\spines.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\synthliz.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm" @@ -3216,7 +3219,7 @@ #include "code\modules\vending\clothesmate.dm" #include "code\modules\vending\coffee.dm" #include "code\modules\vending\cola.dm" -#include "code\modules\vending\drinnerware.dm" +#include "code\modules\vending\dinnerware.dm" #include "code\modules\vending\engineering.dm" #include "code\modules\vending\engivend.dm" #include "code\modules\vending\games.dm"