Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2
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
parentf2453391c27930d8b7b9cba067cbfb44ded64688 (diff)
Battles end when enemies are killed off
Diffstat (limited to 'MAFH2')
-rw-r--r--MAFH2/BattleEngine.py69
-rw-r--r--MAFH2/BattleMenu.py2
-rw-r--r--MAFH2/Enemy.py1
-rw-r--r--MAFH2/Hero.py4
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":