def apply(self): obj_id, obj_type = self.target if not obj_id: # fog of war pass else: obj_type = obj_type << 8 | 0x01 try: type_class = GameObject.get_type(obj_type) # Could this be hallucinated? create_obj = not GameObject.has_type(obj_type & 0xfffffc | 0x2) obj = None if obj_id in self.player.replay.objects: obj = self.player.replay.objects[obj_id] elif create_obj: obj = type_class(obj_id, self.frame) self.player.replay.objects[obj_id] = obj if obj: obj.visit(self.frame, self.player, type_class) self.target = obj except KeyError: # print "Unknown object type (%s) at frame %s" % (hex(obj_type),self.frame) pass super(TargetAbilityEvent, self).apply()
def apply(self): selection = self.player.get_selection(self.bank) selected = selection.current[:] for obj in selected: # visit all old units obj.visit(self.frame, self.player) if self.deselect: selected = self.deselect(selected) # Add new selection for (obj_id, obj_type) in self.objects: try: type_class = GameObject.get_type(obj_type) if obj_id not in self.player.replay.objects: obj = type_class(obj_id, self.frame) self.player.replay.objects[obj_id] = obj else: obj = self.player.replay.objects[obj_id] obj.visit(self.frame, self.player, type_class) selected.append(obj) except KeyError: # print "Unknown object type (%s) at frame %s" % (hex(obj_type),self.frame) pass selection[self.frame] = selected self.selected = selected