From 22bcdbf5f9f2ee66e7b0604f32a1f4b017746bdc Mon Sep 17 00:00:00 2001 From: Useroth <37159550+Useroth@users.noreply.github.com> Date: Mon, 29 Jan 2024 21:13:27 +0100 Subject: [PATCH] Nova ports batch 1 (#26273) * Map votes are no longer random (#43) * Disables the annoying fear of Santa from the claustrophobia quirk (#51) * Removes the job locks from all armbands except the sec armbands, and reflavors all armbands to not directly state this person is a member of x department (#62) * [MODULAR] Removes Arbitrary Loadout Restrictions (#58) * Removes an AM template from NorthStar as well as the prison curtain logic (#72) * Bilingual now let's you take common (if you don't already have it) (#78) * Period Era Re-Enactment: Basic autopunctuation (#84) * [Semi-modular] Gives Xeno-hybrids some xeno-organs in trade for high temperature weakness (#91) * The Thrill of the Hunt: Hemophage blood digestion changes (#93) * Removes the ability for shocks to stop your heart (#116) * Ghost cafe turf fixes (#161) * ungatekeeps headshots (#170) * Lo(v)re Wins: Mothic Language return (#186) * Add Bone Greaves As Foot Clothing For Tribals (#197) * Saving Private Oversized: Quirk balancing adjustments (#199) * Over(sized) and Under: Oversized combat adjustments (#202) * Shuttles no longer bolt their doors on transit (#203) * Increases PAI description and OOC notes limit (#207) * Makes headset sounds not insane (WHY DO THEY HAVE A RANGE OF 17 TI:LES?) (#215) * Add Bone D6 For Tribals. (#217) --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Name Co-authored-by: Ephemeralis Co-authored-by: lila Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com> Co-authored-by: Sable <102194057+Thlumyn@users.noreply.github.com> Co-authored-by: goobliner <141452834+goobliner@users.noreply.github.com> Co-authored-by: Lutowski <136726218+Lutowski@users.noreply.github.com> Co-authored-by: FearfulFurnishing <139661819+FearfulFurnishing@users.noreply.github.com> Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com> Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com> --- _maps/map_files/generic/CentCom_skyrat_z2.dmm | 260 +++++------------- .../skyrat/automapper/automapper_config.toml | 8 - .../templates/northstar/northstar_prison.dmm | 23 -- code/__DEFINES/~skyrat_defines/combat.dm | 1 + .../subsystem/processing/quirks.dm | 3 + .../components/crafting/entertainment.dm | 9 + .../quirks/negative_quirks/claustrophobia.dm | 4 +- code/game/objects/items/dice.dm | 6 + .../items/stacks/sheets/sheet_types.dm | 3 +- code/modules/client/preferences/language.dm | 1 + .../living/carbon/alien/adult/alien_powers.dm | 6 +- .../mob/living/carbon/human/human_defense.dm | 8 - code/modules/mob/living/living_say.dm | 4 + code/modules/shuttle/emergency.dm | 1 - code/modules/unit_tests/say.dm | 4 +- icons/obj/toys/dice.dmi | Bin 9228 -> 9998 bytes .../master_files/code/_globalvars/regexes.dm | 5 + .../master_files/code/_globalvars/text.dm | 8 + .../code/datums/votes/map_vote.dm | 3 + .../master_files/icons/misc/language.dmi | Bin 3989 -> 4484 bytes .../ashwalkers/code/clothing/ash_armour.dm | 35 +++ .../modules/ashwalkers/icons/feet.dmi | Bin 1107 -> 1276 bytes .../modules/ashwalkers/icons/feet_digi.dmi | Bin 1177 -> 1387 bytes .../modules/ashwalkers/icons/shoes.dmi | Bin 2227 -> 2810 bytes .../automapper/code/area_spawn_entries.dm | 5 - .../modules/clothing/accessories.dm | 24 ++ .../modules/clothing/head/head.dm | 13 +- .../customization/modules/jobs/_job.dm | 9 +- .../modules/language/_language_holder.dm | 1 - .../modules/language/chitinclick.dm | 21 +- .../customization/modules/language/mothic.dm | 20 ++ .../species/hemophage/corrupted_tongue.dm | 38 ++- .../species/hemophage/hemophage_moods.dm | 19 ++ .../species/hemophage/hemophage_organs.dm | 4 + .../mob/living/carbon/human/species/xeno.dm | 88 +++++- .../modules/ghostcafe/code/ghostcafeturf.dm | 19 ++ .../goofsec/code/sec_clothing_overrides.dm | 4 + .../loadout_items/loadout_datum_accessory.dm | 33 ++- .../loadout_items/loadout_datum_glasses.dm | 4 + .../loadout_items/loadout_datum_gloves.dm | 4 + .../loadout_items/loadout_datum_heads.dm | 33 +-- .../loadout_items/loadout_datum_neck.dm | 6 +- .../loadout_items/loadout_datum_shoes.dm | 10 +- .../loadout_items/loadout_datum_suit.dm | 28 +- .../loadout_items/loadout_datum_toys.dm | 2 - .../under/loadout_datum_under.dm | 30 -- modular_skyrat/modules/oversized/code/door.dm | 1 - .../modules/oversized/code/oversized_quirk.dm | 51 +++- .../modules/radiosound/code/headset.dm | 7 +- tgstation.dme | 5 + tgui/packages/tgui/interfaces/PaiSubmit.tsx | 4 +- .../character_preferences/skyrat/headshot.tsx | 4 +- 52 files changed, 495 insertions(+), 384 deletions(-) delete mode 100644 _maps/skyrat/automapper/templates/northstar/northstar_prison.dmm create mode 100644 modular_skyrat/master_files/code/_globalvars/regexes.dm create mode 100644 modular_skyrat/master_files/code/_globalvars/text.dm create mode 100644 modular_skyrat/master_files/code/datums/votes/map_vote.dm create mode 100644 modular_skyrat/modules/customization/modules/language/mothic.dm create mode 100644 modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_moods.dm diff --git a/_maps/map_files/generic/CentCom_skyrat_z2.dmm b/_maps/map_files/generic/CentCom_skyrat_z2.dmm index ad1baba7504..620b51c80b4 100644 --- a/_maps/map_files/generic/CentCom_skyrat_z2.dmm +++ b/_maps/map_files/generic/CentCom_skyrat_z2.dmm @@ -310,12 +310,7 @@ /turf/open/indestructible/hotelwood, /area/centcom/holding/cafe) "ahk" = ( -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "ahs" = ( /obj/structure/flora/bush/leavy/style_2, @@ -363,7 +358,7 @@ /obj/machinery/door/airlock{ id_tag = "CCD2" }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "ahQ" = ( /obj/structure/flora/bush/sparsegrass, @@ -475,12 +470,7 @@ color = "#B22222"; name = "Curtain" }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "ajK" = ( /obj/structure/flora/rock/pile{ @@ -592,12 +582,7 @@ "alk" = ( /obj/item/bedsheet/dorms_double, /obj/structure/bed/double, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "alm" = ( /obj/effect/turf_decal/tile/blue{ @@ -775,9 +760,6 @@ }, /turf/open/floor/iron/freezer, /area/centcom/holding/cafe) -"amF" = ( -/turf/open/floor/carpet/royalblack, -/area/centcom/holding/cafe) "amG" = ( /obj/structure/chair/sofa/corp/left, /turf/open/floor/carpet/purple, @@ -1115,7 +1097,7 @@ }, /obj/structure/bed/double/pod, /obj/item/bedsheet/dorms_double, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aqy" = ( /obj/machinery/vending/wardrobe/cargo_wardrobe/ghost_cafe, @@ -1221,12 +1203,7 @@ "asz" = ( /obj/structure/table/wood/fancy/blue, /obj/machinery/light/directional/north, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "asC" = ( /obj/effect/turf_decal/tile/blue{ @@ -1645,11 +1622,7 @@ light_range = 10; nightshift_light_power = 10 }, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "axF" = ( /obj/structure/bed/dogbed, @@ -2064,12 +2037,7 @@ /obj/structure/mirror{ pixel_y = 32 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aAY" = ( /obj/effect/turf_decal/tile/blue{ @@ -2150,7 +2118,7 @@ /obj/structure/chair/sofa/corp/right{ dir = 4 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aBH" = ( /obj/effect/turf_decal/tile/neutral{ @@ -2173,7 +2141,7 @@ /area/centcom/holding/cafe) "aBT" = ( /obj/structure/table/wood, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aBW" = ( /obj/machinery/hydroponics/constructable, @@ -3260,11 +3228,7 @@ light_range = 10; nightshift_light_power = 10 }, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafedorms) "aOZ" = ( /obj/machinery/light/directional/north, @@ -3286,12 +3250,7 @@ /turf/open/indestructible/hotelwood, /area/centcom/holding/cafe) "aPx" = ( -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aPC" = ( /obj/structure/railing{ @@ -3434,12 +3393,7 @@ /obj/structure/fireplace{ dir = 4 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aQR" = ( /obj/effect/turf_decal/stripes/line{ @@ -3540,11 +3494,7 @@ /obj/structure/toilet{ pixel_y = 14 }, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "aRC" = ( /obj/machinery/light/directional/north, @@ -3824,7 +3774,7 @@ /obj/structure/chair/sofa/corp/left{ dir = 4 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "aUw" = ( /obj/structure/stone_tile/surrounding_tile{ @@ -3926,11 +3876,7 @@ /area/centcom/holding/cafepark) "aVC" = ( /obj/machinery/shower/directional/west, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafedorms) "aVI" = ( /obj/structure/fake_stairs/directional/east, @@ -4820,7 +4766,7 @@ /obj/structure/chair/sofa/corp{ dir = 4 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "bQZ" = ( /obj/structure/reagent_dispensers/plumbed, @@ -4858,12 +4804,7 @@ /obj/structure/fireplace{ dir = 8 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "bTR" = ( /obj/structure/table/reinforced, @@ -4979,7 +4920,7 @@ /area/centcom/interlink) "bZt" = ( /obj/structure/chair/sofa/corp/corner, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "cal" = ( /obj/structure/railing{ @@ -5094,7 +5035,7 @@ /obj/structure/chair/sofa/corp/left{ dir = 8 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "cmh" = ( /obj/effect/turf_decal/siding{ @@ -5351,7 +5292,7 @@ /obj/structure/sign/painting/library_secure{ pixel_x = 32 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "cHY" = ( /obj/effect/turf_decal/weather/dirt{ @@ -5584,11 +5525,7 @@ /obj/structure/toilet{ pixel_y = 14 }, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "dbZ" = ( /obj/effect/turf_decal/weather/dirt{ @@ -5782,7 +5719,7 @@ /obj/structure/chair/sofa/corp/corner{ dir = 4 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "dzn" = ( /obj/structure/fence{ @@ -5827,7 +5764,7 @@ /area/centcom/interlink) "dDF" = ( /obj/structure/chair/sofa/corp, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "dFj" = ( /obj/machinery/door/airlock/medical/glass{ @@ -6067,7 +6004,7 @@ id_tag = "CCD1" }, /obj/structure/fans/tiny/invisible, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "dXe" = ( /obj/structure/flora/grass/jungle/b/style_2, @@ -7009,7 +6946,7 @@ /area/centcom/interlink) "fPs" = ( /obj/item/kirbyplants/random, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "fQt" = ( /mob/living/basic/crab{ @@ -7647,12 +7584,7 @@ /obj/structure/dresser{ pixel_y = 7 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "hbE" = ( /obj/structure/fence/interlink{ @@ -8456,7 +8388,7 @@ /area/centcom/interlink) "ioZ" = ( /obj/machinery/light/directional/east, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "ipc" = ( /obj/structure/sign/poster/random/directional/east, @@ -8598,11 +8530,7 @@ dir = 1 }, /obj/effect/turf_decal/siding/thinplating_new/end, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "iCz" = ( /obj/structure/fans/tiny/invisible, @@ -9346,7 +9274,7 @@ "jYf" = ( /obj/structure/table/wood, /obj/item/paper_bin, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "jYy" = ( /obj/effect/turf_decal/sand, @@ -11267,12 +11195,7 @@ /obj/structure/chair/sofa/corp/left{ dir = 8 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "nii" = ( /obj/structure/fireplace, @@ -11429,12 +11352,7 @@ /obj/structure/chair/sofa/corp/right{ dir = 8 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "npe" = ( /obj/effect/turf_decal/tile/dark_blue/opposingcorners, @@ -12391,7 +12309,7 @@ dir = 4 }, /obj/machinery/light/directional/west, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "pao" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -12412,7 +12330,7 @@ specialfunctions = 4 }, /obj/item/kirbyplants/random, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "pbz" = ( /obj/effect/turf_decal/tile/blue{ @@ -13017,12 +12935,7 @@ /obj/structure/chair/sofa/corp/right{ dir = 4 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "pTO" = ( /obj/structure/table/reinforced, @@ -13192,12 +13105,7 @@ /area/centcom/interlink) "qfy" = ( /obj/structure/table/wood/fancy/blue, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "qgh" = ( /obj/structure/stone_tile/surrounding, @@ -13509,8 +13417,8 @@ /turf/open/floor/iron/white, /area/centcom/interlink) "qGA" = ( -/obj/structure/closet/secure_closet/brig, /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/iron/dark, /area/centcom/holding/cafe) "qGW" = ( @@ -13522,12 +13430,7 @@ /obj/item/stack/sheet/mineral/wood/fifty, /obj/item/stack/sheet/mineral/wood/fifty, /obj/item/lighter, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "qHJ" = ( /obj/structure/extinguisher_cabinet/directional/north, @@ -13629,7 +13532,7 @@ /obj/structure/chair/sofa/corp{ dir = 8 }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "qQl" = ( /obj/machinery/light/directional/south, @@ -13711,11 +13614,7 @@ /area/centcom/holding/cafepark) "qWc" = ( /obj/machinery/shower/directional/west, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "qWv" = ( /obj/effect/turf_decal/tile/blue{ @@ -14589,12 +14488,7 @@ }, /obj/structure/bed/double, /obj/item/bedsheet/dorms_double, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "ssn" = ( /obj/machinery/status_display/shuttle{ @@ -14665,11 +14559,7 @@ "sys" = ( /obj/machinery/shower/directional/west, /obj/structure/sink/directional/south, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "sAC" = ( /obj/effect/turf_decal/box, @@ -15164,11 +15054,7 @@ /turf/open/floor/fakebasalt, /area/centcom/holding/cafepark) "tky" = ( -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafe) "tlu" = ( /obj/effect/turf_decal/siding/wood{ @@ -16262,11 +16148,7 @@ /obj/structure/mirror{ pixel_y = 32 }, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafedorms) "vui" = ( /obj/effect/turf_decal/siding/wood{ @@ -16589,12 +16471,7 @@ /obj/structure/chair/sofa/corp/left{ dir = 4 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafepark) "vZv" = ( /obj/structure/window/reinforced/spawner/directional/south, @@ -16896,11 +16773,7 @@ /area/centcom/holding/cafepark) "wBX" = ( /obj/structure/sink/directional/south, -/turf/open/indestructible/hoteltile{ - icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; - icon_state = "titanium_blue_old"; - name = "bathroom floor" - }, +/turf/open/indestructible/bathroom, /area/centcom/holding/cafedorms) "wCl" = ( /obj/item/kirbyplants/random, @@ -17241,7 +17114,7 @@ light_power = 10; name = "Super Light" }, -/turf/open/floor/carpet/royalblack, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "xgz" = ( /obj/effect/turf_decal/siding/wood{ @@ -17634,12 +17507,7 @@ /obj/structure/sign/painting/library_secure{ pixel_y = -32 }, -/turf/open/indestructible/hotelwood{ - desc = "It's really cozy! Great for soft paws!"; - icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; - icon_state = "carpet"; - name = "soft carpet" - }, +/turf/open/indestructible/carpet, /area/centcom/holding/cafe) "xRx" = ( /obj/item/stack/sheet/mineral/wood/fifty, @@ -56583,9 +56451,9 @@ aFP ayI ayI dWE -amF -amF -amF +aPx +aPx +aPx axD tky aqf @@ -56841,7 +56709,7 @@ ayI ayI aqf paJ -amF +aPx cGX aqf qWc @@ -63522,7 +63390,7 @@ dyU bQR paj fPs -amF +aPx aqf aFP ayI @@ -63778,8 +63646,8 @@ aPZ dDF jYf xga -amF -amF +aPx +aPx aqf aFP ayI @@ -64035,8 +63903,8 @@ aqf bZt qPy clF -amF -amF +aPx +aPx ahP aFP ayI @@ -64291,9 +64159,9 @@ jeI aqf aqf aqf -amF -amF -amF +aPx +aPx +aPx aqf kWr ayI @@ -64548,9 +64416,9 @@ jeI aqf dbn axD -amF -amF -amF +aPx +aPx +aPx aqf lwv lwv @@ -64805,7 +64673,7 @@ jeI aqf sys aqf -amF +aPx ioZ aqw aqf diff --git a/_maps/skyrat/automapper/automapper_config.toml b/_maps/skyrat/automapper/automapper_config.toml index 021bfe8c3c6..93d018bd5da 100644 --- a/_maps/skyrat/automapper/automapper_config.toml +++ b/_maps/skyrat/automapper/automapper_config.toml @@ -352,14 +352,6 @@ required_map = "north_star.dmm" coordinates = [121, 109, 4] trait_name = "Station" -# Northstar Prison -[templates.northstar_prison] -map_files = ["northstar_prison.dmm"] -directory = "_maps/skyrat/automapper/templates/northstar/" -required_map = "north_star.dmm" -coordinates = [149, 109, 4] -trait_name = "Station" - # Northstar NTR Office [templates.northstar_ntrep_office] map_files = ["northstar_ntrep_office.dmm"] diff --git a/_maps/skyrat/automapper/templates/northstar/northstar_prison.dmm b/_maps/skyrat/automapper/templates/northstar/northstar_prison.dmm deleted file mode 100644 index 403bebf29b0..00000000000 --- a/_maps/skyrat/automapper/templates/northstar/northstar_prison.dmm +++ /dev/null @@ -1,23 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/obj/machinery/cryopod/prison/directional/west{ - quiet = 1 - }, -/turf/template_noop, -/area/template_noop) -"r" = ( -/obj/machinery/cryopod/prison/directional/north, -/turf/template_noop, -/area/template_noop) -"P" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -r -P -P -P -P -a -"} diff --git a/code/__DEFINES/~skyrat_defines/combat.dm b/code/__DEFINES/~skyrat_defines/combat.dm index 931b841f907..f4df7eead15 100644 --- a/code/__DEFINES/~skyrat_defines/combat.dm +++ b/code/__DEFINES/~skyrat_defines/combat.dm @@ -26,6 +26,7 @@ // Damage modifiers #define OVERSIZED_HARM_DAMAGE_BONUS 5 /// Those with the oversized trait do 5 more damage. +#define OVERSIZED_KICK_EFFECTIVENESS_BONUS 5 /// Increased unarmed_effectiveness/stun threshold on oversized kicks. #define FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, color="#04080F") diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index d4c785cc212..e9cfe0e4652 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -32,6 +32,9 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/spacer_born, /datum/quirk/oversized), list(/datum/quirk/feline_aspect, /datum/quirk/item_quirk/canine, /datum/quirk/item_quirk/avian), list(/datum/quirk/all_nighter, /datum/quirk/heavy_sleeper), + list(/datum/quirk/light_drinker, /datum/quirk/drunkhealing), + list(/datum/quirk/oversized, /datum/quirk/freerunning), + list(/datum/quirk/oversized, /datum/quirk/item_quirk/settler), //SKYRAT EDIT ADDITION END )) diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index d01ffbc00dc..8b2bfa40731 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -205,3 +205,12 @@ /obj/item/stack/cable_coil = 2, ) category = CAT_EQUIPMENT + +/datum/crafting_recipe/bonedice + name = "Bone Die" + result = /obj/item/dice/d6/bone + time = 5 SECONDS + reqs = list( + /obj/item/stack/sheet/bone = 1, + ) + category = CAT_EQUIPMENT diff --git a/code/datums/quirks/negative_quirks/claustrophobia.dm b/code/datums/quirks/negative_quirks/claustrophobia.dm index 226c9b65ef8..bafdcd656ff 100644 --- a/code/datums/quirks/negative_quirks/claustrophobia.dm +++ b/code/datums/quirks/negative_quirks/claustrophobia.dm @@ -1,6 +1,6 @@ /datum/quirk/claustrophobia name = "Claustrophobia" - desc = "You are terrified of small spaces and certain jolly figures. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe." + desc = "You are terrified of small spaces. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe." // SKYRAT EDIT CHANGE - ORIGINAL: desc = "You are terrified of small spaces and certain jolly figures. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe." icon = FA_ICON_BOX_OPEN value = -4 medical_record_text = "Patient demonstrates a fear of tight spaces." @@ -20,10 +20,12 @@ var/nick_spotted = FALSE +/* SKYRAT EDIT REMOVAL START for(var/mob/living/carbon/human/possible_claus in view(5, quirk_holder)) if(evaluate_jolly_levels(possible_claus)) nick_spotted = TRUE break +SKYRAT EDIT REMOVAL END */ if(!nick_spotted && isturf(quirk_holder.loc)) quirk_holder.clear_mood_event("claustrophobia") diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 4e63fc00c43..8fe83e2e380 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -107,6 +107,12 @@ icon_state = "de6" microwave_riggable = FALSE // You can't melt wood in the microwave +/obj/item/dice/d6/bone + name = "bone die" + desc = "A die carved from a creature's bone. Dried blood marks the indented pits." + icon_state = "db6" + microwave_riggable = FALSE // You can't melt bone in the microwave + /obj/item/dice/d6/space name = "space cube" desc = "A die with six sides. 6 TIMES 255 TIMES 255 TILE TOTAL EXISTENCE, SQUARE YOUR MIND OF EDUCATED STUPID: 2 DOES NOT EXIST." diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 309d23aac9f..947f56be97f 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -769,7 +769,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ // Sinew slapcrafting will mostly-sinew recipes, and bones will have mostly-bones recipes. var/static/list/slapcraft_recipe_list = list(\ /datum/crafting_recipe/bonedagger, /datum/crafting_recipe/bonespear, /datum/crafting_recipe/boneaxe,\ - /datum/crafting_recipe/bonearmor, /datum/crafting_recipe/skullhelm, /datum/crafting_recipe/bracers + /datum/crafting_recipe/bonearmor, /datum/crafting_recipe/skullhelm, /datum/crafting_recipe/bracers, + /datum/crafting_recipe/ash_recipe/bone_greaves, ) AddComponent( diff --git a/code/modules/client/preferences/language.dm b/code/modules/client/preferences/language.dm index f602d6b3a66..8d4c7917630 100644 --- a/code/modules/client/preferences/language.dm +++ b/code/modules/client/preferences/language.dm @@ -20,6 +20,7 @@ //we add uncommon as it's foreigner-only. var/datum/language/uncommon/uncommon_language = /datum/language/uncommon values += initial(uncommon_language.name) + values += /datum/language/common::name // SKYRAT EDIT ADDITION START - Let's you select common for(var/datum/language/language_type as anything in GLOB.uncommon_roundstart_languages) if(initial(language_type.name) in values) diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm index e686c920b58..e9c5199cf3f 100644 --- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm @@ -339,7 +339,11 @@ Doesn't work on other aliens/AI.*/ span_notice("[owner] vomits up a thick purple substance and begins to shape it."), span_notice("You shape a [choice] out of resin."), ) - + //SKYRAT EDIT START - Roundstart xenohybrid organs + if(build_duration && !do_after(owner, build_duration)) + owner.balloon_alert(owner, "interrupted!") + return + //SKYRAT EDIT END new choice_path(owner.loc) return TRUE diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a012537dfd7..879a257863c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -392,14 +392,6 @@ //Don't go further if the shock was blocked/too weak. if(!.) return - //SKYRAT EDIT BEGIN: MAKES POWERFUL SHOCKS HAVE A CHANCE TO STOP YOUR HEART. DANGER - if(can_heartattack() && !(flags & SHOCK_ILLUSION) && shock_damage >= 70) - if(shock_damage * siemens_coeff >= 1 && prob(30))//Higher chance to disrupt the pacemaker cells - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) - heart.Stop() - visible_message("[src.name] briefly twitches; before falling limp - their breathing irratic and chest spasming violently!", \ - "You feel your heart thump eratically; before ceasing to beat, a violent twitch overcoming your form!", ignored_mobs=src) - //SKYRAT EDIT END if(!(flags & SHOCK_ILLUSION)) if(shock_damage * siemens_coeff >= 5) force_say() diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index b252e94c214..660e818251a 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -222,6 +222,10 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( //Get which verb is prefixed to the message before radio but after most modifications message_mods[SAY_MOD_VERB] = say_mod(message, message_mods) + // SKYRAT EDIT ADDITION START: autopunctuation + //ensure EOL punctuation exists and that word-bounded 'i' are capitalized before we do anything else + message = autopunct_bare(message) + // SKYRAT EDIT ADDITION END //This is before anything that sends say a radio message, and after all important message type modifications, so you can scumb in alien chat or something if(saymode && !saymode.handle_message(src, message, language)) return diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index f9c445e3fa7..ff2da672213 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -553,7 +553,6 @@ color_override = "orange", ) INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts)) - bolt_all_doors() //SKYRAT EDIT ADDITION SSmapping.mapvote() //If no map vote has been run yet, start one. if(!is_reserved_level(z)) diff --git a/code/modules/unit_tests/say.dm b/code/modules/unit_tests/say.dm index ec58dcedc88..6fde4de9dbc 100644 --- a/code/modules/unit_tests/say.dm +++ b/code/modules/unit_tests/say.dm @@ -160,7 +160,7 @@ speaker.forceMove(run_loc_floor_bottom_left) listener.forceMove(locate((run_loc_floor_bottom_left.x + distance), run_loc_floor_bottom_left.y, run_loc_floor_bottom_left.z)) - var/pangram_quote = "The quick brown fox jumps over the lazy dog" + var/pangram_quote = "The quick brown fox jumps over the lazy dog." // SKYRAT EDIT CHANGE - account for autopunct in living_say.dm - ORIGINAL: var/pangram_quote = "The quick brown fox jumps over the lazy dog" // speaking speaker.say(pangram_quote) @@ -201,7 +201,7 @@ listener_radio.set_frequency(FREQ_CENTCOM) listener_radio.independent = TRUE - var/pangram_quote = "The quick brown fox jumps over the lazy dog" + var/pangram_quote = "The quick brown fox jumps over the lazy dog." // SKYRAT EDIT CHANGE - account for autopunct in living_say.dm - ORIGINAL: var/pangram_quote = "The quick brown fox jumps over the lazy dog" speaker.say(pangram_quote) TEST_ASSERT(handle_speech_result, "Handle speech signal was not fired (radio test)") diff --git a/icons/obj/toys/dice.dmi b/icons/obj/toys/dice.dmi index 26cf08af5b9381c031cd17941b55653144507812..d41e503242d464571da998cdcc8a6c3e2bf9479f 100644 GIT binary patch literal 9998 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 literal 9228 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 diff --git a/modular_skyrat/master_files/code/_globalvars/regexes.dm b/modular_skyrat/master_files/code/_globalvars/regexes.dm new file mode 100644 index 00000000000..5d8db27c6b7 --- /dev/null +++ b/modular_skyrat/master_files/code/_globalvars/regexes.dm @@ -0,0 +1,5 @@ +//Any EOL char that isn't appropriate punctuation +GLOBAL_DATUM_INIT(has_no_eol_punctuation, /regex, regex(@"\w$")) + +//All non-capitalized 'i' surrounded with whitespace (aka, 'hello >i< am a cat') +GLOBAL_DATUM_INIT(noncapital_i, /regex, regex(@"\b[i]\b", "g")) diff --git a/modular_skyrat/master_files/code/_globalvars/text.dm b/modular_skyrat/master_files/code/_globalvars/text.dm new file mode 100644 index 00000000000..a7c8efec5f4 --- /dev/null +++ b/modular_skyrat/master_files/code/_globalvars/text.dm @@ -0,0 +1,8 @@ +/// Ensures sentences end in appropriate punctuation (a period if none exist) +/// and that all whitespace-bounded 'i' characters are capitalized. +/proc/autopunct_bare(input_text) + if (findtext(input_text, GLOB.has_no_eol_punctuation)) + input_text += "." + + input_text = replacetext(input_text, GLOB.noncapital_i, "I") + return input_text diff --git a/modular_skyrat/master_files/code/datums/votes/map_vote.dm b/modular_skyrat/master_files/code/datums/votes/map_vote.dm new file mode 100644 index 00000000000..10dea54b2fd --- /dev/null +++ b/modular_skyrat/master_files/code/datums/votes/map_vote.dm @@ -0,0 +1,3 @@ +//Map votes shouldn't be using weighted random +/datum/vote/map_vote + winner_method = VOTE_WINNER_METHOD_SIMPLE diff --git a/modular_skyrat/master_files/icons/misc/language.dmi b/modular_skyrat/master_files/icons/misc/language.dmi index 94a32635b48abb0cd3ef14d47fbad15fd62b206a..1e287eca0202266a99350613f7ddaefc048bc752 100644 GIT binary patch literal 4484 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 diff --git a/modular_skyrat/modules/ashwalkers/code/clothing/ash_armour.dm b/modular_skyrat/modules/ashwalkers/code/clothing/ash_armour.dm index 84b7b9b9170..0d2b66232c6 100644 --- a/modular_skyrat/modules/ashwalkers/code/clothing/ash_armour.dm +++ b/modular_skyrat/modules/ashwalkers/code/clothing/ash_armour.dm @@ -15,6 +15,22 @@ bomb = 20 bio = 10 +/datum/armor/ash_plates + melee = 15 + bullet = 25 + laser = 15 + energy = 15 + bomb = 20 + bio = 10 + +/datum/armor/bone_greaves + melee = 15 + bullet = 25 + laser = 15 + energy = 15 + bomb = 20 + bio = 50 + /obj/item/clothing/head/ash_headdress name = "ash headdress" desc = "A headdress that shows the dominance of the walkers of ash." @@ -102,3 +118,22 @@ name = "Decorated Ash Combat Plates" result = /obj/item/clothing/under/costume/gladiator/ash_walker/ash_plates/decorated category = CAT_CLOTHING + +/obj/item/clothing/shoes/bone_greaves + name = "bone greaves" + desc = "For when you're expecting to step on spiky things. Offers modest protection to your feet." + icon = 'modular_skyrat/modules/ashwalkers/icons/shoes.dmi' + worn_icon = 'modular_skyrat/modules/ashwalkers/icons/feet.dmi' + worn_icon_digi = 'modular_skyrat/modules/ashwalkers/icons/feet_digi.dmi' + icon_state = "bone_greaves" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION + armor_type = /datum/armor/bone_greaves + +/datum/crafting_recipe/ash_recipe/bone_greaves + name = "Bone Greaves" + result = /obj/item/clothing/shoes/bone_greaves + reqs = list( + /obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1, + ) + category = CAT_CLOTHING diff --git a/modular_skyrat/modules/ashwalkers/icons/feet.dmi b/modular_skyrat/modules/ashwalkers/icons/feet.dmi index b4ba22e6b5532f699fd3fddf2febc91333467b40..d743be0a0fc16bed06c90e5cb289b9333ed6eab2 100644 GIT binary patch delta 1269 zcmVc0<7k{7#0{{R3yb+fl00021P)t-s0000zC@5b*HJONgh$Jm?UQ1aT zDs^{tOixTaKs||XUW0*w4Gj%+Wlj+h5gi>JHa0dSBqSUh9Djd*Y;0^tD-J0Z0XjH1 zT2eZlk!Fp6WlBRgK{q2SCKpCRGg4AgBqJkCOiXZXZC+3}Tz_0#IXO8W8x(YBT9J8Z zxwEL7jeB=tA+n4#93e(3Fkd4nRyaOvUriaFo}RtEy-YhjXHr#NNlbNMV|8_PXe>kc z00001bW%=J06^y0W&i*Ho_bVRbVOxyV{&P5bZKvH004NLjgY$v!!Qg*XZtHmvX{Qr zE+rvkXnvt6wSW8o#{pSMf4@#UbgR3Fd*DcjTdQl^^@D0|ya zas~A)!GAid>-R6SI{6dTtOe`vrdqRTI*d!=@L|M&Ra8QD_vV{ay z`NMB+_nppLxH{wxat<4o)uaTQmer72d>M^at8I}%tKDjSONY0bhO*51)n)(y00000 z0002+|55w2=5j5nX2QqO>2!Ol*X?vTz1Q!net*Bm>B_n@!<##cJ%Yq4KO7^fRo#PO zaQ`q+gNOUUiMkpNZCly)aLAr-k48lajz;#MGT8W;AUpkP>fs$b09EQn&-j{*=s3=! zqv&xQMt?N=BcnIQPfasGY(9-ShfS;fJZ`;k{$5(+=eETdq?0ETGBBBFA9?yD(>;Ek`Iq2Ef zyHxOQMq~`G>mG21ROJ@6IMd*CR_xH7O$CFqx!i#t&g~1F{Mni5?z-k|E`{CSRKus_ z&I>Z!4d>Vl-?JHBe)AckPJ#0EGa-fU;Pa{Y9aY6m@Sz*#(%0_ zmLPwNLJDvt^j}egq2zBin@@!SD0xuQ9rn!~<=;Ss-a=4yhlM8^EF90RloWu!^3B6< z_x%EczAqgB0000000000fbUBb#feJdC^}Ks6}m(~@8-7`kt8V@NE7aeH5Dk5*FuL) zBpZx2Z2JQYrW-Q2Nx2S55^vNd7H&>RL^W%1y1_Uy2BVnmo{~X6VMSsj_!{tZ+btp(MzSVw0W+$t%6cpICC-yX+B f2IE+a_&0t4wuf(mYOQ*C00000NkvXXu0mjfjVm$G delta 1076 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 (BLOOD_VOLUME_MAXIMUM - HEMOPHAGE_DRAIN_AMOUNT)) + to_chat(hemophage, span_boldnotice("Your thirst is temporarily slaked, and you can digest no more new blood for the moment.")) + if(victim.blood_volume <= BLOOD_VOLUME_OKAY) to_chat(hemophage, span_warning("That definitely left them looking pale...")) + to_chat(victim, span_warning("A groaning lethargy creeps into your muscles as you begin to feel slightly clammy...")) //let the victim know too if(is_target_human_with_client) hemophage.apply_status_effect(/datum/status_effect/blood_thirst_satiated) + hemophage.add_mood_event("drank_human_blood", /datum/mood_event/hemophage_feed_human) // absolutely scrumptious + hemophage.clear_mood_event("gross_food") // it's a real palate cleanser, you know + hemophage.disgust *= 0.85 //also clears a little bit of disgust too - if(!victim.blood_volume || victim.blood_volume < BLOOD_VOLUME_SURVIVE) - to_chat(hemophage, span_warning("You finish off [victim]'s blood supply.")) + // for this to ever occur, the hemophage actually has to be decently hungry, otherwise they'll cap their own blood reserves and be unable to pull it off. + if(!victim.blood_volume || victim.blood_volume <= BLOOD_VOLUME_SURVIVE) + to_chat(hemophage, span_boldwarning("A final sputter of blood trickles from [victim]'s collapsing veins as your terrible hunger drains them almost completely dry.")) + else if ((victim.blood_volume + HEMOPHAGE_DRAIN_AMOUNT) <= BLOOD_VOLUME_SURVIVE) + to_chat(hemophage, span_warning("A sense of hesitation gnaws: you know for certain that taking much more blood from [victim] WILL kill them. ...but another part of you sees only opportunity.")) #undef HEMOPHAGE_DRAIN_AMOUNT diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_moods.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_moods.dm new file mode 100644 index 00000000000..51e637b348f --- /dev/null +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_moods.dm @@ -0,0 +1,19 @@ +/datum/mood_event/hemophage_feed_human + description = "I slaked my hunger on fresh, vital blood. That felt good!" + mood_change = 2 + timeout = 5 MINUTES + +/datum/mood_event/disgust/hemophage_feed_monkey + description = "I had to feed off a gibbering monkey... what have I become?" + mood_change = -4 + timeout = 5 MINUTES + +/datum/mood_event/disgust/hemophage_feed_humonkey + description = "Somehow I know deep down that humonkey blood is no substitute for the real thing..." + mood_change = -1 + timeout = 5 MINUTES + +/datum/mood_event/disgust/hemophage_feed_synthesized_blood + description = "My last blood meal was artificial and tasted... wrong." + mood_change = -2 + timeout = 5 MINUTES diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm index 7a0e972f3d8..7a9cc37b6a0 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm @@ -85,6 +85,10 @@ var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood) if(blood) blood.metabolization_rate = BLOOD_METABOLIZATION_RATE + var/blood_DNA = blood.data["blood_DNA"] + if (!blood_DNA) //does the blood we're digesting have any DNA? if it doesn't, it's artificial, and that's gross. + src.owner.adjust_disgust(DISGUST_LEVEL_GROSS / 16, DISGUST_LEVEL_VERYGROSS) + src.owner.add_mood_event("gross_food", /datum/mood_event/disgust/hemophage_feed_synthesized_blood) return ..() diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/xeno.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/xeno.dm index 4b2052bd083..8d783f08ccb 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/xeno.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/xeno.dm @@ -2,7 +2,7 @@ // A cloning mistake, crossing human and xenomorph DNA name = "Xenomorph Hybrid" id = SPECIES_XENO - family_heirlooms = list(/obj/item/toy/plush/rouny, /obj/item/toy/toy_xeno) + family_heirlooms = list(/obj/item/toy/plush/rouny, /obj/item/clothing/mask/facehugger/toy) inherent_traits = list( TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, @@ -10,7 +10,17 @@ TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID + mutantbrain = /obj/item/organ/internal/brain/xeno_hybrid mutanttongue = /obj/item/organ/internal/tongue/xeno_hybrid + mutantliver = /obj/item/organ/internal/liver/xeno_hybrid + mutantstomach = /obj/item/organ/internal/stomach/xeno_hybrid + mutant_organs = list( + /obj/item/organ/internal/alien/plasmavessel/roundstart, + /obj/item/organ/internal/alien/resinspinner/roundstart, + /obj/item/organ/internal/alien/hivenode, + ) + exotic_blood = /datum/reagent/toxin/acid + heatmod = 2.5 mutant_bodyparts = list() external_organs = list() payday_modifier = 1.0 @@ -42,6 +52,25 @@ /datum/species/xeno/get_species_lore() return list(placeholder_lore) +/datum/species/xeno/create_pref_unique_perks() + var/list/to_add = list() + + to_add += list(list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = "biohazard", + SPECIES_PERK_NAME = "Xenomorphic Biology", + SPECIES_PERK_DESC = "Xeno-hybrids inherit organs from their primal ascendants." + )) + + to_add += list(list( + SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, + SPECIES_PERK_ICON = "fire", + SPECIES_PERK_NAME = "High Temperature Weakness", + SPECIES_PERK_DESC = "A partial silicone structure and acid blood make the xeno-hybrid species extremely weak to heat." + )) + + return to_add + /datum/species/xeno/prepare_human_for_preview(mob/living/carbon/human/xeno) var/xeno_color = "#525288" xeno.dna.features["mcolor"] = xeno_color @@ -52,3 +81,60 @@ xeno.dna.mutant_bodyparts["xenohead"] = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list(xeno_color, xeno_color, xeno_color)) regenerate_organs(xeno, src, visual_only = TRUE) xeno.update_body(TRUE) + +///Xenomorph organs modified to suit roundstart styling +#define BUILD_DURATION 0.5 SECONDS + +//Plasma vessel +/obj/item/organ/internal/alien/plasmavessel/roundstart + stored_plasma = 55 + max_plasma = 55 + plasma_rate = 2 + heal_rate = 0 + actions_types = list( + /datum/action/cooldown/alien/make_structure/plant_weeds/roundstart, + /datum/action/cooldown/alien/transfer, + ) + +/datum/action/cooldown/alien/make_structure/plant_weeds + var/build_duration = 0 SECONDS //regular aliens can build instantly + +/datum/action/cooldown/alien/make_structure/plant_weeds/roundstart + build_duration = BUILD_DURATION //hybrids are a bit slower + +/datum/action/cooldown/alien/make_structure/plant_weeds/Activate(atom/target) + if(build_duration && !do_after(owner, build_duration)) + owner.balloon_alert(owner, "interrupted!") + return + return ..() + +//Resin spinner +/obj/item/organ/internal/alien/resinspinner/roundstart + actions_types = list(/datum/action/cooldown/alien/make_structure/resin/roundstart) + +/datum/action/cooldown/alien/make_structure/resin + var/build_duration = 0 SECONDS + +/datum/action/cooldown/alien/make_structure/resin/roundstart + build_duration = BUILD_DURATION + //Non-modularly checked in `code\modules\mob\living\carbon\alien\adult\alien_powers.dm` + +//Organ resprites +/obj/item/organ/internal/brain/xeno_hybrid + icon_state = "brain-x" //rebranding + +/obj/item/organ/internal/stomach/xeno_hybrid + icon_state = "stomach-x" + +/obj/item/organ/internal/liver/xeno_hybrid + icon_state = "liver-x" + +//Liver modification (xenohybrids can process plasma!) +/obj/item/organ/internal/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired) + . = ..() + if(. & COMSIG_MOB_STOP_REAGENT_CHECK) + return + if(chem.type == /datum/reagent/toxin/plasma) + chem.toxpwr = 0 + +#undef BUILD_DURATION diff --git a/modular_skyrat/modules/ghostcafe/code/ghostcafeturf.dm b/modular_skyrat/modules/ghostcafe/code/ghostcafeturf.dm index b879a8ec37b..a33f7c16859 100644 --- a/modular_skyrat/modules/ghostcafe/code/ghostcafeturf.dm +++ b/modular_skyrat/modules/ghostcafe/code/ghostcafeturf.dm @@ -13,3 +13,22 @@ name = "nitrogen-filled plating" desc = "Vox box certified." initial_gas_mix = "n2=104;TEMP=293.15" + +/turf/open/indestructible/bathroom + icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi'; + icon_state = "titanium_blue_old"; + name = "bathroom floor" + footstep = FOOTSTEP_FLOOR + tiled_dirt = FALSE + +/turf/open/indestructible/carpet + desc = "It's really cozy! Great for soft paws!"; + icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi'; + icon_state = "carpet"; + name = "soft carpet" + bullet_bounce_sound = null + footstep = FOOTSTEP_CARPET + barefootstep = FOOTSTEP_CARPET_BAREFOOT + clawfootstep = FOOTSTEP_CARPET_BAREFOOT + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + tiled_dirt = FALSE diff --git a/modular_skyrat/modules/goofsec/code/sec_clothing_overrides.dm b/modular_skyrat/modules/goofsec/code/sec_clothing_overrides.dm index b871ebe7ce3..9f9ec18cdda 100644 --- a/modular_skyrat/modules/goofsec/code/sec_clothing_overrides.dm +++ b/modular_skyrat/modules/goofsec/code/sec_clothing_overrides.dm @@ -38,6 +38,10 @@ worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/accessories.dmi' icon_state = "armband_lopland" +/obj/item/clothing/accessory/armband/deputy/lopland/nonsec + name = "blue armband" + desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is blue." + /obj/item/clothing/accessory/armband/deputy/lopland desc = "A Peacekeeper-blue armband, showing the wearer to be certified by Lopland as a top-of-their-class Security Officer." diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm index 9140fc6ee7e..addd37faf58 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm @@ -51,39 +51,38 @@ GLOBAL_LIST_INIT(loadout_accessory, generate_loadout_items(/datum/loadout_item/a */ /datum/loadout_item/accessory/armband_medblue - name = "Medical Armband (blue stripe)" - item_path = /obj/item/clothing/accessory/armband/medblue - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY, JOB_CORONER) + name = "Blue-White Armband" + item_path = /obj/item/clothing/accessory/armband/medblue/nonsec /datum/loadout_item/accessory/armband_med - name = "Medical Armband (white)" - item_path = /obj/item/clothing/accessory/armband/med - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY, JOB_CORONER) + name = "White Armband" + item_path = /obj/item/clothing/accessory/armband/med/nonsec /datum/loadout_item/accessory/armband_cargo - name = "Cargo Armband" - item_path = /obj/item/clothing/accessory/armband/cargo - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT) + name = "Brown Armband" + item_path = /obj/item/clothing/accessory/armband/cargo/nonsec /datum/loadout_item/accessory/armband_engineering - name = "Engineering Armband" - item_path = /obj/item/clothing/accessory/armband/engine - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD) + name = "Orange Armband" + item_path = /obj/item/clothing/accessory/armband/engine/nonsec + +/datum/loadout_item/accessory/armband_security_nonsec + name = "Blue Armband" + item_path = /obj/item/clothing/accessory/armband/deputy/lopland/nonsec /datum/loadout_item/accessory/armband_security name = "Security Armband" item_path = /obj/item/clothing/accessory/armband/deputy/lopland - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/accessory/armband_security_deputy name = "Security Deputy Armband" item_path = /obj/item/clothing/accessory/armband/deputy - restricted_roles = list(JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/accessory/armband_science - name = "Science Armband" - item_path = /obj/item/clothing/accessory/armband/science - restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_SCIENCE_GUARD) + name = "Purple Armband" + item_path = /obj/item/clothing/accessory/armband/science/nonsec /* * ARMOURLESS diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm index f8f74889b50..a30e25c923f 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm @@ -63,6 +63,10 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla name = "Modern Glasses" item_path = /obj/item/clothing/glasses/regular/betterunshit +/datum/loadout_item/glasses/prescription_glasses/kim + name = "Binoclard Lenses" + item_path = /obj/item/clothing/glasses/regular/kim + /* * COSMETIC GLASSES */ diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_gloves.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_gloves.dm index 936ca251455..3d78c20d1aa 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_gloves.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_gloves.dm @@ -78,6 +78,10 @@ GLOBAL_LIST_INIT(loadout_gloves, generate_loadout_items(/datum/loadout_item/glov name = "Evening Gloves" item_path = /obj/item/clothing/gloves/evening +/datum/loadout_item/gloves/kim + name = "Aerostatic Gloves" + item_path = /obj/item/clothing/gloves/kim + /datum/loadout_item/gloves/maid name = "Maid Arm Covers" item_path = /obj/item/clothing/gloves/maid diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm index 54ff8c32988..53ce841f2c0 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm @@ -464,27 +464,22 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/trekcap name = "Officer's Cap (White)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL) /datum/loadout_item/head/trekcapcap name = "Officer's Cap (Black)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/black - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY) /datum/loadout_item/head/trekcapmedisci name = "MedSci Officer's Cap (Blue)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/medsci - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PSYCHOLOGIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_ORDERLY, JOB_CORONER) /datum/loadout_item/head/trekcapeng name = "Eng Officer's Cap (Yellow)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/eng - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_ENGINEERING_GUARD, JOB_CUSTOMS_AGENT) /datum/loadout_item/head/trekcapsec name = "Officer's Cap (Red)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/sec - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT) /* * JOB-LOCKED @@ -527,9 +522,8 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/head/blasthelmet - name = "General's Helmet" + name = "Blast Helmet" item_path = /obj/item/clothing/head/hats/imperial/helmet - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_CORRECTIONS_OFFICER, JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) /datum/loadout_item/head/navybluehoscap name = "Head of Security's Naval Cap" @@ -546,35 +540,34 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea item_path = /obj/item/clothing/head/beret/sec/navywarden restricted_roles = list(JOB_WARDEN) -/datum/loadout_item/head/cybergoggles //Cyberpunk-P.I. Outfit +/datum/loadout_item/head/cybergoggles_civ name = "Type-34C Forensics Headwear" + item_path = /obj/item/clothing/head/fedora/det_hat/cybergoggles/civilian + +/datum/loadout_item/head/cybergoggles //Cyberpunk-P.I. Outfit + name = "Type-34P Forensics Headwear" item_path = /obj/item/clothing/head/fedora/det_hat/cybergoggles - restricted_roles = list(JOB_DETECTIVE) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/head/nursehat name = "Nurse Hat" item_path = /obj/item/clothing/head/costume/nursehat - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST) /datum/loadout_item/head/imperial_generic name = "Grey Naval Officer Cap" item_path = /obj/item/clothing/head/hats/imperial - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP) /datum/loadout_item/head/imperial_grey name = "Dark Grey Naval Officer Cap" item_path = /obj/item/clothing/head/hats/imperial/grey - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP) /datum/loadout_item/head/imperial_red name = "Red Naval Officer Cap" item_path = /obj/item/clothing/head/hats/imperial/red - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) /datum/loadout_item/head/imperial_white name = "White Naval Officer Cap" item_path = /obj/item/clothing/head/hats/imperial/white - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) /datum/loadout_item/head/azulea_oldblood name = "Oldblood's Royal cap" @@ -595,50 +588,38 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/atmos_beret name = "Atmospherics Beret" item_path = /obj/item/clothing/head/beret/atmos - restricted_roles = list( - JOB_ATMOSPHERIC_TECHNICIAN, - JOB_CHIEF_ENGINEER, - ) /datum/loadout_item/head/engi_beret name = "Engineering Beret" item_path = /obj/item/clothing/head/beret/engi - restricted_roles = list(JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER, JOB_ENGINEERING_GUARD) /datum/loadout_item/head/cargo_beret name = "Supply Beret" item_path = /obj/item/clothing/head/beret/cargo - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT) /datum/loadout_item/head/beret_med name = "Medical Beret" item_path = /obj/item/clothing/head/beret/medical - restricted_roles = list(JOB_MEDICAL_DOCTOR,JOB_VIROLOGIST, JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_ORDERLY, JOB_CORONER) /datum/loadout_item/head/beret_paramedic name = "Paramedic Beret" item_path = /obj/item/clothing/head/beret/medical/paramedic - restricted_roles = list(JOB_PARAMEDIC, JOB_CHIEF_MEDICAL_OFFICER) /datum/loadout_item/head/beret_viro name = "Virologist Beret" item_path = /obj/item/clothing/head/beret/medical/virologist - restricted_roles = list(JOB_VIROLOGIST, JOB_CHIEF_MEDICAL_OFFICER) /datum/loadout_item/head/beret_chem name = "Chemist Beret" item_path = /obj/item/clothing/head/beret/medical/chemist - restricted_roles = list(JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER) /datum/loadout_item/head/beret_sci name = "Scientist Beret" item_path = /obj/item/clothing/head/beret/science - restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENCE_GUARD) /datum/loadout_item/head/beret_robo name = "Roboticist Beret" item_path = /obj/item/clothing/head/beret/science/fancy/robo - restricted_roles = list(JOB_ROBOTICIST, JOB_RESEARCH_DIRECTOR) /* * FAMILIES diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm index f3771ad5fbd..cbabba6b8fb 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm @@ -121,7 +121,6 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) /datum/loadout_item/neck/discoproper name = "Horrible Necktie" item_path = /obj/item/clothing/neck/tie/disco - restricted_roles = list(JOB_DETECTIVE) /* * COLLARS @@ -282,7 +281,6 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) /datum/loadout_item/neck/stethoscope name = "Stethoscope" item_path = /obj/item/clothing/neck/stethoscope - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER) /datum/loadout_item/neck/maid name = "Maid Neck Cover" @@ -295,12 +293,12 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) /datum/loadout_item/neck/holobadge name = "Holobadge" item_path = /obj/item/clothing/accessory/badge/holo - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/neck/holobadge_cord name = "Holobadge with Lanyard" item_path = /obj/item/clothing/accessory/badge/holo/cord - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /* * DONATOR diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_shoes.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_shoes.dm index 5e21956f8bd..71d665a904e 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_shoes.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_shoes.dm @@ -194,6 +194,10 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes name = "Green Snakeskin Shoes" item_path = /obj/item/clothing/shoes/discoshoes +/datum/loadout_item/shoes/kim + name = "Aerostatic Shoes" + item_path = /obj/item/clothing/shoes/kim + /datum/loadout_item/shoes/dominaheels name = "Dominant Heels" item_path = /obj/item/clothing/shoes/latex_heels/domina_heels @@ -215,6 +219,10 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes name = "Roller Skates" item_path = /obj/item/clothing/shoes/wheelys/rollerskates +/datum/loadout_item/shoes/jingleshoes + name = "Jester Shoes" + item_path = /obj/item/clothing/shoes/jester_shoes + /* * SEASONAL */ @@ -233,7 +241,7 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes */ /datum/loadout_item/shoes/jester - name = "Jester Shoes" + name = "Clown's Jester Shoes" item_path = /obj/item/clothing/shoes/clown_shoes/jester restricted_roles = list(JOB_CLOWN) diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm index f2d3d76a422..4891323c05c 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm @@ -119,7 +119,6 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/labcoat_medical name = "Medical Labcoat" item_path = /obj/item/clothing/suit/toggle/labcoat/medical - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER) /* * PONCHOS @@ -455,7 +454,10 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/discojacket name = "Disco Ass Blazer" item_path = /obj/item/clothing/suit/discoblazer - restricted_roles = list(JOB_DETECTIVE) + +/datum/loadout_item/suit/kimjacket + name = "Aerostatic Bomber Jacket" + item_path = /obj/item/clothing/suit/kimjacket /datum/loadout_item/suit/cardigan name = "Cardigan" @@ -537,58 +539,48 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/coat_med name = "Medical Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/medical - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_ORDERLY) // Reserved for Medical Doctors, Orderlies, and their boss, the Chief Medical Officer /datum/loadout_item/suit/coat_paramedic name = "Paramedic Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/medical/paramedic - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC) // Reserved for Paramedics and their boss, the Chief Medical Officer /datum/loadout_item/suit/coat_robotics name = "Robotics Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/science/robotics - restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_ROBOTICIST) /datum/loadout_item/suit/coat_sci name = "Science Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/science - restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_SCIENCE_GUARD) // Reserved for the Science Departement /datum/loadout_item/suit/coat_eng name = "Engineering Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ENGINEERING_GUARD) // Reserved for Station Engineers, Engineering Guards, and their boss, the Chief Engineer /datum/loadout_item/suit/coat_atmos name = "Atmospherics Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN) // Reserved for Atmos Techs and their boss, the Chief Engineer /datum/loadout_item/suit/coat_hydro name = "Hydroponics Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/hydro - restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BOTANIST) // Reserved for Botanists and their boss, the Head of Personnel /datum/loadout_item/suit/coat_bar name = "Bartender Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/skyrat/bartender - restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BARTENDER) //Reserved for Bartenders and their boss, the Head of Personnel /datum/loadout_item/suit/coat_cargo name = "Cargo Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/cargo - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_CUSTOMS_AGENT) // Reserved for Cargo Techs, Customs Agents, and their boss, the Quartermaster /datum/loadout_item/suit/coat_miner name = "Mining Winter Coat" item_path = /obj/item/clothing/suit/hooded/wintercoat/miner - restricted_roles = list(JOB_QUARTERMASTER, JOB_SHAFT_MINER) // Reserved for Miners and their boss, the Quartermaster // JACKETS /datum/loadout_item/suit/navybluejacketofficer name = "Security Officer's Navy Blue Formal Jacket" item_path = /obj/item/clothing/suit/jacket/officer/blue - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) // I aint making a medic one, maybe i'll add some rank thing from cm or civ for it + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/suit/navybluejacketwarden name = "Warden's Navy Blue Formal Jacket" @@ -603,7 +595,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/security_jacket name = "Security Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/sec - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE) //Not giving this one to COs because it's actually better than the one they spawn with + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY) //Not giving this one to COs because it's actually better than the one they spawn with /datum/loadout_item/suit/brit name = "High Vis Armored Vest" @@ -613,7 +605,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/british_jacket name = "Peacekeeper Officer Coat" item_path = /obj/item/clothing/suit/british_officer - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_DETECTIVE) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/suit/offdep_jacket name = "Off-Department Jacket" @@ -622,27 +614,22 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/engi_jacket name = "Engineering Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/engi - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD) /datum/loadout_item/suit/sci_jacket name = "Science Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/sci - restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_SCIENCE_GUARD) /datum/loadout_item/suit/med_jacket name = "Medbay Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/med - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY) /datum/loadout_item/suit/supply_jacket name = "Supply Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/supply - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT) /datum/loadout_item/suit/cargo_gorka_jacket name = "Cargo Gorka Jacket" item_path = /obj/item/clothing/suit/toggle/cargo_tech - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT) /datum/loadout_item/suit/qm_jacket name = "Quartermaster's Overcoat" @@ -653,7 +640,6 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/labcoat_highvis name = "High-Vis Labcoat" item_path = /obj/item/clothing/suit/toggle/labcoat/skyrat/highvis - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_ATMOSPHERIC_TECHNICIAN, JOB_DETECTIVE, JOB_CHEMIST, JOB_ORDERLY) // And now chemist and orderly get it too. /* * FAMILIES diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm index 702983b4966..cfb0cc14e3a 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_toys.dm @@ -33,7 +33,6 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys)) /datum/loadout_item/toys/narsie name = "Nar'sie Plushie" item_path = /obj/item/toy/plush/narplush - restricted_roles = list(JOB_CHAPLAIN) /datum/loadout_item/toys/nukie name = "Nukie Plushie" @@ -50,7 +49,6 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys)) /datum/loadout_item/toys/ratvar name = "Ratvar Plushie" item_path = /obj/item/toy/plush/ratplush - restricted_roles = list(JOB_CHAPLAIN) /datum/loadout_item/toys/rouny name = "Rouny Plushie" diff --git a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm index 14aa3ca4b44..504c18629cf 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm @@ -96,23 +96,18 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/impcommand name = "Light Grey Officer's Naval Jumpsuit" item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP) /datum/loadout_item/under/jumpsuit/impcom name = "Grey Officer's Naval Jumpsuit" item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/grey - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP) /datum/loadout_item/under/jumpsuit/impred name = "Red Officer's Naval Jumpsuit" item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/red - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) //NT Reps would never wear red, it's unbefitting - /datum/loadout_item/under/jumpsuit/impcomtrous name = "Grey Officer's Naval Jumpsuit (Trousers)" item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/pants - restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP) /datum/loadout_item/under/jumpsuit/security_trousers name = "Security Trousers" @@ -132,37 +127,30 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/disco name = "Superstar Cop Uniform" item_path = /obj/item/clothing/under/rank/security/detective/disco - restricted_roles = list(JOB_DETECTIVE) /datum/loadout_item/under/jumpsuit/kim name = "Aerostatic Suit" item_path = /obj/item/clothing/under/rank/security/detective/kim - restricted_roles = list(JOB_DETECTIVE) /datum/loadout_item/under/jumpsuit/paramed_light name = "Light Paramedic Uniform" item_path = /obj/item/clothing/under/rank/medical/paramedic/skyrat/light - restricted_roles = list(JOB_PARAMEDIC) /datum/loadout_item/under/jumpsuit/paramed_light_skirt name = "Light Paramedic Skirt" item_path = /obj/item/clothing/under/rank/medical/paramedic/skyrat/light/skirt - restricted_roles = list(JOB_PARAMEDIC) /datum/loadout_item/under/jumpsuit/chemist_formal name = "Chemist's Formal Jumpsuit" item_path = /obj/item/clothing/under/rank/medical/chemist/skyrat/formal - restricted_roles = list(JOB_CHEMIST) /datum/loadout_item/under/jumpsuit/chemist_formal_skirt name = "Chemist's Formal Jumpskirt" item_path = /obj/item/clothing/under/rank/medical/chemist/skyrat/formal/skirt - restricted_roles = list(JOB_CHEMIST) /datum/loadout_item/under/jumpsuit/hlscientist name = "Ridiculous Scientist Outfit" item_path = /obj/item/clothing/under/rank/rnd/scientist/skyrat/hlscience - restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR) /datum/loadout_item/under/jumpsuit/rd_jumpsuit name = "Research Director's Jumpsuit" @@ -177,7 +165,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/cargo name = "Cargo Technician's Jumpsuit" item_path = /obj/item/clothing/under/rank/cargo/tech - restricted_roles = list(JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT) /datum/loadout_item/under/jumpsuit/cargo/skirt name = "Cargo Technician's Skirt" @@ -199,22 +186,18 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/utility_eng name = "Engineering Utility Uniform" item_path = /obj/item/clothing/under/rank/engineering/engineer/skyrat/utility - restricted_roles = list(JOB_STATION_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER, JOB_ENGINEERING_GUARD) /datum/loadout_item/under/jumpsuit/utility_med name = "Medical Utility Uniform" item_path = /obj/item/clothing/under/rank/medical/doctor/skyrat/utility - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_GENETICIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_PSYCHOLOGIST, JOB_ORDERLY) /datum/loadout_item/under/jumpsuit/utility_sci name = "Science Utility Uniform" item_path = /obj/item/clothing/under/rank/rnd/scientist/skyrat/utility - restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENCE_GUARD) /datum/loadout_item/under/jumpsuit/utility_cargo name = "Supply Utility Uniform" item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/utility - restricted_roles = list(JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT) /datum/loadout_item/under/jumpsuit/utility_sec name = "Security Utility Uniform" @@ -566,32 +549,26 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/miscellaneous/blacknwhite name = "Classic Prisoner Jumpsuit" item_path = /obj/item/clothing/under/rank/prisoner/classic - restricted_roles = list(JOB_PRISONER) /datum/loadout_item/under/miscellaneous/redscrubs name = "Red Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/red - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) /datum/loadout_item/under/miscellaneous/bluescrubs name = "Blue Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/blue - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) /datum/loadout_item/under/miscellaneous/greenscrubs name = "Green Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/green - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) /datum/loadout_item/under/miscellaneous/purplescrubs name = "Purple Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/purple - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) /datum/loadout_item/under/miscellaneous/whitescrubs name = "White Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/white - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) /datum/loadout_item/under/miscellaneous/gear_harness name = "Gear Harness" @@ -604,27 +581,22 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/miscellaneous/cargo_casual name = "Cargo Tech Casualwear" item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/casualman - restricted_roles = list(JOB_CARGO_TECHNICIAN) /datum/loadout_item/under/miscellaneous/cargo_shorts name = "Cargo Tech Shorts" item_path = /obj/item/clothing/under/rank/cargo/tech/alt - restricted_roles = list(JOB_CARGO_TECHNICIAN) /datum/loadout_item/under/miscellaneous/cargo_black name = "Black Cargo Uniform" item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/evil - restricted_roles = list(JOB_CARGO_TECHNICIAN) /datum/loadout_item/under/miscellaneous/cargo_turtle name = "Cargo Turtleneck" item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/turtleneck - restricted_roles = list(JOB_CARGO_TECHNICIAN) /datum/loadout_item/under/miscellaneous/cargo_skirtle name = "Cargo Skirtleneck" item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/turtleneck/skirt - restricted_roles = list(JOB_CARGO_TECHNICIAN) /datum/loadout_item/under/miscellaneous/qm_skirtle name = "Quartermaster's Skirtleneck" @@ -651,7 +623,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/miscellaneous/mech_suit name = "Mech Suit" item_path = /obj/item/clothing/under/costume/mech_suit - restricted_roles = list(JOB_ROBOTICIST) /* * FORMAL UNDERSUITS @@ -879,7 +850,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/formal/designer_inferno name = "Designer Inferno Suit" item_path = /obj/item/clothing/under/suit/skyrat/inferno/beeze - restricted_roles = list(JOB_LAWYER) /datum/loadout_item/under/formal/pencil name = "Black Pencilskirt" diff --git a/modular_skyrat/modules/oversized/code/door.dm b/modular_skyrat/modules/oversized/code/door.dm index b7c534494b3..e2d58c9e4aa 100644 --- a/modular_skyrat/modules/oversized/code/door.dm +++ b/modular_skyrat/modules/oversized/code/door.dm @@ -14,7 +14,6 @@ var/affecting = crossing_human.get_bodypart(BODY_ZONE_HEAD) crossing_human.apply_damage(15, BRUTE, affecting) crossing_human.Knockdown(20) - crossing_human.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15) //We do a bit of brain damage crossing_human.visible_message(span_warning("[crossing_human] slams their head into the frame of [src] with a sickening thud!"), \ span_userdanger("You slam your head against [src]!") ) diff --git a/modular_skyrat/modules/oversized/code/oversized_quirk.dm b/modular_skyrat/modules/oversized/code/oversized_quirk.dm index a2470d56b8c..8c6c88298f8 100644 --- a/modular_skyrat/modules/oversized/code/oversized_quirk.dm +++ b/modular_skyrat/modules/oversized/code/oversized_quirk.dm @@ -21,15 +21,12 @@ human_holder.maptext_height = 32 * human_holder.dna.features["body_size"] //Adjust runechat height human_holder.dna.update_body_size() human_holder.mob_size = MOB_SIZE_LARGE - var/obj/item/bodypart/arm/left/left_arm = human_holder.get_bodypart(BODY_ZONE_L_ARM) - if(left_arm) - left_arm.unarmed_damage_low += OVERSIZED_HARM_DAMAGE_BONUS - left_arm.unarmed_damage_high += OVERSIZED_HARM_DAMAGE_BONUS - var/obj/item/bodypart/arm/right/right_arm = human_holder.get_bodypart(BODY_ZONE_R_ARM) - if(right_arm) - right_arm.unarmed_damage_low += OVERSIZED_HARM_DAMAGE_BONUS - right_arm.unarmed_damage_high += OVERSIZED_HARM_DAMAGE_BONUS + RegisterSignal(human_holder, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_gain_limb)) // make sure we handle this when new ones are applied + + // just dummy call our current limbs to have less duplication (by having more duplication ahueheu) + for(var/obj/item/bodypart/bodypart as anything in human_holder.bodyparts) + on_gain_limb(src, bodypart, special = FALSE) human_holder.blood_volume_normal = BLOOD_VOLUME_OVERSIZED human_holder.physiology.hunger_mod *= OVERSIZED_HUNGER_MOD //50% hungrier @@ -57,18 +54,48 @@ var/obj/item/bodypart/arm/left/left_arm = human_holder.get_bodypart(BODY_ZONE_L_ARM) if(left_arm) - left_arm.unarmed_damage_low -= OVERSIZED_HARM_DAMAGE_BONUS - left_arm.unarmed_damage_high -= OVERSIZED_HARM_DAMAGE_BONUS + left_arm.unarmed_damage_high = initial(left_arm.unarmed_damage_high) var/obj/item/bodypart/arm/right/right_arm = human_holder.get_bodypart(BODY_ZONE_R_ARM) if(right_arm) - right_arm.unarmed_damage_low -= OVERSIZED_HARM_DAMAGE_BONUS - right_arm.unarmed_damage_high -= OVERSIZED_HARM_DAMAGE_BONUS + right_arm.unarmed_damage_high = initial(right_arm.unarmed_damage_high) + + var/obj/item/bodypart/leg/left_leg = human_holder.get_bodypart(BODY_ZONE_L_LEG) + if (left_leg) + left_leg.unarmed_effectiveness = initial(left_leg.unarmed_effectiveness) + + var/obj/item/bodypart/leg/right_leg = human_holder.get_bodypart(BODY_ZONE_R_LEG) + if (right_leg) + right_leg.unarmed_effectiveness = initial(right_leg.unarmed_effectiveness) + + for(var/obj/item/bodypart/bodypart as anything in human_holder.bodyparts) + bodypart.name = replacetext(bodypart.name, "oversized ", "") + + UnregisterSignal(human_holder, COMSIG_CARBON_POST_ATTACH_LIMB) human_holder.blood_volume_normal = BLOOD_VOLUME_NORMAL human_holder.physiology.hunger_mod /= OVERSIZED_HUNGER_MOD human_holder.remove_movespeed_modifier(/datum/movespeed_modifier/oversized) +/datum/quirk/oversized/proc/on_gain_limb(datum/source, obj/item/bodypart/gained, special) + SIGNAL_HANDLER + + if(findtext(gained.name, "oversized")) + return + + // Oversized arms have a higher damage maximum. Pretty simple. + if(istype(gained, /obj/item/bodypart/arm)) + var/obj/item/bodypart/arm/new_arm = gained + new_arm.unarmed_damage_high = initial(new_arm.unarmed_damage_high) + OVERSIZED_HARM_DAMAGE_BONUS + + // Before this, we never actually did anything with Oversized legs. + // This brings their unarmed_effectiveness up to 20 from 15, which is on par with mushroom legs. + // Functionally, this makes their prone kicks more accurate and increases the chance of extending prone knockdown... but only while the victim is already prone. + else if(istype(gained, /obj/item/bodypart/leg)) + var/obj/item/bodypart/leg/new_leg = gained + new_leg.unarmed_effectiveness = initial(new_leg.unarmed_effectiveness) + OVERSIZED_KICK_EFFECTIVENESS_BONUS + + gained.name = "oversized " + gained.name /datum/movespeed_modifier/oversized multiplicative_slowdown = OVERSIZED_SPEED_SLOWDOWN diff --git a/modular_skyrat/modules/radiosound/code/headset.dm b/modular_skyrat/modules/radiosound/code/headset.dm index 321fb9e40a0..b27e550f1ef 100644 --- a/modular_skyrat/modules/radiosound/code/headset.dm +++ b/modular_skyrat/modules/radiosound/code/headset.dm @@ -1,5 +1,8 @@ /obj/item/radio/headset + /// The sound that plays when someone uses the headset var/radiosound = 'modular_skyrat/modules/radiosound/sound/radio/common.ogg' + /// The volume of the radio sound we make + var/radio_sound_volume = 25 /obj/item/radio/headset/syndicate //disguised to look like a normal headset for stealth ops radiosound = 'modular_skyrat/modules/radiosound/sound/radio/syndie.ogg' @@ -7,7 +10,7 @@ /obj/item/radio/headset/headset_sec radiosound = 'modular_skyrat/modules/radiosound/sound/radio/security.ogg' -/obj/item/radio/headset/talk_into(mob/living/M, message, channel, list/spans, datum/language/language, list/message_mods, direct = TRUE) +/obj/item/radio/headset/talk_into(mob/living/mob_in_question, message, channel, list/spans, datum/language/language, list/message_mods, direct = TRUE) if(radiosound && listening) - playsound(M, radiosound, rand(20, 30), 0, 0, SOUND_FALLOFF_EXPONENT) + playsound(mob_in_question, radiosound, radio_sound_volume, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT) . = ..() diff --git a/tgstation.dme b/tgstation.dme index 6b3632a7016..829f78fa1d0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6172,7 +6172,9 @@ #include "interface\fonts\tiny_unicode.dm" #include "interface\fonts\vcr_osd_mono.dm" #include "modular_skyrat\master_files\code\_globalvars\configuration.dm" +#include "modular_skyrat\master_files\code\_globalvars\regexes.dm" #include "modular_skyrat\master_files\code\_globalvars\religion.dm" +#include "modular_skyrat\master_files\code\_globalvars\text.dm" #include "modular_skyrat\master_files\code\_globalvars\lists\ambience.dm" #include "modular_skyrat\master_files\code\_globalvars\lists\chat.dm" #include "modular_skyrat\master_files\code\_onclick\cyborg.dm" @@ -6224,6 +6226,7 @@ #include "modular_skyrat\master_files\code\datums\traits\negative.dm" #include "modular_skyrat\master_files\code\datums\traits\neutral.dm" #include "modular_skyrat\master_files\code\datums\votes\_vote_datum.dm" +#include "modular_skyrat\master_files\code\datums\votes\map_vote.dm" #include "modular_skyrat\master_files\code\game\atoms.dm" #include "modular_skyrat\master_files\code\game\sound.dm" #include "modular_skyrat\master_files\code\game\effects\spawners\random\structure.dm" @@ -7057,6 +7060,7 @@ #include "modular_skyrat\modules\customization\modules\language\common.dm" #include "modular_skyrat\modules\customization\modules\language\gutter.dm" #include "modular_skyrat\modules\customization\modules\language\monkey.dm" +#include "modular_skyrat\modules\customization\modules\language\mothic.dm" #include "modular_skyrat\modules\customization\modules\language\mushroom.dm" #include "modular_skyrat\modules\customization\modules\language\nekomimetic.dm" #include "modular_skyrat\modules\customization\modules\language\panslavic.dm" @@ -7137,6 +7141,7 @@ #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\corrupted_stomach.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\corrupted_tongue.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_actions.dm" +#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_moods.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_organs.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_species.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_status_effects.dm" diff --git a/tgui/packages/tgui/interfaces/PaiSubmit.tsx b/tgui/packages/tgui/interfaces/PaiSubmit.tsx index 85e7d48c2bf..23a1cabece2 100644 --- a/tgui/packages/tgui/interfaces/PaiSubmit.tsx +++ b/tgui/packages/tgui/interfaces/PaiSubmit.tsx @@ -86,7 +86,7 @@ const InputDisplay = (props) => { setInput({ ...input, description: value })} /> @@ -97,7 +97,7 @@ const InputDisplay = (props) => { setInput({ ...input, comments: value })} /> diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/headshot.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/headshot.tsx index cf64c62e549..4535e1b3dc8 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/headshot.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/headshot.tsx @@ -6,6 +6,8 @@ export const headshot: Feature = { description: 'Requires a link ending with .png, .jpeg, or .jpg, starting with \ https://, and hosted on Gyazo or Discord. Renders the image underneath \ - your character preview in the examine more window.', + your character preview in the examine more window. \ + Image larger than 250x250 will be resized to 250x250. \ + Aim for 250x250 whenever possible', component: FeatureShortTextInput, };