diff --git a/WORKLOG.md b/WORKLOG.md index ddf6f124..4419f540 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -10,8 +10,6 @@ * can't reset password without knowing password =\ -* fix recharge combat display bug - ## SOON (Before or After PAX) * bot game grind diff --git a/client/src/animations.utils.jsx b/client/src/animations.utils.jsx index 39ef17ef..788ba2f0 100644 --- a/client/src/animations.utils.jsx +++ b/client/src/animations.utils.jsx @@ -177,7 +177,10 @@ function getText(resolution, sequence) { if (type === 'Recharge') { const { red, blue } = event; - return { text: [`+${red}R ${blue}B`, ''], css: '' }; + if (red > 0 && blue > 0) return { text: [`+${red}R +${blue}B`, ''], css: 'purple-damage' }; + if (red > 0) return { text: [`+${red}R`, ''], css: 'red-damage' }; + if (blue > 0) return { text: [`+${blue}B`, ''], css: 'blue-damage' }; + return nullText; } if (type === 'Removal') { diff --git a/server/src/skill.rs b/server/src/skill.rs index 787e5c61..44cead79 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -1358,22 +1358,36 @@ fn sleep(source: &mut Construct, target: &mut Construct, mut results: Resolution fn sustain(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { let red_amount = source.red_power().pct(skill.multiplier()); - results.push(Resolution::new(source, target) - .event(target.recharge(skill, red_amount, 0))); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0]))); + let e = target.recharge(skill, red_amount, 0); + let stages = match e { + Event::Recharge { red, blue, skill: _ } => { + if red > 0 || blue > 0 { EventStages::PostOnly } + else { EventStages::None } + } + _ => panic!("not recharge") + }; - results.push(Resolution::new(source, target) - .event(target.add_effect(skill, skill.effect()[0])) - .stages(EventStages::PostOnly)); + results.push(Resolution::new(source, target).event(e).stages(stages)); return results; } fn intercept(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { - let red_amount = source.red_power().pct(skill.multiplier()); - results.push(Resolution::new(source, target).event(target.recharge(skill, red_amount, 0))); - let intercept = skill.effect()[0]; - results.push(Resolution::new(source, target).event(target.add_effect(skill, intercept)).stages(EventStages::PostOnly)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, intercept))); + + let red_amount = source.red_power().pct(skill.multiplier()); + let e = target.recharge(skill, red_amount, 0); + let stages = match e { + Event::Recharge { red, blue, skill: _ } => { + if red > 0 || blue > 0 { EventStages::PostOnly } + else { EventStages::None } + } + _ => panic!("not recharge") + }; + results.push(Resolution::new(source, target).event(e).stages(stages)); + return results; } @@ -1656,18 +1670,30 @@ fn reflect(source: &mut Construct, target: &mut Construct, mut results: Resoluti results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0]))); let blue_amount = source.blue_power().pct(skill.multiplier()); - results.push(Resolution::new(source, target) - .event(target.recharge(skill, 0, blue_amount)) - .stages(EventStages::PostOnly)); - + let e = target.recharge(skill, 0, blue_amount); + let stages = match e { + Event::Recharge { red, blue, skill: _ } => { + if red > 0 || blue > 0 { EventStages::PostOnly } + else { EventStages::None } + } + _ => panic!("not recharge") + }; + results.push(Resolution::new(source, target).event(e).stages(stages)); return results;; } fn recharge(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { let red_amount = source.red_power().pct(skill.multiplier()); let blue_amount = source.blue_power().pct(skill.multiplier()); - - results.push(Resolution::new(source, target).event(target.recharge(skill, red_amount, blue_amount))); + let e = target.recharge(skill, red_amount, blue_amount); + let stages = match e { + Event::Recharge { red, blue, skill: _ } => { + if red > 0 || blue > 0 { EventStages::AllStages } + else { EventStages::StartEnd } + } + _ => panic!("not recharge") + }; + results.push(Resolution::new(source, target).event(e).stages(stages)); return results; }