20 "KalphiteQueen-RangedStrategy-$anim-$proj", 31, null,
21 Animation(anim), null, null,
22 Projectile(proj, 30, 60, 25, 0, 16, 128)
26 private val attackAnimation = Animation(anim)
28 override fun getAttackAnimation(attacker: Npc, defender: Mob): Animation = attackAnimation
30 override fun start(attacker: Npc, defender: Mob, hits: Array<out Hit>) {
31 super.start(attacker, defender, hits)
32 sendAttack(attacker, defender, hits, true)
35 override fun sendProjectile(from: Mob, to: Mob, onProjectileLand: Runnable?) = 0
37 private fun sendAttack(attacker: Npc, target: Mob, hits: Array<out Hit>, first: Boolean) {
38 super.sendProjectile(attacker, target) {
39 if (!first) target.damage(*hits)
40 if (target is Player && hits.any { it.isAccurate }) {
41 target.skills.get(Skill.PRAYER).modifyLevel { it - 1 }
42 target.skills.refresh(Skill.PRAYER)
45 RegionManager.forNearbyPlayer(target, 1) {
46 if (target != it && canAttack(attacker, it)) {
47 sendAttack(attacker, it, hits, false)
53 override fun isAlwaysAccurate() = true
55 override fun getHits(attacker: Npc?, defender: Mob?): Array<CombatHit> {
56 val hit = nextRangedHit(attacker, defender, 31, combatProjectile)
62 val phase1 = KalphiteQueenRangedStrategy(6240, 288)
63 val phase2 = KalphiteQueenRangedStrategy(6234, 289)