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