more skills
This commit is contained in:
parent
994d1c8fb0
commit
69692da9de
@ -508,6 +508,9 @@ impl Game {
|
|||||||
|
|
||||||
Value::Cooldowns { construct, mult } => unimplemented!(),
|
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::ColourSkills { construct, colour, mult } => unimplemented!(),
|
||||||
|
|
||||||
Value::DamageTaken { construct, colour, mult } =>
|
Value::DamageTaken { construct, colour, mult } =>
|
||||||
@ -887,6 +890,7 @@ pub enum Value {
|
|||||||
Fixed { value: usize },
|
Fixed { value: usize },
|
||||||
Cooldowns { construct: Uuid, mult: usize },
|
Cooldowns { construct: Uuid, mult: usize },
|
||||||
ColourSkills { construct: Uuid, colour: Colour, mult: usize },
|
ColourSkills { construct: Uuid, colour: Colour, mult: usize },
|
||||||
|
Effects { construct: Uuid, mult: usize },
|
||||||
DamageTaken { construct: Uuid, colour: Colour, mult: usize },
|
DamageTaken { construct: Uuid, colour: Colour, mult: usize },
|
||||||
// Skills { construct: Uuid, colour: Colour },
|
// 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::Chaos |
|
||||||
Skill::ChaosPlus |
|
Skill::ChaosPlus |
|
||||||
Skill::ChaosPlusPlus => vec![
|
Skill::ChaosPlusPlus => vec![
|
||||||
@ -367,6 +386,15 @@ impl Cast {
|
|||||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None },
|
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![
|
Skill::Electrify=> vec![
|
||||||
Action::Effect {
|
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::Intercept |
|
||||||
Skill::InterceptPlus |
|
Skill::InterceptPlus |
|
||||||
Skill::InterceptPlusPlus => vec![
|
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::Restrict |
|
||||||
Skill::RestrictPlus |
|
Skill::RestrictPlus |
|
||||||
Skill::RestrictPlusPlus => vec![
|
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::Slay |
|
||||||
Skill::SlayPlus |
|
Skill::SlayPlus |
|
||||||
Skill::SlayPlusPlus => vec![
|
Skill::SlayPlusPlus => vec![
|
||||||
@ -610,78 +755,6 @@ impl Cast {
|
|||||||
|
|
||||||
fn end() {}
|
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) {
|
// fn link(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user