class Monster(object): def __init__(self): name = RandomMonsterName() self.fullName = name.getFullName() self.shortName = name.getShortName() self.hp = 10 self.strength = 1 self.killed = False self.hasLoot = False self.level = 1 self.item = Items() self.Loot = self.item.randomWeapon(self.level) self.handler = Stringhandler() def getFullName(self): return self.fullName def getShortName(self): return self.shortName def is_alive(self): if self.hp > 0: return True else: self.killed = True return self.killed def takeDamage(self, damage, player): self.hp -= damage string = '"' + self.handler.strMonster("hit", self, player) + '"\n' for char in string: time.sleep(uniform(0.05, 0.08)) sys.stdout.write('\033[32m' + '\033[1m' + char) sys.stdout.flush() print Fore.WHITE time.sleep(0.5) def getHP(self): return self.hp def getLoot(self): return self.Loot def setLoot(self, value): self.Loot = self.item.randomWeapon(value) def kill(self): self.killed = True def calcDamage(self): damage = self.strength + random.randint(0, 3) return damage def setup(self, difficulty, player_level): self.killed = False if difficulty is 1: self.hp = player_level + random.randint(10, 25) self.strength = player_level + random.randint(1, 9) rnd = random.randint(0, 10) if rnd > 3: self.hasLoot = True self.level = random.randint(1, 10) self.setLoot(self.level) else: self.hp = player_level + random.randint(15, 35) self.strength = player_level + random.randint(5, 15) rnd = random.randint(0, 10) if rnd > 7: self.hasLoot = True self.level = random.randint(1, 6) self.setLoot(self.level) def attackPlayer(self, room, player, damage): return player.takeDamage(damage, room.monster) def attack(self, room, player): damage = player.getStrength() + random.randint(0, 3) damageplayer = self.calcDamage() if (self.hp - damage <= 0): room.killMonster() player.facesMonster = False if self.hasLoot: return self.handler.strMonster("killedLoot", self, player) + "\n" + player.addItem( self.getLoot()) else: return self.handler.strMonster("killed", self, player) elif player.hp - damageplayer <= 0: return "\n" + self.attackPlayer(room, player, damageplayer) else: self.takeDamage(damage, player) return self.handler.strMonsterDamage("getAttacked",self,damage,player) +"\n"+\ self.handler.strMonsterDamage("returnHP",self,damage,player) +"\n"+self.attackPlayer(room,player,damageplayer) def flee(self, room, player): player.facesMonster = False damage = self.calcDamage() if damage < 5: return self.handler.strMonster( "flee", room.monster, player) + " " + self.handler.strMonster( "fleeSuccess", room.monster, player) else: return self.handler.strMonster( "flee", room.monster, player) + " " + self.handler.strMonster( "fleeFail", room.monster, player) + "\n" + player.takeDamage(damage, room.monster) def spawn(self, room, player): if room.hasMonster: if not self.killed and player.facesMonster: response = "something went wrong" return response elif room.hasMonster and not self.killed: player.facesMonster = True damage = self.calcDamage() return self.handler.strMonsterDamage( "spawn", self, damage, player) + "\n" + player.takeDamage( damage, room.monster)
class Endboss(object): def __init__(self): self.handler = Stringhandler() self.bossList = [] self.byteBoss = Bosslist.ByteBoss() self.hipsterBoss = Bosslist.HipsterBoss() self.boss = None def randomBoss(self, player): self.bossList.append(self.byteBoss) self.bossList.append(self.hipsterBoss) # self.bossList.append("") # self.bossList.append("") self.boss = random.choice(self.bossList) return self.boss def kill(self): self.boss.killed = True def takeDamage(self, damage, player): self.boss.hp -= damage def getHP(self): return self.boss.hp def calcDamage(self): damage = self.boss.strength + random.randint(0, 3) return damage def attackFromPlayer(self, player): damage = player.getStrength() + random.randint(0, 3) if (self.boss.hp - damage <= 0): self.kill() player.facesBoss = False player.victory = True if isinstance(self.boss, ByteBoss): return self.handler.strBoss("bDie", player, damage) elif isinstance(self.boss, HipsterBoss): return self.handler.strBoss("hDie", player, damage) else: return "Error 404: Boss not found" else: self.takeDamage(damage, player) if isinstance(self.boss, ByteBoss): print self.handler.strBoss( "bHit", player, damage) + "\n" + self.handler.strMonsterDamage( "returnHP", self.boss, damage, player) return "\n" + self.attack(player) elif isinstance(self.boss, HipsterBoss): print self.handler.strBoss( "hHit", player, damage) + "\n" + self.handler.strMonsterDamage( "returnHP", self.boss, damage, player) + "\n" return self.attack(player) def attack(self, player): damage = self.calcDamage() if isinstance(self.boss, ByteBoss): return player.takeDamage(damage, self.boss) elif isinstance(self.boss, HipsterBoss): return player.takeDamage(damage, self.boss) def spawn(self, player): player.facesBoss = True damage = self.calcDamage() if isinstance(self.boss, ByteBoss): return self.handler.strBoss("bSpawn", player, damage) elif isinstance(self.boss, HipsterBoss): return self.handler.strBoss("hSpawn", player, damage)