diff --git a/WORKLOG.md b/WORKLOG.md index 8f93a003..32c8ffd9 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -10,6 +10,8 @@ * can't reset password without knowing password =\ +* Display skill colours during combat + ## SOON (Before or After PAX) * bot game grind diff --git a/client/src/animations.utils.jsx b/client/src/animations.utils.jsx index feda087b..39ef17ef 100644 --- a/client/src/animations.utils.jsx +++ b/client/src/animations.utils.jsx @@ -74,8 +74,8 @@ function getObjects(resolution, stages, game, account) { function getSequence(resolution) { if (!resolution.event) return []; if (resolution.event[0] === 'Inversion') return []; + if (['TargetKo', 'Ko'].includes(resolution.event[0])) return []; if (['Skill', 'AoeSkill'].includes(resolution.event[0])) return ['START_SKILL', 'END_SKILL']; - if (resolution.event[0] === 'Ko') return ['POST_SKILL']; switch (resolution.stages) { case 'AllStages': return ['START_SKILL', 'END_SKILL', 'POST_SKILL']; diff --git a/server/src/skill.rs b/server/src/skill.rs index 8fd2a685..a965f7de 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -305,7 +305,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) -> }; } - if target.affected(Effect::Absorb) { + if target.affected(Effect::Absorb) && !target.is_ko() { let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter() .find(|e| e.effect == Effect::Absorb).unwrap().clone(); match meta { @@ -316,7 +316,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) -> }; } if c == Colour::Red { - if target.affected(Effect::Counter) { + if target.affected(Effect::Counter) && !target.is_ko() { let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter() .find(|e| e.effect == Effect::Counter).unwrap().clone(); match meta { @@ -1584,9 +1584,17 @@ fn absorb(source: &mut Construct, target: &mut Construct, mut results: Resolutio fn absorption(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions { let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount)); + results.push(Resolution::new(source, target) .event(target.add_effect(reflect_skill, absorb)) .stages(EventStages::PostOnly)); + + let absorb_index = target.effects.iter().position(|e| e.effect == Effect::Absorb).expect("No absorb"); + let ce = target.effects.remove(absorb_index); + + results.push(Resolution::new(source, target) + .event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }) + .stages(EventStages::PostOnly)); return results;; }