mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-25 12:25:10 -08:00
random system damage on hit
This commit is contained in:
@@ -86,7 +86,6 @@ fn move_enterprise(course: u8, warp_speed: f32, galaxy: &mut Galaxy) {
|
||||
view::hit_edge(&end);
|
||||
}
|
||||
|
||||
|
||||
if ship.quadrant != end.quadrant {
|
||||
view::enter_quadrant(&end.quadrant);
|
||||
|
||||
|
||||
@@ -60,7 +60,24 @@ impl Enterprise {
|
||||
}
|
||||
|
||||
view::shields_hit(self.shields);
|
||||
|
||||
// take damage if strength is greater than 20
|
||||
if hit_strength >= 20 {
|
||||
self.take_damage(hit_strength)
|
||||
}
|
||||
}
|
||||
|
||||
fn take_damage(&mut self, hit_strength: u16) {
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
let hit_past_shield = hit_strength as f32 / self.shields as f32;
|
||||
if rng.gen::<f32>() > 0.6 || hit_past_shield < 0.02 {
|
||||
return
|
||||
}
|
||||
|
||||
let system = systems::ALL[rng.gen_range(0..systems::ALL.len())].to_string();
|
||||
let damage = hit_past_shield + rng.gen::<f32>() * 0.5;
|
||||
self.damaged.entry(system).and_modify(|d| *d += damage).or_insert(damage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,9 @@ Started after movement and display of stats was finished (no energy management o
|
||||
- [x] shields
|
||||
- [x] shield control
|
||||
- [x] shield hit absorption
|
||||
- [ ] subsystem damage
|
||||
- and support for reports
|
||||
- [x] subsystem damage
|
||||
- [ ] and support for reports
|
||||
- [ ] random system damage on move
|
||||
- [ ] lrs?
|
||||
- [ ] stranded...
|
||||
- [ ] stop before hitting an object
|
||||
|
||||
Reference in New Issue
Block a user