Mercurial > skaapsteker
changeset 435:b6fdaf8e453c
Make shield last for one second. Separate out recharge times to allow the shield to take longer to recharge.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 09 Apr 2011 19:15:37 +0200 |
parents | 827c5d045cf5 |
children | 32df272a163a |
files | skaapsteker/sprites/player.py |
diffstat | 1 files changed, 15 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/skaapsteker/sprites/player.py Sat Apr 09 19:14:19 2011 +0200 +++ b/skaapsteker/sprites/player.py Sat Apr 09 19:15:37 2011 +0200 @@ -31,9 +31,9 @@ self._animation_frame = 0.0 self._last_time = time.time() self._recharge_timers = { - 'fireball': time.time(), - 'lightning': time.time(), - 'shield': time.time(), + 'fireball': [ time.time(), lambda : 2.0 / len(self._me.tails) ], + 'lightning': [ time.time(), lambda : 2.0 / len(self._me.tails) ], + 'shield': [ time.time(), lambda : 16.0 / len(self._me.tails) ], } self._inv_cache = {} # invisible fox image cache self._shield_cache = {} # shielded fox image cache @@ -159,7 +159,8 @@ if (now - self._invisibility_start_time) > self._max_invisibility_time: self.invisible = 0 if self.using_shield > 0: - self.using_shield -= 1 + if (now - self._shield_start_time) > 1.0: + self.using_shield = 0 if abs(v_x) < 80: # Clamp when we're not moving at least 5 pixel / s self.velocity = (0, v_y) @@ -227,9 +228,13 @@ other.collided_player(self) def damage(self, damage): - if 'shield' in self._me.tails and self.check_fire_rate('shield'): - print "Using shield" - self.using_shield = 30 + if self.using_shield > 0: + "Shield on." + return + elif 'shield' in self._me.tails and self.check_fire_rate('shield'): + print "Activating shield." + self._shield_start_time = time.time() + self.using_shield = 1 return self._me.cur_health -= damage self._soundsystem.play_sound('yelp') @@ -385,12 +390,12 @@ def check_fire_rate(self, attack): if self.recharge_level(attack) < 1: return False - self._recharge_timers[attack] = time.time() + self._recharge_timers[attack][0] = time.time() return True def recharge_level(self, attack): - recharge_time = 2.0 / len(self._me.tails) - return min((time.time() - self._recharge_timers[attack]) / recharge_time, 1) + recharge_time = self._recharge_timers[attack][1]() + return min((time.time() - self._recharge_timers[attack][0]) / recharge_time, 1) def discharge_level(self, tail): if tail == 'invisibility' and hasattr(self, '_invisibility_start_time'):