From afa419e77ae24613a52af09eb9c380f428c1a1a7 Mon Sep 17 00:00:00 2001 From: Thayol Date: Thu, 23 Jan 2025 00:04:13 +0900 Subject: [PATCH] add acceleration to shield throw --- src/ability.js | 22 ++++++++++++++++++++-- src/template.js | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/ability.js b/src/ability.js index 491365e..588f4f6 100644 --- a/src/ability.js +++ b/src/ability.js @@ -217,18 +217,34 @@ export default class Ability { name: 'Shield Throw', castTime: 0.25, cooldown: 5, + deceleratePerTick: 90, radius: 110, range: 1025, speed: 2400, effect: function shieldThrowEffect(caster, cursor) { const ability = this + + const accelerateLogic = function accelerateLogic() { + const projectile = this + projectile.speed += ability.deceleratePerTick + } + + const decelerateLogic = function decelerateLogic() { + const projectile = this + if (projectile.speed - ability.deceleratePerTick >= ability.deceleratePerTick) { + projectile.speed = projectile.speed - ability.deceleratePerTick + } + } + const shieldThrowReturn = function shieldThrowReturn(projectile, homingTarget) { const returnProjectile = new Projectile({ + homingTarget: caster, + logic: accelerateLogic, owner: caster.id, position: projectile.position.clone(), radius: ability.radius, - speed: ability.speed, - homingTarget: caster, + speed: ability.deceleratePerTick, + visionRange: ability.radius, }) caster.game?.spawnProjectile(returnProjectile) @@ -236,10 +252,12 @@ export default class Ability { const projectile = new Projectile({ after: shieldThrowReturn, + logic: decelerateLogic, owner: caster.id, position: caster.position.clone(), radius: ability.radius, speed: ability.speed, + visionRange: ability.radius, }) projectile.destination = caster.position.clone().add(cursor.clone().sub(caster.position).normalize().multiplyScalar(ability.range + caster.radius)) diff --git a/src/template.js b/src/template.js index 69abb56..7f454ba 100644 --- a/src/template.js +++ b/src/template.js @@ -40,6 +40,7 @@ export default class Template { q: Ability.straightShot.id, w: Ability.expose.id, e: Ability.control.id, + r: Ability.shieldThrow.id, d: Ability.circleOfResurrection.id, f: Ability.blink.id, },