diff options
Diffstat (limited to 'src/game.rs')
-rw-r--r-- | src/game.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/game.rs b/src/game.rs index e3caf4e..2f7e5de 100644 --- a/src/game.rs +++ b/src/game.rs @@ -306,6 +306,8 @@ impl GameBoard { fn simulate_bombs(&mut self, actions: [Action; 2]) { // NB: Damage radius has the cell distance rounded UP, throwing range has the cell distance rounded DOWN + // TODO: Destroy health packs + for player_index in 0..actions.len() { if let Action::Bomb(p) = actions[player_index] { if self.map.at(p).is_some() { @@ -323,6 +325,7 @@ impl GameBoard { if self.map.at(target) == Some(true) { self.map.clear(target); // TODO: How does this score get assigned if both players lobbed a banana? + // (answer, currently all to A, but watch https://forum.entelect.co.za/t/scoring-with-simultaneous-banana-digs/766/1 self.players[player_index].moves_score += 7; } @@ -333,11 +336,10 @@ impl GameBoard { if let Some(target_worm) = target_own_worm { target_worm.health -= weapon_damage; + self.players[player_index].moves_score -= weapon_damage * 2; if target_worm.health <= 0 { self.players[player_index].moves_score -= 40; self.occupied_cells.remove(&target_worm.position); - } else { - self.players[player_index].moves_score -= weapon_damage * 2; } } @@ -348,11 +350,10 @@ impl GameBoard { .find(|w| w.position == target); if let Some(target_worm) = target_opponent_worm { target_worm.health -= weapon_damage; + self.players[player_index].moves_score += weapon_damage * 2; if target_worm.health <= 0 { self.players[player_index].moves_score += 40; self.occupied_cells.remove(&target_worm.position); - } else { - self.players[player_index].moves_score += weapon_damage * 2; } } } @@ -387,11 +388,10 @@ impl GameBoard { if let Some(target_worm) = target_own_worm { target_worm.health -= weapon_damage; + self.players[player_index].moves_score -= weapon_damage * 2; if target_worm.health <= 0 { self.players[player_index].moves_score -= 40; self.occupied_cells.remove(&target_worm.position); - } else { - self.players[player_index].moves_score -= weapon_damage * 2; } continue 'players_loop; } @@ -401,13 +401,13 @@ impl GameBoard { .worms .iter_mut() .find(|w| w.position == target); + if let Some(target_worm) = target_opponent_worm { target_worm.health -= weapon_damage; + self.players[player_index].moves_score += weapon_damage * 2; if target_worm.health <= 0 { self.players[player_index].moves_score += 40; self.occupied_cells.remove(&target_worm.position); - } else { - self.players[player_index].moves_score += weapon_damage * 2; } continue 'players_loop; |