169 lines
6.9 KiB
Python
169 lines
6.9 KiB
Python
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
|
from otp.otpbase import OTPLocalizer, OTPGlobals
|
|
from toontown.hood import ZoneUtil
|
|
import time
|
|
|
|
class TTSFriendsManager(DistributedObjectGlobal):
|
|
|
|
def __init__(self, cr):
|
|
DistributedObjectGlobal.__init__(self, cr)
|
|
self.nextTeleportFail = 0
|
|
|
|
def d_removeFriend(self, friendId):
|
|
self.sendUpdate('removeFriend', [friendId])
|
|
|
|
def d_requestFriendsList(self):
|
|
self.sendUpdate('requestFriendsList', [])
|
|
|
|
def friendList(self, resp):
|
|
base.cr.handleGetFriendsList(resp)
|
|
|
|
def friendOnline(self, id):
|
|
base.cr.handleFriendOnline(id)
|
|
|
|
def friendOffline(self, id):
|
|
base.cr.handleFriendOffline(id)
|
|
|
|
def d_getAvatarDetails(self, avId):
|
|
self.sendUpdate('getAvatarDetails', [avId])
|
|
|
|
def friendDetails(self, avId, inventory, trackAccess, hp, maxHp, defaultShard, lastHood, dnaString, experience, trackBonusLevel, npcFriends):
|
|
fields = [
|
|
['setExperience' , experience],
|
|
['setTrackAccess' , trackAccess],
|
|
['setTrackBonusLevel' , trackBonusLevel],
|
|
['setInventory' , inventory],
|
|
['setHp' , hp],
|
|
['setMaxHp' , maxHp],
|
|
['setDefaultShard' , defaultShard],
|
|
['setLastHood' , lastHood],
|
|
['setDNAString' , dnaString],
|
|
['setNPCFriendsDict', npcFriends]
|
|
]
|
|
base.cr.n_handleGetAvatarDetailsResp(avId, fields=fields)
|
|
|
|
def d_getPetDetails(self, avId):
|
|
self.sendUpdate('getPetDetails', [avId])
|
|
|
|
def petDetails(self, avId, ownerId, petName, traitSeed, sz, traits, moods, dna, lastSeen):
|
|
fields = list(zip(("setHead", "setEars", "setNose", "setTail", "setBodyTexture", "setColor", "setColorScale", "setEyeColor", "setGender"), dna))
|
|
fields.extend(zip(("setBoredom", "setRestlessness", "setPlayfulness", "setLoneliness",
|
|
"setSadness", "setAffection", "setHunger", "setConfusion", "setExcitement",
|
|
"setFatigue", "setAnger", "setSurprise"), moods))
|
|
fields.extend(zip(("setForgetfulness", "setBoredomThreshold", "setRestlessnessThreshold",
|
|
"setPlayfulnessThreshold", "setLonelinessThreshold", "setSadnessThreshold",
|
|
"setFatigueThreshold", "setHungerThreshold", "setConfusionThreshold",
|
|
"setExcitementThreshold", "setAngerThreshold", "setSurpriseThreshold",
|
|
"setAffectionThreshold"), traits))
|
|
fields.append(("setOwnerId", ownerId))
|
|
fields.append(("setPetName", petName))
|
|
fields.append(("setTraitSeed", traitSeed))
|
|
fields.append(("setSafeZone", sz))
|
|
fields.append(("setLastSeenTimestamp", lastSeen))
|
|
base.cr.n_handleGetAvatarDetailsResp(avId, fields=fields)
|
|
|
|
def d_teleportQuery(self, toId):
|
|
self.sendUpdate('routeTeleportQuery', [toId])
|
|
|
|
def teleportQuery(self, fromId):
|
|
if not hasattr(base, 'localAvatar'):
|
|
self.sendUpdate('teleportResponse', [ fromId, 0, 0, 0, 0 ])
|
|
return
|
|
if not hasattr(base.localAvatar, 'getTeleportAvailable') or not hasattr(base.localAvatar, 'ghostMode'):
|
|
self.sendUpdate('teleportResponse', [ fromId, 0, 0, 0, 0 ])
|
|
return
|
|
if not base.localAvatar.acceptingTeleport:
|
|
self.sendUpdate('teleportResponse', [ fromId, 3, 0, 0, 0 ])
|
|
return
|
|
if base.localAvatar.isIgnored(fromId):
|
|
self.sendUpdate('teleportResponse', [ fromId, 2, 0, 0, 0 ])
|
|
return
|
|
|
|
friend = base.cr.identifyFriend(fromId)
|
|
|
|
if not base.localAvatar.getTeleportAvailable() or base.localAvatar.ghostMode:
|
|
if hasattr(friend, 'getName') and self.nextTeleportFail < time.time():
|
|
self.nextTeleportFail = time.time() + OTPGlobals.TeleportFailCooldown
|
|
base.localAvatar.setSystemMessage(fromId, OTPLocalizer.WhisperFailedVisit % friend.getName())
|
|
self.sendUpdate('teleportResponse', [ fromId, 0, 0, 0, 0 ])
|
|
return
|
|
|
|
hoodId = base.cr.playGame.getPlaceId()
|
|
if hasattr(friend, 'getName'):
|
|
base.localAvatar.setSystemMessage(fromId, OTPLocalizer.WhisperComingToVisit % friend.getName())
|
|
self.sendUpdate('teleportResponse', [
|
|
fromId,
|
|
base.localAvatar.getTeleportAvailable(),
|
|
base.localAvatar.defaultShard,
|
|
hoodId,
|
|
base.localAvatar.getZoneId()
|
|
])
|
|
|
|
def d_teleportResponse(self, toId, available, shardId, hoodId, zoneId):
|
|
self.sendUpdate('teleportResponse', [toId, available, shardId,
|
|
hoodId, zoneId]
|
|
)
|
|
|
|
def setTeleportResponse(self, fromId, available, shardId, hoodId, zoneId):
|
|
base.localAvatar.teleportResponse(fromId, available, shardId, hoodId, zoneId)
|
|
|
|
def d_whisperSCTo(self, toId, msgIndex):
|
|
self.sendUpdate('whisperSCTo', [toId, msgIndex])
|
|
|
|
def setWhisperSCFrom(self, fromId, msgIndex):
|
|
if not hasattr(base, 'localAvatar'):
|
|
return
|
|
if not hasattr(base.localAvatar, 'setWhisperSCFrom'):
|
|
return
|
|
base.localAvatar.setWhisperSCFrom(fromId, msgIndex)
|
|
|
|
def d_whisperSCCustomTo(self, toId, msgIndex):
|
|
self.sendUpdate('whisperSCCustomTo', [toId, msgIndex])
|
|
|
|
def setWhisperSCCustomFrom(self, fromId, msgIndex):
|
|
if not hasattr(base, 'localAvatar'):
|
|
return
|
|
if not hasattr(base.localAvatar, 'setWhisperSCCustomFrom'):
|
|
return
|
|
base.localAvatar.setWhisperSCCustomFrom(fromId, msgIndex)
|
|
|
|
def d_whisperSCEmoteTo(self, toId, emoteId):
|
|
self.sendUpdate('whisperSCEmoteTo', [toId, emoteId])
|
|
|
|
def setWhisperSCEmoteFrom(self, fromId, emoteId):
|
|
if not hasattr(base, 'localAvatar'):
|
|
return
|
|
if not hasattr(base.localAvatar, 'setWhisperSCEmoteFrom'):
|
|
return
|
|
base.localAvatar.setWhisperSCEmoteFrom(fromId, emoteId)
|
|
|
|
def receiveTalkWhisper(self, fromId, message):
|
|
base.localAvatar.setTalkWhisper(fromId, message)
|
|
|
|
def d_battleSOS(self, toId):
|
|
self.sendUpdate('battleSOS', [toId])
|
|
|
|
def setBattleSOS(self, fromId):
|
|
base.localAvatar.battleSOS(fromId)
|
|
|
|
def d_teleportGiveup(self, toId):
|
|
self.sendUpdate('teleportGiveup', [toId])
|
|
|
|
def setTeleportGiveup(self, fromId):
|
|
base.localAvatar.teleportGiveup(fromId)
|
|
|
|
def d_whisperSCToontaskTo(self, toId, taskId, toNpcId, toonProgress, msgIndex):
|
|
self.sendUpdate('whisperSCToontaskTo', [toId, taskId, toNpcId,
|
|
toonProgress, msgIndex]
|
|
)
|
|
|
|
def setWhisperSCToontaskFrom(self, fromId, taskId, toNpcId, toonProgress, msgIndex):
|
|
base.localAvatar.setWhisperSCToontaskFrom(fromId, taskId, toNpcId,
|
|
toonProgress, msgIndex
|
|
)
|
|
|
|
def d_sleepAutoReply(self, toId):
|
|
self.sendUpdate('sleepAutoReply', [toId])
|
|
|
|
def setSleepAutoReply(self, fromId):
|
|
base.localAvatar.setSleepAutoReply(fromId)
|