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

View File

@ -10,6 +10,8 @@
* can't reset password without knowing password =\ * can't reset password without knowing password =\
* Display skill colours during combat
## SOON (Before or After PAX) ## SOON (Before or After PAX)
* bot game grind * bot game grind

View File

@ -74,8 +74,8 @@ function getObjects(resolution, stages, game, account) {
function getSequence(resolution) { function getSequence(resolution) {
if (!resolution.event) return []; if (!resolution.event) return [];
if (resolution.event[0] === 'Inversion') return []; if (resolution.event[0] === 'Inversion') return [];
if (['TargetKo', 'Ko'].includes(resolution.event[0])) return [];
if (['Skill', 'AoeSkill'].includes(resolution.event[0])) return ['START_SKILL', 'END_SKILL']; if (['Skill', 'AoeSkill'].includes(resolution.event[0])) return ['START_SKILL', 'END_SKILL'];
if (resolution.event[0] === 'Ko') return ['POST_SKILL'];
switch (resolution.stages) { switch (resolution.stages) {
case 'AllStages': return ['START_SKILL', 'END_SKILL', 'POST_SKILL']; case 'AllStages': return ['START_SKILL', 'END_SKILL', 'POST_SKILL'];

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() let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Absorb).unwrap().clone(); .find(|e| e.effect == Effect::Absorb).unwrap().clone();
match meta { match meta {
@ -316,7 +316,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
}; };
} }
if c == Colour::Red { 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() let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Counter).unwrap().clone(); .find(|e| e.effect == Effect::Counter).unwrap().clone();
match meta { 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 { 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)); let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
results.push(Resolution::new(source, target) results.push(Resolution::new(source, target)
.event(target.add_effect(reflect_skill, absorb)) .event(target.add_effect(reflect_skill, absorb))
.stages(EventStages::PostOnly)); .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;; return results;;
} }