diff --git a/server/src/skill.rs b/server/src/skill.rs index 966771c0..85f67625 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -299,7 +299,16 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) -> .find(|e| e.effect == Effect::Electric).unwrap().clone(); match meta { Some(EffectMeta::Skill(s)) => { - resolutions = electrocute(&mut target, &mut source, resolutions, s); + // Gurad against reflect overflow + if !(source.affected(Effect::Reflect) && target.affected(Effect::Reflect)) { + // Check reflect don't bother if electrocute is procing on death + if source.affected(Effect::Reflect) && !target.is_ko() { + resolutions.push(Resolution::new(&target, &source).event(Event::Reflection { skill: s }).stages(EventStages::EndPost)); + resolutions = electrocute(&mut source, &mut target, resolutions, s); + } else { + resolutions = electrocute(&mut target, &mut source, resolutions, s); + } + } }, _ => panic!("no electrify skill"), };