forked from 2009Scape/Server
Fixed attack range when attacking large creatures from certain angles
When attacking a 2x2 or larger creature from the SW, attack range would be reduced. Most noticeable on halberds. Fixed by checking the closest tile when attacking from a distance.
This commit is contained in:
parent
fb0dd3a27d
commit
61f5120cfc
3 changed files with 5 additions and 5 deletions
|
|
@ -25,9 +25,9 @@ open class MagicSwingHandler (vararg flags: SwingHandlerFlag)
|
|||
}
|
||||
var distance = 10
|
||||
var type = InteractionType.STILL_INTERACT
|
||||
var goodRange = victim.centerLocation.withinDistance(entity.centerLocation, getCombatDistance(entity, victim, distance))
|
||||
var goodRange = victim.getClosestOccupiedTile(entity.location).withinDistance(entity.centerLocation, getCombatDistance(entity, victim, distance))
|
||||
if (victim.walkingQueue.isMoving && !goodRange) {
|
||||
goodRange = victim.centerLocation.withinDistance(entity.centerLocation, getCombatDistance(entity, victim, ++distance))
|
||||
goodRange = victim.getClosestOccupiedTile(entity.location).withinDistance(entity.centerLocation, getCombatDistance(entity, victim, ++distance))
|
||||
type = InteractionType.MOVE_INTERACT
|
||||
}
|
||||
if (goodRange && isAttackable(entity, victim) != InteractionType.NO_INTERACT) {
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ open class MeleeSwingHandler (vararg flags: SwingHandlerFlag)
|
|||
}
|
||||
return victim.getSwingHandler(false).type == CombatStyle.MELEE && e.withinDistance(victim.location, 1) && victim.properties.combatPulse.getVictim() === entity && entity.index < victim.index
|
||||
}
|
||||
return entity.centerLocation.withinDistance(victim.centerLocation, distance + (size shr 1) + (victim.size() shr 1))
|
||||
return entity.centerLocation.withinDistance(victim.getClosestOccupiedTile(entity.location), distance + (size shr 1) + (victim.size() shr 1))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,10 +53,10 @@ open class RangeSwingHandler (vararg flags: SwingHandlerFlag) : CombatSwingHandl
|
|||
distance = 10
|
||||
}
|
||||
}
|
||||
var goodRange = victim.centerLocation.withinDistance(entity.centerLocation, getCombatDistance(entity, victim, distance))
|
||||
var goodRange = victim.getClosestOccupiedTile(entity.location).withinDistance(entity.centerLocation, getCombatDistance(entity, victim, distance))
|
||||
var type = InteractionType.STILL_INTERACT
|
||||
if (victim.walkingQueue.isMoving && !goodRange) {
|
||||
goodRange = victim.centerLocation.withinDistance(entity.centerLocation, getCombatDistance(entity, victim, ++distance))
|
||||
goodRange = victim.getClosestOccupiedTile(entity.location).withinDistance(entity.centerLocation, getCombatDistance(entity, victim, ++distance))
|
||||
type = InteractionType.MOVE_INTERACT
|
||||
}
|
||||
if (goodRange && super.canSwing(entity, victim) != InteractionType.NO_INTERACT) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue