From dcbccdee84ae7302abdd7a0ca4b97489516a914b Mon Sep 17 00:00:00 2001 From: PotatoTomahto Date: Tue, 4 Feb 2025 12:10:48 -0800 Subject: [PATCH] leech movement --- code/game/turfs/open/water.dm | 42 +++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm index ffecada5ce..e225adea40 100644 --- a/code/game/turfs/open/water.dm +++ b/code/game/turfs/open/water.dm @@ -481,7 +481,13 @@ /turf/open/water/sewer/Entered(atom/movable/AM, atom/oldLoc) . = ..() if(isliving(AM) && !AM.throwing) - if(!prob(3)) + var/mob/living/living = AM + var/chance = 3 + if(living.m_intent == MOVE_INTENT_RUN) + chance *= 2 + else if(living.m_intent == MOVE_INTENT_SNEAK) + chance /= 2 + if(!prob(chance)) return if(iscarbon(AM)) var/mob/living/carbon/C = AM @@ -489,9 +495,9 @@ // return if(C.blood_volume <= 0) return - var/zonee = list(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG) - for(var/X in zonee) - var/obj/item/bodypart/BP = C.get_bodypart(X) + var/list/zonee = list(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG) + for(var/i = 1, i <= zonee.len, i++) + var/obj/item/bodypart/BP = C.get_bodypart(pick_n_take(zonee)) if(!BP) continue if(BP.skeletonized) @@ -525,7 +531,13 @@ /turf/open/water/swamp/Entered(atom/movable/AM, atom/oldLoc) . = ..() if(isliving(AM) && !AM.throwing) - if(!prob(3)) + var/mob/living/living = AM + var/chance = 3 + if(living.m_intent == MOVE_INTENT_RUN) + chance *= 2 + else if(living.m_intent == MOVE_INTENT_SNEAK) + chance /= 2 + if(!prob(chance)) return if(iscarbon(AM)) var/mob/living/carbon/C = AM @@ -533,9 +545,9 @@ // return if(C.blood_volume <= 0) return - var/zonee = list(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG) - for(var/X in zonee) - var/obj/item/bodypart/BP = C.get_bodypart(X) + var/list/zonee = list(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG) + for(var/i = 1, i <= zonee.len, i++) + var/obj/item/bodypart/BP = C.get_bodypart(pick_n_take(zonee)) if(!BP) continue if(BP.skeletonized) @@ -555,7 +567,13 @@ /turf/open/water/swamp/deep/Entered(atom/movable/AM, atom/oldLoc) . = ..() if(isliving(AM) && !AM.throwing) - if(!prob(8)) + var/mob/living/living = AM + var/chance = 8 + if(living.m_intent == MOVE_INTENT_RUN) + chance *= 2 + else if(living.m_intent == MOVE_INTENT_SNEAK) + chance /= 2 + if(!prob(chance)) return if(iscarbon(AM)) var/mob/living/carbon/C = AM @@ -563,9 +581,9 @@ // return if(C.blood_volume <= 0) return - var/zonee = list(BODY_ZONE_CHEST,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_R_ARM,BODY_ZONE_L_ARM) - for(var/X in zonee) - var/obj/item/bodypart/BP = C.get_bodypart(X) + var/list/zonee = list(BODY_ZONE_CHEST,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_R_ARM,BODY_ZONE_L_ARM) + for(var/i = 1, i <= zonee.len, i++) + var/obj/item/bodypart/BP = C.get_bodypart(pick_n_take(zonee)) if(!BP) continue if(BP.skeletonized)