diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index cb257efeba..b81f55be21 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -29620,10 +29620,10 @@ /turf/open/floor/plasteel/white, /area/science/robotics/lab) "bsU" = ( -/mob/living/simple_animal/hostile/retaliate/ghost, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, +/mob/living/simple_animal/hostile/retaliate/ghost, /turf/open/floor/wood, /area/maintenance/port/fore) "bsV" = ( @@ -53488,6 +53488,10 @@ }, /turf/closed/wall, /area/science/circuit) +"dxF" = ( +/obj/machinery/gear_painter, +/turf/open/floor/wood, +/area/maintenance/bar) "dyE" = ( /obj/structure/cable{ icon_state = "0-4" @@ -56505,6 +56509,10 @@ }, /turf/open/floor/wood/wood_diagonal, /area/maintenance/port/fore) +"kqy" = ( +/obj/machinery/gear_painter, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "kqI" = ( /obj/structure/window, /turf/open/floor/wood, @@ -58551,6 +58559,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/crew_quarters/locker) "pqR" = ( @@ -86334,7 +86343,7 @@ oKh oKh iiW iiW -iiW +dxF izv nfm bCq @@ -98349,7 +98358,7 @@ awB att azh fHG -fHG +kqy kxf ufD alP diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 482ddc3f22..6f5bab0498 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -33604,6 +33604,10 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, +/obj/item/kirbyplants{ + icon_state = "plant-20"; + pixel_y = 3 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bvu" = ( @@ -38936,10 +38940,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/kirbyplants{ - icon_state = "plant-20"; - pixel_y = 3 - }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/crew_quarters/locker) "bGN" = ( @@ -52867,7 +52868,7 @@ dir = 4; pixel_x = -28 }, -/obj/item/kirbyplants/random, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/quartermaster/office) "cjB" = ( @@ -71256,6 +71257,13 @@ }, /turf/open/floor/plating/airless, /area/router/aux) +"stP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel, +/area/quartermaster/office) "sAm" = ( /obj/structure/plasticflaps, /obj/machinery/door/poddoor{ @@ -114255,7 +114263,7 @@ ckq bgf beB cxC -bgq +stP cjA biy bjN diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index e907602d59..07902b28b1 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3535,9 +3535,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ajL" = ( @@ -3823,6 +3821,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/entry) "akn" = ( @@ -79384,6 +79385,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 3ff364fa5c..408efad32f 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -48007,8 +48007,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/structure/closet/wardrobe/mixed, /obj/machinery/light/small, +/obj/effect/turf_decal/delivery, +/obj/machinery/gear_painter, /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "bzo" = ( @@ -48767,7 +48768,6 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) "bAA" = ( -/obj/structure/table, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -48777,11 +48777,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/storage/backpack{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/backpack, /obj/machinery/firealarm{ dir = 8; pixel_x = 26 @@ -49398,6 +49393,7 @@ dir = 1; name = "recreation camera" }, +/obj/structure/closet/wardrobe/mixed, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "bBy" = ( @@ -54797,11 +54793,6 @@ /area/hallway/secondary/exit/departure_lounge) "bKn" = ( /obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/pen, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -54810,6 +54801,11 @@ /obj/machinery/airalarm{ pixel_y = 22 }, +/obj/item/storage/backpack{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/backpack, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) "bKo" = ( @@ -55425,6 +55421,12 @@ pixel_x = 28; pixel_y = 22 }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "bLd" = ( @@ -60844,6 +60846,11 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, +/obj/structure/table, +/obj/item/toy/figure/assistant{ + pixel_x = 8; + pixel_y = 6 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bTD" = ( @@ -61021,6 +61028,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 10 }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bTO" = ( @@ -61259,19 +61272,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/pen, -/obj/item/toy/figure/assistant{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/effect/turf_decal/loading_area{ - dir = 1 - }, +/obj/effect/turf_decal/delivery, +/obj/machinery/gear_painter, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "bUi" = ( @@ -71325,15 +71327,16 @@ icon_gib = "magicarp_gib"; icon_living = "magicarp"; icon_state = "magicarp"; - maxHealth = 200; max_co2 = 5; max_tox = 2; + maxHealth = 200; melee_damage_lower = 15; melee_damage_upper = 20; min_oxy = 5; name = "Lia"; real_name = "Lia"; - response_help = "pets"; + response_help_continuous = "pets"; + response_help_simple = "pet"; turns_per_move = 10 }, /turf/open/floor/plasteel/dark, diff --git a/_maps/map_files/LambdaStation/dorms.dmm b/_maps/map_files/LambdaStation/dorms.dmm index b7adb4a518..0ed1b0203c 100644 --- a/_maps/map_files/LambdaStation/dorms.dmm +++ b/_maps/map_files/LambdaStation/dorms.dmm @@ -13764,6 +13764,7 @@ /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/crew_quarters/locker) "Jp" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c2953916e0..958ab2dc5a 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -4826,6 +4826,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/entry) "aiU" = ( @@ -23177,6 +23178,9 @@ }, /obj/machinery/light, /obj/effect/turf_decal/tile/neutral, +/obj/machinery/newscaster{ + pixel_y = -32 + }, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aTy" = ( @@ -23190,17 +23194,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"aTz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) "aTA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -81348,6 +81341,21 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/engine/engineering) +"foN" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light, +/obj/machinery/gear_painter, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/locker) "fpa" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 @@ -81974,6 +81982,16 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) +"lFR" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel/white/corner, +/area/hallway/secondary/entry) "lGS" = ( /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, @@ -97543,7 +97561,7 @@ blU aiT bEs bHJ -aiT +lFR iSt mcS alK @@ -118601,8 +118619,8 @@ aOD aPK aQV aOu -aTz -aUM +aTt +foN aUM aYe dnh diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 74f7f95c2c..f4d798511f 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -15268,6 +15268,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "axG" = ( @@ -19618,9 +19621,6 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "aEL" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, /obj/machinery/status_display{ pixel_y = -32 }, @@ -19635,6 +19635,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "aEM" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index d367ed82b1..3fb2661cea 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -511,10 +511,10 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "abi" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 10 }, +/obj/machinery/gear_painter, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "abj" = ( @@ -59138,6 +59138,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) +"qAx" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness/recreation) "qAM" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/item/cigbutt, @@ -60933,6 +60940,10 @@ /obj/effect/turf_decal/plaque, /turf/open/floor/plating, /area/maintenance/department/engine) +"uNA" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness/recreation) "uQR" = ( /obj/item/ammo_casing/shotgun/beanbag, /turf/open/floor/plating, @@ -104126,8 +104137,8 @@ aaY awB abe abi -axw -axw +uNA +qAx axw axw aBX diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index bf0e1dc797..7506fbdca3 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -10524,6 +10524,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"yl" = ( +/obj/machinery/gear_painter, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "yn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum, @@ -43992,7 +43996,7 @@ NS Nd ZL NS -NS +yl Nd CU NS diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm index 9639e37852..51a14594fb 100644 --- a/_maps/shuttles/emergency_nature.dmm +++ b/_maps/shuttles/emergency_nature.dmm @@ -33,8 +33,8 @@ "bg" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical{ - pixel_y = 8; - pixel_x = -2 + pixel_x = -2; + pixel_y = 8 }, /obj/item/storage/toolbox/electrical, /obj/effect/turf_decal/stripes/line, @@ -43,8 +43,8 @@ "bS" = ( /obj/structure/table/reinforced, /obj/item/storage/box/lights/mixed{ - pixel_y = 9; - pixel_x = -5 + pixel_x = -5; + pixel_y = 9 }, /obj/item/storage/box/matches{ pixel_y = 5 @@ -413,8 +413,8 @@ pixel_y = 4 }, /obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy{ - pixel_y = 5; - pixel_x = 6 + pixel_x = 6; + pixel_y = 5 }, /turf/open/floor/plasteel/white, /area/shuttle/escape) @@ -494,8 +494,8 @@ /area/shuttle/escape) "rg" = ( /obj/item/clothing/glasses/welding{ - pixel_y = 8; - pixel_x = 3 + pixel_x = 3; + pixel_y = 8 }, /obj/item/weldingtool/largetank{ pixel_x = -3 @@ -882,8 +882,8 @@ }, /obj/structure/table/glass, /obj/item/storage/box/monkeycubes{ - pixel_y = 10; - pixel_x = 5 + pixel_x = 5; + pixel_y = 10 }, /obj/item/reagent_containers/food/snacks/cube/monkey{ pixel_x = 5 @@ -1156,8 +1156,8 @@ }, /obj/structure/table/glass, /obj/item/clothing/suit/monkeysuit{ - pixel_y = 4; - pixel_x = -2 + pixel_x = -2; + pixel_y = 4 }, /obj/item/clothing/mask/gas/monkeymask{ pixel_x = 5; @@ -1169,6 +1169,7 @@ /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "ST" = ( @@ -1319,6 +1320,7 @@ name = "Emergency Shuttle Airlock" }, /obj/docking_port/mobile/emergency, +/obj/structure/fans/tiny, /turf/open/floor/plasteel/white, /area/shuttle/escape) "Yu" = ( diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index d6db35e68d..fad9ddcda5 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -102,10 +102,6 @@ #define STATUS_EFFECT_FAKE_VIRUS /datum/status_effect/fake_virus //gives you fluff messages for cough, sneeze, headache, etc but without an actual virus -#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk. - -#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above. - #define STATUS_EFFECT_NO_COMBAT_MODE /datum/status_effect/no_combat_mode //Wont allow combat mode and will disable it #define STATUS_EFFECT_MESMERIZE /datum/status_effect/mesmerize //Just reskinned no_combat_mode diff --git a/code/datums/action.dm b/code/datums/action.dm index 284df6adda..9e25d0e3f3 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -2,6 +2,7 @@ #define AB_CHECK_STUN 2 #define AB_CHECK_LYING 4 #define AB_CHECK_CONSCIOUS 8 +#define AB_CHECK_ALIVE 16 /datum/action var/name = "Generic Action" @@ -115,6 +116,9 @@ if(check_flags & AB_CHECK_CONSCIOUS) if(owner.stat) return FALSE + if(check_flags & AB_CHECK_ALIVE) + if(owner.stat == DEAD) + return FALSE return TRUE /datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE) diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm index 14987bac44..1f4a47c474 100644 --- a/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/code/datums/components/crafting/recipes/recipes_misc.dm @@ -172,11 +172,11 @@ /////////////////// /datum/crafting_recipe/upgraded_gauze - name = "Improved Gauze" + name = "Sterilized Gauze" result = /obj/item/stack/medical/gauze/adv/one time = 1 reqs = list(/obj/item/stack/medical/gauze = 1, - /datum/reagent/space_cleaner/sterilizine = 10) + /datum/reagent/space_cleaner/sterilizine = 5) category = CAT_MISC subcategory = CAT_TOOL @@ -184,7 +184,7 @@ name = "Suture Pack" result = /obj/item/stack/medical/suture/five time = 1 - reqs = list(/obj/item/stack/medical/gauze = 1, + reqs = list(/obj/item/stack/medical/gauze/adv = 1, /datum/reagent/medicine/styptic_powder = 10) category = CAT_MISC subcategory = CAT_TOOL @@ -193,7 +193,7 @@ name = "Regenerative Mesh" result = /obj/item/stack/medical/mesh/five time = 1 - reqs = list(/obj/item/stack/medical/gauze = 1, + reqs = list(/obj/item/stack/medical/gauze/adv = 1, /datum/reagent/medicine/silver_sulfadiazine = 10) category = CAT_MISC subcategory = CAT_TOOL diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index dae685b08f..6786f0c0f7 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -85,7 +85,7 @@ subcategory = CAT_MELEE /datum/crafting_recipe/bokken_steelwood - name = "Training Bokken" + name = "Training Steelwood Bokken" result = /obj/item/melee/bokken/steelwood tools = list(TOOL_SCREWDRIVER) reqs = list(/obj/item/bokken_steelblade = 1, @@ -294,7 +294,7 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ishotgun +/datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised reqs = list(/obj/item/pipe = 2, // putting a large amount of meaningless timegates by forcing people to turn base resources into upgraded resources kinda sucks @@ -510,7 +510,7 @@ category = CAT_WEAPONRY subcategory = CAT_PARTS -/datum/crafting_recipe/wakibokken_blade +/datum/crafting_recipe/wakibokken_steelblade name = "Training Wakizashi Ironwood Bokken Blade" result = /obj/item/wakibokken_steelblade tools = list(/obj/item/hatchet, TOOL_WELDER) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index f4a53d5c72..4637592dcd 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -573,13 +573,17 @@ duration = 1 MINUTES status_type = STATUS_EFFECT_REPLACE alert_type = /obj/screen/alert/status_effect/regenerative_core + var/heal_amount = 25 /datum/status_effect/regenerative_core/on_apply() . = ..() ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, "regenerative_core") - owner.adjustBruteLoss(-25) + + if(HAS_TRAIT(owner, TRAIT_ROBOTIC_ORGANISM)) //Robots can heal from cores, but only get 1/5th of the healing. They can use this to get past the damage threshhold however, and then regularely heal from there. + heal_amount *= 0.2 + owner.adjustBruteLoss(-heal_amount, only_organic = FALSE) if(!AmBloodsucker(owner)) //use your coffin you lazy bastard - owner.adjustFireLoss(-25) + owner.adjustFireLoss(-heal_amount, only_organic = FALSE) owner.remove_CC() owner.bodytemperature = BODYTEMP_NORMAL return TRUE diff --git a/code/game/machinery/colormate.dm b/code/game/machinery/colormate.dm index 84f518664f..b4306d49a4 100644 --- a/code/game/machinery/colormate.dm +++ b/code/game/machinery/colormate.dm @@ -106,15 +106,15 @@ dat += " 1) var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in buckled_mobs if(user_unbuckle_mob(unbuckled,user)) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 01d684adad..fa92997cba 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -173,11 +173,11 @@ "You hear cutting.") use(2) else if(I.is_drainable() && I.reagents.has_reagent(/datum/reagent/space_cleaner/sterilizine)) - if(!I.reagents.has_reagent(/datum/reagent/space_cleaner/sterilizine, 10)) + if(!I.reagents.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5)) to_chat(user, "There's not enough sterilizine in [I] to sterilize [src]!") return - user.visible_message("[user] pours the contents of [I] onto [src], sterilizing it.", "You pour the contents of [I] onto [src], sterilizing it.") - I.reagents.remove_reagent(/datum/reagent/space_cleaner/sterilizine, 10) + user.visible_message("[user] sterilizes [src] with the contents of [I].", "You pour the contents of [I] onto [src], sterilizing it.") + I.reagents.remove_reagent(/datum/reagent/space_cleaner/sterilizine, 5) new /obj/item/stack/medical/gauze/adv/one(user.drop_location()) use(1) else @@ -187,6 +187,9 @@ user.visible_message("[user] begins tightening \the [src] around [user.p_their()] neck! It looks like [user.p_they()] forgot how to use medical supplies!") return OXYLOSS +/obj/item/stack/medical/gauze/one + amount = 1 + /obj/item/stack/medical/gauze/improvised name = "improvised gauze" singular_name = "improvised gauze" @@ -204,8 +207,9 @@ heal_brute = 6 self_delay = 45 other_delay = 15 - absorption_rate = 0.4 - absorption_capacity = 6 + absorption_rate = 0.5 + absorption_capacity = 12 + splint_factor = 0.15 /obj/item/stack/medical/gauze/adv/one amount = 1 diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index c70332eacb..82e60ed8f6 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -196,7 +196,7 @@ if(M.client && (is_servant_of_ratvar(M) || isobserver(M) || M.stat == DEAD)) viewing += M.client flick_overlay(I, viewing, 8) - L.adjustToxLoss(-3, TRUE, TRUE) + L.adjustToxLoss(-3, TRUE, TRUE, toxins_type = TOX_OMNI) /turf/open/floor/clockwork/try_replace_tile(obj/item/stack/tile/T, mob/user, params) return @@ -278,4 +278,4 @@ heavyfootstep = FOOTSTEP_RUST /turf/open/floor/plating/rust/rust_heretic_act() - return + return diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index db498f0975..b868fb54c0 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -348,9 +348,9 @@ L.dust() else if(L.health > min_drain_health) if(!GLOB.ratvar_awakens && L.stat == CONSCIOUS) - vitality_drained = L.adjustToxLoss(1, forced = TRUE) + vitality_drained = L.adjustToxLoss(1, forced = TRUE, toxins_type = TOX_OMNI) else - vitality_drained = L.adjustToxLoss(1.5, forced = TRUE) + vitality_drained = L.adjustToxLoss(1.5, forced = TRUE, toxins_type = TOX_OMNI) if(vitality_drained) GLOB.clockwork_vitality += vitality_drained else diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 5affcd5dec..a00019aa45 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -115,7 +115,7 @@ if(totaldamage) L.heal_overall_damage(brutedamage, burndamage, only_organic = FALSE) //Maybe a machine god shouldn't murder augmented followers instead of healing them L.adjustOxyLoss(-oxydamage) - L.adjustToxLoss(totaldamage * 0.5, TRUE, TRUE) + L.adjustToxLoss(totaldamage * 0.5, TRUE, TRUE, toxins_type = TOX_OMNI) clockwork_say(ranged_ability_user, text2ratvar("[has_holy_water ? "Heal tainted" : "Mend wounded"] flesh!")) log_combat(ranged_ability_user, L, "healed with Sentinel's Compromise") L.visible_message("A blue light washes over [L], [has_holy_water ? "causing [L.p_them()] to briefly glow as it mends" : " mending"] [L.p_their()] bruises and burns!", \ diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 4a697a6bd7..901c83b1b7 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -717,9 +717,9 @@ uses = 0 ratio *= -1 H.adjustOxyLoss((overall_damage*ratio) * (H.getOxyLoss() / overall_damage), 0) - H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0) - H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0) - H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0) + H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0, toxins_type = TOX_OMNI) + H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0, only_organic = FALSE) + H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0, only_organic = FALSE) H.updatehealth() playsound(get_turf(H), 'sound/magic/staff_healing.ogg', 25) new /obj/effect/temp_visual/cult/sparks(get_turf(H)) diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index a388621c92..25fd446b06 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -214,8 +214,8 @@ if(L.health != L.maxHealth) new /obj/effect/temp_visual/heal(get_turf(src), "#960000") if(ishuman(L)) - L.adjustBruteLoss(-1, 0) - L.adjustFireLoss(-1, 0) + L.adjustBruteLoss(-1, 0, only_organic = FALSE) + L.adjustFireLoss(-1, 0, only_organic = FALSE) L.updatehealth() if(isshade(L) || isconstruct(L)) var/mob/living/simple_animal/M = L diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index bc4727ab9f..bf6599d782 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -617,6 +617,7 @@ This is here to make the tiles around the station mininuke change when it's arme var/fake = FALSE var/turf/lastlocation var/last_disk_move + var/process_tick = 0 /obj/item/disk/nuclear/Initialize() . = ..() @@ -632,6 +633,7 @@ This is here to make the tiles around the station mininuke change when it's arme AddComponent(/datum/component/stationloving, !fake) /obj/item/disk/nuclear/process() + ++process_tick if(fake) STOP_PROCESSING(SSobj, src) CRASH("A fake nuke disk tried to call process(). Who the fuck and how the fuck") @@ -648,7 +650,8 @@ This is here to make the tiles around the station mininuke change when it's arme disk_comfort_level++ if(disk_comfort_level >= 2) //Sleep tight, disky. - visible_message("[src] sleeps soundly. Sleep tight, disky.") + if(process_tick % 30) + visible_message("[src] sleeps soundly. Sleep tight, disky.") if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001)) var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && loneop.occurrences < loneop.max_occurrences) diff --git a/code/modules/arousal/organs/breasts.dm b/code/modules/arousal/organs/breasts.dm index 9e30530ad3..e37224e401 100644 --- a/code/modules/arousal/organs/breasts.dm +++ b/code/modules/arousal/organs/breasts.dm @@ -88,7 +88,6 @@ to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") QDEL_IN(src, 1) return - var/enlargement = FALSE switch(rounded_cached) if(0) //flatchested size = "flat" @@ -96,16 +95,8 @@ size = breast_values[rounded_cached] if(9 to 15) //massive size = breast_values[rounded_cached] - enlargement = TRUE if(16 to INFINITY) //rediculous size = "huge" - enlargement = TRUE - if(owner) - var/status_effect = owner.has_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) - if(enlargement && !status_effect) - owner.apply_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) - else if(!enlargement && status_effect) - owner.remove_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) if(rounded_cached < 16 && owner)//Because byond doesn't count from 0, I have to do this. var/mob/living/carbon/human/H = owner diff --git a/code/modules/arousal/organs/penis.dm b/code/modules/arousal/organs/penis.dm index a8e95673ae..e1025094c3 100644 --- a/code/modules/arousal/organs/penis.dm +++ b/code/modules/arousal/organs/penis.dm @@ -39,27 +39,16 @@ return var/rounded_length = round(length) var/new_size - var/enlargement = FALSE - var/max_D = CONFIG_GET(number/penis_max_inches_prefs) switch(rounded_length) if(0 to 6) //If modest size new_size = 1 if(7 to 11) //If large new_size = 2 - if(12 to max_D) //If massive + if(12 to 36) //If massive new_size = 3 - if(max_D + 1 to max_D+13) //If massive and due for large effects, modified in case some server owner running recent citcode decides to be insane with dick sizes in the config - new_size = 3 - enlargement = TRUE - if(max_D+14 to INFINITY) //If comical + if(37 to INFINITY) //If comical new_size = 4 //no new sprites for anything larger yet - enlargement = TRUE - if(owner) - var/status_effect = owner.has_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) - if(enlargement && !status_effect) - owner.apply_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) - else if(!enlargement && status_effect) - owner.remove_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + if(linked_organ) linked_organ.size = clamp(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) linked_organ.update() diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index a866049d65..1f3a174d0f 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -62,8 +62,8 @@ amount += BP.burn_dam return amount - -/mob/living/carbon/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +//In both these procs, only_organic / only_robotic are only used for healing, not for damaging. For now at least. +/mob/living/carbon/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(!forced && amount < 0 && HAS_TRAIT(src,TRAIT_NONATURALHEAL)) return FALSE if(!forced && (status_flags & GODMODE)) @@ -71,10 +71,10 @@ if(amount > 0) take_overall_damage(amount, 0, 0, updating_health) else - heal_overall_damage(abs(amount), 0, 0, FALSE, TRUE, updating_health) + heal_overall_damage(abs(amount), 0, 0, only_robotic, only_organic, updating_health) return amount -/mob/living/carbon/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/carbon/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(!forced && amount < 0 && HAS_TRAIT(src,TRAIT_NONATURALHEAL)) //Vamps don't heal naturally. return FALSE if(!forced && (status_flags & GODMODE)) @@ -82,7 +82,7 @@ if(amount > 0) take_overall_damage(0, amount, 0, updating_health) else - heal_overall_damage(0, abs(amount), 0, FALSE, TRUE, updating_health) + heal_overall_damage(0, abs(amount), 0, only_robotic, only_organic, updating_health) return amount 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 a44177ced1..454625cf36 100644 --- a/code/modules/mob/living/carbon/human/species_types/arachnid.dm +++ b/code/modules/mob/living/carbon/human/species_types/arachnid.dm @@ -4,7 +4,7 @@ override_bp_icon = 'icons/mob/arachnid_parts.dmi' say_mod = "chitters" default_color = "00FF00" - species_traits = list(LIPS, NOEYES, NO_UNDERWEAR) + species_traits = list(LIPS, NOEYES, NO_UNDERWEAR, HAS_FLESH, HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list("arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain") attack_verb = "slash" 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 803d3ec245..dc2269e19b 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -94,7 +94,7 @@ name = "Xenobiological Slime Entity" id = SPECIES_SLIME default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,HAS_FLESH) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 @@ -404,7 +404,7 @@ id = SPECIES_SLIME_HYBRID limbs_id = SPECIES_SLIME default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,HAS_FLESH) inherent_traits = list(TRAIT_TOXINLOVER) mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None", "legs" = "Plantigrade") say_mod = "says" 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 e02d15303f..4d0f88754f 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,7 +4,7 @@ id = SPECIES_LIZARD say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE) + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,HORNCOLOR,WINGCOLOR,CAN_SCAR,HAS_FLESH,HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard @@ -48,7 +48,7 @@ name = "Ash Walker" id = SPECIES_ASHWALKER limbs_id = SPECIES_LIZARD - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE,CAN_SCAR,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_CHUNKYFINGERS) mutantlungs = /obj/item/organ/lungs/ashwalker mutanteyes = /obj/item/organ/eyes/night_vision diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 45a1870ae8..c25c5efb6c 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -68,7 +68,7 @@ /datum/species/pod/pseudo_weak name = "Anthromorphic Plant" id = SPECIES_POD_WEAK - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS,CAN_SCAR,HAS_FLESH,HAS_BONE) mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") limbs_id = SPECIES_POD light_nutrition_gain_factor = 3 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 f88ccc876f..9d5a700417 100644 --- a/code/modules/mob/living/carbon/human/species_types/xeno.dm +++ b/code/modules/mob/living/carbon/human/species_types/xeno.dm @@ -4,7 +4,7 @@ id = SPECIES_XENOHYBRID say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,CAN_SCAR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,CAN_SCAR,HAS_FLESH,HAS_BONE) mutant_bodyparts = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade","deco_wings"= "None") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 44701a26b2..e7426aa1fa 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -141,7 +141,8 @@ /mob/living/proc/getBruteLoss() return bruteloss -/mob/living/proc/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +//only_robotic and only_organic arg only relevant for carbons +/mob/living/proc/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(!forced && (status_flags & GODMODE)) return FALSE bruteloss = clamp((bruteloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) @@ -215,7 +216,8 @@ /mob/living/proc/getFireLoss() return fireloss -/mob/living/proc/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) +//only_robotic and only_organic arg only relevant for carbons +/mob/living/proc/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(!forced && (status_flags & GODMODE)) return FALSE fireloss = clamp((fireloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index c5fa5ece1f..c339aa920f 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -81,10 +81,10 @@ to_chat(src, "The impact degrades your holochassis!") return amount -/mob/living/silicon/pai/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/silicon/pai/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) return take_holo_damage(amount) -/mob/living/silicon/pai/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/silicon/pai/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) return take_holo_damage(amount) /mob/living/silicon/pai/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE, toxins_type = TOX_DEFAULT) diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm index 9a2921cc0e..f478458829 100644 --- a/code/modules/mob/living/simple_animal/damage_procs.dm +++ b/code/modules/mob/living/simple_animal/damage_procs.dm @@ -7,13 +7,13 @@ updatehealth() return amount -/mob/living/simple_animal/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/simple_animal/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(forced) . = adjustHealth(amount * CONFIG_GET(number/damage_multiplier), updating_health, forced) else if(damage_coeff[BRUTE]) . = adjustHealth(amount * damage_coeff[BRUTE] * CONFIG_GET(number/damage_multiplier), updating_health, forced) -/mob/living/simple_animal/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/simple_animal/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(forced) . = adjustHealth(amount * CONFIG_GET(number/damage_multiplier), updating_health, forced) else if(damage_coeff[BURN]) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 1f45e57718..ab59441572 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -225,7 +225,7 @@ . += "Power Level: [powerlevel]" -/mob/living/simple_animal/slime/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/simple_animal/slime/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) if(!forced) amount = -abs(amount) return ..() //Heals them diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index 8a7e125de3..002cf20801 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -153,7 +153,7 @@ computer.visible_message("\The [computer] prints out paper.") if(ticket_count >= 1) new /obj/item/stack/arcadeticket((get_turf(computer)), 1) - to_chat(usr, "[src] dispenses a ticket!") + to_chat(usr, "[computer] dispenses a ticket!") ticket_count -= 1 printer.stored_paper -= 1 else diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 1eed787a2a..cdfb275418 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -146,6 +146,8 @@ var/mob/living/L = target if(!(L.mobility_flags & MOBILITY_STAND)) return + if(iscyborg(target)) + return max(1, existing - 1) var/static/datum/config_entry/number/movedelay/sprint_max_tiles_increase/SMTI if(!SMTI) SMTI = CONFIG_GET_ENTRY(number/movedelay/sprint_max_tiles_increase) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index e64647028c..193b96e841 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1126,7 +1126,7 @@ if(istype(O, /obj/item/stack/medical/gauze)) var/obj/item/stack/medical/gauze/G = O reac_volume = min((reac_volume / 10), G.amount) - new/obj/item/stack/medical/gauze/adv(get_turf(G), reac_volume) + new /obj/item/stack/medical/gauze/adv(get_turf(G), reac_volume) G.use(reac_volume) diff --git a/code/modules/research/designs/machine_desings/machine_designs_sci.dm b/code/modules/research/designs/machine_desings/machine_designs_sci.dm index 59fae9d09b..28b1235a42 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_sci.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_sci.dm @@ -161,3 +161,11 @@ build_path = /obj/item/circuitboard/machine/circuit_imprinter category = list("Research Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/board/explosive_compressor + name = "Explosive Compressor (Machine Board)" + desc = "The circuit board for an explosive compressor, used to compress raw into finished anomaly cores." + id = "explosive_compressor" + build_path = /obj/item/circuitboard/machine/explosive_compressor + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 1fc61c9bed..9879171e71 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -308,7 +308,7 @@ materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) build_path = /obj/item/disk/medical/defib_heal construction_time = 10 - category = list("Misc") + category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/defib_shock @@ -319,7 +319,7 @@ materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) build_path = /obj/item/disk/medical/defib_shock construction_time = 10 - category = list("Misc") + category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/defib_decay @@ -330,7 +330,7 @@ materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 16000, /datum/material/silver = 6000, /datum/material/titanium = 2000) build_path = /obj/item/disk/medical/defib_decay construction_time = 10 - category = list("Misc") + category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/defib_speed @@ -341,7 +341,7 @@ build_path = /obj/item/disk/medical/defib_speed materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/gold = 26000, /datum/material/silver = 26000) construction_time = 10 - category = list("Misc") + category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/defibrillator_compact diff --git a/code/modules/research/techweb/nodes/engineering_nodes.dm b/code/modules/research/techweb/nodes/engineering_nodes.dm index f4dce58740..2b5d6f3cc1 100644 --- a/code/modules/research/techweb/nodes/engineering_nodes.dm +++ b/code/modules/research/techweb/nodes/engineering_nodes.dm @@ -26,7 +26,7 @@ display_name = "Anomaly Research" description = "Unlock the potential of the mysterious anomalies that appear on station." prereq_ids = list("adv_engi", "practical_bluespace") - design_ids = list("reactive_armour", "anomaly_neutralizer") + design_ids = list("reactive_armour", "anomaly_neutralizer", "explosive_compressor") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500) /datum/techweb_node/high_efficiency diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index cbfbbe2a36..9b19516f26 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -884,6 +884,7 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/oil/tick() if(owner.stat == DEAD) explosion(get_turf(owner),1,2,4,flame_range = 5) + owner.remove_status_effect(/datum/status_effect/stabilized/oil) return ..() /datum/status_effect/stabilized/black diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index e87382cd6a..5e2fc3d7e4 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -136,10 +136,13 @@ return if(ishuman(AM)) var/mob/living/carbon/human/H = AM - if(user.real_name != H.dna.real_name) - user.real_name = H.dna.real_name - H.dna.transfer_identity(user, transfer_SE=1) - user.updateappearance(mutcolor_update=1) - user.domutcheck() - user.visible_message("[user]'s appearance shifts into [H]'s!", \ - "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") + if(!(NOTRANSSTING in H.dna.species.species_traits)) + if(user.real_name != H.dna.real_name) + user.real_name = H.dna.real_name + H.dna.transfer_identity(user, transfer_SE=1) + user.updateappearance(mutcolor_update=1) + user.domutcheck() + user.visible_message("[user]'s appearance shifts into [H]'s!", \ + "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") + else + to_chat(user, "You are unable to transform into [H]!") diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 059a5aaa34..c65f5f11f6 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -31,6 +31,12 @@ target_mobtypes = list(/mob/living/carbon/human) possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) requires_real_bodypart = TRUE + +//The augmentation surgery for synthetic limbs +/datum/surgery/augmentation/synth + requires_bodypart_type = BODYPART_HYBRID + steps = list(/datum/surgery_step/mechanic_open, /datum/surgery_step/pry_off_plating, /datum/surgery_step/cut_wires, /datum/surgery_step/prepare_electronics, /datum/surgery_step/replace_limb) + //SURGERY STEP SUCCESSES /datum/surgery_step/replace_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/bodypart/tool, datum/surgery/surgery) if(L) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 25b7e8fa48..6b3d47b587 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -114,7 +114,7 @@ obj/item/organ/heart/slime var/last_pump = 0 var/add_colour = TRUE //So we're not constantly recreating colour datums var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal) - var/blood_loss = 100 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?) + var/blood_loss = 50 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?) //How much to heal per pump, negative numbers would HURT the player var/heal_brute = 0 @@ -123,7 +123,11 @@ obj/item/organ/heart/slime /obj/item/organ/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target) + if(H == user && istype(H)) + if(NOBLOOD in H.dna.species.species_traits) + to_chat(user, "[src] refuses to become one with [H]") + return playsound(user,'sound/effects/singlebeat.ogg',40,1) user.temporarilyRemoveItemFromInventory(src, TRUE) Insert(user) @@ -137,6 +141,8 @@ obj/item/organ/heart/slime if(world.time > (last_pump + pump_delay)) if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects. var/mob/living/carbon/human/H = owner + if(NOBLOOD in H.dna.species.species_traits) //Otherwise people without will be eternally stuck red + return if(H.dna && !(NOBLOOD in H.dna.species.species_traits)) H.blood_volume = max(H.blood_volume - blood_loss, 0) to_chat(H, "You have to keep pumping your blood!") @@ -156,6 +162,8 @@ obj/item/organ/heart/slime return ..() /datum/action/item_action/organ_action/cursed_heart + check_flags = AB_CHECK_ALIVE //We wanna be able to do this always, else thisll just stupidly kill whoever has it + required_mobility_flags = NONE name = "Pump your blood" //You are now brea- pumping blood manually @@ -175,7 +183,8 @@ obj/item/organ/heart/slime var/mob/living/carbon/human/H = owner if(istype(H)) if(H.dna && !(NOBLOOD in H.dna.species.species_traits)) - H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_MAXIMUM) + if(H.blood_volume < BLOOD_VOLUME_NORMAL) //We don't need to go too high, otherwise we get annoying messages. + H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss * 0.5, BLOOD_VOLUME_MAXIMUM) H.remove_client_colour(/datum/client_colour/cursed_heart_blood) cursed_heart.add_colour = TRUE H.adjustBruteLoss(-cursed_heart.heal_brute) @@ -184,7 +193,7 @@ obj/item/organ/heart/slime /datum/client_colour/cursed_heart_blood - priority = 100 //it's an indicator you're dieing, so it's very high priority + priority = 100 //it's an indicator you're dying, so it's very high priority colour = "red" /obj/item/organ/heart/cybernetic diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 655ca21b93..0b75dbf4db 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -139,6 +139,7 @@ /obj/vehicle/sealed/car/clowncar/twitch_plays key_type = null + explode_on_death = FALSE /obj/vehicle/sealed/car/clowncar/twitch_plays/Initialize() . = ..() diff --git a/code/modules/vehicles/sealed.dm b/code/modules/vehicles/sealed.dm index 28f6b1cca8..63c7c9f858 100644 --- a/code/modules/vehicles/sealed.dm +++ b/code/modules/vehicles/sealed.dm @@ -1,6 +1,7 @@ /obj/vehicle/sealed enclosed = TRUE // you're in a sealed vehicle dont get dinked idiot var/enter_delay = 20 + var/explode_on_death = TRUE flags_1 = BLOCK_FACE_ATOM_1 /obj/vehicle/sealed/generate_actions() @@ -87,7 +88,8 @@ /obj/vehicle/sealed/Destroy() DumpMobs() - explosion(loc, 0, 1, 2, 3, 0) + if(explode_on_death) + explosion(loc, 0, 1, 2, 3, 0) return ..() /obj/vehicle/sealed/proc/DumpMobs(randomstep = TRUE) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 0b47c7218f..482cdb7d86 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -17,8 +17,8 @@ product_ads = "Beat perps in style!;It's red so you can't see the blood!;You have the right to be fashionable!;Now you can be the fashion police you always wanted to be!" vend_reply = "Thank you for using the SecDrobe!" products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 2, - /obj/item/storage/backpack/security = 2, - /obj/item/storage/backpack/satchel/sec = 2, + /obj/item/storage/backpack/security = 3, + /obj/item/storage/backpack/satchel/sec = 3, /obj/item/storage/backpack/duffelbag/sec = 3, /obj/item/clothing/under/rank/security/officer = 5, /obj/item/clothing/shoes/jackboots = 5, @@ -88,9 +88,9 @@ vend_reply = "Thank you for using the MediDrobe!" products = list(/obj/item/clothing/accessory/pocketprotector = 5, /obj/item/clothing/head/beret/med = 5, - /obj/item/storage/backpack/duffelbag/med = 5, /obj/item/storage/backpack/medic = 5, /obj/item/storage/backpack/satchel/med = 5, + /obj/item/storage/backpack/duffelbag/med = 5, /obj/item/clothing/suit/hooded/wintercoat/medical = 5, /obj/item/clothing/suit/hooded/wintercoat/paramedic = 2, /obj/item/clothing/under/rank/medical/doctor/nurse = 5, @@ -131,9 +131,9 @@ vend_reply = "Thank you for using the EngiDrobe!" products = list(/obj/item/clothing/accessory/pocketprotector = 5, /obj/item/clothing/head/beret/eng = 3, - /obj/item/storage/backpack/duffelbag/engineering = 3, /obj/item/storage/backpack/industrial = 3, /obj/item/storage/backpack/satchel/eng = 3, + /obj/item/storage/backpack/duffelbag/engineering = 3, /obj/item/clothing/suit/hooded/wintercoat/engineering = 3, /obj/item/clothing/under/rank/engineering/engineer = 5, /obj/item/clothing/under/rank/engineering/engineer/skirt = 5, @@ -162,9 +162,9 @@ vend_reply = "Thank you for using the AtmosDrobe!" products = list(/obj/item/clothing/accessory/pocketprotector = 3, /obj/item/clothing/head/beret/atmos = 3, - /obj/item/storage/backpack/duffelbag/engineering = 3, - /obj/item/storage/backpack/satchel/eng = 3, /obj/item/storage/backpack/industrial = 3, + /obj/item/storage/backpack/satchel/eng = 3, + /obj/item/storage/backpack/duffelbag/engineering = 3, /obj/item/clothing/head/hardhat/weldhat/dblue = 3, /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 3, /obj/item/clothing/under/rank/engineering/atmospheric_technician = 5, @@ -238,6 +238,7 @@ /obj/item/clothing/head/beret/sci = 3, /obj/item/storage/backpack/science = 3, /obj/item/storage/backpack/satchel/tox = 3, + /obj/item/storage/backpack/duffelbag = 3, /obj/item/clothing/suit/hooded/wintercoat/science = 3, /obj/item/clothing/under/rank/rnd/scientist = 4, /obj/item/clothing/under/rank/rnd/scientist/util = 4, @@ -261,7 +262,9 @@ product_ads = "Do you love soil? Then buy our clothes!;Get outfits to match your green thumb here!" vend_reply = "Thank you for using the Hydrobe!" products = list(/obj/item/storage/backpack/botany = 3, + /obj/item/storage/backpack = 3, /obj/item/storage/backpack/satchel/hyd = 3, + /obj/item/storage/backpack/duffelbag = 3, /obj/item/clothing/suit/hooded/wintercoat/hydro = 2, /obj/item/clothing/suit/apron = 3, /obj/item/clothing/suit/apron/overalls = 5, @@ -468,7 +471,7 @@ /obj/item/storage/backpack/chemistry = 3, /obj/item/storage/backpack/satchel/chem = 3, /obj/item/storage/bag/chemistry = 3, - /obj/item/fermichem/pHbooklet = 3)//pH indicator) + /obj/item/fermichem/pHbooklet = 3) refill_canister = /obj/item/vending_refill/wardrobe/chem_wardrobe payment_department = ACCOUNT_MED cost_multiplier_per_dept = list(ACCOUNT_MED = 0) diff --git a/html/changelogs/AutoChangeLog-pr-13993.yml b/html/changelogs/AutoChangeLog-pr-13993.yml new file mode 100644 index 0000000000..d99ed0e0d1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13993.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - tweak: "The cursed heart now only takes away half as much blood every loop, and can be used as long as you are alive, instead if only you are awake/able to use your hands" diff --git a/html/changelogs/AutoChangeLog-pr-14014.yml b/html/changelogs/AutoChangeLog-pr-14014.yml new file mode 100644 index 0000000000..ac29b1567b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14014.yml @@ -0,0 +1,4 @@ +author: "necromanceranne" +delete-after: True +changes: + - bugfix: "Fixes various sprites for bokken, as well as being unable to craft certain parts and duplicate entries." diff --git a/html/changelogs/AutoChangeLog-pr-14015.yml b/html/changelogs/AutoChangeLog-pr-14015.yml new file mode 100644 index 0000000000..fe507d0a1e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14015.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "Some synth damage stuff has been a bit rebalanced, see the PR for details." diff --git a/html/changelogs/AutoChangeLog-pr-14019.yml b/html/changelogs/AutoChangeLog-pr-14019.yml new file mode 100644 index 0000000000..37bdd52948 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14019.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "species with NOTRANSSTING cannot have envy's knife used on them" diff --git a/html/changelogs/AutoChangeLog-pr-14026.yml b/html/changelogs/AutoChangeLog-pr-14026.yml new file mode 100644 index 0000000000..1ae9cb5c28 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14026.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - bugfix: "Fixes noodle size appearance for 12+ inch members." diff --git a/html/changelogs/AutoChangeLog-pr-14033.yml b/html/changelogs/AutoChangeLog-pr-14033.yml new file mode 100644 index 0000000000..db6a6b0691 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14033.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - rscadd: "Color Mates have been added to all stations (except Snaxi). Enjoy coloring your attire without having to bug science!" diff --git a/html/changelogs/AutoChangeLog-pr-14036.yml b/html/changelogs/AutoChangeLog-pr-14036.yml new file mode 100644 index 0000000000..a2bb654233 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14036.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - tweak: "You will now only unbuckle fireman-carried/piggybacked people on disarm or harm intent." diff --git a/html/changelogs/AutoChangeLog-pr-14038.yml b/html/changelogs/AutoChangeLog-pr-14038.yml new file mode 100644 index 0000000000..906f6f7053 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14038.yml @@ -0,0 +1,9 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "The nature interaction shuttle with the monkeys now has tiny fans on the airlocks in, because that's apparently a feature that was missing." + - rscadd: "More bags have been added to department vendors." + - balance: "Every roundstart species (and also ash walkers) now has flesh and bone that can be wounded." + - balance: "Recipes for sutures, regen mesh, and sterilized gauze have been adjusted to be easier, mostly." + - balance: "Sterilized gauze is better at absorbing blood and being a splint." + - bugfix: "Energy sabres now have an off inhand." diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index caa901a9fd..2afd1b510b 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index c1404cb044..adcd7b64e1 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index ed34177c7b..e4f22de1cd 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 9f59dbed06..8716c3627f 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/obj/smith.dmi b/icons/obj/smith.dmi index dcf4a77131..cbd6b9e85e 100644 Binary files a/icons/obj/smith.dmi and b/icons/obj/smith.dmi differ diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 0e971d4ced..8f48e90068 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -32,82 +32,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/status_effect/chem/breast_enlarger - id = "breast_enlarger" - alert_type = null - var/moveCalc = 1 - var/cachedmoveCalc = 1 - var/last_checked_size //used to prevent potential cpu waste from happening every tick. - -/datum/status_effect/chem/breast_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now. - log_reagent("FERMICHEM: [owner]'s breasts has reached comical sizes. ID: [owner.key]") - return ..() - -/datum/status_effect/chem/breast_enlarger/tick()//If you try to wear clothes, you fail. Slows you down if you're comically huge - var/mob/living/carbon/human/H = owner - var/obj/item/organ/genital/breasts/B = H.getorganslot(ORGAN_SLOT_BREASTS) - if(!B) - H.remove_status_effect(src) - return - moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click. - - if(last_checked_size != B.cached_size) - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/breast_hypertrophy, multiplicative_slowdown = moveCalc) - - if (B.size == "huge") - if(prob(1)) - to_chat(owner, "Your back is feeling sore.") - var/target = H.get_bodypart(BODY_ZONE_CHEST) - H.apply_damage(0.1, BRUTE, target) - else - if(prob(1)) - to_chat(H, "Your back is feeling a little sore.") - last_checked_size = B.cached_size - ..() - -/datum/status_effect/chem/breast_enlarger/on_remove() - log_reagent("FERMICHEM: [owner]'s breasts has reduced to an acceptable size. ID: [owner.key]") - to_chat(owner, "Your expansive chest has become a more managable size, liberating your movements.") - owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/breast_hypertrophy) - return ..() - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/datum/status_effect/chem/penis_enlarger - id = "penis_enlarger" - alert_type = null - var/bloodCalc - var/moveCalc - var/last_checked_size //used to prevent potential cpu waste, just like the above. - -/datum/status_effect/chem/penis_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now. - log_reagent("FERMICHEM: [owner]'s dick has reached comical sizes. ID: [owner.key]") - return ..() - - -/datum/status_effect/chem/penis_enlarger/tick() - var/mob/living/carbon/human/H = owner - var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - if(!P) - owner.remove_status_effect(src) - return - moveCalc = 1+((round(P.length) - 21)/3) //effects how fast you can move - bloodCalc = 1+((round(P.length) - 21)/15) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.) - if(P.length < 22 && H.has_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy)) - to_chat(owner, "Your rascally willy has become a more managable size, liberating your movements.") - H.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy) - else if(P.length >= 22 && !H.has_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy)) - to_chat(H, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!") - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy, multiplicative_slowdown = moveCalc) - H.AdjustBloodVol(bloodCalc) - ..() - -/datum/status_effect/chem/penis_enlarger/on_remove() - log_reagent("FERMICHEM: [owner]'s dick has reduced to an acceptable size. ID: [owner.key]") - owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy) - owner.ResetBloodVol() - return ..() - /////////////////////////////////////////////// // Astral INSURANCE ///////////////////////////////////////////////