mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 03:35:12 -06:00
198 lines
5.1 KiB
Python
198 lines
5.1 KiB
Python
from otp.ai.AIBaseGlobal import *
|
|
from otp.avatar import DistributedAvatarAI
|
|
import SuitPlannerBase
|
|
import SuitBase
|
|
import SuitDNA
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from toontown.battle import SuitBattleGlobals
|
|
|
|
class DistributedSuitBaseAI(DistributedAvatarAI.DistributedAvatarAI, SuitBase.SuitBase):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedSuitBaseAI')
|
|
|
|
def __init__(self, air, suitPlanner):
|
|
DistributedAvatarAI.DistributedAvatarAI.__init__(self, air)
|
|
SuitBase.SuitBase.__init__(self)
|
|
self.sp = suitPlanner
|
|
self.maxHP = 10
|
|
self.currHP = 10
|
|
self.zoneId = 0
|
|
self.dna = SuitDNA.SuitDNA()
|
|
self.virtual = 0
|
|
self.waiter = 0
|
|
self.skeleRevives = 0
|
|
self.maxSkeleRevives = 0
|
|
self.reviveFlag = 0
|
|
self.buildingHeight = None
|
|
return
|
|
|
|
def generate(self):
|
|
DistributedAvatarAI.DistributedAvatarAI.generate(self)
|
|
|
|
def delete(self):
|
|
self.sp = None
|
|
del self.dna
|
|
|
|
DistributedAvatarAI.DistributedAvatarAI.delete(self)
|
|
SuitBase.SuitBase.delete(self)
|
|
|
|
def requestRemoval(self):
|
|
if self.sp != None:
|
|
self.sp.removeSuit(self)
|
|
else:
|
|
self.requestDelete()
|
|
return
|
|
|
|
def setLevel(self, lvl = None):
|
|
attributes = SuitBattleGlobals.SuitAttributes[self.dna.name]
|
|
if lvl:
|
|
self.level = lvl - attributes['level'] - 1
|
|
else:
|
|
self.level = SuitBattleGlobals.pickFromFreqList(attributes['freq'])
|
|
self.notify.debug('Assigning level ' + str(lvl))
|
|
if hasattr(self, 'doId'):
|
|
self.d_setLevelDist(self.level)
|
|
hp = attributes['hp'][self.level]
|
|
self.maxHP = hp
|
|
self.currHP = hp
|
|
|
|
def getLevelDist(self):
|
|
return self.getLevel()
|
|
|
|
def d_setLevelDist(self, level):
|
|
self.sendUpdate('setLevelDist', [level])
|
|
|
|
def setupSuitDNA(self, level, type, track):
|
|
dna = SuitDNA.SuitDNA()
|
|
dna.newSuitRandom(type, track)
|
|
self.dna = dna
|
|
self.track = track
|
|
self.setLevel(level)
|
|
return None
|
|
|
|
def getDNAString(self):
|
|
if self.dna:
|
|
return self.dna.makeNetString()
|
|
else:
|
|
self.notify.debug('No dna has been created for suit %d!' % self.getDoId())
|
|
return ''
|
|
|
|
def b_setBrushOff(self, index):
|
|
self.setBrushOff(index)
|
|
self.d_setBrushOff(index)
|
|
return None
|
|
|
|
def d_setBrushOff(self, index):
|
|
self.sendUpdate('setBrushOff', [index])
|
|
|
|
def setBrushOff(self, index):
|
|
pass
|
|
|
|
def d_denyBattle(self, toonId):
|
|
self.sendUpdateToAvatarId(toonId, 'denyBattle', [])
|
|
|
|
def b_setSkeleRevives(self, num):
|
|
if num == None:
|
|
num = 0
|
|
self.setSkeleRevives(num)
|
|
self.d_setSkeleRevives(self.getSkeleRevives())
|
|
return
|
|
|
|
def d_setSkeleRevives(self, num):
|
|
self.sendUpdate('setSkeleRevives', [num])
|
|
|
|
def getSkeleRevives(self):
|
|
return self.skeleRevives
|
|
|
|
def setSkeleRevives(self, num):
|
|
if num == None:
|
|
num = 0
|
|
self.skeleRevives = num
|
|
if num > self.maxSkeleRevives:
|
|
self.maxSkeleRevives = num
|
|
return
|
|
|
|
def getMaxSkeleRevives(self):
|
|
return self.maxSkeleRevives
|
|
|
|
def useSkeleRevive(self):
|
|
self.skeleRevives -= 1
|
|
self.currHP = self.maxHP
|
|
self.reviveFlag = 1
|
|
|
|
def reviveCheckAndClear(self):
|
|
returnValue = 0
|
|
if self.reviveFlag == 1:
|
|
returnValue = 1
|
|
self.reviveFlag = 0
|
|
return returnValue
|
|
|
|
def getHP(self):
|
|
return self.currHP
|
|
|
|
def setHP(self, hp):
|
|
if hp > self.maxHP:
|
|
self.currHP = self.maxHP
|
|
else:
|
|
self.currHP = hp
|
|
return None
|
|
|
|
def b_setHP(self, hp):
|
|
self.setHP(hp)
|
|
self.d_setHP(hp)
|
|
|
|
def d_setHP(self, hp):
|
|
self.sendUpdate('setHP', [hp])
|
|
|
|
def releaseControl(self):
|
|
return None
|
|
|
|
def getDeathEvent(self):
|
|
return 'cogDead-%s' % self.doId
|
|
|
|
def resume(self):
|
|
self.notify.debug('resume, hp=%s' % self.currHP)
|
|
if self.currHP <= 0:
|
|
messenger.send(self.getDeathEvent())
|
|
self.requestRemoval()
|
|
return None
|
|
|
|
def prepareToJoinBattle(self):
|
|
pass
|
|
|
|
def b_setSkelecog(self, flag):
|
|
self.setSkelecog(flag)
|
|
self.d_setSkelecog(flag)
|
|
|
|
def setSkelecog(self, flag):
|
|
SuitBase.SuitBase.setSkelecog(self, flag)
|
|
|
|
def d_setSkelecog(self, flag):
|
|
self.sendUpdate('setSkelecog', [flag])
|
|
|
|
def isForeman(self):
|
|
return 0
|
|
|
|
def isSupervisor(self):
|
|
return 0
|
|
|
|
def setVirtual(self, virtual):
|
|
pass
|
|
|
|
def getVirtual(self):
|
|
return 0
|
|
|
|
def isVirtual(self):
|
|
return self.getVirtual()
|
|
|
|
def setWaiter(self, flag):
|
|
SuitBase.SuitBase.setWaiter(self, flag)
|
|
|
|
def d_setWaiter(self, flag):
|
|
self.sendUpdate('setWaiter', [flag])
|
|
|
|
def b_setWaiter(self, flag):
|
|
self.setWaiter(flag)
|
|
self.d_setWaiter(flag)
|
|
|
|
def getWaiter(self):
|
|
return self.waiter
|