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)
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)
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))
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))
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)
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))]
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()
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))
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()
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)
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)
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)
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)
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()
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)
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)