diff --git a/core/src/construct.rs b/core/src/construct.rs index 32579e7b..c24a103f 100644 --- a/core/src/construct.rs +++ b/core/src/construct.rs @@ -1014,7 +1014,7 @@ impl Construct { match meta { 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), }; } diff --git a/core/src/game.rs b/core/src/game.rs index 917cec9d..6ce8bdab 100644 --- a/core/src/game.rs +++ b/core/src/game.rs @@ -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] fn absorb_test() { let mut game = create_2v2_test_game(); diff --git a/core/src/skill.rs b/core/src/skill.rs index 2ef42ba6..59588d25 100644 --- a/core/src/skill.rs +++ b/core/src/skill.rs @@ -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 }) }, }, ); + game.action(cast, + Action::Damage { + construct: cast.target, + colour: Colour::Blue, + amount, + }, + ); } fn electrocute_tick(cast: Cast, game: &mut Game) {