rework recharge return into vec
This commit is contained in:
parent
241467ec48
commit
e01de8273e
@ -549,11 +549,14 @@ impl Construct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn recharge(&mut self, skill: Skill, red_amount: u64, blue_amount: u64) -> (Event, EventStages) {
|
pub fn recharge(&mut self, skill: Skill, red_amount: u64, blue_amount: u64) -> Vec<(Event, EventStages)> {
|
||||||
|
let mut events = vec![];
|
||||||
|
|
||||||
// Should red type immunity block recharge???
|
// Should red type immunity block recharge???
|
||||||
let mut stages = EventStages::PostOnly;
|
let mut stages = EventStages::PostOnly;
|
||||||
if let Some(immunity) = self.immune(skill) {
|
if let Some(immunity) = self.immune(skill) {
|
||||||
return (Event::Immunity { skill, immunity }, stages);
|
events.push((Event::Immunity { skill, immunity }, stages));
|
||||||
|
return events;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do we need inversion?
|
// Do we need inversion?
|
||||||
@ -571,7 +574,8 @@ impl Construct {
|
|||||||
stages = EventStages::NoStages;
|
stages = EventStages::NoStages;
|
||||||
}
|
}
|
||||||
|
|
||||||
(Event::Recharge { red, blue, skill }, stages)
|
events.push((Event::Recharge { red, blue, skill }, stages));
|
||||||
|
return events;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn deal_green_damage(&mut self, skill: Skill, amount: u64) -> Vec<Event> {
|
pub fn deal_green_damage(&mut self, skill: Skill, amount: u64) -> Vec<Event> {
|
||||||
|
|||||||
@ -1408,10 +1408,12 @@ fn sleep(source: &mut Construct, target: &mut Construct, mut results: Resolution
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn sustain(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn sustain(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
let red_amount = source.red_power().pct(skill.multiplier());
|
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||||
let (e, stages) = target.recharge(skill, red_amount, 0);
|
|
||||||
results.push(Resolution::new(source, target).event(e).stages(stages));
|
let red_amount = source.red_power().pct(skill.multiplier());
|
||||||
|
target.recharge(skill, red_amount, 0)
|
||||||
|
.into_iter()
|
||||||
|
.for_each(|(e, stages)| results.push(Resolution::new(source, target).event(e).stages(stages)));
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@ -1421,8 +1423,9 @@ fn intercept(source: &mut Construct, target: &mut Construct, mut results: Resolu
|
|||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, intercept)));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, intercept)));
|
||||||
|
|
||||||
let red_amount = source.red_power().pct(skill.multiplier());
|
let red_amount = source.red_power().pct(skill.multiplier());
|
||||||
let (e, stages) = target.recharge(skill, red_amount, 0);
|
target.recharge(skill, red_amount, 0)
|
||||||
results.push(Resolution::new(source, target).event(e).stages(stages));
|
.into_iter()
|
||||||
|
.for_each(|(e, stages)| results.push(Resolution::new(source, target).event(e).stages(stages)));
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@ -1684,8 +1687,9 @@ fn ruin(source: &mut Construct, target: &mut Construct, mut results: Resolutions
|
|||||||
fn absorb(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn absorb(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||||
let blue_amount = source.blue_power().pct(skill.multiplier());
|
let blue_amount = source.blue_power().pct(skill.multiplier());
|
||||||
let (e, stages) = target.recharge(skill, 0, blue_amount);
|
target.recharge(skill, 0, blue_amount)
|
||||||
results.push(Resolution::new(source, target).event(e).stages(stages));
|
.into_iter()
|
||||||
|
.for_each(|(e, stages)| results.push(Resolution::new(source, target).event(e).stages(stages)));
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1724,8 +1728,10 @@ fn reflect(source: &mut Construct, target: &mut Construct, mut results: Resoluti
|
|||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||||
|
|
||||||
let blue_amount = source.blue_power().pct(skill.multiplier());
|
let blue_amount = source.blue_power().pct(skill.multiplier());
|
||||||
let (e, stages) = target.recharge(skill, 0, blue_amount);
|
target.recharge(skill, 0, blue_amount)
|
||||||
results.push(Resolution::new(source, target).event(e).stages(stages));
|
.into_iter()
|
||||||
|
.for_each(|(e, stages)| results.push(Resolution::new(source, target).event(e).stages(stages)));
|
||||||
|
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1733,8 +1739,10 @@ fn recharge(source: &mut Construct, target: &mut Construct, mut results: Resolut
|
|||||||
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 red_amount = source.red_power().pct(skill.multiplier());
|
let red_amount = source.red_power().pct(skill.multiplier());
|
||||||
let blue_amount = source.blue_power().pct(skill.multiplier());
|
let blue_amount = source.blue_power().pct(skill.multiplier());
|
||||||
let (e, stages) = target.recharge(skill, red_amount, blue_amount);
|
target.recharge(skill, red_amount, blue_amount)
|
||||||
results.push(Resolution::new(source, target).event(e).stages(stages));
|
.into_iter()
|
||||||
|
.for_each(|(e, stages)| results.push(Resolution::new(source, target).event(e).stages(stages)));
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user