From ec8ee6976945f3a5f45558ef9b0e5e0bfbbf76e4 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 7 Jul 2015 02:39:55 +0300 Subject: [PATCH] Add messages for CEO. TODO: Banquet Speech. --- otp/avatar/Avatar.py | 13 +++++++- toontown/suit/DistributedBossbotBoss.py | 6 ++++ toontown/suit/DistributedBossbotBossAI.py | 38 ++++++++++++++--------- toontown/toon/Toon.py | 12 ------- toontown/toonbase/TTLocalizerEnglish.py | 16 +++++----- 5 files changed, 50 insertions(+), 35 deletions(-) diff --git a/otp/avatar/Avatar.py b/otp/avatar/Avatar.py index 531a59fc..d0129bc1 100755 --- a/otp/avatar/Avatar.py +++ b/otp/avatar/Avatar.py @@ -1,6 +1,7 @@ from direct.actor.Actor import Actor from direct.directnotify import DirectNotifyGlobal from direct.distributed import ClockDelta +from direct.interval.IntervalGlobal import * from direct.showbase.PythonUtil import recordCreationStack from panda3d.core import * import random @@ -14,7 +15,7 @@ from otp.otpbase import OTPLocalizer from otp.otpbase import OTPRender from otp.nametag.Nametag import Nametag from otp.nametag.NametagGroup import NametagGroup -from otp.nametag.NametagConstants import CFSpeech, CFThought, CFTimeout, CFPageButton, CFNoQuitButton, CFQuitButton +from otp.nametag.NametagConstants import * teleportNotify = DirectNotifyGlobal.directNotify.newCategory('Teleport') @@ -596,7 +597,17 @@ class Avatar(Actor, ShadowCaster): def loop(self, animName, restart = 1, partName = None, fromFrame = None, toFrame = None): return Actor.loop(self, animName, restart, partName, fromFrame, toFrame) + + def createTalkSequence(self, speech, waitTime, name='talkSequence'): + sequence = Sequence(name=name) + for text in speech: + sequence.append(Func(self.setChatAbsolute, text, CFSpeech)) + sequence.append(Wait(len(text.split(' ')))) + sequence.append(Func(self.clearChat)) + sequence.append(Wait(waitTime)) + + return sequence @magicWord(category=CATEGORY_COMMUNITY_MANAGER, types=[]) def target(): diff --git a/toontown/suit/DistributedBossbotBoss.py b/toontown/suit/DistributedBossbotBoss.py index dd43d104..b401ca93 100755 --- a/toontown/suit/DistributedBossbotBoss.py +++ b/toontown/suit/DistributedBossbotBoss.py @@ -432,6 +432,11 @@ class DistributedBossbotBoss(DistributedBossCog.DistributedBossCog, FSM.FSM): self.servingTimer.countdown(ToontownGlobals.BossbotBossServingDuration) base.playMusic(self.phaseTwoMusic, looping=1, volume=0.9) + intervalName = 'BattleTwoSpeech' + seq = self.createTalkSequence(TTLocalizer.CEOSpeech, 10, intervalName) + seq.start() + self.storeInterval(seq, intervalName) + def exitBattleTwo(self): if self.servingTimer: self.servingTimer.destroy() @@ -440,6 +445,7 @@ class DistributedBossbotBoss(DistributedBossCog.DistributedBossCog, FSM.FSM): for toonId in self.involvedToons: self.removeFoodFromToon(toonId) + self.clearInterval('BattleTwoSpeech') self.phaseTwoMusic.stop() return diff --git a/toontown/suit/DistributedBossbotBossAI.py b/toontown/suit/DistributedBossbotBossAI.py index 0485f95e..73b0e37a 100755 --- a/toontown/suit/DistributedBossbotBossAI.py +++ b/toontown/suit/DistributedBossbotBossAI.py @@ -910,18 +910,33 @@ class DistributedBossbotBossAI(DistributedBossCogAI.DistributedBossCogAI, FSM.FS return self.moveAttackAllowed +def getCEO(toon): + for object in simbase.air.doId2do.values(): + if isinstance(object, DistributedBossbotBossAI): + if toon.doId in object.involvedToons: + return object + + return None + +@magicWord(category=CATEGORY_ADMINISTRATOR) +def skipCEOBanquet(): + """ + Skips to the banquet stage of the CEO. + """ + boss = getCEO(spellbook.getInvoker()) + if not boss: + return "You aren't in a CEO!" + if boss.state in ('PrepareBattleTwo', 'BattleTwo'): + return "You can't skip this round." + boss.exitIntroduction() + boss.b_setState('PrepareBattleTwo') + @magicWord(category=CATEGORY_ADMINISTRATOR) def skipCEO(): """ Skips to the final round of the CEO. """ - invoker = spellbook.getInvoker() - boss = None - for do in simbase.air.doId2do.values(): - if isinstance(do, DistributedBossbotBossAI): - if invoker.doId in do.involvedToons: - boss = do - break + boss = getCEO(spellbook.getInvoker()) if not boss: return "You aren't in a CEO!" if boss.state in ('PrepareBattleThree', 'BattleThree'): @@ -929,19 +944,12 @@ def skipCEO(): boss.exitIntroduction() boss.b_setState('PrepareBattleThree') - @magicWord(category=CATEGORY_ADMINISTRATOR) def killCEO(): """ Kills the CEO. """ - invoker = spellbook.getInvoker() - boss = None - for do in simbase.air.doId2do.values(): - if isinstance(do, DistributedBossbotBossAI): - if invoker.doId in do.involvedToons: - boss = do - break + boss = getCEO(spellbook.getInvoker()) if not boss: return "You aren't in a CEO!" boss.b_setState('Victory') diff --git a/toontown/toon/Toon.py b/toontown/toon/Toon.py index a96549a1..67ad6e52 100755 --- a/toontown/toon/Toon.py +++ b/toontown/toon/Toon.py @@ -1,7 +1,6 @@ from direct.actor import Actor from direct.directnotify import DirectNotifyGlobal from direct.interval.IntervalGlobal import * -from direct.showbase.PythonUtil import Functor from direct.task.Task import Task from panda3d.core import * import random @@ -3013,17 +3012,6 @@ class Toon(Avatar.Avatar, ToonHead): def exitScientistPlay(self): self.stop() - def createTalkSequence(self, speech, waitTime): - sequence = Sequence() - - for text in speech: - sequence.append(Func(self.setChatAbsolute, text, CFSpeech)) - sequence.append(Wait(len(text.split(' ')))) - sequence.append(Func(self.clearChat)) - sequence.append(Wait(waitTime)) - - return sequence - def getDustCloud(self, delay=0.5, color=None): dustCloud = DustCloud.DustCloud(fBillboard=0, wantSound=1) diff --git a/toontown/toonbase/TTLocalizerEnglish.py b/toontown/toonbase/TTLocalizerEnglish.py index 22c36666..3ff519af 100755 --- a/toontown/toonbase/TTLocalizerEnglish.py +++ b/toontown/toonbase/TTLocalizerEnglish.py @@ -8565,13 +8565,19 @@ DirectedAttackBossTaunts = { 'Have a free sample!', 'I see you over there!', 'My products beat out all of Toontown!', - "Don't think I skipped you, %(toon)s!" + "Don't think I've skipped you, %(toon)s!" ], 'm': [ "Here's money well spent.", 'Hey! Get away from that crane!', 'Stop!', '%(toon)s, get over here!' + ], + 'c': [ + 'These are brand new tables!', + "A little water isn't going to affect me!", + 'Bug off! This is my clubhouse!', + "You've ruined my banquet! Now you'll pay!" ] } VPSpinMessages = [ @@ -8591,10 +8597,6 @@ JumpBossTaunts = { "You're all in contempt of court!" ] } -BossTaunts = [ - "You can't stop this. We'll just keep on coming.", - 'Break time is over.', - "Your laffable fun can't stop our work.", - 'You toons need to be taught some manners.', - "We're only starting our business proposal." +CEOSpeech = [ + "Who's gonna write all this speech?" ] \ No newline at end of file