diff --git a/gamedata/assets/player/combo/0.png b/gamedata/assets/player/combo/0.png new file mode 100644 index 0000000..655065b Binary files /dev/null and b/gamedata/assets/player/combo/0.png differ diff --git a/gamedata/assets/player/combo/1.png b/gamedata/assets/player/combo/1.png new file mode 100644 index 0000000..5311f5b Binary files /dev/null and b/gamedata/assets/player/combo/1.png differ diff --git a/gamedata/assets/player/combo/2.png b/gamedata/assets/player/combo/2.png new file mode 100644 index 0000000..ced6ddd Binary files /dev/null and b/gamedata/assets/player/combo/2.png differ diff --git a/gamedata/assets/player/combo/3.png b/gamedata/assets/player/combo/3.png new file mode 100644 index 0000000..7315467 Binary files /dev/null and b/gamedata/assets/player/combo/3.png differ diff --git a/gamedata/assets/player/combo/4.png b/gamedata/assets/player/combo/4.png new file mode 100644 index 0000000..554f9fa Binary files /dev/null and b/gamedata/assets/player/combo/4.png differ diff --git a/gamedata/objects/combat/ennemies/ennemy.py b/gamedata/objects/combat/ennemies/ennemy.py index 9d51277..8bda826 100644 --- a/gamedata/objects/combat/ennemies/ennemy.py +++ b/gamedata/objects/combat/ennemies/ennemy.py @@ -17,6 +17,8 @@ class Ennemy(Movable): self.particleoffsety = 0 self.canhit = True + self.candie = True + self.cancombo = True self.dustparticles = game.getSpriteDir("particles/dust/") @@ -37,7 +39,8 @@ class Ennemy(Movable): hor = -1 self.player.horkb = hor*6 self.player.verkb = self.player.gravityway*-3 - if self.player.canhit: + self.player.combo = 0 + if self.candie and self.player.canhit: if self.rect.colliderect(self.player.hitrect): # Die self.dead = True @@ -51,6 +54,7 @@ class Ennemy(Movable): else: direction = -1 self.player.verspd = self.player.gravity/3*direction + self.player.upcombo() elif self.respawn: if self.rect.center[0] < self.game.globals["camerax"]-self.respawnmargin: diff --git a/gamedata/objects/combat/movable.py b/gamedata/objects/combat/movable.py index 03b004c..e698034 100644 --- a/gamedata/objects/combat/movable.py +++ b/gamedata/objects/combat/movable.py @@ -78,12 +78,12 @@ class Movable(BaseObject): result = False if classic: for rect in self.collisionrects: - if temprect.colliderect(rect): + if rect!=self.rect and temprect.colliderect(rect): result = rect break if not result and semi: for rect in self.semirects: - if self.rect.bottom<=rect.top: + if rect!=self.rect and self.rect.bottom<=rect.top: if temprect.colliderect(rect): result = rect break diff --git a/gamedata/objects/combat/player.py b/gamedata/objects/combat/player.py index 6c7e0a0..2b309b4 100644 --- a/gamedata/objects/combat/player.py +++ b/gamedata/objects/combat/player.py @@ -69,6 +69,9 @@ class Player(Movable): self.leapmargin = 30 # Vertical margin for the leap self.gravityway = 1 + self.combo = 0 + self.combosprites = self.game.getSpriteDir("player/combo/") + def step(self): if not self.hitpose: @@ -128,6 +131,7 @@ class Player(Movable): self.fastfall = 0 if self.checkcollisions(0,self.gravityway): self.onground = True + self.combo = 0 self.leaptimer = self.leapmaxtimer self.candash = True self.canfastfall = True @@ -226,6 +230,15 @@ class Player(Movable): self.game.globals["camerax"] = self.rect.center[0]-self.game.globals["cameraw"]/2 self.game.globals["cameray"] = self.rect.center[1]-self.game.globals["camerah"]/2 + def upcombo(self): + + # Up the combo and spawn particles + if self.combo>=1: + index = min(self.combo-1,len(self.combosprites)-1) + self.game.addParticle([self.combosprites[index]],self.rect.center[0],self.rect.top,fps=1) + + self.combo+=1 + def draw(self): flipy = (self.gravityway<0 and not self.leaptimer<0) if self.fastfall: