Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2/BattleEngine.py
diff options
context:
space:
mode:
authorKevin Hockey <Blitzkev@gmail.com>2010-07-13 22:03:31 (GMT)
committer Kevin Hockey <Blitzkev@gmail.com>2010-07-13 22:03:31 (GMT)
commitf1603ff3cfb53d5ec886c1b2327836b3f084baa8 (patch)
tree5bb5d55d0c09a09a757f0f0034bd9eb2c3ac3b07 /MAFH2/BattleEngine.py
parentf2453391c27930d8b7b9cba067cbfb44ded64688 (diff)
Battles end when enemies are killed off
Diffstat (limited to 'MAFH2/BattleEngine.py')
-rw-r--r--MAFH2/BattleEngine.py69
1 files changed, 39 insertions, 30 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')