diff --git a/client/src/animations.utils.jsx b/client/src/animations.utils.jsx index 95389eeb..2e525c86 100644 --- a/client/src/animations.utils.jsx +++ b/client/src/animations.utils.jsx @@ -1,4 +1,5 @@ const { TIMES } = require('./constants'); +const { removeTier } = require('./utils'); function none() { return { @@ -200,14 +201,20 @@ function getText(resolution, sequence) { }; } +function isCbAnim(skill) { + return ['Attack', 'Blast', 'Siphon', 'SiphonTick', 'Strike', 'Chaos', 'Slay', 'Heal', + 'Buff', 'Amplify', 'Haste', 'Triage', 'TriageTick', 'Link', 'Hybrid', 'Intercept', + 'Debuff', 'Curse', 'Decay', 'DecayTick', 'Purge', 'Silence', 'Restrict', + 'Stun', 'Bash', 'Absorb', 'Sleep', 'Break', 'Ruin', + 'Block', 'Sustain', 'Electrify', 'Electrocute', 'ElectrocuteTick', + 'Counter', 'CounterAttack', 'Purify', 'Recharge', 'Reflect'].includes(removeTier(skill)); +} + module.exports = { getFocusTargets, getObjects, getTime, getSequence, getText, + isCbAnim, }; - - - // if (!(resolution.target.id === construct.id) - // && !(resolution.event[0] === 'AoeSkill' && targetTeam.includes(construct.id))) return false; diff --git a/client/src/events.jsx b/client/src/events.jsx index 945c2b59..b70d2221 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -7,7 +7,7 @@ const sample = require('lodash/sample'); const actions = require('./actions'); const { TIMES } = require('./constants'); const animations = require('./animations.utils'); -const { infoToast, errorToast, removeTier } = require('./utils'); +const { infoToast, errorToast } = require('./utils'); function registerEvents(store) { function notify(msg) { @@ -79,7 +79,7 @@ function registerEvents(store) { if (sequence.includes('START_SKILL') && anims.animSource) store.dispatch(actions.setAnimSource(anims.animSource)); if (sequence.includes('END_SKILL') && anims.animTarget) { store.dispatch(actions.setAnimTarget(anims.animTarget)); - if (!['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) store.dispatch(actions.setAnimCb(cb)); + if (animations.isCbAnim(anims.animSkill)) store.dispatch(actions.setAnimCb(cb)); } if (sequence.includes('POST_SKILL') && text) { // timeout to prevent text classes from being added too soon @@ -98,8 +98,8 @@ function registerEvents(store) { store.dispatch(actions.setAnimTarget(null)); store.dispatch(actions.setAnimText(null)); store.dispatch(actions.setAnimFocus([])); - if (!sequence.includes('END_SKILL') || (anims.animSkill && ['Banish', 'Invert'].includes(anims.animSkill))) return cb(); - return true; + if (sequence.includes('END_SKILL') && animations.isCbAnim(anims.animSkill)) return true; + return cb(); }, timeout); }, err => { if (err) return console.error(err); diff --git a/client/src/utils.jsx b/client/src/utils.jsx index ca66fd54..88719c34 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -142,6 +142,7 @@ function randomPoints(numPoints, radius, dimensions) { } const removeTier = skill => { + if (!skill) return skill; if (skill.includes('SiphonTick')) return 'SiphonTick'; if (skill.includes('TriageTick')) return 'TriageTick'; if (skill.includes('DecayTick')) return 'DecayTick'; diff --git a/server/src/skill.rs b/server/src/skill.rs index f7254101..998cb178 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -69,12 +69,12 @@ pub fn pre_resolve(cast: &Cast, game: &mut Game, mut resolutions: Resolutions) - pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut resolutions: Vec) -> Resolutions { if let Some(disable) = source.disabled(skill) { - resolutions.push(Resolution::new(source, target).event(Event::Disable { disable, skill })); + resolutions.push(Resolution::new(source, target).event(Event::Disable { disable, skill }).stages(EventStages::PostOnly)); return resolutions; } if target.is_ko() { - resolutions.push(Resolution::new(source, target).event(Event::TargetKo { skill })); + resolutions.push(Resolution::new(source, target).event(Event::TargetKo { skill }).stages(EventStages::PostOnly)); return resolutions; }