tests back
This commit is contained in:
parent
bf4038b09d
commit
f63a8b3f8f
497
core/src/game.rs
497
core/src/game.rs
@ -1647,316 +1647,315 @@ mod tests {
|
||||
|
||||
// }
|
||||
|
||||
// #[test]
|
||||
// fn upkeep_test() {
|
||||
// let mut game = create_2v2_test_game();
|
||||
// game.players[0].set_ready(true);
|
||||
// game.phase_end = Some(Utc::now().checked_sub_signed(Duration::seconds(500)).unwrap());
|
||||
// game = game.upkeep();
|
||||
// // assert!(game.players[1].warnings == 1);
|
||||
// }
|
||||
#[test]
|
||||
fn upkeep_test() {
|
||||
let mut game = create_2v2_test_game();
|
||||
game.players[0].set_ready(true);
|
||||
game.phase_end = Some(Utc::now().checked_sub_signed(Duration::seconds(500)).unwrap());
|
||||
game = game.upkeep();
|
||||
// assert!(game.players[1].warnings == 1);
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn attack_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.add_skill(player_id, source, target, Skill::Attack).unwrap();
|
||||
// game = game.resolve_phase_start();
|
||||
// }
|
||||
#[test]
|
||||
fn attack_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.add_skill(player_id, source, target, Skill::Attack).unwrap();
|
||||
game = game.resolve_phase_start();
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn bash_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;
|
||||
#[test]
|
||||
fn bash_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::Bash));
|
||||
// }
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Bash));
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn slay_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;
|
||||
#[test]
|
||||
fn slay_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::Slay));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Slay));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
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 == target && amount > 0 && colour == Colour::Red,
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
|
||||
construct == target && amount > 0 && colour == Colour::Red,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
|
||||
// construct == target && amount > 0 && colour == Colour::Red,
|
||||
// _ => false,
|
||||
// }));
|
||||
// }
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
|
||||
construct == target && amount > 0 && colour == Colour::Red,
|
||||
_ => false,
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
// #[test]
|
||||
// fn purify_test() {
|
||||
// let mut game = create_2v2_test_game();
|
||||
// let source_player_id = game.players[0].id;
|
||||
// let target_player_id = game.players[1].id;
|
||||
// let source = game.players[0].constructs[0].id;
|
||||
// let target = game.players[1].constructs[0].id;
|
||||
#[test]
|
||||
fn purify_test() {
|
||||
let mut game = create_2v2_test_game();
|
||||
let source_player_id = game.players[0].id;
|
||||
let target_player_id = game.players[1].id;
|
||||
let source = game.players[0].constructs[0].id;
|
||||
let target = game.players[1].constructs[0].id;
|
||||
|
||||
// game.resolve(Cast::new(source, source_player_id, target, Skill::Decay));
|
||||
game.resolve(Cast::new(source, source_player_id, target, Skill::Decay));
|
||||
|
||||
// // don't mention 3 we volvo now
|
||||
// assert!(game.players[1].constructs[0].effects.len() == 3);
|
||||
// don't mention 3 we volvo now
|
||||
assert!(game.players[1].constructs[0].effects.len() == 3);
|
||||
|
||||
// game.resolve(Cast::new(target, target_player_id, target, Skill::Purify));
|
||||
game.resolve(Cast::new(target, target_player_id, target, Skill::Purify));
|
||||
|
||||
// assert!(game.players[1].constructs[0].effects.len() == 1);
|
||||
assert!(game.players[1].constructs[0].effects.len() == 1);
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Effect { construct, effect, duration: _, display: _ } =>
|
||||
// construct == target && effect == Effect::Pure,
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Effect { construct, effect, duration: _, display: _ } =>
|
||||
construct == target && effect == Effect::Pure,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// // Check for healing here
|
||||
// Check for healing here
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn invert_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;
|
||||
#[test]
|
||||
fn invert_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::Strike));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Invert));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Strike));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Strike));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Invert));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Strike));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Healing { construct, colour, amount, overhealing: _, display: _, } =>
|
||||
// construct == target && amount > 0 && colour == Colour::Green,
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Healing { construct, colour, amount, overhealing: _, display: _, } =>
|
||||
construct == target && amount > 0 && colour == Colour::Green,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Healing { construct, colour, amount, overhealing: _, display: _ } =>
|
||||
// construct == target && amount > 0 && colour == Colour::Red,
|
||||
// _ => false,
|
||||
// }));
|
||||
// }
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Healing { construct, colour, amount, overhealing: _, display: _ } =>
|
||||
construct == target && amount > 0 && colour == Colour::Red,
|
||||
_ => false,
|
||||
}));
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn siphon_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;
|
||||
#[test]
|
||||
fn siphon_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::Siphon));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Siphon));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
|
||||
// // siphon should
|
||||
// // apply effect // damage target // heal source
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Effect { construct, effect, duration: _, display: _ } =>
|
||||
// construct == target && effect == Effect::Siphon,
|
||||
// _ => false,
|
||||
// }));
|
||||
// siphon should
|
||||
// apply effect // damage target // heal source
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Effect { construct, effect, duration: _, display: _ } =>
|
||||
construct == target && effect == Effect::Siphon,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
|
||||
// construct == target && amount > 0 && colour == Colour::Blue,
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation: _, display: _ } =>
|
||||
construct == target && amount > 0 && colour == Colour::Blue,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Healing { construct, colour, amount: _, overhealing: _, display: _ } =>
|
||||
// construct == source && colour == Colour::Green,
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Healing { construct, colour, amount: _, overhealing: _, display: _ } =>
|
||||
construct == source && colour == Colour::Green,
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// game = game.resolve_phase_start();
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
// // que ota?
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Siphon));
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
// que ota?
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Siphon));
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
|
||||
// let damage_resolutions.iter().filter(|r| match r.event {
|
||||
// Event::Damage { construct: _, colour: _, amount: _, mitigation: _, display: _ } => true,
|
||||
// _ => false,
|
||||
// }).count();
|
||||
let damage_events = resolutions.iter().filter(|r| match r.event {
|
||||
Event::Damage { construct: _, colour: _, amount: _, mitigation: _, display: _ } => true,
|
||||
_ => false,
|
||||
}).count();
|
||||
|
||||
// assert_eq!(damage_events, 1);
|
||||
// }
|
||||
assert_eq!(damage_events, 1);
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn reflect_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;
|
||||
#[test]
|
||||
fn reflect_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::Reflect));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Reflect));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
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,
|
||||
// }));
|
||||
// }
|
||||
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 absorb_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;
|
||||
#[test]
|
||||
fn absorb_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::Absorb));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Absorb));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
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: _ } => {
|
||||
// assert!(construct == target && amount > 0 && colour == Colour::Blue && r.skill == Skill::Blast);
|
||||
// resolutions.iter().any(|r| match r.event {
|
||||
// Event::Meta { construct, effect, meta } =>
|
||||
// construct == target && effect == Effect::Absorption && {
|
||||
// match meta {
|
||||
// EffectMeta::AddedDamage(added_dmg) => added_dmg == amount,
|
||||
// _ => false,
|
||||
// }
|
||||
// },
|
||||
// _ => false,
|
||||
// })
|
||||
// },
|
||||
// _ => false,
|
||||
// }));
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation: _, display: _ } => {
|
||||
assert!(construct == target && amount > 0 && colour == Colour::Blue && r.skill == Skill::Blast);
|
||||
resolutions.iter().any(|r| match r.event {
|
||||
Event::Meta { construct, effect, meta } =>
|
||||
construct == target && effect == Effect::Absorption && {
|
||||
match meta {
|
||||
EffectMeta::AddedDamage(added_dmg) => added_dmg == amount,
|
||||
_ => false,
|
||||
}
|
||||
},
|
||||
_ => false,
|
||||
})
|
||||
},
|
||||
_ => false,
|
||||
}));
|
||||
|
||||
// assert!(match game.players[1].constructs[0].effects[0].meta {
|
||||
// Some(EffectMeta::AddedDamage(d)) => d,
|
||||
// _ => 0
|
||||
// // 320 base blue power and 125 base blue life
|
||||
// } == 320.pct(Skill::Blast.multiplier()) - 125);
|
||||
assert!(match game.players[1].constructs[0].effects[0].meta {
|
||||
Some(EffectMeta::AddedDamage(d)) => d,
|
||||
_ => 0
|
||||
// 320 base blue power and 125 base blue life
|
||||
} == 320.pct(Skill::Blast.multiplier()) - 125);
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn absorb_multi_damage_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;
|
||||
#[test]
|
||||
fn absorb_multi_damage_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::Blast));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
// // Abosrb restores blue life here
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Absorb));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
// Abosrb restores blue life here
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Absorb));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
|
||||
// assert!(match game.players[1].constructs[0].effects[0].meta {
|
||||
// Some(EffectMeta::AddedDamage(d)) => d,
|
||||
// _ => 0
|
||||
// // 320 base blue power and 125 base blue life
|
||||
// } == 320.pct(Skill::Blast.multiplier()) - 125);
|
||||
// }
|
||||
assert!(match game.players[1].constructs[0].effects[0].meta {
|
||||
Some(EffectMeta::AddedDamage(d)) => d,
|
||||
_ => 0
|
||||
// 320 base blue power and 125 base blue life
|
||||
} == 320.pct(Skill::Blast.multiplier()) - 125);
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn multi_reflect_test() {
|
||||
// let mut game = create_2v2_test_game();
|
||||
// let player_id = game.players[0].id;
|
||||
// let target_player_id = game.players[1].id;
|
||||
#[test]
|
||||
fn multi_reflect_test() {
|
||||
let mut game = create_2v2_test_game();
|
||||
let player_id = game.players[0].id;
|
||||
let target_player_id = game.players[1].id;
|
||||
|
||||
// let source = game.players[0].constructs[0].id;
|
||||
// let target = game.players[1].constructs[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, source, Skill::Reflect));
|
||||
// game.resolve(Cast::new(target, target_player_id, target, Skill::Reflect));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
game.resolve(Cast::new(source, player_id, source, Skill::Reflect));
|
||||
game.resolve(Cast::new(target, target_player_id, target, Skill::Reflect));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Blast));
|
||||
|
||||
// assert!(game.players[0].constructs[0].is_ko() == false);
|
||||
// assert!(game.players[1].constructs[0].is_ko() == false);
|
||||
// }
|
||||
assert!(game.players[0].constructs[0].is_ko() == false);
|
||||
assert!(game.players[1].constructs[0].is_ko() == false);
|
||||
}
|
||||
|
||||
// // refer fixme.md (infinite counterattack loop)
|
||||
// /*#[test]
|
||||
// fn multi_counter_test() {
|
||||
// let mut game = create_2v2_test_game();
|
||||
// let player_id = game.players[0].id;
|
||||
// let target_player_id = game.players[1].id;
|
||||
// refer fixme.md (infinite counterattack loop)
|
||||
/*#[test]
|
||||
fn multi_counter_test() {
|
||||
let mut game = create_2v2_test_game();
|
||||
let player_id = game.players[0].id;
|
||||
let target_player_id = game.players[1].id;
|
||||
|
||||
// let source = game.players[0].constructs[0].id;
|
||||
// let target = game.players[1].constructs[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, source, Skill::Counter));
|
||||
// game.resolve(Cast::new(target, target_player_id, target, Skill::Counter));
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Attack));
|
||||
game.resolve(Cast::new(source, player_id, source, Skill::Counter));
|
||||
game.resolve(Cast::new(target, target_player_id, target, Skill::Counter));
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Attack));
|
||||
|
||||
// assert!(game.players[0].constructs[0].is_ko() == false);
|
||||
// assert!(game.players[1].constructs[0].is_ko() == false);
|
||||
// }*/
|
||||
assert!(game.players[0].constructs[0].is_ko() == false);
|
||||
assert!(game.players[1].constructs[0].is_ko() == false);
|
||||
}*/
|
||||
|
||||
// #[test]
|
||||
// fn intercept_test() {
|
||||
#[test]
|
||||
fn intercept_test() {
|
||||
|
||||
// let mut game = create_2v2_test_game();
|
||||
let mut game = create_2v2_test_game();
|
||||
|
||||
// let player_id = game.players[0].id;
|
||||
// let other_player_id = game.players[1].id;
|
||||
let player_id = game.players[0].id;
|
||||
let other_player_id = game.players[1].id;
|
||||
|
||||
// let source = game.players[0].constructs[0].id;
|
||||
// let target = game.players[1].constructs[0].id;
|
||||
// let interceptor = game.players[1].constructs[1].id;
|
||||
let source = game.players[0].constructs[0].id;
|
||||
let target = game.players[1].constructs[0].id;
|
||||
let interceptor = game.players[1].constructs[1].id;
|
||||
|
||||
// // Cast intercept
|
||||
// game.resolve(Cast::new(interceptor, other_player_id, interceptor, Skill::Intercept));
|
||||
// // Enemy casts skill on target which as a teammate intercepting
|
||||
// game.resolve(Cast::new(source, player_id, target, Skill::Attack));
|
||||
// // Intercepting teammate attacks someone on same team
|
||||
// game.resolve(Cast::new(interceptor, other_player_id, target, Skill::Attack));
|
||||
// Cast intercept
|
||||
game.resolve(Cast::new(interceptor, other_player_id, interceptor, Skill::Intercept));
|
||||
// Enemy casts skill on target which as a teammate intercepting
|
||||
game.resolve(Cast::new(source, player_id, target, Skill::Attack));
|
||||
// Intercepting teammate attacks someone on same team
|
||||
game.resolve(Cast::new(interceptor, other_player_id, target, Skill::Attack));
|
||||
|
||||
// let last = game.resolutions.len() - 1;
|
||||
// let resolutions = &game.resolutions[last];
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
|
||||
// // There should be no damage events on the target
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Damage { construct, colour, amount, mitigation, display: _ } =>
|
||||
// construct == target && (amount > 0 || mitigation > 0) && colour == Colour::Red,
|
||||
// _ => false,
|
||||
// }) == false);
|
||||
// There should be no damage events on the target
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation, display: _ } =>
|
||||
construct == target && (amount > 0 || mitigation > 0) && colour == Colour::Red,
|
||||
_ => false,
|
||||
}) == false);
|
||||
|
||||
// // Should be damage events on the interceptor
|
||||
// assert!(resolutions.iter().any(|r| match r.event {
|
||||
// Event::Damage { construct, colour, amount, mitigation, display: _ } =>
|
||||
// construct == interceptor && (amount > 0 || mitigation > 0) && colour == Colour::Red,
|
||||
// _ => false,
|
||||
// }));
|
||||
}
|
||||
// Should be damage events on the interceptor
|
||||
assert!(resolutions.iter().any(|r| match r.event {
|
||||
Event::Damage { construct, colour, amount, mitigation, display: _ } =>
|
||||
construct == interceptor && (amount > 0 || mitigation > 0) && colour == Colour::Red,
|
||||
_ => false,
|
||||
}));
|
||||
}
|
||||
|
||||
/*
|
||||
#[test]
|
||||
fn tick_speed_tests() {
|
||||
let mut game = create_2v2_test_game();
|
||||
@ -1988,5 +1987,5 @@ mod tests {
|
||||
let last = game.resolutions.len() - 1;
|
||||
let resolutions = &game.resolutions[last];
|
||||
assert!(Skill::SiphonTick == resolutions[0].skill);
|
||||
}*/
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1248,7 +1248,7 @@ fn absorption(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 3, meta: Some(EffectMeta::AddedDamage(0)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::SetEffectMeta {
|
||||
construct: cast.source,
|
||||
effect: Effect::Absorption,
|
||||
@ -1270,7 +1270,7 @@ fn absorption_plus(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 4, meta: Some(EffectMeta::AddedDamage(0)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::SetEffectMeta {
|
||||
construct: cast.target,
|
||||
effect: Effect::Absorption,
|
||||
@ -1292,7 +1292,7 @@ fn absorption_plus_plus(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Absorption, duration: 5, meta: Some(EffectMeta::AddedDamage(0)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::SetEffectMeta {
|
||||
construct: cast.target,
|
||||
effect: Effect::Absorption,
|
||||
@ -1316,7 +1316,7 @@ fn banish(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.target, stat: Stat::BlueLife }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Banish, duration: 2, meta: None }
|
||||
@ -1342,7 +1342,7 @@ fn bash(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Stun, duration: 2, meta: None }
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::IncreaseCooldowns {
|
||||
construct: cast.target,
|
||||
turns: 1,
|
||||
@ -1505,14 +1505,14 @@ fn decay(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 2, meta:
|
||||
Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::DecayTick }) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decayed, duration: 1, meta: None }, // immunity to additional ticks
|
||||
@ -1534,14 +1534,14 @@ fn decay_plus(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta:
|
||||
Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::DecayTickPlus }) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decayed, duration: 1, meta: None }, // immunity to additional ticks
|
||||
@ -1563,14 +1563,14 @@ fn decay_plus_plus(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decay, duration: 4, meta:
|
||||
Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::DecayTickPlusPlus }) },
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Decayed, duration: 1, meta: None }, // immunity to additional ticks
|
||||
@ -1880,7 +1880,7 @@ fn purify(cast: Cast, game: &mut Game) {
|
||||
amount,
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(150)) }
|
||||
@ -1905,7 +1905,7 @@ fn purify_plus(cast: Cast, game: &mut Game) {
|
||||
amount,
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(175)) }
|
||||
@ -1930,7 +1930,7 @@ fn purify_plus_plus(cast: Cast, game: &mut Game) {
|
||||
amount,
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(200)) }
|
||||
@ -2020,13 +2020,13 @@ fn siphon(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::BluePower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphoned, duration: 1, meta: None }, // immunity to additional ticks
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Heal {
|
||||
construct: cast.source,
|
||||
colour: Colour::Green,
|
||||
@ -2050,13 +2050,13 @@ fn siphon_plus(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::BluePower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphoned, duration: 1, meta: None }, // immunity to additional ticks
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Heal {
|
||||
construct: cast.source,
|
||||
colour: Colour::Green,
|
||||
@ -2080,13 +2080,13 @@ fn siphon_plus_plus(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::BluePower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Siphoned, duration: 1, meta: None }, // immunity to additional ticks
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Heal {
|
||||
construct: cast.source,
|
||||
colour: Colour::Green,
|
||||
@ -2109,7 +2109,7 @@ fn siphon_tick(cast: Cast, game: &mut Game) {
|
||||
effect: ConstructEffect { effect: Effect::Siphoned, duration: 1, meta: None }, // immunity to additional ticks
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Heal {
|
||||
construct: cast.source,
|
||||
colour: Colour::Green,
|
||||
@ -2184,16 +2184,16 @@ fn sleep_plus_plus(cast: Cast, game: &mut Game) {
|
||||
}
|
||||
|
||||
fn silence(cast: Cast, game: &mut Game) {
|
||||
let bp = game.value(Value::Stat { construct: cast.source, stat: Stat::GreenPower });
|
||||
let silences = game.value(Value::ColourSkills { construct: cast.target, colour: Colour::Blue });
|
||||
let amount = bp.pct(45usize.saturating_mul(silences));
|
||||
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Silence, duration: 2, meta: None },
|
||||
}
|
||||
);
|
||||
|
||||
let bp = game.value(Value::Stat { construct: cast.source, stat: Stat::GreenPower });
|
||||
let silences = game.value(Value::ColourSkills { construct: cast.target, colour: Colour::Blue });
|
||||
let amount = bp.pct(45usize.saturating_mul(silences));
|
||||
game.action(cast,
|
||||
Action::Damage {
|
||||
construct: cast.target,
|
||||
@ -2244,7 +2244,7 @@ fn triage(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::GreenPower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Triaged, duration: 1, meta: None },
|
||||
@ -2267,7 +2267,7 @@ fn triage_plus(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::GreenPower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Triaged, duration: 1, meta: None },
|
||||
@ -2290,7 +2290,7 @@ fn triage_plus_plus(cast: Cast, game: &mut Game) {
|
||||
amount: game.value(Value::Stat { construct: cast.source, stat: Stat::GreenPower }).pct(cast.skill.multiplier()),
|
||||
}
|
||||
);
|
||||
game.action(cast,
|
||||
game.action(cast,
|
||||
Action::Effect {
|
||||
construct: cast.target,
|
||||
effect: ConstructEffect { effect: Effect::Triaged, duration: 1, meta: None },
|
||||
@ -2658,6 +2658,3 @@ mod tests {
|
||||
// assert!(y.disabled(Skill::Heal).is_some());
|
||||
// }
|
||||
}
|
||||
|
||||
// // haste_strike_check(game)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user