skip co, remove absorb buff when you get absorption, don't trigger some effects when ko

This commit is contained in:
Mashy
2019-09-29 17:56:05 +10:00
parent dab3b8da53
commit 765d82bc62
3 changed files with 13 additions and 3 deletions
+10 -2
View File
@@ -305,7 +305,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
};
}
if target.affected(Effect::Absorb) {
if target.affected(Effect::Absorb) && !target.is_ko() {
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Absorb).unwrap().clone();
match meta {
@@ -316,7 +316,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
};
}
if c == Colour::Red {
if target.affected(Effect::Counter) {
if target.affected(Effect::Counter) && !target.is_ko() {
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Counter).unwrap().clone();
match meta {
@@ -1584,9 +1584,17 @@ fn absorb(source: &mut Construct, target: &mut Construct, mut results: Resolutio
fn absorption(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions {
let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
results.push(Resolution::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);
results.push(Resolution::new(source, target)
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })
.stages(EventStages::PostOnly));
return results;;
}