summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorNguyễn Gia Phong <vn.mcsinyx@gmail.com>2018-01-24 21:01:51 +0700
committerNguyễn Gia Phong <vn.mcsinyx@gmail.com>2018-01-24 21:01:51 +0700
commit59501c6c44f26b66d4bb314b9f2eb21d7984eeb7 (patch)
tree6f784665faa4197e6c027b02a57af77f4dab4848
parentb25b3c3e6bafebcbb531dec367232148764fb334 (diff)
downloadbrutalmaze-0.3.3.tar.gz
Give hero special vision when struck by lightning 0.3.3
-rw-r--r--brutalmaze/characters.py22
-rw-r--r--brutalmaze/maze.py3
-rwxr-xr-xsetup.py2
3 files changed, 15 insertions, 12 deletions
diff --git a/brutalmaze/characters.py b/brutalmaze/characters.py
index c9dd28b..6cb78df 100644
--- a/brutalmaze/characters.py
+++ b/brutalmaze/characters.py
@@ -25,6 +25,8 @@ from random import choice, randrange, shuffle
 from sys import modules
 
 import pygame
+from pygame.mixer import Sound
+from pygame.time import get_ticks
 
 from .constants import *
 from .misc import sign, cosin, randsign, regpoly, fill_aapolygon, choices, play
@@ -63,14 +65,14 @@ class Hero:
         self.spin_speed = fps / HERO_HP
         self.spin_queue = self.wound = 0.0
 
-        self.sfx_heart = pygame.mixer.Sound(SFX_HEART)
+        self.sfx_heart = Sound(SFX_HEART)
 
     def update(self, fps):
         """Update the hero."""
         if self.dead:
             self.spin_queue = 0.0
             return
-        old_speed, time = self.spin_speed, pygame.time.get_ticks()
+        old_speed, time = self.spin_speed, get_ticks()
         self.spin_speed = fps / (HERO_HP-self.wound**0.5)
         self.spin_queue *= self.spin_speed / old_speed
         if time > self.next_heal:
@@ -131,7 +133,7 @@ class Enemy:
         self.spin_speed = self.maze.fps / ENEMY_HP
         self.spin_queue = self.wound = 0.0
 
-        self.sfx_slash = pygame.mixer.Sound(SFX_SLASH_HERO)
+        self.sfx_slash = Sound(SFX_SLASH_HERO)
 
     def get_pos(self):
         """Return coordinate of the center of the enemy."""
@@ -174,11 +176,11 @@ class Enemy:
         if self.maze.hero.dead: return False
         x, y = self.get_pos()
         if (self.maze.get_distance(x, y) > FIRANGE*self.maze.distance
-            or self.next_strike > pygame.time.get_ticks()
+            or get_ticks() < self.next_strike
             or (self.x, self.y) in AROUND_HERO or self.offsetx or self.offsety
             or randrange((self.maze.hero.slashing+self.maze.isfast()+1) * 3)):
             return False
-        self.next_strike = pygame.time.get_ticks() + ATTACK_SPEED
+        self.next_strike = get_ticks() + ATTACK_SPEED
         self.maze.bullets.append(Bullet(
             self.maze.surface, x, y,
             atan2(self.maze.y - y, self.maze.x - x), self.color))
@@ -192,7 +194,7 @@ class Enemy:
         if self.offsety:
             self.offsety -= sign(self.offsety)
             return True
-        if self.next_strike > pygame.time.get_ticks(): return False
+        if get_ticks() < self.next_strike: return False
 
         self.move_speed = self.maze.fps / speed
         directions = [(sign(MIDDLE - self.x), 0), (0, sign(MIDDLE - self.y))]
@@ -241,7 +243,7 @@ class Enemy:
                 self.spin_queue -= sign(self.spin_queue)
             else:
                 self.angle, self.spin_queue = pi / 4, 0.0
-        self.draw()
+        if self.awake or get_ticks() >= self.maze.next_move: self.draw()
 
     def hit(self, wound):
         """Handle the enemy when it's attacked."""
@@ -270,17 +272,17 @@ class Chameleon(Enemy):
     def wake(self):
         """Wake the Chameleon up if it can see the hero."""
         if Enemy.wake(self) is True:
-            self.visible = pygame.time.get_ticks() + 1000//ENEMY_SPEED
+            self.visible = get_ticks() + 1000//ENEMY_SPEED
 
     def draw(self):
         """Draw the Chameleon."""
         if (not self.awake or self.spin_queue
-            or pygame.time.get_ticks() <= self.visible):
+            or get_ticks() < max(self.visible, self.maze.next_move)):
             Enemy.draw(self)
 
     def hit(self, wound):
         """Handle the Chameleon when it's attacked."""
-        self.visible = pygame.time.get_ticks() + 1000//ENEMY_SPEED
+        self.visible = get_ticks() + 1000//ENEMY_SPEED
         Enemy.hit(self, wound)
 
 
diff --git a/brutalmaze/maze.py b/brutalmaze/maze.py
index 0ca75ae..3b0ee6d 100644
--- a/brutalmaze/maze.py
+++ b/brutalmaze/maze.py
@@ -136,6 +136,7 @@ class Maze:
     def draw(self):
         """Draw the maze."""
         self.surface.fill(BG_COLOR)
+        if get_ticks() < self.next_move: return
         for i in self.rangex:
             for j in self.rangey:
                 if self.map[i][j] != WALL: continue
@@ -249,7 +250,7 @@ class Maze:
             elif bullet.color == 'Aluminium':
                 x = MIDDLE + round2((bullet.x-self.x) / self.distance)
                 y = MIDDLE + round2((bullet.y-self.y) / self.distance)
-                if self.map[x][y] == WALL:
+                if self.map[x][y] == WALL and time >= self.next_move:
                     fallen.append(i)
                     continue
                 for j, enemy in enumerate(self.enemies):
diff --git a/setup.py b/setup.py
index 4bf6935..8a2e802 100755
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ with open('README.rst') as f:
 
 setup(
     name='brutalmaze',
-    version='0.3.2',
+    version='0.3.3',
     description='A hash and slash game with fast-paced action and a minimalist art style',
     long_description=long_description,
     url='https://github.com/McSinyx/brutalmaze',