diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d10a2d79f6..d25839b92f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,7 +11,8 @@ 6. [Pull Request Process](#pull-request-process) 7. [Porting features/sprites/sounds/tools from other codebases](#porting-featuresspritessoundstools-from-other-codebases) 8. [Banned content](#banned-content) -9. [A word on Git](#a-word-on-git) +9. [Content requiring prior approval](#content-requiring-prior-approval) +10. [A word on Git](#a-word-on-git) ## Reporting Issues If you ever encounter a bug in-game, the best way to let a coder know about it is with our GitHub Issue Tracker. Please make sure you use the supplied issue template, and include the round ID for the server. @@ -678,6 +679,14 @@ Do not add any of the following in a Pull Request or risk getting the PR closed: Just because something isn't on this list doesn't mean that it's acceptable. Use common sense above all else. +## Content requiring prior approval +Certain types of changes may require prior approval from maintainers. This currently includes: + +* Code adding, removing, or updating the availability of alien races/species/human mutants. This includes pull requests attempting to add or remove features from said races/species/mutants. (Requires approval from at least one maintainer) +* Code adding, removing, or modifying the functionality of adult-oriented features (such as, but not limited to: vore, genitals, MKUltra, and more). This also includes pull requests attempting to add or remove these features outright. (Requires approval from at least half of the formal maintainer team) + +If a PR contains any of the above content, and it lacks prior approval, then it may closed at maintainer discretion. Prior approval requires an @Maintainer ping in a relevant development/code or staff channel on the Discord. This is primarily to limit the impact of PRs that're created in bad faith, or are otherwise counterproductive to the server's health. + ## A word on Git This repository uses `LF` line endings for all code as specified in the **.gitattributes** and **.editorconfig** files. diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index cef539c3b6..e9fec9bb24 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1794,6 +1794,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/storage/fancy/donut_box{ + pixel_y = 7 + }, /turf/open/floor/plasteel/dark, /area/command/heads_quarters/hos) "acL" = ( @@ -2141,12 +2144,9 @@ /turf/open/floor/plasteel/white, /area/command/heads_quarters/hop) "adm" = ( -/obj/structure/sign/warning/securearea{ - pixel_x = 32; - pixel_y = -32 - }, -/turf/open/space/basic, -/area/space) +/obj/structure/girder, +/turf/open/floor/plating, +/area/engineering/storage/tech) "adn" = ( /turf/closed/wall, /area/cargo/storage) @@ -2264,6 +2264,7 @@ dir = 8 }, /obj/structure/closet/secure_closet/hos, +/obj/item/gun/energy/e_gun/hos, /turf/open/floor/plasteel/dark, /area/command/heads_quarters/hos) "adE" = ( @@ -4791,6 +4792,7 @@ req_access_txt = "63" }, /obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/prison) "ahv" = ( @@ -4924,7 +4926,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/gun/energy/e_gun/hos, /turf/open/floor/plasteel/dark, /area/command/heads_quarters/captain/private) "ahI" = ( @@ -4975,8 +4976,10 @@ pixel_y = -24 }, /obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, -/obj/item/lighter, +/obj/item/hand_tele{ + pixel_y = 9 + }, +/obj/item/storage/lockbox/medal, /turf/open/floor/wood, /area/command/heads_quarters/captain/private) "ahN" = ( @@ -7561,7 +7564,6 @@ id = "brig2"; pixel_y = 26 }, -/obj/structure/chair, /obj/structure/cable/white{ icon_state = "2-4" }, @@ -7578,6 +7580,8 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/structure/bed, +/obj/item/bedsheet/blue, /turf/open/floor/plasteel, /area/security/brig) "alR" = ( @@ -8113,10 +8117,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/window/brigdoor/security/cell/westright{ - id = "brig2"; - name = "Cell 2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -8126,6 +8126,10 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/door/window/brigdoor/security/cell/eastright{ + id = "Cell 1"; + name = "Cell 1" + }, /turf/open/floor/plasteel, /area/security/brig) "amO" = ( @@ -10562,6 +10566,14 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/mob/living/simple_animal/bot/secbot{ + arrest_type = 1; + health = 45; + icon_state = "secbot1"; + idcheck = 1; + name = "Sergeant-at-Armsky"; + weaponscheck = 1 + }, /turf/open/floor/plasteel, /area/security/brig) "aqH" = ( @@ -16317,8 +16329,6 @@ /turf/open/floor/plasteel/dark/corner, /area/engineering/atmos) "azA" = ( -/obj/structure/table, -/obj/item/paicard, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -16329,6 +16339,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/commons/dorms) "azB" = ( @@ -18309,6 +18320,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/paicard{ + pixel_x = 15 + }, /turf/open/floor/plasteel, /area/commons/dorms) "aCO" = ( @@ -19360,6 +19374,11 @@ dir = 9 }, /obj/item/clothing/glasses/meson/engine, +/obj/machinery/camera{ + c_tag = "Engineering Access"; + dir = 4; + network = list("ss13","engine") + }, /turf/open/floor/plasteel, /area/engineering/main) "aEy" = ( @@ -19555,7 +19574,6 @@ /turf/open/floor/plasteel/dark, /area/commons/dorms) "aEM" = ( -/obj/structure/closet/crate/bin, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -19567,6 +19585,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/dark, /area/commons/dorms) "aEN" = ( @@ -20137,12 +20156,6 @@ /turf/open/floor/plasteel, /area/engineering/main) "aFB" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/terminal{ - dir = 4 - }, /obj/effect/turf_decal/delivery, /obj/machinery/airalarm{ pixel_y = 24 @@ -20151,6 +20164,9 @@ c_tag = "Starboard Bow Solar"; network = list("ss13","engine") }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "aFC" = ( @@ -23289,7 +23305,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, +/turf/open/space/basic, /area/maintenance/port/aft) "aKo" = ( /obj/structure/lattice, @@ -24135,10 +24151,12 @@ /turf/closed/wall, /area/maintenance/solars/port/aft) "aLD" = ( -/obj/machinery/power/port_gen/pacman, /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/table/reinforced, +/obj/item/paper/guides/jobs/engi/gravity_gen, +/obj/item/pen/blue, /turf/open/floor/plasteel, /area/engineering/gravity_generator) "aLE" = ( @@ -24190,6 +24208,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/machinery/power/port_gen/pacman, /turf/open/floor/plasteel, /area/engineering/gravity_generator) "aLI" = ( @@ -27755,13 +27774,12 @@ /turf/open/floor/engine, /area/engineering/main) "aRI" = ( -/obj/structure/cable/white{ - dir = 5; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 5 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/engine, /area/engineering/main) "aRJ" = ( @@ -28700,9 +28718,6 @@ /obj/item/kirbyplants{ icon_state = "plant-18" }, -/obj/machinery/camera{ - c_tag = "Arrivals Lounge" - }, /turf/open/floor/plasteel/grimy, /area/commons/lounge) "aTB" = ( @@ -28713,6 +28728,9 @@ "aTC" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, +/obj/machinery/camera{ + c_tag = "Arrivals Lounge" + }, /turf/open/floor/plasteel/grimy, /area/commons/lounge) "aTD" = ( @@ -29449,8 +29467,7 @@ icon_state = "1-2" }, /obj/effect/turf_decal/trimline/green/line{ - dir = 8; - icon_state = "trimline" + dir = 8 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29561,8 +29578,7 @@ dir = 4 }, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29575,8 +29591,7 @@ dir = 1 }, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29618,8 +29633,7 @@ }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -29640,8 +29654,7 @@ }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29654,8 +29667,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29674,8 +29686,7 @@ dir = 1 }, /obj/effect/turf_decal/trimline/green/corner{ - dir = 1; - icon_state = "trimline_corner" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -29886,11 +29897,6 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Engineering Access"; - dir = 8; - network = list("ss13","engine") - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -29967,8 +29973,7 @@ /area/commons/dorms) "aVI" = ( /obj/effect/turf_decal/trimline/green/line{ - dir = 9; - icon_state = "trimline" + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -29981,8 +29986,7 @@ icon_state = "2-4" }, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -30008,8 +30012,7 @@ icon_state = "1-8" }, /obj/effect/turf_decal/trimline/green/corner{ - dir = 1; - icon_state = "trimline_corner" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -30313,6 +30316,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/item/screwdriver, /turf/open/floor/plasteel, /area/medical/chemistry) "aWk" = ( @@ -30460,8 +30464,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/trimline/green/line{ - dir = 8; - icon_state = "trimline" + dir = 8 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -30817,8 +30820,7 @@ icon_state = "4-8" }, /obj/effect/turf_decal/trimline/green/corner{ - dir = 1; - icon_state = "trimline_corner" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -31870,14 +31872,18 @@ }, /obj/structure/table, /obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 6 + pixel_x = -5; + pixel_y = 10 }, /obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 6; + pixel_x = -5; pixel_y = 6 }, -/obj/item/storage/pill_bottle/mannitol, +/obj/item/storage/pill_bottle/mannitol{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aYQ" = ( @@ -32925,11 +32931,10 @@ /area/maintenance/solars/port/aft) "bav" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "1-2" }, -/turf/closed/wall, +/turf/open/floor/plating, /area/maintenance/solars/port/aft) "baw" = ( /obj/effect/spawner/structure/window/reinforced, @@ -33289,7 +33294,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/science/robotics/lab) "baW" = ( @@ -33363,8 +33367,13 @@ /area/maintenance/port/aft) "bbf" = ( /obj/machinery/power/smes, -/obj/structure/cable/white{ - icon_state = "0-2" +/obj/machinery/camera{ + c_tag = "Port Quarter Solar"; + dir = 4; + network = list("ss13","engine") + }, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) @@ -33381,18 +33390,18 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bbi" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/structure/cable/white{ - icon_state = "0-2" - }, /obj/machinery/power/apc{ areastring = "/area/maintenance/solars/port/aft"; dir = 4; name = "Port Quarter Solar APC"; pixel_x = 24 }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bbj" = ( @@ -33477,8 +33486,12 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bbo" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, /obj/structure/cable/white{ - icon_state = "1-4" + icon_state = "0-4" }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) @@ -33825,16 +33838,10 @@ /turf/open/space/basic, /area/solars/starboard/fore) "bbR" = ( +/obj/machinery/light/small, /obj/structure/cable/white{ - icon_state = "0-8" + icon_state = "1-8" }, -/obj/structure/cable/white, -/obj/machinery/power/solar_control{ - dir = 8; - id = "aftport"; - name = "Port Quarter Solar Control" - }, -/obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bbS" = ( @@ -33874,12 +33881,8 @@ /turf/open/space/basic, /area/solars/starboard/fore) "bbX" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/emcloset/anchored, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bbY" = ( /obj/structure/lattice/catwalk, @@ -33893,6 +33896,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/light/small{ + dir = 8 + }, /turf/open/floor/plasteel, /area/maintenance/solars/starboard/fore) "bca" = ( @@ -33943,8 +33949,6 @@ /turf/open/floor/plasteel, /area/maintenance/solars/starboard/fore) "bcd" = ( -/obj/item/retractor, -/obj/item/hemostat, /obj/structure/table/reinforced, /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -33965,6 +33969,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/storage/backpack/duffelbag/med/surgery, /turf/open/floor/plasteel/dark, /area/medical/medbay/zone3) "bce" = ( @@ -33987,12 +33992,10 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bcf" = ( -/obj/machinery/computer/operating{ - dir = 8 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/machinery/computer/operating, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -34003,11 +34006,6 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bcg" = ( -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/suit/apron/surgical, -/obj/item/clothing/mask/surgical, -/obj/item/surgical_drapes, -/obj/structure/table/reinforced, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -34022,6 +34020,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/limbgrower, /turf/open/floor/plasteel/dark, /area/medical/medbay/zone3) "bch" = ( @@ -34294,28 +34293,34 @@ pixel_x = 32; pixel_y = 32 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "1-4" }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcH" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcI" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" + icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) @@ -34328,24 +34333,24 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solars/starboard/fore) "bcK" = ( -/obj/machinery/power/smes, -/obj/structure/cable/white{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/maintenance/solars/starboard/fore) -"bcL" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/structure/cable/white{ - icon_state = "0-8" - }, /obj/machinery/power/solar_control{ id = "forestarboard"; name = "Starboard Bow Solar Control" }, /obj/effect/turf_decal/bot, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"bcL" = ( +/obj/machinery/power/smes, +/obj/structure/cable/white{ + icon_state = "0-2" + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcM" = ( @@ -34358,9 +34363,6 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -34368,12 +34370,13 @@ pixel_x = 32; pixel_y = -32 }, -/turf/open/floor/plating, -/area/maintenance/solars/starboard/fore) -"bcO" = ( +/obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) +"bcO" = ( /obj/structure/cable/white{ icon_state = "4-8" }, @@ -34381,6 +34384,9 @@ name = "Starboard Bow Solar Access"; req_access_txt = "10" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcP" = ( @@ -34429,10 +34435,6 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bcU" = ( -/obj/item/circular_saw, -/obj/item/surgicaldrill{ - pixel_y = 5 - }, /obj/structure/table/reinforced, /obj/structure/mirror{ pixel_x = -28 @@ -34451,6 +34453,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/mask/surgical, /turf/open/floor/plasteel/dark, /area/medical/medbay/zone3) "bcV" = ( @@ -34484,9 +34489,6 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bcX" = ( -/obj/item/scalpel, -/obj/item/cautery, -/obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -34504,6 +34506,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/item/reagent_containers/glass/beaker/synthflesh, /turf/open/floor/plasteel/dark, /area/medical/medbay/zone3) "bcY" = ( @@ -34514,10 +34518,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Medbay South"; - dir = 4 - }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -34877,7 +34877,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "8;12" + req_one_access_txt = "7;12" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -34896,11 +34896,15 @@ /turf/open/floor/plating/airless, /area/solars/starboard/fore) "bdC" = ( -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 8 +/obj/machinery/power/solar_control{ + id = "aftport"; + name = "Port Quarter Solar Control" + }, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bdD" = ( @@ -34929,17 +34933,17 @@ }, /area/command/heads_quarters/rd) "bdE" = ( -/obj/structure/cable/white{ - icon_state = "0-4" - }, -/obj/structure/cable/white{ - icon_state = "0-8" - }, /obj/machinery/power/apc{ areastring = "/area/maintenance/solars/starboard/fore"; name = "Starboard Bow Solar APC"; pixel_y = -26 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "bdF" = ( @@ -34959,9 +34963,6 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "bdG" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, @@ -34969,6 +34970,9 @@ dir = 1; pixel_y = -22 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bdH" = ( @@ -36177,10 +36181,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, /obj/item/circuitboard/aicore, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel{ icon_state = "sepia" }, @@ -36219,6 +36221,9 @@ dir = 1; pixel_y = -28 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel{ icon_state = "sepia" }, @@ -36252,7 +36257,7 @@ /area/service/chapel/main) "bfB" = ( /obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) "bfC" = ( @@ -36334,6 +36339,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/smartfridge/organ/preloaded{ + pixel_y = -31 + }, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bfG" = ( @@ -36346,7 +36354,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay Recovery Room"; - dir = 8; + dir = 1; network = list("ss13","medbay") }, /obj/effect/turf_decal/tile/neutral{ @@ -36796,6 +36804,9 @@ dir = 1; network = list("ss13","engine") }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plasteel, /area/engineering/atmos) "bgi" = ( @@ -36841,12 +36852,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/light/small, -/obj/machinery/camera{ - c_tag = "Port Quarter Solar"; - dir = 1; - network = list("ss13","engine") - }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bgl" = ( @@ -37318,8 +37323,7 @@ "bhn" = ( /obj/machinery/light/floor, /turf/open/floor/plasteel/yellowsiding/corner{ - dir = 8; - icon_state = "yellowcornersiding" + dir = 8 }, /area/maintenance/starboard/aft) "bho" = ( @@ -37465,6 +37469,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bhA" = ( @@ -37487,13 +37494,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/camera{ + c_tag = "Arrivals Bay 1 North" + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bhC" = ( @@ -37887,10 +37894,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/camera{ - c_tag = "Arrivals Bay 1 North"; - dir = 1 - }, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -38258,10 +38261,6 @@ "biV" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera{ - c_tag = "Arrivals Hallway 3"; - dir = 8 - }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38781,6 +38780,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/camera{ + c_tag = "Arrivals Hallway"; + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bjV" = ( @@ -38937,6 +38940,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/machinery/camera{ + c_tag = "Arrivals Hallway 2"; + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bkX" = ( @@ -39118,66 +39125,21 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "bls" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Security Checkpoint"; - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/hallway/primary/aft) +/turf/closed/wall, +/area/engineering/storage/tech) "blv" = ( +/turf/closed/wall/rust, +/area/engineering/storage/tech) +"blx" = ( +/obj/structure/sign/poster/contraband/random, +/turf/closed/wall, +/area/engineering/storage/tech) +"bly" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Arrivals Bay 1 North"; - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/hallway/secondary/entry) -"blx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera{ - c_tag = "Arrivals Hallway"; - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bly" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera{ - c_tag = "Arrivals Hallway 2"; - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) +/turf/closed/wall/r_wall, +/area/command/heads_quarters/rd) "blA" = ( /obj/machinery/door/airlock/grunge{ name = "Mass Driver Room"; @@ -39916,10 +39878,10 @@ /turf/open/floor/circuit/green/telecomms, /area/tcommsat/server) "buN" = ( -/obj/machinery/announcement_system, /obj/machinery/status_display/ai{ pixel_x = 32 }, +/obj/machinery/ntnet_relay, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "buO" = ( @@ -39961,22 +39923,11 @@ /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) "buS" = ( -/obj/machinery/ntnet_relay, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/telecomms, -/area/tcommsat/server) +/turf/closed/wall/r_wall/rust, +/area/science/mixing) "buW" = ( /turf/closed/wall/r_wall, /area/engineering/supermatter) @@ -40741,7 +40692,7 @@ icon_state = "1-2" }, /obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "8;12" + req_one_access_txt = "7;12" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, @@ -40832,8 +40783,7 @@ /area/service/bar/atrium) "dSq" = ( /turf/open/floor/plasteel/yellowsiding{ - dir = 4; - icon_state = "yellowsiding" + dir = 4 }, /area/maintenance/starboard/aft) "dXv" = ( @@ -40872,6 +40822,9 @@ /area/engineering/atmos) "eew" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, /obj/structure/cable{ icon_state = "4-8" }, @@ -41011,6 +40964,12 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"eDk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "eOg" = ( /obj/structure/closet/crate{ icon_state = "crateopen" @@ -41066,13 +41025,13 @@ name = "Incinerator Exterior Airlock"; req_access_txt = "12" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "eZd" = ( @@ -41231,14 +41190,14 @@ /turf/open/space/basic, /area/space) "fsJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ frequency = 1449; id = "incinerator_airlock_pump" }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "fuR" = ( @@ -41384,6 +41343,12 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/primary/port) +"gfr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/science/mixing) "ggq" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -41461,6 +41426,12 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"gBp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "gGq" = ( /obj/machinery/mass_driver{ dir = 4; @@ -41547,18 +41518,11 @@ /area/command/gateway) "gSu" = ( /turf/open/floor/plasteel/yellowsiding{ - dir = 8; - icon_state = "yellowsiding" + dir = 8 }, /area/maintenance/starboard/aft) "gSv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -41569,6 +41533,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) "gVX" = ( @@ -41592,8 +41559,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/broken{ - dir = 1; - icon_state = "tube-broken" + dir = 1 }, /turf/open/floor/carpet/green/airless, /area/maintenance/starboard/aft) @@ -41717,8 +41683,7 @@ dir = 4 }, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -41781,8 +41746,7 @@ dir = 4 }, /obj/effect/turf_decal/trimline/green/line{ - dir = 1; - icon_state = "trimline" + dir = 1 }, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -41794,10 +41758,7 @@ name = "Robotics Lab"; req_access_txt = "29" }, -/obj/machinery/door/airlock/research/glass{ - name = "Robotics Lab"; - req_access_txt = "29" - }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/science/robotics/lab) "hUG" = ( @@ -41903,6 +41864,10 @@ /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, /area/engineering/atmos) +"irp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/science/mixing) "isT" = ( /turf/open/floor/wood{ icon_state = "wood-broken2" @@ -42001,6 +41966,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/button/door{ + id = "stationawaygate"; + name = "Gateway Access Shutter Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "31" + }, /turf/open/floor/plasteel, /area/command/gateway) "iUO" = ( @@ -42009,8 +41981,7 @@ /area/science/mixing) "iVs" = ( /obj/machinery/computer/gateway_control{ - dir = 4; - icon_state = "computer" + dir = 4 }, /obj/effect/turf_decal/delivery, /obj/machinery/camera{ @@ -42104,8 +42075,7 @@ /area/science/xenobiology) "jeI" = ( /turf/open/floor/plasteel/yellowsiding{ - dir = 1; - icon_state = "yellowsiding" + dir = 1 }, /area/maintenance/starboard/aft) "jkc" = ( @@ -42172,11 +42142,12 @@ /turf/open/floor/plasteel/dark, /area/hallway/primary/starboard) "jrd" = ( -/obj/machinery/pool/drain, -/turf/open/pool, -/area/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "jsD" = ( -/obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) @@ -42416,12 +42387,16 @@ /area/engineering/atmos) "kiw" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel, /area/engineering/atmos) "koL" = ( @@ -42453,14 +42428,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) "krX" = ( /obj/machinery/light/floor, /turf/open/floor/plasteel/yellowsiding/corner{ - dir = 4; - icon_state = "yellowcornersiding" + dir = 4 }, /area/maintenance/starboard/aft) "kwF" = ( @@ -42513,6 +42486,10 @@ /obj/machinery/meter/atmos, /turf/open/floor/plasteel, /area/engineering/atmos) +"kFf" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel, +/area/science/mixing) "kHA" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -42593,6 +42570,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/starboard/aft) +"kYh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "lcW" = ( /turf/open/floor/wood, /area/maintenance/starboard/aft) @@ -42916,13 +42899,13 @@ /obj/machinery/igniter{ id = "Incinerator" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = -32; pixel_y = 32 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "mQi" = ( @@ -43029,12 +43012,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/airalarm{ + dir = 4; + name = "Inceinerator air alarm"; + pixel_x = 10 + }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "nio" = ( /obj/structure/pool/ladder{ dir = 1; - icon_state = "ladder"; pixel_y = -24 }, /turf/open/pool, @@ -43132,6 +43119,10 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"nPS" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) "nTg" = ( /obj/item/assembly/timer{ pixel_x = 5; @@ -43155,8 +43146,16 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/power/smes, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plasteel/dark/corner, /area/engineering/atmos) +"nXb" = ( +/obj/machinery/pool/drain, +/turf/open/pool, +/area/maintenance/starboard/aft) "oaV" = ( /obj/structure/grille, /obj/machinery/meter, @@ -43196,11 +43195,11 @@ /turf/closed/wall, /area/asteroid/nearstation) "ooX" = ( -/obj/machinery/smartfridge/organ/preloaded{ - pixel_y = 2 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 }, -/turf/closed/wall, -/area/medical/medbay/zone3) +/turf/closed/wall/r_wall, +/area/science/mixing) "oql" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, @@ -43249,7 +43248,6 @@ /turf/open/floor/plasteel/dark, /area/engineering/atmos) "oxb" = ( -/obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) @@ -43259,13 +43257,13 @@ dir = 4; luminosity = 2 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "oys" = ( @@ -43307,8 +43305,7 @@ "oIA" = ( /obj/machinery/light/floor, /turf/open/floor/plasteel/yellowsiding/corner{ - dir = 1; - icon_state = "yellowcornersiding" + dir = 1 }, /area/maintenance/starboard/aft) "oIG" = ( @@ -43437,6 +43434,10 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"pgH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) "pix" = ( /turf/open/floor/wood{ icon_state = "wood-broken7" @@ -43511,7 +43512,7 @@ /obj/structure/sign/warning/vacuum{ pixel_y = -32 }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "0-4" }, /turf/open/floor/engine/vacuum, @@ -43555,6 +43556,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plasteel/checker, /area/engineering/atmos) "pAN" = ( @@ -43604,7 +43608,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) "pLb" = ( @@ -43691,9 +43694,6 @@ name = "Toxins Launch Room Access"; req_access_txt = "7" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, @@ -43703,6 +43703,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "qdt" = ( @@ -43875,6 +43878,9 @@ dir = 1 }, /obj/machinery/meter, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel, /area/engineering/atmos) "qRz" = ( @@ -44414,7 +44420,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sEQ" = ( /obj/structure/rack, /obj/item/radio, @@ -44444,7 +44450,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFo" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -44456,7 +44462,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFp" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -44469,8 +44475,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFq" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ @@ -44489,7 +44498,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFs" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -44535,7 +44544,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFS" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -44545,7 +44554,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/tile/neutral, @@ -44556,7 +44565,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFU" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ @@ -44575,7 +44584,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sFX" = ( /obj/machinery/light/small{ dir = 8 @@ -44617,7 +44626,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/maintenance/starboard) +/area/engineering/storage/tech) "sGA" = ( /obj/structure/cable/white{ icon_state = "2-4" @@ -46921,8 +46930,7 @@ "twy" = ( /obj/structure/table/reinforced, /obj/machinery/chem_dispenser/drinks{ - dir = 1; - icon_state = "soda_dispenser" + dir = 1 }, /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -46987,11 +46995,26 @@ /turf/open/floor/plating, /area/science/mixing) "ucu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/closed/wall, -/area/science/mixing) +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Security Checkpoint"; + dir = 10 + }, +/turf/open/floor/plasteel{ + heat_capacity = 1e+006 + }, +/area/hallway/primary/aft) "udT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/power/apc{ @@ -47243,10 +47266,6 @@ /turf/open/floor/plasteel/dark, /area/command/gateway) "uMi" = ( -/obj/machinery/door/airlock/security{ - name = "Law Office"; - req_access_txt = "38" - }, /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47255,6 +47274,10 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, /turf/open/floor/plasteel, /area/service/lawoffice) "uSs" = ( @@ -47345,7 +47368,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) "vmq" = ( @@ -48041,9 +48063,6 @@ name = "Incinerator Interior Airlock"; req_access_txt = "12" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, @@ -48059,6 +48078,9 @@ sanitize_external = 1; sensor_tag = "incinerator_airlock_sensor" }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "yba" = ( @@ -48118,8 +48140,8 @@ /area/hallway/primary/port/aft) "ygB" = ( /obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" + name = "Gateway Maintenance Hatch"; + req_access_txt = "62" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76083,7 +76105,7 @@ aad aad aLC bae -aLC +nPS aLC sdX sdX @@ -76599,8 +76621,8 @@ aMJ bak aLC aLC -aLC -aLC +nPS +nPS aaa pZU aaa @@ -76857,7 +76879,7 @@ bal aLC bbf bbo -aLC +nPS aaa pZU aaa @@ -77108,13 +77130,13 @@ aTY aUP buL buP -buS +sKn aMJ bam bav bdC bgk -aLC +nPS sdX sdX aaa @@ -80407,11 +80429,11 @@ aad aro ars ars -ars +asI ars ars arp -ars +asI ars asu asA @@ -86112,7 +86134,7 @@ aSh bcf bcW bfF -ooX +aSh hSE bfA bfX @@ -87926,14 +87948,14 @@ bjV bjC bjC bkl -blx bjC bjC bjC bjC bjC bjC -bly +bjC +bjC bkS bkX blc @@ -89703,7 +89725,7 @@ aUy aWQ tWh aYc -iey +ucu sKB baI bby @@ -89960,7 +89982,7 @@ sNz aWR tWh aYd -bls +iey byq baJ bbz @@ -89973,7 +89995,7 @@ bfL aYc bgU bhI -blv +biw bgU aaa aaa @@ -93498,8 +93520,8 @@ aad aad aaa aaa -bbT -bbT +aaa +bcF bbT bbT bcF @@ -93754,8 +93776,8 @@ sMq aad aad aaa -adm -bbT +aaa +aaa bbX bbZ bcc @@ -94012,8 +94034,8 @@ aad aad aaa aad -bbU -bbT +aaa +bbX bca bbT bcH @@ -94786,7 +94808,7 @@ bbW bcQ adq aad -bbT +bbX bcK bdE adu @@ -94817,10 +94839,10 @@ xpX pML oyD bfp -aSD -aRz -aRz -aRz +adm +bls +bls +bls saI aRz sIb @@ -95043,7 +95065,7 @@ aef aaa aaa aaa -bbT +bbX bcL bcR adu @@ -95074,10 +95096,10 @@ oyD oyD oyD sGY -aRz +bls sFn sFR -sJN +blv sGY aRz bmb @@ -95300,8 +95322,8 @@ adq sdX sdX sdX -bbT -bbT +bbX +bbX bbU adu adu @@ -95334,7 +95356,7 @@ sEn sEN sFo sFS -aSH +blx sGY aRz sIc @@ -95588,7 +95610,7 @@ eOg sDq aRz bfp -aRz +bls sFp sFT sGy @@ -95618,7 +95640,7 @@ hXc abP jLF aAY -hVE +kFf bdA aRy aRy @@ -95845,10 +95867,10 @@ xMZ bRf xMZ ygB -aRz +bls sFq sFU -aRz +bls sGY sJN blM @@ -96141,8 +96163,8 @@ lMu aRy bhm bhX -jrd uCY +nXb nio jeI juY @@ -97931,12 +97953,12 @@ xiZ wvy bfz bfB -mvB -mvB +hVE +hVE kqH vlJ pHH -ucu +kPi aad aad aad @@ -98193,7 +98215,7 @@ eZs vPZ jde pmK -iio +kPi aad aad aad @@ -98445,12 +98467,12 @@ sVt sVt sVt qcP -sVt -meo -meo -sVt -sVt -sVt +pgH +irp +irp +pgH +pgH +kYh iio aad aad @@ -98696,7 +98718,7 @@ aJO aJO bdK bew -ajP +bly ajP sVt meo @@ -98953,7 +98975,7 @@ aaa aJO aJO aJO -ajP +bly dfK dfK sVt @@ -99210,7 +99232,7 @@ aaa aaa aad aad -meo +buS dfK qnA ucd @@ -99467,11 +99489,11 @@ aaa aaa aac aad -sVt +jrd lmq nfS -sVt -iio +gBp +gfr upN iio iio @@ -99724,10 +99746,10 @@ aaa aaa aac aad -sVt -sVt -sVt -sVt +ooX +gcw +gcw +eDk gLD lFm uTF diff --git a/auxmos.dll b/auxmos.dll index a5fc480d10..eb7e3b71fc 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index 12fb921360..5d005d3689 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 0609b9dabe..f893ab3dfe 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -76,7 +76,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isvampire(A) (is_species(A,/datum/species/vampire)) #define isdullahan(A) (is_species(A, /datum/species/dullahan)) -#define isangel(A) (is_species(A, /datum/species/angel)) #define ismush(A) (is_species(A, /datum/species/mush)) #define isshadow(A) (is_species(A, /datum/species/shadow)) #define isrobotic(A) (is_species(A, /datum/species/ipc) || is_species(A, /datum/species/synthliz) || is_species(A, /datum/species/mammal/synthetic)) diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm index 74ca459fa1..60aeb57513 100644 --- a/code/__DEFINES/species.dm +++ b/code/__DEFINES/species.dm @@ -3,7 +3,6 @@ #define SPECIES_ABDUCTOR "abductor" #define SPECIES_ANDROID "android" -#define SPECIES_ANGEL "angel" #define SPECIES_MAMMAL "mammal" #define SPECIES_MAMMAL_SYNTHETIC "mammal_synthetic" #define SPECIES_ARACHNID "arachnid" @@ -53,3 +52,14 @@ #define SPECIES_CATEGORY_SHADOW "shadow" #define SPECIES_CATEGORY_SKELETON "skeleton" #define SPECIES_CATEGORY_UNDEAD "undead" + + +//Species Wing Type Defines ---------------------- +#define SPECIES_WINGS_ANGEL list("Angel") +#define SPECIES_WINGS_DRAGON list("Dragon") //could also be considered demon wings or bat wings? +#define SPECIES_WINGS_ROBOT list("Robotic") +#define SPECIES_WINGS_INSECT list("Fly") //"hey when can we have something besides giant fly wings?" "when you sprite it!" +#define SPECIES_WINGS_SKELETAL list("Skeleton") +#define SPECIES_WINGS_MOTH list("Megamoth","Mothra") +#define SPECIES_WINGS_JELLY list("Angel") //no actual slime wings present right now, but I'm making this in the event someone wants to sprite slime wings. +#define SPECIES_WINGS_ALL list("Angel","Dragon","Robotic","Fly","Skeleton","Megamoth","Mothra") //keep this updated diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 87187a4c3d..36de9d281b 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -591,9 +591,9 @@ switch(child) if(/datum) return null - if(/obj || /mob) + if(/obj, /mob) return /atom/movable - if(/area || /turf) + if(/area, /turf) return /atom else return /datum diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index ed0a9fbab8..88008920b9 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -224,6 +224,7 @@ else to_chat(owner, "You feel your heart lurching in your chest...") owner.adjustOxyLoss(8) + else /datum/brain_trauma/severe/discoordination name = "Discoordination" diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 3a67230d36..07b3d5fe8a 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -30,7 +30,7 @@ return switch(stage) - if(2 || 3) //Pretend to be a cold and give time to spread. + if(2, 3) //Pretend to be a cold and give time to spread. if(prob(8)) affected_mob.emote("sneeze") if(prob(8)) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index d4807e377c..a273aad0dd 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -374,7 +374,7 @@ GLOBAL_LIST_EMPTY(allConsoles) radio_freq = FREQ_ENGINEERING if("security") radio_freq = FREQ_SECURITY - if("cargobay" || "mining") + if("cargobay", "mining") radio_freq = FREQ_SUPPLY Radio.set_frequency(radio_freq) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index a8e76d04ca..a353a2b76b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -380,6 +380,8 @@ GENETICS SCANNER mutant = TRUE else if (S.mutantstomach != initial(S.mutantstomach)) mutant = TRUE + else if (S.flying_species != initial(S.flying_species)) + mutant = TRUE msg += "\tReported Species: [H.spec_trait_examine_font()][H.dna.custom_species ? H.dna.custom_species : S.name]\n" msg += "\tBase Species: [H.spec_trait_examine_font()][S.name]\n" diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index c10bcd753d..b6520f6bb5 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -53,7 +53,6 @@ desc = "A satchel that opens into a localized pocket of Blue Space." icon_state = "holdingsat" item_state = "holdingsat" - species_exception = list(/datum/species/angel) /obj/item/storage/backpack/holding/duffel name = "duffel bag of holding" @@ -190,7 +189,6 @@ name = "satchel" desc = "A trendy looking satchel." icon_state = "satchel-norm" - species_exception = list(/datum/species/angel) //satchels can be equipped since they are on the side, not back /obj/item/storage/backpack/satchel/leather name = "leather satchel" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 5f84094477..4853d553dc 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -719,7 +719,6 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup) icon = 'icons/obj/smooth_structures/rplasma_window.dmi' icon_state = "rplasmawindow" dir = FULLTILE_WINDOW_DIR - state = PRWINDOW_SECURE max_integrity = 1000 fulltile = TRUE flags_1 = PREVENT_CLICK_UNDER_1 diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 458fcc0121..17bad60945 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -53,15 +53,6 @@ return cmd_show_exp_panel(M.client) - else if(href_list["toggleexempt"]) - if(!check_rights(R_ADMIN)) - return - var/client/C = locate(href_list["toggleexempt"]) in GLOB.clients - if(!C) - to_chat(usr, "ERROR: Client not found.") - return - toggle_exempt_status(C) - else if(href_list["makeAntag"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index bc8fd6777d..d019a03140 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -70,9 +70,9 @@ /obj/machinery/atmospherics/pipe/layer_manifold/SetInitDirections() switch(dir) - if(NORTH || SOUTH) + if(NORTH, SOUTH) initialize_directions = NORTH|SOUTH - if(EAST || WEST) + if(EAST, WEST) initialize_directions = EAST|WEST /obj/machinery/atmospherics/pipe/layer_manifold/isConnectable(obj/machinery/atmospherics/target, given_layer) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index c33e6098c0..d78488ec0b 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -119,6 +119,23 @@ to_chat(user, "Your Clown Mask has now morphed into [choice], all praise the Honkmother!") return TRUE +/obj/item/clothing/mask/gas/clown_hat_polychromic + name = "polychromic clown wig and mask" + desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." + clothing_flags = ALLOWINTERNALS + icon_state = "clown" + item_state = "clown_hat" + dye_color = "clown" + w_class = WEIGHT_CLASS_SMALL + flags_cover = MASKCOVERSEYES + resistance_flags = FLAMMABLE + dog_fashion = /datum/dog_fashion/head/clown + var/list/poly_colors = list("#FF8000", "#FFFFFF", "#FF0000", "#0000FF", "#FFFF00") + +/obj/item/clothing/mask/gas/clown_hat_polychromic/ComponentInitialize() + . = ..() + AddElement(/datum/element/polychromic, poly_colors, 5, names = list("Hair", "Frame", "Mouth", "Eyes", "Markings")) + /obj/item/clothing/mask/gas/clown_hat/sexy name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index c944b2aa1f..f51593b590 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -234,7 +234,6 @@ Contains: icon_state = "ert_medical" item_state = "ert_medical" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/med - species_exception = list(/datum/species/angel) //Red alert ERT @@ -296,7 +295,6 @@ Contains: icon_state = "ert_medical-alert" item_state = "ert_medical-alert" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/med - species_exception = list(/datum/species/angel) /obj/item/clothing/suit/space/eva name = "EVA suit" diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm index 470a3695fc..25c40ee5d8 100644 --- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm +++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm @@ -32,6 +32,20 @@ can_adjust = FALSE mutantrace_variation = STYLE_DIGITIGRADE //The clown suit must look funny, no taur alpha masks where possible. +/obj/item/clothing/under/rank/civilian/polychromic_clown + name = "polychromic clown suit" + desc = "'HONK!'" + icon_state = "clown" + item_state = "clown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE //The clown suit must look funny, no taur alpha masks where possible. + var/list/poly_colors = list("#FF0000", "#FF99FF", "#FFFF00", "#FFFFFF") + +/obj/item/clothing/under/rank/civilian/polychromic_clown/ComponentInitialize() + . = ..() + AddElement(/datum/element/polychromic, poly_colors, 4) + /obj/item/clothing/under/rank/civilian/clown/blue name = "blue clown suit" desc = "'BLUE HONK!'" diff --git a/code/modules/hydroponics/hydroponics_chemreact.dm b/code/modules/hydroponics/hydroponics_chemreact.dm index a4ef78a21f..640784aed8 100644 --- a/code/modules/hydroponics/hydroponics_chemreact.dm +++ b/code/modules/hydroponics/hydroponics_chemreact.dm @@ -12,21 +12,16 @@ /obj/machinery/hydroponics/proc/mutation_roll(mob/user) - switch(rand(100)) + switch(rand(1, 100)) if(91 to 100) adjustHealth(-10) visible_message("\The [myseed.plantname] starts to wilt and burn!") - return if(41 to 90) if(myseed && !self_sustaining) //Stability myseed.adjust_instability(5) - return if(21 to 40) visible_message("\The [myseed.plantname] appears unusually reactive...") - return if(11 to 20) mutateweed() - return if(1 to 10) mutatepest(user) - return diff --git a/code/modules/jobs/job_report.dm b/code/modules/jobs/job_report.dm index 88c7f7ad19..016e34f525 100644 --- a/code/modules/jobs/job_report.dm +++ b/code/modules/jobs/job_report.dm @@ -17,6 +17,13 @@ ui = new(user, src, "TrackedPlaytime") ui.open() +/datum/job_report_menu/ui_data(mob/user) + var/list/data = list() + + data["exemptStatus"] = (owner.prefs?.db_flags & DB_FLAG_EXEMPT) + + return data + /datum/job_report_menu/ui_static_data() if (!CONFIG_GET(flag/use_exp_tracking)) return list("failReason" = JOB_REPORT_MENU_FAIL_REASON_TRACKING_DISABLED) @@ -42,8 +49,39 @@ data["livingTime"] = play_records[EXP_TYPE_LIVING] data["ghostTime"] = play_records[EXP_TYPE_GHOST] + data["adminTime"] = play_records[EXP_TYPE_ADMIN] ? play_records[EXP_TYPE_ADMIN] : 0 + + data["isAdmin"] = check_rights(R_ADMIN, show_msg = FALSE) return data +/datum/job_report_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("toggle_exempt") + if(!check_rights(R_ADMIN)) + message_admins("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin rights.") + log_admin("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin rights.") + to_chat(usr, span_danger("ERROR: Insufficient admin rights."), confidential = TRUE) + return TRUE + + var/datum/admins/viewer_admin_datum = GLOB.admin_datums[usr.ckey] + + if(!viewer_admin_datum) + message_admins("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin datum for their ckey.") + log_admin("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin datum for their ckey.") + to_chat(usr, span_danger("ERROR: Insufficient admin rights."), confidential = TRUE) + return TRUE + + if(QDELETED(owner)) + to_chat(usr, span_danger("ERROR: Client not found."), confidential = TRUE) + return TRUE + + viewer_admin_datum.toggle_exempt_status(owner) + return TRUE + #undef JOB_REPORT_MENU_FAIL_REASON_TRACKING_DISABLED #undef JOB_REPORT_MENU_FAIL_REASON_NO_RECORDS diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index b005822438..0d46912a5a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -694,16 +694,20 @@ /datum/reagent/flightpotion/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) - if(!ishumanbasic(M) || reac_volume < 5) // implying xenohumans are holy + var/mob/living/carbon/C = M + if(reac_volume < 5) if(method == INGEST && show_message) - to_chat(M, "You feel nothing but a terrible aftertaste.") + to_chat(C, "You feel nothing but a terrible aftertaste.") return ..() - - to_chat(M, "A terrible pain travels down your back as wings burst out!") - M.set_species(/datum/species/angel) - playsound(M.loc, 'sound/items/poster_ripped.ogg', 50, 1, -1) - M.adjustBruteLoss(20) - M.emote("scream") + var/has_wings = (C.dna.species.mutant_bodyparts["deco_wings"] && C.dna.features["deco_wings"] != "None" || C.dna.species.mutant_bodyparts["insect_wings"] && C.dna.features["insect_wings"] != "None") + var/has_functional_wings = (C.dna.species.mutant_bodyparts["wings"] != null) + to_chat(C, "A terrible pain travels down your back as [has_wings || has_functional_wings ? "your wings transform" : "wings burst out"]!") + C.dna.species.GiveSpeciesFlight(C, has_functional_wings ? TRUE : FALSE) //give them the full list of wing choices if this is their second flight potion + to_chat(C, "You feel blessed!") + ADD_TRAIT(C, TRAIT_HOLY, SPECIES_TRAIT) //implying anyone is truly holy in a setting where people throw tantrums when things aren't violent + playsound(C.loc, 'sound/items/poster_ripped.ogg', 50, TRUE, -1) + C.adjustBruteLoss(20) + C.emote("scream") ..() diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 800682b8cf..07adec0aa4 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -1,4 +1,8 @@ -//Angel Wings +//Functional Wings + +/datum/sprite_accessory/wings + icon = 'icons/mob/wings_functional.dmi' + relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/wings/none name = "None" @@ -9,23 +13,12 @@ return (!H.dna.features["wings"] || H.dna.features["wings"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)))) /datum/sprite_accessory/wings_open - icon = 'icons/mob/wings.dmi' + icon = 'icons/mob/wings_functional.dmi' relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/wings_open/is_not_visible(var/mob/living/carbon/human/H, var/tauric) return (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)) || H.dna.species.mutant_bodyparts["wings"]) -/datum/sprite_accessory/wings_open/angel - name = "Angel" - icon_state = "angel" - color_src = 0 - dimension_x = 46 - center = TRUE - dimension_y = 34 - -/datum/sprite_accessory/wings - icon = 'icons/mob/wings.dmi' - relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/wings/angel name = "Angel" @@ -36,6 +29,114 @@ dimension_y = 34 locked = TRUE +/datum/sprite_accessory/wings_open/angel + name = "Angel" + icon_state = "angel" + color_src = 0 + dimension_x = 46 + center = TRUE + dimension_y = 34 + +/datum/sprite_accessory/wings/dragon + name = "Dragon" + icon_state = "dragon" + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/dragon + name = "Dragon" + icon_state = "dragon" + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/megamoth + name = "Megamoth" + icon_state = "megamoth" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/megamoth + name = "Megamoth" + icon_state = "megamoth" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/mothra + name = "Mothra" + icon_state = "mothra" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/mothra + name = "Mothra" + icon_state = "mothra" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/skeleton + name = "Skeleton" + icon_state = "skele" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/skeleton + name = "Skeleton" + icon_state = "skele" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/robotic + name = "Robotic" + icon_state = "robotic" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/robotic + name = "Robotic" + icon_state = "robotic" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/fly + name = "Fly" + icon_state = "fly" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/fly + name = "Fly" + icon_state = "fly" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + // Decorative wings /datum/sprite_accessory/deco_wings @@ -43,6 +144,10 @@ color_src = WINGCOLOR mutant_part_string = "insect_wings" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) + var/list/upgrade_to = list() //What the wings change to if the mob consumes a flight potion or gains true wings through other means. If it's an empty list, it will pick the species alternative instead. + +/datum/sprite_accessory/deco_wings/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (H.dna.features["wings"] != "None") //true wings will override decorative wings /datum/sprite_accessory/deco_wings/none name = "None" @@ -57,162 +162,201 @@ center = TRUE dimension_y = 34 relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + upgrade_to = SPECIES_WINGS_ANGEL //obviously //nonmoth wings /datum/sprite_accessory/deco_wings/bat name = "Bat" icon_state = "bat" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/deco_wings/bee name = "Bee" icon_state = "bee" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/deco_wings/bee2 name = "Small Bee" icon_state = "beewings" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/deco_wings/dragon name = "Dragon" icon_state = "dragon" + upgrade_to = SPECIES_WINGS_DRAGON //lol /datum/sprite_accessory/deco_wings/dragonfly name = "Dragonfly" icon_state = "dragonfly" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/deco_wings/fairy name = "Fairy" icon_state = "fairy" + upgrade_to = SPECIES_WINGS_INSECT //rip people's sparkly wings until someone sprites in some huge fairy wings or something /datum/sprite_accessory/deco_wings/featheredwing name = "Feathery" icon_state = "feathery" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/deco_wings/featheredwingmedium name = "Medium Feathered" icon_state = "feathered3" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/deco_wings/featheredwinglarge name = "Large Feathered" icon_state = "feathered2" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/deco_wings/harpywings name = "Harpy" icon_state = "harpywings" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/deco_wings/roboticwing name = "Robotic" icon_state = "drago" + upgrade_to = SPECIES_WINGS_ROBOT /datum/sprite_accessory/deco_wings/succubusblack name = "Succubus Black" icon_state = "succubusblack" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/deco_wings/succubuspurple name = "Succubus Purple" icon_state = "succubuspurple" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/deco_wings/succubusred name = "Succubus Red" icon_state = "succubusred" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/deco_wings/xenobackplate name = "Xenomorph Backplate" icon_state = "snagbackplate" + upgrade_to = list() //moth wings /datum/sprite_accessory/deco_wings/atlas name = "Atlas" icon_state = "atlas" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/brown name = "Brown" icon_state = "brown" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/deathhead name = "Deathshead" icon_state = "deathhead" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/featherymoth name = "Feathery Moth Wings" icon_state = "featherymoth" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/firewatch name = "Firewatch" icon_state = "firewatch" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/gothic name = "Gothic" icon_state = "gothic" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/jungle name = "Jungle" icon_state = "jungle" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/lovers name = "Lovers" icon_state = "lovers" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/luna name = "Luna" icon_state = "luna" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/monarch name = "Monarch" icon_state = "monarch" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/moonfly name = "Moon Fly" icon_state = "moonfly" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/oakworm name = "Oak Worm" icon_state = "oakworm" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/plain name = "Plain" icon_state = "plain" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/plasmafire name = "Plasma Fire" icon_state = "plasmafire" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/poison name = "Poison" icon_state = "poison" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/punished name = "Burnt Off" icon_state = "punished" + upgrade_to = SPECIES_WINGS_MOTH //through TG code moth wings aren't meant to get upgraded if they're burnt off but... /datum/sprite_accessory/deco_wings/ragged name = "Ragged" icon_state = "ragged" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/reddish name = "Reddish" icon_state = "redish" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/rosy name = "Rosy" icon_state = "rosy" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/royal name = "Royal" icon_state = "royal" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/snow name = "Snow" icon_state = "snow" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/whitefly name = "White Fly" icon_state = "whitefly" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/deco_wings/witchwing name = "Witch Wing" icon_state = "witchwing" + upgrade_to = SPECIES_WINGS_MOTH //INSECT WINGS @@ -220,67 +364,86 @@ icon = 'icons/mob/wings.dmi' color_src = WINGCOLOR relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) + var/list/upgrade_to = list() + +/datum/sprite_accessory/insect_wings/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (H.dna.features["wings"] != "None") //true wings will override decorative wings //non insect wings -/datum/sprite_accessory/deco_wings/bat +/datum/sprite_accessory/insect_wings/bat name = "Bat" icon_state = "bat" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/insect_wings/bee name = "Bee" icon_state = "bee" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/insect_wings/bee2 name = "Small Bee" icon_state = "beewings" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/insect_wings/dragon name = "Dragon" icon_state = "dragon" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/insect_wings/dragonfly name = "Dragonfly" icon_state = "dragonfly" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/insect_wings/fairy name = "Fairy" icon_state = "fairy" + upgrade_to = SPECIES_WINGS_INSECT /datum/sprite_accessory/insect_wings/featheredwing name = "Feathery" icon_state = "feathery" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/insect_wings/featheredwingmedium name = "Medium Feathered" icon_state = "feathered3" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/insect_wings/featheredwinglarge name = "Large Feathered" icon_state = "feathered2" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/insect_wings/harpywings name = "Harpy" icon_state = "harpywings" + upgrade_to = SPECIES_WINGS_ANGEL /datum/sprite_accessory/insect_wings/roboticwing name = "Robotic" icon_state = "drago" + upgrade_to = SPECIES_WINGS_ROBOT /datum/sprite_accessory/insect_wings/succubusblack name = "Succubus Black" icon_state = "succubusblack" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/insect_wings/succubuspurple name = "Succubus Purple" icon_state = "succubuspurple" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/insect_wings/succubusred name = "Succubus Red" icon_state = "succubusred" + upgrade_to = SPECIES_WINGS_DRAGON /datum/sprite_accessory/insect_wings/xenobackplate name = "Xenomorph Backplate" icon_state = "snagbackplate" + upgrade_to = list() //moth wings @@ -288,98 +451,122 @@ name = "None" icon_state = "none" relevant_layers = null + upgrade_to = list() /datum/sprite_accessory/insect_wings/atlas name = "Atlas" icon_state = "atlas" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/brown name = "Brown" icon_state = "brown" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/deathhead name = "Deathshead" icon_state = "deathhead" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/featherymoth name = "Feathery Moth Wings" icon_state = "featherymoth" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/firewatch name = "Firewatch" icon_state = "firewatch" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/gothic name = "Gothic" icon_state = "gothic" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/jungle name = "Jungle" icon_state = "jungle" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/lovers name = "Lovers" icon_state = "lovers" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/luna name = "Luna" icon_state = "luna" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/monarch name = "Monarch" icon_state = "monarch" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/moonfly name = "Moon Fly" icon_state = "moonfly" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/oakworm name = "Oak Worm" icon_state = "oakworm" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/plain name = "Plain" icon_state = "plain" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/plasmafire name = "Plasma Fire" icon_state = "plasmafire" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/poison name = "Poison" icon_state = "poison" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/punished name = "Burnt Off" icon_state = "punished" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/ragged name = "Ragged" icon_state = "ragged" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/reddish name = "Reddish" icon_state = "redish" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/rosy name = "Rosy" icon_state = "rosy" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/royal name = "Royal" icon_state = "royal" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/snow name = "Snow" icon_state = "snow" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/whitefly name = "White Fly" icon_state = "whitefly" + upgrade_to = SPECIES_WINGS_MOTH /datum/sprite_accessory/insect_wings/witchwing name = "Witch Wing" icon_state = "witchwing" + upgrade_to = SPECIES_WINGS_MOTH //insect markings /datum/sprite_accessory/insect_markings // Extra markings for insects ported from tg. @@ -453,9 +640,11 @@ /datum/sprite_accessory/deco_wings/eyestalks name = "gazer eyestalks" icon_state = "eyestalks" + upgrade_to = list() //and suddenly flight potions become a lot more awkward when they gouge your tentacle eyes out. //ckeys_allowed = list("liquidfirefly","seiga") //At request. /datum/sprite_accessory/insect_wings/eyestalks name = "gazer eyestalks" icon_state = "eyestalks" + upgrade_to = list() //ckeys_allowed = list("liquidfirefly","seiga") //At request. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4fc60cc6ac..5a58289316 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -948,9 +948,6 @@ /mob/living/carbon/human/species/android race = /datum/species/android -/mob/living/carbon/human/species/angel - race = /datum/species/angel - /mob/living/carbon/human/species/corporate race = /datum/species/corporate diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 22e97290ad..bbe2781403 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -142,6 +142,15 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /// A path to an outfit that is important for species life e.g. plasmaman outfit var/datum/outfit/outfit_important_for_life + ///Is this species a flying species? Used as an easy check for some things + var/flying_species = FALSE + ///The actual flying ability given to flying species + var/datum/action/innate/flight/fly + ///Current wings icon + var/wings_icon = "Angel" + //Dictates which wing icons are allowed for a given species. If count is >1 a radial menu is used to choose between all icons in list + var/list/wings_icons = SPECIES_WINGS_ANGEL + ///Species-only traits. Can be found in [code/__DEFINES/DNA.dm] var/list/species_traits = list(HAS_FLESH,HAS_BONE) //by default they can scar and have bones/flesh unless set to something else ///Generic traits tied to having the species. @@ -495,6 +504,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) for(var/datum/disease/A in C.diseases) A.cure(FALSE) + if(flying_species && isnull(fly)) + fly = new + fly.Grant(C) + if(ishuman(C)) var/mob/living/carbon/human/H = C if(NOGENITALS in H.dna.species.species_traits) @@ -569,6 +582,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(F) qdel(F) + if(flying_species) + if(C.movement_type & FLYING) + ToggleFlight(C) + fly.Remove(C) + QDEL_NULL(fly) + if(C.dna && C.dna.species && (C.dna.features["wings"] == wings_icon)) + if("wings" in C.dna.species.mutant_bodyparts) + C.dna.species.mutant_bodyparts -= "wings" + C.dna.features["wings"] = "None" + C.update_body() if(ROBOTIC_LIMBS in species_traits) for(var/obj/item/bodypart/B in C.bodyparts) @@ -1186,6 +1209,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return move_trail */ /datum/species/proc/spec_life(mob/living/carbon/human/H) + if(flying_species) //turns off flight automatically if they can't. + HandleFlight(H) if(HAS_TRAIT(H, TRAIT_NOBREATH)) H.setOxyLoss(0) H.losebreath = 0 @@ -2388,10 +2413,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return //////////// -//Stun// +// Stun // //////////// /datum/species/proc/spec_stun(mob/living/carbon/human/H,amount) + if(flying_species && H.movement_type & FLYING) + ToggleFlight(H,0) + flyslip(H) if(H) stop_wagging_tail(H) . = stunmod * H.physiology.stun_mod * amount @@ -2401,10 +2429,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) ////////////// /datum/species/proc/space_move(mob/living/carbon/human/H) - return 0 + if(H.movement_type & FLYING) + return TRUE + return FALSE /datum/species/proc/negates_gravity(mob/living/carbon/human/H) - return 0 + if(H.movement_type & FLYING) + return TRUE + return FALSE //////////////// //Tail Wagging// @@ -2438,3 +2470,130 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) mutant_bodyparts["spines"] = mutant_bodyparts["waggingspines"] mutant_bodyparts -= "waggingspines" H.update_body() + +/////////////// +//FLIGHT SHIT// +/////////////// + +/datum/species/proc/GiveSpeciesFlight(mob/living/carbon/human/H, all_wings = FALSE) + if(flying_species) //grant them the choice of all wings if they don't have them + all_wings = TRUE + flying_species = TRUE + //CITADEL CHANGE: check if they already have wings, and "evolve" them based off of the wings they have. If they have none, use their species wings basis. + var/list/wingslist + if(all_wings) //give them the full list of wing choices to pick from, typically if they drink a second flight potion + wingslist = SPECIES_WINGS_ALL + else + //why the fuck do we have two different wing types anyways? they're literally almost both using the same wing shit too. + var/datum/sprite_accessory/deco_wings/D = GLOB.deco_wings_list[H.dna.features["deco_wings"]] + var/datum/sprite_accessory/insect_wings/I = GLOB.insect_wings_list[H.dna.features["insect_wings"]] + if(mutant_bodyparts["deco_wings"] && D?.upgrade_to.len) //species check to see if they were allowed to have deco wings + wingslist = D.upgrade_to + else if(mutant_bodyparts["insect_wings"] && I?.upgrade_to.len) //species check to see if they were allowed to have insect wings + wingslist = I.upgrade_to + else + wingslist = wings_icons + + if(wingslist.len > 1) + if(!H.client) + wings_icon = pick(wingslist) + else + var/list/wings = list() + for(var/W in wingslist) + var/datum/sprite_accessory/S = GLOB.wings_list[W] //Gets the datum for every wing this species has, then prompts user with a radial menu + var/image/img = image(icon = 'icons/mob/wings_functional.dmi', icon_state = "m_wingsopen_[S.icon_state]_BEHIND") //Process the HUD elements + img.transform *= 0.5 + img.pixel_x = -32 + if(wings[S.name]) + stack_trace("Different wing types with repeated names. Please fix as this may cause issues.") + else + wings[S.name] = img + wings_icon = show_radial_menu(H, H, wings, tooltips = TRUE) + if(!wings_icon) + wings_icon = pick(wings_icons) + else + wings_icon = wingslist[1] + if(isnull(fly)) + fly = new + fly.Grant(H) + if(H.dna.features["wings"] != wings_icon) + mutant_bodyparts["wings"] = wings_icon + H.dna.features["wings"] = wings_icon + H.update_body() + +/datum/species/proc/HandleFlight(mob/living/carbon/human/H) + if(H.movement_type & FLYING) + if(!CanFly(H)) + ToggleFlight(H) + return FALSE + return TRUE + else + return FALSE + +/datum/species/proc/CanFly(mob/living/carbon/human/H) + if(H.stat || !(H.mobility_flags & MOBILITY_STAND)) + return FALSE + if(H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)))) //Jumpsuits have tail holes, so it makes sense they have wing holes too + to_chat(H, "Your suit blocks your wings from extending!") + return FALSE + var/turf/T = get_turf(H) + if(!T) + return FALSE + var/datum/gas_mixture/environment = T.return_air() + if(environment && !(environment.return_pressure() > 30)) + to_chat(H, "The atmosphere is too thin for you to fly!") + return FALSE + else + return TRUE + +/datum/species/proc/flyslip(mob/living/carbon/human/H) + var/obj/buckled_obj + if(H.buckled) + buckled_obj = H.buckled + to_chat(H, "Your wings spazz out and launch you!") + playsound(H.loc, 'sound/misc/slip.ogg', 50, TRUE, -3) + for(var/obj/item/I in H.held_items) + H.accident(I) + var/olddir = H.dir + H.stop_pulling() + if(buckled_obj) + buckled_obj.unbuckle_mob(H) + step(buckled_obj, olddir) + else + new /datum/forced_movement(H, get_ranged_target_turf(H, olddir, 4), 1, FALSE, CALLBACK(H, /mob/living/carbon/.proc/spin, 1, 1)) + return TRUE + +//UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly +/datum/species/proc/ToggleFlight(mob/living/carbon/human/H) + if(!(H.movement_type & FLYING) && CanFly(H)) + stunmod *= 2 + speedmod -= 0.35 + H.setMovetype(H.movement_type | FLYING) + override_float = TRUE + H.pass_flags |= PASSTABLE + H.OpenWings() + H.update_mobility() + else + stunmod *= 0.5 + speedmod += 0.35 + H.setMovetype(H.movement_type & ~FLYING) + override_float = FALSE + H.pass_flags &= ~PASSTABLE + H.CloseWings() + +/datum/action/innate/flight + name = "Toggle Flight" + check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_STUN + icon_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "flight" + +/datum/action/innate/flight/Activate() + var/mob/living/carbon/human/H = owner + var/datum/species/S = H.dna.species + if(S.CanFly(H)) + S.ToggleFlight(H) + if(!(H.movement_type & FLYING)) + to_chat(H, "You settle gently back onto the ground...") + else + to_chat(H, "You beat your wings and begin to hover gently above the ground...") + H.set_resting(FALSE, TRUE) diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 3c6a2a8e13..d9edfc240d 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -12,3 +12,4 @@ species_language_holder = /datum/language_holder/synthetic limbs_id = SPECIES_SYNTH species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm deleted file mode 100644 index 977e8aaab3..0000000000 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ /dev/null @@ -1,145 +0,0 @@ -/datum/species/angel - name = "Angel" - id = SPECIES_ANGEL - default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,HAS_FLESH,HAS_BONE) - mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "wings" = "Angel") - use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM - no_equip = list(SLOT_BACK) - blacklisted = 1 - limbs_id = SPECIES_HUMAN - skinned_type = /obj/item/stack/sheet/animalhide/human - species_category = SPECIES_CATEGORY_BASIC //they're a kind of human - - var/datum/action/innate/flight/fly - -/datum/species/angel/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) - ..() - if(H.dna && H.dna.species && (H.dna.features["wings"] != "Angel")) - if(!H.dna.species.mutant_bodyparts["wings"]) - H.dna.species.mutant_bodyparts["wings"] = "Angel" - H.dna.features["wings"] = "Angel" - H.update_body() - if(ishuman(H) && !fly) - fly = new - fly.Grant(H) - ADD_TRAIT(H, TRAIT_HOLY, SPECIES_TRAIT) - -/datum/species/angel/on_species_loss(mob/living/carbon/human/H) - if(fly) - fly.Remove(H) - if(H.movement_type & FLYING) - H.setMovetype(H.movement_type & ~FLYING) - ToggleFlight(H,0) - if(H.dna && H.dna.species && (H.dna.features["wings"] == "Angel")) - if(H.dna.species.mutant_bodyparts["wings"]) - H.dna.species.mutant_bodyparts -= "wings" - H.dna.features["wings"] = "None" - H.update_body() - REMOVE_TRAIT(H, TRAIT_HOLY, SPECIES_TRAIT) - ..() - -/datum/species/angel/spec_life(mob/living/carbon/human/H) - HandleFlight(H) - -/datum/species/angel/proc/HandleFlight(mob/living/carbon/human/H) - if(H.movement_type & FLYING) - if(!CanFly(H)) - ToggleFlight(H,0) - return 0 - return 1 - else - return 0 - -/datum/species/angel/proc/CanFly(mob/living/carbon/human/H) - if(!CHECK_MOBILITY(H, MOBILITY_MOVE)) - return FALSE - if(H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)))) //Jumpsuits have tail holes, so it makes sense they have wing holes too - to_chat(H, "Your suit blocks your wings from extending!") - return FALSE - var/turf/T = get_turf(H) - if(!T) - return FALSE - - var/datum/gas_mixture/environment = T.return_air() - if(environment && !(environment.return_pressure() > 30)) - to_chat(H, "The atmosphere is too thin for you to fly!") - return FALSE - return TRUE - -/datum/action/innate/flight - name = "Toggle Flight" - check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_STUN - icon_icon = 'icons/mob/actions/actions_items.dmi' - button_icon_state = "flight" - -/datum/action/innate/flight/Activate() - var/mob/living/carbon/human/H = owner - var/datum/species/angel/A = H.dna.species - if(A.CanFly(H)) - if(H.movement_type & FLYING) - to_chat(H, "You settle gently back onto the ground...") - A.ToggleFlight(H,0) - H.update_mobility() - else - to_chat(H, "You beat your wings and begin to hover gently above the ground...") - H.set_resting(FALSE, TRUE) - A.ToggleFlight(H,1) - H.update_mobility() - -/datum/species/angel/proc/flyslip(mob/living/carbon/human/H) - var/obj/buckled_obj - if(H.buckled) - buckled_obj = H.buckled - - to_chat(H, "Your wings spazz out and launch you!") - - playsound(H.loc, 'sound/misc/slip.ogg', 50, 1, -3) - - for(var/obj/item/I in H.held_items) - H.accident(I) - - var/olddir = H.dir - - H.stop_pulling() - if(buckled_obj) - buckled_obj.unbuckle_mob(H) - step(buckled_obj, olddir) - else - for(var/i=1, i<5, i++) - spawn (i) - step(H, olddir) - H.spin(1,1) - return 1 - - -/datum/species/angel/spec_stun(mob/living/carbon/human/H,amount) - if(H.movement_type & FLYING) - ToggleFlight(H,0) - flyslip(H) - . = ..() - -/datum/species/angel/negates_gravity(mob/living/carbon/human/H) - if(H.movement_type & FLYING) - return 1 - -/datum/species/angel/space_move(mob/living/carbon/human/H) - if(H.movement_type & FLYING) - return 1 - -/datum/species/angel/proc/ToggleFlight(mob/living/carbon/human/H,flight) - if(flight && CanFly(H)) - stunmod = 2 - speedmod = -0.1 - H.setMovetype(H.movement_type | FLYING) - override_float = TRUE - H.pass_flags |= PASSTABLE - H.OpenWings() - else - stunmod = 1 - speedmod = 0 - H.setMovetype(H.movement_type & ~FLYING) - override_float = FALSE - H.pass_flags &= ~PASSTABLE - H.CloseWings() - update_species_slowdown(H) diff --git a/code/modules/mob/living/carbon/human/species_types/anthropomorph.dm b/code/modules/mob/living/carbon/human/species_types/anthropomorph.dm index b79c281b3b..c9af50de9d 100644 --- a/code/modules/mob/living/carbon/human/species_types/anthropomorph.dm +++ b/code/modules/mob/living/carbon/human/species_types/anthropomorph.dm @@ -57,4 +57,5 @@ exotic_bloodtype = "S" exotic_blood_color = BLOOD_COLOR_OIL allowed_limb_ids = list("mammal","aquatic","avian", "human") - species_category = "robot" + species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/arachnid.dm b/code/modules/mob/living/carbon/human/species_types/arachnid.dm index 454625cf36..7495e2500e 100644 --- a/code/modules/mob/living/carbon/human/species_types/arachnid.dm +++ b/code/modules/mob/living/carbon/human/species_types/arachnid.dm @@ -21,6 +21,7 @@ var/web_cooldown = 200 var/web_ready = TRUE var/spinner_rate = 25 + wings_icons = SPECIES_WINGS_MOTH //Arachnids' phylum is arthropods, which include butterflies. Might as well hit them with moth wings. /datum/species/arachnid/random_name(gender,unique,lastname) if(unique) diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm index f87f425b5f..df4abf864a 100644 --- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm @@ -19,6 +19,7 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" species_category = SPECIES_CATEGORY_INSECT + wings_icons = SPECIES_WINGS_INSECT allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale") diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index e9baa786da..48b5032129 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -19,3 +19,4 @@ sexes = 0 gib_types = /obj/effect/gibspawner/robot species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 7cd582d050..facc3dfd8d 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -16,6 +16,7 @@ has_field_of_vision = FALSE //Too much of a trouble, their vision is already bound to their severed head. species_category = SPECIES_CATEGORY_UNDEAD var/pumpkin = FALSE + wings_icons = SPECIES_WINGS_SKELETAL //seems suitable for an undead. var/obj/item/dullahan_relay/myhead diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 5a185cbeb8..86720289fe 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -13,6 +13,7 @@ exotic_bloodtype = "BUG" exotic_blood_color = BLOOD_COLOR_BUG species_category = SPECIES_CATEGORY_INSECT + wings_icons = SPECIES_WINGS_INSECT /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(istype(chem, /datum/reagent/toxin/pestkiller)) diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm index c3fd9e21fc..8c9e6bcd4f 100644 --- a/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -35,6 +35,7 @@ exotic_bloodtype = "S" exotic_blood_color = BLOOD_COLOR_OIL species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT var/datum/action/innate/monitor_change/screen 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 0693bf64e1..66402de911 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -29,6 +29,7 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" species_category = SPECIES_CATEGORY_JELLY + wings_icons = SPECIES_WINGS_JELLY ass_image = 'icons/ass/assslime.png' /datum/species/jelly/on_species_loss(mob/living/carbon/C) @@ -69,6 +70,7 @@ to_chat(H, "You feel drained!") if(H.blood_volume < (BLOOD_VOLUME_BAD*H.blood_ratio)) Cannibalize_Body(H) + ..() /datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - H.get_missing_limbs() diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 07fa78a88a..ef8fd35c45 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -29,6 +29,7 @@ tail_type = "tail_lizard" wagging_type = "waggingtail_lizard" species_category = SPECIES_CATEGORY_LIZARD + wings_icons = SPECIES_WINGS_DRAGON ass_image = 'icons/ass/asslizard.png' diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 547d017c23..9c29856084 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -23,6 +23,7 @@ outfit_important_for_life = /datum/outfit/plasmaman species_category = SPECIES_CATEGORY_SKELETON + wings_icons = SPECIES_WINGS_SKELETAL ass_image = 'icons/ass/assplasma.png' diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 4c82a25b4b..bfef310cdf 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -16,6 +16,7 @@ mutanteyes = /obj/item/organ/eyes/night_vision species_category = SPECIES_CATEGORY_SHADOW + wings_icons = SPECIES_WINGS_SKELETAL //not sure what's more spooky for these guys - skeleton or dragon? /datum/species/shadow/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 8175f505fa..5a927397fb 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -16,6 +16,7 @@ burnmod = 1.25 species_category = SPECIES_CATEGORY_SKELETON //they have their own category that's disassociated from undead, paired with plasmapeople + wings_icons = SPECIES_WINGS_SKELETAL /datum/species/skeleton/New() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) //skeletons are stronger during the spooky season! diff --git a/code/modules/mob/living/carbon/human/species_types/synthliz.dm b/code/modules/mob/living/carbon/human/species_types/synthliz.dm index c692370030..aa853ee551 100644 --- a/code/modules/mob/living/carbon/human/species_types/synthliz.dm +++ b/code/modules/mob/living/carbon/human/species_types/synthliz.dm @@ -35,3 +35,4 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 91711b5c39..316b129ee8 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -18,6 +18,7 @@ var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged species_language_holder = /datum/language_holder/synthetic species_category = SPECIES_CATEGORY_ROBOT + wings_icons = SPECIES_WINGS_ROBOT /datum/species/synth/military name = "Military Synth" 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 e708835ed1..3e54a4e638 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -15,8 +15,10 @@ skinned_type = /obj/item/stack/sheet/animalhide/human var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." species_category = SPECIES_CATEGORY_UNDEAD + wings_icons = SPECIES_WINGS_DRAGON //closest to "bat" wings. var/batform_enabled = TRUE + /datum/species/vampire/roundstart id = SPECIES_VAMPIRE_WEAK batform_enabled = FALSE diff --git a/code/modules/mob/living/carbon/human/species_types/xeno.dm b/code/modules/mob/living/carbon/human/species_types/xeno.dm index d3249edd96..ffb8ac5a80 100644 --- a/code/modules/mob/living/carbon/human/species_types/xeno.dm +++ b/code/modules/mob/living/carbon/human/species_types/xeno.dm @@ -17,3 +17,4 @@ disliked_food = JUNKFOOD liked_food = GROSS | MEAT species_category = SPECIES_CATEGORY_ALIEN + wings_icons = SPECIES_WINGS_DRAGON //most depictions of xenomorphs with wings are closest to this. diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 57a11481d7..0dc08eeedb 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -16,6 +16,7 @@ disliked_food = NONE liked_food = GROSS | MEAT | RAW species_category = SPECIES_CATEGORY_UNDEAD + wings_icons = SPECIES_WINGS_SKELETAL //eh. /datum/species/zombie/notspaceproof id = "notspaceproofzombie" diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 5bfc6fe652..561425c710 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -144,6 +144,7 @@ newletter = "nglu" if(5) newletter = "glor" + else . += newletter return sanitize(.) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 256e128ff4..8490daa681 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -347,10 +347,10 @@ var/dir2 = 0 var/dir3 = 0 switch(direction) - if(NORTH||SOUTH) + if(NORTH, SOUTH) dir2 = 4 dir3 = 8 - if(EAST||WEST) + if(EAST, WEST) dir2 = 1 dir3 = 2 var/turf/T2 = T diff --git a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm index 088683ccd2..d9dfdd8c19 100644 --- a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm @@ -145,6 +145,8 @@ if(7) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/clothing/mask/cigarette/rollie(src) + else + return /obj/structure/closet/crate/grave/open(mob/living/user, obj/item/S) if(!opened) diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 4a52e446bc..b3b3b4aa1d 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -41,13 +41,14 @@ target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY) if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed)) target.mind.remove_antag_datum(/datum/antagonist/brainwashed) - switch(rand(1,6))//Now let's see what hopefully-not-important part of the brain we cut off - if(1) - target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) - if(2) - target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) - if(3) - target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_SURGERY) + if(prob(50)) + switch(rand(1,3))//Now let's see what hopefully-not-important part of the brain we cut off + if(1) + target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) + if(2) + target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) + if(3) + target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_SURGERY) // you're cutting off a part of the brain.w var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) B.applyOrganDamage(50, 100) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 16caef5b4e..cea7502540 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -469,6 +469,7 @@ GLOBAL_LIST_EMPTY(vending_products) freebie(user, 2) if(16 to 25) freebie(user, 1) + if(26 to 75) if(76 to 90) tilt(user) if(91 to 100) diff --git a/html/changelogs/AutoChangeLog-pr-15414.yml b/html/changelogs/AutoChangeLog-pr-15414.yml new file mode 100644 index 0000000000..b483e8437c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15414.yml @@ -0,0 +1,5 @@ +author: "BlueWildrose and tralezab, Wjohnston, Mey Ha Zah, ArcaneDefense, Jack7D1, Papaporo, Sheits & Mqiib from TG and Yog" +delete-after: True +changes: + - rscadd: "TG wing port - All species can now use flight potions and grow wings. Your wing sprite will be based off of what wings you have on your character, or otherwise what species you are if you have no wings." + - bugfix: "Jellypeople did not call the species parent proc on spec_life. Fixed." diff --git a/html/changelogs/AutoChangeLog-pr-15510.yml b/html/changelogs/AutoChangeLog-pr-15510.yml new file mode 100644 index 0000000000..206bf8c13e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15510.yml @@ -0,0 +1,36 @@ +author: "TripleShades" +delete-after: True +changes: + - rscadd: "[Omega] Gateway shutter button" + - rscadd: "[Omega] Signs to the airlocks that lead to space that say SPACE" + - rscadd: "[Omega] Air Alarm for the Turbine itself" + - rscadd: "[Omega] SMES Unit for the Turbine itself" + - rscadd: "[Omega] Firelock to Robotics airlock" + - rscadd: "[Omega] Captain's Office now has a hand teleporter and medal box" + - rscadd: "[Omega] Screwdriver to Chemistry" + - rscadd: "[Omega] Space Cleaner bottle to Medbay" + - rscadd: "[Omega] Limb Grower and Spare Limb Crate to Surgery" + - rscadd: "[Omega] Kinkmate in Dorms" + - rscadd: "[Omega] Lightbulb fixture to Secure Tech Storage" + - rscadd: "[Omega] Armsky is now in the Armoury" + - rscdel: "[Omega] Extra automated announcement machine" + - rscdel: "[Omega] Wall inside of southwest Solar Array window" + - rscdel: "[Omega] Wall inside library maint airlock" + - rscdel: "[Omega] Duplicate Robotics airlock +tweak: [Omega] HoS gun now spawns in HoS locker instead of Captain's locker +tweak: [Omega] Both Solar Arrays now have more windows +tweak: [Omega] PACMAN moved out from behind a Command airlock in Engineering +tweak: [Omega] A few cameras so that they're not sitting improperly on windows +tweak: [Omega] Medbay Surgery now has a surgical duffel instead of strewn about tools +tweak: [Omega] Security Cell 1 is now properly named and has a bed instead of a chair +tweak: [Omega] Toxins scrubber piping now goes through a wall +tweak: [Omega] Robotics trash can is now moved to the small hallway between Robotics and Toxins +tweak: [Omega] Maint Pool drain moved down a tile so it's easier to retrieve lost items" + - bugfix: "[Omega] Lawyer Office access" + - bugfix: "[Omega] Both Solar Arrays are now wired up to power the station properly" + - bugfix: "[Omega] Wire leading to the single Supermatter Emitter should now be properly connected and not diagonal" + - bugfix: "[Omega] Gateway Maint airlock access" + - bugfix: "[Omega] Toxins Launch not being connected to the main air supply" + - bugfix: "[Omega] Toxins Mix Chamber no longer starts bolted" + - bugfix: "[Omega] Missing pipe above Security leading into Perma" + - bugfix: "[Omega] Secure Tech Storage now properly has an area" diff --git a/html/changelogs/AutoChangeLog-pr-15513.yml b/html/changelogs/AutoChangeLog-pr-15513.yml new file mode 100644 index 0000000000..077fb57101 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15513.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Default features on linux auxmos compile now formatted correctly" diff --git a/html/changelogs/AutoChangeLog-pr-15515.yml b/html/changelogs/AutoChangeLog-pr-15515.yml new file mode 100644 index 0000000000..dcd230897e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15515.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "reinforced plasma glass windows are buildable" diff --git a/html/changelogs/archive/2022-02.yml b/html/changelogs/archive/2022-02.yml index d38f2b34a7..17000e958a 100644 --- a/html/changelogs/archive/2022-02.yml +++ b/html/changelogs/archive/2022-02.yml @@ -74,3 +74,13 @@ - refactor: Refactors give/take > offer/receive - config: Added Families to the dynamic config - admin: Adds admin tp Family stuff +2022-02-17: + '[Timberpoes](https://github.com/Timberpoes)': + - admin: Re-added the button to the player playtime panel that lets admins toggle + a player's job playtime exemption status. +2022-02-19: + timothyteakettle: + - rscadd: polychromic clown outfit and mask +2022-02-20: + jupyterkat: + - refactor: switched equalization method to katmos diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index b0cbc3b623..2413b52d71 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index 7f1717b8ca..04d9b20a75 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/mob/wings.dmi b/icons/mob/wings.dmi index 92de5c150c..49d9e4d4a8 100644 Binary files a/icons/mob/wings.dmi and b/icons/mob/wings.dmi differ diff --git a/icons/mob/wings_functional.dmi b/icons/mob/wings_functional.dmi new file mode 100644 index 0000000000..5d1a82a245 Binary files /dev/null and b/icons/mob/wings_functional.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index ebc7140dae..f5bc9e7046 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 3a5dfb97a9..c16b416cd8 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm index 576b29cddc..52e79884c2 100644 --- a/modular_citadel/code/modules/client/loadout/mask.dm +++ b/modular_citadel/code/modules/client/loadout/mask.dm @@ -30,4 +30,8 @@ name = "Paper mask" path = /obj/item/clothing/mask/paper cost = 2 - + +/datum/gear/mask/polychromic_clown + name = "polychromic clown wig and mask" + path = /obj/item/clothing/mask/gas/clown_hat_polychromic + restricted_roles = list("Clown") diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index 86fcc867a3..c16aa5ea55 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -739,3 +739,9 @@ path = /obj/item/clothing/under/rank/cargo/tech/long subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS restricted_roles = list("Cargo Technician") + +/datum/gear/uniform/clown_polychromic + name = "polychromic clown suit" + path = /obj/item/clothing/under/rank/civilian/polychromic_clown + subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS + restricted_roles = list("Clown") diff --git a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm index e3f23a4992..dbf5ad0648 100644 --- a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm +++ b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm @@ -630,19 +630,19 @@ GLOBAL_LIST_EMPTY(rain_sounds) playchime = 1 switch(hour) - if(1 || 2) + if(1, 2) HRimgstate = "asshouroverlay-2" //Now it is ass, mostly because someones going to kill me for the other names. if(3) HRimgstate = "asshouroverlay-3" - if(4 || 5) + if(4, 5) HRimgstate = "asshouroverlay-4" if(6) HRimgstate = "asshouroverlay-6" - if(7 || 8) + if(7, 8) HRimgstate = "asshouroverlay-7" if(9) HRimgstate = "asshouroverlay-9" - if(10 || 11) + if(10, 11) HRimgstate = "asshouroverlay-10" else HRimgstate = "asshouroverlay-0" //Station time wraps to 0, and so does our hours. diff --git a/tgstation.dme b/tgstation.dme index 4328158bfc..cd5a1eb823 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2703,7 +2703,6 @@ #include "code\modules\mob\living\carbon\human\innate_abilities\limb_regeneration.dm" #include "code\modules\mob\living\carbon\human\species_types\abductor.dm" #include "code\modules\mob\living\carbon\human\species_types\android.dm" -#include "code\modules\mob\living\carbon\human\species_types\angel.dm" #include "code\modules\mob\living\carbon\human\species_types\anthropomorph.dm" #include "code\modules\mob\living\carbon\human\species_types\arachnid.dm" #include "code\modules\mob\living\carbon\human\species_types\bugmen.dm" diff --git a/tools/tgs4_scripts/PreCompile.sh b/tools/tgs4_scripts/PreCompile.sh index 6130736b4e..6e45a1d820 100755 --- a/tools/tgs4_scripts/PreCompile.sh +++ b/tools/tgs4_scripts/PreCompile.sh @@ -84,7 +84,7 @@ fi echo "Deploying auxmos..." git checkout "$AUXMOS_VERSION" -env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features all_reaction_hooks,explosive_decompression -- -C target-cpu=native +env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features "all_reaction_hooks katmos" -- -C target-cpu=native mv -f target/i686-unknown-linux-gnu/release/libauxmos.so "$1/libauxmos.so" cd ..