diff options
author | Kevin Hockey <Blitzkev@gmail.com> | 2010-07-13 22:03:31 (GMT) |
---|---|---|
committer | Kevin Hockey <Blitzkev@gmail.com> | 2010-07-13 22:03:31 (GMT) |
commit | f1603ff3cfb53d5ec886c1b2327836b3f084baa8 (patch) | |
tree | 5bb5d55d0c09a09a757f0f0034bd9eb2c3ac3b07 | |
parent | f2453391c27930d8b7b9cba067cbfb44ded64688 (diff) |
Battles end when enemies are killed off
-rw-r--r-- | MAFH2/BattleEngine.py | 69 | ||||
-rw-r--r-- | MAFH2/BattleMenu.py | 2 | ||||
-rw-r--r-- | MAFH2/Enemy.py | 1 | ||||
-rw-r--r-- | MAFH2/Hero.py | 4 |
4 files changed, 43 insertions, 33 deletions
diff --git a/MAFH2/BattleEngine.py b/MAFH2/BattleEngine.py index 5d95775..dc10291 100644 --- a/MAFH2/BattleEngine.py +++ b/MAFH2/BattleEngine.py @@ -263,51 +263,51 @@ class BattleEngine(GameEngineElement): #do the correct damage to correct enemy hero = self.game_engine.get_object('profile').hero damage = 0 + curTarget = self.active_target - 1 if self.isMagic: - weakness = self.enemy_list[self.active_target] + weakness = self.enemy_list[curTarget] spellTypes = ['none', 'fire', 'lightning', 'missile', 'heal', 'special'] bonus = 0 if spellTypes[self.spellType] == weakness: bonus = 60 damage += bonus - if self.magicWin: + if self.magicWin and not(self.spellType == 4): damage += hero.attackPower(spellTypes[self.spellType]) - self.enemy_list[self.active_target].HP -= damage + self.enemy_list[curTarget].HP -= damage self.player_input = spellTypes[self.spellType] + ' cast!' + elif self.spellType == 4: + hero.giveHealth(hero.attackPower('heal')) else: self.player_input = 'Spell fizzles' elif self.state == PLAYER_MULT: if self.correct: damage = hero.attackPower("critical") - self.enemy_list[self.active_target].HP -= damage + self.enemy_list[curTarget].HP -= damage self.player_input = "Your attack crits for " + str(damage) + " damage" else: damage = hero.attackPower('basic') - self.enemy_list[self.active_target].HP -= damage + self.enemy_list[curTarget].HP -= damage self.player_input = "You attack for " + str(damage) + " damage" #generate enemy attack - for enemy in self.enemy_list: - random.seed() - enemyAttack = random.randint(0,100) - if enemyAttack > 90: - hero.defendAttack(enemy.attackPower('special')) - elif enemyAttack < 6: - hero.defendAttack(enemy.attackPower('critical')) - else: - hero.defendAttack(enemy.attackPower('basic')) - - + for enemy in self.enemy_list[:]: + if enemy.HP <= 0: + self.enemy_list.remove(enemy) + if enemy.alive: + random.seed() + enemyAttack = random.randint(0,100) + if enemyAttack > 90: + hero.defendAttack(enemy.attackPower('special')) + elif enemyAttack < 6: + hero.defendAttack(enemy.attackPower('critical')) + else: + hero.defendAttack(enemy.attackPower('basic')) + self.game_engine.get_object('profile').hero = hero self.state = PLAYER_WAIT self.magic_list = [] - self.__end_battle(menu) - - def __end_battle(self, menu): - #Give items if any - #self terminate if (self.isMagic): self.game_engine.get_object('magicmenu').remove_from_engine() self.game_engine.remove_object('magicmenu') @@ -315,8 +315,19 @@ class BattleEngine(GameEngineElement): menu.show_menu('selection') self.game_engine.get_object('battlemenu').set_disp(self.player_input) - + #Are enemies dead? + if not self.enemy_list: + self.__end_battle(menu) + + def __end_battle(self, menu): + #Give items if any + #self terminate + print 'end battle called' + self.remove_from_engine() + #self.game_engine.remove_object('battlemenu') + self.game_engine.get_object('battlemenu').remove_from_engine() + self.game_engine.remove_object('battle') def event_handler(self, event): if event.type == pygame.KEYDOWN: @@ -328,7 +339,6 @@ class BattleEngine(GameEngineElement): if self.active_target < 1: self.active_target = len(self.enemy_list) return True - elif newKey=='[6]' or newKey=='right': self.active_target += 1 if self.active_target > len(self.enemy_list): @@ -337,8 +347,6 @@ class BattleEngine(GameEngineElement): elif newKey=='return': self.enemy = self.active_target - - #do damage calculations return True @@ -354,11 +362,12 @@ class BattleEngine(GameEngineElement): # Draw Enemy and Item Selection for enemy in self.enemy_list: - if self.active_target == i: - screen.blit(self.__images['arrow_select'], (x+(i*200),y-25)) - enemy.sprite.update( tick_time ) - screen.blit(enemy.sprite.image, (x+(i*200),y)) - i = i+1 + if enemy.alive: + if self.active_target == i: + screen.blit(self.__images['arrow_select'], (x+(i*200),y-25)) + enemy.sprite.update( tick_time ) + screen.blit(enemy.sprite.image, (x+(i*200),y)) + i = i+1 # Draw Hud profile = self.game_engine.get_object('profile') diff --git a/MAFH2/BattleMenu.py b/MAFH2/BattleMenu.py index 0379196..179bf29 100644 --- a/MAFH2/BattleMenu.py +++ b/MAFH2/BattleMenu.py @@ -24,7 +24,7 @@ class BattleMenuHolder( GameEngineElement ): self.sec_des = msg def remove_from_engine(self): - super( GameMenuHolder, self ).remove_from_engine() + super( BattleMenuHolder, self ).remove_from_engine() self.clear_menu() def draw(self,screen,time_delta): diff --git a/MAFH2/Enemy.py b/MAFH2/Enemy.py index 6ea4d64..0c9f8c0 100644 --- a/MAFH2/Enemy.py +++ b/MAFH2/Enemy.py @@ -32,6 +32,7 @@ class Enemy(Actor): col,row,width,height = ENEMY[id]['sprite'] self.sprite=AnimatedSprite(Spritesheet(CHAR_PATH + ENEMY[id]['img']).img_extract(col,row,width,height)) self.place=0 + self.alive = True #load image based on type later self.name=ENEMY[id]['name'] diff --git a/MAFH2/Hero.py b/MAFH2/Hero.py index 7c83296..64cfc98 100644 --- a/MAFH2/Hero.py +++ b/MAFH2/Hero.py @@ -32,11 +32,11 @@ class Hero(Actor): if name=="basic": return self.ATT+self.BAE elif name=="critical": - return self.ATT+self.BAE+self.BAB + return (self.ATT+self.BAE+self.BAB) * 1.1 elif name=="fire": return self.ATT+self.BAB elif name=="heal": - return self.BAB-10 + return (self.BAB + 4) * 5 elif name=="lightning": return self.ATT+self.BAB elif name=="division": |