fix(ama): isolate guided arrow maxTurn clamp and align magic arrow weaponless damage (#459)

This commit is contained in:
troytt 2026-09-24 19:19:25 +00:00
parent 88c57f7ed6
commit 52b0bbaf2b
2 changed files with 16 additions and 9 deletions

View File

@ -1143,14 +1143,18 @@ export class MissileEngine {
if (closestTarget) {
const speed = m.record.vel ? m.record.vel : 12
const targetAngle = Math.atan2((closestTarget.y - m.y) / ISO_GROUND_ASPECT_RATIO, closestTarget.x - m.x)
let diff = targetAngle - m.angleRad
while (diff < -Math.PI) diff += Math.PI * 2
while (diff > Math.PI) diff -= Math.PI * 2
const maxTurn = 0.45
if (Math.abs(diff) <= maxTurn) {
m.angleRad = targetAngle
if (m.name.toLowerCase() === 'guidedarrow' || m.sourceSkillId === 22) {
let diff = targetAngle - m.angleRad
while (diff < -Math.PI) diff += Math.PI * 2
while (diff > Math.PI) diff -= Math.PI * 2
const maxTurn = 0.45
if (Math.abs(diff) <= maxTurn) {
m.angleRad = targetAngle
} else {
m.angleRad += Math.sign(diff) * maxTurn
}
} else {
m.angleRad += Math.sign(diff) * maxTurn
m.angleRad = targetAngle
}
m.vx = Math.cos(m.angleRad) * speed
m.vy = Math.sin(m.angleRad) * speed * ISO_GROUND_ASPECT_RATIO

View File

@ -5844,9 +5844,12 @@ export function calculateSkillDamage(
weaponDamage?: { min: number; max: number }
): { min: number; max: number } {
if (skillId === 6 || skillId === '6' || skillId === 'magicarrow' || skillId === 'magic arrow') {
if (!weaponDamage) {
return { min: 0, max: 0 }
}
const stats = calculateMagicArrowStats(slvl)
const baseMin = weaponDamage?.min ?? 0
const baseMax = weaponDamage?.max ?? 0
const baseMin = weaponDamage.min ?? 0
const baseMax = weaponDamage.max ?? 0
return { min: baseMin + stats.flatMagicDamage, max: baseMax + stats.flatMagicDamage }
}
if (skillId === 7 || skillId === '7' || skillId === 'firearrow' || skillId === 'fire arrow') {