Remove single cog summon, add Field Office cog summon, add V2 invasion cog summon, add Cog name to V2 invasion bulletins.

This commit is contained in:
John 2015-05-29 16:46:27 +03:00 committed by Loudrob
parent 3dd1d05573
commit d92c28de27
8 changed files with 143 additions and 105 deletions

View file

@ -120,7 +120,7 @@ class NewsManager(DistributedObject.DistributedObject):
elif msgType == ToontownGlobals.V2InvasionBegin:
messages.append(TTLocalizer.V2InvasionBegin1)
messages.append(TTLocalizer.V2InvasionBegin2)
messages.append(TTLocalizer.V2InvasionBegin3)
messages.append(TTLocalizer.V2InvasionBegin3 % suitNamePlural)
self.invading = 1
elif msgType == ToontownGlobals.V2InvasionEnd:
messages.append(TTLocalizer.V2InvasionEnd1)
@ -129,7 +129,7 @@ class NewsManager(DistributedObject.DistributedObject):
elif msgType == ToontownGlobals.V2InvasionBulletin:
messages.append(TTLocalizer.V2InvasionBulletin1)
messages.append(TTLocalizer.V2InvasionBulletin2)
messages.append(TTLocalizer.V2InvasionBulletin3)
messages.append(TTLocalizer.V2InvasionBulletin3 % suitNamePlural)
self.invading = 1
else:
self.notify.warning('setInvasionStatus: invalid msgType: %s' % msgType)

View file

@ -1,4 +1,7 @@
from pandac.PandaModules import ColorBlendAttrib
from toontown.suit import SuitDNA
import random
ModelPhase = 5
ModelTypes = {'animation': 'a',
'model': 'm',
@ -9,6 +12,26 @@ Games = {'flying': 'cfg',
'maze': 'cmg',
'shared': 'csa'}
def getAllowedTracks():
tracks = []
if config.GetBool('want-sellbot-cogdo', True):
tracks.append('s')
if config.GetBool('want-lawbot-cogdo', True):
tracks.append('l')
return tracks
def getCogdoTrack(suitName):
tracks = getAllowedTracks()
if not tracks:
return None
track = SuitDNA.getSuitDept(suitName)
return track if track in tracks else random.choice(tracks)
def loadFlyingModel(baseName, type = 'model', group = 'area'):
return loadModel(baseName, 'flying', type=type, group=group)

View file

@ -9,14 +9,13 @@ from toontown.suit import SuitDNA
from toontown.suit import Suit
from toontown.battle import SuitBattleGlobals
from toontown.toon import NPCToons
TTL = TTLocalizer
class SummonCogDialog(DirectFrame, StateData.StateData):
notify = DirectNotifyGlobal.directNotify.newCategory('SummonCogDialog')
notify.setInfo(True)
def __init__(self, suitIndex):
DirectFrame.__init__(self, parent=aspect2dp, pos=(0, 0, 0.3), relief=None, image=DGG.getDefaultDialogGeom(), image_scale=(1.6, 1, 0.7), image_pos=(0, 0, 0.18), image_color=ToontownGlobals.GlobalDialogColor, text=TTL.SummonDlgTitle, text_scale=0.12, text_pos=(0, 0.4), borderWidth=(0.01, 0.01), sortOrder=NO_FADE_SORT_INDEX)
DirectFrame.__init__(self, parent=aspect2dp, pos=(0, 0, 0.3), relief=None, image=DGG.getDefaultDialogGeom(), image_scale=(1.6, 1, 0.85), image_pos=(0, 0, 0.18), image_color=ToontownGlobals.GlobalDialogColor, text=TTLocalizer.SummonDlgTitle, text_scale=0.12, text_pos=(0, 0.5), borderWidth=(0.01, 0.01), sortOrder=NO_FADE_SORT_INDEX)
StateData.StateData.__init__(self, 'summon-cog-done')
self.initialiseoptions(SummonCogDialog)
self.suitIndex = suitIndex
@ -42,16 +41,17 @@ class SummonCogDialog(DirectFrame, StateData.StateData):
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
self.head = Suit.attachSuitHead(self, self.suitName)
z = self.head.getZ()
self.head.setPos(-0.4, -0.1, z + 0.2)
self.suitLabel = DirectLabel(parent=self, relief=None, text=self.suitFullName, text_font=ToontownGlobals.getSuitFont(), pos=(-0.4, 0, 0), scale=0.07)
self.head.setPos(-0.4, -0.1, z + 0.25)
self.suitLabel = DirectLabel(parent=self, relief=None, text=self.suitFullName, text_font=ToontownGlobals.getSuitFont(), pos=(-0.4, 0, 0.025), scale=0.07)
closeButtonImage = (gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr'))
buttonImage = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR'))
disabledColor = Vec4(0.5, 0.5, 0.5, 1)
self.summonSingleButton = DirectButton(parent=self, relief=None, text=TTL.SummonDlgButton1, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.25), command=self.issueSummons, extraArgs=['single'])
self.summonBuildingButton = DirectButton(parent=self, relief=None, text=TTL.SummonDlgButton2, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.125), command=self.issueSummons, extraArgs=['building'])
self.summonInvasionButton = DirectButton(parent=self, relief=None, text=TTL.SummonDlgButton3, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.0), command=self.issueSummons, extraArgs=['invasion'])
self.statusLabel = DirectLabel(parent=self, relief=None, text='', text_wordwrap=12, pos=(0.3, 0, 0.25), scale=0.07)
self.cancel = DirectButton(parent=self, relief=None, image=closeButtonImage, pos=(0.7, 0, -0.1), command=self.__cancel)
self.summonBuildingButton = DirectButton(parent=self, relief=None, text=TTLocalizer.SummonDlgButton2, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.35), command=self.issueSummons, extraArgs=['building'])
self.summonInvasionButton = DirectButton(parent=self, relief=None, text=TTLocalizer.SummonDlgButton3, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.225), command=self.issueSummons, extraArgs=['invasion'])
self.summonCogdoButton = DirectButton(parent=self, relief=None, text=TTLocalizer.SummonDlgButton4, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.06, text_pos=(0, -0.01), pos=(0.3, 0, 0.1), command=self.issueSummons, extraArgs=['cogdo'])
self.summonV2InvasionButton = DirectButton(parent=self, relief=None, text=TTLocalizer.SummonDlgButton5, image=buttonImage, image_scale=(1.7, 1, 1), image3_color=disabledColor, text_scale=0.048, text_pos=(0, -0.01), pos=(0.3, 0, -0.025), command=self.issueSummons, extraArgs=['v2invasion'])
self.statusLabel = DirectLabel(parent=self, relief=None, text='', text_wordwrap=12, pos=(0.3, 0, 0.3), scale=0.07)
self.cancel = DirectButton(parent=self, relief=None, image=closeButtonImage, pos=(0.7, 0, -0.15), command=self.__cancel)
gui.removeNode()
guiButton.removeNode()
self.hide()
@ -90,14 +90,7 @@ class SummonCogDialog(DirectFrame, StateData.StateData):
def cogSummonsDone(self, returnCode, suitIndex, buildingId):
self.cancel['state'] = DGG.NORMAL
if self.summonsType == 'single':
if returnCode == 'success':
self.statusLabel['text'] = TTL.SummonDlgSingleSuccess
elif returnCode == 'badlocation':
self.statusLabel['text'] = TTL.SummonDlgSingleBadLoc
elif returnCode == 'fail':
self.statusLabel['text'] = TTL.SummonDlgInvasionFail
elif self.summonsType == 'building':
if self.summonsType == 'building' or self.summonsType == 'cogdo':
if returnCode == 'success':
building = base.cr.doId2do.get(buildingId)
dnaStore = base.cr.playGame.dnaStore
@ -108,33 +101,36 @@ class SummonCogDialog(DirectFrame, StateData.StateData):
if npcId:
npcName = NPCToons.getNPCName(npcId[0])
if buildingTitle:
self.statusLabel['text'] = TTL.SummonDlgBldgSuccess % (npcName, buildingTitle)
self.statusLabel['text'] = TTLocalizer.SummonDlgBldgSuccess % (npcName, buildingTitle)
else:
self.statusLabel['text'] = TTL.SummonDlgBldgSuccess2
self.statusLabel['text'] = TTLocalizer.SummonDlgBldgSuccess2
elif returnCode == 'badlocation':
self.statusLabel['text'] = TTL.SummonDlgBldgBadLoc
self.statusLabel['text'] = TTLocalizer.SummonDlgBldgBadLoc
elif returnCode == 'fail':
self.statusLabel['text'] = TTL.SummonDlgInvasionFail
elif self.summonsType == 'invasion':
self.statusLabel['text'] = TTLocalizer.SummonDlgInvasionFail
elif returnCode == 'disabled':
self.statusLabel['text'] = TTLocalizer.SummonDlgBldgNoCogdos
elif self.summonsType.endswith('invasion'):
if returnCode == 'success':
self.statusLabel['text'] = TTL.SummonDlgInvasionSuccess
self.statusLabel['text'] = TTLocalizer.SummonDlgInvasionSuccess
elif returnCode == 'busy':
self.statusLabel['text'] = TTL.SummonDlgInvasionBusy % self.suitFullName
self.statusLabel['text'] = TTLocalizer.SummonDlgInvasionBusy % self.suitFullName
elif returnCode == 'fail':
self.statusLabel['text'] = TTL.SummonDlgInvasionFail
self.statusLabel['text'] = TTLocalizer.SummonDlgInvasionFail
def hideSummonButtons(self):
self.summonSingleButton.hide()
self.summonBuildingButton.hide()
self.summonInvasionButton.hide()
self.summonCogdoButton.hide()
self.summonV2InvasionButton.hide()
def issueSummons(self, summonsType):
if summonsType == 'single':
text = TTL.SummonDlgSingleConf
elif summonsType == 'building':
text = TTL.SummonDlgBuildingConf
if summonsType == 'building' or summonsType == 'cogdo':
text = TTLocalizer.SummonDlgBuildingConf
elif summonsType == 'invasion':
text = TTL.SummonDlgInvasionConf
text = TTLocalizer.SummonDlgInvasionConf
elif summonsType == 'v2invasion':
text = TTLocalizer.SummonDlgV2InvasionConf
text = text % self.suitFullName
def handleResponse(resp):
@ -157,20 +153,23 @@ class SummonCogDialog(DirectFrame, StateData.StateData):
def doIssueSummonsText(self):
self.disableButtons()
self.statusLabel['text'] = TTL.SummonDlgDelivering
self.statusLabel['text'] = TTLocalizer.SummonDlgDelivering
def disableButtons(self):
self.summonSingleButton['state'] = DGG.DISABLED
self.summonBuildingButton['state'] = DGG.DISABLED
self.summonInvasionButton['state'] = DGG.DISABLED
self.summonCogdoButton['state'] = DGG.DISABLED
self.summonV2InvasionButton['state'] = DGG.DISABLED
def enableButtons(self):
if base.localAvatar.hasCogSummons(self.suitIndex, 'single'):
self.summonSingleButton['state'] = DGG.NORMAL
if base.localAvatar.hasCogSummons(self.suitIndex, 'building'):
self.summonBuildingButton['state'] = DGG.NORMAL
if base.localAvatar.hasCogSummons(self.suitIndex, 'invasion'):
self.summonInvasionButton['state'] = DGG.NORMAL
if base.localAvatar.hasCogSummons(self.suitIndex, 'cogdo'):
self.summonCogdoButton['state'] = DGG.NORMAL
if base.localAvatar.hasCogSummons(self.suitIndex, 'v2invasion'):
self.summonV2InvasionButton['state'] = DGG.NORMAL
def __cancel(self):
self.exit()

View file

@ -645,8 +645,8 @@ class DistributedLawbotBossAI(DistributedBossCogAI.DistributedBossCogAI, FSM.FSM
self.b_setState('Reward')
BattleExperienceAI.assignRewards(self.involvedToons, self.toonSkillPtsGained, self.suitsKilled, ToontownGlobals.dept2cogHQ(self.dept), self.helpfulToons)
preferredDept = random.randrange(len(SuitDNA.suitDepts))
typeWeights = ['single'] * 70 + ['building'] * 27 + ['invasion'] * 3
preferredSummonType = random.choice(typeWeights)
#typeWeights = ['single'] * 70 + ['building'] * 27 + ['invasion'] * 3
preferredSummonType = random.choice(['building', 'invasion', 'cogdo', 'v2invasion'])
for toonId in self.involvedToons:
toon = self.air.doId2do.get(toonId)
if toon:
@ -659,12 +659,14 @@ class DistributedLawbotBossAI(DistributedBossCogAI.DistributedBossCogAI, FSM.FSM
summonType = prefSummonType
hasSummon = toon.hasParticularCogSummons(prefDeptIndex, cogLevel, prefSummonType)
self.notify.debug('trying to find another reward')
if not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'single'):
summonType = 'single'
elif not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'building'):
if not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'building'):
summonType = 'building'
elif not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'invasion'):
summonType = 'invasion'
elif not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'cogdo'):
summonType = 'cogdo'
elif not toon.hasParticularCogSummons(prefDeptIndex, cogLevel, 'v2invasion'):
summonType = 'v2invasion'
else:
foundOne = False
for curDeptIndex in xrange(len(SuitDNA.suitDepts)):
@ -672,11 +674,6 @@ class DistributedLawbotBossAI(DistributedBossCogAI.DistributedBossCogAI, FSM.FSM
deptIndex = curDeptIndex
foundOne = True
break
elif not toon.hasParticularCogSummons(curDeptIndex, cogLevel, 'single'):
deptIndex = curDeptIndex
summonType = 'single'
foundOne = True
break
elif not toon.hasParticularCogSummons(curDeptIndex, cogLevel, 'building'):
deptIndex = curDeptIndex
summonType = 'building'
@ -687,15 +684,25 @@ class DistributedLawbotBossAI(DistributedBossCogAI.DistributedBossCogAI, FSM.FSM
deptIndex = curDeptIndex
foundOne = True
break
elif not toon.hasParticularCogSummons(curDeptIndex, cogLevel, 'cogdo'):
summonType = 'cogdo'
deptIndex = curDeptIndex
foundOne = True
break
elif not toon.hasParticularCogSummons(curDeptIndex, cogLevel, 'v2invasion'):
summonType = 'v2invasion'
deptIndex = curDeptIndex
foundOne = True
break
possibleCogLevel = range(SuitDNA.suitsPerDept)
possibleDeptIndex = range(len(SuitDNA.suitDepts))
possibleSummonType = ['single', 'building', 'invasion']
typeWeights = ['single'] * 70 + ['building'] * 27 + ['invasion'] * 3
possibleSummonType = ['building', 'invasion', 'cogdo', 'v2invasion']
#typeWeights = ['single'] * 70 + ['building'] * 27 + ['invasion'] * 3
if not foundOne:
for i in xrange(5):
randomCogLevel = random.choice(possibleCogLevel)
randomSummonType = random.choice(typeWeights)
randomSummonType = random.choice(possibleSummonType)
randomDeptIndex = random.choice(possibleDeptIndex)
if not toon.hasParticularCogSummons(randomDeptIndex, randomCogLevel, randomSummonType):
foundOne = True

View file

@ -45,10 +45,6 @@ class SuitInvasionManagerAI:
# This invasion is no-op.
return False
if flags and ((suitDeptIndex is not None) or (suitTypeIndex is not None)):
# For invasion flags to be present, it must be a generic invasion.
return False
if (suitDeptIndex is None) and (suitTypeIndex is not None):
# It's impossible to determine the invading Cog.
return False

View file

@ -1793,12 +1793,6 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
self.effect.play()
def d_reqCogSummons(self, type, suitIndex):
if type == 'single':
pass
elif type == 'building':
pass
elif type == 'invasion':
pass
self.sendUpdate('reqCogSummons', [type, suitIndex])
def cogSummonsResponse(self, returnCode, suitIndex, doId):
@ -1813,12 +1807,14 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
def hasCogSummons(self, suitIndex, type = None):
summons = self.getCogSummonsEarned()
curSetting = summons[suitIndex]
if type == 'single':
if type == 'building':
return curSetting & 1
elif type == 'building':
return curSetting & 2
elif type == 'invasion':
return curSetting & 2
elif type == 'cogdo':
return curSetting & 4
elif type == 'v2invasion':
return curSetting & 8
return curSetting
def setFlowerCollection(self, speciesList, varietyList):

View file

@ -11,6 +11,7 @@ from otp.avatar import DistributedAvatarAI, DistributedPlayerAI
from otp.otpbase import OTPGlobals, OTPLocalizer
from toontown.battle import SuitBattleGlobals
from toontown.catalog import CatalogAccessoryItem, CatalogItem, CatalogItemList
from toontown.cogdominium import CogdoUtil
from toontown.chat import ResistanceChat
from toontown.coghq import CogDisguiseGlobals
from toontown.estate import FlowerBasket, FlowerCollection, GardenGlobals
@ -25,7 +26,7 @@ from toontown.parties.PartyReplyInfo import PartyReplyInfoBase
from toontown.quest import QuestRewardCounter, Quests
from toontown.racing import RaceGlobals
from toontown.shtiker import CogPageGlobals
from toontown.suit import SuitDNA
from toontown.suit import SuitDNA, SuitInvasionGlobals
from toontown.toon import NPCToons
from toontown.toonbase import TTLocalizer, ToontownBattleGlobals, ToontownGlobals
from toontown.toonbase.ToontownGlobals import *
@ -3057,7 +3058,7 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
self.kart.start()
def reqCogSummons(self, type, suitIndex):
if type not in ('single', 'building', 'invasion'):
if type not in ('building', 'invasion', 'cogdo', 'v2invasion'):
self.air.writeServerEvent('suspicious', self.doId, 'invalid cog summons type: %s' % type)
self.sendUpdate('cogSummonsResponse', ['fail', suitIndex, 0])
return
@ -3070,14 +3071,15 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
self.sendUpdate('cogSummonsResponse', ['fail', suitIndex, 0])
return
returnCode = None
if type == 'single':
returnCode = self.doSummonSingleCog(suitIndex)
elif type == 'building':
if type == 'building':
returnCode = self.doBuildingTakeover(suitIndex)
elif type == 'invasion':
elif type == 'cogdo':
returnCode = self.doCogdoTakeOver(suitIndex)
elif type.endswith('invasion'):
suitDeptIndex = suitIndex / SuitDNA.suitsPerDept
suitTypeIndex = suitIndex % SuitDNA.suitsPerDept
returnCode = self.doCogInvasion(suitDeptIndex, suitTypeIndex)
flags = SuitInvasionGlobals.IFV2 if type.startswith('v2') else 0
returnCode = self.doCogInvasion(suitDeptIndex, suitTypeIndex, flags)
if returnCode:
if returnCode[0] == 'success':
self.air.writeServerEvent('cogSummoned', self.doId, '%s|%s|%s' % (type, suitIndex, self.zoneId))
@ -3130,18 +3132,27 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
self.zoneId))
return ['success', suitIndex, building.doId]
def doCogdoTakeOver(self, difficulty, buildingHeight):
def doCogdoTakeOver(self, suitIndex):
if suitIndex >= len(SuitDNA.suitHeadTypes):
self.notify.warning('Bad suit index: %s' % suitIndex)
return ['badIndex', suitIndex, 0]
suitName = SuitDNA.suitHeadTypes[suitIndex]
track = CogdoUtil.getCogdoTrack(suitName)
if not track:
return ['disabled', 0, 0]
streetId = ZoneUtil.getBranchZone(self.zoneId)
if streetId not in self.air.suitPlanners:
self.notify.warning('Street %d is not known.' % streetId)
return ['badlocation', difficulty, 0]
return ['badlocation', 0, 0]
building = self.findClosestDoor()
if building is None:
return ['badlocation', difficulty, 0]
building.cogdoTakeOver(difficulty, buildingHeight)
return ['success', difficulty, building.doId]
if building == None:
return ['badlocation', 0, 0]
sp = self.air.suitPlanners[streetId]
level, type, track = sp.pickLevelTypeAndTrack(None, SuitDNA.getSuitType(suitName), track)
building.cogdoTakeOver(level, 2, track)
return ['success', level, building.doId]
def doCogInvasion(self, suitDeptIndex, suitTypeIndex):
def doCogInvasion(self, suitDeptIndex, suitTypeIndex, flags=0):
if self.air.suitInvasionManager.getInvading():
return ['busy', 0, 0]
@ -3149,7 +3160,7 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
suitIndex = SuitDNA.suitHeadTypes.index(suitName)
if self.air.suitInvasionManager.startInvasion(
suitDeptIndex=suitDeptIndex, suitTypeIndex=suitTypeIndex):
suitDeptIndex=suitDeptIndex, suitTypeIndex=suitTypeIndex, flags=flags):
return ['success', suitIndex, 0]
return ['fail', suitIndex, 0]
@ -3169,19 +3180,21 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
def restockAllCogSummons(self):
numSuits = len(SuitDNA.suitHeadTypes)
fullSetForSuit = 1 | 2 | 4
fullSetForSuit = 1 | 2 | 4 | 8
allSummons = numSuits * [fullSetForSuit]
self.b_setCogSummonsEarned(allSummons)
def addCogSummonsEarned(self, suitIndex, type):
summons = self.getCogSummonsEarned()
curSetting = summons[suitIndex]
if type == 'single':
if type == 'building':
curSetting |= 1
elif type == 'building':
curSetting |= 2
elif type == 'invasion':
curSetting |= 2
elif type == 'cogdo':
curSetting |= 4
elif type == 'v2invasion':
curSetting |= 8
summons[suitIndex] = curSetting
self.b_setCogSummonsEarned(summons)
@ -3189,12 +3202,14 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
summons = self.getCogSummonsEarned()
curSetting = summons[suitIndex]
if self.hasCogSummons(suitIndex, type):
if type == 'single':
if type == 'building':
curSetting &= -2
elif type == 'building':
curSetting &= -3
elif type == 'invasion':
curSetting &= -3
elif type == 'cogdo':
curSetting &= -5
elif type == 'v2invasion':
curSetting &= -9
summons[suitIndex] = curSetting
self.b_setCogSummonsEarned(summons)
if hasattr(self, 'autoRestockSummons') and self.autoRestockSummons:
@ -3206,12 +3221,14 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
def hasCogSummons(self, suitIndex, type = None):
summons = self.getCogSummonsEarned()
curSetting = summons[suitIndex]
if type == 'single':
if type == 'building':
return curSetting & 1
elif type == 'building':
return curSetting & 2
elif type == 'invasion':
return curSetting & 2
elif type == 'cogdo':
return curSetting & 4
elif type == 'v2invasion':
return curSetting & 8
return curSetting
def hasParticularCogSummons(self, deptIndex, level, type):
@ -3239,11 +3256,12 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
else:
numSuits = len(SuitDNA.suitHeadTypes)
suitIndex = random.randrange(0, numSuits)
if summonType in ['single', 'building', 'invasion']:
summonTypes = ['building', 'invasion', 'cogdo', 'v2invasion']
if summonType in summonTypes:
type = summonType
else:
typeWeights = ['single'] * 70 + ['building'] * 25 + ['invasion'] * 5
type = random.choice(typeWeights)
#typeWeights = ['single'] * 70 + ['building'] * 25 + ['invasion'] * 5
type = random.choice(summonTypes)
if suitIndex >= len(SuitDNA.suitHeadTypes):
self.notify.warning('Bad suit index: %s' % suitIndex)
self.addCogSummonsEarned(suitIndex, type)
@ -4139,7 +4157,7 @@ def allSummons():
invoker = spellbook.getInvoker()
numSuits = len(SuitDNA.suitHeadTypes)
fullSetForSuit = 1 | 2 | 4
fullSetForSuit = 1 | 2 | 4 | 8
allSummons = numSuits * [fullSetForSuit]
invoker.b_setCogSummonsEarned(allSummons)
return 'Lots of summons!'
@ -4948,9 +4966,8 @@ def immortal():
@magicWord(category=CATEGORY_PROGRAMMER, types=[str, int])
def summoncogdo(track="s", difficulty=5):
tracks = ['s']
if config.GetBool('want-lawbot-cogdo', True):
tracks.append('l')
tracks = CogdoUtil.getAllowedTracks()
if track not in tracks:
return "Invalid track!"

View file

@ -4635,12 +4635,12 @@ WaiterInvasionBulletin2 = lToonHQ + ': The C.E.O. has fired all of his waiters!!
WaiterInvasionBulletin3 = lToonHQ + ": The unemployed waiters are invading Toontown!!!"
V2InvasionBegin1 = lToonHQ + ": Yikes!!! This isn't good, Toons!"
V2InvasionBegin2 = lToonHQ + ': A major firmware update has been released to the Cogs!!!'
V2InvasionBegin3 = lToonHQ + ': Version 2.0 Cogs have taken over Toontown!!!'
V2InvasionBegin3 = lToonHQ + ': Version 2.0 %s have taken over Toontown!!!'
V2InvasionEnd1 = lToonHQ + ': The version 2.0 Cog invasion has ended!!!'
V2InvasionEnd2 = lToonHQ + ': The Toons have saved the day once again!!!'
V2InvasionBulletin1 = lToonHQ + ': There is a Cog invasion in progress!!!'
V2InvasionBulletin2 = lToonHQ + ': A major firmware update has been released to the Cogs!!!'
V2InvasionBulletin3 = lToonHQ + ': Version 2.0 Cogs have taken over Toontown!!!'
V2InvasionBulletin3 = lToonHQ + ': Version 2.0 %s have taken over Toontown!!!'
LeaderboardTitle = 'Toon Platoon'
QuestScript101_0 = 'Come here! Use the arrow keys to move.'
QuestScript101_1 = 'These are Cogs. They are robots that are trying to take over Toontown.'
@ -7567,20 +7567,20 @@ WitnessToonJuryWeightBonusPlural = {6: 'This is a tough case. You seated %d Toon
7: 'This is a very tough case. You seated %d Toon jurors, so your evidence has a bonus weight of %d.',
8: 'This is the toughest case. You seated %d Toon jurors, so your evidence has a bonus weight of %d.'}
IssueSummons = 'Summon'
SummonDlgTitle = 'Issue a Cog Summons'
SummonDlgButton1 = 'Summon a Cog'
SummonDlgTitle = 'Issue a Cog Summon'
SummonDlgButton2 = 'Summon a Cog Building'
SummonDlgButton3 = 'Summon a Cog Invasion'
SummonDlgSingleConf = 'Would you like to issue a summons to a %s?'
SummonDlgButton4 = 'Summon a Field Office'
SummonDlgButton5 = 'Summon a Version 2.0 Invasion'
SummonDlgBuildingConf = 'Would you like to summon a %s to a nearby Toon building?'
SummonDlgInvasionConf = 'Would you like to summon a %s invasion?'
SummonDlgV2InvasionConf = 'Would you like to summon a Version 2.0 %s invasion?'
SummonDlgNumLeft = 'You have %s left.'
SummonDlgDelivering = 'Delivering Summons...'
SummonDlgSingleSuccess = 'You have successfully summoned the Cog.'
SummonDlgSingleBadLoc = "Sorry, Cogs aren't allowed here. Try somewhere else."
SummonDlgBldgSuccess = 'You have successfully summoned the Cogs. %s has agreed to let them temporarily take over %s!'
SummonDlgBldgSuccess2 = 'You have successfully summoned the Cogs. A Shopkeeper has agreed to let them temporarily take over their building!'
SummonDlgBldgBadLoc = 'Sorry, there are no Toon buildings nearby for the Cogs to take over.'
SummonDlgBldgNoCogdos = "Sorry, but you can't summon a Field Office right now. Please try again later."
SummonDlgInvasionSuccess = "You have successfully summoned the Cogs. It's an invasion!"
SummonDlgInvasionBusy = 'A %s cannot be found now. Try again when the Cog invasion is over.'
SummonDlgInvasionFail = 'Sorry, the Cog invasion has failed.'