more skills impl
This commit is contained in:
parent
f880a2acd7
commit
2cc7be5b50
@ -1,5 +1,6 @@
|
||||
# FIXME
|
||||
|
||||
tick skips for triage etc
|
||||
game ready not auto starting resolve phase
|
||||
healing action
|
||||
remove immunity
|
||||
@ -10,4 +11,6 @@ cooldown events leak skills
|
||||
hit event
|
||||
reqs moving eventconstruct into specific events
|
||||
|
||||
counter / absorb post resolve etc
|
||||
|
||||
cooldown checking -> go through round and find all casters
|
||||
@ -844,7 +844,7 @@ impl Construct {
|
||||
return events;
|
||||
}
|
||||
|
||||
pub fn add_effect(&mut self, effect: ConstructEffect) -> Vec<Event> {
|
||||
pub fn effect_add(&mut self, effect: ConstructEffect) -> Vec<Event> {
|
||||
if self.is_ko() { return vec![] }
|
||||
|
||||
if self.affected(Effect::Banish) { panic!("banish immunity not fixt yet") }
|
||||
@ -871,6 +871,21 @@ impl Construct {
|
||||
return vec![result];
|
||||
}
|
||||
|
||||
pub fn effect_remove(&mut self, effect: Effect) -> Vec<Event> {
|
||||
if self.is_ko() { return vec![] }
|
||||
|
||||
if let Some(p) = self.effects.iter().position(|ce| ce.effect == effect) {
|
||||
self.effects.remove(p);
|
||||
return vec![Event::Removal {
|
||||
construct: self.id,
|
||||
effect: effect,
|
||||
display: EventConstruct::new(self),
|
||||
}];
|
||||
}
|
||||
|
||||
return vec![];
|
||||
}
|
||||
|
||||
// pub fn evade(&self, skill: Skill) -> Option<Event> {
|
||||
// if self.evasion.value == 0 {
|
||||
// return None;
|
||||
|
||||
@ -549,6 +549,7 @@ impl Game {
|
||||
},
|
||||
|
||||
Action::Effect { construct, effect } => self.effect(construct, effect),
|
||||
Action::Remove { construct, effect } => self.effect_remove(construct, effect),
|
||||
Action::IncreaseCooldowns { construct, turns } => self.increase_cooldowns(construct, turns),
|
||||
};
|
||||
|
||||
@ -559,23 +560,6 @@ impl Game {
|
||||
resolved.append(&mut resolutions);
|
||||
}
|
||||
|
||||
// fn slay(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// 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 {
|
||||
// match e {
|
||||
// Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
|
||||
// game.event(Event::new(source, target).event(e));
|
||||
// let heal = source.deal_green_damage(skill, amount.pct(50));
|
||||
// for h in heal {
|
||||
// game.event(Event::new(source, source).event(h).stages(EventStages::PostOnly));
|
||||
// };
|
||||
// },
|
||||
// _ => game.event(Event::new(source, target).event(e)),
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
self.resolutions.last_mut().unwrap().append(&mut resolved);
|
||||
|
||||
self
|
||||
@ -665,7 +649,11 @@ impl Game {
|
||||
}
|
||||
|
||||
fn effect(&mut self, construct: Uuid, effect: ConstructEffect) -> Vec<Event> {
|
||||
self.construct_by_id(construct).unwrap().add_effect(effect)
|
||||
self.construct_by_id(construct).unwrap().effect_add(effect)
|
||||
}
|
||||
|
||||
fn effect_remove(&mut self, construct: Uuid, effect: Effect) -> Vec<Event> {
|
||||
self.construct_by_id(construct).unwrap().effect_remove(effect)
|
||||
}
|
||||
|
||||
fn increase_cooldowns(&mut self, construct: Uuid, turns: usize) -> Vec<Event> {
|
||||
@ -875,6 +863,7 @@ pub enum Action {
|
||||
Heal { construct: Uuid, values: Vec<Value>, colour: Colour },
|
||||
Damage { construct: Uuid, values: Vec<Value>, colour: Colour },
|
||||
Effect { construct: Uuid, effect: ConstructEffect },
|
||||
Remove { construct: Uuid, effect: Effect },
|
||||
IncreaseCooldowns { construct: Uuid, turns: usize },
|
||||
// Recharge { skill: Skill, red: usize, blue: usize },
|
||||
}
|
||||
@ -918,7 +907,7 @@ pub enum Event {
|
||||
|
||||
Damage { construct: Uuid, amount: usize, mitigation: usize, colour: Colour, display: EventConstruct },
|
||||
Effect { construct: Uuid, effect: Effect, duration: u8, display: EventConstruct },
|
||||
Removal { construct: Uuid, effect: Option<Effect>, display: EventConstruct },
|
||||
Removal { construct: Uuid, effect: Effect, display: EventConstruct },
|
||||
|
||||
Healing { construct: Uuid, amount: usize, overhealing: usize },
|
||||
Recharge { construct: Uuid, red: usize, blue: usize },
|
||||
|
||||
@ -85,6 +85,13 @@ impl Cast {
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Debuff => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Stun => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
@ -145,6 +152,60 @@ impl Cast {
|
||||
colour: Colour::Blue,
|
||||
},
|
||||
],
|
||||
Skill::Absorption => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Absorb,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 3, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
Skill::AbsorptionPlus => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Absorb,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 4, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
Skill::AbsorptionPlusPlus => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Absorb,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 5, meta: None, tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
// fn absorb(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 absorption(source: &mut Construct, target: &mut Construct, reflect_skill: Skill, amount: usize, skill: Skill) {
|
||||
// let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
|
||||
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(target.effect_remove(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);
|
||||
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(Event::Remove { skill, effect: Some(ce.effect), construct_effects: target.effects.clone() })
|
||||
// .stages(EventStages::PostOnly));
|
||||
// }
|
||||
|
||||
|
||||
Skill::Banish |
|
||||
Skill::BanishPlus |
|
||||
@ -178,7 +239,7 @@ impl Cast {
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None }
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None }
|
||||
},
|
||||
Action::IncreaseCooldowns {
|
||||
construct: self.target,
|
||||
@ -199,7 +260,7 @@ impl Cast {
|
||||
Skill::Break => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
@ -209,7 +270,7 @@ impl Cast {
|
||||
Skill::BreakPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
@ -219,7 +280,7 @@ impl Cast {
|
||||
Skill::BreakPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
@ -276,12 +337,130 @@ impl Cast {
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Decay => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 2, meta: Some(EffectMeta::Skill(Skill::DecayTick)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::DecayPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta: Some(EffectMeta::Skill(Skill::DecayTickPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::DecayPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None },
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Electrify=> vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 1, meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::ElectrifyPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 1, meta: Some(EffectMeta::Skill(Skill::ElectrocutePlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::ElectrifyPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 1, meta: Some(EffectMeta::Skill(Skill::ElectrocutePlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::Electrocute => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Electric,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 2, meta: Some(EffectMeta::Skill(Skill::ElectrocuteTick)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::ElectrocutePlus => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Electric,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 3, meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::ElectrocutePlusPlus => vec![
|
||||
Action::Remove {
|
||||
construct: self.source,
|
||||
effect: Effect::Electric,
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Electric, duration: 4, meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::ElectrocuteTick |
|
||||
Skill::ElectrocuteTickPlus |
|
||||
Skill::ElectrocuteTickPlusPlus => vec![
|
||||
Action::Damage {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Heal |
|
||||
Skill::HealPlus |
|
||||
Skill::HealPlusPlus => vec![
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
colour: Colour::Green,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::GreenPower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Haste => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Haste, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::HastePlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Haste, duration: 3, meta: Some(EffectMeta::Multiplier(175)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::HastePlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Haste, duration: 3, meta: Some(EffectMeta::Multiplier(225)), tick: None },
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Intercept |
|
||||
Skill::InterceptPlus |
|
||||
Skill::InterceptPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Intercept, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
@ -305,6 +484,20 @@ impl Cast {
|
||||
],
|
||||
|
||||
|
||||
Skill::Ruin |
|
||||
Skill::RuinPlus |
|
||||
Skill::RuinPlusPlus => vec![
|
||||
Action::Damage {
|
||||
construct: self.target,
|
||||
colour: Colour::Blue,
|
||||
values: vec![Value::Stat { construct: self.target, stat: Stat::BluePower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }
|
||||
}
|
||||
],
|
||||
|
||||
Skill::Slay |
|
||||
Skill::SlayPlus |
|
||||
Skill::SlayPlusPlus => vec![
|
||||
@ -323,7 +516,7 @@ impl Cast {
|
||||
Skill::Sleep => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
@ -334,7 +527,7 @@ impl Cast {
|
||||
Skill::SleepPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
@ -345,7 +538,7 @@ impl Cast {
|
||||
Skill::SleepPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
@ -369,7 +562,7 @@ impl Cast {
|
||||
Skill::SustainPlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None},
|
||||
effect: ConstructEffect { effect: Effect::Sustain, duration: 1, meta: None, tick: None },
|
||||
},
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
@ -377,6 +570,35 @@ impl Cast {
|
||||
colour: Colour::Red,
|
||||
},
|
||||
],
|
||||
|
||||
Skill::Triage => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Triage, duration: 2, meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::TriagePlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Triage, duration: 3, meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::TriagePlusPlus => vec![
|
||||
Action::Effect {
|
||||
construct: self.target,
|
||||
effect: ConstructEffect { effect: Effect::Triage, duration: 4, meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None },
|
||||
},
|
||||
],
|
||||
Skill::TriageTick |
|
||||
Skill::TriageTickPlus |
|
||||
Skill::TriageTickPlusPlus => vec![
|
||||
Action::Heal {
|
||||
construct: self.target,
|
||||
colour: Colour::Green,
|
||||
values: vec![Value::Stat { construct: self.source, stat: Stat::GreenPower, mult: self.skill.multiplier() }],
|
||||
},
|
||||
],
|
||||
|
||||
_ => unimplemented!()
|
||||
};
|
||||
|
||||
@ -387,186 +609,20 @@ impl Cast {
|
||||
|
||||
fn end() {}
|
||||
|
||||
// fn heal(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let amount = source.green_power().pct(skill.multiplier());
|
||||
// target.deal_green_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e)));
|
||||
// }
|
||||
|
||||
// fn triage(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let skip_tick = target.effects.iter().any(|e| {
|
||||
// match e.effect {
|
||||
// Effect::Triage => 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 triage tick skill"),
|
||||
// };
|
||||
// let triage = ConstructEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, triage)));
|
||||
|
||||
// match skip_tick {
|
||||
// false => return triage_tick(source, target, resolutions, tick_skill)
|
||||
// }
|
||||
// }
|
||||
|
||||
// fn triage_tick(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let amount = source.green_power().pct(skill.multiplier());
|
||||
// target.deal_green_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::EndPost)));
|
||||
// }
|
||||
|
||||
// fn amplify(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn haste(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn debuff(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// }
|
||||
|
||||
// fn decay(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
|
||||
// let wither = skill.effect()[0];
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, wither)));
|
||||
|
||||
// let skip_tick = target.effects.iter().any(|e| {
|
||||
// match e.effect {
|
||||
// Effect::Decay => source.skill_speed(skill) <= e.tick.unwrap().speed,
|
||||
// _ => false,
|
||||
// }
|
||||
// });
|
||||
// let ConstructEffect { effect, duration, meta, tick: _ } = skill.effect()[1];
|
||||
// let tick_skill = match meta {
|
||||
// Some(EffectMeta::Skill(s)) => s,
|
||||
// _ => panic!("no decay tick skill"),
|
||||
// };
|
||||
// let decay = ConstructEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(target.add_effect(skill, decay))
|
||||
// .stages(EventStages::PostOnly));
|
||||
|
||||
// match skip_tick {
|
||||
// false => return decay_tick(source, target, resolutions, tick_skill)
|
||||
// }
|
||||
// }
|
||||
|
||||
// fn decay_tick(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let amount = source.blue_power().pct(skill.multiplier());
|
||||
// target.deal_blue_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::EndPost)));
|
||||
// }
|
||||
|
||||
// // electrify is the buff effect
|
||||
// // when attacked it runs electrocute and applies a debuff
|
||||
// fn electrify(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let electrify = skill.effect()[0];
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, electrify)));
|
||||
// }
|
||||
|
||||
// fn electrocute(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// // Remove electric buff, no need to display if construct is dead
|
||||
// if !source.is_ko() {
|
||||
// let electric = source.effects.iter().position(|e| e.effect == Effect::Electric);
|
||||
// match electric {
|
||||
// Some(eff) => {
|
||||
// let ce = source.effects.remove(eff);
|
||||
// game.event(Event::new(source, source)
|
||||
// .event(Event::Removal { skill, effect: Some(ce.effect), construct_effects: source.effects.clone() })
|
||||
// .stages(EventStages::PostOnly));
|
||||
// }
|
||||
// None => ()
|
||||
// }
|
||||
// }
|
||||
|
||||
// let ConstructEffect { effect, duration, meta, tick: _ } = skill.effect()[0];
|
||||
// let tick_skill = match meta {
|
||||
// Some(EffectMeta::Skill(s)) => s,
|
||||
// _ => panic!("no electrocute tick skill"),
|
||||
// };
|
||||
|
||||
// let skip_tick = target.effects.iter().any(|e| {
|
||||
// match e.effect {
|
||||
// Effect::Electrocute => source.skill_speed(skill) <= e.tick.unwrap().speed,
|
||||
// _ => false,
|
||||
// }
|
||||
// });
|
||||
// let electrocute = ConstructEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(target.add_effect(skill, electrocute))
|
||||
// .stages(EventStages::PostOnly));
|
||||
|
||||
|
||||
// match skip_tick {
|
||||
// false => return electrocute_tick(source, target, resolutions, tick_skill)
|
||||
// }
|
||||
// }
|
||||
|
||||
// fn electrocute_tick(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let amount = source.blue_power().pct(skill.multiplier());
|
||||
// target.deal_blue_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::EndPost)));
|
||||
// }
|
||||
|
||||
// fn ruin(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// let amount = source.blue_power().pct(skill.multiplier());
|
||||
// target.deal_blue_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::PostOnly)));
|
||||
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(target.add_effect(skill, skill.effect()[0]))
|
||||
// .stages(EventStages::PostOnly));
|
||||
// }
|
||||
|
||||
// fn absorb(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(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 absorption(source: &mut Construct, target: &mut Construct, reflect_skill: Skill, amount: usize, skill: Skill) {
|
||||
// let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
|
||||
|
||||
// game.event(Event::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);
|
||||
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(Event::Removal { skill, effect: Some(ce.effect), construct_effects: target.effects.clone() })
|
||||
// .stages(EventStages::PostOnly));
|
||||
// }
|
||||
|
||||
// fn curse(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// 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.add_effect(skill, skill.effect()[0])));
|
||||
// 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.add_effect(skill, skill.effect()[0])));
|
||||
// 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.add_effect(skill, skill.effect()[0])));
|
||||
// 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)
|
||||
@ -599,7 +655,7 @@ fn end() {}
|
||||
// _ => 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.add_effect(skill, siphon)));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, siphon)));
|
||||
|
||||
// match skip_tick {
|
||||
// false => return siphon_tick(source, target, resolutions, tick_skill)
|
||||
@ -626,7 +682,7 @@ fn end() {}
|
||||
// }
|
||||
|
||||
// fn link(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
|
||||
// let amount = source.blue_power().pct(skill.multiplier().saturating_mul(target.effects.len() as usize));
|
||||
// target.deal_blue_damage(skill, amount)
|
||||
@ -636,7 +692,7 @@ fn end() {}
|
||||
// }
|
||||
|
||||
// fn silence(source: &mut Construct, target: &mut Construct, skill: Skill) {
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, skill.effect()[0])));
|
||||
|
||||
// let s_multi = target.skills
|
||||
// .iter()
|
||||
@ -657,12 +713,12 @@ fn end() {}
|
||||
// if target.effects.len() > 0 {
|
||||
// target.effects.clear();
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(Event::Removal { skill, effect: None, construct_effects: target.effects.clone() })
|
||||
// .event(Event::Remove { skill, effect: None, construct_effects: target.effects.clone() })
|
||||
// .stages(EventStages::PostOnly));
|
||||
// }
|
||||
|
||||
// let effect = skill.effect()[0];
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, effect)).stages(EventStages::PostOnly));
|
||||
|
||||
// }
|
||||
|
||||
@ -672,14 +728,14 @@ fn end() {}
|
||||
// let amount = source.green_power().pct(skill.multiplier().saturating_mul(target.effects.len() as usize));
|
||||
// target.effects.clear();
|
||||
// game.event(Event::new(source, target)
|
||||
// .event(Event::Removal { skill, effect: None, construct_effects: target.effects.clone() })
|
||||
// .event(Event::Remove { skill, effect: None, construct_effects: target.effects.clone() })
|
||||
// .stages(EventStages::PostOnly));
|
||||
// target.deal_green_damage(skill, amount)
|
||||
// .into_iter()
|
||||
// .for_each(|e| game.event(Event::new(source, target).event(e).stages(EventStages::PostOnly)));
|
||||
// }
|
||||
// let effect = skill.effect()[0];
|
||||
// game.event(Event::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
||||
// game.event(Event::new(source, target).event(target.effect_remove(skill, effect)).stages(EventStages::PostOnly));
|
||||
|
||||
// }
|
||||
|
||||
@ -1048,168 +1104,168 @@ impl Skill {
|
||||
pub fn effect(&self) -> Vec<ConstructEffect> {
|
||||
match self {
|
||||
// Modifiers
|
||||
Skill::Amplify => vec![ConstructEffect {effect: Effect::Amplify, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
Skill::AmplifyPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
||||
Skill::AmplifyPlusPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||
Skill::Amplify => vec![ConstructEffect { effect: Effect::Amplify, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::AmplifyPlus => vec![ConstructEffect { effect: Effect::Amplify, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::AmplifyPlusPlus => vec![ConstructEffect { effect: Effect::Amplify, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
|
||||
|
||||
Skill::Banish => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}],
|
||||
Skill::BanishPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}],
|
||||
Skill::BanishPlusPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}],
|
||||
Skill::Banish => vec![ConstructEffect { effect: Effect::Banish, duration: 2, meta: None, tick: None }],
|
||||
Skill::BanishPlus => vec![ConstructEffect { effect: Effect::Banish, duration: 2, meta: None, tick: None }],
|
||||
Skill::BanishPlusPlus => vec![ConstructEffect { effect: Effect::Banish, duration: 2, meta: None, tick: None }],
|
||||
|
||||
Skill::Block => vec![ConstructEffect {effect: Effect::Block, duration: 1,
|
||||
meta: Some(EffectMeta::Multiplier(35)), tick: None}],
|
||||
Skill::Buff => vec![ConstructEffect {effect: Effect::Buff, duration: 3,
|
||||
Skill::Block => vec![ConstructEffect { effect: Effect::Block, duration: 1,
|
||||
meta: Some(EffectMeta::Multiplier(35)), tick: None }],
|
||||
Skill::Buff => vec![ConstructEffect { effect: Effect::Buff, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(130)), tick: None }],
|
||||
|
||||
Skill::Electrify => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None}],
|
||||
Skill::ElectrifyPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlus)), tick: None}],
|
||||
Skill::ElectrifyPlusPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlusPlus)), tick: None}],
|
||||
Skill::Electrocute => vec![ConstructEffect {effect: Effect::Electrocute, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTick)), tick: None}],
|
||||
Skill::ElectrocutePlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlus)), tick: None}],
|
||||
Skill::ElectrocutePlusPlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlusPlus)), tick: None}],
|
||||
Skill::Electrify => vec![ConstructEffect { effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None }],
|
||||
Skill::ElectrifyPlus => vec![ConstructEffect { effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlus)), tick: None }],
|
||||
Skill::ElectrifyPlusPlus => vec![ConstructEffect { effect: Effect::Electric, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlusPlus)), tick: None }],
|
||||
Skill::Electrocute => vec![ConstructEffect { effect: Effect::Electrocute, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTick)), tick: None }],
|
||||
Skill::ElectrocutePlus => vec![ConstructEffect { effect: Effect::Electrocute, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlus)), tick: None }],
|
||||
Skill::ElectrocutePlusPlus => vec![ConstructEffect { effect: Effect::Electrocute, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Sustain => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::SustainPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::SustainPlusPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::Sustain => vec![ConstructEffect { effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::SustainPlus => vec![ConstructEffect { effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::SustainPlusPlus => vec![ConstructEffect { effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
|
||||
Skill::Curse => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
Skill::CursePlus => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
||||
Skill::CursePlusPlus => vec![ConstructEffect {effect: Effect::Curse, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||
Skill::Curse => vec![ConstructEffect { effect: Effect::Curse, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::CursePlus => vec![ConstructEffect { effect: Effect::Curse, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::CursePlusPlus => vec![ConstructEffect { effect: Effect::Curse, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
|
||||
|
||||
Skill::Debuff => vec![ConstructEffect {effect: Effect::Slow, duration: 3,
|
||||
Skill::Debuff => vec![ConstructEffect { effect: Effect::Slow, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(50)), tick: None }],
|
||||
|
||||
Skill::Decay => vec![ConstructEffect {effect: Effect::Wither, duration: 3,
|
||||
Skill::Decay => vec![ConstructEffect { effect: Effect::Wither, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
||||
ConstructEffect {effect: Effect::Decay, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTick)), tick: None}],
|
||||
Skill::DecayPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 3,
|
||||
ConstructEffect { effect: Effect::Decay, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTick)), tick: None }],
|
||||
Skill::DecayPlus => vec![ConstructEffect { effect: Effect::Wither, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(35)), tick: None },
|
||||
ConstructEffect {effect: Effect::Decay, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTickPlus)), tick: None}],
|
||||
Skill::DecayPlusPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 4,
|
||||
ConstructEffect { effect: Effect::Decay, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTickPlus)), tick: None }],
|
||||
Skill::DecayPlusPlus => vec![ConstructEffect { effect: Effect::Wither, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(20)), tick: None },
|
||||
ConstructEffect {effect: Effect::Decay, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None}],
|
||||
ConstructEffect { effect: Effect::Decay, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Haste => vec![ConstructEffect {effect: Effect::Haste, duration: 3,
|
||||
Skill::Haste => vec![ConstructEffect { effect: Effect::Haste, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::HastePlus => vec![ConstructEffect {effect: Effect::Haste, duration: 4,
|
||||
Skill::HastePlus => vec![ConstructEffect { effect: Effect::Haste, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::HastePlusPlus => vec![ConstructEffect {effect: Effect::Haste, duration: 5,
|
||||
Skill::HastePlusPlus => vec![ConstructEffect { effect: Effect::Haste, duration: 5,
|
||||
meta: Some(EffectMeta::Multiplier(225)), tick: None }],
|
||||
|
||||
Skill::Absorb => vec![ConstructEffect {effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::Absorption)), tick: None}],
|
||||
Skill::AbsorbPlus => vec![ConstructEffect {effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlus)), tick: None}],
|
||||
Skill::AbsorbPlusPlus => vec![ConstructEffect {effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None}],
|
||||
Skill::Absorb => vec![ConstructEffect { effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::Absorption)), tick: None }],
|
||||
Skill::AbsorbPlus => vec![ConstructEffect { effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlus)), tick: None }],
|
||||
Skill::AbsorbPlusPlus => vec![ConstructEffect { effect: Effect::Absorb, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Absorption => vec![ConstructEffect {effect: Effect::Absorption, duration: 3, meta: None, tick: None}],
|
||||
Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 4, meta: None, tick: None}],
|
||||
Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}],
|
||||
Skill::Absorption => vec![ConstructEffect { effect: Effect::Absorption, duration: 3, meta: None, tick: None }],
|
||||
Skill::AbsorptionPlus => vec![ConstructEffect { effect: Effect::Absorption, duration: 4, meta: None, tick: None }],
|
||||
Skill::AbsorptionPlusPlus => vec![ConstructEffect { effect: Effect::Absorption, duration: 5, meta: None, tick: None }],
|
||||
|
||||
Skill::Hybrid => vec![ConstructEffect {effect: Effect::Hybrid, duration: 3,
|
||||
Skill::Hybrid => vec![ConstructEffect { effect: Effect::Hybrid, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::HybridPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 4,
|
||||
Skill::HybridPlus => vec![ConstructEffect { effect: Effect::Hybrid, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::HybridPlusPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 5,
|
||||
Skill::HybridPlusPlus => vec![ConstructEffect { effect: Effect::Hybrid, duration: 5,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
|
||||
|
||||
Skill::Invert => vec![ConstructEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}],
|
||||
Skill::InvertPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
|
||||
Skill::InvertPlusPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}],
|
||||
Skill::Invert => vec![ConstructEffect { effect: Effect::Invert, duration: 2, meta: None, tick: None }],
|
||||
Skill::InvertPlus => vec![ConstructEffect { effect: Effect::Invert, duration: 3, meta: None, tick: None }],
|
||||
Skill::InvertPlusPlus => vec![ConstructEffect { effect: Effect::Invert, duration: 4, meta: None, tick: None }],
|
||||
|
||||
Skill::Counter => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None}],
|
||||
Skill::CounterPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None}],
|
||||
Skill::CounterPlusPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None}],
|
||||
Skill::Counter => vec![ConstructEffect { effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None }],
|
||||
Skill::CounterPlus => vec![ConstructEffect { effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None }],
|
||||
Skill::CounterPlusPlus => vec![ConstructEffect { effect: Effect::Counter, duration: 1,
|
||||
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Reflect => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::ReflectPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::ReflectPlusPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::Reflect => vec![ConstructEffect { effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::ReflectPlus => vec![ConstructEffect { effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::ReflectPlusPlus => vec![ConstructEffect { effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
|
||||
Skill::Break => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
ConstructEffect {effect: Effect::Vulnerable, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
Skill::BreakPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
ConstructEffect {effect: Effect::Vulnerable, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
||||
Skill::BreakPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
ConstructEffect {effect: Effect::Vulnerable, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||
Skill::Break => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None },
|
||||
ConstructEffect { effect: Effect::Vulnerable, duration: 3,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::BreakPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None },
|
||||
ConstructEffect { effect: Effect::Vulnerable, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::BreakPlusPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None },
|
||||
ConstructEffect { effect: Effect::Vulnerable, duration: 4,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
|
||||
|
||||
Skill::Ruin => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::RuinPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::RuinPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::Ruin => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
Skill::RuinPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
Skill::RuinPlusPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
|
||||
Skill::Purge => vec![ConstructEffect {effect: Effect::Purge, duration: 2, meta: None, tick: None}],
|
||||
Skill::PurgePlus => vec![ConstructEffect {effect: Effect::Purge, duration: 3, meta: None, tick: None}],
|
||||
Skill::PurgePlusPlus => vec![ConstructEffect {effect: Effect::Purge, duration: 4, meta: None, tick: None}],
|
||||
Skill::Purge => vec![ConstructEffect { effect: Effect::Purge, duration: 2, meta: None, tick: None }],
|
||||
Skill::PurgePlus => vec![ConstructEffect { effect: Effect::Purge, duration: 3, meta: None, tick: None }],
|
||||
Skill::PurgePlusPlus => vec![ConstructEffect { effect: Effect::Purge, duration: 4, meta: None, tick: None }],
|
||||
|
||||
Skill::Link => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::LinkPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::LinkPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::Link => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
Skill::LinkPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
Skill::LinkPlusPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 1, meta: None, tick: None }],
|
||||
|
||||
Skill::Silence => vec![ConstructEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilencePlus => vec![ConstructEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilencePlusPlus => vec![ConstructEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::Silence => vec![ConstructEffect { effect: Effect::Silence, duration: 2, meta: None, tick: None }],
|
||||
Skill::SilencePlus => vec![ConstructEffect { effect: Effect::Silence, duration: 2, meta: None, tick: None }],
|
||||
Skill::SilencePlusPlus => vec![ConstructEffect { effect: Effect::Silence, duration: 2, meta: None, tick: None }],
|
||||
|
||||
Skill::Siphon => vec![ConstructEffect {effect: Effect::Siphon, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTick)), tick: None}],
|
||||
Skill::SiphonPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlus)), tick: None}],
|
||||
Skill::SiphonPlusPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlusPlus)), tick: None}],
|
||||
Skill::Siphon => vec![ConstructEffect { effect: Effect::Siphon, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTick)), tick: None }],
|
||||
Skill::SiphonPlus => vec![ConstructEffect { effect: Effect::Siphon, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlus)), tick: None }],
|
||||
Skill::SiphonPlusPlus => vec![ConstructEffect { effect: Effect::Siphon, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Sleep => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::SleepPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}],
|
||||
Skill::SleepPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 4, meta: None, tick: None}],
|
||||
Skill::Sleep => vec![ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None }],
|
||||
Skill::SleepPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 3, meta: None, tick: None }],
|
||||
Skill::SleepPlusPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 4, meta: None, tick: None }],
|
||||
|
||||
Skill::Restrict => vec![ConstructEffect {effect: Effect::Restrict, duration: 2, meta: None, tick: None}],
|
||||
Skill::RestrictPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 2, meta: None, tick: None}],
|
||||
Skill::RestrictPlusPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 2, meta: None, tick: None}],
|
||||
Skill::Restrict => vec![ConstructEffect { effect: Effect::Restrict, duration: 2, meta: None, tick: None }],
|
||||
Skill::RestrictPlus => vec![ConstructEffect { effect: Effect::Restrict, duration: 2, meta: None, tick: None }],
|
||||
Skill::RestrictPlusPlus => vec![ConstructEffect { effect: Effect::Restrict, duration: 2, meta: None, tick: None }],
|
||||
|
||||
Skill::Bash => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::Bash)), tick: None}],
|
||||
Skill::BashPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::BashPlus)), tick: None}],
|
||||
Skill::BashPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::BashPlusPlus)), tick: None}],
|
||||
Skill::Stun => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::Bash => vec![ConstructEffect { effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::Bash)), tick: None }],
|
||||
Skill::BashPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::BashPlus)), tick: None }],
|
||||
Skill::BashPlusPlus => vec![ConstructEffect { effect: Effect::Stun, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::BashPlusPlus)), tick: None }],
|
||||
Skill::Stun => vec![ConstructEffect { effect: Effect::Stun, duration: 2, meta: None, tick: None }],
|
||||
|
||||
Skill::Intercept => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
|
||||
Skill::InterceptPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
|
||||
Skill::InterceptPlusPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
|
||||
Skill::Intercept => vec![ConstructEffect { effect: Effect::Intercept, duration: 1, meta: None, tick: None }],
|
||||
Skill::InterceptPlus => vec![ConstructEffect { effect: Effect::Intercept, duration: 1, meta: None, tick: None }],
|
||||
Skill::InterceptPlusPlus => vec![ConstructEffect { effect: Effect::Intercept, duration: 1, meta: None, tick: None }],
|
||||
|
||||
Skill::Triage => vec![ConstructEffect {effect: Effect::Triage, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None}],
|
||||
Skill::TriagePlus => vec![ConstructEffect {effect: Effect::Triage, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}],
|
||||
Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}],
|
||||
Skill::Triage => vec![ConstructEffect { effect: Effect::Triage, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None }],
|
||||
Skill::TriagePlus => vec![ConstructEffect { effect: Effect::Triage, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None }],
|
||||
Skill::TriagePlusPlus => vec![ConstructEffect { effect: Effect::Triage, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None }],
|
||||
|
||||
Skill::Purify => vec![ConstructEffect { effect: Effect::Pure, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
Skill::PurifyPlus => vec![ConstructEffect { effect: Effect::Pure, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
||||
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
|
||||
Skill::PurifyPlusPlus => vec![ConstructEffect { effect: Effect::Pure, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
|
||||
|
||||
_ => {
|
||||
panic!("{:?} no skill effect", self);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user