drain test
This commit is contained in:
parent
6cdecb2b37
commit
bec35ca46b
@ -349,15 +349,16 @@ impl Game {
|
||||
.collect::<Vec<Cryp>>();
|
||||
|
||||
// find their statuses with ticks
|
||||
let ticks = all_cryps
|
||||
let mut ticks = all_cryps
|
||||
.iter_mut()
|
||||
.flat_map(
|
||||
|c| c.effects
|
||||
.iter_mut()
|
||||
.filter_map(|e| e.tick)
|
||||
.collect::<Vec<Cast>>());
|
||||
.filter_map(|e| e.tick))
|
||||
.collect::<Vec<Cast>>();
|
||||
|
||||
// add them to the stack
|
||||
self.stack.append(&mut ticks);
|
||||
|
||||
self.stack.sort_unstable_by_key(|s| s.skill.speed());
|
||||
self.stack.reverse();
|
||||
@ -725,6 +726,7 @@ mod tests {
|
||||
.learn(Skill::TestStun)
|
||||
.learn(Skill::TestTouch)
|
||||
.learn(Skill::TestBlock)
|
||||
.learn(Skill::TestDrain)
|
||||
.learn(Skill::Block)
|
||||
.create();
|
||||
|
||||
@ -734,6 +736,7 @@ mod tests {
|
||||
.learn(Skill::TestStun)
|
||||
.learn(Skill::TestTouch)
|
||||
.learn(Skill::TestBlock)
|
||||
.learn(Skill::TestDrain)
|
||||
.learn(Skill::Block)
|
||||
.create();
|
||||
|
||||
@ -892,4 +895,35 @@ mod tests {
|
||||
assert!(game.team_by_id(x_team.id).cryps[0].is_stunned() == false);
|
||||
println!("{:#?}", game.log);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn drain_test() {
|
||||
let mut game = create_test_game();
|
||||
|
||||
let x_team = game.teams[0].clone();
|
||||
let y_team = game.teams[1].clone();
|
||||
|
||||
let x_cryp = x_team.cryps[0].clone();
|
||||
let y_cryp = y_team.cryps[0].clone();
|
||||
|
||||
let x_drain_id = game.add_skill(x_team.id, x_cryp.id, Some(y_team.id), Skill::TestDrain).unwrap();
|
||||
let y_touch_id = game.add_skill(y_team.id, y_cryp.id, Some(x_team.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.target_phase_start();
|
||||
|
||||
game.add_target(x_team.id, x_cryp.id, y_touch_id).unwrap();
|
||||
game.add_target(y_team.id, y_cryp.id, x_drain_id).unwrap();
|
||||
|
||||
game.resolve_phase_start();
|
||||
|
||||
game.add_skill(x_team.id, x_cryp.id, None, Skill::TestBlock).unwrap();
|
||||
game.add_skill(y_team.id, y_cryp.id, None, Skill::TestBlock).unwrap();
|
||||
|
||||
game.target_phase_start();
|
||||
|
||||
assert!(game.resolved.iter().any(|r| r.skill == Skill::DrainTick));
|
||||
|
||||
println!("{:#?}", game);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -190,6 +190,7 @@ pub enum Skill {
|
||||
TestTouch,
|
||||
TestStun,
|
||||
TestBlock,
|
||||
TestDrain,
|
||||
}
|
||||
|
||||
impl Skill {
|
||||
@ -272,6 +273,7 @@ impl Skill {
|
||||
Skill::TestTouch => None,
|
||||
Skill::TestStun => None,
|
||||
Skill::TestBlock => None,
|
||||
Skill::TestDrain => None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -355,6 +357,7 @@ impl Skill {
|
||||
Skill::TestTouch => 10,
|
||||
Skill::TestStun => 5,
|
||||
Skill::TestBlock => 10,
|
||||
Skill::TestDrain => 10,
|
||||
}
|
||||
}
|
||||
|
||||
@ -449,6 +452,7 @@ impl Skill {
|
||||
Skill::TestTouch => (),
|
||||
Skill::TestStun => stun(cryp, target, log),
|
||||
Skill::TestBlock => block(cryp, target, log),
|
||||
Skill::TestDrain => drain(cryp, target, log),
|
||||
};
|
||||
}
|
||||
|
||||
@ -459,6 +463,7 @@ impl Skill {
|
||||
Skill::Block => 1,
|
||||
|
||||
Skill::Decay => 3,
|
||||
Skill::Drain => 3,
|
||||
Skill::Triage => 3,
|
||||
|
||||
Skill::TestBlock => 1,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user