fix(ama): isolate guided arrow maxTurn clamp and align magic arrow weaponless damage (#459)
This commit is contained in:
parent
88c57f7ed6
commit
52b0bbaf2b
|
|
@ -1143,14 +1143,18 @@ export class MissileEngine {
|
||||||
if (closestTarget) {
|
if (closestTarget) {
|
||||||
const speed = m.record.vel ? m.record.vel : 12
|
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)
|
const targetAngle = Math.atan2((closestTarget.y - m.y) / ISO_GROUND_ASPECT_RATIO, closestTarget.x - m.x)
|
||||||
let diff = targetAngle - m.angleRad
|
if (m.name.toLowerCase() === 'guidedarrow' || m.sourceSkillId === 22) {
|
||||||
while (diff < -Math.PI) diff += Math.PI * 2
|
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
|
while (diff > Math.PI) diff -= Math.PI * 2
|
||||||
if (Math.abs(diff) <= maxTurn) {
|
const maxTurn = 0.45
|
||||||
m.angleRad = targetAngle
|
if (Math.abs(diff) <= maxTurn) {
|
||||||
|
m.angleRad = targetAngle
|
||||||
|
} else {
|
||||||
|
m.angleRad += Math.sign(diff) * maxTurn
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
m.angleRad += Math.sign(diff) * maxTurn
|
m.angleRad = targetAngle
|
||||||
}
|
}
|
||||||
m.vx = Math.cos(m.angleRad) * speed
|
m.vx = Math.cos(m.angleRad) * speed
|
||||||
m.vy = Math.sin(m.angleRad) * speed * ISO_GROUND_ASPECT_RATIO
|
m.vy = Math.sin(m.angleRad) * speed * ISO_GROUND_ASPECT_RATIO
|
||||||
|
|
|
||||||
|
|
@ -5844,9 +5844,12 @@ export function calculateSkillDamage(
|
||||||
weaponDamage?: { min: number; max: number }
|
weaponDamage?: { min: number; max: number }
|
||||||
): { min: number; max: number } {
|
): { min: number; max: number } {
|
||||||
if (skillId === 6 || skillId === '6' || skillId === 'magicarrow' || skillId === 'magic arrow') {
|
if (skillId === 6 || skillId === '6' || skillId === 'magicarrow' || skillId === 'magic arrow') {
|
||||||
|
if (!weaponDamage) {
|
||||||
|
return { min: 0, max: 0 }
|
||||||
|
}
|
||||||
const stats = calculateMagicArrowStats(slvl)
|
const stats = calculateMagicArrowStats(slvl)
|
||||||
const baseMin = weaponDamage?.min ?? 0
|
const baseMin = weaponDamage.min ?? 0
|
||||||
const baseMax = weaponDamage?.max ?? 0
|
const baseMax = weaponDamage.max ?? 0
|
||||||
return { min: baseMin + stats.flatMagicDamage, max: baseMax + stats.flatMagicDamage }
|
return { min: baseMin + stats.flatMagicDamage, max: baseMax + stats.flatMagicDamage }
|
||||||
}
|
}
|
||||||
if (skillId === 7 || skillId === '7' || skillId === 'firearrow' || skillId === 'fire arrow') {
|
if (skillId === 7 || skillId === '7' || skillId === 'firearrow' || skillId === 'fire arrow') {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue