Beispiel #1
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        self._timer = bs.OnScreenTimer()
        self._timer.start()

        self.level_cnt = 1

        if self.teamsOrFFA() == 'teams':
            ip0 = self.team_init_positions[0]
            ip1 = self.team_init_positions[1]
            Foothold((ip0[0], ip0[1] - 2, ip0[2]),
                     power='shield',
                     breakable=False).autoRetain()
            Foothold((ip1[0], ip1[1] - 2, ip1[2]),
                     power='shield',
                     breakable=False).autoRetain()
        else:
            ip = self.init_position
            Foothold((ip[0], ip[1] - 2, ip[2]),
                     power='shield',
                     breakable=False).autoRetain()

        bs.gameTimer(int(5000 / self.cur_speed),
                     bs.WeakCall(self.add_foothold),
                     repeat=True)

        bs.gameTimer(1000, self._checkEndGame,
                     repeat=True)  # Repeat check game end
        bs.gameTimer(self.peace_time + 100,
                     bs.WeakCall(self.tip_hint, AbyssLang.hint_use_punch))
        bs.gameTimer(6000, bs.WeakCall(self.faster_speed), repeat=True)
Beispiel #2
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)
        # drop a wave every few seconds.. and every so often drop the time between waves
        # ..lets have things increase faster if we have fewer players
        #self._meteorTime = 3000
        t = 7500 if len(self.players) > 2 else 4000
        if self.settings['Epic Mode']: t /= 4
        #bs.gameTimer(t,self._decrementMeteorTime,repeat=True)

        # kick off the first wave in a few seconds
        t = 3000
        if self.settings['Epic Mode']: t /= 4
        #bs.gameTimer(t,self._setMeteorTimer)
        # this wrangles our bots
        self._bots = bs.BotSet()

        for i in range(self.settings['Max Bots']):
         bPos = (-7.3+15.3*random.random(),10,-5.5+2.1*random.random())
         bs.gameTimer(4000,bs.Call(self._bots.spawnBot,self._getRandomBotType(),pos=bPos,spawnTime=0))

        self._updateTimer = bs.Timer(1000,self._onSpazBotDied,repeat=True)
        
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000,self._timer.start)
Beispiel #3
0
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)
        self._bots = bs.BotSet()

        pt1 = (6.972673935, 4.380775486, -9.424407061)
        pt2 = (-6.972673935, 4.380775486, -9.424407061)
        pt3 = (6.972673935, 4.380775486, 3.424407061)
        pt4 = (-6.972673935, 4.380775486, 3.424407061)

        for i in range(self.settings['Bombers']):
            bs.gameTimer(
                1000,
                bs.Call(self._bots.spawnBot,
                        bs.BomberBotStatic,
                        pos=random.choice([pt1, pt2, pt3, pt4]),
                        spawnTime=3000))

        self._scoreRegions = []
        self._scoreRegions.append(
            bs.NodeActor(
                bs.newNode('region',
                           attrs={
                               'position': (0.3, 4.044276501, -2.9),
                               'scale': (11.7, 15, 9.5),
                               'type': 'box',
                               'materials': (self.safeRegionMaterial, )
                           })))
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)
        self._updateTimer = bs.Timer(1000, self._onSpazBotDied, repeat=True)
    def onBegin(self):

        bs.CoopGameActivity.onBegin(self)

        self.setupStandardPowerupDrops()

        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)

        self._won = False

        self._pro = self.settings.get('preset') in ('Mad', 'God')

        self._boss = bs.BotSet()

        bs.gameTimer(
            4000,
            bs.Call(self._boss.spawnBot,
                    BossBot,
                    pos=(0, 3, -5),
                    spawnTime=3000))

        bs.gameTimer(7001, bs.WeakCall(self.setupBoss))

        bs.gameTimer(40000, bs.WeakCall(self.angryBoss))

        if self._pro:
            bs.gameTimer(80000 if self.settings.get('preset') == 'Mad' \
                         else 60000, bs.WeakCall(self.madBoss))

        if self.settings.get('preset') == 'God':
            bs.gameTimer(80000, bs.WeakCall(self.godBoss))
Beispiel #5
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        self._won = False

        isPro = self.settings.get('preset') == 'pro'

        # in pro mode there's no powerups
        if not isPro:
            self.setupStandardPowerupDrops()

        # make our on-screen timer and start it roughly when our bots appear
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)

        # spawn some baddies
        self._bots = bs.BotSet()

        bs.gameTimer(
            1000,
            bs.Call(self._bots.spawnBot,
                    bs.NinjaBot,
                    pos=(3, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.NinjaBot,
                    pos=(-3, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            3000,
            bs.Call(self._bots.spawnBot,
                    bs.NinjaBot,
                    pos=(5, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            4000,
            bs.Call(self._bots.spawnBot,
                    bs.NinjaBot,
                    pos=(-5, 3, -2),
                    spawnTime=3000))

        # add some extras for multiplayer or pro mode
        if len(self.initialPlayerInfo) > 2 or isPro:
            bs.gameTimer(
                5000,
                bs.Call(self._bots.spawnBot,
                        bs.NinjaBot,
                        pos=(0, 3, -5),
                        spawnTime=3000))
        if len(self.initialPlayerInfo) > 3 or isPro:
            bs.gameTimer(
                6000,
                bs.Call(self._bots.spawnBot,
                        bs.NinjaBot,
                        pos=(0, 3, 1),
                        spawnTime=3000))
Beispiel #6
0
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)

        self.mineCount = 0
        bs.gameTimer(self.updateRate, bs.WeakCall(self.mineUpdate), repeat=True)
        bs.gameTimer(self.settings['Max Size Increases Every']*1000, bs.WeakCall(self.maxSizeUpdate), repeat=True)
        bs.gameTimer(self.settings['Sec/Extra Mine']*1000, bs.WeakCall(self.maxMineUpdate), repeat=True)
        self._timer = bs.OnScreenTimer()
        self._timer.start()
        # check for immediate end (if we've only got 1 player, etc)
        bs.gameTimer(5000, self._checkEndGame)
Beispiel #7
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        self._won = False

        self.setupStandardPowerupDrops()

        # make our on-screen timer and start it roughly when our bots appear
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)

        # this wrangles our bots
        self._bots = bs.BotSet()

        # start some timers to spawn bots
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.MelBot,
                    pos=(3, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.ChickBot,
                    pos=(-3, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.ToughGuyBotPro,
                    pos=(5, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.BomberBotPro,
                    pos=(-5, 3, -2),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.BomberBot,
                    pos=(0, 3, -5),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.PirateBotNoTimeLimit,
                    pos=(0, 3, 1),
                    spawnTime=10000))
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        self._isWon = False

        # make our on-screen timer and start it roughly when our bots appear
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)

        self.setupStandardPowerupDrops()

        self._bases = [BaseBlock((7.8, 7.7, 0)), BaseBlock((-6.3, 7.7, 0))]
Beispiel #9
0
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)
        self._meteorTime = 3000
        t = 7500 if len(self.players) > 2 else 4000
        if self.settings['Epic Mode']: t /= 4
        bs.gameTimer(t, self._decrementMeteorTime, repeat=True)

        t = 3000
        if self.settings['Epic Mode']: t /= 4
        bs.gameTimer(t, self._setMeteorTimer)

        self._timer = bs.OnScreenTimer()
        self._timer.start()
Beispiel #10
0
    def onPlayerJoin(self, player):
        # don't allow joining after we start
        # (would enable leave/rejoin tomfoolery)
        if self.hasBegun():
            bs.screenMessage(bs.Lstr(resource='playerDelayedJoinText',
                                     subs=[('${PLAYER}',
                                            player.getName(full=True))]),
                             color=(0, 1, 0))
            # for score purposes, mark them as having died right as the game started
            return

        #FIX ME!
        #onPlayerJoin is being called before onBegin (?)
        if not hasattr(self, '_timer'):
            self._timer = bs.OnScreenTimer()
            self._timer.start()
        self.spawnPlayer(player)
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)

        self._won = False

        self.setupStandardPowerupDrops()

        # make our on-screen timer and start it roughly when our bots appear
        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)

        # this wrangles our bots
        self._bots = bs.BotSet()

        # spawn some baddies
        self._bots = bs.BotSet()
        bs.gameTimer(
            1000,
            bs.Call(self._bots.spawnBot,
                    bs.MelBotStatic,
                    pos=(6, 7, -6),
                    spawnTime=3000))
        bs.gameTimer(
            2000,
            bs.Call(self._bots.spawnBot,
                    bs.ToughGuyBotProShielded,
                    pos=(-3, 10, -2),
                    spawnTime=3000))
        bs.gameTimer(
            3000,
            bs.Call(self._bots.spawnBot,
                    bs.NinjaBotProShielded,
                    pos=(5, 6, -2),
                    spawnTime=3000))
        bs.gameTimer(
            4000,
            bs.Call(self._bots.spawnBot,
                    bs.BomberBotProShielded,
                    pos=(-5, 6, -2),
                    spawnTime=3000))
        bs.gameTimer(
            5000,
            bs.Call(self._bots.spawnBot,
                    bs.ChickBotStatic,
                    pos=(-6, 7, -6),
                    spawnTime=3000))
Beispiel #12
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)
        # drop a wave every few seconds.. and every so often drop the time between waves
        # ..lets have things increase faster if we have fewer players
        self._meteorTime = 3000
        t = 7500 if len(self.players) > 2 else 4000
        if self.settings['Epic Mode']: t /= 4
        bs.gameTimer(t,self._decrementMeteorTime,repeat=True)

        # kick off the first wave in a few seconds
        t = 3000
        if self.settings['Epic Mode']: t /= 4
        bs.gameTimer(t,self._setMeteorTimer)

        self._timer = bs.OnScreenTimer()
        self._timer.start()
Beispiel #13
0
    def onBegin(self):
        # self.playerList = []
        bs.TeamGameActivity.onBegin(self)
        self._madTime = self.settings['Mad Time To Die (Approximate)'] * 1000

        # bs.gameTimer(t,self._decrementMeteorTime,repeat=True)

        # kick off the first wave in a few seconds
        t = 3000
        if self.settings['Epic Mode']: t /= 4
        # bs.gameTimer(t,self._setMeteorTimer)

        self._timer = bs.OnScreenTimer()
        self._timer.start()

        bs.gameTimer(10, bs.WeakCall(self.updateSpazText), repeat=True)

        bs.gameTimer(t, bs.WeakCall(self.handleMessage, CheckNeedNewMadMessage()), repeat=False)
        bs.gameTimer(1000, self._checkNeedMad, repeat=True)
Beispiel #14
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)
        self.setupStandardPowerupDrops()

        if 0:
            bs.newNode('locator', attrs={'position': (-3, -2, 1.5)})
            bs.newNode('locator', attrs={'position': (0, 0, 0)})
            bs.newNode('locator', attrs={'position': ((-3, 6.5, 0))})
            bs.newNode('locator', attrs={'position': ((3, 6.5, 0))})

        self._timer = bs.OnScreenTimer()
        self._timer.start()

        def _reduceHealth():
            for player in self.players:
                if hasattr(player.actor, 'node') and player.isAlive():
                    actor = player.actor
                    position = actor.node.position
                    if position[1] < 9:
                        actor.node.handleMessage(
                            bs.HitMessage(pos=(position[0], position[1] + 1,
                                               position[2]),
                                          velocity=(0, 0, 0),
                                          magnitude=100
                                          if len(self.players) > 4 else 200,
                                          hitType='explosion',
                                          hitSubType='normal',
                                          radius=1.1,
                                          sourcePlayer=player))
                        if actor.hitPoints <= 0:
                            player.gameData['_playerNode'].node.handleMessage(
                                bs.DieMessage(immediate=False, how='impact'))
                            return

        bs.gameTimer(1000, bs.Call(_reduceHealth), repeat=1)

        def onlyOnePlayer():
            if len(self.players) <= 1:
                self.endGame()

        bs.gameTimer(5000, onlyOnePlayer)
Beispiel #15
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        # bs.gameTimer(t,self._decrementMeteorTime,repeat=True)

        # kick off the first wave in a few seconds
        t = self.settings[JungleHunterLanguage.spawnDelay] * 1000
        if self.settings['Epic Mode']: t /= 4
        # bs.gameTimer(t,self._setMeteorTimer)

        self._timer = bs.OnScreenTimer()
        self._timer.start()
        self._updateScoreBoard()

        bs.gameTimer(4000, self._checkEndGame)  # 4秒之后检测一波

        self._bots = bs.BotSet()
        bs.gameTimer(1000,
                     bs.Call(self._bots.spawnBot, NinjaPrey, pos=self.getMap().getFFAStartPosition(self.players),
                             spawnTime=100), repeat=False)

        bs.gameTimer(t, bs.WeakCall(self.botsGener), repeat=True)
Beispiel #16
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        # drop a wave every few seconds.. and every so often drop the time
        # between waves ..lets have things increase faster if we have fewer
        # players
        self._meteorTime = 2000
        t = 5000 if len(self.players) > 2 else 2500
        if self.settings['Epic Mode']:
            t /= 4
        bs.gameTimer(t, self._decrementMeteorTime, repeat=True)

        # kick off the first wave in a few seconds
        t = 3000
        if self.settings['Epic Mode']:
            t /= 4
        bs.gameTimer(t, self._setMeteorTimer)

        self._timer = bs.OnScreenTimer()
        self._timer.start()

        # check for immediate end (if we've only got 1 player, etc)
        bs.gameTimer(5000, self._checkEndGame)
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)

        # drop a wave every few seconds.. and every so often drop the time between waves
        # ..lets have things increase faster if we have fewer players
        self._meteorTime = 1000
        t = 4000 if len(self.players) > 2 else 4000
        if self.settings['Epic Mode']: self._meteorTime = 1000
        if self.settings['Epic Mode']: t = 4000
        bs.gameTimer(t, self._decrementMeteorTime, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer)

        t = 5000 if len(self.players) > 2 else 5000
        bs.gameTimer(t, self._rmsWave)
        t = 25000 if len(self.players) > 2 else 25000
        bs.gameTimer(t, self._rmsEnd)

        self._meteorTime2 = 1500
        t = 24500 if len(self.players) > 2 else 24500
        if self.settings['Epic Mode']: self._meteorTime2 = 1000
        if self.settings['Epic Mode']: t = 24000
        bs.gameTimer(t, self._decrementMeteorTime2, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer2)

        t = 45000 if len(self.players) > 2 else 45000
        bs.gameTimer(t, self._rmsEnd2)

        self._meteorTime3 = 2000
        t = 43000 if len(self.players) > 2 else 43000
        if self.settings['Epic Mode']: self._meteorTime3 = 1500
        if self.settings['Epic Mode']: t = 43500
        bs.gameTimer(t, self._decrementMeteorTime3, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer3)

        t = 60000 if len(self.players) > 2 else 60000
        bs.gameTimer(t, self._rmsEnd3)

        self._meteorTime4 = 0700
        t = 59300 if len(self.players) > 2 else 59300
        if self.settings['Epic Mode']: self._meteorTime4 = 0700
        if self.settings['Epic Mode']: t = 59300
        bs.gameTimer(t, self._decrementMeteorTime4, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer4)

        t = 85000 if len(self.players) > 2 else 85000
        bs.gameTimer(t, self._rmsEnd4)

        self._meteorTime5 = 1000
        t = 84000 if len(self.players) > 2 else 84000
        if self.settings['Epic Mode']: self._meteorTime5 = 1000
        if self.settings['Epic Mode']: t = 83000
        bs.gameTimer(t, self._decrementMeteorTime5, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer5)

        t = 100000 if len(self.players) > 2 else 100000
        bs.gameTimer(t, self._rmsEnd5)

        self._meteorTime6 = 0400
        t = 99600 if len(self.players) > 2 else 99600
        if self.settings['Epic Mode']: self._meteorTime6 = 0400
        if self.settings['Epic Mode']: t = 99600
        bs.gameTimer(t, self._decrementMeteorTime6, repeat=True)
        bs.gameTimer(t, self._setMeteorTimer6)

        t = 115000 if len(self.players) > 2 else 115000
        bs.gameTimer(t, self._rmsEnd6)

        self._meteorMedicTime = 0500
        t = 34500 if len(self.players) > 2 else 34500
        if self.settings['Epic Mode']: self._meteorMedicTime = 0250
        if self.settings['Epic Mode']: t = 34750
        bs.gameTimer(t, self._decrementMeteorMedicTime, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer)

        t = 35000 if len(self.players) > 2 else 35000
        bs.gameTimer(t, self._rmsMedic)
        t = 36500 if len(self.players) > 2 else 36500
        bs.gameTimer(t, self._rmsEndMedic)

        self._meteorMedicTime2 = 0500
        t = 49500 if len(self.players) > 2 else 49500
        if self.settings['Epic Mode']: self._meteorMedicTime2 = 0250
        if self.settings['Epic Mode']: t = 49750
        bs.gameTimer(t, self._decrementMeteorMedicTime2, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer2)

        t = 50000 if len(self.players) > 2 else 50000
        bs.gameTimer(t, self._rmsMedic2)
        t = 51500 if len(self.players) > 2 else 51500
        bs.gameTimer(t, self._rmsEndMedic2)

        self._meteorMedicTime3 = 0500
        t = 64500 if len(self.players) > 2 else 64500
        if self.settings['Epic Mode']: self._meteorMedicTime3 = 0250
        if self.settings['Epic Mode']: t = 64750
        bs.gameTimer(t, self._decrementMeteorMedicTime3, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer3)

        t = 65000 if len(self.players) > 2 else 65000
        bs.gameTimer(t, self._rmsMedic3)
        t = 66500 if len(self.players) > 2 else 66500
        bs.gameTimer(t, self._rmsEndMedic3)

        self._meteorMedicTime4 = 0500
        t = 79500 if len(self.players) > 2 else 79500
        if self.settings['Epic Mode']: self._meteorMedicTime4 = 0250
        if self.settings['Epic Mode']: t = 79750
        bs.gameTimer(t, self._decrementMeteorMedicTime4, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer4)

        t = 80000 if len(self.players) > 2 else 80000
        bs.gameTimer(t, self._rmsMedic4)
        t = 81500 if len(self.players) > 2 else 81500
        bs.gameTimer(t, self._rmsEndMedic4)

        self._meteorMedicTime5 = 0500
        t = 94500 if len(self.players) > 2 else 94500
        if self.settings['Epic Mode']: self._meteorMedicTime5 = 0250
        if self.settings['Epic Mode']: t = 94750
        bs.gameTimer(t, self._decrementMeteorMedicTime5, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer5)

        t = 95000 if len(self.players) > 2 else 95000
        bs.gameTimer(t, self._rmsMedic5)
        t = 96500 if len(self.players) > 2 else 96500
        bs.gameTimer(t, self._rmsEndMedic5)

        self._meteorMedicTime6 = 0500
        t = 115000 if len(self.players) > 2 else 115000
        if self.settings['Epic Mode']: self._meteorMedicTime6 = 0250
        if self.settings['Epic Mode']: t = 117500
        bs.gameTimer(t, self._decrementMeteorMedicTime6, repeat=True)
        bs.gameTimer(t, self._setMeteorMedicTimer6)

        t = 110000 if len(self.players) > 2 else 110000
        bs.gameTimer(t, self._rmsMedic6)
        t = 115000 if len(self.players) > 2 else 115000
        bs.gameTimer(t, self._rmsEndMedic6)

        t = 120000 if len(self.players) > 2 else 120000
        bs.gameTimer(t, self._rmsEndGame)

        self._timer = bs.OnScreenTimer()
        self._timer.start()

        # check for immediate end (if we've only got 1 player, etc)
        bs.gameTimer(5000, self._checkEndGame)
Beispiel #18
0
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)
        self.setupStandardTimeLimit(self.settings['Time Limit'])
        self.setupStandardPowerupDrops()
        self._teamFinishPts = 100

        # throw a timer up on-screen
        self._timeText = bs.NodeActor(
            bs.newNode('text',
                       attrs={
                           'vAttach': 'top',
                           'hAttach': 'center',
                           'hAlign': 'center',
                           'color': (1, 1, 0.5, 1),
                           'flatness': 0.5,
                           'shadow': 0.5,
                           'position': (0, -50),
                           'scale': 1.4,
                           'text': ''
                       }))
        self._timer = bs.OnScreenTimer()

        if self.settings['Mine Spawning'] != 0:
            self._raceMines = [{
                'point': p,
                'mine': None
            } for p in self.getMap().getDefPoints('raceMine')]
            if len(self._raceMines) > 0:
                self._raceMineTimer = bs.Timer(self.settings['Mine Spawning'],
                                               self._updateRaceMine,
                                               repeat=True)

        self._scoreBoardTimer = bs.Timer(250,
                                         self._updateScoreBoard,
                                         repeat=True)
        self._playerOrderUpdateTimer = bs.Timer(250,
                                                self._updatePlayerOrder,
                                                repeat=True)

        if self._isSlowMotion:
            tScale = 0.4
            lightY = 50
        else:
            tScale = 1.0
            lightY = 150
        lStart = int(7100 * tScale)
        inc = int(1250 * tScale)

        bs.gameTimer(lStart, self._doLight1)
        bs.gameTimer(lStart + inc, self._doLight2)
        bs.gameTimer(lStart + 2 * inc, self._doLight3)
        bs.gameTimer(lStart + 3 * inc, self._startRace)

        self._startLights = []
        for i in range(4):
            l = bs.newNode('image',
                           attrs={
                               'texture': bs.getTexture('nub'),
                               'opacity': 1.0,
                               'absoluteScale': True,
                               'position': (-75 + i * 50, lightY),
                               'scale': (50, 50),
                               'attach': 'center'
                           })
            bs.animate(
                l, 'opacity', {
                    4000 * tScale: 0,
                    5000 * tScale: 1.0,
                    12000 * tScale: 1.0,
                    12500 * tScale: 0.0
                })
            bs.gameTimer(int(13000 * tScale), l.delete)
            self._startLights.append(l)

        self._startLights[0].color = (0.2, 0, 0)
        self._startLights[1].color = (0.2, 0, 0)
        self._startLights[2].color = (0.2, 0.05, 0)
        self._startLights[3].color = (0.0, 0.3, 0)
        self._organizer()
Beispiel #19
0
    def onBegin(self):
        bs.TeamGameActivity.onBegin(self)
        self.setupStandardTimeLimit(self.settings['Time Limit'])
        self.setupStandardPowerupDrops()
        self._teamFinishPts = 100

        # throw a timer up on-screen
        self._timeText = bs.NodeActor(
            bs.newNode(
                'text',
                attrs={
                    'vAttach':
                    'top',
                    'hAttach':
                    'right',
                    'hAlign':
                    'right',
                    'color': (1, 1, 1, .5),
                    'flatness':
                    0.5,
                    'shadow':
                    0.5,
                    'position': (0, -75),
                    'scale':
                    1.4,
                    'text':
                    'Touch\nthe\nright,\ntop,\nleft,\nand\nbottom\nplatforms\nin\norder.'
                }))
        self._timer = bs.OnScreenTimer()

        self._scoreBoardTimer = bs.Timer(250,
                                         self._updateScoreBoard,
                                         repeat=True)

        if self._isSlowMotion:
            tScale = 0.4
            lightY = 50
        else:
            tScale = 1.0
            lightY = 150
        lStart = int(7100 * tScale)
        inc = int(1250 * tScale)

        bs.gameTimer(lStart, self._doLight1)
        bs.gameTimer(lStart + inc, self._doLight2)
        bs.gameTimer(lStart + 2 * inc, self._doLight3)
        bs.gameTimer(lStart + 3 * inc, self._startRace)

        self._startLights = []
        for i in range(4):
            l = bs.newNode('image',
                           attrs={
                               'texture': bs.getTexture('nub'),
                               'opacity': 1.0,
                               'absoluteScale': True,
                               'position': (-75 + i * 50, lightY),
                               'scale': (50, 50),
                               'attach': 'center'
                           })
            bs.animate(
                l, 'opacity', {
                    4000 * tScale: 0,
                    5000 * tScale: 1.0,
                    12000 * tScale: 1.0,
                    12500 * tScale: 0.0
                })
            bs.gameTimer(int(13000 * tScale), l.delete)
            self._startLights.append(l)

        self._startLights[0].color = (0.2, 0, 0)
        self._startLights[1].color = (0.2, 0, 0)
        self._startLights[2].color = (0.2, 0.05, 0)
        self._startLights[3].color = (0.0, 0.3, 0)
Beispiel #20
0
    def onBegin(self):

        bs.TeamGameActivity.onBegin(self)
        # drop a wave every few seconds.. and every so often drop the time between waves
        # ..lets have things increase faster if we have fewer players
        #self._meteorTime = 3000
        t = 7500 if len(self.players) > 2 else 4000
        if self.settings['Epic Mode']: t /= 4
        #bs.gameTimer(t,self._decrementMeteorTime,repeat=True)

        # kick off the first wave in a few seconds
        t = 3000
        if self.settings['Epic Mode']: t /= 4
        #bs.gameTimer(t,self._setMeteorTimer)
        bPos = self.getMap().defs.points['flagDefault']  #botSpawnTop
        # this wrangles our bots
        self._bots = bs.BotSet()

        # start some timers to spawn bots
        bs.gameTimer(
            1000,
            bs.Call(self._bots.spawnBot,
                    bs.PirateBot,
                    pos=bPos,
                    spawnTime=3000))
        bs.gameTimer(
            1000,
            bs.Call(self._bots.spawnBot,
                    bs.PirateBot,
                    pos=bPos,
                    spawnTime=5000))
        bs.gameTimer(
            1000,
            bs.Call(self._bots.spawnBot,
                    bs.PirateBot,
                    pos=bPos,
                    spawnTime=7000))

        #bs.gameTimer(2000,bs.Call(self._bots.spawnBot,bs.PirateBot,pos=(-3,3,-2),spawnTime=3000))
        #bs.gameTimer(3000,bs.Call(self._bots.spawnBot,bs.NinjaBot,pos=(5,3,-2),spawnTime=3000))
        #bs.gameTimer(4000,bs.Call(self._bots.spawnBot,bs.NinjaBot,pos=(-5,3,-2),spawnTime=3000))

        # add a few extras for multiplayer
        if len(self.initialPlayerInfo) > 2:
            bs.gameTimer(
                1000,
                bs.Call(self._bots.spawnBot,
                        bs.PirateBot,
                        pos=bPos,
                        spawnTime=9000))
            bs.gameTimer(
                1000,
                bs.Call(self._bots.spawnBot,
                        bs.PirateBot,
                        pos=bPos,
                        spawnTime=11000))
        if len(self.initialPlayerInfo) > 5:
            bs.gameTimer(
                1000,
                bs.Call(self._bots.spawnBot,
                        bs.PirateBot,
                        pos=bPos,
                        spawnTime=13000))
            bs.gameTimer(
                1000,
                bs.Call(self._bots.spawnBot,
                        bs.PirateBot,
                        pos=bPos,
                        spawnTime=15000))

        # note: if spawns were spread out more we'd probably want to set some sort of flag on the
        # last spawn to ensure we don't inadvertantly allow a 'win' before every bot is spawned.
        # (ie: if bot 1, 2, and 3 got killed but 4 hadn't spawned yet, the game might end because
        # it sees no remaining bots.
        self._updateTimer = bs.Timer(1000, self._onSpazBotDied, repeat=True)

        self._timer = bs.OnScreenTimer()
        bs.gameTimer(4000, self._timer.start)