Ensure damage can never exceed victim's remaining HP

This commit is contained in:
ceikry 2021-07-05 19:14:42 -05:00
parent 5f62f5848a
commit 820ca5aba5
3 changed files with 8 additions and 0 deletions

View file

@ -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
}

View file

@ -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
}

View file

@ -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()