diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2019-06-28 22:46:39 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2019-06-28 22:46:39 +0200 |
commit | 4c5331b9b5633fd500c79ada42fc08b3cb986631 (patch) | |
tree | 60c50ff32a285a4e99eb651032b03e731d1dca3c /src/game.rs | |
parent | a07cbfd67849b98a881f930e12e07c429e604ac4 (diff) |
Fixed issues identified through comparison with the official engine
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; |