def set_size(self, size): # only let callers of the same type as me set my size my_name = callername.caller_name(level = 0) # get back module.class.method, match just the invoking class my_name_parts = my_name.split(".") my_class = my_name_parts[1] pattern = r"\." + my_class + r"\." callername.caller_name_match(pattern, abort = True, debug = agentsim.debug.get(256)) # ok, we can our size, but not too big super(MoveEnhanced, self).set_size(min(size, self.get_max_size())) # when you set your size, also change the move limit # nominal move limit is 10, range it from 5 to 15 min_size = self.get_min_size() adjust = 10 * ( (self.get_size() - min_size) / (self.get_max_size() - min_size) ) if my_class == "Normal": # normals are slow when small, fast when big self._move_limit = 5 + adjust elif my_class == "Zombie": # normals are fast when small, slow when big self._move_limit = 15 - adjust
def zombie_alert(self, x_dest, y_dest): # ignore any request not from a defender! caller_name = callername.caller_name() if not re.search(r"\.Defender\.", caller_name): raise Exception("zombie alert on {} called by non-Defender {}".format(self.get_name(), caller_name)) if agentsim.debug.get(32): print("zombie_alert to ({}, {})".format( self.get_name(), x_dest, y_dest)) # remember where the alert told us to go so that we can use this # information when we compute the next move self._zombie_alert_args = (x_dest, y_dest)
def zombie_alert(self, x_dest, y_dest): """ This code was provided in class, and left here for completeness' sake, but is never actually called and can be ignored. """ # ignore any request not from a defender! caller_name = callername.caller_name() if not re.search(r"\.Defender\.", caller_name): raise Exception("zombie alert on {} called by non-Defender {}".format(self.get_name(), caller_name)) if agentsim.debug.get(32): print("zombie_alert to ({}, {})".format( self.get_name(), x_dest, y_dest)) # remember where the alert told us to go so that we can use this # information when we compute the next move self._zombie_alert_args = (x_dest, y_dest)