Poodletooth-iLand/toontown/friends/TTSFriendsManager.py

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)