예제 #1
0
    def incrementScore(self, value, textPosition, textGroup):
        if self.comboBonus and value <= 250:
            self.comboBonus += int(.2 * FRAMES_PER_SECOND)
            self.comboKills += 1
            tempImage = text.Text(FONT_PATH, 30, FONT_COLOR, "x" + str(self.comboKills) + "!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self,0.5 * FRAMES_PER_SECOND)
            helpBubble.offSet = vector.vector2d(0.0, -100.0)
            self.bulletGroup.add(helpBubble)


        if self.pointBonus:
            value *= 2

        tempText = text.Text(FONT_PATH, 36, FONT_COLOR, str(value), 15)
        tempText.setAlign(CENTER_MIDDLE)
        tempText.position = vector.vector2d(textPosition)
        textGroup.add(tempText)

        self.score += value
        self.scoreBoard.setText(self.score)
        
        if self.score >= self.nextBonus:
            utility.playSound(self.extraLifeSound, OW_CHANNEL)
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Extra Life!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self,1.5 * FRAMES_PER_SECOND)
            helpBubble.offSet = vector.vector2d(0.0, -100.0)
            textGroup.add(helpBubble)

            self.lives += 1
            self.lifeBoard.setText('x' + str(self.lives))
            self.nextBonus += 50000
예제 #2
0
 def die(self):
     if self.dying == 0:
         deathType = int(random.random() * 3)
         
         #print deathType
         if deathType == 0:
             tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Blast!").image
             utility.playSound(self.deathSound[0], OW_CHANNEL)
         elif deathType == 1:
             tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Oh No!").image
             utility.playSound(self.deathSound[1], OW_CHANNEL)
         elif deathType == 2:
             tempImage = text.TextSurface(FONT_PATH, 30,FONT_COLOR, "Bother!").image
             utility.playSound(self.deathSound[2], OW_CHANNEL)
         
         self.animationList.play("Die")
         self.bounds = [-1000, -1000, SCREEN_WIDTH + 1000, SCREEN_HEIGHT + 32]
         self.boundStyle = BOUND_STYLE_CUSTOM
             
         helpBubble = infoBubble.infoBubble(tempImage, self, 5 * FRAMES_PER_SECOND)
         helpBubble.offSet = vector.vector2d(0.0, -100.0)
         self.bulletGroup.add(helpBubble)
     
     self.dying += 1
     
     if settingList[PARTICLES] and not self.dying % 2:
         puffsToCreate = 4
         
         while puffsToCreate:
             puffsToCreate -= 1
             tempPuff = particle.smokeParticle(self.position,
                                               [1,0])
             tempPuff.velocity.setAngle(359 * random.random())
             self.effectsGroup.add(tempPuff)
예제 #3
0
    def actorUpdate(self):
        utility.playMusic(self.music, True)
        self.placeEye()

        if self.lifeTimer <= 30 * FRAMES_PER_SECOND and self.health == self.world.level+ 2:
            if self.lifeTimer == 30 * FRAMES_PER_SECOND:
                tempImage = self.howToKill
                
                helpBubble = infoBubble.infoBubble(tempImage, self.target,5 * FRAMES_PER_SECOND)
                helpBubble.offSet = vector.vector2d(0.0, -100.0)
                self.textGroup.add(helpBubble)
            self.lifeTimer += 1
            
        if not self.active and self.health > 0:
            self.active = True

        if self.active:
            if self.stunned:
                if self.charging:
                    self.speed -= 0.2
                    if self.speed <= 1.75:
                        self.speed = 1.75
                        self.charging = False
                        self.timeUntilCharge = 6 * FRAMES_PER_SECOND
                
                    self.velocity.makeNormal()
                    self.velocity *= self.speed
                
                self.currentSequence = 1
                self.stunned -= 1

                if not self.stunned:
                    self.textGroup.add(self.eye)
                    self.animationList.play("idle")
                if not self.stunned % 4:
                    puffsToCreate = 4
                    
                    while puffsToCreate and settingList[PARTICLES]:
                        puffsToCreate -= 1
                        tempPuff = particle.smokeParticle(self.position,
                                                                 [1,0])
                        tempPuff.velocity.setAngle(359 * random.random())
                        self.effectsGroup.add(tempPuff)

            else:
                self.currentSequence = 0
                self.processAI()

        if self.health <= 0:
            self.active = False
            self.die()
            
            if not self.gaveBonus:
                self.world.giveBonus()
                self.gaveBonus = True
예제 #4
0
    def actorUpdate(self):
        if self.lives <= 0:
            self.active = False
            self.velocity -= vector.vector2d(0.0,-0.3)
            self.die()
            return
        
        if not self.damageBonus:
            self.bulletDamage = 1
        if not self.reflectBonus:
            self.bulletBoundStyle = BOUND_STYLE_KILL
            self.bulletCollideStyle = COLLIDE_STYLE_HURT
        if not self.fastShot:
            self.resetFireTimer = self.defaultFireTimer

        if self.pointBonus: self.pointBonus -= 1
        if self.damageBonus: self.damageBonus -= 1
        if self.reflectBonus: self.reflectBonus -= 1
        if self.duelShot: self.duelShot -= 1
        if self.stunTimer: self.stunTimer -= 1
        if self.fastShot: self.fastShot -= 1

        if self.comboBonus:
            self.comboBonus -= 1
            if not self.comboBonus:
                comboCounter = 0
                bonusPoints = 0
                while comboCounter <= self.comboKills:
                    comboCounter += 1
                    bonusPoints += comboCounter * 25

                self.incrementScoreNoText(bonusPoints)

                tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Combo Points:" + str(bonusPoints) + "!").image
                
                helpBubble = infoBubble.infoBubble(tempImage, self,1.5 * FRAMES_PER_SECOND)
                helpBubble.offSet = vector.vector2d(0.0, -100.0)
                self.bulletGroup.add(helpBubble)

                self.comboKills = 0

        self.fireTimer -= 1

        self.velocity *= .95
        

        if not self.active:
            self.active = True

        if not self.fireTimer:
            self.animationList.stop("Idle", self.animationList.currentFrame)

        if self.stunTimer:
            self.animationList.play("HurtIdle", self.animationList.currentFrame)
예제 #5
0
    def die(self):
        if self.objectCollidedWith.actorType == ACTOR_PLAYER:
            self.objectCollidedWith.comboBonus += 5 * FRAMES_PER_SECOND
            tempImage = text.Text(FONT_PATH, 30, FONT_COLOR, "Combo Time!", 1).image

            helpBubble = infoBubble.infoBubble(tempImage, self.objectCollidedWith, 1.5 * FRAMES_PER_SECOND)
            helpBubble.offSet = vector.vector2d(0.0, -100.0)
            self.textGroup.add(helpBubble)

        self.active = False
        self.kill()
        del self
예제 #6
0
    def actorUpdate(self):
        if not self.stunned:
            try:
                self.emitter.update()
            except:
                pass
            
            
        utility.playMusic(self.music, True)
        if not self.active and self.health > 0:
            self.active = True

        if self.lifeTimer <= 30 * FRAMES_PER_SECOND and self.health == self.world.level + 2:
            if self.lifeTimer == 30 * FRAMES_PER_SECOND:
                tempImage = self.howToKill
                
                helpBubble = infoBubble.infoBubble(tempImage, self.target,5 * FRAMES_PER_SECOND)
                helpBubble.offSet = vector.vector2d(0.0, -100.0)
                self.textGroup.add(helpBubble)
            self.lifeTimer += 1

        if self.active:
            if self.stunned:
                self.stunned -= 1

                if not self.stunned % 4:
                    puffsToCreate = 4
                    
                    while puffsToCreate and settingList[PARTICLES]:
                        puffsToCreate -= 1
                        tempPuff = particle.smokeParticle(self.position,
                                                                 [1,0])
                        tempPuff.velocity.setAngle(359 * random.random())
                        self.effectsGroup.add(tempPuff)

                if not self.stunned:
                    self.animationList.play("idle")

            else:
                self.currentSequence = 0
                self.processAI()

        if self.health <= 0:
            self.active = False
            self.die()
            
            if not self.gaveBonus and self.world.worldName != "Tutorial":
                self.world.giveBonus()
                self.gaveBonus = True
예제 #7
0
    def incrementScoreNoText(self,value):
        self.score += value
        self.scoreBoard.setText(self.score)
        
        if self.score > self.nextBonus:
            utility.playSound(self.extraLifeSound, OW_CHANNEL)
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Extra Life!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self,1.5 * FRAMES_PER_SECOND)
            helpBubble.offSet = vector.vector2d(0.0, -100.0)
            self.effectsGroup.add(helpBubble)

            self.lives += 1
            self.lifeBoard.setText('x' + str(self.lives))
            self.nextBonus += 50000
예제 #8
0
    def actorUpdate(self):
        utility.playMusic(self.music, True)
        if not self.active and self.health > 0:
            self.active = True

        if self.lifeTimer <= 30 * FRAMES_PER_SECOND and  self.health == (self.world.level + 1) * 25:
            if self.lifeTimer == 30 * FRAMES_PER_SECOND:
                tempImage = self.howToKill
                
                helpBubble = infoBubble.infoBubble(tempImage, self.target,5 * FRAMES_PER_SECOND)
                helpBubble.offSet = vector.vector2d(0.0, -100.0)
                self.textGroup.add(helpBubble)
            self.lifeTimer += 1

        if self.active:
            if self.stunned:
                if self.charging:
                    self.speed -= 0.2
                    if self.speed <= 1.75:
                        self.speed = 1.75
                        self.charging = False
                        self.timeUntilCharge = 10 * FRAMES_PER_SECOND
                
                    self.velocity.makeNormal()
                    self.velocity *= self.speed

                self.stunned -= 1

                self.animationList.play("vulnerable")
                
                if not self.stunned:
                    utility.playSound(self.shieldRestore, PICKUP_CHANNEL)
                    self.animationList.play("idle")
                
            else:
                self.currentSequence = 0
                self.processAI()

        if self.health <= 0:
            self.active = False
            self.die()
            
            if not self.gaveBonus:
                self.world.giveBonus()
                self.gaveBonus = True
예제 #9
0
 def displayText(self):
     tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Double Damage!").image
     
     helpBubble = infoBubble.infoBubble(tempImage, self.objectCollidedWith,1.5 * FRAMES_PER_SECOND)
     helpBubble.offSet = vector.vector2d(0.0, -100.0)
     self.textGroup.add(helpBubble)
예제 #10
0
    def update(self):
        if self.bossDead:
            self.timeAfterBoss += 1

        if self.defaultSpawnRate:
            if not self.moonoSpawnRate:
                self.moonoSpawnRate = self.defaultSpawnRate
                self.spawnMoono()
            self.moonoSpawnRate -= 1

        if self.newMoono.health <= 0:
            self.moonoDead = True

        if self.currentStep == 0:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Welcome to the tutorial!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.currentStep += 1
            self.timer = 0
            
        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 1:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Use your mouse to move.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 5 * FRAMES_PER_SECOND and self.currentStep == 2:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Notice the stars that you shoot?").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)            
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 3:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "When moving you shoot stars.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 4:
            self.spawnMoono("balloon")

            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Oh no! Its a Moono!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1
        
        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 5:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Attack with your stars!").image

            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 6:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Moonos hurt you when they touch you.").image
            self.timer -= 1
            self.moonoDead = False

            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 7:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Did you get the Balloon?").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 8:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Collect balloons for bonus points!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)    
            self.timer = 0
            self.currentStep +=1            

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 9:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Balloons always help you get more points.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 10:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Points are important!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 11:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Every 50,000 points you get an extra life!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        
        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 12:
            self.spawnBaake()
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Oh bother! It's Baake.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 13:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Baakes don't hurt you...").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 14:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "...but they do love to get in the way!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 15:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Its usually best to stay away from Baake.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 16:
            self.spawnMoono("reflect")
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Blast, another Moono!").image
            self.moonoDead = False
            self.timer-= 1

            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 17:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Did you pickup that powerup gem?").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 18:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Gems change how you attack.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 19:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "These effects don't last long...").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 20:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "...but they do stack!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 21:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "So pick up as many as you can!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 22:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "It is important to make use of gems").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 23:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "They can really help you out!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 24:
            self.defaultSpawnRate = 2.5 * FRAMES_PER_SECOND
            self.massAttack = True
            self.timer = 0
            self.currentStep +=1

        if self.currentStep == 25:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "They're attacking en masse!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 26:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Try moving slowly towards them.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 27:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "You can better control your shots.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 28:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "This can really increase your chances!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,3 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1


        if self.timer >= 4 * FRAMES_PER_SECOND and self.currentStep == 29:
            self.spawnBoss()
            self.bossFight = True
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Oh no! Its a boss!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 30:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Kill the moonos that spawn.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer >= 3 * FRAMES_PER_SECOND and self.currentStep == 31:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Some of them will drop a nova.").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1

        if self.timer == 3 * FRAMES_PER_SECOND and self.currentStep == 32:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Use the nova when the boss is near").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1


        if self.timer == 3 * FRAMES_PER_SECOND and self.currentStep == 33:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Only novas can hurt bosses!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)
            self.timer = 0
            self.currentStep +=1
        
        if self.timeAfterBoss == 1 * FRAMES_PER_SECOND:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Congratulations!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)

        if self.timeAfterBoss == 3 * FRAMES_PER_SECOND:
            tempImage = text.TextSurface(FONT_PATH, 30, FONT_COLOR, "Looks like you're ready for a real challenge!").image
            
            helpBubble = infoBubble.infoBubble(tempImage, self.player,2 * FRAMES_PER_SECOND)
            helpBubble.setOffSet(vector.vector2d(0.0,-100.0))
            self.textGroup.add(helpBubble)

        if (self.moonoDead or self.massAttack):
            self.timer += 1

        if self.timeAfterBoss == 5 * FRAMES_PER_SECOND:
            utility.fadeMusic()
            return True