import random import action import ztime # Parent Class for all Action Agents # This class is used to create an Action Agent that can be used to perform actions on a target agent. class ActionAgent: def __init__(self, sourceAgent, STATS): self.target = sourceAgent self.stats = STATS self.name = sourceAgent.get_name() # Abstract Method to Update Target Agent On Each Run def update(self, curtime): pass # Abstract Method to Initialize Stats of Target Agent # This method is set by the child class as some agents might have # logic behind instantiating starting stats def stat_init(self): pass class ActionAgent_Action: def __init__(self, name, effects, duration): self.name = name self.effects = effects self.duration = duration # Performs Bulk Actions on the Target Agent def act(self, targetAgent, cur_time): for stat in self.effects: targetAgent.change_stat(stat, self.effects[stat]) actionTime = ztime.Time(cur_time.minute + self.duration) targetAgent.set_action(action.Action(self.name, 0, actionTime))