def take_order(self, o, forget_previous=True, imperative=False, order_id=None): # an imperative "go" order on a unit is an "attack" order # note: this could be done by the user interface if imperative and o[0] == "go": target = self.player.get_object_by_id(o[1]) if getattr(target, "player", None) is not None: o[0] = "attack" if self.is_inside: self.place.notify("order_impossible") return cls = ORDERS_DICT.get(o[0]) if cls is None: warning("unknown order: %s", o) return if not cls.is_allowed(self, *o[1:]): self.notify("order_impossible") debug("wrong order to %s: %s", self.type_name, o) return if forget_previous and not cls.never_forget_previous: self.cancel_all_orders() order = cls(self, o[1:]) order.id = order_id if imperative: order.is_imperative = imperative order.immediate_action()
def take_order(self, o, forget_previous=True, imperative=False, order_id=None): if self.is_inside: self.place.notify("order_impossible") return cls = ORDERS_DICT.get(o[0]) if cls is None: warning("unknown order: %s", o) return if not cls.is_allowed(self, *o[1:]): self.notify("order_impossible") debug("wrong order to %s: %s", self.type_name, o) return if forget_previous and not cls.never_forget_previous: self.cancel_all_orders() order = cls(self, o[1:]) order.id = order_id if imperative: order.is_imperative = imperative order.immediate_action()
from worldorders import ORDERS_DICT from worldplayerbase import Player orders = sorted(ORDERS_DICT.keys()) # sort to avoid desync orders.remove("enter") # later orders.remove("stop") orders.remove("attack") orders.remove("patrol") orders.remove("wait") orders.remove("auto_explore") orders.remove("auto_attack") orders.remove("block") orders.remove("join_group") orders.remove("cancel_building") orders.remove("cancel_training") orders.remove("cancel_upgrading") orders.remove("rallying_point") def _id(x): return x.id class Computer2(Player): name = ["ai2"] def __init__(self, *args, **kargs): Player.__init__(self, *args) def __repr__(self):
def update_orders_list(): global _orders_list # this sorted list of order classes is used when generating the menu _orders_list = sorted([_x for _x in ORDERS_DICT.values() if _has_ord_index(_x.keyword)], key=lambda x:_ord_index(x.keyword))
def update_orders_list(): global _orders_list # this sorted list of order classes is used when generating the menu _orders_list = sorted( [_x for _x in ORDERS_DICT.values() if _has_ord_index(_x.keyword)], key=lambda x: _ord_index(x.keyword))