aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--diplomacy/engine/game.py16
-rw-r--r--diplomacy/server/server.py7
2 files changed, 16 insertions, 7 deletions
diff --git a/diplomacy/engine/game.py b/diplomacy/engine/game.py
index 52ade4f..542bb27 100644
--- a/diplomacy/engine/game.py
+++ b/diplomacy/engine/game.py
@@ -475,9 +475,23 @@ class Game(Jsonable):
return self.powers.keys()
def get_dummy_power_names(self):
- """ Return sequence of dummy power objects. """
+ """ Return sequence of dummy power names. """
return set(power_name for power_name in self.get_map_power_names() if self.is_dummy(power_name))
+ def get_dummy_unordered_power_names(self):
+ """ Return a sequence of playable dummy power names
+ without orders but still orderable and with orderable locations.
+ """
+ return [power_name for power_name in self.get_map_power_names() if
+ # power must not be controlled by a user
+ self.is_dummy(power_name)
+ # power must be still playable
+ and not self.get_power(power_name).is_eliminated()
+ # power must not have yet orders
+ and not self.get_orders(power_name)
+ # power must have orderable locations
+ and self.get_orderable_locations(power_name)]
+
def get_controllers(self):
""" Return a dictionary mapping each power name to its current controller name."""
return {power.name: power.get_controller() for power in self.powers.values()}
diff --git a/diplomacy/server/server.py b/diplomacy/server/server.py
index ee585c3..120e893 100644
--- a/diplomacy/server/server.py
+++ b/diplomacy/server/server.py
@@ -534,12 +534,7 @@ class Server():
"""
updated = False
if server_game.is_game_active or server_game.is_game_paused:
- dummy_power_names = []
- for power_name in server_game.get_dummy_power_names():
- power = server_game.get_power(power_name)
- if power.is_dummy() and not power.is_eliminated() and not power.does_not_wait():
- # This dummy power needs either orders, or wait flag to be set to False.
- dummy_power_names.append(power_name)
+ dummy_power_names = server_game.get_dummy_unordered_power_names()
if dummy_power_names:
# Update registry of dummy powers.
self.games_with_dummy_powers[server_game.game_id] = dummy_power_names