more skills
This commit is contained in:
parent
994d1c8fb0
commit
69692da9de
@ -508,6 +508,9 @@ impl Game {
|
||||
|
||||
Value::Cooldowns { construct, mult } => unimplemented!(),
|
||||
|
||||
Value::Effects { construct, mult } =>
|
||||
self.construct_by_id(*construct).unwrap().effects.len().pct(*mult),
|
||||
|
||||
Value::ColourSkills { construct, colour, mult } => unimplemented!(),
|
||||
|
||||
Value::DamageTaken { construct, colour, mult } =>
|
||||
@ -887,6 +890,7 @@ pub enum Value {
|
||||
Fixed { value: usize },
|
||||
Cooldowns { construct: Uuid, mult: usize },
|
||||
ColourSkills { construct: Uuid, colour: Colour, mult: usize },
|
||||
Effects { construct: Uuid, mult: usize },
|
||||
DamageTaken { construct: Uuid, colour: Colour, mult: usize },
|
||||
// Skills { construct: Uuid, colour: Colour },
|
||||
}
|
||||
|
||||
@ -288,6 +288,25 @@ impl Cast {
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Curse => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::CursePlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(175)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::CursePlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Curse, duration: 3, meta: Some(EffectMeta::Multiplier(200)), tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Chaos |
|
||||
Skill::ChaosPlus |
|
||||
Skill::ChaosPlusPlus => vec![
|
||||
@ -367,6 +386,15 @@ impl Cast {
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::DecayTick |
|
||||
Skill::DecayTickPlus |
|
||||
Skill::DecayTickPlusPlus => vec![
|
||||
Action::Damage {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Electrify=> vec![
|
||||
Action::Effect {
|
||||
@ -455,6 +483,25 @@ impl Cast {
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Hybrid => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Hybrid, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::HybridPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Hybrid, duration: 4, meta: Some(EffectMeta::Multiplier(175)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::HybridPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Hybrid, duration: 5, meta: Some(EffectMeta::Multiplier(200)), tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Intercept |
|
||||
Skill::InterceptPlus |
|
||||
Skill::InterceptPlusPlus => vec![
|
||||
@ -469,6 +516,70 @@ impl Cast {
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Invert => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Invert, duration: 2, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
Skill::InvertPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Invert, duration: 3, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
Skill::InvertPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Invert, duration: 4, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Link |
|
||||
Skill::LinkPlus |
|
||||
Skill::LinkPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Damage {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![
|
||||
Value::Effects { construct: self.target, mult: self.skill.multiplier() },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Recharge |
|
||||
Skill::RechargePlus |
|
||||
Skill::RechargePlusPlus => vec![
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
colour: Colour::Red,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::RedPower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Reflect |
|
||||
Skill::ReflectPlus |
|
||||
Skill::ReflectPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Reflect, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
colour: Colour::Blue,
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Restrict |
|
||||
Skill::RestrictPlus |
|
||||
Skill::RestrictPlusPlus => vec![
|
||||
@ -498,6 +609,40 @@ impl Cast {
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
Skill::Siphon => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphon, duration: 2, meta: Some(EffectMeta::Skill(Skill::SiphonTick)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::SiphonPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphon, duration: 3, meta: Some(EffectMeta::Skill(Skill::SiphonTickPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::SiphonPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphon, duration: 4, meta: Some(EffectMeta::Skill(Skill::SiphonTickPlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::SiphonTick |
|
||||
Skill::SiphonTickPlus |
|
||||
Skill::SiphonTickPlusPlus => vec![
|
||||
Action::Damage {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
colour: Colour::Green,
|
||||
values: vec![Value::DamageTaken { construct: self.target, colour: Colour::Blue, mult: 100 }],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Slay |
|
||||
Skill::SlayPlus |
|
||||
Skill::SlayPlusPlus => vec![
|
||||
@ -610,78 +755,6 @@ impl Cast {
|
||||
|
||||
fn end() {}
|
||||
|
||||
// fn curse(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn hybrid(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn invert(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn reflect(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
|
||||
// let blue_amount = source.blue_power().pct(skill.multiplier());
|
||||
// target.recharge(skill, 0, blue_amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::PostOnly)));
|
||||
|
||||
// }
|
||||
|
||||
// fn recharge(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(Event::Skill { skill }).stages(EventStages::StartEnd));
|
||||
// let red_amount = source.red_power().pct(skill.multiplier());
|
||||
// let blue_amount = source.blue_power().pct(skill.multiplier());
|
||||
// target.recharge(skill, red_amount, blue_amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::PostOnly)));
|
||||
|
||||
// }
|
||||
|
||||
// fn siphon(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
|
||||
// let skip_tick = target.effects.iter().any(|e| {
|
||||
// match e.effect {
|
||||
// Effect::Siphon => source.skill_speed(skill) <= e.tick.unwrap().speed,
|
||||
// _ => false,
|
||||
// }
|
||||
// });
|
||||
// let ConstructEffect { effect, duration, meta, tick: _ } = skill.effect()[0];
|
||||
// let tick_skill = match meta {
|
||||
// Some(EffectMeta::Skill(s)) => s,
|
||||
// _ => panic!("no siphon tick skill"),
|
||||
// };
|
||||
// let siphon = ConstructEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, siphon)));
|
||||
|
||||
// match skip_tick {
|
||||
// false => return siphon_tick(source, target, resolutions, tick_skill)
|
||||
// }
|
||||
// }
|
||||
|
||||
// fn siphon_tick(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// 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 {
|
||||
// match e {
|
||||
// Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
|
||||
// game.event(Event::new(source, target).event(e).stages(EventStages::EndPost));
|
||||
// let heal = source.deal_green_damage(skill, amount);
|
||||
// for h in heal {
|
||||
// game.event(Event::new(source, source).event(h).stages(EventStages::PostOnly));
|
||||
// };
|
||||
// },
|
||||
// _ => game.event(Event::new(source, target).event(e).stages(EventStages::EndPost)),
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// fn link(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user