fix electrify

This commit is contained in:
ntr 2019-12-19 14:58:59 +10:00
parent d0dec463e5
commit 0f7ce528c8
3 changed files with 48 additions and 1 deletions

View File

@ -1014,7 +1014,7 @@ impl Construct {
match meta { match meta {
Some(EffectMeta::CastOnHit(skill)) => Some(EffectMeta::CastOnHit(skill)) =>
casts.push(Cast::new(self.id, self.account, cast.target, *skill)), casts.push(Cast::new(self.id, self.account, cast.source, *skill)),
_ => panic!("no electrify skill {:?}", meta), _ => panic!("no electrify skill {:?}", meta),
}; };
} }

View File

@ -2168,6 +2168,46 @@ mod tests {
})); }));
} }
#[test]
fn electrify_test() {
let mut game = create_2v2_test_game();
let player_id = game.players[0].id;
let source = game.players[0].constructs[0].id;
let target = game.players[1].constructs[0].id;
game.resolve(Cast::new(source, player_id, target, Skill::Electrify));
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
let last = game.resolutions.len() - 1;
let resolutions = &game.resolutions[last];
assert!(resolutions.iter().any(|r| match r.event {
Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
construct == source && amount > 0 && colour == Colour::Blue,
_ => false,
}));
}
#[test]
fn counter_test() {
let mut game = create_2v2_test_game();
let player_id = game.players[0].id;
let source = game.players[0].constructs[0].id;
let target = game.players[1].constructs[0].id;
game.resolve(Cast::new(source, player_id, target, Skill::Counter));
game.resolve(Cast::new(source, player_id, target, Skill::Strike));
let last = game.resolutions.len() - 1;
let resolutions = &game.resolutions[last];
assert!(resolutions.iter().any(|r| match r.event {
Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
construct == source && amount > 0 && colour == Colour::Red,
_ => false,
}));
}
#[test] #[test]
fn absorb_test() { fn absorb_test() {
let mut game = create_2v2_test_game(); let mut game = create_2v2_test_game();

View File

@ -1691,6 +1691,13 @@ fn electrocute(cast: Cast, game: &mut Game, values: Electrocute) {
Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::ElectrocuteTick, speed: cast.speed, amount }) }, Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::ElectrocuteTick, speed: cast.speed, amount }) },
}, },
); );
game.action(cast,
Action::Damage {
construct: cast.target,
colour: Colour::Blue,
amount,
},
);
} }
fn electrocute_tick(cast: Cast, game: &mut Game) { fn electrocute_tick(cast: Cast, game: &mut Game) {