mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-10-31 16:57:54 +00:00
135 lines
No EOL
5 KiB
Python
135 lines
No EOL
5 KiB
Python
from otp.level import DistributedLevelAI, LevelSpec
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from direct.task import Task
|
|
from otp.level import LevelSpec
|
|
from toontown.toonbase import ToontownGlobals, ToontownBattleGlobals
|
|
from toontown.coghq import FactoryEntityCreatorAI, MintRoomSpecs
|
|
from toontown.coghq import MintRoomBase, LevelSuitPlannerAI
|
|
from toontown.coghq import DistributedMintBattleAI
|
|
from toontown.suit import DistributedMintSuitAI
|
|
|
|
class DistributedMintRoomAI(DistributedLevelAI.DistributedLevelAI, MintRoomBase.MintRoomBase):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedMintRoomAI')
|
|
|
|
def __init__(self, air, mintId, mintDoId, zoneId, roomId, roomNum, avIds, battleExpAggreg):
|
|
DistributedLevelAI.DistributedLevelAI.__init__(self, air, zoneId, 0, avIds)
|
|
MintRoomBase.MintRoomBase.__init__(self)
|
|
self.setMintId(mintId)
|
|
self.setRoomId(roomId)
|
|
self.roomNum = roomNum
|
|
self.mintDoId = mintDoId
|
|
self.battleExpAggreg = battleExpAggreg
|
|
|
|
def createEntityCreator(self):
|
|
return FactoryEntityCreatorAI.FactoryEntityCreatorAI(level=self)
|
|
|
|
def getBattleCreditMultiplier(self):
|
|
return ToontownBattleGlobals.getMintCreditMultiplier(self.mintId)
|
|
|
|
def generate(self):
|
|
self.notify.debug('generate %s: room=%s' % (self.doId, self.roomId))
|
|
self.notify.debug('loading spec')
|
|
specModule = MintRoomSpecs.getMintRoomSpecModule(self.roomId)
|
|
roomSpec = LevelSpec.LevelSpec(specModule)
|
|
if __dev__:
|
|
self.notify.debug('creating entity type registry')
|
|
typeReg = self.getMintEntityTypeReg()
|
|
roomSpec.setEntityTypeReg(typeReg)
|
|
self.notify.debug('creating entities')
|
|
DistributedLevelAI.DistributedLevelAI.generate(self, roomSpec)
|
|
self.notify.debug('creating cogs')
|
|
cogSpecModule = MintRoomSpecs.getCogSpecModule(self.roomId)
|
|
self.planner = LevelSuitPlannerAI.LevelSuitPlannerAI(self.air, self, DistributedMintSuitAI.DistributedMintSuitAI, DistributedMintBattleAI.DistributedMintBattleAI, cogSpecModule.CogData, cogSpecModule.ReserveCogData, cogSpecModule.BattleCells, battleExpAggreg=self.battleExpAggreg)
|
|
suitHandles = self.planner.genSuits()
|
|
messenger.send('plannerCreated-' + str(self.doId))
|
|
self.suits = suitHandles['activeSuits']
|
|
self.reserveSuits = suitHandles['reserveSuits']
|
|
self.d_setSuits()
|
|
self.notify.debug('finish mint room %s %s creation' % (self.roomId, self.doId))
|
|
|
|
def delete(self):
|
|
self.notify.debug('delete: %s' % self.doId)
|
|
suits = self.suits
|
|
for reserve in self.reserveSuits:
|
|
suits.append(reserve[0])
|
|
|
|
self.planner.destroy()
|
|
del self.planner
|
|
for suit in suits:
|
|
if not suit.isDeleted():
|
|
suit.factoryIsGoingDown()
|
|
suit.requestDelete()
|
|
|
|
del self.battleExpAggreg
|
|
DistributedLevelAI.DistributedLevelAI.delete(self, deAllocZone=False)
|
|
|
|
def getMintId(self):
|
|
return self.mintId
|
|
|
|
def getRoomId(self):
|
|
return self.roomId
|
|
|
|
def getRoomNum(self):
|
|
return self.roomNum
|
|
|
|
def getCogLevel(self):
|
|
return self.cogLevel
|
|
|
|
def d_setSuits(self):
|
|
self.sendUpdate('setSuits', [self.getSuits(), self.getReserveSuits()])
|
|
|
|
def getSuits(self):
|
|
suitIds = []
|
|
for suit in self.suits:
|
|
suitIds.append(suit.doId)
|
|
|
|
return suitIds
|
|
|
|
def getReserveSuits(self):
|
|
suitIds = []
|
|
for suit in self.reserveSuits:
|
|
suitIds.append(suit[0].doId)
|
|
|
|
return suitIds
|
|
|
|
def d_setBossConfronted(self, toonId):
|
|
if toonId not in self.avIdList:
|
|
self.notify.warning('d_setBossConfronted: %s not in list of participants' % toonId)
|
|
return
|
|
self.sendUpdate('setBossConfronted', [toonId])
|
|
|
|
def setVictors(self, victorIds):
|
|
activeVictors = []
|
|
activeVictorIds = []
|
|
for victorId in victorIds:
|
|
toon = self.air.doId2do.get(victorId)
|
|
if toon is not None:
|
|
activeVictors.append(toon)
|
|
activeVictorIds.append(victorId)
|
|
|
|
description = '%s|%s' % (self.mintId, activeVictorIds)
|
|
for avId in activeVictorIds:
|
|
self.air.writeServerEvent('mintDefeated', avId, description)
|
|
|
|
for toon in activeVictors:
|
|
simbase.air.questManager.toonDefeatedMint(toon, self.mintId, activeVictors)
|
|
|
|
def b_setDefeated(self):
|
|
self.d_setDefeated()
|
|
self.setDefeated()
|
|
|
|
def d_setDefeated(self):
|
|
self.sendUpdate('setDefeated')
|
|
|
|
def setDefeated(self):
|
|
pass
|
|
|
|
def allToonsGone(self, toonsThatCleared):
|
|
DistributedLevelAI.DistributedLevelAI.allToonsGone(self, toonsThatCleared)
|
|
if self.roomNum == 0:
|
|
mint = simbase.air.doId2do.get(self.mintDoId)
|
|
if mint is not None:
|
|
mint.allToonsGone()
|
|
else:
|
|
self.notify.warning('no mint %s in allToonsGone' % self.mintDoId)
|
|
return |