From 4760629f7ebe68b9de26da8972dc140938a345e2 Mon Sep 17 00:00:00 2001 From: ceikry Date: Mon, 5 Jul 2021 19:14:42 -0500 Subject: [PATCH] Ensure damage can never exceed victim's remaining HP --- .../game/node/entity/combat/handlers/MagicSwingHandler.kt | 2 ++ .../game/node/entity/combat/handlers/MeleeSwingHandler.kt | 4 ++++ .../game/node/entity/combat/handlers/RangeSwingHandler.kt | 2 ++ 3 files changed, 8 insertions(+) diff --git a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MagicSwingHandler.kt b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MagicSwingHandler.kt index 99862dc15..84455411b 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MagicSwingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MagicSwingHandler.kt @@ -86,6 +86,8 @@ open class MagicSwingHandler if (spell!!.type === SpellType.BLITZ) { ticks++ } + if(state.estimatedHit > victim.skills.lifepoints) state.estimatedHit = victim.skills.lifepoints + if(state.estimatedHit + state.secondaryHit > victim.skills.lifepoints) state.secondaryHit -= ((state.estimatedHit + state.secondaryHit) - victim.skills.lifepoints) addExperience(entity, victim, state) return ticks } diff --git a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MeleeSwingHandler.kt b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MeleeSwingHandler.kt index ec435e6c6..6128d4b84 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MeleeSwingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/MeleeSwingHandler.kt @@ -75,6 +75,10 @@ open class MeleeSwingHandler hit = RandomFunction.random(max) } state.estimatedHit = hit + if(victim != null) { + if (state.estimatedHit > victim.skills.lifepoints) state.estimatedHit = victim.skills.lifepoints + if (state.estimatedHit + state.secondaryHit > victim.skills.lifepoints) state.secondaryHit -= ((state.estimatedHit + state.secondaryHit) - victim.skills.lifepoints) + } addExperience(entity, victim, state) return 1 } diff --git a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt index 5382702b1..777833444 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt @@ -93,6 +93,8 @@ open class RangeSwingHandler if (entity == null || victim!!.location == null) { return -1 } + if(state.estimatedHit > victim.skills.lifepoints) state.estimatedHit = victim.skills.lifepoints + if(state.estimatedHit + state.secondaryHit > victim.skills.lifepoints) state.secondaryHit -= ((state.estimatedHit + state.secondaryHit) - victim.skills.lifepoints) useAmmo(entity, state, victim.location) addExperience(entity, victim, state) return 1 + ceil(entity.location.getDistance(victim.location) * 0.3).toInt()