diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 11683f18920..cec02dc6d35 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -189,7 +189,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NOBREATH "no_breath" /// Mob doesn't take oxygen damage in deep water #define TRAIT_NODROWN "amphibious" -/// Mob doesn't take stamina damage from deep water +/// Mob doesn't take stamina damage from deep water and doesn't get slowdown from swimming #define TRAIT_SWIMMER "swimmer" /// Mob is currently disguised as something else (like a morph being another mob or an object). Holds a reference to the thing that applied the trait. #define TRAIT_DISGUISED "disguised" diff --git a/code/datums/elements/swimming_tile.dm b/code/datums/elements/swimming_tile.dm index 153a4c35603..ebe85db7020 100644 --- a/code/datums/elements/swimming_tile.dm +++ b/code/datums/elements/swimming_tile.dm @@ -70,9 +70,12 @@ . = ..() stamina_per_second = ticking_stamina_cost oxygen_per_second = ticking_oxy_damage + if (!HAS_TRAIT(owner, TRAIT_SWIMMER)) + owner.add_movespeed_modifier(/datum/movespeed_modifier/swimming_deep) RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_IMMERSED), PROC_REF(stop_swimming)) /datum/status_effect/swimming/on_remove() + owner.remove_movespeed_modifier(/datum/movespeed_modifier/swimming_deep) UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_IMMERSED)) /datum/status_effect/swimming/tick(seconds_between_ticks) diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm index 31c49ea17e5..d1c9f83c676 100644 --- a/code/game/turfs/open/water.dm +++ b/code/game/turfs/open/water.dm @@ -79,7 +79,6 @@ desc = "Less shallow water." icon_state = "deep_riverwater_motion" immerse_overlay = "immerse_deep" - slowdown = 8 baseturfs = /turf/open/water/no_planet_atmos/deep /turf/open/water/no_planet_atmos/deep/make_immersed() @@ -107,7 +106,6 @@ /turf/open/water/deep_beach name = "deep water" desc = "Don't forget your life jacket." - slowdown = 8 immerse_overlay = "immerse_deep" icon = 'icons/turf/beach.dmi' icon_state = "deepwater" diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 483a14ca895..fe1ad2027e1 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -179,10 +179,15 @@ /datum/movespeed_modifier/magic_ties multiplicative_slowdown = 0.5 -///speed bonus given by the fish tail organ when inside water. +///Speed bonus given by the fish tail organ when inside water. /datum/movespeed_modifier/fish_on_water blacklisted_movetypes = MOVETYPES_NOT_TOUCHING_GROUND multiplicative_slowdown = - /turf/open/water::slowdown +///Slowdown for swimming on deep water tiles +/datum/movespeed_modifier/swimming_deep + blacklisted_movetypes = MOVETYPES_NOT_TOUCHING_GROUND + multiplicative_slowdown = 7 + /datum/movespeed_modifier/tail_dragger multiplicative_slowdown = 4