From 05855af04a461f817cfea661fae56e31782cf254 Mon Sep 17 00:00:00 2001 From: Mashy Date: Fri, 18 Oct 2019 15:11:57 +1000 Subject: [PATCH] siphon & slay have green power scaling --- CHANGELOG.md | 2 +- client/src/utils.jsx | 8 ++++---- server/src/item.rs | 6 ++++-- server/src/skill.rs | 24 +++++++++++++----------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6f4521c..2bd6ef7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Made available skill / effect information during the combat phase. - Highlighting a skill replace the effect area with the skill description including speed multiplier. - - Highlighting an effect with replace the targetting arrow / anim skill text with effect info. + - Highlighting an effect will replace the targetting arrow / anim skill text with effect info. - You can now preview combinations before you create them - After selecting the three items for a combo hover over the combine button for info diff --git a/client/src/utils.jsx b/client/src/utils.jsx index 140ff26a..ca66fd54 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -249,9 +249,9 @@ function effectInfo(i) { if (s === 'DecayTick+') return 45; if (s === 'DecayTick++') return 70; - if (s === 'SiphonTick') return 40; - if (s === 'SiphonTick+') return 50; - if (s === 'SiphonTick++') return 60; + if (s === 'SiphonTick') return 20; + if (s === 'SiphonTick+') return 25; + if (s === 'SiphonTick++') return 30; if (s === 'TriageTick') return 75; if (s === 'TriageTick+') return 110; @@ -289,7 +289,7 @@ function effectInfo(i) { case 'Absorb': return 'If construct takes damage, Absorption will be applied increasing RedPower and BluePower based on damage taken.'; case 'Absorption': return `Increasing construct RedPower and BluePower by ${i.meta[1]}`; case 'Triage': return `Construct will be healed for ${multiplier(i.tick.skill)}% of caster's GreenPower each turn.`; - case 'Siphon': return `Construct will take ${multiplier(i.tick.skill)}% of caster's BluePower as blue damage each turn, healing the caster.`; + case 'Siphon': return `Construct will take ${multiplier(i.tick.skill)}% of caster's BluePower + GreenPower as blue damage each turn, healing the caster.`; default: return 'Missing Effect Text'; } diff --git a/server/src/item.rs b/server/src/item.rs index 95734c38..763e17c2 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -850,7 +850,8 @@ impl Item { Item::Slay| Item::SlayPlus | Item::SlayPlusPlus => format!( - "Deals {:?}% RedPower as red damage and provides self healing based on damage dealt.", + "Deals {:?}% RedPower + {:?}% GreenPower as red damage and provides self healing based on damage dealt.", + self.into_skill().unwrap().multiplier(), self.into_skill().unwrap().multiplier()), Item::Sleep| @@ -884,7 +885,8 @@ impl Item { Item::Siphon| Item::SiphonPlus | Item::SiphonPlusPlus => format!( - "Deals {:?}% BluePower as blue damage each turn and heals caster based on damage dealt. Lasts {:?}T.", + "Deals {:?}% BluePower + {:?}% GreenPower as blue damage each turn and heals caster based on damage dealt. Lasts {:?}T.", + self.into_skill().unwrap().effect()[0].get_skill().unwrap().multiplier(), self.into_skill().unwrap().effect()[0].get_skill().unwrap().multiplier(), self.into_skill().unwrap().effect()[0].get_duration()), diff --git a/server/src/skill.rs b/server/src/skill.rs index 5af07155..6431d39d 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -757,13 +757,13 @@ impl Skill { Skill::HealPlus => 185, //GG Skill::HealPlusPlus => 270, //GG - Skill::SiphonTick=> 40, // GB - Skill::SiphonTickPlus => 50, - Skill::SiphonTickPlusPlus => 60, + Skill::SiphonTick=> 20, // GB + Skill::SiphonTickPlus => 25, + Skill::SiphonTickPlusPlus => 30, - Skill::Slay=> 70, // RG - Skill::SlayPlus => 115, - Skill::SlayPlusPlus => 180, + Skill::Slay=> 40, // RG + Skill::SlayPlus => 60, + Skill::SlayPlusPlus => 90, Skill::Strike=> 90, //RR Skill::StrikePlus => 140, @@ -1471,7 +1471,7 @@ fn restrict(source: &mut Construct, target: &mut Construct, mut results: Resolut } fn slay(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { - let amount = source.red_power().pct(skill.multiplier()); + let amount = source.red_power().pct(skill.multiplier()) + source.green_power().pct(skill.multiplier()); let slay_events = target.deal_red_damage(skill, amount); for e in slay_events { @@ -1732,7 +1732,7 @@ fn siphon(source: &mut Construct, target: &mut Construct, mut results: Resolutio } fn siphon_tick(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { - let amount = source.blue_power().pct(skill.multiplier()); + let amount = source.blue_power().pct(skill.multiplier()) + source.green_power().pct(skill.multiplier()); let siphon_events = target.deal_blue_damage(skill, amount); for e in siphon_events { @@ -2037,13 +2037,14 @@ mod tests { .named(&"camel".to_string()); x.blue_power.force(256); + x.green_power.force(220); x.green_life.force(1024); x.green_life.reduce(512); let mut results = resolve(Skill::Siphon, &mut x, &mut y, vec![]); assert!(y.affected(Effect::Siphon)); - assert!(x.green_life() == (512 + 256.pct(Skill::SiphonTick.multiplier()))); + assert!(x.green_life() == (512 + 256.pct(Skill::SiphonTick.multiplier()) + 220.pct(Skill::SiphonTick.multiplier()))); let Resolution { source: _, target: _, event, stages: _ } = results.remove(0); match event { @@ -2053,14 +2054,15 @@ mod tests { let Resolution { source: _, target: _, event, stages: _ } = results.remove(0); match event { - Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier())), + Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier()) + + 220.pct(Skill::SiphonTick.multiplier())), _ => panic!("not damage siphon"), }; let Resolution { source: _, target, event, stages: _ } = results.remove(0); match event { Event::Healing { amount, skill: _, overhealing: _ } => { - assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier())); + assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier()) + 220.pct(Skill::SiphonTick.multiplier())); assert_eq!(target.id, x.id); }, _ => panic!("not healing"),