import creature class Knight(creature.Creature): def __init__(self, proc): creature.Creature.__init__(self, proc) self.power = 50 while not (self.Facing == creature.Direction.North or self.Facing == creature.Direction.East or self.Facing == creature.Direction.South or self.Facing == creature.Direction.West): self.Facing = creature.Direction.randomDir() #Overrides def Attack(self, power, direction): if (self.power >= power): self.power -= power self.AddPayload(2) return creature.Creature.Attack(self, power, direction, 10) #call base class now; last parameter = attackrange else: self.AddPayload(2) return (0, self.ResultCodes.not_enough_power) def SetFacing(self, facing): if (facing == creature.Direction.North or facing == creature.Direction.East or facing == creature.Direction.South or facing == creature.Direction.West): return creature.Creature.SetFacing(self, facing) else: self.AddPayload(1) return (0, self.ResultCodes.invalid_facing) def Move(self, spaces): if (spaces > 2 or spaces< 1): self.AddPayload(2) return (0, self.ResultCodes.invalid_move) return creature.Creature.Move(self, spaces) #call base class now def Scan(self, boxlength): if (boxlength >= 1 and boxlength <= 3): self.AddPayload(2) return creature.Creature.Scan(self, boxlength) else: self.AddPayload(2) return (0, self.ResultCodes.invalid_scan_range)