purge / purify removes all effects
This commit is contained in:
parent
6f453c45fc
commit
ab7625def0
@ -168,6 +168,9 @@ function getText(resolution) {
|
|||||||
|
|
||||||
if (type === 'Removal') {
|
if (type === 'Removal') {
|
||||||
const { effect, construct_effects: effects } = event;
|
const { effect, construct_effects: effects } = event;
|
||||||
|
if (!effect) {
|
||||||
|
return { text: 'Effect Removal', css: '', effects };
|
||||||
|
}
|
||||||
return { text: `-${effect}`, css: '', effects };
|
return { text: `-${effect}`, css: '', effects };
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -505,7 +505,7 @@ pub enum Event {
|
|||||||
AoeSkill { skill: Skill },
|
AoeSkill { skill: Skill },
|
||||||
Skill { skill: Skill },
|
Skill { skill: Skill },
|
||||||
Effect { skill: Skill, effect: Effect, duration: u8, construct_effects: Vec<ConstructEffect> },
|
Effect { skill: Skill, effect: Effect, duration: u8, construct_effects: Vec<ConstructEffect> },
|
||||||
Removal { effect: Effect, construct_effects: Vec<ConstructEffect> },
|
Removal { effect: Option<Effect>, construct_effects: Vec<ConstructEffect> },
|
||||||
TargetKo { skill: Skill },
|
TargetKo { skill: Skill },
|
||||||
// skill not necessary but makes it neater as all events are arrays in js
|
// skill not necessary but makes it neater as all events are arrays in js
|
||||||
Ko (),
|
Ko (),
|
||||||
@ -1630,7 +1630,7 @@ fn electrocute(source: &mut Construct, target: &mut Construct, mut results: Reso
|
|||||||
Some(eff) => {
|
Some(eff) => {
|
||||||
let ce = source.effects.remove(eff);
|
let ce = source.effects.remove(eff);
|
||||||
results.push(Resolution::new(source, source)
|
results.push(Resolution::new(source, source)
|
||||||
.event(Event::Removal { effect: ce.effect, construct_effects: source.effects.clone() })
|
.event(Event::Removal { effect: Some(ce.effect), construct_effects: source.effects.clone() })
|
||||||
.stages(EventStages::PostOnly));
|
.stages(EventStages::PostOnly));
|
||||||
}
|
}
|
||||||
None => ()
|
None => ()
|
||||||
@ -1701,7 +1701,7 @@ fn absorption(source: &mut Construct, target: &mut Construct, mut results: Resol
|
|||||||
let ce = target.effects.remove(absorb_index);
|
let ce = target.effects.remove(absorb_index);
|
||||||
|
|
||||||
results.push(Resolution::new(source, target)
|
results.push(Resolution::new(source, target)
|
||||||
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })
|
.event(Event::Removal { effect: Some(ce.effect), construct_effects: target.effects.clone() })
|
||||||
.stages(EventStages::PostOnly));
|
.stages(EventStages::PostOnly));
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
@ -1816,58 +1816,31 @@ fn silence(source: &mut Construct, target: &mut Construct, mut results: Resoluti
|
|||||||
|
|
||||||
fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(Event::Skill { skill }).stages(EventStages::StartEnd));
|
results.push(Resolution::new(source, target).event(Event::Skill { skill }).stages(EventStages::StartEnd));
|
||||||
while let Some(i) = target.effects
|
if target.effects.len() > 0 {
|
||||||
.iter()
|
target.effects.clear();
|
||||||
.position(|ce| {
|
results.push(Resolution::new(source, target)
|
||||||
if let Some(c) = ce.effect.colour() {
|
.event(Event::Removal { effect: None, construct_effects: target.effects.clone() })
|
||||||
c == Colour::Green
|
.stages(EventStages::PostOnly));
|
||||||
} else {
|
}
|
||||||
false
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
let ce = target.effects.remove(i);
|
|
||||||
results.push(Resolution::new(source, target)
|
|
||||||
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })
|
|
||||||
.stages(EventStages::PostOnly));
|
|
||||||
}
|
|
||||||
|
|
||||||
let effect = skill.effect()[0];
|
let effect = skill.effect()[0];
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
||||||
|
|
||||||
/*let mut turns = 1;
|
|
||||||
for cs in target.skills.iter_mut() {
|
|
||||||
if Effect::Purge.disables_skill(cs.skill) {
|
|
||||||
turns += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if turns > 1 {
|
|
||||||
effect.duration = effect.duration * turns;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(Event::Skill { skill }).stages(EventStages::StartEnd));
|
results.push(Resolution::new(source, target).event(Event::Skill { skill }).stages(EventStages::StartEnd));
|
||||||
let amount = source.green_power().pct(skill.multiplier());
|
if target.effects.len() > 0 {
|
||||||
while let Some(i) = target.effects
|
let amount = source.green_power().pct(skill.multiplier().saturating_mul(target.effects.len() as u64));
|
||||||
.iter()
|
target.effects.clear();
|
||||||
.position(|ce| {
|
results.push(Resolution::new(source, target)
|
||||||
if let Some(c) = ce.effect.colour() {
|
.event(Event::Removal { effect: None, construct_effects: target.effects.clone() })
|
||||||
[Colour::Red, Colour::Blue].contains(&c)
|
.stages(EventStages::PostOnly));
|
||||||
} else {
|
target.deal_green_damage(skill, amount)
|
||||||
false
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
let ce = target.effects.remove(i);
|
|
||||||
results.push(Resolution::new(source, target)
|
|
||||||
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })
|
|
||||||
.stages(EventStages::PostOnly));
|
|
||||||
target.deal_green_damage(skill, amount)
|
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly)));
|
.for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user