diff --git a/astron/dclass/toon.dc b/astron/dclass/toon.dc index cc06c1ee..e4c10eea 100644 --- a/astron/dclass/toon.dc +++ b/astron/dclass/toon.dc @@ -1,3410 +1,3344 @@ -from direct.distributed import DistributedObjectGlobal -from toontown.ai import WelcomeValleyManager/AI -from toontown.building import DistributedAnimatedProp/AI -from toontown.toon import DistributedToon/AI/UD -from toontown.classicchars import DistributedCCharBase/AI -from toontown.classicchars import DistributedMickey/AI -from toontown.classicchars import DistributedVampireMickey/AI -from toontown.classicchars import DistributedMinnie/AI -from toontown.classicchars import DistributedWitchMinnie/AI -from toontown.classicchars import DistributedGoofy/AI -from toontown.classicchars import DistributedSuperGoofy/AI -from toontown.classicchars import DistributedDaisy/AI -from toontown.classicchars import DistributedSockHopDaisy/AI -from toontown.classicchars import DistributedChip/AI -from toontown.classicchars import DistributedPoliceChip/AI -from toontown.classicchars import DistributedDale/AI -from toontown.classicchars import DistributedJailbirdDale/AI -from toontown.classicchars import DistributedGoofySpeedway/AI -from toontown.classicchars import DistributedDonald/AI -from toontown.classicchars import DistributedFrankenDonald/AI -from toontown.classicchars import DistributedDonaldDock/AI -from toontown.classicchars import DistributedPluto/AI -from toontown.classicchars import DistributedWesternPluto/AI -from toontown.safezone import DistributedTrolley/AI -from toontown.safezone import DistributedPartyGate/AI -from toontown.suit import DistributedSuitPlanner/AI -from toontown.suit import DistributedSuitBase/AI -from toontown.suit import DistributedSuit/AI -from toontown.suit import DistributedTutorialSuit/AI -from toontown.suit import DistributedFactorySuit/AI -from toontown.suit import DistributedMintSuit/AI -from toontown.suit import DistributedStageSuit/AI -from toontown.suit import DistributedSellbotBoss/AI -from toontown.suit import DistributedCashbotBoss/AI -from toontown.coghq import DistributedCashbotBossSafe/AI -from toontown.coghq import DistributedCashbotBossCrane/AI -from toontown.suit import DistributedCashbotBossGoon/AI -from toontown.battle import DistributedBattleBase/AI -from toontown.battle import DistributedBattle/AI -from toontown.battle import DistributedBattleBldg/AI -from toontown.tutorial import DistributedBattleTutorial/AI -from toontown.coghq import DistributedBattleFactory/AI -from toontown.battle import DistributedBattleFinal/AI -from toontown.safezone import DistributedBoat/AI -from toontown.safezone import DistributedButterfly/AI -from toontown.safezone import DistributedMMPiano/AI -from toontown.safezone import DistributedDGFlower/AI -from toontown.fishing import DistributedFishingPond/AI -from toontown.fishing import DistributedFishingTarget/AI -from toontown.fishing import DistributedPondBingoManager/AI -from toontown.safezone import DistributedFishingSpot/AI -from toontown.estate import DistributedCannon/AI -from toontown.estate import DistributedTarget/AI -from toontown.minigame import DistributedMinigame/AI -from toontown.minigame import DistributedMinigameTemplate/AI -from toontown.minigame import DistributedRaceGame/AI -from toontown.minigame import DistributedCannonGame/AI -from toontown.minigame import DistributedPhotoGame/AI -from toontown.minigame import DistributedPatternGame/AI -from toontown.minigame import DistributedRingGame/AI -from toontown.minigame import DistributedTagGame/AI -from toontown.minigame import DistributedMazeGame/AI -from toontown.minigame import DistributedTugOfWarGame/AI -from toontown.minigame import DistributedCatchGame/AI -from toontown.minigame import DistributedDivingGame/AI -from toontown.minigame import DistributedTargetGame/AI -from toontown.estate import EstateManager/AI -from toontown.estate import DistributedEstate/AI -from toontown.estate import DistributedHouse/AI -from toontown.estate import DistributedHouseInterior/AI -from toontown.estate import DistributedGarden/AI -from toontown.shtiker import DeleteManager/AI -from toontown.ai import NewsManager/AI -from toontown.shtiker import PurchaseManager/AI -from toontown.shtiker import NewbiePurchaseManager/AI -from toontown.safezone import SafeZoneManager/AI -from toontown.tutorial import TutorialManager/AI -from toontown.catalog import CatalogManager/AI -from toontown.safezone import DistributedTreasure/AI -from toontown.coghq import DistributedCashbotBossTreasure/AI -from toontown.building import DistributedTrophyMgr/AI -from toontown.building import DistributedBuilding/AI -from toontown.building import DistributedAnimBuilding/AI -from toontown.building import DistributedBuildingQueryMgr/AI -from toontown.building import DistributedToonInterior/AI -from toontown.building import DistributedToonHallInterior/AI -from toontown.building import DistributedSuitInterior/AI -from toontown.building import DistributedHQInterior/AI -from toontown.building import DistributedGagshopInterior/AI -from toontown.building import DistributedPetshopInterior/AI -from toontown.building import DistributedKartShopInterior/AI -from toontown.building import DistributedBankInterior/AI -from toontown.building import DistributedBankCollectable/AI -from toontown.building import DistributedLibraryInterior/AI -from toontown.building import DistributedDoor/AI -from toontown.building import DistributedAnimDoor/AI -from toontown.estate import DistributedHouseDoor/AI -from toontown.coghq import DistributedCogHQDoor/AI -from toontown.coghq import DistributedSellbotHQDoor/AI -from toontown.toon import DistributedNPCToonBase/AI -from toontown.toon import DistributedNPCToon/AI -from toontown.toon import DistributedSmartNPC/AI -from toontown.toon import DistributedSmartNPC/AI -from toontown.toon import DistributedNPCSpecialQuestGiver/AI -from toontown.toon import DistributedNPCFlippyInToonHall/AI -from toontown.toon import DistributedNPCScientist/AI -from toontown.toon import DistributedNPCClerk/AI -from toontown.toon import DistributedNPCTailor/AI -from toontown.toon import DistributedNPCBlocker/AI -from toontown.toon import DistributedNPCFisherman/AI -from toontown.toon import DistributedNPCPartyPerson/AI -from toontown.toon import DistributedNPCPetclerk/AI -from toontown.toon import DistributedNPCKartClerk/AI -from toontown.toon import DistributedNPCYin/AI -from toontown.toon import DistributedNPCYang/AI -from toontown.building import DistributedKnockKnockDoor/AI -from toontown.building import DistributedElevator/AI -from toontown.building import DistributedElevatorFSM/AI -from toontown.building import DistributedElevatorExt/AI -from toontown.building import DistributedElevatorInt/AI -from toontown.coghq import DistributedFactoryElevatorExt/AI -from toontown.coghq import DistributedMintElevatorExt/AI -from toontown.coghq import DistributedLawOfficeElevatorExt/AI -from toontown.coghq import DistributedLawOfficeElevatorInt/AI -from toontown.building import DistributedElevatorFloor/AI -from toontown.building import DistributedBossElevator/AI -from toontown.building import DistributedVPElevator/AI -from toontown.building import DistributedCFOElevator/AI -from toontown.building import DistributedCJElevator/AI -from toontown.building import DistributedBBElevator/AI -from toontown.building import DistributedBoardingParty/AI -from toontown.building import DistributedTutorialInterior/AI -from toontown.estate import DistributedBankMgr/AI -from toontown.estate import DistributedMailbox/AI -from toontown.estate import DistributedFurnitureManager/AI -from toontown.estate import DistributedFurnitureItem/AI -from toontown.estate import DistributedBank/AI -from toontown.toon import DistributedNPCBanker/AI -from toontown.estate import DistributedCloset/AI -from toontown.estate import DistributedTrunk/AI -from toontown.estate import DistributedPhone/AI -from toontown.effects import DistributedFireworkShow/AI -from toontown.estate import DistributedFireworksCannon/AI -from toontown.coghq import LobbyManager/AI -from otp.level import DistributedLevel/AI -from otp.level import DistributedEntity/AI -from otp.level import DistributedInteractiveEntity/AI -from toontown.coghq import DistributedMegaCorp/AI -from toontown.coghq import DistributedFactory/AI -from toontown.coghq import DistributedLawOffice/AI -from toontown.coghq import DistributedLawOfficeFloor/AI -from toontown.coghq import DistributedLift/AI -from toontown.coghq import DistributedDoorEntity/AI -from toontown.coghq import DistributedSwitch/AI -from toontown.coghq import DistributedButton/AI -from toontown.coghq import DistributedTrigger/AI -from toontown.coghq import DistributedCrushableEntity/AI -from toontown.coghq import DistributedCrusherEntity/AI -from toontown.coghq import DistributedStomper/AI -from toontown.coghq import DistributedStomperPair/AI -from toontown.coghq import DistributedLaserField/AI -from toontown.coghq import DistributedGolfGreenGame/AI -from toontown.coghq import DistributedSecurityCamera/AI -from toontown.coghq import DistributedMover/AI -from toontown.coghq import DistributedElevatorMarker/AI -from toontown.coghq import DistributedBarrelBase/AI -from toontown.coghq import DistributedGagBarrel/AI -from toontown.coghq import DistributedBeanBarrel/AI -from toontown.coghq import DistributedHealBarrel/AI -from toontown.coghq import DistributedGrid/AI -from toontown.coghq import ActiveCell/AI -from toontown.coghq import DirectionalCell/AI -from toontown.coghq import CrusherCell/AI -from toontown.coghq import DistributedCrate/AI -from toontown.coghq import DistributedSinkingPlatform/AI -from toontown.suit import DistributedGoon/AI -from toontown.suit import DistributedGridGoon/AI -from toontown.coghq import BattleBlocker/AI -from toontown.ai import DistributedAprilToonsMgr/AI -from toontown.ai import DistributedBlackCatMgr/AI -from toontown.ai import DistributedPolarBearMgr/AI -from toontown.ai import DistributedPolarPlaceEffectMgr/AI -from toontown.ai import DistributedGreenToonEffectMgr/AI -from toontown.ai import DistributedResistanceEmoteMgr/AI -from toontown.ai import DistributedScavengerHuntTarget/AI -from toontown.ai import DistributedTrickOrTreatTarget/AI -from toontown.ai import DistributedWinterCarolingTarget/AI -from toontown.coghq import DistributedMint/AI -from toontown.coghq import DistributedMintRoom/AI -from toontown.coghq import DistributedMintBattle/AI -from toontown.coghq import DistributedStage/AI -from toontown.coghq import DistributedStageRoom/AI -from toontown.coghq import DistributedStageBattle/AI -from toontown.pets.PetDCImports/AI import * -from toontown.pets import DistributedPetProxy/AI -from toontown.coghq.InGameEditorDCImports/AI import * -from toontown.distributed import ToontownDistrict/AI -from toontown.distributed import ToontownDistrictStats/AI -from toontown.racing import DistributedVehicle/AI -from toontown.racing import DistributedStartingBlock/AI -from toontown.racing import DistributedRace/AI -from toontown.racing import DistributedKartPad/AI -from toontown.racing import DistributedRacePad/AI -from toontown.racing import DistributedViewPad/AI -from toontown.racing import DistributedStartingBlock/AI -from toontown.racing import DistributedLeaderBoard/AI -from toontown.racing import DistributedGag/AI -from toontown.racing import DistributedProjectile/AI -from toontown.racing.DistributedStartingBlock/AI import DistributedViewingBlock/AI -from toontown.uberdog.ClientServicesManager/UD import ClientServicesManager/UD -from toontown.uberdog.DistributedDeliveryManager/AI/UD import DistributedDeliveryManager/AI/UD -from toontown.uberdog.DistributedDataStoreManager/AI/UD import DistributedDataStoreManager/AI/UD -from toontown.suit import DistributedLawbotBoss/AI -from toontown.coghq import DistributedLawbotBossGavel/AI -from toontown.suit import DistributedLawbotBossSuit/AI -from toontown.coghq import DistributedLawbotCannon/AI -from toontown.coghq import DistributedLawbotChair/AI -from toontown.estate import DistributedLawnDecor/AI -from toontown.estate import DistributedGardenPlot/AI -from toontown.estate import DistributedGardenBox/AI -from toontown.estate import DistributedFlower/AI -from toontown.estate import DistributedGagTree/AI -from toontown.estate import DistributedStatuary/AI -from toontown.estate import DistributedToonStatuary/AI -from toontown.estate import DistributedChangingStatuary/AI -from toontown.estate import DistributedAnimatedStatuary/AI -from toontown.estate import DistributedPlantBase/AI -from toontown.estate import DistributedLawnDecor/AI -from toontown.minigame import DistributedTravelGame/AI -from toontown.minigame import DistributedPairingGame/AI -from toontown.minigame import DistributedVineGame/AI -from toontown.golf import DistributedPhysicsWorld/AI -from toontown.golf import DistributedGolfHole/AI -from toontown.golf import DistributedGolfCourse/AI -from toontown.parties import DistributedParty/AI -from toontown.parties import DistributedPartyActivity/AI -from toontown.parties import DistributedPartyTeamActivity/AI -from toontown.parties import DistributedPartyCannon/AI -from toontown.parties import DistributedPartyCannonActivity/AI -from toontown.parties import DistributedPartyCatchActivity/AI -from toontown.parties import DistributedPartyWinterCatchActivity/AI -from toontown.parties import DistributedPartyCogActivity/AI -from toontown.parties import DistributedPartyWinterCogActivity/AI -from toontown.parties import DistributedPartyFireworksActivity/AI -from toontown.parties import DistributedPartyDanceActivityBase/AI -from toontown.parties import DistributedPartyDanceActivity/AI -from toontown.parties import DistributedPartyDance20Activity/AI -from toontown.parties import DistributedPartyValentineDanceActivity/AI -from toontown.parties import DistributedPartyValentineDance20Activity/AI -from toontown.parties import DistributedPartyTrampolineActivity/AI -from toontown.parties import DistributedPartyValentineTrampolineActivity/AI -from toontown.parties import DistributedPartyVictoryTrampolineActivity/AI -from toontown.parties import DistributedPartyWinterTrampolineActivity/AI -from toontown.parties import DistributedPartyTugOfWarActivity/AI -from toontown.parties import DistributedPartyJukeboxActivityBase/AI -from toontown.parties import DistributedPartyJukeboxActivity/AI -from toontown.parties import DistributedPartyJukebox40Activity/AI -from toontown.parties import DistributedPartyValentineJukeboxActivity/AI -from toontown.parties import DistributedPartyValentineJukebox40Activity/AI -from toontown.friends import TTPlayerFriendsManager/UD -from toontown.friends import TTUFriendsManager/UD -from toontown.safezone import DistributedGolfKart/AI -from toontown.safezone import DistributedPicnicBasket/AI -from toontown.safezone import DistributedGameTable/AI -from toontown.distributed import DistributedTimer/AI -from toontown.suit import DistributedBossbotBoss/AI -from toontown.coghq import DistributedCogKart/AI -from toontown.coghq import DistributedCountryClub/AI -from toontown.coghq import DistributedCountryClubRoom/AI -from toontown.coghq import DistributedMoleField/AI -from toontown.coghq import DistributedCountryClubBattle/AI -from toontown.building import DistributedClubElevator/AI -from toontown.coghq import DistributedMaze/AI -from toontown.battle import DistributedBattleWaiters/AI -from toontown.coghq import DistributedFoodBelt/AI -from toontown.coghq import DistributedBanquetTable/AI -from toontown.battle import DistributedBattleDiners/AI -from toontown.coghq import DistributedGolfSpot/AI -from toontown.minigame import DistributedIceGame/AI -from toontown.minigame import DistributedCogThiefGame/AI -from toontown.minigame import DistributedTwoDGame/AI -from toontown.safezone import DistributedChineseCheckers/AI -from toontown.safezone import DistributedCheckers/AI -from toontown.safezone import DistributedFindFour/AI -from toontown.uberdog.DistributedMailManager/AI/UD import DistributedMailManager/AI/UD -from toontown.uberdog.DistributedPartyManager/AI/UD import DistributedPartyManager/AI/UD -from toontown.rpc.AwardManager/UD import AwardManager/UD -from toontown.uberdog.DistributedCpuInfoMgr/AI/UD import DistributedCpuInfoMgr/AI/UD -from toontown.uberdog.DistributedInGameNewsMgr/AI/UD import DistributedInGameNewsMgr/AI/UD -from toontown.coderedemption.TTCodeRedemptionMgr/AI import TTCodeRedemptionMgr/AI -from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI -from toontown.distributed.NonRepeatableRandomSourceUD import NonRepeatableRandomSourceUD -from toontown.ai.DistributedPhaseEventMgr/AI import DistributedPhaseEventMgr/AI -from toontown.ai.DistributedHydrantZeroMgr/AI import DistributedHydrantZeroMgr/AI -from toontown.ai.DistributedMailboxZeroMgr/AI import DistributedMailboxZeroMgr/AI -from toontown.ai.DistributedTrashcanZeroMgr/AI import DistributedTrashcanZeroMgr/AI -from toontown.ai import DistributedSillyMeterMgr/AI -from toontown.cogdominium import DistributedCogdoInterior/AI -from toontown.cogdominium import DistributedCogdoBattleBldg/AI -from toontown.cogdominium import DistributedCogdoElevatorExt/AI -from toontown.cogdominium import DistributedCogdoElevatorInt/AI -from toontown.cogdominium import DistributedCogdoBarrel/AI -from toontown.cogdominium import DistCogdoGame/AI -from toontown.cogdominium import DistCogdoLevelGame/AI -from toontown.cogdominium import DistCogdoBoardroomGame/AI -from toontown.cogdominium import DistCogdoCraneGame/AI -from toontown.cogdominium import DistCogdoMazeGame/AI -from toontown.cogdominium import DistCogdoFlyingGame/AI -from toontown.cogdominium import DistCogdoCrane/AI -from toontown.cogdominium import DistCogdoCraneMoneyBag/AI -from toontown.cogdominium import DistCogdoCraneCog/AI -from toontown.parties.GlobalPartyManager/AI/UD import GlobalPartyManager/AI/UD - -struct GiftItem { - blob Item; - string giftTag; -}; - -struct gardenSpecial { - uint8 index; - uint8 count; -}; - -struct simpleMail { - uint64 msgId; - uint32 senderId; - uint16 year; - uint8 month; - uint8 day; - string body; -}; - -struct invite { - uint64 inviteKey; - uint64 partyId; - uint8 status; -}; - -struct decoration { - uint8 decorId; - uint8 x; - uint8 y; - uint8 h; -}; - -struct activity { - uint8 activityId; - uint8 x; - uint8 y; - uint8 h; -}; - -struct party { - uint64 partyId; - uint32 hostId; - uint16 startYear; - uint8 startMonth; - uint8 startDay; - uint8 startHour; - uint8 startMinute; - uint16 endYear; - uint8 endMonth; - uint8 endDay; - uint8 endHour; - uint8 endMinute; - uint8 isPrivate; - uint8 inviteTheme; - activity activities[]; - decoration decors[]; - uint8 status; -}; - -struct partyReply { - uint32 inviteeId; - uint8 status; -}; - -struct repliesForOneParty { - uint64 partyId; - partyReply partyReplies[]; -}; - -struct publicPartyInfo { - uint32 shardId; - uint32 zoneId; - uint8 numberOfGuests; - string hostName; - uint8[] activityIds; - uint16 minLeft; -}; - -struct jukeboxSongInfo { - uint8/10 phase; - string fileName; -}; - -struct partyCloudColor { - uint16 cloudNumber; - uint8/100 r; - uint8/100 g; - uint8/100 b; -}; - -struct datetime { - uint16 year; - uint8 month; - uint8 day; - uint8 hour; - uint8 minutes; - uint8 seconds; -}; - -dclass ToontownDistrict : DistributedDistrict { - setParentingRules(string, string) broadcast ram; - allowAHNNLog(bool) broadcast required ram; -}; - -dclass ToontownDistrictStats : DistributedObject { - settoontownDistrictId(uint32) broadcast required ram; - setAvatarCount(uint32) broadcast required ram; - setNewAvatarCount(uint32) broadcast required ram; - setInvasionStatus(uint8) broadcast required ram; - setStats : setAvatarCount, setNewAvatarCount; -}; - -dclass WelcomeValleyManager : DistributedObject { - clientSetZone(uint32) airecv clsend; - requestZoneIdMessage(uint32, uint16) airecv clsend; - requestZoneIdResponse(uint32, uint16); -}; - -dclass DistributedAnimatedProp : DistributedObject { - setPropId(uint16) required broadcast ram; - setAvatarInteract(uint32) required broadcast ram; - requestInteract() airecv clsend; - rejectInteract(); - requestExit() airecv clsend; - avatarExit(uint32) broadcast; - setState(string, int16) required broadcast ram; -}; - -typedef int16 pair16[2]; - -dclass DistributedToon : DistributedPlayer { - setDNAString(blob) required broadcast ownrecv db; - setGM(uint16 = 0) required broadcast ownrecv db; - setMoney(int16 = 0) required ownrecv db; - setBankMoney(int32 = 0) required ownrecv; - setMaxHp(int16 = 15) required broadcast ownrecv db; - setHp(int16 = 15) required broadcast ownrecv db; - toonUp(uint16) broadcast ownrecv; - takeDamage(uint16) broadcast ownrecv; - setBattleId(uint32 = 0) required broadcast ram; - setExperience(blob = [0*14]) required broadcast db; - setMaxCarry(uint8 = 20) required ownrecv db; - setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db; - setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db; - setTrackBonusLevel(int8[] = [-1,-1,-1,-1,-1,-1,-1]) required broadcast ownrecv db; - setInventory(blob = [0*7, 0*7, 0*7, 0*7, 1, 0*6, 1, 0*6, 0*7]) required ownrecv db; - setMaxNPCFriends(uint16 = 16) required ownrecv db; - setNPCFriendsDict(FriendEntry[] = []) required ownrecv db; - setDefaultShard(uint32 = 0) required ownrecv broadcast db; - setDefaultZone(uint32 = 0) required ownrecv broadcast db; - setShtickerBook(blob = []) required ownrecv db; - setZonesVisited(uint32[] = [ 2000 ]) required ownrecv db; - setHoodsVisited(uint32[] = [ 2000 ]) required ownrecv db; - setInterface(blob = []) required ownrecv db; - setLastHood(uint32 = 0) required ownrecv broadcast db; - setTutorialAck(uint8) required ownrecv db; - setMaxClothes(uint32 = 10) required ownrecv db; - setClothesTopsList(uint8[] = []) required ownrecv db; - setClothesBottomsList(uint8[] = []) required ownrecv db; - setMaxAccessories(uint32 = 0) required ownrecv db; - setHatList(uint8[] = []) required ownrecv db; - setGlassesList(uint8[] = []) required ownrecv db; - setBackpackList(uint8[] = []) required ownrecv db; - setShoesList(uint8[] = []) required ownrecv db; - setHat(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; - setGlasses(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; - setBackpack(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; - setShoes(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; - setGardenSpecials(gardenSpecial [] = []) required ownrecv db airecv; - setEarnedExperience(uint16[]) ownrecv; - setTunnelIn(int16, int16/10, int16/10, int16/10, int16/100, int32/100) ownsend broadcast; - setTunnelOut(int16, int16/10, int16/10, int16/10, int16/10, int16/100, int32/100) ownsend broadcast; - setAnimState(char [0-1024], int16/1000, int16) broadcast ram ownsend airecv; - setEmoteState(int16, int16/1000, int16) broadcast ram ownsend; - setEmoteAccess(uint8[] = [1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) required ownrecv db; - setCustomMessages(uint16[] = []) required ownrecv db; - setSleepAutoReply(uint32) broadcast clsend ownrecv; - setResistanceMessages(pair16 [] = []) required ownrecv db; - setPetTrickPhrases(uint8[] = [0]) required ownrecv db; - setCatalogSchedule(uint16 = 0, uint32 = 0) required ownrecv db; - setCatalog(blob = [], blob = [], blob = []) required ownrecv db; - setMailboxContents(blob = []) required ownrecv db; - setDeliverySchedule(blob = []) required ownrecv db airecv; - setGiftSchedule(blob = []) required ownrecv db airecv; - setAwardMailboxContents(blob = []) required ownrecv db; - setAwardSchedule(blob = []) required ownrecv db airecv; - setAwardNotify(uint8 = 0) required ownrecv db; - setCatalogNotify(uint8 = 0, uint8 = 0) required ownrecv db; - playSplashEffect(int16/10, int16/10, int16/10) broadcast ownsend; - setWhisperSCToontaskFrom(uint32, uint32, uint32, uint32, uint8) ownrecv clsend; - setSCToontask(uint32, uint32, uint32, uint8) broadcast ownsend; - reqSCResistance(uint16, uint32 []) ownsend airecv; - setSCResistance(uint16, uint32 []) broadcast ownrecv; - setSpeedChatStyleIndex(uint8 = 1) required ownsend broadcast db; - setTrophyScore(uint16) broadcast ownrecv ram; - setTeleportAccess(uint32[] = []) required ownrecv db; - setScavengerHunt(uint32[] = []) required ownrecv db; - checkTeleportAccess(uint16) airecv ownsend; - setTeleportOverride(uint8) clsend airecv; - battleSOS(uint32) ownrecv clsend; - teleportQuery(uint32) ownrecv clsend; - teleportResponse(uint32, int8, uint32, uint32, uint32) ownrecv clsend; - teleportResponseToAI(uint32, int8, uint32, uint32, uint32, uint32) ownsend airecv; - teleportGiveup(uint32) ownrecv clsend; - teleportGreeting(uint32) broadcast ownsend; - setCogStatus(uint32[] = [1 * 32]) required ownrecv db; - setCogCount(uint32[] = [0 * 32]) required ownrecv db; - setCogRadar(uint8[] = [0 * 4]) required ownrecv db; - setBuildingRadar(uint8[] = [0 * 4]) required ownrecv db; - setCogLevels(uint8[] = [0 * 4]) required broadcast ownrecv db; - setCogTypes(uint8[] = [0 * 4]) required broadcast ownrecv db; - setCogParts(uint32[] = [0 * 4]) required broadcast ownrecv db; - setCogMerits(uint16[] = [0 * 4]) required ownrecv db; - setPromotionStatus(uint8[] = [0 * 4]) required broadcast ownrecv db; - requestPromotion(uint8) ownsend airecv; - setCogIndex(int8) broadcast ram; - setDisguisePageFlag(int8) ownrecv; - setSosPageFlag(int8) ownrecv; - setHouseId(uint32 = 0) required ownrecv db; - setQuests(uint32[] = []) required broadcast ownrecv db; - setQuestHistory(uint16[] = []) required ownrecv db; - setRewardHistory(uint8 = 0, uint16[] = []) required ownrecv db; - setQuestCarryLimit(uint8 = 1) required ownrecv db; - requestDeleteQuest(uint32[]) ownsend airecv; - setCheesyEffect(int16 = 0, uint32 = 0, uint32 = 0) required broadcast ownrecv db; - setGhostMode(uint8) broadcast ownrecv ram; - setPosIndex(uint8 = 0) required ownrecv db; - setFishCollection(uint8[] = [], uint8[] = [], uint16[] = []) required ownrecv db; - setMaxFishTank(uint8 = 20) required ownrecv db; - setFishTank(uint8[] = [], uint8[] = [], uint16[] = []) required ownrecv db; - setFishingRod(uint8 = 0) required broadcast ownrecv db; - setFishingTrophies(uint8[] = []) required ownrecv db; - setFlowerCollection(uint8[] = [], uint8[] = []) required ownrecv db; - setFlowerBasket(uint8[] = [], uint8[] = []) required ownrecv db; - setMaxFlowerBasket(uint8 = 20) required ownrecv db; - setGardenTrophies(uint8[] = []) required ownrecv db; - setShovel(uint8 = 0) required broadcast ownrecv db; - setShovelSkill(uint32 = 0) required ownrecv db; - setWateringCan(uint8 = 0) required broadcast ownrecv db; - setWateringCanSkill(uint32 = 0) required ownrecv db; - promoteShovel(uint8) ownrecv; - promoteWateringCan(uint8) ownrecv; - reactivateWater() ownrecv; - presentPie(int16/10 x, int16/10 y, int16/10 z, int16/10 h, int32 timestamp) broadcast ownsend; - tossPie(int16/10 x, int16/10 y, int16/10 z, int16/10 h, uint8 sequence, uint8 power, uint8 throwType, int32 timestamp) broadcast ownsend; - pieSplat(int16/10, int16/10, int16/10, uint8, uint8, int32) broadcast ownsend; - setPieType(uint8) broadcast ownrecv ram; - setNumPies(uint16) broadcast ownrecv ram; - catalogGenClothes(uint32) broadcast ownrecv; - catalogGenAccessories(uint32) broadcast ownrecv; - setPetId(uint32 = 0) required broadcast ownrecv db; - setPetMovie(uint32, uint8) ownsend airecv; - setPetTutorialDone(uint8 = 0) required ownsend airecv db; - setFishBingoTutorialDone(uint8 = 0) required ownsend airecv db; - setFishBingoMarkTutorialDone(uint8 = 0) required ownsend airecv db; - setKartBodyType(int8 = -1) required broadcast ownrecv db; - setKartBodyColor(int8 = -1) required broadcast ownrecv db; - setKartAccessoryColor(int8 = -1) required broadcast ownrecv db; - setKartEngineBlockType(int8 = -1) required broadcast ownrecv db; - setKartSpoilerType(int8 = -1) required broadcast ownrecv db; - setKartFrontWheelWellType(int8 = -1) required broadcast ownrecv db; - setKartBackWheelWellType(int8 = -1) required broadcast ownrecv db; - setKartRimType(int8 = -1) required broadcast ownrecv db; - setKartDecalType(int8 = -1) required broadcast ownrecv db; - updateKartDNAField(int8, int8) ownsend airecv; - addOwnedAccessory(int8) ownsend airecv; - removeOwnedAccessory(int8) ownsend airecv; - setTickets(uint32 = 200) required broadcast ownrecv db; - setKartingHistory(uint8 [16] = [0*16]) required ownrecv db; - setKartingTrophies(uint8 [33] = [0*33]) required ownrecv db; - setKartingPersonalBest(uint32/1000 [6] = [0*6]) required ownrecv db; - setKartingPersonalBest2(uint32/1000 [12] = [0*12]) required ownrecv db; - setKartAccessoriesOwned(int8 [16] = [-1*16]) required broadcast ownrecv db; - setCurrentKart(uint32) broadcast ownrecv ram; - squish(uint8) ownsend airecv; - announceBingo() broadcast ownrecv; - trickOrTreatTargetMet(uint32) ownrecv; - trickOrTreatMilestoneMet() ownrecv; - winterCarolingTargetMet(uint32) ownrecv; - setCogSummonsEarned(uint8[] = [0*32]) required ownrecv db; - reqCogSummons(char [0-256], uint32) ownsend airecv; - cogSummonsResponse(string, uint32, uint32) ownrecv; - reqUseSpecial(int32) ownsend airecv; - useSpecialResponse(string) ownrecv; - setGardenStarted(uint8 = 0) required ownrecv db; - sendToGolfCourse(uint32) ownrecv; - setGolfHistory(uint16 [18] = [0*18]) required ownrecv db; - setPackedGolfHoleBest(uint8 [18] = [0*18]) required ownrecv db; - setGolfCourseBest(uint8 [3] = [0*3]) required ownrecv db; - setUnlimitedSwing(uint8) broadcast ownrecv ram; - logSuspiciousEvent(char [0-1024]) ownsend airecv; - logMessage(char [0-1024]) ownsend airecv; - forceLogoutWithNotify() ownrecv; - setPinkSlips(uint8 = 0) required ownrecv db; - setNametagStyle(uint8 = 0) required broadcast ownrecv db; - setMail(simpleMail []) ownrecv; - setNumMailItems(uint32) airecv; - setSimpleMailNotify(uint8) ownrecv airecv; - setInvites(invite []) ownrecv airecv ram; - setPartiesInvitedTo(party []) ownrecv airecv ram; - setHostedParties(party []) ownrecv airecv ram; - setPartyReplies(repliesForOneParty []) ownrecv airecv ram; - updateInvite(uint64, uint8) ownrecv airecv; - updateReply(uint64, uint64, uint8) ownrecv airecv; - setPartyCanStart(uint64) ownrecv airecv; - setPartyStatus(uint64, uint8) ownrecv airecv; - announcePartyStarted(uint64) ownrecv; - setAchievements(uint16[] = []) required broadcast ownrecv db; - setNeverStartedPartyRefunded(uint64, int8, uint16) ownrecv; - setModuleInfo(string []) airecv clsend; - setDISLname(string) ram; - setDISLid(uint32) ram db airecv; - flagAv(uint32, uint16, string []) airecv ownsend; - setAnimalSound(uint8 index) ram broadcast ownrecv; - setBuffs(uint32[] = []) required ownrecv db; - setRedeemedCodes(string [] = []) required ownrecv db; -}; - -dclass DistributedCCharBase : DistributedObject { - setChat(uint32, uint32, uint32) broadcast; - fadeAway() broadcast; - setWalk(string, string, int16) required broadcast ram; - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - setNearbyAvatarChat(char [0-1024]) airecv clsend; - setNearbyAvatarSC(uint16) airecv clsend; - setNearbyAvatarSCCustom(uint16) airecv clsend; - setNearbyAvatarSCToontask(uint32, uint32, uint32, uint8) airecv clsend; -}; - -dclass DistributedMickey : DistributedCCharBase { -}; - -dclass DistributedVampireMickey : DistributedMickey { -}; - -dclass DistributedWitchMinnie : DistributedMickey { -}; - -dclass DistributedMinnie : DistributedCCharBase { -}; - -dclass DistributedGoofy : DistributedCCharBase { -}; - -dclass DistributedDaisy : DistributedCCharBase { -}; - -dclass DistributedSockHopDaisy : DistributedDaisy { -}; - -dclass DistributedChip : DistributedCCharBase { -}; - -dclass DistributedPoliceChip : DistributedChip { -}; - -dclass DistributedDale : DistributedCCharBase { - setFollowChip(string, string, int16, int16/100, int16/100) broadcast ram; - setChipId(uint32) required broadcast ram; -}; - -dclass DistributedJailbirdDale : DistributedDale { -}; - -dclass DistributedDonald : DistributedCCharBase { -}; - -dclass DistributedFrankenDonald : DistributedDonald { -}; - -dclass DistributedDonaldDock : DistributedCCharBase { -}; - -dclass DistributedPluto : DistributedCCharBase { -}; - -dclass DistributedWesternPluto : DistributedPluto { -}; - -dclass DistributedGoofySpeedway : DistributedCCharBase { -}; - -dclass DistributedSuperGoofy : DistributedGoofySpeedway { -}; - -dclass DistributedPartyGate : DistributedObject { - getPartyList(uint32) airecv clsend; - partyChoiceRequest(uint32, uint64, uint64) airecv clsend; - listAllPublicParties(publicPartyInfo []); - partyRequestDenied(uint8); - setParty(publicPartyInfo, uint32 hostId); -}; - -dclass DistributedTrolley : DistributedObject { - setState(string, int16) broadcast ram; - fillSlot0(uint32) broadcast ram; - fillSlot1(uint32) broadcast ram; - fillSlot2(uint32) broadcast ram; - fillSlot3(uint32) broadcast ram; - emptySlot0(uint32, int16) broadcast ram; - emptySlot1(uint32, int16) broadcast ram; - emptySlot2(uint32, int16) broadcast ram; - emptySlot3(uint32, int16) broadcast ram; - requestBoard() airecv clsend; - rejectBoard(uint32); - requestExit() airecv clsend; - setMinigameZone(uint32, uint16); -}; - -dclass DistributedSuitPlanner : DistributedObject { - setZoneId(uint32) required broadcast ram; - suitListQuery() airecv clsend; - suitListResponse(uint8[]); - buildingListQuery() airecv clsend; - buildingListResponse(uint8[]); -}; - -dclass DistributedSuitBase : DistributedObject { - denyBattle(); - setDNAString(blob) required broadcast ram; - setLevelDist(int16) required broadcast ram; - setBrushOff(int16) broadcast; - setWaiter(uint8) broadcast ram; - setSkelecog(uint8) required broadcast ram; - setSkeleRevives(uint8) required broadcast ram; - setHP(int16) required broadcast ram; -}; - -dclass DistributedSuit : DistributedSuitBase { - requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; - setSPDoId(uint32) required broadcast ram; - setPathEndpoints(uint16, uint16, uint16, uint16) required broadcast ram; - setPathPosition(uint16, int16) required broadcast ram; - setPathState(int8) required broadcast ram; - debugSuitPosition(int16/10, int16, int16/10, int16/10, int16) broadcast; -}; - -dclass DistributedTutorialSuit : DistributedSuitBase { - requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; -}; - -dclass DistributedFactorySuit : DistributedSuitBase { - setLevelDoId(uint32) required broadcast ram; - setCogId(uint32) required broadcast ram; - setReserve(uint8) required broadcast ram; - requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; - setAlert(uint32) airecv clsend; - setConfrontToon(uint32) broadcast; - setStrayed() airecv clsend; - setReturn() broadcast; -}; - -dclass DistributedMintSuit : DistributedFactorySuit { -}; - -dclass DistributedStageSuit : DistributedFactorySuit { -}; - -dclass DistributedBossCog : DistributedNode { - setDNAString(blob) required broadcast db; - setToonIds(uint32[], uint32[], uint32[]) broadcast ram; - setBattleIds(uint8, uint32, uint32) broadcast ram; - setArenaSide(uint8) broadcast ram; - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - avatarNearEnter() airecv clsend; - avatarNearExit() airecv clsend; - toonDied(uint32) broadcast; - setBattleExperience(int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], uint8[], int16[], uint32[]) required broadcast ram; - zapToon(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10, int8/100, int8/100, uint8, int16) airecv clsend; - showZapToon(uint32, int16/10, int16/10, int16/10, int16/10, int16/10, int16/10, uint8, int16) broadcast; - setAttackCode(uint8, uint32) broadcast; -}; - -dclass DistributedSellbotBoss : DistributedBossCog { - setCagedToonNpcId(uint32) required broadcast ram; - setDooberIds(uint32[]) broadcast ram; - setBossDamage(uint16, uint8, int16) broadcast ram; - setState(string) broadcast ram; - hitBoss(uint8) airecv clsend; - hitBossInsides() airecv clsend; - hitToon(uint32) airecv clsend; - finalPieSplat() airecv clsend; - touchCage() airecv clsend; - doStrafe(uint8, uint8) broadcast; - cagedToonBattleThree(uint16, uint32) broadcast; - toonPromoted(uint8(0-1)); -}; - -dclass DistributedCashbotBoss : DistributedBossCog { - setState(string) broadcast ram; - setBossDamage(uint16) broadcast ram; - setRewardId(uint16) broadcast ram; - applyReward() airecv clsend; -}; - -struct LinkPosition { - int16/100 x; - int16/100 y; - int16/100 z; -}; - -dclass DistributedCashbotBossCrane : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setState(char, uint32) broadcast ram; - requestControl() airecv clsend; - requestFree() airecv clsend; - clearSmoothing(int8) broadcast clsend; - setCablePos(uint8, int16/100, uint16%360/100, LinkPosition [3], int16) broadcast clsend; -}; - -dclass DistributedCashbotBossObject : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setObjectState(char, uint32, uint32) broadcast ram; - requestGrab() airecv clsend; - rejectGrab(); - requestDrop() airecv clsend; - hitFloor() clsend; - requestFree(int16/10, int16/10, int16/10, uint16%360/100) airecv clsend; - hitBoss(uint16/255) airecv clsend; - setX(int16/10) broadcast ram clsend airecv; - setY(int16/10) broadcast ram clsend airecv; - setZ(int16/10) broadcast ram clsend airecv; - setH(int16%360/10) broadcast ram clsend airecv; - setP(int16%360/10) broadcast ram clsend airecv; - setR(int16%360/10) broadcast ram clsend airecv; - setPos : setX, setY, setZ; - setHpr : setH, setP, setR; - setPosHpr : setX, setY, setZ, setH, setP, setR; - setXY : setX, setY; - setXZ : setX, setZ; - setXYH : setX, setY, setH; - setXYZH : setX, setY, setZ, setH; - setComponentL(uint64) broadcast ram clsend airecv; - setComponentX(int16/10) broadcast ram clsend airecv; - setComponentY(int16/10) broadcast ram clsend airecv; - setComponentZ(int16/10) broadcast ram clsend airecv; - setComponentH(int16%360/10) broadcast ram clsend airecv; - setComponentP(int16%360/10) broadcast ram clsend airecv; - setComponentR(int16%360/10) broadcast ram clsend airecv; - setComponentT(int16) broadcast ram clsend airecv; - setSmStop : setComponentT; - setSmH : setComponentH, setComponentT; - setSmZ : setComponentZ, setComponentT; - setSmXY : setComponentX, setComponentY, setComponentT; - setSmXZ : setComponentX, setComponentZ, setComponentT; - setSmPos : setComponentX, setComponentY, setComponentZ, setComponentT; - setSmHpr : setComponentH, setComponentP, setComponentR, setComponentT; - setSmXYH : setComponentX, setComponentY, setComponentH, setComponentT; - setSmXYZH : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentT; - setSmPosHpr : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; - setSmPosHprL : setComponentL, setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; - clearSmoothing(int8) broadcast clsend; -}; - -dclass DistributedCashbotBossSafe : DistributedCashbotBossObject { - setIndex(uint8) required broadcast ram; - requestInitial() airecv clsend; -}; - -dclass DistributedCashbotBossGoon : DistributedCashbotBossObject { - requestBattle(int16/10) airecv clsend; - requestStunned(int16/10) airecv clsend; - setVelocity(uint8/10) broadcast ram; - setHFov(uint8) broadcast ram; - setAttackRadius(uint8) broadcast ram; - setStrength(uint8) broadcast ram; - setGoonScale(uint8/50) broadcast ram; - setupGoon : setVelocity, setHFov, setAttackRadius, setStrength, setGoonScale; - setTarget(int16/10, int16/10, uint16%360/100, int16) broadcast ram; - destroyGoon() broadcast clsend airecv; -}; - -dclass DistributedBattleBase : DistributedObject { - setLevelDoId(uint32) required broadcast ram; - setBattleCellId(uint32) required broadcast ram; - setInteractivePropTrackBonus(int8) required broadcast ram; - setPosition(int16/10, int16/10, int16/10) required broadcast ram; - setZoneId(uint32) required broadcast ram; - setInitialSuitPos(int16/10, int16/10, int16/10) required broadcast ram; - setMembers(uint32[], string, string, string, string, string, uint32[], string, string, string, string, int16) required broadcast ram; - adjust(int16) broadcast; - setMovie(int8, uint32[], uint32[], int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8) required broadcast ram; - setChosenToonAttacks(uint32[], int16[], int16[], int32[]) broadcast ram; - setBattleExperience(int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], uint8[], int16[], uint32[]) required broadcast ram; - denyLocalToonJoin(); - setBossBattle(uint8) required broadcast ram; - setState(string, int16) required broadcast ram; - faceOffDone() airecv clsend; - toonRequestJoin(int16/10, int16/10, int16/10) airecv clsend; - toonRequestRun() airecv clsend; - toonDied() airecv clsend; - adjustDone() airecv clsend; - timeout() airecv clsend; - movieDone() airecv clsend; - rewardDone() airecv clsend; - joinDone(uint32) airecv clsend; - requestAttack(int8, int8, int32) airecv clsend; - requestPetProxy(uint32) airecv clsend; -}; - -dclass DistributedBattle : DistributedBattleBase { -}; - -dclass DistributedBattleBldg : DistributedBattleBase { -}; - -dclass DistributedBattleTutorial : DistributedBattle { -}; - -dclass DistributedLevelBattle : DistributedBattle { -}; - -dclass DistributedBattleFactory : DistributedLevelBattle { -}; - -dclass DistributedMintBattle : DistributedLevelBattle { -}; - -dclass DistributedStageBattle : DistributedLevelBattle { -}; - -dclass DistributedBattleFinal : DistributedBattleBase { - setBossCogId(uint32) required broadcast ram; - setBattleNumber(uint8) required broadcast ram; - setBattleSide(uint8) required broadcast ram; -}; - -dclass DistributedBoat : DistributedObject { - setState(string, int16) required broadcast ram; -}; - -dclass DistributedButterfly : DistributedObject { - setArea(int16, int16) required broadcast ram; - setState(int8, uint8, uint8, uint16/10, int16) required broadcast ram; - avatarEnter() airecv clsend; -}; - -dclass DistributedMMPiano : DistributedObject { - requestSpeedUp() airecv clsend; - requestChangeDirection() airecv clsend; - setSpeed(int16/1000, uint16/100, int16) broadcast ram; - playSpeedUp(uint32) broadcast; - playChangeDirection(uint32) broadcast; -}; - -dclass DistributedDGFlower : DistributedObject { - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - setHeight(uint8/10) broadcast ram; -}; - -dclass DistributedFishingPond : DistributedObject { - hitTarget(uint32) airecv clsend; - setArea(uint32) required broadcast ram; -}; - -dclass DistributedFishingTarget : DistributedNode { - setPondDoId(uint32) required broadcast ram; - setState(uint8, int16/10, uint16/100, uint16/10, int16) required broadcast ram; -}; - -dclass DistributedFishingSpot : DistributedObject { - setPondDoId(uint32) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - requestEnter() airecv clsend; - rejectEnter(); - requestExit() airecv clsend; - setOccupied(uint32) broadcast ram; - doCast(uint8/255, int16/100) airecv clsend; - sellFish() airecv clsend; - sellFishComplete(uint8, uint16); - setMovie(uint8, uint8, uint16, uint16, uint16, uint8/100, int16/100) broadcast ram; -}; - -dclass DistributedPondBingoManager : DistributedObject { - setPondDoId(uint32) required broadcast ram; - updateGameState(uint32, uint8); - setCardState(uint16, uint8, uint16, uint32); - setState(string, int16); - cardUpdate(uint16, uint8, uint8, uint8) airecv clsend; - enableBingo(); - handleBingoCall(uint16) airecv clsend; - setJackpot(uint16); -}; - -dclass DistributedCannon : DistributedObject { - setEstateId(uint32) required broadcast ram; - setTargetId(uint32) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setActive(uint8) airecv clsend; - setActiveState(uint8) broadcast ram; - requestEnter() airecv clsend; - requestExit() broadcast; - setMovie(uint8, uint32) broadcast ram; - setCannonPosition(int32/100, uint32/100) airecv clsend; - setCannonLit(int32/100, uint32/100) airecv clsend; - setFired() airecv clsend; - setLanded() airecv clsend; - updateCannonPosition(uint32, int32/100, uint32/100) broadcast ram; - setCannonWillFire(uint32, int32/100, int32/100, uint32/100, int16) broadcast; - setCannonExit(uint32) broadcast; - requestBumperMove(int32/100, int32/100, int32/100) airecv clsend; - setCannonBumperPos(int32/100, int32/100, int32/100) required broadcast ram; -}; - -dclass DistributedTarget : DistributedObject { - setPosition(int16/10, int16/10, int16/10) required broadcast ram; - setState(uint8, uint32/10, uint8) broadcast; - setReward(uint32) broadcast; - setResult(uint32) airecv clsend; - setBonus(int16/10) airecv clsend; - setCurPinballScore(uint32, int32, int32) clsend airecv; - setPinballHiScorer(string) broadcast ram; - setPinballHiScore(int32) broadcast ram; -}; - -dclass DistributedMinigame : DistributedObject { - setParticipants(uint32[]) broadcast ram required; - setTrolleyZone(uint32) broadcast ram required; - setStartingVotes(uint16[]) broadcast ram required; - setMetagameRound(int8) broadcast ram required; - setDifficultyOverrides(int32, int32) broadcast ram required; - setAvatarJoined() airecv clsend; - setAvatarReady() airecv clsend; - setAvatarExited() airecv clsend; - requestExit() airecv clsend; - setGameReady() broadcast; - setGameStart(int16) broadcast; - setGameExit() broadcast; - setGameAbort() broadcast; -}; - -dclass DistributedMinigameTemplate : DistributedMinigame { -}; - -dclass DistributedRaceGame : DistributedMinigame { - setTimerStartTime(int16) broadcast; - setAvatarChoice(uint8) airecv clsend; - setAvatarChose(uint32) broadcast; - setChancePositions(uint8[]) broadcast; - setServerChoices(int8[], uint8[], int8[]) broadcast; -}; - -dclass DistributedCannonGame : DistributedMinigame { - setCannonPosition(int32/100, uint32/100) airecv clsend; - setCannonLit(int32/100, uint32/100) airecv clsend; - updateCannonPosition(uint32, int32/100, uint32/100) broadcast; - setCannonWillFire(uint32, int32/100, int32/100, uint32/100) broadcast; - setToonWillLandInWater(int32/100) airecv clsend; - announceToonWillLandInWater(uint32, int32/100) broadcast; -}; - -dclass DistributedPhotoGame : DistributedMinigame { - newClientPhotoScore(uint8, char [0-256], uint32/100) airecv clsend; - newAIPhotoScore(uint32, uint8, uint32/100) broadcast; - filmOut() airecv clsend; -}; - -dclass DistributedPatternGame : DistributedMinigame { - reportPlayerReady() airecv clsend; - setPattern(uint8[]) broadcast; - reportPlayerPattern(uint8[], uint16/1000) airecv clsend; - setPlayerPatterns(uint8[], uint8[], uint8[], uint8[], uint32) broadcast; - reportButtonPress(uint8, uint8) airecv clsend; - remoteButtonPressed(uint32, uint8, uint8) broadcast; -}; - -dclass DistributedRingGame : DistributedMinigame { - setTimeBase(int16) broadcast ram required; - setColorIndices(int8, int8, int8, int8) broadcast ram required; - setToonGotRing(uint8) airecv clsend; - setRingGroupResults(uint8) broadcast; -}; - -dclass DistributedTagGame : DistributedMinigame { - tag(uint32) airecv clsend; - setIt(uint32) broadcast; - setTreasureScore(uint16[]) broadcast; -}; - -dclass DistributedMazeGame : DistributedMinigame { - claimTreasure(uint32) airecv clsend; - setTreasureGrabbed(uint32, uint32) broadcast; - allTreasuresTaken() broadcast; - hitBySuit(uint32, int16) clsend broadcast; -}; - -dclass DistributedTugOfWarGame : DistributedMinigame { - reportPlayerReady(uint8) airecv clsend; - sendGoSignal(uint8[]) broadcast; - sendStopSignal(uint32[], uint32[], uint32[]) broadcast; - sendGameType(uint8, uint8) broadcast; - reportEndOfContest(uint8) airecv clsend; - sendNewAvIdList(uint32[]) airecv clsend; - reportCurrentKeyRate(uint32, int16/100) airecv clsend; - sendCurrentPosition(uint32[], int16/1000[]) broadcast; - sendSuitPosition(int32/1000) broadcast; - remoteKeyRateUpdate(uint32, uint32) broadcast; -}; - -dclass DistributedCatchGame : DistributedMinigame { - claimCatch(uint32, uint32) airecv clsend; - setObjectCaught(uint32, uint32) broadcast; - hitBySuit(uint32, int16) clsend broadcast; - reportDone() airecv clsend; - setEveryoneDone() broadcast; -}; - -dclass DistributedDivingGame : DistributedMinigame { - pickupTreasure(uint32) airecv clsend; - setTreasureGrabbed(uint32, uint32) broadcast; - handleFishCollision(uint32, uint32, uint32, char [0-256]) airecv clsend; - performFishCollision(uint32, uint32, uint32, int16) broadcast; - handleCrabCollision(uint32, char [0-256]) airecv clsend; - performCrabCollision(uint32, int16) broadcast; - setTreasureDropped(uint32, int16) broadcast; - fishSpawn(int16, uint32, uint32, uint16) broadcast; - removeFish(uint32) airecv clsend; - getCrabMoving(uint32, int16, int8) airecv clsend; - setCrabMoving(uint32, int16, int8, int8, int16, int8) broadcast; - treasureRecovered() airecv clsend; - incrementScore(uint32, uint32, int16) broadcast; -}; - -dclass DistributedTargetGame : DistributedMinigame { - setTimeBase(int16) broadcast ram required; - setToonGotRing(uint8) airecv clsend; - setRingGroupResults(uint8) broadcast; - setPlayerDone() airecv clsend; - setScore(int32, int32) airecv clsend; - setTargetSeed(uint32) broadcast ram; - setRoundDone() broadcast; - setSingleScore(uint16, uint32) broadcast; - setGameDone() broadcast; -}; - -dclass EstateManager : DistributedObject { - startAprilFools() broadcast; - stopAprilFools() broadcast; - getEstateZone(uint32 avId) airecv clsend; - setEstateZone(uint32 ownerId, uint32 zoneId); - setAvHouseId(uint32, uint32[]) broadcast; - sendAvToPlayground(DoId avId, uint8 reason); - exitEstate() airecv clsend; - removeFriend(uint32, uint32) airecv clsend; -}; - -struct decorItem { - uint8 decorType; - uint8 dataByte[]; - uint32 dataWord[]; -}; - -struct lawnItem { - uint8 type; - uint8 hardPoint; - int8 waterLevel; - int8 growthLevel; - uint16 optional; -}; - -dclass DistributedEstate : DistributedObject { - string DcObjectType db; - setEstateReady() broadcast; - setClientReady() airecv clsend; - setEstateType(uint8 type = 0) required broadcast db; - setClosestHouse(uint8) airecv clsend; - setTreasureIds(uint32[]) broadcast ram; - requestServerTime() airecv clsend; - setServerTime(uint32); - setDawnTime(uint32) required broadcast ram; - placeOnGround(uint32) broadcast ram; - setDecorData(lawnItem items[] = []) required airecv db; - setLastEpochTimeStamp(uint32 timestamp = 0) required airecv db; - setRentalTimeStamp(uint32 timestamp = 0) required airecv db; - setRentalType(uint8 type = 0) required airecv db; - setSlot0ToonId(uint32 toonId = 0) required airecv db; - setSlot0Items(lawnItem items[] = []) required airecv db; - setSlot1ToonId(uint32 toonId = 0) required airecv db; - setSlot1Items(lawnItem items[] = []) required airecv db; - setSlot2ToonId(uint32 toonId = 0) required airecv db; - setSlot2Items(lawnItem items[] = []) required airecv db; - setSlot3ToonId(uint32 toonId = 0) required airecv db; - setSlot3Items(lawnItem items[] = []) required airecv db; - setSlot4ToonId(uint32 toonId = 0) required airecv db; - setSlot4Items(lawnItem items[] = []) required airecv db; - setSlot5ToonId(uint32 toonId = 0) required airecv db; - setSlot5Items(lawnItem items[] = []) required airecv db; - setIdList(uint32 []) broadcast ram; - completeFlowerSale(uint8) airecv clsend; - awardedTrophy(uint32) broadcast; - setClouds(uint8) required broadcast ram; - cannonsOver() broadcast; - gameTableOver() broadcast; -}; - -dclass DistributedHouse : DistributedObject { - string DcObjectType db; - setHousePos(uint8) required broadcast; - setHouseType(uint8 type = 0) required broadcast db; - setGardenPos(uint8 index = 0) required broadcast db; - setAvatarId(uint32 toonId = 0) required broadcast db; - setName(string toonName = "") required broadcast db; - setColor(uint8 colorIndex = 0) required broadcast db; - setAtticItems(blob = "") required db; - setInteriorItems(blob = "") required db; - setAtticWallpaper(blob = "") required db; - setInteriorWallpaper(blob = "") required db; - setAtticWindows(blob = "") required db; - setInteriorWindows(blob = "") required db; - setDeletedItems(blob = "") required db; - setInteriorInitialized(uint8 initialized = 0) required db; - setCannonEnabled(uint8) required; - setHouseReady() broadcast ram; -}; - -dclass DistributedHouseInterior : DistributedObject { - setHouseId(uint32) required broadcast ram; - setHouseIndex(uint8) required broadcast ram; - setWallpaper(blob) required broadcast ram; - setWindows(blob) required broadcast ram; -}; - -dclass DistributedGarden : DistributedObject { - sendNewProp(uint8, int16/10, int16/10, int16/10) broadcast; -}; - -dclass DistributedParty : DistributedObject { - setPartyClockInfo(uint8, uint8, uint8) required broadcast; - setInviteeIds(uint32[]) required broadcast; - setPartyState(bool) required broadcast; - setPartyInfoTuple(party) required broadcast; - setAvIdsAtParty(uint32 []) required broadcast; - setPartyStartedTime(string) required broadcast; - setHostName(string) required broadcast; - enteredParty() clsend airecv; -}; - -dclass DistributedPartyActivity : DistributedObject { - setX(int16/10) broadcast required; - setY(int16/10) broadcast required; - setH(uint16%360/100) broadcast required; - setPartyDoId(uint32) broadcast required; - toonJoinRequest() airecv clsend; - toonExitRequest() airecv clsend; - toonExitDemand() airecv clsend; - toonReady() airecv clsend; - joinRequestDenied(uint8); - exitRequestDenied(uint8); - setToonsPlaying(uint32 []) broadcast ram; - setState(string, int16) broadcast ram; - showJellybeanReward(uint32, uint32, string); -}; - -dclass DistributedPartyTeamActivity : DistributedPartyActivity { - toonJoinRequest(uint8(0-1)) airecv clsend; - toonExitRequest(uint8(0-1)) airecv clsend; - toonSwitchTeamRequest() airecv clsend; - setPlayersPerTeam(uint8, uint8) broadcast required; - setDuration(uint8) broadcast required; - setCanSwitchTeams(bool) broadcast required; - setState(string, int16, uint32) broadcast ram; - setToonsPlaying(uint32 [0-8], uint32 [0-8]) required broadcast ram; - setAdvantage(uint16/100); - switchTeamRequestDenied(uint8); -}; - -struct CatchGeneration { - uint32 generation; - uint32 timestamp; - int8 numPlayers; -}; - -dclass DistributedPartyCatchActivity : DistributedPartyActivity { - setStartTimestamp(uint32) required broadcast ram; - setGenerations(CatchGeneration []) required broadcast ram; - requestActivityStart() airecv clsend; - startRequestResponse(uint8); - claimCatch(uint32, uint32, uint32) airecv clsend; - setObjectCaught(uint32, uint32, uint32) broadcast; -}; - -dclass DistributedPartyWinterCatchActivity : DistributedPartyCatchActivity { -}; - -dclass DistributedPartyCogActivity : DistributedPartyTeamActivity { - pieThrow(uint32, int32, int32/100, int32/100, int32/100, int32/100, uint8) clsend broadcast; - pieHitsToon(uint32, int32, int32/100, int32/100, int32/100) clsend broadcast; - pieHitsCog(uint32, int32, int8(0-2), int32/100, int32/100, int32/100, int32, bool) clsend broadcast airecv; - setCogDistances(int8/100 [3]) broadcast ram; - setHighScore(string, uint16) broadcast ram; -}; - -dclass DistributedPartyWinterCogActivity : DistributedPartyCogActivity { -}; - -dclass DistributedPartyDanceActivityBase : DistributedPartyActivity { - updateDancingToon(uint8, char [0-256]) clsend airecv; - setToonsPlaying(uint32 [], uint16%360/100 []) broadcast ram; - setDancingToonState(uint32, uint8, string) broadcast; -}; - -dclass DistributedPartyDanceActivity : DistributedPartyDanceActivityBase { -}; - -dclass DistributedPartyDance20Activity : DistributedPartyDanceActivityBase { -}; - -dclass DistributedPartyValentineDanceActivity : DistributedPartyDanceActivityBase { -}; - -dclass DistributedPartyValentineDance20Activity : DistributedPartyDanceActivityBase { -}; - -dclass DistributedPartyJukeboxActivityBase : DistributedPartyActivity { - setNextSong(jukeboxSongInfo) clsend airecv; - setSongPlaying(jukeboxSongInfo, uint32) broadcast ram; - queuedSongsRequest() clsend airecv; - queuedSongsResponse(jukeboxSongInfo [], int16); - setSongInQueue(jukeboxSongInfo); - moveHostSongToTopRequest() clsend airecv; - moveHostSongToTop(); -}; - -dclass DistributedPartyJukeboxActivity : DistributedPartyJukeboxActivityBase { -}; - -dclass DistributedPartyJukebox40Activity : DistributedPartyJukeboxActivityBase { -}; - -dclass DistributedPartyValentineJukeboxActivity : DistributedPartyJukeboxActivityBase { -}; - -dclass DistributedPartyValentineJukebox40Activity : DistributedPartyJukeboxActivityBase { -}; - -dclass DistributedPartyCannonActivity : DistributedPartyActivity { - setMovie(uint8, uint32) broadcast; - setLanded(uint32) airecv broadcast clsend; - setCannonWillFire(uint32, int32/100, uint32/100) broadcast; - cloudsColorRequest() clsend airecv; - cloudsColorResponse(partyCloudColor []); - requestCloudHit(uint16, uint8/100, uint8/100, uint8/100) clsend airecv; - setCloudHit(uint16, uint8/100, uint8/100, uint8/100) broadcast; - setToonTrajectoryAi(int32, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) airecv clsend; - setToonTrajectory(uint32, int32, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) broadcast; - updateToonTrajectoryStartVelAi(int32/100, int32/100, int32/100) airecv clsend; - updateToonTrajectoryStartVel(uint32, int32/100, int32/100, int32/100) broadcast; -}; - -dclass DistributedPartyCannon : DistributedObject { - setActivityDoId(uint64) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - requestEnter() airecv clsend; - requestExit() broadcast; - setMovie(uint8, uint32) broadcast ram; - setCannonPosition(int32/100, uint32/100) airecv clsend; - setCannonLit(int32/100, uint32/100) airecv clsend; - setFired() airecv clsend; - setLanded(uint32) airecv clsend; - updateCannonPosition(uint32, int32/100, uint32/100) broadcast ram; - setCannonExit(uint32) broadcast; - setTimeout() clsend airecv; -}; - -dclass DistributedPartyFireworksActivity : DistributedPartyActivity { - setEventId(uint8 eventId) required broadcast; - setShowStyle(uint8 style) required broadcast; - setSongId(uint8 songId) required broadcast; -}; - -dclass DistributedPartyTrampolineActivity : DistributedPartyActivity { - awardBeans(uint8, uint16) clsend airecv; - setBestHeightInfo(string, uint16) broadcast ram; - reportHeightInformation(uint16) airecv clsend; - leaveTrampoline() broadcast; - requestAnim(char [0-256]) clsend airecv; - requestAnimEcho(string) broadcast; - removeBeans(int8 []) clsend airecv; - removeBeansEcho(int8 []) broadcast; -}; - -dclass DistributedPartyValentineTrampolineActivity : DistributedPartyTrampolineActivity { -}; - -dclass DistributedPartyVictoryTrampolineActivity : DistributedPartyTrampolineActivity { -}; - -dclass DistributedPartyWinterTrampolineActivity : DistributedPartyTrampolineActivity { -}; - -dclass DistributedPartyTugOfWarActivity : DistributedPartyTeamActivity { - reportKeyRateForce(uint32, int16/100) airecv clsend; - reportFallIn(uint8) airecv clsend; - setToonsPlaying(uint32 [0-4], uint32 [0-4]) required broadcast ram; - updateToonKeyRate(uint32, uint32) broadcast; - updateToonPositions(int16/1000) broadcast; -}; - -dclass DeleteManager : DistributedObject { - setInventory(blob) airecv clsend; -}; - -struct weeklyCalendarHoliday { - uint8 holidayId; - uint8 dayOfTheWeek; -}; - -struct yearlyCalendarHoliday { - uint8 holidayId; - uint8[] firstStartTime; - uint8[] lastEndTime; -}; - -struct oncelyCalendarHoliday { - uint8 holidayId; - uint16[] firstStartTime; - uint16[] lastEndTime; -}; - -struct relativelyCalendarHoliday { - uint8 holidayId; - uint16[] firstStartTime; - uint16[] lastEndTime; -}; - -struct startAndEndTime { - uint16[] startTime; - uint16[] endTime; -}; - -struct multipleStartHoliday { - uint8 holidayId; - startAndEndTime times[]; -}; - -dclass NewsManager : DistributedObject { - setPopulation(uint32) broadcast ram; - setBingoWin(uint32) broadcast ram; - setBingoStart() broadcast; - setBingoEnd() broadcast; - setCircuitRaceStart() broadcast; - setCircuitRaceEnd() broadcast; - setTrolleyHolidayStart() broadcast; - setTrolleyHolidayEnd() broadcast; - setTrolleyWeekendStart() broadcast; - setTrolleyWeekendEnd() broadcast; - setRoamingTrialerWeekendStart() broadcast; - setRoamingTrialerWeekendEnd() broadcast; - setInvasionStatus(uint8, string, uint32, uint8) broadcast; - setHolidayIdList(uint32[]) broadcast ram; - holidayNotify() broadcast; - setWeeklyCalendarHolidays(weeklyCalendarHoliday []) required broadcast ram; - setYearlyCalendarHolidays(yearlyCalendarHoliday []) required broadcast ram; - setOncelyCalendarHolidays(oncelyCalendarHoliday []) required broadcast ram; - setRelativelyCalendarHolidays(relativelyCalendarHoliday []) required broadcast ram; - setMultipleStartHolidays(multipleStartHoliday []) required broadcast ram; - sendSystemMessage(string, uint8) broadcast ram; -}; - -dclass PurchaseManager : DistributedObject { - setPlayerIds(uint32, uint32, uint32, uint32) required broadcast ram; - setNewbieIds(uint32[]) required broadcast ram; - setMinigamePoints(uint8, uint8, uint8, uint8) required broadcast ram; - setPlayerMoney(uint16, uint16, uint16, uint16) required broadcast ram; - setPlayerStates(uint8, uint8, uint8, uint8) required broadcast ram; - setCountdown(int16) required broadcast ram; - setMetagameRound(int8) required broadcast ram; - setVotesArray(int16[]) required broadcast ram; - requestExit() airecv clsend; - requestPlayAgain() airecv clsend; - setInventory(blob, int16, uint8) airecv clsend; - setPurchaseExit() broadcast; -}; - -dclass NewbiePurchaseManager : PurchaseManager { - setOwnedNewbieId(uint32) required broadcast ram; -}; - -dclass SafeZoneManager : DistributedObject { - enterSafeZone() airecv clsend; - exitSafeZone() airecv clsend; -}; - -dclass TutorialManager : DistributedObject { - requestTutorial() airecv clsend; - rejectTutorial() airecv clsend; - requestSkipTutorial() airecv clsend; - skipTutorialResponse(uint8); - enterTutorial(uint32, uint32, uint32, uint32); - allDone() airecv clsend; - toonArrived() airecv clsend; -}; - -dclass CatalogManager : DistributedObject { - startCatalog() airecv clsend; - fetchPopularItems() airecv clsend; - setPopularItems(blob); -}; - -dclass DistributedMyTest : DistributedObject { - setMyTest(uint16) broadcast; -}; - -dclass DistributedTreasure : DistributedObject { - setTreasureType(uint16) required broadcast ram; - setPosition(int16/10, int16/10, int16/10) required broadcast ram; - requestGrab() airecv clsend; - setGrab(uint32) broadcast ram; - setReject() broadcast; -}; - -dclass DistributedCashbotBossTreasure : DistributedTreasure { - setGoonId(uint32) required broadcast ram; - setFinalPosition(int16/10, int16/10, int16/10) required broadcast ram; - setStyle(uint16) required broadcast ram; -}; - -dclass DistributedLargeBlobSender : DistributedObject { - setMode(uint8) required broadcast ram; - setTargetAvId(uint32) required broadcast ram; - setChunk(blob); - setFilename(string); - setAck() airecv clsend; -}; - -dclass DistributedLevel : DistributedObject { - setLevelZoneId(uint32) required broadcast ram; - setPlayerIds(uint32[]) required broadcast ram; - setEntranceId(uint8) required broadcast ram; - setZoneIds(uint32[]) broadcast ram; - setStartTimestamp(int32) broadcast ram; - setOuch(uint8) airecv clsend; - requestCurrentLevelSpec(string, string) airecv clsend; - setSpecDeny(blob); - setSpecSenderDoId(uint32); - setAttribChange(uint32, blob, blob, blob) broadcast; -}; - -dclass DistributedEntity : DistributedObject { - setLevelDoId(uint32) required broadcast ram; - setEntId(uint32) required broadcast ram; -}; - -dclass DistributedInteractiveEntity : DistributedEntity { - setAvatarInteract(uint32) required broadcast ram; - requestInteract() airecv clsend; - rejectInteract(); - requestExit() airecv clsend; - avatarExit(uint32) broadcast; - setState(string, int32) required broadcast ram; -}; - -dclass DistributedTrophyMgr : DistributedObject { - requestTrophyScore() airecv clsend; -}; - -dclass DistributedBuilding : DistributedObject { - setBlock(uint16, uint32) required broadcast ram; - setSuitData(int8, int8, int8) required broadcast ram; - setVictorList(uint32[]) broadcast ram; - setState(string, int16) broadcast ram; - setVictorReady() airecv clsend; -}; - -dclass DistributedAnimBuilding : DistributedBuilding { -}; - -dclass DistributedBuildingQueryMgr : DistributedObject { - isSuit(uint8, uint32) airecv clsend; - response(uint8, bool); -}; - -dclass DistributedToonInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; - setToonData(blob) required broadcast ram; - setState(string, int16) required broadcast ram; - nextSnowmanHeadPart() clsend airecv; -}; - -dclass DistributedToonHallInterior : DistributedToonInterior { -}; - -dclass DistributedSuitInterior : DistributedObject { - setZoneId(uint32) required broadcast ram; - setExtZoneId(uint32) required broadcast ram; - setDistBldgDoId(uint32) required broadcast ram; - setNumFloors(int8) required broadcast ram; - setToons(uint32[], uint16) broadcast ram; - setSuits(uint32[], uint32[], uint16[]) broadcast ram; - setState(string, int16) required broadcast ram; - setAvatarJoined() airecv clsend; - elevatorDone() airecv clsend; - reserveJoinDone() airecv clsend; -}; - -dclass DistributedCogdoBarrel : DistributedObject { - requestGrab() airecv clsend; - setIndex(uint32) required broadcast ram; - setState(uint32) required broadcast ram; - setGrab(uint32) broadcast ram; - setReject() broadcast; -}; - -dclass DistributedCogdoInterior : DistributedObject { - setZoneId(uint32) required broadcast ram; - setExtZoneId(uint32) required broadcast ram; - setDistBldgDoId(uint32) required broadcast ram; - setNumFloors(int8) required broadcast ram; - setShopOwnerNpcId(uint32) required broadcast ram; - setSOSNpcId(uint32) broadcast ram; - setFOType(int8) broadcast ram; - setToons(uint32[], uint16) broadcast ram; - setSuits(uint32[], uint32[], uint16[]) broadcast ram; - setState(string, int16) required broadcast ram; - setAvatarJoined() airecv clsend; - elevatorDone() airecv clsend; - reserveJoinDone() airecv clsend; - toonLeftBarrelRoom() airecv clsend; - toonBarrelRoomIntroDone() airecv clsend; - setBarrelRoomReward(uint32 [], uint8 []) broadcast; - toonBarrelRoomRewardDone() airecv clsend; -}; - -dclass DistributedCogdoBattleBldg : DistributedBattleBldg { -}; - -dclass DistCogdoGame : DistributedObject { - setInteriorId(uint32) required broadcast ram; - setExteriorZone(uint32) broadcast ram required; - setDifficultyOverrides(int32, int32) broadcast ram required; - setVisible() broadcast; - setIntroStart() broadcast; - setToonSad(uint32) broadcast; - setToonDisconnect(uint32) broadcast; - setAvatarReady() airecv clsend; - setGameStart(int16) broadcast; - setGameFinish(int16) broadcast; -}; - -dclass DistCogdoLevelGame : DistCogdoGame, DistributedLevel { -}; - -dclass DistCogdoMazeGame : DistCogdoGame { - requestAction(uint8, uint32) airecv clsend; - doAction(uint8, uint32, int16) broadcast; - setNumSuits(uint8 [3]) required broadcast; - requestUseGag(int16/10, int16/10, int16/10, int16) clsend airecv; - toonUsedGag(uint32, int16/10, int16/10, int16/10, int16) broadcast; - requestSuitHitByGag(uint8, uint8) clsend airecv; - suitHitByGag(uint32, uint8, uint8) broadcast; - requestHitBySuit(uint8, uint8, int16) clsend airecv; - toonHitBySuit(uint32, uint8, uint8, int16) broadcast; - requestHitByDrop() clsend airecv; - toonHitByDrop(uint32) broadcast; - requestPickUp(uint8) clsend airecv; - pickUp(uint32, uint8, int16) broadcast; - requestGag(uint8) clsend airecv; - hasGag(uint32, int16) broadcast; -}; - -dclass DistCogdoFlyingGame : DistCogdoGame { - requestAction(uint8, uint8) airecv clsend; - requestPickUp(uint16, uint8) airecv clsend; - pickUp(uint32, uint16, int16) broadcast; - debuffPowerup(uint32, uint16, int16) broadcast; - doAction(uint8, uint32) broadcast; - eagleExitCooldown(uint32, int16) broadcast; - toonSetAsEagleTarget(uint32, uint8, int16) broadcast; - toonClearAsEagleTarget(uint32, uint8, int16) broadcast; - toonDied(uint32, int32) broadcast; - toonSpawn(uint32, int32) broadcast; - toonSetBlades(uint32, int32) broadcast; - toonBladeLost(uint32) broadcast; -}; - -dclass DistCogdoBoardroomGame : DistCogdoLevelGame { -}; - -dclass DistCogdoCraneGame : DistCogdoLevelGame { -}; - -dclass DistCogdoCrane : DistributedObject { - setCraneGameId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setState(char, uint32) broadcast ram; - clearSmoothing(int8) broadcast clsend; - setCablePos(uint8, int16/100, uint16%360/100, LinkPosition [3], int16) broadcast clsend; -}; - -dclass DistCogdoCraneObject : DistributedObject { - setCraneGameId(uint32) required broadcast ram; - setObjectState(char, uint32, uint32) broadcast ram; - requestGrab() airecv clsend; - rejectGrab(); - requestDrop() airecv clsend; - hitFloor() clsend; - requestFree(int16/10, int16/10, int16/10, uint16%360/100) airecv clsend; - hitBoss(uint16/255) airecv clsend; - setX(int16/10) broadcast ram clsend airecv; - setY(int16/10) broadcast ram clsend airecv; - setZ(int16/10) broadcast ram clsend airecv; - setH(int16%360/10) broadcast ram clsend airecv; - setP(int16%360/10) broadcast ram clsend airecv; - setR(int16%360/10) broadcast ram clsend airecv; - setPos : setX, setY, setZ; - setHpr : setH, setP, setR; - setPosHpr : setX, setY, setZ, setH, setP, setR; - setXY : setX, setY; - setXZ : setX, setZ; - setXYH : setX, setY, setH; - setXYZH : setX, setY, setZ, setH; - setComponentL(uint64) broadcast ram clsend airecv; - setComponentX(int16/10) broadcast ram clsend airecv; - setComponentY(int16/10) broadcast ram clsend airecv; - setComponentZ(int16/10) broadcast ram clsend airecv; - setComponentH(int16%360/10) broadcast ram clsend airecv; - setComponentP(int16%360/10) broadcast ram clsend airecv; - setComponentR(int16%360/10) broadcast ram clsend airecv; - setComponentT(int16) broadcast ram clsend airecv; - setSmStop : setComponentT; - setSmH : setComponentH, setComponentT; - setSmZ : setComponentZ, setComponentT; - setSmXY : setComponentX, setComponentY, setComponentT; - setSmXZ : setComponentX, setComponentZ, setComponentT; - setSmPos : setComponentX, setComponentY, setComponentZ, setComponentT; - setSmHpr : setComponentH, setComponentP, setComponentR, setComponentT; - setSmXYH : setComponentX, setComponentY, setComponentH, setComponentT; - setSmXYZH : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentT; - setSmPosHpr : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; - setSmPosHprL : setComponentL, setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; - clearSmoothing(int8) broadcast clsend; -}; - -dclass DistCogdoCraneMoneyBag : DistCogdoCraneObject { - setIndex(uint8) required broadcast ram; - requestInitial() airecv clsend; -}; - -dclass DistCogdoCraneCog : DistributedObject { - setGameId(uint32) required broadcast ram; - setDNAString(blob) required broadcast ram; - setSpawnInfo(uint8, int16) required broadcast ram; -}; - -dclass DistributedHQInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; - setLeaderBoard(blob) required broadcast ram; - setTutorial(uint8) required broadcast ram; -}; - -dclass DistributedGagshopInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; -}; - -dclass DistributedPetshopInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; -}; - -dclass DistributedKartShopInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; -}; - -dclass DistributedBankInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; - setState(string, int16) broadcast ram; -}; - -dclass DistributedLibraryInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; -}; - -dclass DistributedDoor : DistributedObject { - setZoneIdAndBlock(uint32, uint32) required broadcast ram; - setSwing(int8) required broadcast ram; - setDoorType(uint8) required broadcast ram; - setDoorIndex(uint8) required broadcast ram; - setOtherZoneIdAndDoId(uint32, uint32); - requestEnter() airecv clsend; - requestExit() airecv clsend; - rejectEnter(int8); - avatarEnter(uint32) broadcast; - avatarExit(uint32) broadcast; - setState(string, int16) required broadcast ram; - setExitDoorState(string, int16) required broadcast ram; -}; - -dclass DistributedAnimDoor : DistributedDoor { -}; - -dclass DistributedHouseDoor : DistributedDoor { -}; - -dclass DistributedCogHQDoor : DistributedDoor { -}; - -dclass DistributedSellbotHQDoor : DistributedCogHQDoor { - informPlayer(uint8) broadcast ram; -}; - -dclass DistributedNPCToonBase : DistributedNode { - setName(string) required broadcast ram; - setDNAString(blob) required broadcast ram; - setPositionIndex(uint8) required broadcast ram; - setAnimState(string, int16/1000, int16) broadcast ram; - setPageNumber(int16, int8, int16) broadcast ram clsend; - avatarEnter() airecv clsend; - freeAvatar(); - setHat(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; - setGlasses(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; - setBackpack(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; - setShoes(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; -}; - -dclass DistributedNPCToon : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint16[], int16) broadcast ram; - setMovieDone() airecv clsend; - chooseQuest(uint16) airecv clsend; - chooseTrack(int8) airecv clsend; -}; - -dclass DistributedSmartNPC : DistributedNPCToonBase { - greet(uint32, uint32) broadcast ram; - talkMessage(uint32, string) airecv clsend; - respond(uint32, string, uint32) broadcast ram; - dismiss(uint32, uint16) broadcast ram; -}; - -dclass DistributedNPCBanker : DistributedNPCToonBase { - setMovie(uint8, uint32, int16) broadcast ram; - setMovieDone() airecv clsend; - transferMoney(int16) airecv clsend; -}; - -dclass DistributedNPCSpecialQuestGiver : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint16[], int16) broadcast ram; - setMovieDone() airecv clsend; - chooseQuest(uint16) airecv clsend; - chooseTrack(int8) airecv clsend; -}; - -dclass DistributedNPCFlippyInToonHall : DistributedNPCToon { -}; - -dclass DistributedNPCScientist : DistributedNPCToonBase { - setChat(char [0-1024], uint8, uint32, uint8, uint8) ownsend broadcast; -}; - -dclass DistributedNPCClerk : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, int16) broadcast ram; - setInventory(blob, int16, uint8) airecv clsend; -}; - -dclass DistributedNPCTailor : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, int16) broadcast ram; - setDNA(blob, int8, uint8) airecv clsend; - setCustomerDNA(uint32, blob) broadcast ram; -}; - -dclass DistributedNPCBlocker : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, int16) broadcast ram; -}; - -dclass DistributedNPCFisherman : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; - completeSale(uint8) airecv clsend; -}; - -dclass DistributedNPCPartyPerson : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; - answer(uint8) airecv clsend; -}; - -dclass DistributedNPCPetclerk : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; - setPetSeeds(uint32[]); - petAdopted(uint8, uint32) airecv clsend; - petReturned() airecv clsend; - fishSold() airecv clsend; - transactionDone() airecv clsend; -}; - -dclass DistributedNPCKartClerk : DistributedNPCToonBase { - setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; - buyKart(uint8) airecv clsend; - buyAccessory(uint8) airecv clsend; - transactionDone() airecv clsend; -}; - -dclass DistributedNPCYin : DistributedNPCToonBase { - doTransformation(uint32 avId) broadcast; - requestTransformation() airecv clsend; -}; - -dclass DistributedNPCYang : DistributedNPCToonBase { - doTransformation(uint32 avId) broadcast; - requestTransformation() airecv clsend; -}; - -dclass DistributedKnockKnockDoor : DistributedAnimatedProp { -}; - -dclass DistributedElevator : DistributedObject { - setBldgDoId(uint32) required broadcast ram; - setState(string, int16) broadcast ram; - fillSlot0(uint32, uint8) broadcast ram; - fillSlot1(uint32, uint8) broadcast ram; - fillSlot2(uint32, uint8) broadcast ram; - fillSlot3(uint32, uint8) broadcast ram; - fillSlot4(uint32, uint8) broadcast ram; - fillSlot5(uint32, uint8) broadcast ram; - fillSlot6(uint32, uint8) broadcast ram; - fillSlot7(uint32, uint8) broadcast ram; - emptySlot0(uint32, int8, int16, int16) broadcast ram; - emptySlot1(uint32, int8, int16, int16) broadcast ram; - emptySlot2(uint32, int8, int16, int16) broadcast ram; - emptySlot3(uint32, int8, int16, int16) broadcast ram; - emptySlot4(uint32, int8, int16, int16) broadcast ram; - emptySlot5(uint32, int8, int16, int16) broadcast ram; - emptySlot6(uint32, int8, int16, int16) broadcast ram; - emptySlot7(uint32, int8, int16, int16) broadcast ram; - requestBoard() airecv clsend; - rejectBoard(uint32, uint8); - requestExit() airecv clsend; - setElevatorTripId(uint32) required broadcast ram; - setAntiShuffle(uint8) required broadcast ram; - setMinLaff(uint8) required broadcast ram; -}; - -dclass DistributedElevatorFSM : DistributedObject { - setBldgDoId(uint32) required broadcast ram; - setState(string, int16) broadcast ram; - fillSlot0(uint32) broadcast ram; - fillSlot1(uint32) broadcast ram; - fillSlot2(uint32) broadcast ram; - fillSlot3(uint32) broadcast ram; - fillSlot4(uint32) broadcast ram; - fillSlot5(uint32) broadcast ram; - fillSlot6(uint32) broadcast ram; - fillSlot7(uint32) broadcast ram; - emptySlot0(uint32, int8, int16) broadcast ram; - emptySlot1(uint32, int8, int16) broadcast ram; - emptySlot2(uint32, int8, int16) broadcast ram; - emptySlot3(uint32, int8, int16) broadcast ram; - emptySlot4(uint32, int8, int16) broadcast ram; - emptySlot5(uint32, int8, int16) broadcast ram; - emptySlot6(uint32, int8, int16) broadcast ram; - emptySlot7(uint32, int8, int16) broadcast ram; - requestBoard() airecv clsend; - rejectBoard(uint32, uint8); - requestExit() airecv clsend; - setElevatorTripId(uint32) required broadcast ram; - setAntiShuffle(uint8) required broadcast ram; - setMinLaff(uint8) required broadcast ram; -}; - -dclass DistributedElevatorFloor : DistributedElevatorFSM { - setFloor(int8) broadcast ram; - setLocked(uint16) required broadcast ram; - setEntering(uint16) required broadcast ram; - kickToonsOut() broadcast; - setLatch(uint32) required broadcast ram; -}; - -dclass DistributedElevatorExt : DistributedElevator { - setFloor(int8) broadcast ram; -}; - -dclass DistributedLawOfficeElevatorExt : DistributedElevatorExt { - setEntranceId(uint8) required broadcast ram; - setLawOfficeInteriorZone(uint32); - setLawOfficeInteriorZoneForce(uint32); -}; - -dclass DistributedElevatorInt : DistributedElevator { - requestBuildingExit() airecv clsend; - forcedExit(uint32); -}; - -dclass DistributedFactoryElevatorExt : DistributedElevatorExt { - setEntranceId(uint8) required broadcast ram; - setFactoryInteriorZone(uint32); - setFactoryInteriorZoneForce(uint32); -}; - -dclass DistributedMintElevatorExt : DistributedElevatorExt { - setMintId(uint16) required broadcast ram; - setMintInteriorZone(uint32); - setMintInteriorZoneForce(uint32); -}; - -dclass DistributedCogdoElevatorExt : DistributedElevatorExt { -}; - -dclass DistributedLawOfficeElevatorInt : DistributedElevatorFloor { - setLawOfficeInteriorZone(uint32); -}; - -dclass DistributedCogdoElevatorInt : DistributedElevatorInt { -}; - -dclass DistributedBossElevator : DistributedElevatorExt { - setBossOfficeZone(uint32); - setBossOfficeZoneForce(uint32); -}; - -dclass DistributedVPElevator : DistributedBossElevator { -}; - -dclass DistributedCFOElevator : DistributedBossElevator { -}; - -dclass DistributedCJElevator : DistributedBossElevator { -}; - -dclass DistributedBBElevator : DistributedBossElevator { -}; - -dclass DistributedBoardingParty : DistributedObject { - postGroupInfo(uint32, uint32[], uint32[], uint32[]) broadcast; - informDestinationInfo(uint8) clsend airecv; - postDestinationInfo(uint8) broadcast; - postInvite(uint32, uint32, bool) broadcast; - postInviteCanceled() broadcast; - postKick(uint32) broadcast; - postKickReject(uint32, uint32, uint32) broadcast; - postSizeReject(uint32, uint32, uint32) broadcast; - postInviteAccepted(uint32) broadcast; - postInviteDelcined(uint32) broadcast; - postInviteNotQualify(uint32, int8, uint32) broadcast; - postAlreadyInGroup() broadcast; - postGroupDissolve(uint32, uint32, uint32 [], uint8) broadcast; - postMessageAcceptanceFailed(uint32, int8) broadcast; - postGroupAlreadyFull() broadcast; - postSomethingMissing() broadcast; - postRejectBoard(uint32, int8, uint32 [], uint32 []) broadcast; - postRejectGoto(uint32, int8, uint32 [], uint32 []) broadcast; - postMessageInvited(uint32, uint32) broadcast; - postMessageInvitationFailed(uint32) broadcast; - acceptGoToFirstTime(uint32) broadcast; - acceptGoToSecondTime(uint32) broadcast; - rejectGoToRequest(uint32, int8, uint32 [], uint32 []) broadcast; - requestInvite(uint32) airecv clsend; - requestCancelInvite(uint32) airecv clsend; - requestAcceptInvite(uint32, uint32) airecv clsend; - requestRejectInvite(uint32, uint32) airecv clsend; - requestKick(uint32) airecv clsend; - requestLeave(uint32) airecv clsend; - requestBoard(uint32) airecv clsend; - requestGoToFirstTime(uint32) airecv clsend; - requestGoToSecondTime(uint32) airecv clsend; - setElevatorIdList(uint32[]) required broadcast ram; - setGroupSize(uint8) required broadcast ram; -}; - -dclass DistributedTutorialInterior : DistributedObject { - setZoneIdAndBlock(uint32, uint16) required broadcast ram; - setTutorialNpcId(uint32) required broadcast ram; -}; - -dclass DistributedBankMgr : DistributedObject { - transferMoney(int16) airecv clsend; -}; - -dclass DistributedMailbox : DistributedObject { - setHouseId(uint32) required broadcast ram; - setHousePos(uint8) required broadcast ram; - setName(string) required broadcast ram; - setFullIndicator(uint8) broadcast ram; - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - freeAvatar(); - setMovie(uint8, uint32) broadcast ram; - acceptItemMessage(uint16, blob, uint8, int32) airecv clsend; - acceptItemResponse(uint16, int8); - discardItemMessage(uint16, blob, uint8, int32) airecv clsend; - discardItemResponse(uint16, int8); - acceptInviteMessage(uint16, uint64) airecv clsend; - rejectInviteMessage(uint16, uint64) airecv clsend; - markInviteReadButNotReplied(uint64) airecv clsend; -}; - -dclass DistributedFurnitureManager : DistributedObject { - setOwnerId(uint32 ownerId) required broadcast ram; - setOwnerName(string ownerName) required broadcast ram; - setInteriorId(uint32 interiorId) required broadcast ram; - setAtticItems(blob atticItems) required broadcast ram; - setAtticWallpaper(blob atticWallpaper) required broadcast ram; - setAtticWindows(blob atticWindows) required broadcast ram; - setDeletedItems(blob deletedItems) required broadcast ram; - suggestDirector(uint32 directorId) airecv clsend; - setDirector(uint32 directorId) broadcast ram; - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - moveItemToAtticMessage(uint32 doId, uint16 context) airecv clsend; - moveItemToAtticResponse(int8 retval, uint16 context); - moveItemFromAtticMessage(uint16 index, int16/10 x, int16/10 y, int16/100 z, int16/10 h, int16/10 p, int16/10 r, uint16 context) airecv clsend; - moveItemFromAtticResponse(int8 retval, uint32 doId, uint16 context); - deleteItemFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; - deleteItemFromAtticResponse(int8 retval, uint16 context); - deleteItemFromRoomMessage(blob item, uint32 doId, uint16 context) airecv clsend; - deleteItemFromRoomResponse(int8 retval, uint16 context); - moveWallpaperFromAtticMessage(uint16 index, uint8 room, uint16 context) airecv clsend; - moveWallpaperFromAtticResponse(int8 retval, uint16 context); - deleteWallpaperFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; - deleteWallpaperFromAtticResponse(int8 retval, uint16 context); - moveWindowToAtticMessage(uint8 slot, uint16 context) airecv clsend; - moveWindowToAtticResponse(int8 retval, uint16 context); - moveWindowFromAtticMessage(uint16 index, uint8 slot, uint16 context) airecv clsend; - moveWindowFromAtticResponse(int8 retval, uint16 context); - moveWindowMessage(uint8 fromSlot, uint8 toSlot, uint16 context) airecv clsend; - moveWindowResponse(int8 retval, uint16 context); - deleteWindowFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; - deleteWindowFromAtticResponse(int8 retval, uint16 context); - recoverDeletedItemMessage(blob item, uint16 index, uint16 context) airecv clsend; - recoverDeletedItemResponse(int8 retval, uint16 context); -}; - -dclass DistributedFurnitureItem : DistributedSmoothNode { - setItem(uint32 furnitureMgrId, blob item) required broadcast ram; - requestPosHpr(uint8 final, int16/10 x, int16/10 y, int16/100 z, int16/10 h, int16/10 p, int16/10 r, int16 t) airecv clsend; - setMode(uint8 mdoe, uint32 avId) required broadcast ram; -}; - -dclass DistributedBank : DistributedFurnitureItem { - avatarEnter() airecv clsend; - freeAvatar(); - setMovie(uint8, uint32, int16) broadcast ram; - transferMoney(int16) airecv clsend; -}; - -dclass DistributedBankCollectable : DistributedObject { - requestGrab() airecv clsend; - grab(uint32) broadcast ram; -}; - -dclass DistributedCloset : DistributedFurnitureItem { - setOwnerId(uint32) required broadcast ram; - enterAvatar() airecv clsend; - freeAvatar(); - removeItem(blob, uint8) airecv clsend; - setDNA(blob, int8, uint8) airecv clsend; - setState(uint8, uint32, uint32, string, uint8[], uint8[]) broadcast ram; - setMovie(uint8, uint32, int16) broadcast ram; - resetItemLists() broadcast ram; - setCustomerDNA(uint32, blob) broadcast ram; -}; - -dclass DistributedTrunk : DistributedCloset { - setState(uint8, uint32, uint32, string, uint8[], uint8[], uint8[], uint8[]) broadcast ram; - removeItem(uint8, uint8, uint8, uint8) airecv clsend; - setDNA(uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, int8, uint8) airecv clsend; - setCustomerDNA(uint32, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8) broadcast ram; -}; - -dclass DistributedPhone : DistributedFurnitureItem { - setInitialScale(uint8/170, uint8/170, uint8/170) required broadcast ram; - setNewScale(uint8/170, uint8/170, uint8/170) airecv clsend; - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - freeAvatar(); - setLimits(uint16); - setMovie(uint8, uint32, int32) broadcast ram; - requestPurchaseMessage(uint16, blob, int32) airecv clsend; - requestPurchaseResponse(uint16, int8); - requestGiftPurchaseMessage(uint16, uint32, blob, int32) airecv clsend; - requestGiftPurchaseResponse(uint16, int8); - purchaseItemComplete(); -}; - -dclass DistributedFireworkShow : DistributedObject { - startShow(uint8, uint8, uint8, int16) broadcast ram; - requestFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) airecv clsend; - shootFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) broadcast; -}; - -dclass DistributedFireworksCannon : DistributedFireworkShow { - avatarEnter() airecv clsend; - avatarExit() airecv clsend; - freeAvatar(); - setMovie(uint8, uint32, int16) broadcast ram; - setPosition(int16/10, int16/10, int16/10) required broadcast ram; -}; - -dclass LobbyManager : DistributedObject { -}; - -dclass DistributedFactory : DistributedLevel { - setFactoryId(uint16) required broadcast ram; - setSuits(uint32[], uint32[]) broadcast ram; - setForemanConfronted(uint32) broadcast ram; - setDefeated() broadcast ram; -}; - -dclass DistributedMegaCorp: DistributedFactory { -}; - -dclass DistributedLawOffice : DistributedObject { - setLawOfficeId(uint16) required broadcast ram; - startSignal() broadcast ram; - readyForNextFloor() airecv clsend; -}; - -dclass DistributedLawOfficeFloor : DistributedLevel { - setLawOfficeId(uint16) required broadcast ram; - setSuits(uint32[], uint32[]) broadcast ram; - readyForNextFloor() airecv clsend; - setForemanConfronted(uint32) broadcast ram; - setDefeated() broadcast ram; -}; - -dclass DistributedMint : DistributedObject { - setZoneId(uint32) required broadcast ram; - setMintId(uint16) required broadcast ram; - setFloorNum(uint8) required broadcast ram; - setRoomDoIds(uint32[]) broadcast ram; -}; - -dclass DistributedMintRoom : DistributedLevel { - setMintId(uint16) required broadcast ram; - setRoomId(uint16) required broadcast ram; - setRoomNum(uint8) required broadcast ram; - setSuits(uint32[], uint32[]) broadcast ram; - setBossConfronted(uint32) broadcast ram; - setDefeated() broadcast ram; -}; - -dclass DistributedStage : DistributedObject { - setZoneId(uint32) required broadcast ram; - setStageId(uint16) required broadcast ram; - setLayoutIndex(uint16) required broadcast ram; - setFloorNum(uint8) required broadcast ram; - setRoomDoIds(uint32[]) broadcast ram; - setStageZone(uint32) broadcast ram; - elevatorAlert(uint32) broadcast ram; -}; - -dclass DistributedStageRoom : DistributedLevel { - setStageId(uint16) required broadcast ram; - setRoomId(uint16) required broadcast ram; - setRoomNum(uint8) required broadcast ram; - setSuits(uint32[], uint32[]) broadcast ram; - setBossConfronted(uint32) broadcast ram; - setDefeated() broadcast ram; -}; - -dclass DistributedInGameEditor : DistributedObject { - setEditorAvId(uint32) required broadcast ram; - setEditUsername(blob) required broadcast ram; - setLevelDoId(uint32) required broadcast ram; - requestCurrentLevelSpec() airecv clsend; - setSpecSenderDoId(uint32); - setEdit(uint32, blob, blob, blob) airecv clsend; - setAttribChange(uint32, blob, blob, blob); - setFinished() airecv clsend; -}; - -dclass DistributedLift : DistributedEntity { - setStateTransition(uint8, uint8, uint32) required broadcast ram; - setAvatarEnter() airecv clsend; - setAvatarLeave() airecv clsend; -}; - -dclass DistributedDoorEntity : DistributedEntity { - setLocksState(uint16) required broadcast ram; - setDoorState(uint8, int32) required broadcast ram; - requestOpen() airecv clsend; -}; - -dclass DistributedSwitch : DistributedInteractiveEntity { -}; - -dclass DistributedButton : DistributedSwitch { -}; - -dclass DistributedTrigger : DistributedSwitch { -}; - -dclass DistributedCrushableEntity : DistributedEntity { - setPosition(int16/10, int16/10, int16/10) broadcast ram; - setCrushed(uint32, uint8) broadcast ram; -}; - -dclass DistributedCrusherEntity : DistributedEntity { -}; - -dclass DistributedElevatorMarker : DistributedEntity { -}; - -dclass DistributedStomper : DistributedCrusherEntity { - setMovie(uint8, int16, uint32[]) broadcast ram; -}; - -dclass DistributedStomperPair : DistributedEntity { - setChildren(uint32[]) broadcast ram; - setSquash() airecv clsend; -}; - -dclass DistributedBarrelBase : DistributedEntity { - requestGrab() airecv clsend; - setGrab(uint32) broadcast ram; - setReject() broadcast; -}; - -dclass DistributedGagBarrel : DistributedBarrelBase { -}; - -dclass DistributedBeanBarrel : DistributedBarrelBase { -}; - -dclass DistributedHealBarrel : DistributedBarrelBase { -}; - -dclass DistributedGrid : DistributedEntity { -}; - -dclass ActiveCell : DistributedEntity { - setState(uint8, uint32) broadcast ram; -}; - -dclass DirectionalCell : ActiveCell { -}; - -dclass CrusherCell : ActiveCell { -}; - -dclass DistributedCrate : DistributedCrushableEntity { - requestPush(uint8) airecv clsend; - setReject(); - setAccept() broadcast; - setMoveTo(uint32, int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast ram; - setDone() airecv clsend; -}; - -dclass DistributedSinkingPlatform : DistributedEntity { - setOnOff(uint8, uint32) airecv clsend; - setSinkMode(uint32, uint8, uint32) broadcast ram; -}; - -dclass DistributedGoon : DistributedCrushableEntity { - requestBattle(int16/10) airecv clsend; - requestStunned(int16/10) airecv clsend; - requestResync() airecv clsend; - setParameterize(int16/10, int16/10, int16/10, uint32) airecv clsend; - setMovie(uint8, uint32, int32/10, int16) broadcast ram; -}; - -dclass DistributedGridGoon : DistributedGoon { - setPathPts(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast ram; -}; - -dclass BattleBlocker : DistributedEntity { - setActive(uint8) required broadcast ram; - setSuits(uint32[]) broadcast ram; - setBattle(uint32) broadcast ram; - setBattleFinished() broadcast ram; -}; - -dclass DistributedLaserField : BattleBlocker { - setGrid(uint8, uint8) required broadcast ram; - setField(uint8 []) required broadcast ram; - setSuccess(uint8) broadcast ram; - hit(int8, int8, int8, int8) airecv clsend; - trapFire() airecv clsend; - setActiveLF(uint8) broadcast ram; - hideSuit(uint32[]) broadcast ram; - showSuit(uint32[]) broadcast ram; - setGridGame(string) broadcast ram; -}; - -struct golfGreenGameBoardData { - uint8 posX; - uint8 posZ; - uint8 typeIndex; -}; - -struct golfGreenGameScoreData { - uint32 avId; - uint8 score; -}; - -dclass DistributedGolfGreenGame : BattleBlocker { - requestJoin() airecv clsend; - leaveGame() airecv clsend; - acceptJoin(uint16, int32, uint32 []) broadcast ram; - requestBoard(uint8) airecv clsend; - startBoard(golfGreenGameBoardData [], uint8 []); - signalDone(uint8) broadcast ram; - boardCleared(uint32); - scoreData(uint8, uint8, golfGreenGameScoreData []) broadcast ram; - informGag(uint8, uint8); - helpOthers(uint32) broadcast; - setTimerStart(uint16, int32) broadcast ram; -}; - -dclass DistributedSecurityCamera : DistributedEntity { - trapFire() airecv clsend; - setTarget(uint8) broadcast ram; -}; - -dclass DistributedMover : DistributedEntity { - startMove(int16) broadcast ram; -}; - -typedef uint16/10000 PetTrait; - -dclass DistributedPet : DistributedSmoothNode { - string DcObjectType db; - setOwnerId(uint32) required broadcast db; - setPetName(string) required broadcast db; - setTraitSeed(uint32) required broadcast db; - setSafeZone(uint32) required broadcast db; - setForgetfulness(PetTrait) required broadcast db; - setBoredomThreshold(PetTrait) required broadcast db; - setRestlessnessThreshold(PetTrait) required broadcast db; - setPlayfulnessThreshold(PetTrait) required broadcast db; - setLonelinessThreshold(PetTrait) required broadcast db; - setSadnessThreshold(PetTrait) required broadcast db; - setFatigueThreshold(PetTrait) required broadcast db; - setHungerThreshold(PetTrait) required broadcast db; - setConfusionThreshold(PetTrait) required broadcast db; - setExcitementThreshold(PetTrait) required broadcast db; - setAngerThreshold(PetTrait) required broadcast db; - setSurpriseThreshold(PetTrait) required broadcast db; - setAffectionThreshold(PetTrait) required broadcast db; - setHead(int8(-1 - 1)) required broadcast db; // Supposed to be -1 - 0, but minification causes this to become -1-0, which is a parse problem. - setEars(int8(-1 - 4)) required broadcast db; - setNose(int8(-1 - 3)) required broadcast db; - setTail(int8(-1 - 6)) required broadcast db; - setBodyTexture(int8(0-6)) required broadcast db; - setColor(int8(0-25)) required broadcast db; - setColorScale(int8(0-8)) required broadcast db; - setEyeColor(int8(0-5)) required broadcast db; - setGender(int8(0-1)) required broadcast db; - setLastSeenTimestamp(uint32) required broadcast db; - setBoredom(uint16/1000(0-1)) required broadcast db; - setRestlessness(uint16/1000(0-1)) required broadcast db; - setPlayfulness(uint16/1000(0-1)) required broadcast db; - setLoneliness(uint16/1000(0-1)) required broadcast db; - setSadness(uint16/1000(0-1)) required broadcast db; - setAffection(uint16/1000(0-1)) required broadcast db; - setHunger(uint16/1000(0-1)) required broadcast db; - setConfusion(uint16/1000(0-1)) required broadcast db; - setExcitement(uint16/1000(0-1)) required broadcast db; - setFatigue(uint16/1000(0-1)) required broadcast db; - setAnger(uint16/1000(0-1)) required broadcast db; - setSurprise(uint16/1000(0-1)) required broadcast db; - setMood : setBoredom, setRestlessness, setPlayfulness, setLoneliness, setSadness, setAffection, setHunger, setConfusion, setExcitement, setFatigue, setAnger, setSurprise; - teleportIn(int16) broadcast ownsend; - teleportOut(int16) broadcast ownsend; - setTrickAptitudes(uint16/10000(0-1) []) required broadcast db; - doTrick(uint8, int16) broadcast ram; - avatarInteract(uint32); - setMovie(uint8, uint32, int16) broadcast ram; - freeAvatar(); -}; - -dclass DistributedPetProxy : DistributedPet { - setDominantMood(string) broadcast ram; -}; - -dclass DistributedAprilToonsMgr : DistributedObject { - setEventActive(uint8 eventId, bool) broadcast; - requestEventsList() clsend airecv; - requestEventsListResp(uint8 []); -}; - -dclass DistributedBlackCatMgr : DistributedObject { - doBlackCatTransformation(uint32 avId) broadcast; - requestBlackCatTransformation() airecv clsend; -}; - -dclass DistributedPolarBearMgr : DistributedObject { - doPolarBearTransformation(uint32 avId) broadcast; - requestPolarBearTransformation() airecv clsend; -}; - -dclass DistributedPolarPlaceEffectMgr : DistributedObject { - addPolarPlaceEffect() airecv clsend; -}; - -dclass DistributedGreenToonEffectMgr : DistributedObject { - addGreenToonEffect() airecv clsend; -}; - -dclass DistributedResistanceEmoteMgr : DistributedObject { - addResistanceEmote() clsend airecv; -}; - -dclass DistributedScavengerHuntTarget : DistributedObject { - attemptScavengerHunt() airecv clsend; -}; - -dclass DistributedTrickOrTreatTarget : DistributedObject { - doScavengerHunt(int8); - requestScavengerHunt() airecv clsend; -}; - -dclass DistributedWinterCarolingTarget : DistributedObject { - doScavengerHunt(int8) broadcast; - requestScavengerHunt() airecv clsend; -}; - -dclass DistributedDataStoreManager : DistributedObject { - startStore(uint8); - stopStore(uint8); - queryStore(uint8, string); - receiveResults(uint8, string); - deleteBackupStores(); -}; - -dclass DistributedVehicle : DistributedSmoothNode { - setOwner(uint32) required broadcast ram; - setState(char, uint32) broadcast ram; - setBodyType(int8) required broadcast ram; - setBodyColor(int8) required broadcast ram; - setAccessoryColor(int8) required broadcast ram; - setEngineBlockType(int8) required broadcast ram; - setSpoilerType(int8) required broadcast ram; - setFrontWheelWellType(int8) required broadcast ram; - setBackWheelWellType(int8) required broadcast ram; - setRimType(int8) required broadcast ram; - setDecalType(int8) required broadcast ram; - requestControl() airecv clsend; - requestParked() airecv clsend; - setInput(int8) broadcast ram; -}; - -struct avatarAndKart { - uint32 avId; - uint32 kartId; -}; - -dclass DistributedRace : DistributedObject { - setZoneId(uint32) required broadcast ram; - setTrackId(uint16) required broadcast ram; - setRaceType(uint16) required broadcast ram; - setCircuitLoop(uint16[]) required broadcast ram; - setAvatars(uint32[]) required broadcast ram; - setStartingPlaces(uint8[]) required broadcast ram; - setLapCount(uint8) broadcast required ram; - waitingForJoin() broadcast ram; - setEnteredRacers(avatarAndKart []) broadcast ram; - prepForRace() broadcast ram; - startTutorial() broadcast ram; - startRace(int16) broadcast ram; - goToSpeedway(uint32[], uint8) broadcast ram; - genGag(uint8, uint16, uint8) broadcast ram; - dropAnvilOn(uint32, uint32, int16) broadcast ram; - shootPiejectile(uint32, uint32, uint8) broadcast ram; - racerDisconnected(uint32) broadcast ram; - setPlace(uint32, uint32/1000, uint8, uint32, uint8, uint32, uint32, uint32[], uint16[], uint32/1000) broadcast ram; - setCircuitPlace(uint32, uint8, uint32, uint32, uint32, uint32[]) broadcast ram; - endCircuitRace() broadcast ram; - setRaceZone(uint32, uint32); - hasGag(uint8, uint8, uint8) broadcast airecv clsend; - racerLeft(uint32) clsend airecv broadcast ram; - heresMyT(uint32, int8, uint16/65535, int16) clsend airecv broadcast; - requestThrow(int32/1000, int32/1000, int32/1000) clsend airecv; - requestKart() clsend airecv; -}; - -dclass DistributedGag : DistributedObject { - setInitTime(int16) required broadcast ram; - setActivateTime(int16) required broadcast ram; - setPos(int32/1000, int32/1000, int32/1000) required broadcast ram; - setRace(uint32) required broadcast ram; - setOwnerId(uint32) required broadcast ram; - setType(uint8) required broadcast ram; - hitSomebody(uint32, int16) broadcast clsend airecv; -}; - -dclass DistributedProjectile : DistributedObject { - setInitTime(int16) required broadcast ram; - setPos(int32/1000, int32/1000, int32/1000) required broadcast ram; - setRace(uint32) required broadcast ram; - setOwnerId(uint32) required broadcast ram; - setType(uint8) required broadcast ram; - hitSomebody(uint32, int16) broadcast clsend airecv; -}; - -dclass DistributedKartPad : DistributedObject { - setArea(uint32) required broadcast ram; -}; - -dclass DistributedRacePad : DistributedKartPad { - setState(string, int16) required broadcast ram; - setRaceZone(uint32); - setTrackInfo(uint16[]) required broadcast ram; -}; - -dclass DistributedViewPad : DistributedKartPad { - setLastEntered(int16) required broadcast ram; -}; - -dclass DistributedStartingBlock : DistributedObject { - setPadDoId(uint32) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setPadLocationId(uint8) required broadcast ram; - requestEnter(uint8) airecv clsend; - rejectEnter(uint8); - requestExit() airecv clsend; - setOccupied(uint32) broadcast ram; - setMovie(uint8) broadcast ram; - movieFinished() airecv clsend; -}; - -dclass DistributedViewingBlock : DistributedStartingBlock { -}; - -dclass DistributedLeaderBoard : DistributedObject { - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setDisplay(blob) broadcast ram; -}; - -dclass DistributedDeliveryManager : DistributedObject { - hello(string) clsend; - rejectHello(string); - helloResponse(string); - getName(uint32); - receiveRejectGetName(string); - receiveAcceptGetName(string); - addName(uint32, string); - receiveRejectAddName(uint32); - receiveAcceptAddName(uint32); - addGift(uint32, blob, uint32, uint32, uint32); - receiveRejectAddGift(uint32); - receiveAcceptAddGift(uint32, uint32, uint32, uint32); - deliverGifts(uint32, uint32); - receiveAcceptDeliverGifts(uint32, string); - receiveRejectDeliverGifts(uint32, string); - receiveRequestPayForGift(blob, uint32, uint32) airecv clsend; - receiveRequestPurchaseGift(blob, uint32, uint32, uint32) airecv; - receiveAcceptPurchaseGift(uint32, uint32, int16); - receiveRejectPurchaseGift(uint32, uint32, int16, uint16); - heartbeat() airecv; - giveBeanBonus(uint32, uint16); - requestAck() clsend; - returnAck(); - givePartyRefund(uint32, uint32, uint64, int8, uint16); -}; - -dclass DistributedLawbotBoss : DistributedBossCog { - setState(string) broadcast ram; - setBossDamage(uint16, uint8, int16) broadcast ram; - touchWitnessStand() airecv clsend; - hitBoss(uint8) airecv clsend; - healBoss(uint8) airecv clsend; - hitToon(uint32) airecv clsend; - hitDefensePan() airecv clsend; - hitProsecutionPan() airecv clsend; - hitChair(uint8, uint8) airecv clsend; - setLawyerIds(uint32[]) broadcast ram; - setTaunt(int8, int8) broadcast; - toonGotHealed(uint32) broadcast; - enteredBonusState() broadcast; - setBattleDifficulty(uint8) broadcast ram; -}; - -dclass DistributedLawbotBossSuit : DistributedSuitBase { - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - doAttack(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast; - doProsecute() broadcast; - hitByToon() airecv clsend; - doStun() broadcast; -}; - -dclass DistributedLawbotBossGavel : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setState(char) broadcast ram; -}; - -dclass DistributedLawbotCannon : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - requestEnter() airecv clsend; - setMovie(int8, uint32, uint8) broadcast; - setCannonPosition(int16/10, int16/10) airecv clsend; - updateCannonPosition(uint32, int16/10, int16/10) broadcast; - setCannonLit(int16/10, int16/10) airecv clsend; - setCannonWillFire(uint32, int16/10, int16/10, int16/10, int16) broadcast; - setLanded() airecv clsend; - requestLeave() airecv clsend; -}; - -dclass DistributedLawbotChair : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setState(char) broadcast ram; - showCogJurorFlying() broadcast; - setToonJurorIndex(int8) broadcast ram; -}; - -dclass DistributedLawnDecor : DistributedNode { - setPlot(int8) required broadcast ram; - setHeading(int16/10) required broadcast ram; - setPosition(int16/10, int16/10, int16/10) required broadcast ram; - setOwnerIndex(int8) required broadcast ram; - plotEntered() airecv clsend; - removeItem() airecv clsend; - setMovie(uint8, uint32) broadcast ram; - movieDone() airecv clsend; - interactionDenied(uint32) broadcast ram; -}; - -dclass DistributedGardenPlot : DistributedLawnDecor { - plantFlower(uint8, uint8) airecv clsend; - plantGagTree(uint8, uint8) airecv clsend; - plantStatuary(uint8) airecv clsend; - plantToonStatuary(uint8, uint16) airecv clsend; - plantNothing(uint8) airecv clsend; -}; - -dclass DistributedGardenBox : DistributedLawnDecor { - setTypeIndex(uint8) required broadcast ram; -}; - -dclass DistributedStatuary : DistributedLawnDecor { - setTypeIndex(uint8) required broadcast ram; - setWaterLevel(int8) required broadcast ram; - setGrowthLevel(int8) required broadcast ram; -}; - -dclass DistributedToonStatuary : DistributedStatuary { - setOptional(uint16) required broadcast ram; -}; - -dclass DistributedAnimatedStatuary : DistributedStatuary { -}; - -dclass DistributedChangingStatuary : DistributedStatuary { - setGrowthLevel(int8) required broadcast ram; -}; - -dclass DistributedPlantBase : DistributedLawnDecor { - setTypeIndex(uint8) required broadcast ram; - setWaterLevel(int8) required broadcast ram; - setGrowthLevel(int8) required broadcast ram; - waterPlant() airecv clsend; - waterPlantDone() airecv clsend; -}; - -dclass DistributedFlower : DistributedPlantBase { - setTypeIndex(uint8) required broadcast ram; - setVariety(uint8) required broadcast ram; -}; - -dclass DistributedGagTree : DistributedPlantBase { - setWilted(int8) required broadcast ram; - requestHarvest() airecv clsend; -}; - -dclass DistributedTravelGame : DistributedMinigame { - setTimerStartTime(int16) broadcast; - setAvatarChoice(uint16, uint8) airecv clsend; - setAvatarVotes(uint32, uint16) broadcast; - setAvatarChose(uint32) broadcast; - setServerChoices(int16[], uint8[], uint8, uint8) broadcast; - setMinigames(uint8[], uint8[]) broadcast; - setBonuses(uint8[], uint8[]) broadcast; - setBoardIndex(uint8) required broadcast ram; -}; - -dclass DistributedPairingGame : DistributedMinigame { - setDeckSeed(uint32) required broadcast ram; - setMaxOpenCards(uint8) broadcast ram; - openCardRequest(int16, int16) airecv clsend; - openCardResult(int16, uint32, int16, int8, int16[]) broadcast; - reportDone() airecv clsend; - setEveryoneDone() broadcast; - setSignaling(uint32) clsend broadcast; -}; - -struct golfData { - int16 frame; - int32/100000 x; - int32/100000 y; - int32/100000 z; -}; - -struct Coord3 { - int32/100000 x; - int32/100000 y; - int32/100000 z; -}; - -struct CommonObjectData { - uint8 id; - uint8 type; - int32/100000 x; - int32/100000 y; - int32/100000 z; - int32/100000 q1; - int32/100000 q2; - int32/100000 q3; - int32/100000 q4; - int32/100000 aVX; - int32/100000 aVY; - int32/100000 aVZ; - int32/100000 lVX; - int32/100000 lVY; - int32/100000 lVZ; -}; - -dclass DistributedPhysicsWorld : DistributedObject { - clientCommonObject(uint8, uint8, Coord3, Coord3, int32/100, int32/100, int32/1000) broadcast ram; - setCommonObjects(CommonObjectData []) broadcast; - upSetCommonObjects(CommonObjectData []) airecv clsend; -}; - -dclass DistributedGolfHole : DistributedPhysicsWorld { - setHoleId(int8) broadcast ram required; - setTimingCycleLength(uint32/1000) broadcast ram required; - setAvatarReadyHole() airecv clsend; - setGolfCourseDoId(uint32) broadcast ram required; - turnDone() airecv clsend; - ballInHole() airecv clsend; - setAvatarTempTee(uint32, uint8) clsend broadcast; - setTempAimHeading(uint32, int32/1000) clsend broadcast; - setAvatarFinalTee(uint32, uint8) broadcast; - setGolferIds(uint32[]) broadcast ram required; - golfersTurn(uint32) broadcast; - golferChooseTee(uint32) broadcast; - setAvatarTee(uint8) airecv clsend; - postSwing(uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) airecv clsend; - postSwingState(uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, uint16/100, CommonObjectData []) airecv clsend; - swing(uint32, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) broadcast; - ballMovie2AI(uint32/1000, uint32, golfData [], golfData [], uint16, uint16, uint16, CommonObjectData []) airecv clsend; - ballMovie2Client(uint32/1000, uint32, golfData [], golfData [], uint16, uint16, uint16, CommonObjectData []) broadcast; - assignRecordSwing(uint32, uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, CommonObjectData []); - setBox(int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) airecv clsend; - sendBox(int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) broadcast; -}; - -dclass DistributedGolfCourse : DistributedObject { - setGolferIds(uint32[]) broadcast ram required; - setCourseId(int8) broadcast ram required; - setAvatarJoined() airecv clsend; - setAvatarReadyCourse() airecv clsend; - setAvatarReadyHole() airecv clsend; - setAvatarExited() airecv clsend; - setCurHoleIndex(int8) broadcast ram required; - setCurHoleDoId(uint32) broadcast ram required; - setDoneReward() airecv clsend; - setReward(uint8[] [], int8[], uint8[] [], uint8[] [], uint8[] [], uint32, uint32/100, uint32/100, uint32/100, uint32/100) broadcast; - setCourseReady(int8, int16[], int8) broadcast; - setHoleStart(int16) broadcast; - setCourseExit() broadcast; - setCourseAbort(uint32) broadcast; - setPlayHole() broadcast; - avExited(uint32) broadcast; - setScores(int16 []) broadcast; - changeDrivePermission(uint32, int8) broadcast; -}; - -dclass DistributedVineGame : DistributedMinigame { - reachedEndVine(int8) clsend airecv; - setNewVine(uint32, int8, uint32/10000, int8) airecv clsend broadcast; - setNewVineT(uint32, uint32/10000, int8) clsend broadcast; - setJumpingFromVine(uint32, int8, int8, int32/100, int16/100, int16/100, int16) clsend broadcast; - claimTreasure(uint32) airecv clsend; - setTreasureGrabbed(uint32, uint32) broadcast; - setScore(uint32, uint32) broadcast; - allAtEndVine() broadcast; - setFallingFromVine(uint32, int8, int8, int32/100, int16/100, int16/100, int16, int8) clsend broadcast; - setFallingFromMidair(uint32, int8, int32/100, int16/100, int16/100, int16, int8) clsend broadcast; - setVineSections(uint8[]) required broadcast ram; -}; - -dclass TTAvatarFriendsManager : AvatarFriendsManager { -}; - -dclass TTPlayerFriendsManager : PlayerFriendsManager { -}; - -dclass DistributedGolfKart : DistributedObject { - setState(string, int16) broadcast ram; - fillSlot0(uint32) broadcast ram; - fillSlot1(uint32) broadcast ram; - fillSlot2(uint32) broadcast ram; - fillSlot3(uint32) broadcast ram; - emptySlot0(uint32, int16) broadcast ram; - emptySlot1(uint32, int16) broadcast ram; - emptySlot2(uint32, int16) broadcast ram; - emptySlot3(uint32, int16) broadcast ram; - requestBoard() airecv clsend; - rejectBoard(uint32); - requestExit() airecv clsend; - setMinigameZone(uint32, uint16); - setGolfZone(uint32, uint16); - setGolfCourse(int8) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setColor(int16, int16, int16) required broadcast ram; -}; - -dclass DistributedTimer : DistributedObject { - setStartTime(int32) broadcast ram required; -}; - -dclass DistributedPicnicBasket : DistributedObject { - setState(string, uint16, int16) broadcast ram; - fillSlot0(uint32) broadcast ram; - fillSlot1(uint32) broadcast ram; - fillSlot2(uint32) broadcast ram; - fillSlot3(uint32) broadcast ram; - emptySlot0(uint32, int16) broadcast ram; - emptySlot1(uint32, int16) broadcast ram; - emptySlot2(uint32, int16) broadcast ram; - emptySlot3(uint32, int16) broadcast ram; - requestBoard(int16) airecv clsend; - rejectBoard(uint32); - requestExit() airecv clsend; - doneExit() airecv clsend; - setMinigameZone(uint32, uint16); - setPicnicDone(); - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setTableNumber(int16) required broadcast ram; -}; - -dclass DistributedGameTable : DistributedObject { - requestJoin(uint8) airecv clsend; - rejectJoin(); - requestExit() airecv clsend; - fillSlot0(uint32) broadcast ram; - fillSlot1(uint32) broadcast ram; - fillSlot2(uint32) broadcast ram; - fillSlot3(uint32) broadcast ram; - fillSlot4(uint32) broadcast ram; - fillSlot5(uint32) broadcast ram; - emptySlot0(uint32, int16) broadcast ram; - emptySlot1(uint32, int16) broadcast ram; - emptySlot2(uint32, int16) broadcast ram; - emptySlot3(uint32, int16) broadcast ram; - emptySlot4(uint32, int16) broadcast ram; - emptySlot5(uint32, int16) broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - announceWinner(uint32) broadcast; -}; - -dclass DistributedBossbotBoss : DistributedBossCog { - setState(string) broadcast ram; - setBattleDifficulty(uint8) broadcast ram; - requestGetFood(int8, int8, uint32) airecv clsend; - toonGotFood(uint32, int8, int8, uint32) broadcast; - requestServeFood(int8, int8) airecv clsend; - toonServeFood(uint32, int8, int8) broadcast; - hitBoss(uint8) airecv clsend; - hitToon(uint32) airecv clsend; - ballHitBoss(uint8) airecv clsend; - setBossDamage(uint16, uint8, int16) broadcast ram; - setSpeedDamage(uint16, uint8, int16) broadcast ram; - reachedTable(uint8) airecv clsend; - hitTable(uint8) airecv clsend; - awayFromTable(uint8) airecv clsend; - toonGotHealed(uint32) broadcast; - requestGetToonup(int8, int8, uint32) airecv clsend; - toonGotToonup(uint32, int8, int8, uint32) broadcast; -}; - -dclass DistributedCogKart : DistributedElevatorExt { - setCountryClubId(uint16) required broadcast ram; - setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; - setCountryClubInteriorZone(uint32); - setCountryClubInteriorZoneForce(uint32); -}; - -dclass DistributedCountryClub : DistributedObject { - setZoneId(uint32) required broadcast ram; - setBlockedRooms(uint8[]) required broadcast ram; - setCountryClubId(uint16) required broadcast ram; - setLayoutIndex(uint16) required broadcast ram; - setFloorNum(uint8) required broadcast ram; - setRoomDoIds(uint32[]) broadcast ram; - setCountryClubZone(uint32) broadcast ram; - elevatorAlert(uint32) broadcast ram; -}; - -dclass DistributedCountryClubRoom : DistributedLevel { - setCountryClubId(uint16) required broadcast ram; - setRoomId(uint16) required broadcast ram; - setRoomNum(uint8) required broadcast ram; - setSuits(uint32[], uint32[]) broadcast ram; - setBossConfronted(uint32) broadcast ram; - setDefeated() broadcast ram; - forceOuch(uint8) broadcast; -}; - -dclass DistributedMoleField : DistributedEntity { - setGameStart(int16, uint8, uint16) broadcast; - setClientTriggered() airecv clsend; - whackedMole(int8, int16) airecv clsend; - whackedBomb(int8, int16, int32) airecv clsend; - updateMole(int8, int8) broadcast; - reportToonHitByBomb(uint32, int8, int32) broadcast; - setScore(int16) required broadcast ram; - damageMe() airecv clsend; - setPityWin() broadcast; -}; - -dclass DistributedCountryClubBattle : DistributedLevelBattle { -}; - -dclass DistributedClubElevator : DistributedElevatorFSM { - setFloor(int8) broadcast ram; - setLocked(uint16) required broadcast ram; - setEntering(uint16) required broadcast ram; - kickToonsOut() broadcast; - setLatch(uint32) required broadcast ram; -}; - -dclass DistributedMaze : DistributedEntity { - setRoomDoId(uint32) required broadcast ram; - setGameStart(int16) broadcast; - setClientTriggered() airecv clsend; - setFinishedMaze() airecv clsend; - setGameOver() broadcast; - toonFinished(uint32, uint8, uint8) broadcast; - damageMe() airecv clsend; -}; - -dclass DistributedBattleWaiters : DistributedBattleFinal { -}; - -dclass DistributedFoodBelt : DistributedObject { - setBossCogId(uint32) required broadcast ram; - setIndex(uint8) required broadcast ram; - setState(char) broadcast ram; -}; - -dclass DistributedBanquetTable : DistributedObject { - setIndex(uint8) required broadcast ram; - setNumDiners(uint8) required broadcast ram; - setBossCogId(uint32) required broadcast ram; - setDinerInfo(uint8[], uint8[], uint8[]) required broadcast ram; - setState(char, uint32, int8) broadcast ram; - setDinerStatus(uint8, uint8) broadcast; - requestControl() airecv clsend; - requestFree(int8) airecv clsend; - setPitcherPos(uint8, uint16%360/100, int16) broadcast clsend; - clearSmoothing(int8) broadcast clsend; - firingWater(int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) broadcast clsend; - waterHitBoss(uint8) broadcast clsend; -}; - -dclass DistributedBattleDiners : DistributedBattleFinal { -}; - -dclass DistributedGolfSpot : DistributedObject { - setIndex(uint8) required broadcast ram; - setBossCogId(uint32) required broadcast ram; - setState(char, uint32, int8) broadcast ram; - setGoingToReward() broadcast ram; - requestControl() airecv clsend; - requestFree(int8) airecv clsend; - setGolfSpotPos(uint8, uint16%360/100, int16) broadcast clsend; - clearSmoothing(int8) broadcast clsend; - setSwingInfo(uint8, int16/10, uint8) broadcast clsend; -}; - -struct TireInput { - int32/100 force; - int32/100 heading; -}; - -dclass DistributedIceGame : DistributedMinigame { - setForceArrowInfo(uint32, int32/100, int32/100) broadcast clsend; - setAvatarChoice(int32/100, int32/100) airecv clsend; - endingPositions(Coord3 []) airecv clsend; - reportScoringMovieDone() airecv clsend; - claimTreasure(uint8) airecv clsend; - claimPenalty(uint8) airecv clsend; - setTireInputs(TireInput []) broadcast; - setTimerStartTime(int16) broadcast; - setFinalPositions(Coord3 []) broadcast; - setMatchAndRound(int8, int8) broadcast; - setScores(int8, int8, int16[]) broadcast; - setNewState(string) broadcast; - setTreasureGrabbed(uint32, uint32) broadcast; - setPenaltyGrabbed(uint32, uint32) broadcast; -}; - -dclass DistributedCogThiefGame : DistributedMinigame { - throwingPie(uint32, int32, int32/100, int32/100, int32/100, int32/100) clsend broadcast; - hitBySuit(uint32, int32, int8, int32/100, int32/100, int32/100) clsend broadcast airecv; - pieHitSuit(uint32, int32, int8, int32/100, int32/100, int32/100) clsend broadcast airecv; - cogHitBarrel(int32, int8, int8, int32/100, int32/100, int32/100) clsend airecv; - cogAtReturnPos(int32, int8, int8) clsend airecv; - updateSuitGoal(int32, int32, int8, int8, int64, int32/100, int32/100, int32/100) broadcast; - makeCogCarryBarrel(int32, int32, int8, int8, int32/100, int32/100, int32/100) broadcast; - makeCogDropBarrel(int32, int32, int8, int8, int32/100, int32/100, int32/100) broadcast; - markBarrelStolen(int32, int32, int8) broadcast; -}; - -struct twoDTreasureInfo { - uint8 treasureIndex; - uint8 treasureValue; -}; - -struct twoDSectionInfo { - uint8 sectionIndex; - uint8 enemyIndicesSelected[]; - twoDTreasureInfo treasureIndicesSelected[]; - uint8 spawnPointIndicesSelected[]; - uint8 stomperIndicesSelected[]; -}; - -dclass DistributedTwoDGame : DistributedMinigame { - showShootGun(uint32, int16) clsend broadcast; - toonHitByEnemy(uint32, int16) clsend broadcast airecv; - toonFellDown(uint32, int16) clsend broadcast airecv; - toonSquished(uint32, int16) clsend broadcast airecv; - toonVictory(uint32, int16) clsend broadcast airecv; - claimTreasure(uint8, uint8) airecv clsend; - claimEnemyShot(uint8, uint8) airecv clsend; - reportDone() airecv clsend; - setSectionsSelected(twoDSectionInfo []) required broadcast ram; - setTreasureGrabbed(uint32, uint8, uint8) broadcast; - setEnemyShot(uint32, uint8, uint8, uint32) broadcast; - addVictoryScore(uint32, uint8) broadcast; - setEveryoneDone() broadcast; -}; - -dclass DistributedChineseCheckers : DistributedNode { - requestExit() clsend airecv; - requestBegin() clsend airecv; - requestMove(uint8 []) clsend airecv; - requestTimer() clsend airecv; - requestSeatPositions() clsend airecv; - startBeginTimer(uint16, int16) broadcast ram; - gameStart(uint8) broadcast; - setTableDoId(uint32) required broadcast ram; - setGameState(uint8 [], uint8 []) required broadcast ram; - setTimer(int16) broadcast ram required; - setTurnTimer(int16) broadcast ram required; - sendTurn(uint8) broadcast ram; - requestWin() clsend airecv; - announceWin(uint32) broadcast; - announceSeatPositions(uint8 []) broadcast; -}; - -dclass DistributedCheckers : DistributedNode { - requestExit() clsend airecv; - requestBegin() clsend airecv; - requestTimer() clsend airecv; - requestMove(uint8 []) clsend airecv; - startBeginTimer(uint16, int16) broadcast ram; - gameStart(uint8) broadcast; - setTableDoId(uint32) required broadcast ram; - setGameState(uint8 [], uint8 []) required broadcast ram; - setTimer(int16) broadcast ram required; - setTurnTimer(int16) broadcast ram required; - sendTurn(uint8) broadcast ram; - requestWin() clsend airecv; - announceWin(uint32) broadcast; - illegalMove() broadcast; -}; - -dclass DistributedFindFour : DistributedNode { - requestExit() clsend airecv; - requestBegin() clsend airecv; - requestMove(uint8) clsend airecv; - requestTimer() clsend airecv; - requestWin(uint8 []) clsend airecv; - startBeginTimer(uint16, int16) broadcast ram; - setTableDoId(uint32) required broadcast ram; - setGameState(uint8 [][], uint8, uint8, uint8) required broadcast ram; - setTimer(int16) broadcast ram required; - setTurnTimer(int16) broadcast ram required; - gameStart(uint8) broadcast; - sendTurn(uint8) broadcast ram; - announceWin(uint32) broadcast; - announceWinLocation(uint8, uint8, uint8, uint8) broadcast; - announceWinnerPosition(uint8, uint8, uint8, uint8) broadcast; - illegalMove() broadcast; - tie() broadcast; -}; - -dclass DistributedMailManager : DistributedObject { - sendSimpleMail(uint32, uint32, string); - setNumMailItems(uint32, uint32) airecv; -}; - -dclass DistributedPartyManager : DistributedObject { - addParty(uint32, uint32, string, string, int8, int8, activity [], decoration [], uint32[], uint16); - addPartyRequest(uint32, char [0-256], char [0-256], int8, int8, activity [], decoration [], uint32[]) airecv clsend; - addPartyResponse(uint32, int8); - addPartyResponseUdToAi(uint64, int8, party) airecv; - - markInviteAsReadButNotReplied(uint32, uint64); - respondToInvite(uint32, uint32, uint16, uint64, uint8); - respondToInviteResponse(uint32, uint16, uint64, int8, uint8) airecv; - - changePrivateRequest(uint64, int8) airecv clsend; - changePrivateRequestAiToUd(uint32, uint64, int8); - changePrivateResponseUdToAi(uint32, uint64, int8, int8) airecv; - changePrivateResponse(uint64, int8, int8); - - changePartyStatusRequest(uint64, int8) airecv clsend; - changePartyStatusRequestAiToUd(uint32, uint64, int8); - changePartyStatusResponseUdToAi(uint32, uint64, int8, int8) airecv; - changePartyStatusResponse(uint64, int8, int8, uint16); - - partyInfoOfHostRequestAiToUd(uint32, uint32); - partyInfoOfHostFailedResponseUdToAi(uint32) airecv; - partyInfoOfHostResponseUdToAi(party, uint32[]) airecv; - - givePartyRefundResponse(uint32, uint64, int8, uint16, uint32); - getPartyZone(uint32, uint32, uint8) clsend airecv; - receivePartyZone(uint32, uint64, uint32); - freeZoneIdFromPlannedParty(uint32, uint32) clsend airecv; - - sendAvToPlayground(uint32, uint8); - exitParty(uint32) clsend airecv; - removeGuest(uint32, uint32) airecv clsend; - partyManagerAIStartingUp(uint32, uint32); - partyManagerAIGoingDown(uint32, uint32); - partyHasStartedAiToUd(uint64 partyId, uint32 shardId, uint32 zoneId, string hostName); - toonHasEnteredPartyAiToUd(uint32); - toonHasExitedPartyAiToUd(uint32); - partyHasFinishedUdToAllAi(uint64 partyId) airecv; - updateToPublicPartyInfoUdToAllAi(uint32 shardId, uint32 zoneId, uint64 partyId, uint32 hostId, uint8 numGuests, uint8 maxGuests, string hostName, uint8 activities[], uint8 minLeft) airecv; - updateToPublicPartyCountUdToAllAi(uint32 partyCount, uint64 partyId) airecv; - requestShardIdZoneIdForHostId(uint32) clsend airecv; - sendShardIdZoneIdToAvatar(uint32, uint32); - partyManagerUdStartingUp() airecv; - partyManagerUdLost() airecv; - updateAllPartyInfoToUd(uint32, uint64, uint32, uint32, uint8, uint8, string, uint8 [], uint64); - forceCheckStart(); - requestMw(uint32, string, uint32, uint32); - mwResponseUdToAllAi(uint32, string, uint32, uint32) airecv; - receiveId(uint64 ids[]) airecv; -}; - -dclass DistributedObjectGlobal : DistributedObject { -}; - -dclass GlobalPartyManager : DistributedObjectGlobal { - partyManagerAIHello(uint32 channel); - queryParty(uint32 hostId); - addParty(DoId avId, uint64 partyId, string start, string end, int8 isPrivate, - int8 inviteTheme, activity [], decoration [], DoIdList inviteeIds); - partyHasStarted(uint64 partyId, uint32 shardId, uint32 zoneId, string hostName); - toonJoinedParty(uint64 partyId, uint32 avId); - toonLeftParty(uint64 partyId, uint32 avId); - requestPartySlot(uint64 partyId, uint32 avId, uint32 gateId); - partyDone(uint64 partyId); - allocIds(uint16 count); -}; - -struct PotentialToon { - uint32 avNum; - string avName; - string avDNA; - uint8 avPosition; - uint8 aname; -}; - -dclass ClientServicesManager : DistributedObjectGlobal { - login(string cookie, char auth [0-256]) clsend; - acceptLogin(uint32 timestamp); - - requestAvatars() clsend; - setAvatars(PotentialToon[]); - - createAvatar(blob dna, uint8 index) clsend; - createAvatarResp(uint32 avId); - - setNameTyped(uint32 avId, string name) clsend; - setNameTypedResp(uint32 avId, uint8 status); - setNamePattern(uint32 avId, int16 p1, uint8 f1, int16 p2, uint8 f2, int16 p3, uint8 f3, int16 p4, uint8 f4) clsend; - setNamePatternResp(uint32 avId, uint8 status); - - acknowledgeAvatarName(uint32 avId) clsend; - acknowledgeAvatarNameResp(); - - deleteAvatar(uint32 avId) clsend; - - chooseAvatar(uint32 avId) clsend; - - systemMessage(string message); -}; - -dclass AwardManager : DistributedObjectGlobal { - giveAwardToToon(uint32, DoId, string, DoId, uint32, uint32); -}; - -dclass DistributedCpuInfoMgr : DistributedObjectGlobal { - setCpuInfoToUd(uint32, uint32, string, string); -}; - -dclass NonRepeatableRandomSourceClient { - getRandomSamplesReply(uint32, uint32 []) airecv; -}; - -dclass TTCodeRedemptionMgr : DistributedObject, NonRepeatableRandomSourceClient { - redeemCode(uint32, char [0-256]) airecv clsend; - redeemCodeResult(uint32, uint32, uint32); -}; - -dclass NonRepeatableRandomSource : DistributedObject, NonRepeatableRandomSourceClient { - getRandomSamples(DoId, string, uint32, uint32); - randomSample(DoId, uint32); - randomSampleAck() airecv; -}; - -dclass DistributedInGameNewsMgr : DistributedObjectGlobal { - setLatestIssueStr(string) required broadcast ram; - inGameNewsMgrAIStartingUp(uint32, uint32); - newIssueUDtoAI(string) airecv; -}; - -struct Friend -{ -uint32 doId; -string name; -blob dna; -uint32 petId; -}; - -dclass TTUFriendsManager : DistributedObjectGlobal { - removeFriend(uint32) clsend; - requestAvatarInfo(uint32[]) clsend; - - requestFriendsList() clsend; - - friendInfo(Friend); - friendList(Friend []); - - friendOnline(uint32, uint8, uint8); - friendOffline(uint32); - - goingOffline(uint32 avId); - - getAvatarDetails(uint32) clsend; - friendDetails(uint32, blob, uint16[], uint16, int16, int16, uint32, uint32, blob, blob, int8[]); - - routeTeleportQuery(uint32 toId) clsend; - teleportQuery(uint32 fromId); - - teleportResponse(uint32 fromId, uint8 tpAvailable, uint32 defaultShard, uint32 hoodId, uint32 zoneId) clsend; - setTeleportResponse(uint32 toId, uint8 tpAvailable, uint32 defaultShard, uint32 hoodId, uint32 zoneId); - - whisperSCTo(uint32 toId, uint16 msgIndex) clsend; - setWhisperSCFrom(uint32 fromId, uint16 msgIndex); - - whisperSCCustomTo(uint32 toId, uint16 msgIndex) clsend; - setWhisperSCCustomFrom(uint32 fromId, uint16 msgIndex); - - whisperSCEmoteTo(uint32 toId, uint16 emoteId) clsend; - setWhisperSCEmoteFrom(uint32 fromId, uint16 emoteId); - - requestSecret() clsend; - requestSecretResponse(int8 status, string secret); - - submitSecret(string(0-256) secret) clsend; - submitSecretResponse(int8 status, int32 avId); - - sendTalkWhisper(uint32 toId, string message) clsend; - receiveTalkWhisper(uint32 fromId, string message); - - battleSOS(uint32 toId) clsend; - setBattleSOS(uint32 fromId); - - teleportGiveup(uint32 toId) clsend; - setTeleportGiveup(uint32 fromId); - - whisperSCToontaskTo(uint32, uint32, uint32, uint32, uint8) clsend; - setWhisperSCToontaskFrom(uint32, uint32, uint32, uint32, uint8); - - sleepAutoReply(uint32 toId) clsend; - setSleepAutoReply(uint32 fromId); -}; - - -dclass DistributedPhaseEventMgr : DistributedObject { - setNumPhases(uint8) required broadcast ram; - setDates(datetime []) broadcast required; - setCurPhase(int8) required broadcast ram; - setIsRunning(bool) required broadcast ram; -}; - -dclass DistributedHydrantZeroMgr : DistributedPhaseEventMgr { -}; - -dclass DistributedMailboxZeroMgr : DistributedPhaseEventMgr { -}; - -dclass DistributedTrashcanZeroMgr : DistributedPhaseEventMgr { -}; - -dclass DistributedSillyMeterMgr : DistributedPhaseEventMgr { -}; +from direct.distributed import DistributedObjectGlobal +from toontown.ai import WelcomeValleyManager/AI +from toontown.building import DistributedAnimatedProp/AI +from toontown.toon import DistributedToon/AI/UD +from toontown.classicchars import DistributedCCharBase/AI +from toontown.classicchars import DistributedMickey/AI +from toontown.classicchars import DistributedVampireMickey/AI +from toontown.classicchars import DistributedMinnie/AI +from toontown.classicchars import DistributedWitchMinnie/AI +from toontown.classicchars import DistributedGoofy/AI +from toontown.classicchars import DistributedSuperGoofy/AI +from toontown.classicchars import DistributedDaisy/AI +from toontown.classicchars import DistributedSockHopDaisy/AI +from toontown.classicchars import DistributedChip/AI +from toontown.classicchars import DistributedPoliceChip/AI +from toontown.classicchars import DistributedDale/AI +from toontown.classicchars import DistributedJailbirdDale/AI +from toontown.classicchars import DistributedGoofySpeedway/AI +from toontown.classicchars import DistributedDonald/AI +from toontown.classicchars import DistributedFrankenDonald/AI +from toontown.classicchars import DistributedDonaldDock/AI +from toontown.classicchars import DistributedPluto/AI +from toontown.classicchars import DistributedWesternPluto/AI +from toontown.safezone import DistributedTrolley/AI +from toontown.safezone import DistributedPartyGate/AI +from toontown.suit import DistributedSuitPlanner/AI +from toontown.suit import DistributedSuitBase/AI +from toontown.suit import DistributedSuit/AI +from toontown.suit import DistributedTutorialSuit/AI +from toontown.suit import DistributedFactorySuit/AI +from toontown.suit import DistributedMintSuit/AI +from toontown.suit import DistributedStageSuit/AI +from toontown.suit import DistributedSellbotBoss/AI +from toontown.suit import DistributedCashbotBoss/AI +from toontown.coghq import DistributedCashbotBossSafe/AI +from toontown.coghq import DistributedCashbotBossCrane/AI +from toontown.suit import DistributedCashbotBossGoon/AI +from toontown.battle import DistributedBattleBase/AI +from toontown.battle import DistributedBattle/AI +from toontown.battle import DistributedBattleBldg/AI +from toontown.tutorial import DistributedBattleTutorial/AI +from toontown.coghq import DistributedBattleFactory/AI +from toontown.battle import DistributedBattleFinal/AI +from toontown.safezone import DistributedBoat/AI +from toontown.safezone import DistributedButterfly/AI +from toontown.safezone import DistributedMMPiano/AI +from toontown.safezone import DistributedDGFlower/AI +from toontown.fishing import DistributedFishingPond/AI +from toontown.fishing import DistributedFishingTarget/AI +from toontown.fishing import DistributedPondBingoManager/AI +from toontown.safezone import DistributedFishingSpot/AI +from toontown.estate import DistributedCannon/AI +from toontown.estate import DistributedTarget/AI +from toontown.minigame import DistributedMinigame/AI +from toontown.minigame import DistributedMinigameTemplate/AI +from toontown.minigame import DistributedRaceGame/AI +from toontown.minigame import DistributedCannonGame/AI +from toontown.minigame import DistributedPhotoGame/AI +from toontown.minigame import DistributedPatternGame/AI +from toontown.minigame import DistributedRingGame/AI +from toontown.minigame import DistributedTagGame/AI +from toontown.minigame import DistributedMazeGame/AI +from toontown.minigame import DistributedTugOfWarGame/AI +from toontown.minigame import DistributedCatchGame/AI +from toontown.minigame import DistributedDivingGame/AI +from toontown.minigame import DistributedTargetGame/AI +from toontown.estate import EstateManager/AI +from toontown.estate import DistributedEstate/AI +from toontown.estate import DistributedHouse/AI +from toontown.estate import DistributedHouseInterior/AI +from toontown.estate import DistributedGarden/AI +from toontown.shtiker import DeleteManager/AI +from toontown.ai import NewsManager/AI +from toontown.shtiker import PurchaseManager/AI +from toontown.shtiker import NewbiePurchaseManager/AI +from toontown.safezone import SafeZoneManager/AI +from toontown.tutorial import TutorialManager/AI +from toontown.catalog import CatalogManager/AI +from toontown.safezone import DistributedTreasure/AI +from toontown.coghq import DistributedCashbotBossTreasure/AI +from toontown.building import DistributedTrophyMgr/AI +from toontown.building import DistributedBuilding/AI +from toontown.building import DistributedAnimBuilding/AI +from toontown.building import DistributedBuildingQueryMgr/AI +from toontown.building import DistributedToonInterior/AI +from toontown.building import DistributedToonHallInterior/AI +from toontown.building import DistributedSuitInterior/AI +from toontown.building import DistributedHQInterior/AI +from toontown.building import DistributedGagshopInterior/AI +from toontown.building import DistributedPetshopInterior/AI +from toontown.building import DistributedKartShopInterior/AI +from toontown.building import DistributedBankInterior/AI +from toontown.building import DistributedBankCollectable/AI +from toontown.building import DistributedLibraryInterior/AI +from toontown.building import DistributedDoor/AI +from toontown.building import DistributedAnimDoor/AI +from toontown.estate import DistributedHouseDoor/AI +from toontown.coghq import DistributedCogHQDoor/AI +from toontown.coghq import DistributedSellbotHQDoor/AI +from toontown.toon import DistributedNPCToonBase/AI +from toontown.toon import DistributedNPCToon/AI +from toontown.toon import DistributedSmartNPC/AI +from toontown.toon import DistributedSmartNPC/AI +from toontown.toon import DistributedNPCSpecialQuestGiver/AI +from toontown.toon import DistributedNPCFlippyInToonHall/AI +from toontown.toon import DistributedNPCScientist/AI +from toontown.toon import DistributedNPCClerk/AI +from toontown.toon import DistributedNPCTailor/AI +from toontown.toon import DistributedNPCBlocker/AI +from toontown.toon import DistributedNPCFisherman/AI +from toontown.toon import DistributedNPCPartyPerson/AI +from toontown.toon import DistributedNPCPetclerk/AI +from toontown.toon import DistributedNPCKartClerk/AI +from toontown.toon import DistributedNPCYin/AI +from toontown.toon import DistributedNPCYang/AI +from toontown.building import DistributedKnockKnockDoor/AI +from toontown.building import DistributedElevator/AI +from toontown.building import DistributedElevatorFSM/AI +from toontown.building import DistributedElevatorExt/AI +from toontown.building import DistributedElevatorInt/AI +from toontown.coghq import DistributedFactoryElevatorExt/AI +from toontown.coghq import DistributedMintElevatorExt/AI +from toontown.coghq import DistributedLawOfficeElevatorExt/AI +from toontown.coghq import DistributedLawOfficeElevatorInt/AI +from toontown.building import DistributedElevatorFloor/AI +from toontown.building import DistributedBossElevator/AI +from toontown.building import DistributedVPElevator/AI +from toontown.building import DistributedCFOElevator/AI +from toontown.building import DistributedCJElevator/AI +from toontown.building import DistributedBBElevator/AI +from toontown.building import DistributedBoardingParty/AI +from toontown.building import DistributedTutorialInterior/AI +from toontown.estate import DistributedBankMgr/AI +from toontown.estate import DistributedMailbox/AI +from toontown.estate import DistributedFurnitureManager/AI +from toontown.estate import DistributedFurnitureItem/AI +from toontown.estate import DistributedBank/AI +from toontown.toon import DistributedNPCBanker/AI +from toontown.estate import DistributedCloset/AI +from toontown.estate import DistributedTrunk/AI +from toontown.estate import DistributedPhone/AI +from toontown.effects import DistributedFireworkShow/AI +from toontown.estate import DistributedFireworksCannon/AI +from toontown.coghq import LobbyManager/AI +from otp.level import DistributedLevel/AI +from otp.level import DistributedEntity/AI +from otp.level import DistributedInteractiveEntity/AI +from toontown.coghq import DistributedMegaCorp/AI +from toontown.coghq import DistributedFactory/AI +from toontown.coghq import DistributedLawOffice/AI +from toontown.coghq import DistributedLawOfficeFloor/AI +from toontown.coghq import DistributedLift/AI +from toontown.coghq import DistributedDoorEntity/AI +from toontown.coghq import DistributedSwitch/AI +from toontown.coghq import DistributedButton/AI +from toontown.coghq import DistributedTrigger/AI +from toontown.coghq import DistributedCrushableEntity/AI +from toontown.coghq import DistributedCrusherEntity/AI +from toontown.coghq import DistributedStomper/AI +from toontown.coghq import DistributedStomperPair/AI +from toontown.coghq import DistributedLaserField/AI +from toontown.coghq import DistributedGolfGreenGame/AI +from toontown.coghq import DistributedSecurityCamera/AI +from toontown.coghq import DistributedMover/AI +from toontown.coghq import DistributedElevatorMarker/AI +from toontown.coghq import DistributedBarrelBase/AI +from toontown.coghq import DistributedGagBarrel/AI +from toontown.coghq import DistributedBeanBarrel/AI +from toontown.coghq import DistributedHealBarrel/AI +from toontown.coghq import DistributedGrid/AI +from toontown.coghq import ActiveCell/AI +from toontown.coghq import DirectionalCell/AI +from toontown.coghq import CrusherCell/AI +from toontown.coghq import DistributedCrate/AI +from toontown.coghq import DistributedSinkingPlatform/AI +from toontown.suit import DistributedGoon/AI +from toontown.suit import DistributedGridGoon/AI +from toontown.coghq import BattleBlocker/AI +from toontown.ai import DistributedAprilToonsMgr/AI +from toontown.ai import DistributedBlackCatMgr/AI +from toontown.ai import DistributedPolarBearMgr/AI +from toontown.ai import DistributedPolarPlaceEffectMgr/AI +from toontown.ai import DistributedGreenToonEffectMgr/AI +from toontown.ai import DistributedResistanceEmoteMgr/AI +from toontown.ai import DistributedScavengerHuntTarget/AI +from toontown.ai import DistributedTrickOrTreatTarget/AI +from toontown.ai import DistributedWinterCarolingTarget/AI +from toontown.coghq import DistributedMint/AI +from toontown.coghq import DistributedMintRoom/AI +from toontown.coghq import DistributedMintBattle/AI +from toontown.coghq import DistributedStage/AI +from toontown.coghq import DistributedStageRoom/AI +from toontown.coghq import DistributedStageBattle/AI +from toontown.pets.PetDCImports/AI import * +from toontown.pets import DistributedPetProxy/AI +from toontown.coghq.InGameEditorDCImports/AI import * +from toontown.distributed import ToontownDistrict/AI +from toontown.distributed import ToontownDistrictStats/AI +from toontown.racing import DistributedVehicle/AI +from toontown.racing import DistributedStartingBlock/AI +from toontown.racing import DistributedRace/AI +from toontown.racing import DistributedKartPad/AI +from toontown.racing import DistributedRacePad/AI +from toontown.racing import DistributedViewPad/AI +from toontown.racing import DistributedStartingBlock/AI +from toontown.racing import DistributedLeaderBoard/AI +from toontown.racing import DistributedGag/AI +from toontown.racing import DistributedProjectile/AI +from toontown.racing.DistributedStartingBlock/AI import DistributedViewingBlock/AI +from toontown.uberdog.ClientServicesManager/UD import ClientServicesManager/UD +from toontown.uberdog.DistributedDeliveryManager/AI/UD import DistributedDeliveryManager/AI/UD +from toontown.uberdog.DistributedDataStoreManager/AI/UD import DistributedDataStoreManager/AI/UD +from toontown.suit import DistributedLawbotBoss/AI +from toontown.coghq import DistributedLawbotBossGavel/AI +from toontown.suit import DistributedLawbotBossSuit/AI +from toontown.coghq import DistributedLawbotCannon/AI +from toontown.coghq import DistributedLawbotChair/AI +from toontown.estate import DistributedLawnDecor/AI +from toontown.estate import DistributedGardenPlot/AI +from toontown.estate import DistributedGardenBox/AI +from toontown.estate import DistributedFlower/AI +from toontown.estate import DistributedGagTree/AI +from toontown.estate import DistributedStatuary/AI +from toontown.estate import DistributedToonStatuary/AI +from toontown.estate import DistributedChangingStatuary/AI +from toontown.estate import DistributedAnimatedStatuary/AI +from toontown.estate import DistributedPlantBase/AI +from toontown.estate import DistributedLawnDecor/AI +from toontown.minigame import DistributedTravelGame/AI +from toontown.minigame import DistributedPairingGame/AI +from toontown.minigame import DistributedVineGame/AI +from toontown.golf import DistributedPhysicsWorld/AI +from toontown.golf import DistributedGolfHole/AI +from toontown.golf import DistributedGolfCourse/AI +from toontown.parties import DistributedParty/AI +from toontown.parties import DistributedPartyActivity/AI +from toontown.parties import DistributedPartyTeamActivity/AI +from toontown.parties import DistributedPartyCannon/AI +from toontown.parties import DistributedPartyCannonActivity/AI +from toontown.parties import DistributedPartyCatchActivity/AI +from toontown.parties import DistributedPartyWinterCatchActivity/AI +from toontown.parties import DistributedPartyCogActivity/AI +from toontown.parties import DistributedPartyWinterCogActivity/AI +from toontown.parties import DistributedPartyFireworksActivity/AI +from toontown.parties import DistributedPartyDanceActivityBase/AI +from toontown.parties import DistributedPartyDanceActivity/AI +from toontown.parties import DistributedPartyDance20Activity/AI +from toontown.parties import DistributedPartyValentineDanceActivity/AI +from toontown.parties import DistributedPartyValentineDance20Activity/AI +from toontown.parties import DistributedPartyTrampolineActivity/AI +from toontown.parties import DistributedPartyValentineTrampolineActivity/AI +from toontown.parties import DistributedPartyVictoryTrampolineActivity/AI +from toontown.parties import DistributedPartyWinterTrampolineActivity/AI +from toontown.parties import DistributedPartyTugOfWarActivity/AI +from toontown.parties import DistributedPartyJukeboxActivityBase/AI +from toontown.parties import DistributedPartyJukeboxActivity/AI +from toontown.parties import DistributedPartyJukebox40Activity/AI +from toontown.parties import DistributedPartyValentineJukeboxActivity/AI +from toontown.parties import DistributedPartyValentineJukebox40Activity/AI +from toontown.friends import TTPlayerFriendsManager/UD +from toontown.friends import TTUFriendsManager/UD +from toontown.safezone import DistributedGolfKart/AI +from toontown.safezone import DistributedPicnicBasket/AI +from toontown.safezone import DistributedGameTable/AI +from toontown.distributed import DistributedTimer/AI +from toontown.suit import DistributedBossbotBoss/AI +from toontown.coghq import DistributedCogKart/AI +from toontown.coghq import DistributedCountryClub/AI +from toontown.coghq import DistributedCountryClubRoom/AI +from toontown.coghq import DistributedMoleField/AI +from toontown.coghq import DistributedCountryClubBattle/AI +from toontown.building import DistributedClubElevator/AI +from toontown.coghq import DistributedMaze/AI +from toontown.battle import DistributedBattleWaiters/AI +from toontown.coghq import DistributedFoodBelt/AI +from toontown.coghq import DistributedBanquetTable/AI +from toontown.battle import DistributedBattleDiners/AI +from toontown.coghq import DistributedGolfSpot/AI +from toontown.minigame import DistributedIceGame/AI +from toontown.minigame import DistributedCogThiefGame/AI +from toontown.minigame import DistributedTwoDGame/AI +from toontown.safezone import DistributedChineseCheckers/AI +from toontown.safezone import DistributedCheckers/AI +from toontown.safezone import DistributedFindFour/AI +from toontown.uberdog.DistributedMailManager/AI/UD import DistributedMailManager/AI/UD +from toontown.uberdog.DistributedPartyManager/AI/UD import DistributedPartyManager/AI/UD +from toontown.rpc.AwardManager/UD import AwardManager/UD +from toontown.uberdog.DistributedCpuInfoMgr/AI/UD import DistributedCpuInfoMgr/AI/UD +from toontown.uberdog.DistributedInGameNewsMgr/AI/UD import DistributedInGameNewsMgr/AI/UD +from toontown.coderedemption.TTCodeRedemptionMgr/AI import TTCodeRedemptionMgr/AI +from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI +from toontown.distributed.NonRepeatableRandomSourceUD import NonRepeatableRandomSourceUD +from toontown.ai.DistributedPhaseEventMgr/AI import DistributedPhaseEventMgr/AI +from toontown.ai.DistributedHydrantZeroMgr/AI import DistributedHydrantZeroMgr/AI +from toontown.ai.DistributedMailboxZeroMgr/AI import DistributedMailboxZeroMgr/AI +from toontown.ai.DistributedTrashcanZeroMgr/AI import DistributedTrashcanZeroMgr/AI +from toontown.ai import DistributedSillyMeterMgr/AI +from toontown.cogdominium import DistributedCogdoInterior/AI +from toontown.cogdominium import DistributedCogdoBattleBldg/AI +from toontown.cogdominium import DistributedCogdoElevatorExt/AI +from toontown.cogdominium import DistributedCogdoElevatorInt/AI +from toontown.cogdominium import DistributedCogdoBarrel/AI +from toontown.cogdominium import DistCogdoGame/AI +from toontown.cogdominium import DistCogdoLevelGame/AI +from toontown.cogdominium import DistCogdoBoardroomGame/AI +from toontown.cogdominium import DistCogdoCraneGame/AI +from toontown.cogdominium import DistCogdoMazeGame/AI +from toontown.cogdominium import DistCogdoFlyingGame/AI +from toontown.cogdominium import DistCogdoCrane/AI +from toontown.cogdominium import DistCogdoCraneMoneyBag/AI +from toontown.cogdominium import DistCogdoCraneCog/AI +from toontown.parties.GlobalPartyManager/AI/UD import GlobalPartyManager/AI/UD + +struct GiftItem { + blob Item; + string giftTag; +}; + +struct gardenSpecial { + uint8 index; + uint8 count; +}; + +struct simpleMail { + uint64 msgId; + uint32 senderId; + uint16 year; + uint8 month; + uint8 day; + string body; +}; + +struct invite { + uint64 inviteKey; + uint64 partyId; + uint8 status; +}; + +struct decoration { + uint8 decorId; + uint8 x; + uint8 y; + uint8 h; +}; + +struct activity { + uint8 activityId; + uint8 x; + uint8 y; + uint8 h; +}; + +struct party { + uint64 partyId; + uint32 hostId; + uint16 startYear; + uint8 startMonth; + uint8 startDay; + uint8 startHour; + uint8 startMinute; + uint16 endYear; + uint8 endMonth; + uint8 endDay; + uint8 endHour; + uint8 endMinute; + uint8 isPrivate; + uint8 inviteTheme; + activity activities[]; + decoration decors[]; + uint8 status; +}; + +struct partyReply { + uint32 inviteeId; + uint8 status; +}; + +struct repliesForOneParty { + uint64 partyId; + partyReply partyReplies[]; +}; + +struct publicPartyInfo { + uint32 shardId; + uint32 zoneId; + uint8 numberOfGuests; + string hostName; + uint8[] activityIds; + uint16 minLeft; +}; + +struct jukeboxSongInfo { + uint8/10 phase; + string fileName; +}; + +struct partyCloudColor { + uint16 cloudNumber; + uint8/100 r; + uint8/100 g; + uint8/100 b; +}; + +struct datetime { + uint16 year; + uint8 month; + uint8 day; + uint8 hour; + uint8 minutes; + uint8 seconds; +}; + +dclass ToontownDistrict : DistributedDistrict { + setParentingRules(string, string) broadcast ram; + allowAHNNLog(bool) broadcast required ram; +}; + +dclass ToontownDistrictStats : DistributedObject { + settoontownDistrictId(uint32) broadcast required ram; + setAvatarCount(uint32) broadcast required ram; + setNewAvatarCount(uint32) broadcast required ram; + setInvasionStatus(uint8) broadcast required ram; + setStats : setAvatarCount, setNewAvatarCount; +}; + +dclass WelcomeValleyManager : DistributedObject { + clientSetZone(uint32) airecv clsend; + requestZoneIdMessage(uint32, uint16) airecv clsend; + requestZoneIdResponse(uint32, uint16); +}; + +dclass DistributedAnimatedProp : DistributedObject { + setPropId(uint16) required broadcast ram; + setAvatarInteract(uint32) required broadcast ram; + requestInteract() airecv clsend; + rejectInteract(); + requestExit() airecv clsend; + avatarExit(uint32) broadcast; + setState(string, int16) required broadcast ram; +}; + +typedef int16 pair16[2]; + +dclass DistributedToon : DistributedPlayer { + setDNAString(blob) required broadcast ownrecv db; + setGM(uint16 = 0) required broadcast ownrecv db; + setMoney(int16 = 0) required ownrecv db; + setBankMoney(int32 = 0) required ownrecv; + setMaxHp(int16 = 15) required broadcast ownrecv db; + setHp(int16 = 15) required broadcast ownrecv db; + toonUp(uint16) broadcast ownrecv; + takeDamage(uint16) broadcast ownrecv; + setBattleId(uint32 = 0) required broadcast ram; + setExperience(blob = [0*14]) required broadcast db; + setMaxCarry(uint8 = 20) required ownrecv db; + setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db; + setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db; + setTrackBonusLevel(int8[] = [-1,-1,-1,-1,-1,-1,-1]) required broadcast ownrecv db; + setInventory(blob = [0*7, 0*7, 0*7, 0*7, 1, 0*6, 1, 0*6, 0*7]) required ownrecv db; + setMaxNPCFriends(uint16 = 16) required ownrecv db; + setNPCFriendsDict(FriendEntry[] = []) required ownrecv db; + setDefaultShard(uint32 = 0) required ownrecv broadcast db; + setDefaultZone(uint32 = 0) required ownrecv broadcast db; + setShtickerBook(blob = []) required ownrecv db; + setZonesVisited(uint32[] = [ 2000 ]) required ownrecv db; + setHoodsVisited(uint32[] = [ 2000 ]) required ownrecv db; + setInterface(blob = []) required ownrecv db; + setLastHood(uint32 = 0) required ownrecv broadcast db; + setTutorialAck(uint8) required ownrecv db; + setMaxClothes(uint32 = 10) required ownrecv db; + setClothesTopsList(uint8[] = []) required ownrecv db; + setClothesBottomsList(uint8[] = []) required ownrecv db; + setMaxAccessories(uint32 = 0) required ownrecv db; + setHatList(uint8[] = []) required ownrecv db; + setGlassesList(uint8[] = []) required ownrecv db; + setBackpackList(uint8[] = []) required ownrecv db; + setShoesList(uint8[] = []) required ownrecv db; + setHat(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; + setGlasses(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; + setBackpack(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; + setShoes(uint8 = 0, uint8 = 0, uint8 = 0) required broadcast db ownrecv; + setGardenSpecials(gardenSpecial [] = []) required ownrecv db airecv; + setEarnedExperience(uint16[]) ownrecv; + setTunnelIn(int16, int16/10, int16/10, int16/10, int16/100, int32/100) ownsend broadcast; + setTunnelOut(int16, int16/10, int16/10, int16/10, int16/10, int16/100, int32/100) ownsend broadcast; + setAnimState(char [0-1024], int16/1000, int16) broadcast ram ownsend airecv; + setEmoteState(int16, int16/1000, int16) broadcast ram ownsend; + setEmoteAccess(uint8[] = [1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) required ownrecv db; + setCustomMessages(uint16[] = []) required ownrecv db; + setSleepAutoReply(uint32) broadcast clsend ownrecv; + setResistanceMessages(pair16 [] = []) required ownrecv db; + setPetTrickPhrases(uint8[] = [0]) required ownrecv db; + setCatalogSchedule(uint16 = 0, uint32 = 0) required ownrecv db; + setCatalog(blob = [], blob = [], blob = []) required ownrecv db; + setMailboxContents(blob = []) required ownrecv db; + setDeliverySchedule(blob = []) required ownrecv db airecv; + setGiftSchedule(blob = []) required ownrecv db airecv; + setAwardMailboxContents(blob = []) required ownrecv db; + setAwardSchedule(blob = []) required ownrecv db airecv; + setAwardNotify(uint8 = 0) required ownrecv db; + setCatalogNotify(uint8 = 0, uint8 = 0) required ownrecv db; + playSplashEffect(int16/10, int16/10, int16/10) broadcast ownsend; + setWhisperSCToontaskFrom(uint32, uint32, uint32, uint32, uint8) ownrecv clsend; + setSCToontask(uint32, uint32, uint32, uint8) broadcast ownsend; + reqSCResistance(uint16, uint32 []) ownsend airecv; + setSCResistance(uint16, uint32 []) broadcast ownrecv; + setSpeedChatStyleIndex(uint8 = 1) required ownsend broadcast db; + setTrophyScore(uint16) broadcast ownrecv ram; + setTeleportAccess(uint32[] = []) required ownrecv db; + setScavengerHunt(uint32[] = []) required ownrecv db; + checkTeleportAccess(uint16) airecv ownsend; + setTeleportOverride(uint8) clsend airecv; + battleSOS(uint32) ownrecv clsend; + teleportQuery(uint32) ownrecv clsend; + teleportResponse(uint32, int8, uint32, uint32, uint32) ownrecv clsend; + teleportResponseToAI(uint32, int8, uint32, uint32, uint32, uint32) ownsend airecv; + teleportGiveup(uint32) ownrecv clsend; + teleportGreeting(uint32) broadcast ownsend; + setCogStatus(uint32[] = [1 * 32]) required ownrecv db; + setCogCount(uint32[] = [0 * 32]) required ownrecv db; + setCogRadar(uint8[] = [0 * 4]) required ownrecv db; + setBuildingRadar(uint8[] = [0 * 4]) required ownrecv db; + setCogLevels(uint8[] = [0 * 4]) required broadcast ownrecv db; + setCogTypes(uint8[] = [0 * 4]) required broadcast ownrecv db; + setCogParts(uint32[] = [0 * 4]) required broadcast ownrecv db; + setCogMerits(uint16[] = [0 * 4]) required ownrecv db; + setPromotionStatus(uint8[] = [0 * 4]) required broadcast ownrecv db; + requestPromotion(uint8) ownsend airecv; + setCogIndex(int8) broadcast ram; + setDisguisePageFlag(int8) ownrecv; + setSosPageFlag(int8) ownrecv; + setHouseId(uint32 = 0) required ownrecv db; + setQuests(uint32[] = []) required broadcast ownrecv db; + setQuestHistory(uint16[] = []) required ownrecv db; + setRewardHistory(uint8 = 0, uint16[] = []) required ownrecv db; + setQuestCarryLimit(uint8 = 1) required ownrecv db; + requestDeleteQuest(uint32[]) ownsend airecv; + setCheesyEffect(int16 = 0, uint32 = 0, uint32 = 0) required broadcast ownrecv db; + setGhostMode(uint8) broadcast ownrecv ram; + setPosIndex(uint8 = 0) required ownrecv db; + setFishCollection(uint8[] = [], uint8[] = [], uint16[] = []) required ownrecv db; + setMaxFishTank(uint8 = 20) required ownrecv db; + setFishTank(uint8[] = [], uint8[] = [], uint16[] = []) required ownrecv db; + setFishingRod(uint8 = 0) required broadcast ownrecv db; + setFishingTrophies(uint8[] = []) required ownrecv db; + setFlowerCollection(uint8[] = [], uint8[] = []) required ownrecv db; + setFlowerBasket(uint8[] = [], uint8[] = []) required ownrecv db; + setMaxFlowerBasket(uint8 = 20) required ownrecv db; + setGardenTrophies(uint8[] = []) required ownrecv db; + setShovel(uint8 = 0) required broadcast ownrecv db; + setShovelSkill(uint32 = 0) required ownrecv db; + setWateringCan(uint8 = 0) required broadcast ownrecv db; + setWateringCanSkill(uint32 = 0) required ownrecv db; + promoteShovel(uint8) ownrecv; + promoteWateringCan(uint8) ownrecv; + reactivateWater() ownrecv; + presentPie(int16/10 x, int16/10 y, int16/10 z, int16/10 h, int32 timestamp) broadcast ownsend; + tossPie(int16/10 x, int16/10 y, int16/10 z, int16/10 h, uint8 sequence, uint8 power, uint8 throwType, int32 timestamp) broadcast ownsend; + pieSplat(int16/10, int16/10, int16/10, uint8, uint8, int32) broadcast ownsend; + setPieType(uint8) broadcast ownrecv ram; + setNumPies(uint16) broadcast ownrecv ram; + catalogGenClothes(uint32) broadcast ownrecv; + catalogGenAccessories(uint32) broadcast ownrecv; + setPetId(uint32 = 0) required broadcast ownrecv db; + setPetMovie(uint32, uint8) ownsend airecv; + setPetTutorialDone(uint8 = 0) required ownsend airecv db; + setFishBingoTutorialDone(uint8 = 0) required ownsend airecv db; + setFishBingoMarkTutorialDone(uint8 = 0) required ownsend airecv db; + setKartBodyType(int8 = -1) required broadcast ownrecv db; + setKartBodyColor(int8 = -1) required broadcast ownrecv db; + setKartAccessoryColor(int8 = -1) required broadcast ownrecv db; + setKartEngineBlockType(int8 = -1) required broadcast ownrecv db; + setKartSpoilerType(int8 = -1) required broadcast ownrecv db; + setKartFrontWheelWellType(int8 = -1) required broadcast ownrecv db; + setKartBackWheelWellType(int8 = -1) required broadcast ownrecv db; + setKartRimType(int8 = -1) required broadcast ownrecv db; + setKartDecalType(int8 = -1) required broadcast ownrecv db; + updateKartDNAField(int8, int8) ownsend airecv; + addOwnedAccessory(int8) ownsend airecv; + removeOwnedAccessory(int8) ownsend airecv; + setTickets(uint32 = 200) required broadcast ownrecv db; + setKartingHistory(uint8 [16] = [0*16]) required ownrecv db; + setKartingTrophies(uint8 [33] = [0*33]) required ownrecv db; + setKartingPersonalBest(uint32/1000 [6] = [0*6]) required ownrecv db; + setKartingPersonalBest2(uint32/1000 [12] = [0*12]) required ownrecv db; + setKartAccessoriesOwned(int8 [16] = [-1*16]) required broadcast ownrecv db; + setCurrentKart(uint32) broadcast ownrecv ram; + squish(uint8) ownsend airecv; + announceBingo() broadcast ownrecv; + trickOrTreatTargetMet(uint32) ownrecv; + trickOrTreatMilestoneMet() ownrecv; + winterCarolingTargetMet(uint32) ownrecv; + setCogSummonsEarned(uint8[] = [0*32]) required ownrecv db; + reqCogSummons(char [0-256], uint32) ownsend airecv; + cogSummonsResponse(string, uint32, uint32) ownrecv; + reqUseSpecial(int32) ownsend airecv; + useSpecialResponse(string) ownrecv; + setGardenStarted(uint8 = 0) required ownrecv db; + sendToGolfCourse(uint32) ownrecv; + setGolfHistory(uint16 [18] = [0*18]) required ownrecv db; + setPackedGolfHoleBest(uint8 [18] = [0*18]) required ownrecv db; + setGolfCourseBest(uint8 [3] = [0*3]) required ownrecv db; + setUnlimitedSwing(uint8) broadcast ownrecv ram; + logSuspiciousEvent(char [0-1024]) ownsend airecv; + logMessage(char [0-1024]) ownsend airecv; + forceLogoutWithNotify() ownrecv; + setPinkSlips(uint8 = 0) required ownrecv db; + setNametagStyle(uint8 = 0) required broadcast ownrecv db; + setMail(simpleMail []) ownrecv; + setNumMailItems(uint32) airecv; + setSimpleMailNotify(uint8) ownrecv airecv; + setInvites(invite []) ownrecv airecv ram; + setPartiesInvitedTo(party []) ownrecv airecv ram; + setHostedParties(party []) ownrecv airecv ram; + setPartyReplies(repliesForOneParty []) ownrecv airecv ram; + updateInvite(uint64, uint8) ownrecv airecv; + updateReply(uint64, uint64, uint8) ownrecv airecv; + setPartyCanStart(uint64) ownrecv airecv; + setPartyStatus(uint64, uint8) ownrecv airecv; + announcePartyStarted(uint64) ownrecv; + setAchievements(uint16[] = []) required broadcast ownrecv db; + setNeverStartedPartyRefunded(uint64, int8, uint16) ownrecv; + setModuleInfo(string []) airecv clsend; + setDISLname(string) ram; + setDISLid(uint32) ram db airecv; + flagAv(uint32, uint16, string []) airecv ownsend; + setAnimalSound(uint8 index) ram broadcast ownrecv; + setBuffs(uint32[] = []) required ownrecv db; + setRedeemedCodes(string [] = []) required ownrecv db; +}; + +dclass DistributedCCharBase : DistributedObject { + setChat(uint32, uint32, uint32) broadcast; + fadeAway() broadcast; + setWalk(string, string, int16) required broadcast ram; + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + setNearbyAvatarChat(char [0-1024]) airecv clsend; + setNearbyAvatarSC(uint16) airecv clsend; + setNearbyAvatarSCCustom(uint16) airecv clsend; + setNearbyAvatarSCToontask(uint32, uint32, uint32, uint8) airecv clsend; +}; + +dclass DistributedMickey : DistributedCCharBase { +}; + +dclass DistributedVampireMickey : DistributedMickey { +}; + +dclass DistributedWitchMinnie : DistributedMickey { +}; + +dclass DistributedMinnie : DistributedCCharBase { +}; + +dclass DistributedGoofy : DistributedCCharBase { +}; + +dclass DistributedDaisy : DistributedCCharBase { +}; + +dclass DistributedSockHopDaisy : DistributedDaisy { +}; + +dclass DistributedChip : DistributedCCharBase { +}; + +dclass DistributedPoliceChip : DistributedChip { +}; + +dclass DistributedDale : DistributedCCharBase { + setFollowChip(string, string, int16, int16/100, int16/100) broadcast ram; + setChipId(uint32) required broadcast ram; +}; + +dclass DistributedJailbirdDale : DistributedDale { +}; + +dclass DistributedDonald : DistributedCCharBase { +}; + +dclass DistributedFrankenDonald : DistributedDonald { +}; + +dclass DistributedDonaldDock : DistributedCCharBase { +}; + +dclass DistributedPluto : DistributedCCharBase { +}; + +dclass DistributedWesternPluto : DistributedPluto { +}; + +dclass DistributedGoofySpeedway : DistributedCCharBase { +}; + +dclass DistributedSuperGoofy : DistributedGoofySpeedway { +}; + +dclass DistributedPartyGate : DistributedObject { + getPartyList(uint32) airecv clsend; + partyChoiceRequest(uint32, uint64, uint64) airecv clsend; + listAllPublicParties(publicPartyInfo []); + partyRequestDenied(uint8); + setParty(publicPartyInfo, uint32 hostId); +}; + +dclass DistributedTrolley : DistributedObject { + setState(string, int16) broadcast ram; + fillSlot0(uint32) broadcast ram; + fillSlot1(uint32) broadcast ram; + fillSlot2(uint32) broadcast ram; + fillSlot3(uint32) broadcast ram; + emptySlot0(uint32, int16) broadcast ram; + emptySlot1(uint32, int16) broadcast ram; + emptySlot2(uint32, int16) broadcast ram; + emptySlot3(uint32, int16) broadcast ram; + requestBoard() airecv clsend; + rejectBoard(uint32); + requestExit() airecv clsend; + setMinigameZone(uint32, uint16); +}; + +dclass DistributedSuitPlanner : DistributedObject { + setZoneId(uint32) required broadcast ram; + suitListQuery() airecv clsend; + suitListResponse(uint8[]); + buildingListQuery() airecv clsend; + buildingListResponse(uint8[]); +}; + +dclass DistributedSuitBase : DistributedObject { + denyBattle(); + setDNAString(blob) required broadcast ram; + setLevelDist(int16) required broadcast ram; + setBrushOff(int16) broadcast; + setWaiter(uint8) broadcast ram; + setSkelecog(uint8) required broadcast ram; + setSkeleRevives(uint8) required broadcast ram; + setHP(int16) required broadcast ram; +}; + +dclass DistributedSuit : DistributedSuitBase { + requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; + setSPDoId(uint32) required broadcast ram; + setPathEndpoints(uint16, uint16, uint16, uint16) required broadcast ram; + setPathPosition(uint16, int16) required broadcast ram; + setPathState(int8) required broadcast ram; + debugSuitPosition(int16/10, int16, int16/10, int16/10, int16) broadcast; +}; + +dclass DistributedTutorialSuit : DistributedSuitBase { + requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; +}; + +dclass DistributedFactorySuit : DistributedSuitBase { + setLevelDoId(uint32) required broadcast ram; + setCogId(uint32) required broadcast ram; + setReserve(uint8) required broadcast ram; + requestBattle(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) airecv clsend; + setAlert(uint32) airecv clsend; + setConfrontToon(uint32) broadcast; + setStrayed() airecv clsend; + setReturn() broadcast; +}; + +dclass DistributedMintSuit : DistributedFactorySuit { +}; + +dclass DistributedStageSuit : DistributedFactorySuit { +}; + +dclass DistributedBossCog : DistributedNode { + setDNAString(blob) required broadcast db; + setToonIds(uint32[], uint32[], uint32[]) broadcast ram; + setBattleIds(uint8, uint32, uint32) broadcast ram; + setArenaSide(uint8) broadcast ram; + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + avatarNearEnter() airecv clsend; + avatarNearExit() airecv clsend; + toonDied(uint32) broadcast; + setBattleExperience(int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], uint8[], int16[], uint32[]) required broadcast ram; + zapToon(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10, int8/100, int8/100, uint8, int16) airecv clsend; + showZapToon(uint32, int16/10, int16/10, int16/10, int16/10, int16/10, int16/10, uint8, int16) broadcast; + setAttackCode(uint8, uint32) broadcast; +}; + +dclass DistributedSellbotBoss : DistributedBossCog { + setCagedToonNpcId(uint32) required broadcast ram; + setDooberIds(uint32[]) broadcast ram; + setBossDamage(uint16, uint8, int16) broadcast ram; + setState(string) broadcast ram; + hitBoss(uint8) airecv clsend; + hitBossInsides() airecv clsend; + hitToon(uint32) airecv clsend; + finalPieSplat() airecv clsend; + touchCage() airecv clsend; + doStrafe(uint8, uint8) broadcast; + cagedToonBattleThree(uint16, uint32) broadcast; + toonPromoted(uint8(0-1)); +}; + +dclass DistributedCashbotBoss : DistributedBossCog { + setState(string) broadcast ram; + setBossDamage(uint16) broadcast ram; + setRewardId(uint16) broadcast ram; + applyReward() airecv clsend; +}; + +struct LinkPosition { + int16/100 x; + int16/100 y; + int16/100 z; +}; + +dclass DistributedCashbotBossCrane : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setIndex(uint8) required broadcast ram; + setState(char, uint32) broadcast ram; + requestControl() airecv clsend; + requestFree() airecv clsend; + clearSmoothing(int8) broadcast clsend; + setCablePos(uint8, int16/100, uint16%360/100, LinkPosition [3], int16) broadcast clsend; +}; + +dclass DistributedCashbotBossObject : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setObjectState(char, uint32, uint32) broadcast ram; + requestGrab() airecv clsend; + rejectGrab(); + requestDrop() airecv clsend; + hitFloor() clsend; + requestFree(int16/10, int16/10, int16/10, uint16%360/100) airecv clsend; + hitBoss(uint16/255) airecv clsend; + setX(int16/10) broadcast ram clsend airecv; + setY(int16/10) broadcast ram clsend airecv; + setZ(int16/10) broadcast ram clsend airecv; + setH(int16%360/10) broadcast ram clsend airecv; + setP(int16%360/10) broadcast ram clsend airecv; + setR(int16%360/10) broadcast ram clsend airecv; + setPos : setX, setY, setZ; + setHpr : setH, setP, setR; + setPosHpr : setX, setY, setZ, setH, setP, setR; + setXY : setX, setY; + setXZ : setX, setZ; + setXYH : setX, setY, setH; + setXYZH : setX, setY, setZ, setH; + setComponentL(uint64) broadcast ram clsend airecv; + setComponentX(int16/10) broadcast ram clsend airecv; + setComponentY(int16/10) broadcast ram clsend airecv; + setComponentZ(int16/10) broadcast ram clsend airecv; + setComponentH(int16%360/10) broadcast ram clsend airecv; + setComponentP(int16%360/10) broadcast ram clsend airecv; + setComponentR(int16%360/10) broadcast ram clsend airecv; + setComponentT(int16) broadcast ram clsend airecv; + setSmStop : setComponentT; + setSmH : setComponentH, setComponentT; + setSmZ : setComponentZ, setComponentT; + setSmXY : setComponentX, setComponentY, setComponentT; + setSmXZ : setComponentX, setComponentZ, setComponentT; + setSmPos : setComponentX, setComponentY, setComponentZ, setComponentT; + setSmHpr : setComponentH, setComponentP, setComponentR, setComponentT; + setSmXYH : setComponentX, setComponentY, setComponentH, setComponentT; + setSmXYZH : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentT; + setSmPosHpr : setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; + setSmPosHprL : setComponentL, setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT; + clearSmoothing(int8) broadcast clsend; +}; + +dclass DistributedCashbotBossSafe : DistributedCashbotBossObject { + setIndex(uint8) required broadcast ram; + requestInitial() airecv clsend; +}; + +dclass DistributedCashbotBossGoon : DistributedCashbotBossObject { + requestBattle(int16/10) airecv clsend; + requestStunned(int16/10) airecv clsend; + setVelocity(uint8/10) broadcast ram; + setHFov(uint8) broadcast ram; + setAttackRadius(uint8) broadcast ram; + setStrength(uint8) broadcast ram; + setGoonScale(uint8/50) broadcast ram; + setupGoon : setVelocity, setHFov, setAttackRadius, setStrength, setGoonScale; + setTarget(int16/10, int16/10, uint16%360/100, int16) broadcast ram; + destroyGoon() broadcast clsend airecv; +}; + +dclass DistributedBattleBase : DistributedObject { + setLevelDoId(uint32) required broadcast ram; + setBattleCellId(uint32) required broadcast ram; + setInteractivePropTrackBonus(int8) required broadcast ram; + setPosition(int16/10, int16/10, int16/10) required broadcast ram; + setZoneId(uint32) required broadcast ram; + setInitialSuitPos(int16/10, int16/10, int16/10) required broadcast ram; + setMembers(uint32[], string, string, string, string, string, uint32[], string, string, string, string, int16) required broadcast ram; + adjust(int16) broadcast; + setMovie(int8, uint32[], uint32[], int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int32, int16[], int16, int16, int16[], int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8, int8, int8, int8, int16[], int8, int8, int8) required broadcast ram; + setChosenToonAttacks(uint32[], int16[], int16[], int32[]) broadcast ram; + setBattleExperience(int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], int32, int16[], int16[], uint32[], int16[], int16[], int16[], int16[], uint32[], uint8[], int16[], uint32[]) required broadcast ram; + denyLocalToonJoin(); + setBossBattle(uint8) required broadcast ram; + setState(string, int16) required broadcast ram; + faceOffDone() airecv clsend; + toonRequestJoin(int16/10, int16/10, int16/10) airecv clsend; + toonRequestRun() airecv clsend; + toonDied() airecv clsend; + adjustDone() airecv clsend; + timeout() airecv clsend; + movieDone() airecv clsend; + rewardDone() airecv clsend; + joinDone(uint32) airecv clsend; + requestAttack(int8, int8, int32) airecv clsend; + requestPetProxy(uint32) airecv clsend; +}; + +dclass DistributedBattle : DistributedBattleBase { +}; + +dclass DistributedBattleBldg : DistributedBattleBase { +}; + +dclass DistributedBattleTutorial : DistributedBattle { +}; + +dclass DistributedLevelBattle : DistributedBattle { +}; + +dclass DistributedBattleFactory : DistributedLevelBattle { +}; + +dclass DistributedMintBattle : DistributedLevelBattle { +}; + +dclass DistributedStageBattle : DistributedLevelBattle { +}; + +dclass DistributedBattleFinal : DistributedBattleBase { + setBossCogId(uint32) required broadcast ram; + setBattleNumber(uint8) required broadcast ram; + setBattleSide(uint8) required broadcast ram; +}; + +dclass DistributedBoat : DistributedObject { + setState(string, int16) required broadcast ram; +}; + +dclass DistributedButterfly : DistributedObject { + setArea(int16, int16) required broadcast ram; + setState(int8, uint8, uint8, uint16/10, int16) required broadcast ram; + avatarEnter() airecv clsend; +}; + +dclass DistributedMMPiano : DistributedObject { + requestSpeedUp() airecv clsend; + requestChangeDirection() airecv clsend; + setSpeed(int16/1000, uint16/100, int16) broadcast ram; + playSpeedUp(uint32) broadcast; + playChangeDirection(uint32) broadcast; +}; + +dclass DistributedDGFlower : DistributedObject { + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + setHeight(uint8/10) broadcast ram; +}; + +dclass DistributedFishingPond : DistributedObject { + hitTarget(uint32) airecv clsend; + setArea(uint32) required broadcast ram; +}; + +dclass DistributedFishingTarget : DistributedNode { + setPondDoId(uint32) required broadcast ram; + setState(uint8, int16/10, uint16/100, uint16/10, int16) required broadcast ram; +}; + +dclass DistributedFishingSpot : DistributedObject { + setPondDoId(uint32) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + requestEnter() airecv clsend; + rejectEnter(); + requestExit() airecv clsend; + setOccupied(uint32) broadcast ram; + doCast(uint8/255, int16/100) airecv clsend; + sellFish() airecv clsend; + sellFishComplete(uint8, uint16); + setMovie(uint8, uint8, uint16, uint16, uint16, uint8/100, int16/100) broadcast ram; +}; + +dclass DistributedPondBingoManager : DistributedObject { + setPondDoId(uint32) required broadcast ram; + updateGameState(uint32, uint8); + setCardState(uint16, uint8, uint16, uint32); + setState(string, int16); + cardUpdate(uint16, uint8, uint8, uint8) airecv clsend; + enableBingo(); + handleBingoCall(uint16) airecv clsend; + setJackpot(uint16); +}; + +dclass DistributedCannon : DistributedObject { + setEstateId(uint32) required broadcast ram; + setTargetId(uint32) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setActive(uint8) airecv clsend; + setActiveState(uint8) broadcast ram; + requestEnter() airecv clsend; + requestExit() broadcast; + setMovie(uint8, uint32) broadcast ram; + setCannonPosition(int32/100, uint32/100) airecv clsend; + setCannonLit(int32/100, uint32/100) airecv clsend; + setFired() airecv clsend; + setLanded() airecv clsend; + updateCannonPosition(uint32, int32/100, uint32/100) broadcast ram; + setCannonWillFire(uint32, int32/100, int32/100, uint32/100, int16) broadcast; + setCannonExit(uint32) broadcast; + requestBumperMove(int32/100, int32/100, int32/100) airecv clsend; + setCannonBumperPos(int32/100, int32/100, int32/100) required broadcast ram; +}; + +dclass DistributedTarget : DistributedObject { + setPosition(int16/10, int16/10, int16/10) required broadcast ram; + setState(uint8, uint32/10, uint8) broadcast; + setReward(uint32) broadcast; + setResult(uint32) airecv clsend; + setBonus(int16/10) airecv clsend; + setCurPinballScore(uint32, int32, int32) clsend airecv; + setPinballHiScorer(string) broadcast ram; + setPinballHiScore(int32) broadcast ram; +}; + +dclass DistributedMinigame : DistributedObject { + setParticipants(uint32[]) broadcast ram required; + setTrolleyZone(uint32) broadcast ram required; + setStartingVotes(uint16[]) broadcast ram required; + setMetagameRound(int8) broadcast ram required; + setDifficultyOverrides(int32, int32) broadcast ram required; + setAvatarJoined() airecv clsend; + setAvatarReady() airecv clsend; + setAvatarExited() airecv clsend; + requestExit() airecv clsend; + setGameReady() broadcast; + setGameStart(int16) broadcast; + setGameExit() broadcast; + setGameAbort() broadcast; +}; + +dclass DistributedMinigameTemplate : DistributedMinigame { +}; + +dclass DistributedRaceGame : DistributedMinigame { + setTimerStartTime(int16) broadcast; + setAvatarChoice(uint8) airecv clsend; + setAvatarChose(uint32) broadcast; + setChancePositions(uint8[]) broadcast; + setServerChoices(int8[], uint8[], int8[]) broadcast; +}; + +dclass DistributedCannonGame : DistributedMinigame { + setCannonPosition(int32/100, uint32/100) airecv clsend; + setCannonLit(int32/100, uint32/100) airecv clsend; + updateCannonPosition(uint32, int32/100, uint32/100) broadcast; + setCannonWillFire(uint32, int32/100, int32/100, uint32/100) broadcast; + setToonWillLandInWater(int32/100) airecv clsend; + announceToonWillLandInWater(uint32, int32/100) broadcast; +}; + +dclass DistributedPhotoGame : DistributedMinigame { + newClientPhotoScore(uint8, char [0-256], uint32/100) airecv clsend; + newAIPhotoScore(uint32, uint8, uint32/100) broadcast; + filmOut() airecv clsend; +}; + +dclass DistributedPatternGame : DistributedMinigame { + reportPlayerReady() airecv clsend; + setPattern(uint8[]) broadcast; + reportPlayerPattern(uint8[], uint16/1000) airecv clsend; + setPlayerPatterns(uint8[], uint8[], uint8[], uint8[], uint32) broadcast; + reportButtonPress(uint8, uint8) airecv clsend; + remoteButtonPressed(uint32, uint8, uint8) broadcast; +}; + +dclass DistributedRingGame : DistributedMinigame { + setTimeBase(int16) broadcast ram required; + setColorIndices(int8, int8, int8, int8) broadcast ram required; + setToonGotRing(uint8) airecv clsend; + setRingGroupResults(uint8) broadcast; +}; + +dclass DistributedTagGame : DistributedMinigame { + tag(uint32) airecv clsend; + setIt(uint32) broadcast; + setTreasureScore(uint16[]) broadcast; +}; + +dclass DistributedMazeGame : DistributedMinigame { + claimTreasure(uint32) airecv clsend; + setTreasureGrabbed(uint32, uint32) broadcast; + allTreasuresTaken() broadcast; + hitBySuit(uint32, int16) clsend broadcast; +}; + +dclass DistributedTugOfWarGame : DistributedMinigame { + reportPlayerReady(uint8) airecv clsend; + sendGoSignal(uint8[]) broadcast; + sendStopSignal(uint32[], uint32[], uint32[]) broadcast; + sendGameType(uint8, uint8) broadcast; + reportEndOfContest(uint8) airecv clsend; + sendNewAvIdList(uint32[]) airecv clsend; + reportCurrentKeyRate(uint32, int16/100) airecv clsend; + sendCurrentPosition(uint32[], int16/1000[]) broadcast; + sendSuitPosition(int32/1000) broadcast; + remoteKeyRateUpdate(uint32, uint32) broadcast; +}; + +dclass DistributedCatchGame : DistributedMinigame { + claimCatch(uint32, uint32) airecv clsend; + setObjectCaught(uint32, uint32) broadcast; + hitBySuit(uint32, int16) clsend broadcast; + reportDone() airecv clsend; + setEveryoneDone() broadcast; +}; + +dclass DistributedDivingGame : DistributedMinigame { + pickupTreasure(uint32) airecv clsend; + setTreasureGrabbed(uint32, uint32) broadcast; + handleFishCollision(uint32, uint32, uint32, char [0-256]) airecv clsend; + performFishCollision(uint32, uint32, uint32, int16) broadcast; + handleCrabCollision(uint32, char [0-256]) airecv clsend; + performCrabCollision(uint32, int16) broadcast; + setTreasureDropped(uint32, int16) broadcast; + fishSpawn(int16, uint32, uint32, uint16) broadcast; + removeFish(uint32) airecv clsend; + getCrabMoving(uint32, int16, int8) airecv clsend; + setCrabMoving(uint32, int16, int8, int8, int16, int8) broadcast; + treasureRecovered() airecv clsend; + incrementScore(uint32, uint32, int16) broadcast; +}; + +dclass DistributedTargetGame : DistributedMinigame { + setTimeBase(int16) broadcast ram required; + setToonGotRing(uint8) airecv clsend; + setRingGroupResults(uint8) broadcast; + setPlayerDone() airecv clsend; + setScore(int32, int32) airecv clsend; + setTargetSeed(uint32) broadcast ram; + setRoundDone() broadcast; + setSingleScore(uint16, uint32) broadcast; + setGameDone() broadcast; +}; + +dclass EstateManager : DistributedObject { + startAprilFools() broadcast; + stopAprilFools() broadcast; + getEstateZone(uint32 avId) airecv clsend; + setEstateZone(uint32 ownerId, uint32 zoneId); + setAvHouseId(uint32, uint32[]) broadcast; + sendAvToPlayground(DoId avId, uint8 reason); + exitEstate() airecv clsend; + removeFriend(uint32, uint32) airecv clsend; +}; + +struct decorItem { + uint8 decorType; + uint8 dataByte[]; + uint32 dataWord[]; +}; + +struct lawnItem { + uint8 type; + uint8 hardPoint; + int8 waterLevel; + int8 growthLevel; + uint16 optional; +}; + +dclass DistributedEstate : DistributedObject { + string DcObjectType db; + setEstateReady() broadcast; + setClientReady() airecv clsend; + setEstateType(uint8 type = 0) required broadcast db; + setClosestHouse(uint8) airecv clsend; + setTreasureIds(uint32[]) broadcast ram; + requestServerTime() airecv clsend; + setServerTime(uint32); + setDawnTime(uint32) required broadcast ram; + placeOnGround(uint32) broadcast ram; + setDecorData(lawnItem items[] = []) required airecv db; + setLastEpochTimeStamp(uint32 timestamp = 0) required airecv db; + setRentalTimeStamp(uint32 timestamp = 0) required airecv db; + setRentalType(uint8 type = 0) required airecv db; + setSlot0ToonId(uint32 toonId = 0) required airecv db; + setSlot0Items(lawnItem items[] = []) required airecv db; + setSlot1ToonId(uint32 toonId = 0) required airecv db; + setSlot1Items(lawnItem items[] = []) required airecv db; + setSlot2ToonId(uint32 toonId = 0) required airecv db; + setSlot2Items(lawnItem items[] = []) required airecv db; + setSlot3ToonId(uint32 toonId = 0) required airecv db; + setSlot3Items(lawnItem items[] = []) required airecv db; + setSlot4ToonId(uint32 toonId = 0) required airecv db; + setSlot4Items(lawnItem items[] = []) required airecv db; + setSlot5ToonId(uint32 toonId = 0) required airecv db; + setSlot5Items(lawnItem items[] = []) required airecv db; + setIdList(uint32 []) broadcast ram; + completeFlowerSale(uint8) airecv clsend; + awardedTrophy(uint32) broadcast; + setClouds(uint8) required broadcast ram; + cannonsOver() broadcast; + gameTableOver() broadcast; +}; + +dclass DistributedHouse : DistributedObject { + string DcObjectType db; + setHousePos(uint8) required broadcast; + setHouseType(uint8 type = 0) required broadcast db; + setGardenPos(uint8 index = 0) required broadcast db; + setAvatarId(uint32 toonId = 0) required broadcast db; + setName(string toonName = "") required broadcast db; + setColor(uint8 colorIndex = 0) required broadcast db; + setAtticItems(blob = "") required db; + setInteriorItems(blob = "") required db; + setAtticWallpaper(blob = "") required db; + setInteriorWallpaper(blob = "") required db; + setAtticWindows(blob = "") required db; + setInteriorWindows(blob = "") required db; + setDeletedItems(blob = "") required db; + setInteriorInitialized(uint8 initialized = 0) required db; + setCannonEnabled(uint8) required; + setHouseReady() broadcast ram; +}; + +dclass DistributedHouseInterior : DistributedObject { + setHouseId(uint32) required broadcast ram; + setHouseIndex(uint8) required broadcast ram; + setWallpaper(blob) required broadcast ram; + setWindows(blob) required broadcast ram; +}; + +dclass DistributedGarden : DistributedObject { + sendNewProp(uint8, int16/10, int16/10, int16/10) broadcast; +}; + +dclass DistributedParty : DistributedObject { + setPartyClockInfo(uint8, uint8, uint8) required broadcast; + setInviteeIds(uint32[]) required broadcast; + setPartyState(bool) required broadcast; + setPartyInfoTuple(party) required broadcast; + setAvIdsAtParty(uint32 []) required broadcast; + setPartyStartedTime(string) required broadcast; + setHostName(string) required broadcast; + enteredParty() clsend airecv; +}; + +dclass DistributedPartyActivity : DistributedObject { + setX(int16/10) broadcast required; + setY(int16/10) broadcast required; + setH(uint16%360/100) broadcast required; + setPartyDoId(uint32) broadcast required; + toonJoinRequest() airecv clsend; + toonExitRequest() airecv clsend; + toonExitDemand() airecv clsend; + toonReady() airecv clsend; + joinRequestDenied(uint8); + exitRequestDenied(uint8); + setToonsPlaying(uint32 []) broadcast ram; + setState(string, int16) broadcast ram; + showJellybeanReward(uint32, uint32, string); +}; + +dclass DistributedPartyTeamActivity : DistributedPartyActivity { + toonJoinRequest(uint8(0-1)) airecv clsend; + toonExitRequest(uint8(0-1)) airecv clsend; + toonSwitchTeamRequest() airecv clsend; + setPlayersPerTeam(uint8, uint8) broadcast required; + setDuration(uint8) broadcast required; + setCanSwitchTeams(bool) broadcast required; + setState(string, int16, uint32) broadcast ram; + setToonsPlaying(uint32 [0-8], uint32 [0-8]) required broadcast ram; + setAdvantage(uint16/100); + switchTeamRequestDenied(uint8); +}; + +struct CatchGeneration { + uint32 generation; + uint32 timestamp; + int8 numPlayers; +}; + +dclass DistributedPartyCatchActivity : DistributedPartyActivity { + setStartTimestamp(uint32) required broadcast ram; + setGenerations(CatchGeneration []) required broadcast ram; + requestActivityStart() airecv clsend; + startRequestResponse(uint8); + claimCatch(uint32, uint32, uint32) airecv clsend; + setObjectCaught(uint32, uint32, uint32) broadcast; +}; + +dclass DistributedPartyWinterCatchActivity : DistributedPartyCatchActivity { +}; + +dclass DistributedPartyCogActivity : DistributedPartyTeamActivity { + pieThrow(uint32, int32, int32/100, int32/100, int32/100, int32/100, uint8) clsend broadcast; + pieHitsToon(uint32, int32, int32/100, int32/100, int32/100) clsend broadcast; + pieHitsCog(uint32, int32, int8(0-2), int32/100, int32/100, int32/100, int32, bool) clsend broadcast airecv; + setCogDistances(int8/100 [3]) broadcast ram; + setHighScore(string, uint16) broadcast ram; +}; + +dclass DistributedPartyWinterCogActivity : DistributedPartyCogActivity { +}; + +dclass DistributedPartyDanceActivityBase : DistributedPartyActivity { + updateDancingToon(uint8, char [0-256]) clsend airecv; + setToonsPlaying(uint32 [], uint16%360/100 []) broadcast ram; + setDancingToonState(uint32, uint8, string) broadcast; +}; + +dclass DistributedPartyDanceActivity : DistributedPartyDanceActivityBase { +}; + +dclass DistributedPartyDance20Activity : DistributedPartyDanceActivityBase { +}; + +dclass DistributedPartyValentineDanceActivity : DistributedPartyDanceActivityBase { +}; + +dclass DistributedPartyValentineDance20Activity : DistributedPartyDanceActivityBase { +}; + +dclass DistributedPartyJukeboxActivityBase : DistributedPartyActivity { + setNextSong(jukeboxSongInfo) clsend airecv; + setSongPlaying(jukeboxSongInfo, uint32) broadcast ram; + queuedSongsRequest() clsend airecv; + queuedSongsResponse(jukeboxSongInfo [], int16); + setSongInQueue(jukeboxSongInfo); + moveHostSongToTopRequest() clsend airecv; + moveHostSongToTop(); +}; + +dclass DistributedPartyJukeboxActivity : DistributedPartyJukeboxActivityBase { +}; + +dclass DistributedPartyJukebox40Activity : DistributedPartyJukeboxActivityBase { +}; + +dclass DistributedPartyValentineJukeboxActivity : DistributedPartyJukeboxActivityBase { +}; + +dclass DistributedPartyValentineJukebox40Activity : DistributedPartyJukeboxActivityBase { +}; + +dclass DistributedPartyCannonActivity : DistributedPartyActivity { + setMovie(uint8, uint32) broadcast; + setLanded(uint32) airecv broadcast clsend; + setCannonWillFire(uint32, int32/100, uint32/100) broadcast; + cloudsColorRequest() clsend airecv; + cloudsColorResponse(partyCloudColor []); + requestCloudHit(uint16, uint8/100, uint8/100, uint8/100) clsend airecv; + setCloudHit(uint16, uint8/100, uint8/100, uint8/100) broadcast; + setToonTrajectoryAi(int32, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) airecv clsend; + setToonTrajectory(uint32, int32, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) broadcast; + updateToonTrajectoryStartVelAi(int32/100, int32/100, int32/100) airecv clsend; + updateToonTrajectoryStartVel(uint32, int32/100, int32/100, int32/100) broadcast; +}; + +dclass DistributedPartyCannon : DistributedObject { + setActivityDoId(uint64) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + requestEnter() airecv clsend; + requestExit() broadcast; + setMovie(uint8, uint32) broadcast ram; + setCannonPosition(int32/100, uint32/100) airecv clsend; + setCannonLit(int32/100, uint32/100) airecv clsend; + setFired() airecv clsend; + setLanded(uint32) airecv clsend; + updateCannonPosition(uint32, int32/100, uint32/100) broadcast ram; + setCannonExit(uint32) broadcast; + setTimeout() clsend airecv; +}; + +dclass DistributedPartyFireworksActivity : DistributedPartyActivity { + setEventId(uint8 eventId) required broadcast; + setShowStyle(uint8 style) required broadcast; + setSongId(uint8 songId) required broadcast; +}; + +dclass DistributedPartyTrampolineActivity : DistributedPartyActivity { + awardBeans(uint8, uint16) clsend airecv; + setBestHeightInfo(string, uint16) broadcast ram; + reportHeightInformation(uint16) airecv clsend; + leaveTrampoline() broadcast; + requestAnim(char [0-256]) clsend airecv; + requestAnimEcho(string) broadcast; + removeBeans(int8 []) clsend airecv; + removeBeansEcho(int8 []) broadcast; +}; + +dclass DistributedPartyValentineTrampolineActivity : DistributedPartyTrampolineActivity { +}; + +dclass DistributedPartyVictoryTrampolineActivity : DistributedPartyTrampolineActivity { +}; + +dclass DistributedPartyWinterTrampolineActivity : DistributedPartyTrampolineActivity { +}; + +dclass DistributedPartyTugOfWarActivity : DistributedPartyTeamActivity { + reportKeyRateForce(uint32, int16/100) airecv clsend; + reportFallIn(uint8) airecv clsend; + setToonsPlaying(uint32 [0-4], uint32 [0-4]) required broadcast ram; + updateToonKeyRate(uint32, uint32) broadcast; + updateToonPositions(int16/1000) broadcast; +}; + +dclass DeleteManager : DistributedObject { + setInventory(blob) airecv clsend; +}; + +struct weeklyCalendarHoliday { + uint8 holidayId; + uint8 dayOfTheWeek; +}; + +struct yearlyCalendarHoliday { + uint8 holidayId; + uint8[] firstStartTime; + uint8[] lastEndTime; +}; + +struct oncelyCalendarHoliday { + uint8 holidayId; + uint16[] firstStartTime; + uint16[] lastEndTime; +}; + +struct relativelyCalendarHoliday { + uint8 holidayId; + uint16[] firstStartTime; + uint16[] lastEndTime; +}; + +struct startAndEndTime { + uint16[] startTime; + uint16[] endTime; +}; + +struct multipleStartHoliday { + uint8 holidayId; + startAndEndTime times[]; +}; + +dclass NewsManager : DistributedObject { + setPopulation(uint32) broadcast ram; + setBingoWin(uint32) broadcast ram; + setBingoStart() broadcast; + setBingoEnd() broadcast; + setCircuitRaceStart() broadcast; + setCircuitRaceEnd() broadcast; + setTrolleyHolidayStart() broadcast; + setTrolleyHolidayEnd() broadcast; + setTrolleyWeekendStart() broadcast; + setTrolleyWeekendEnd() broadcast; + setRoamingTrialerWeekendStart() broadcast; + setRoamingTrialerWeekendEnd() broadcast; + setInvasionStatus(uint8, string, uint32, uint8) broadcast; + setHolidayIdList(uint32[]) broadcast ram; + holidayNotify() broadcast; + setWeeklyCalendarHolidays(weeklyCalendarHoliday []) required broadcast ram; + setYearlyCalendarHolidays(yearlyCalendarHoliday []) required broadcast ram; + setOncelyCalendarHolidays(oncelyCalendarHoliday []) required broadcast ram; + setRelativelyCalendarHolidays(relativelyCalendarHoliday []) required broadcast ram; + setMultipleStartHolidays(multipleStartHoliday []) required broadcast ram; + sendSystemMessage(string, uint8) broadcast ram; +}; + +dclass PurchaseManager : DistributedObject { + setPlayerIds(uint32, uint32, uint32, uint32) required broadcast ram; + setNewbieIds(uint32[]) required broadcast ram; + setMinigamePoints(uint8, uint8, uint8, uint8) required broadcast ram; + setPlayerMoney(uint16, uint16, uint16, uint16) required broadcast ram; + setPlayerStates(uint8, uint8, uint8, uint8) required broadcast ram; + setCountdown(int16) required broadcast ram; + setMetagameRound(int8) required broadcast ram; + setVotesArray(int16[]) required broadcast ram; + requestExit() airecv clsend; + requestPlayAgain() airecv clsend; + setInventory(blob, int16, uint8) airecv clsend; + setPurchaseExit() broadcast; +}; + +dclass NewbiePurchaseManager : PurchaseManager { + setOwnedNewbieId(uint32) required broadcast ram; +}; + +dclass SafeZoneManager : DistributedObject { + enterSafeZone() airecv clsend; + exitSafeZone() airecv clsend; +}; + +dclass TutorialManager : DistributedObject { + requestTutorial() airecv clsend; + rejectTutorial() airecv clsend; + requestSkipTutorial() airecv clsend; + skipTutorialResponse(uint8); + enterTutorial(uint32, uint32, uint32, uint32); + allDone() airecv clsend; + toonArrived() airecv clsend; +}; + +dclass CatalogManager : DistributedObject { + startCatalog() airecv clsend; + fetchPopularItems() airecv clsend; + setPopularItems(blob); +}; + +dclass DistributedMyTest : DistributedObject { + setMyTest(uint16) broadcast; +}; + +dclass DistributedTreasure : DistributedObject { + setTreasureType(uint16) required broadcast ram; + setPosition(int16/10, int16/10, int16/10) required broadcast ram; + requestGrab() airecv clsend; + setGrab(uint32) broadcast ram; + setReject() broadcast; +}; + +dclass DistributedCashbotBossTreasure : DistributedTreasure { + setGoonId(uint32) required broadcast ram; + setFinalPosition(int16/10, int16/10, int16/10) required broadcast ram; + setStyle(uint16) required broadcast ram; +}; + +dclass DistributedLargeBlobSender : DistributedObject { + setMode(uint8) required broadcast ram; + setTargetAvId(uint32) required broadcast ram; + setChunk(blob); + setFilename(string); + setAck() airecv clsend; +}; + +dclass DistributedLevel : DistributedObject { + setLevelZoneId(uint32) required broadcast ram; + setPlayerIds(uint32[]) required broadcast ram; + setEntranceId(uint8) required broadcast ram; + setZoneIds(uint32[]) broadcast ram; + setStartTimestamp(int32) broadcast ram; + setOuch(uint8) airecv clsend; + requestCurrentLevelSpec(string, string) airecv clsend; + setSpecDeny(blob); + setSpecSenderDoId(uint32); + setAttribChange(uint32, blob, blob, blob) broadcast; +}; + +dclass DistributedEntity : DistributedObject { + setLevelDoId(uint32) required broadcast ram; + setEntId(uint32) required broadcast ram; +}; + +dclass DistributedInteractiveEntity : DistributedEntity { + setAvatarInteract(uint32) required broadcast ram; + requestInteract() airecv clsend; + rejectInteract(); + requestExit() airecv clsend; + avatarExit(uint32) broadcast; + setState(string, int32) required broadcast ram; +}; + +dclass DistributedTrophyMgr : DistributedObject { + requestTrophyScore() airecv clsend; +}; + +dclass DistributedBuilding : DistributedObject { + setBlock(uint16, uint32) required broadcast ram; + setSuitData(int8, int8, int8) required broadcast ram; + setVictorList(uint32[]) broadcast ram; + setState(string, int16) broadcast ram; + setVictorReady() airecv clsend; +}; + +dclass DistributedAnimBuilding : DistributedBuilding { +}; + +dclass DistributedBuildingQueryMgr : DistributedObject { + isSuit(uint8, uint32) airecv clsend; + response(uint8, bool); +}; + +dclass DistributedToonInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; + setToonData(blob) required broadcast ram; + setState(string, int16) required broadcast ram; + nextSnowmanHeadPart() clsend airecv; +}; + +dclass DistributedToonHallInterior : DistributedToonInterior { +}; + +dclass DistributedSuitInterior : DistributedObject { + setZoneId(uint32) required broadcast ram; + setExtZoneId(uint32) required broadcast ram; + setDistBldgDoId(uint32) required broadcast ram; + setNumFloors(int8) required broadcast ram; + setToons(uint32[], uint16) broadcast ram; + setSuits(uint32[], uint32[], uint16[]) broadcast ram; + setState(string, int16) required broadcast ram; + setAvatarJoined() airecv clsend; + elevatorDone() airecv clsend; + reserveJoinDone() airecv clsend; +}; + +dclass DistributedCogdoBarrel : DistributedObject { + requestGrab() airecv clsend; + setIndex(uint32) required broadcast ram; + setState(uint32) required broadcast ram; + setGrab(uint32) broadcast ram; + setReject() broadcast; +}; + +dclass DistributedCogdoInterior : DistributedObject { + setZoneId(uint32) required broadcast ram; + setExtZoneId(uint32) required broadcast ram; + setDistBldgDoId(uint32) required broadcast ram; + setNumFloors(int8) required broadcast ram; + setShopOwnerNpcId(uint32) required broadcast ram; + setSOSNpcId(uint32) broadcast ram; + setFOType(int8) broadcast ram; + setToons(uint32[], uint16) broadcast ram; + setSuits(uint32[], uint32[], uint16[]) broadcast ram; + setState(string, int16) required broadcast ram; + setAvatarJoined() airecv clsend; + elevatorDone() airecv clsend; + reserveJoinDone() airecv clsend; + toonLeftBarrelRoom() airecv clsend; + toonBarrelRoomIntroDone() airecv clsend; + setBarrelRoomReward(uint32 [], uint8 []) broadcast; + toonBarrelRoomRewardDone() airecv clsend; +}; + +dclass DistributedCogdoBattleBldg : DistributedBattleBldg { +}; + +dclass DistCogdoGame : DistributedObject { + setInteriorId(uint32) required broadcast ram; + setExteriorZone(uint32) broadcast ram required; + setDifficultyOverrides(int32, int32) broadcast ram required; + setVisible() broadcast; + setIntroStart() broadcast; + setToonSad(uint32) broadcast; + setToonDisconnect(uint32) broadcast; + setAvatarReady() airecv clsend; + setGameStart(int16) broadcast; + setGameFinish(int16) broadcast; +}; + +dclass DistCogdoLevelGame : DistCogdoGame, DistributedLevel { +}; + +dclass DistCogdoMazeGame : DistCogdoGame { + requestAction(uint8, uint32) airecv clsend; + doAction(uint8, uint32, int16) broadcast; + setNumSuits(uint8 [3]) required broadcast; + requestUseGag(int16/10, int16/10, int16/10, int16) clsend airecv; + toonUsedGag(uint32, int16/10, int16/10, int16/10, int16) broadcast; + requestSuitHitByGag(uint8, uint8) clsend airecv; + suitHitByGag(uint32, uint8, uint8) broadcast; + requestHitBySuit(uint8, uint8, int16) clsend airecv; + toonHitBySuit(uint32, uint8, uint8, int16) broadcast; + requestHitByDrop() clsend airecv; + toonHitByDrop(uint32) broadcast; + requestPickUp(uint8) clsend airecv; + pickUp(uint32, uint8, int16) broadcast; + requestGag(uint8) clsend airecv; + hasGag(uint32, int16) broadcast; +}; + +dclass DistCogdoFlyingGame : DistCogdoGame { + requestAction(uint8, uint8) airecv clsend; + requestPickUp(uint16, uint8) airecv clsend; + pickUp(uint32, uint16, int16) broadcast; + debuffPowerup(uint32, uint16, int16) broadcast; + doAction(uint8, uint32) broadcast; + eagleExitCooldown(uint32, int16) broadcast; + toonSetAsEagleTarget(uint32, uint8, int16) broadcast; + toonClearAsEagleTarget(uint32, uint8, int16) broadcast; + toonDied(uint32, int32) broadcast; + toonSpawn(uint32, int32) broadcast; + toonSetBlades(uint32, int32) broadcast; + toonBladeLost(uint32) broadcast; +}; + +dclass DistCogdoBoardroomGame : DistCogdoLevelGame { +}; + +dclass DistributedHQInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; + setLeaderBoard(blob) required broadcast ram; + setTutorial(uint8) required broadcast ram; +}; + +dclass DistributedGagshopInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; +}; + +dclass DistributedPetshopInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; +}; + +dclass DistributedKartShopInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; +}; + +dclass DistributedBankInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; + setState(string, int16) broadcast ram; +}; + +dclass DistributedLibraryInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; +}; + +dclass DistributedDoor : DistributedObject { + setZoneIdAndBlock(uint32, uint32) required broadcast ram; + setSwing(int8) required broadcast ram; + setDoorType(uint8) required broadcast ram; + setDoorIndex(uint8) required broadcast ram; + setOtherZoneIdAndDoId(uint32, uint32); + requestEnter() airecv clsend; + requestExit() airecv clsend; + rejectEnter(int8); + avatarEnter(uint32) broadcast; + avatarExit(uint32) broadcast; + setState(string, int16) required broadcast ram; + setExitDoorState(string, int16) required broadcast ram; +}; + +dclass DistributedAnimDoor : DistributedDoor { +}; + +dclass DistributedHouseDoor : DistributedDoor { +}; + +dclass DistributedCogHQDoor : DistributedDoor { +}; + +dclass DistributedSellbotHQDoor : DistributedCogHQDoor { + informPlayer(uint8) broadcast ram; +}; + +dclass DistributedNPCToonBase : DistributedNode { + setName(string) required broadcast ram; + setDNAString(blob) required broadcast ram; + setPositionIndex(uint8) required broadcast ram; + setAnimState(string, int16/1000, int16) broadcast ram; + setPageNumber(int16, int8, int16) broadcast ram clsend; + avatarEnter() airecv clsend; + freeAvatar(); + setHat(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; + setGlasses(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; + setBackpack(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; + setShoes(uint8 = 0, uint8 = 0, uint8 = 0) broadcast ram; +}; + +dclass DistributedNPCToon : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint16[], int16) broadcast ram; + setMovieDone() airecv clsend; + chooseQuest(uint16) airecv clsend; + chooseTrack(int8) airecv clsend; +}; + +dclass DistributedSmartNPC : DistributedNPCToonBase { + greet(uint32, uint32) broadcast ram; + talkMessage(uint32, string) airecv clsend; + respond(uint32, string, uint32) broadcast ram; + dismiss(uint32, uint16) broadcast ram; +}; + +dclass DistributedNPCBanker : DistributedNPCToonBase { + setMovie(uint8, uint32, int16) broadcast ram; + setMovieDone() airecv clsend; + transferMoney(int16) airecv clsend; +}; + +dclass DistributedNPCSpecialQuestGiver : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint16[], int16) broadcast ram; + setMovieDone() airecv clsend; + chooseQuest(uint16) airecv clsend; + chooseTrack(int8) airecv clsend; +}; + +dclass DistributedNPCFlippyInToonHall : DistributedNPCToon { +}; + +dclass DistributedNPCScientist : DistributedNPCToonBase { + setChat(char [0-1024], uint8, uint32, uint8, uint8) ownsend broadcast; +}; + +dclass DistributedNPCClerk : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, int16) broadcast ram; + setInventory(blob, int16, uint8) airecv clsend; +}; + +dclass DistributedNPCTailor : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, int16) broadcast ram; + setDNA(blob, int8, uint8) airecv clsend; + setCustomerDNA(uint32, blob) broadcast ram; +}; + +dclass DistributedNPCBlocker : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, int16) broadcast ram; +}; + +dclass DistributedNPCFisherman : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; + completeSale(uint8) airecv clsend; +}; + +dclass DistributedNPCPartyPerson : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; + answer(uint8) airecv clsend; +}; + +dclass DistributedNPCPetclerk : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; + setPetSeeds(uint32[]); + petAdopted(uint8, uint32) airecv clsend; + petReturned() airecv clsend; + fishSold() airecv clsend; + transactionDone() airecv clsend; +}; + +dclass DistributedNPCKartClerk : DistributedNPCToonBase { + setMovie(uint8, uint32, uint32, uint32[], int16) broadcast ram; + buyKart(uint8) airecv clsend; + buyAccessory(uint8) airecv clsend; + transactionDone() airecv clsend; +}; + +dclass DistributedNPCYin : DistributedNPCToonBase { + doTransformation(uint32 avId) broadcast; + requestTransformation() airecv clsend; +}; + +dclass DistributedNPCYang : DistributedNPCToonBase { + doTransformation(uint32 avId) broadcast; + requestTransformation() airecv clsend; +}; + +dclass DistributedKnockKnockDoor : DistributedAnimatedProp { +}; + +dclass DistributedElevator : DistributedObject { + setBldgDoId(uint32) required broadcast ram; + setState(string, int16) broadcast ram; + fillSlot0(uint32, uint8) broadcast ram; + fillSlot1(uint32, uint8) broadcast ram; + fillSlot2(uint32, uint8) broadcast ram; + fillSlot3(uint32, uint8) broadcast ram; + fillSlot4(uint32, uint8) broadcast ram; + fillSlot5(uint32, uint8) broadcast ram; + fillSlot6(uint32, uint8) broadcast ram; + fillSlot7(uint32, uint8) broadcast ram; + emptySlot0(uint32, int8, int16, int16) broadcast ram; + emptySlot1(uint32, int8, int16, int16) broadcast ram; + emptySlot2(uint32, int8, int16, int16) broadcast ram; + emptySlot3(uint32, int8, int16, int16) broadcast ram; + emptySlot4(uint32, int8, int16, int16) broadcast ram; + emptySlot5(uint32, int8, int16, int16) broadcast ram; + emptySlot6(uint32, int8, int16, int16) broadcast ram; + emptySlot7(uint32, int8, int16, int16) broadcast ram; + requestBoard() airecv clsend; + rejectBoard(uint32, uint8); + requestExit() airecv clsend; + setElevatorTripId(uint32) required broadcast ram; + setAntiShuffle(uint8) required broadcast ram; + setMinLaff(uint8) required broadcast ram; +}; + +dclass DistributedElevatorFSM : DistributedObject { + setBldgDoId(uint32) required broadcast ram; + setState(string, int16) broadcast ram; + fillSlot0(uint32) broadcast ram; + fillSlot1(uint32) broadcast ram; + fillSlot2(uint32) broadcast ram; + fillSlot3(uint32) broadcast ram; + fillSlot4(uint32) broadcast ram; + fillSlot5(uint32) broadcast ram; + fillSlot6(uint32) broadcast ram; + fillSlot7(uint32) broadcast ram; + emptySlot0(uint32, int8, int16) broadcast ram; + emptySlot1(uint32, int8, int16) broadcast ram; + emptySlot2(uint32, int8, int16) broadcast ram; + emptySlot3(uint32, int8, int16) broadcast ram; + emptySlot4(uint32, int8, int16) broadcast ram; + emptySlot5(uint32, int8, int16) broadcast ram; + emptySlot6(uint32, int8, int16) broadcast ram; + emptySlot7(uint32, int8, int16) broadcast ram; + requestBoard() airecv clsend; + rejectBoard(uint32, uint8); + requestExit() airecv clsend; + setElevatorTripId(uint32) required broadcast ram; + setAntiShuffle(uint8) required broadcast ram; + setMinLaff(uint8) required broadcast ram; +}; + +dclass DistributedElevatorFloor : DistributedElevatorFSM { + setFloor(int8) broadcast ram; + setLocked(uint16) required broadcast ram; + setEntering(uint16) required broadcast ram; + kickToonsOut() broadcast; + setLatch(uint32) required broadcast ram; +}; + +dclass DistributedElevatorExt : DistributedElevator { + setFloor(int8) broadcast ram; +}; + +dclass DistributedLawOfficeElevatorExt : DistributedElevatorExt { + setEntranceId(uint8) required broadcast ram; + setLawOfficeInteriorZone(uint32); + setLawOfficeInteriorZoneForce(uint32); +}; + +dclass DistributedElevatorInt : DistributedElevator { + requestBuildingExit() airecv clsend; + forcedExit(uint32); +}; + +dclass DistributedFactoryElevatorExt : DistributedElevatorExt { + setEntranceId(uint8) required broadcast ram; + setFactoryInteriorZone(uint32); + setFactoryInteriorZoneForce(uint32); +}; + +dclass DistributedMintElevatorExt : DistributedElevatorExt { + setMintId(uint16) required broadcast ram; + setMintInteriorZone(uint32); + setMintInteriorZoneForce(uint32); +}; + +dclass DistributedCogdoElevatorExt : DistributedElevatorExt { +}; + +dclass DistributedLawOfficeElevatorInt : DistributedElevatorFloor { + setLawOfficeInteriorZone(uint32); +}; + +dclass DistributedCogdoElevatorInt : DistributedElevatorInt { +}; + +dclass DistributedBossElevator : DistributedElevatorExt { + setBossOfficeZone(uint32); + setBossOfficeZoneForce(uint32); +}; + +dclass DistributedVPElevator : DistributedBossElevator { +}; + +dclass DistributedCFOElevator : DistributedBossElevator { +}; + +dclass DistributedCJElevator : DistributedBossElevator { +}; + +dclass DistributedBBElevator : DistributedBossElevator { +}; + +dclass DistributedBoardingParty : DistributedObject { + postGroupInfo(uint32, uint32[], uint32[], uint32[]) broadcast; + informDestinationInfo(uint8) clsend airecv; + postDestinationInfo(uint8) broadcast; + postInvite(uint32, uint32, bool) broadcast; + postInviteCanceled() broadcast; + postKick(uint32) broadcast; + postKickReject(uint32, uint32, uint32) broadcast; + postSizeReject(uint32, uint32, uint32) broadcast; + postInviteAccepted(uint32) broadcast; + postInviteDelcined(uint32) broadcast; + postInviteNotQualify(uint32, int8, uint32) broadcast; + postAlreadyInGroup() broadcast; + postGroupDissolve(uint32, uint32, uint32 [], uint8) broadcast; + postMessageAcceptanceFailed(uint32, int8) broadcast; + postGroupAlreadyFull() broadcast; + postSomethingMissing() broadcast; + postRejectBoard(uint32, int8, uint32 [], uint32 []) broadcast; + postRejectGoto(uint32, int8, uint32 [], uint32 []) broadcast; + postMessageInvited(uint32, uint32) broadcast; + postMessageInvitationFailed(uint32) broadcast; + acceptGoToFirstTime(uint32) broadcast; + acceptGoToSecondTime(uint32) broadcast; + rejectGoToRequest(uint32, int8, uint32 [], uint32 []) broadcast; + requestInvite(uint32) airecv clsend; + requestCancelInvite(uint32) airecv clsend; + requestAcceptInvite(uint32, uint32) airecv clsend; + requestRejectInvite(uint32, uint32) airecv clsend; + requestKick(uint32) airecv clsend; + requestLeave(uint32) airecv clsend; + requestBoard(uint32) airecv clsend; + requestGoToFirstTime(uint32) airecv clsend; + requestGoToSecondTime(uint32) airecv clsend; + setElevatorIdList(uint32[]) required broadcast ram; + setGroupSize(uint8) required broadcast ram; +}; + +dclass DistributedTutorialInterior : DistributedObject { + setZoneIdAndBlock(uint32, uint16) required broadcast ram; + setTutorialNpcId(uint32) required broadcast ram; +}; + +dclass DistributedBankMgr : DistributedObject { + transferMoney(int16) airecv clsend; +}; + +dclass DistributedMailbox : DistributedObject { + setHouseId(uint32) required broadcast ram; + setHousePos(uint8) required broadcast ram; + setName(string) required broadcast ram; + setFullIndicator(uint8) broadcast ram; + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + freeAvatar(); + setMovie(uint8, uint32) broadcast ram; + acceptItemMessage(uint16, blob, uint8, int32) airecv clsend; + acceptItemResponse(uint16, int8); + discardItemMessage(uint16, blob, uint8, int32) airecv clsend; + discardItemResponse(uint16, int8); + acceptInviteMessage(uint16, uint64) airecv clsend; + rejectInviteMessage(uint16, uint64) airecv clsend; + markInviteReadButNotReplied(uint64) airecv clsend; +}; + +dclass DistributedFurnitureManager : DistributedObject { + setOwnerId(uint32 ownerId) required broadcast ram; + setOwnerName(string ownerName) required broadcast ram; + setInteriorId(uint32 interiorId) required broadcast ram; + setAtticItems(blob atticItems) required broadcast ram; + setAtticWallpaper(blob atticWallpaper) required broadcast ram; + setAtticWindows(blob atticWindows) required broadcast ram; + setDeletedItems(blob deletedItems) required broadcast ram; + suggestDirector(uint32 directorId) airecv clsend; + setDirector(uint32 directorId) broadcast ram; + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + moveItemToAtticMessage(uint32 doId, uint16 context) airecv clsend; + moveItemToAtticResponse(int8 retval, uint16 context); + moveItemFromAtticMessage(uint16 index, int16/10 x, int16/10 y, int16/100 z, int16/10 h, int16/10 p, int16/10 r, uint16 context) airecv clsend; + moveItemFromAtticResponse(int8 retval, uint32 doId, uint16 context); + deleteItemFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; + deleteItemFromAtticResponse(int8 retval, uint16 context); + deleteItemFromRoomMessage(blob item, uint32 doId, uint16 context) airecv clsend; + deleteItemFromRoomResponse(int8 retval, uint16 context); + moveWallpaperFromAtticMessage(uint16 index, uint8 room, uint16 context) airecv clsend; + moveWallpaperFromAtticResponse(int8 retval, uint16 context); + deleteWallpaperFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; + deleteWallpaperFromAtticResponse(int8 retval, uint16 context); + moveWindowToAtticMessage(uint8 slot, uint16 context) airecv clsend; + moveWindowToAtticResponse(int8 retval, uint16 context); + moveWindowFromAtticMessage(uint16 index, uint8 slot, uint16 context) airecv clsend; + moveWindowFromAtticResponse(int8 retval, uint16 context); + moveWindowMessage(uint8 fromSlot, uint8 toSlot, uint16 context) airecv clsend; + moveWindowResponse(int8 retval, uint16 context); + deleteWindowFromAtticMessage(blob item, uint16 index, uint16 context) airecv clsend; + deleteWindowFromAtticResponse(int8 retval, uint16 context); + recoverDeletedItemMessage(blob item, uint16 index, uint16 context) airecv clsend; + recoverDeletedItemResponse(int8 retval, uint16 context); +}; + +dclass DistributedFurnitureItem : DistributedSmoothNode { + setItem(uint32 furnitureMgrId, blob item) required broadcast ram; + requestPosHpr(uint8 final, int16/10 x, int16/10 y, int16/100 z, int16/10 h, int16/10 p, int16/10 r, int16 t) airecv clsend; + setMode(uint8 mdoe, uint32 avId) required broadcast ram; +}; + +dclass DistributedBank : DistributedFurnitureItem { + avatarEnter() airecv clsend; + freeAvatar(); + setMovie(uint8, uint32, int16) broadcast ram; + transferMoney(int16) airecv clsend; +}; + +dclass DistributedBankCollectable : DistributedObject { + requestGrab() airecv clsend; + grab(uint32) broadcast ram; +}; + +dclass DistributedCloset : DistributedFurnitureItem { + setOwnerId(uint32) required broadcast ram; + enterAvatar() airecv clsend; + freeAvatar(); + removeItem(blob, uint8) airecv clsend; + setDNA(blob, int8, uint8) airecv clsend; + setState(uint8, uint32, uint32, string, uint8[], uint8[]) broadcast ram; + setMovie(uint8, uint32, int16) broadcast ram; + resetItemLists() broadcast ram; + setCustomerDNA(uint32, blob) broadcast ram; +}; + +dclass DistributedTrunk : DistributedCloset { + setState(uint8, uint32, uint32, string, uint8[], uint8[], uint8[], uint8[]) broadcast ram; + removeItem(uint8, uint8, uint8, uint8) airecv clsend; + setDNA(uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, int8, uint8) airecv clsend; + setCustomerDNA(uint32, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8) broadcast ram; +}; + +dclass DistributedPhone : DistributedFurnitureItem { + setInitialScale(uint8/170, uint8/170, uint8/170) required broadcast ram; + setNewScale(uint8/170, uint8/170, uint8/170) airecv clsend; + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + freeAvatar(); + setLimits(uint16); + setMovie(uint8, uint32, int32) broadcast ram; + requestPurchaseMessage(uint16, blob, int32) airecv clsend; + requestPurchaseResponse(uint16, int8); + requestGiftPurchaseMessage(uint16, uint32, blob, int32) airecv clsend; + requestGiftPurchaseResponse(uint16, int8); + purchaseItemComplete(); +}; + +dclass DistributedFireworkShow : DistributedObject { + startShow(uint8, uint8, uint8, int16) broadcast ram; + requestFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) airecv clsend; + shootFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) broadcast; +}; + +dclass DistributedFireworksCannon : DistributedFireworkShow { + avatarEnter() airecv clsend; + avatarExit() airecv clsend; + freeAvatar(); + setMovie(uint8, uint32, int16) broadcast ram; + setPosition(int16/10, int16/10, int16/10) required broadcast ram; +}; + +dclass LobbyManager : DistributedObject { +}; + +dclass DistributedFactory : DistributedLevel { + setFactoryId(uint16) required broadcast ram; + setSuits(uint32[], uint32[]) broadcast ram; + setForemanConfronted(uint32) broadcast ram; + setDefeated() broadcast ram; +}; + +dclass DistributedMegaCorp: DistributedFactory { +}; + +dclass DistributedLawOffice : DistributedObject { + setLawOfficeId(uint16) required broadcast ram; + startSignal() broadcast ram; + readyForNextFloor() airecv clsend; +}; + +dclass DistributedLawOfficeFloor : DistributedLevel { + setLawOfficeId(uint16) required broadcast ram; + setSuits(uint32[], uint32[]) broadcast ram; + readyForNextFloor() airecv clsend; + setForemanConfronted(uint32) broadcast ram; + setDefeated() broadcast ram; +}; + +dclass DistributedMint : DistributedObject { + setZoneId(uint32) required broadcast ram; + setMintId(uint16) required broadcast ram; + setFloorNum(uint8) required broadcast ram; + setRoomDoIds(uint32[]) broadcast ram; +}; + +dclass DistributedMintRoom : DistributedLevel { + setMintId(uint16) required broadcast ram; + setRoomId(uint16) required broadcast ram; + setRoomNum(uint8) required broadcast ram; + setSuits(uint32[], uint32[]) broadcast ram; + setBossConfronted(uint32) broadcast ram; + setDefeated() broadcast ram; +}; + +dclass DistributedStage : DistributedObject { + setZoneId(uint32) required broadcast ram; + setStageId(uint16) required broadcast ram; + setLayoutIndex(uint16) required broadcast ram; + setFloorNum(uint8) required broadcast ram; + setRoomDoIds(uint32[]) broadcast ram; + setStageZone(uint32) broadcast ram; + elevatorAlert(uint32) broadcast ram; +}; + +dclass DistributedStageRoom : DistributedLevel { + setStageId(uint16) required broadcast ram; + setRoomId(uint16) required broadcast ram; + setRoomNum(uint8) required broadcast ram; + setSuits(uint32[], uint32[]) broadcast ram; + setBossConfronted(uint32) broadcast ram; + setDefeated() broadcast ram; +}; + +dclass DistributedInGameEditor : DistributedObject { + setEditorAvId(uint32) required broadcast ram; + setEditUsername(blob) required broadcast ram; + setLevelDoId(uint32) required broadcast ram; + requestCurrentLevelSpec() airecv clsend; + setSpecSenderDoId(uint32); + setEdit(uint32, blob, blob, blob) airecv clsend; + setAttribChange(uint32, blob, blob, blob); + setFinished() airecv clsend; +}; + +dclass DistributedLift : DistributedEntity { + setStateTransition(uint8, uint8, uint32) required broadcast ram; + setAvatarEnter() airecv clsend; + setAvatarLeave() airecv clsend; +}; + +dclass DistributedDoorEntity : DistributedEntity { + setLocksState(uint16) required broadcast ram; + setDoorState(uint8, int32) required broadcast ram; + requestOpen() airecv clsend; +}; + +dclass DistributedSwitch : DistributedInteractiveEntity { +}; + +dclass DistributedButton : DistributedSwitch { +}; + +dclass DistributedTrigger : DistributedSwitch { +}; + +dclass DistributedCrushableEntity : DistributedEntity { + setPosition(int16/10, int16/10, int16/10) broadcast ram; + setCrushed(uint32, uint8) broadcast ram; +}; + +dclass DistributedCrusherEntity : DistributedEntity { +}; + +dclass DistributedElevatorMarker : DistributedEntity { +}; + +dclass DistributedStomper : DistributedCrusherEntity { + setMovie(uint8, int16, uint32[]) broadcast ram; +}; + +dclass DistributedStomperPair : DistributedEntity { + setChildren(uint32[]) broadcast ram; + setSquash() airecv clsend; +}; + +dclass DistributedBarrelBase : DistributedEntity { + requestGrab() airecv clsend; + setGrab(uint32) broadcast ram; + setReject() broadcast; +}; + +dclass DistributedGagBarrel : DistributedBarrelBase { +}; + +dclass DistributedBeanBarrel : DistributedBarrelBase { +}; + +dclass DistributedHealBarrel : DistributedBarrelBase { +}; + +dclass DistributedGrid : DistributedEntity { +}; + +dclass ActiveCell : DistributedEntity { + setState(uint8, uint32) broadcast ram; +}; + +dclass DirectionalCell : ActiveCell { +}; + +dclass CrusherCell : ActiveCell { +}; + +dclass DistributedCrate : DistributedCrushableEntity { + requestPush(uint8) airecv clsend; + setReject(); + setAccept() broadcast; + setMoveTo(uint32, int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast ram; + setDone() airecv clsend; +}; + +dclass DistributedSinkingPlatform : DistributedEntity { + setOnOff(uint8, uint32) airecv clsend; + setSinkMode(uint32, uint8, uint32) broadcast ram; +}; + +dclass DistributedGoon : DistributedCrushableEntity { + requestBattle(int16/10) airecv clsend; + requestStunned(int16/10) airecv clsend; + requestResync() airecv clsend; + setParameterize(int16/10, int16/10, int16/10, uint32) airecv clsend; + setMovie(uint8, uint32, int32/10, int16) broadcast ram; +}; + +dclass DistributedGridGoon : DistributedGoon { + setPathPts(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast ram; +}; + +dclass BattleBlocker : DistributedEntity { + setActive(uint8) required broadcast ram; + setSuits(uint32[]) broadcast ram; + setBattle(uint32) broadcast ram; + setBattleFinished() broadcast ram; +}; + +dclass DistributedLaserField : BattleBlocker { + setGrid(uint8, uint8) required broadcast ram; + setField(uint8 []) required broadcast ram; + setSuccess(uint8) broadcast ram; + hit(int8, int8, int8, int8) airecv clsend; + trapFire() airecv clsend; + setActiveLF(uint8) broadcast ram; + hideSuit(uint32[]) broadcast ram; + showSuit(uint32[]) broadcast ram; + setGridGame(string) broadcast ram; +}; + +struct golfGreenGameBoardData { + uint8 posX; + uint8 posZ; + uint8 typeIndex; +}; + +struct golfGreenGameScoreData { + uint32 avId; + uint8 score; +}; + +dclass DistributedGolfGreenGame : BattleBlocker { + requestJoin() airecv clsend; + leaveGame() airecv clsend; + acceptJoin(uint16, int32, uint32 []) broadcast ram; + requestBoard(uint8) airecv clsend; + startBoard(golfGreenGameBoardData [], uint8 []); + signalDone(uint8) broadcast ram; + boardCleared(uint32); + scoreData(uint8, uint8, golfGreenGameScoreData []) broadcast ram; + informGag(uint8, uint8); + helpOthers(uint32) broadcast; + setTimerStart(uint16, int32) broadcast ram; +}; + +dclass DistributedSecurityCamera : DistributedEntity { + trapFire() airecv clsend; + setTarget(uint8) broadcast ram; +}; + +dclass DistributedMover : DistributedEntity { + startMove(int16) broadcast ram; +}; + +typedef uint16/10000 PetTrait; + +dclass DistributedPet : DistributedSmoothNode { + string DcObjectType db; + setOwnerId(uint32) required broadcast db; + setPetName(string) required broadcast db; + setTraitSeed(uint32) required broadcast db; + setSafeZone(uint32) required broadcast db; + setForgetfulness(PetTrait) required broadcast db; + setBoredomThreshold(PetTrait) required broadcast db; + setRestlessnessThreshold(PetTrait) required broadcast db; + setPlayfulnessThreshold(PetTrait) required broadcast db; + setLonelinessThreshold(PetTrait) required broadcast db; + setSadnessThreshold(PetTrait) required broadcast db; + setFatigueThreshold(PetTrait) required broadcast db; + setHungerThreshold(PetTrait) required broadcast db; + setConfusionThreshold(PetTrait) required broadcast db; + setExcitementThreshold(PetTrait) required broadcast db; + setAngerThreshold(PetTrait) required broadcast db; + setSurpriseThreshold(PetTrait) required broadcast db; + setAffectionThreshold(PetTrait) required broadcast db; + setHead(int8(-1 - 1)) required broadcast db; // Supposed to be -1 - 0, but minification causes this to become -1-0, which is a parse problem. + setEars(int8(-1 - 4)) required broadcast db; + setNose(int8(-1 - 3)) required broadcast db; + setTail(int8(-1 - 6)) required broadcast db; + setBodyTexture(int8(0-6)) required broadcast db; + setColor(int8(0-25)) required broadcast db; + setColorScale(int8(0-8)) required broadcast db; + setEyeColor(int8(0-5)) required broadcast db; + setGender(int8(0-1)) required broadcast db; + setLastSeenTimestamp(uint32) required broadcast db; + setBoredom(uint16/1000(0-1)) required broadcast db; + setRestlessness(uint16/1000(0-1)) required broadcast db; + setPlayfulness(uint16/1000(0-1)) required broadcast db; + setLoneliness(uint16/1000(0-1)) required broadcast db; + setSadness(uint16/1000(0-1)) required broadcast db; + setAffection(uint16/1000(0-1)) required broadcast db; + setHunger(uint16/1000(0-1)) required broadcast db; + setConfusion(uint16/1000(0-1)) required broadcast db; + setExcitement(uint16/1000(0-1)) required broadcast db; + setFatigue(uint16/1000(0-1)) required broadcast db; + setAnger(uint16/1000(0-1)) required broadcast db; + setSurprise(uint16/1000(0-1)) required broadcast db; + setMood : setBoredom, setRestlessness, setPlayfulness, setLoneliness, setSadness, setAffection, setHunger, setConfusion, setExcitement, setFatigue, setAnger, setSurprise; + teleportIn(int16) broadcast ownsend; + teleportOut(int16) broadcast ownsend; + setTrickAptitudes(uint16/10000(0-1) []) required broadcast db; + doTrick(uint8, int16) broadcast ram; + avatarInteract(uint32); + setMovie(uint8, uint32, int16) broadcast ram; + freeAvatar(); +}; + +dclass DistributedPetProxy : DistributedPet { + setDominantMood(string) broadcast ram; +}; + +dclass DistributedAprilToonsMgr : DistributedObject { + setEventActive(uint8 eventId, bool) broadcast; + requestEventsList() clsend airecv; + requestEventsListResp(uint8 []); +}; + +dclass DistributedBlackCatMgr : DistributedObject { + doBlackCatTransformation(uint32 avId) broadcast; + requestBlackCatTransformation() airecv clsend; +}; + +dclass DistributedPolarBearMgr : DistributedObject { + doPolarBearTransformation(uint32 avId) broadcast; + requestPolarBearTransformation() airecv clsend; +}; + +dclass DistributedPolarPlaceEffectMgr : DistributedObject { + addPolarPlaceEffect() airecv clsend; +}; + +dclass DistributedGreenToonEffectMgr : DistributedObject { + addGreenToonEffect() airecv clsend; +}; + +dclass DistributedResistanceEmoteMgr : DistributedObject { + addResistanceEmote() clsend airecv; +}; + +dclass DistributedScavengerHuntTarget : DistributedObject { + attemptScavengerHunt() airecv clsend; +}; + +dclass DistributedTrickOrTreatTarget : DistributedObject { + doScavengerHunt(int8); + requestScavengerHunt() airecv clsend; +}; + +dclass DistributedWinterCarolingTarget : DistributedObject { + doScavengerHunt(int8) broadcast; + requestScavengerHunt() airecv clsend; +}; + +dclass DistributedDataStoreManager : DistributedObject { + startStore(uint8); + stopStore(uint8); + queryStore(uint8, string); + receiveResults(uint8, string); + deleteBackupStores(); +}; + +dclass DistributedVehicle : DistributedSmoothNode { + setOwner(uint32) required broadcast ram; + setState(char, uint32) broadcast ram; + setBodyType(int8) required broadcast ram; + setBodyColor(int8) required broadcast ram; + setAccessoryColor(int8) required broadcast ram; + setEngineBlockType(int8) required broadcast ram; + setSpoilerType(int8) required broadcast ram; + setFrontWheelWellType(int8) required broadcast ram; + setBackWheelWellType(int8) required broadcast ram; + setRimType(int8) required broadcast ram; + setDecalType(int8) required broadcast ram; + requestControl() airecv clsend; + requestParked() airecv clsend; + setInput(int8) broadcast ram; +}; + +struct avatarAndKart { + uint32 avId; + uint32 kartId; +}; + +dclass DistributedRace : DistributedObject { + setZoneId(uint32) required broadcast ram; + setTrackId(uint16) required broadcast ram; + setRaceType(uint16) required broadcast ram; + setCircuitLoop(uint16[]) required broadcast ram; + setAvatars(uint32[]) required broadcast ram; + setStartingPlaces(uint8[]) required broadcast ram; + setLapCount(uint8) broadcast required ram; + waitingForJoin() broadcast ram; + setEnteredRacers(avatarAndKart []) broadcast ram; + prepForRace() broadcast ram; + startTutorial() broadcast ram; + startRace(int16) broadcast ram; + goToSpeedway(uint32[], uint8) broadcast ram; + genGag(uint8, uint16, uint8) broadcast ram; + dropAnvilOn(uint32, uint32, int16) broadcast ram; + shootPiejectile(uint32, uint32, uint8) broadcast ram; + racerDisconnected(uint32) broadcast ram; + setPlace(uint32, uint32/1000, uint8, uint32, uint8, uint32, uint32, uint32[], uint16[], uint32/1000) broadcast ram; + setCircuitPlace(uint32, uint8, uint32, uint32, uint32, uint32[]) broadcast ram; + endCircuitRace() broadcast ram; + setRaceZone(uint32, uint32); + hasGag(uint8, uint8, uint8) broadcast airecv clsend; + racerLeft(uint32) clsend airecv broadcast ram; + heresMyT(uint32, int8, uint16/65535, int16) clsend airecv broadcast; + requestThrow(int32/1000, int32/1000, int32/1000) clsend airecv; + requestKart() clsend airecv; +}; + +dclass DistributedGag : DistributedObject { + setInitTime(int16) required broadcast ram; + setActivateTime(int16) required broadcast ram; + setPos(int32/1000, int32/1000, int32/1000) required broadcast ram; + setRace(uint32) required broadcast ram; + setOwnerId(uint32) required broadcast ram; + setType(uint8) required broadcast ram; + hitSomebody(uint32, int16) broadcast clsend airecv; +}; + +dclass DistributedProjectile : DistributedObject { + setInitTime(int16) required broadcast ram; + setPos(int32/1000, int32/1000, int32/1000) required broadcast ram; + setRace(uint32) required broadcast ram; + setOwnerId(uint32) required broadcast ram; + setType(uint8) required broadcast ram; + hitSomebody(uint32, int16) broadcast clsend airecv; +}; + +dclass DistributedKartPad : DistributedObject { + setArea(uint32) required broadcast ram; +}; + +dclass DistributedRacePad : DistributedKartPad { + setState(string, int16) required broadcast ram; + setRaceZone(uint32); + setTrackInfo(uint16[]) required broadcast ram; +}; + +dclass DistributedViewPad : DistributedKartPad { + setLastEntered(int16) required broadcast ram; +}; + +dclass DistributedStartingBlock : DistributedObject { + setPadDoId(uint32) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setPadLocationId(uint8) required broadcast ram; + requestEnter(uint8) airecv clsend; + rejectEnter(uint8); + requestExit() airecv clsend; + setOccupied(uint32) broadcast ram; + setMovie(uint8) broadcast ram; + movieFinished() airecv clsend; +}; + +dclass DistributedViewingBlock : DistributedStartingBlock { +}; + +dclass DistributedLeaderBoard : DistributedObject { + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setDisplay(blob) broadcast ram; +}; + +dclass DistributedDeliveryManager : DistributedObject { + hello(string) clsend; + rejectHello(string); + helloResponse(string); + getName(uint32); + receiveRejectGetName(string); + receiveAcceptGetName(string); + addName(uint32, string); + receiveRejectAddName(uint32); + receiveAcceptAddName(uint32); + addGift(uint32, blob, uint32, uint32, uint32); + receiveRejectAddGift(uint32); + receiveAcceptAddGift(uint32, uint32, uint32, uint32); + deliverGifts(uint32, uint32); + receiveAcceptDeliverGifts(uint32, string); + receiveRejectDeliverGifts(uint32, string); + receiveRequestPayForGift(blob, uint32, uint32) airecv clsend; + receiveRequestPurchaseGift(blob, uint32, uint32, uint32) airecv; + receiveAcceptPurchaseGift(uint32, uint32, int16); + receiveRejectPurchaseGift(uint32, uint32, int16, uint16); + heartbeat() airecv; + giveBeanBonus(uint32, uint16); + requestAck() clsend; + returnAck(); + givePartyRefund(uint32, uint32, uint64, int8, uint16); +}; + +dclass DistributedLawbotBoss : DistributedBossCog { + setState(string) broadcast ram; + setBossDamage(uint16, uint8, int16) broadcast ram; + touchWitnessStand() airecv clsend; + hitBoss(uint8) airecv clsend; + healBoss(uint8) airecv clsend; + hitToon(uint32) airecv clsend; + hitDefensePan() airecv clsend; + hitProsecutionPan() airecv clsend; + hitChair(uint8, uint8) airecv clsend; + setLawyerIds(uint32[]) broadcast ram; + setTaunt(int8, int8) broadcast; + toonGotHealed(uint32) broadcast; + enteredBonusState() broadcast; + setBattleDifficulty(uint8) broadcast ram; +}; + +dclass DistributedLawbotBossSuit : DistributedSuitBase { + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + doAttack(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) broadcast; + doProsecute() broadcast; + hitByToon() airecv clsend; + doStun() broadcast; +}; + +dclass DistributedLawbotBossGavel : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setIndex(uint8) required broadcast ram; + setState(char) broadcast ram; +}; + +dclass DistributedLawbotCannon : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setIndex(uint8) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + requestEnter() airecv clsend; + setMovie(int8, uint32, uint8) broadcast; + setCannonPosition(int16/10, int16/10) airecv clsend; + updateCannonPosition(uint32, int16/10, int16/10) broadcast; + setCannonLit(int16/10, int16/10) airecv clsend; + setCannonWillFire(uint32, int16/10, int16/10, int16/10, int16) broadcast; + setLanded() airecv clsend; + requestLeave() airecv clsend; +}; + +dclass DistributedLawbotChair : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setIndex(uint8) required broadcast ram; + setState(char) broadcast ram; + showCogJurorFlying() broadcast; + setToonJurorIndex(int8) broadcast ram; +}; + +dclass DistributedLawnDecor : DistributedNode { + setPlot(int8) required broadcast ram; + setHeading(int16/10) required broadcast ram; + setPosition(int16/10, int16/10, int16/10) required broadcast ram; + setOwnerIndex(int8) required broadcast ram; + plotEntered() airecv clsend; + removeItem() airecv clsend; + setMovie(uint8, uint32) broadcast ram; + movieDone() airecv clsend; + interactionDenied(uint32) broadcast ram; +}; + +dclass DistributedGardenPlot : DistributedLawnDecor { + plantFlower(uint8, uint8) airecv clsend; + plantGagTree(uint8, uint8) airecv clsend; + plantStatuary(uint8) airecv clsend; + plantToonStatuary(uint8, uint16) airecv clsend; + plantNothing(uint8) airecv clsend; +}; + +dclass DistributedGardenBox : DistributedLawnDecor { + setTypeIndex(uint8) required broadcast ram; +}; + +dclass DistributedStatuary : DistributedLawnDecor { + setTypeIndex(uint8) required broadcast ram; + setWaterLevel(int8) required broadcast ram; + setGrowthLevel(int8) required broadcast ram; +}; + +dclass DistributedToonStatuary : DistributedStatuary { + setOptional(uint16) required broadcast ram; +}; + +dclass DistributedAnimatedStatuary : DistributedStatuary { +}; + +dclass DistributedChangingStatuary : DistributedStatuary { + setGrowthLevel(int8) required broadcast ram; +}; + +dclass DistributedPlantBase : DistributedLawnDecor { + setTypeIndex(uint8) required broadcast ram; + setWaterLevel(int8) required broadcast ram; + setGrowthLevel(int8) required broadcast ram; + waterPlant() airecv clsend; + waterPlantDone() airecv clsend; +}; + +dclass DistributedFlower : DistributedPlantBase { + setTypeIndex(uint8) required broadcast ram; + setVariety(uint8) required broadcast ram; +}; + +dclass DistributedGagTree : DistributedPlantBase { + setWilted(int8) required broadcast ram; + requestHarvest() airecv clsend; +}; + +dclass DistributedTravelGame : DistributedMinigame { + setTimerStartTime(int16) broadcast; + setAvatarChoice(uint16, uint8) airecv clsend; + setAvatarVotes(uint32, uint16) broadcast; + setAvatarChose(uint32) broadcast; + setServerChoices(int16[], uint8[], uint8, uint8) broadcast; + setMinigames(uint8[], uint8[]) broadcast; + setBonuses(uint8[], uint8[]) broadcast; + setBoardIndex(uint8) required broadcast ram; +}; + +dclass DistributedPairingGame : DistributedMinigame { + setDeckSeed(uint32) required broadcast ram; + setMaxOpenCards(uint8) broadcast ram; + openCardRequest(int16, int16) airecv clsend; + openCardResult(int16, uint32, int16, int8, int16[]) broadcast; + reportDone() airecv clsend; + setEveryoneDone() broadcast; + setSignaling(uint32) clsend broadcast; +}; + +struct golfData { + int16 frame; + int32/100000 x; + int32/100000 y; + int32/100000 z; +}; + +struct Coord3 { + int32/100000 x; + int32/100000 y; + int32/100000 z; +}; + +struct CommonObjectData { + uint8 id; + uint8 type; + int32/100000 x; + int32/100000 y; + int32/100000 z; + int32/100000 q1; + int32/100000 q2; + int32/100000 q3; + int32/100000 q4; + int32/100000 aVX; + int32/100000 aVY; + int32/100000 aVZ; + int32/100000 lVX; + int32/100000 lVY; + int32/100000 lVZ; +}; + +dclass DistributedPhysicsWorld : DistributedObject { + clientCommonObject(uint8, uint8, Coord3, Coord3, int32/100, int32/100, int32/1000) broadcast ram; + setCommonObjects(CommonObjectData []) broadcast; + upSetCommonObjects(CommonObjectData []) airecv clsend; +}; + +dclass DistributedGolfHole : DistributedPhysicsWorld { + setHoleId(int8) broadcast ram required; + setTimingCycleLength(uint32/1000) broadcast ram required; + setAvatarReadyHole() airecv clsend; + setGolfCourseDoId(uint32) broadcast ram required; + turnDone() airecv clsend; + ballInHole() airecv clsend; + setAvatarTempTee(uint32, uint8) clsend broadcast; + setTempAimHeading(uint32, int32/1000) clsend broadcast; + setAvatarFinalTee(uint32, uint8) broadcast; + setGolferIds(uint32[]) broadcast ram required; + golfersTurn(uint32) broadcast; + golferChooseTee(uint32) broadcast; + setAvatarTee(uint8) airecv clsend; + postSwing(uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) airecv clsend; + postSwingState(uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, uint16/100, CommonObjectData []) airecv clsend; + swing(uint32, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) broadcast; + ballMovie2AI(uint32/1000, uint32, golfData [], golfData [], uint16, uint16, uint16, CommonObjectData []) airecv clsend; + ballMovie2Client(uint32/1000, uint32, golfData [], golfData [], uint16, uint16, uint16, CommonObjectData []) broadcast; + assignRecordSwing(uint32, uint32/1000, int32, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, CommonObjectData []); + setBox(int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) airecv clsend; + sendBox(int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000, int32/1000) broadcast; +}; + +dclass DistributedGolfCourse : DistributedObject { + setGolferIds(uint32[]) broadcast ram required; + setCourseId(int8) broadcast ram required; + setAvatarJoined() airecv clsend; + setAvatarReadyCourse() airecv clsend; + setAvatarReadyHole() airecv clsend; + setAvatarExited() airecv clsend; + setCurHoleIndex(int8) broadcast ram required; + setCurHoleDoId(uint32) broadcast ram required; + setDoneReward() airecv clsend; + setReward(uint8[] [], int8[], uint8[] [], uint8[] [], uint8[] [], uint32, uint32/100, uint32/100, uint32/100, uint32/100) broadcast; + setCourseReady(int8, int16[], int8) broadcast; + setHoleStart(int16) broadcast; + setCourseExit() broadcast; + setCourseAbort(uint32) broadcast; + setPlayHole() broadcast; + avExited(uint32) broadcast; + setScores(int16 []) broadcast; + changeDrivePermission(uint32, int8) broadcast; +}; + +dclass DistributedVineGame : DistributedMinigame { + reachedEndVine(int8) clsend airecv; + setNewVine(uint32, int8, uint32/10000, int8) airecv clsend broadcast; + setNewVineT(uint32, uint32/10000, int8) clsend broadcast; + setJumpingFromVine(uint32, int8, int8, int32/100, int16/100, int16/100, int16) clsend broadcast; + claimTreasure(uint32) airecv clsend; + setTreasureGrabbed(uint32, uint32) broadcast; + setScore(uint32, uint32) broadcast; + allAtEndVine() broadcast; + setFallingFromVine(uint32, int8, int8, int32/100, int16/100, int16/100, int16, int8) clsend broadcast; + setFallingFromMidair(uint32, int8, int32/100, int16/100, int16/100, int16, int8) clsend broadcast; + setVineSections(uint8[]) required broadcast ram; +}; + +dclass TTAvatarFriendsManager : AvatarFriendsManager { +}; + +dclass TTPlayerFriendsManager : PlayerFriendsManager { +}; + +dclass DistributedGolfKart : DistributedObject { + setState(string, int16) broadcast ram; + fillSlot0(uint32) broadcast ram; + fillSlot1(uint32) broadcast ram; + fillSlot2(uint32) broadcast ram; + fillSlot3(uint32) broadcast ram; + emptySlot0(uint32, int16) broadcast ram; + emptySlot1(uint32, int16) broadcast ram; + emptySlot2(uint32, int16) broadcast ram; + emptySlot3(uint32, int16) broadcast ram; + requestBoard() airecv clsend; + rejectBoard(uint32); + requestExit() airecv clsend; + setMinigameZone(uint32, uint16); + setGolfZone(uint32, uint16); + setGolfCourse(int8) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setColor(int16, int16, int16) required broadcast ram; +}; + +dclass DistributedTimer : DistributedObject { + setStartTime(int32) broadcast ram required; +}; + +dclass DistributedPicnicBasket : DistributedObject { + setState(string, uint16, int16) broadcast ram; + fillSlot0(uint32) broadcast ram; + fillSlot1(uint32) broadcast ram; + fillSlot2(uint32) broadcast ram; + fillSlot3(uint32) broadcast ram; + emptySlot0(uint32, int16) broadcast ram; + emptySlot1(uint32, int16) broadcast ram; + emptySlot2(uint32, int16) broadcast ram; + emptySlot3(uint32, int16) broadcast ram; + requestBoard(int16) airecv clsend; + rejectBoard(uint32); + requestExit() airecv clsend; + doneExit() airecv clsend; + setMinigameZone(uint32, uint16); + setPicnicDone(); + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setTableNumber(int16) required broadcast ram; +}; + +dclass DistributedGameTable : DistributedObject { + requestJoin(uint8) airecv clsend; + rejectJoin(); + requestExit() airecv clsend; + fillSlot0(uint32) broadcast ram; + fillSlot1(uint32) broadcast ram; + fillSlot2(uint32) broadcast ram; + fillSlot3(uint32) broadcast ram; + fillSlot4(uint32) broadcast ram; + fillSlot5(uint32) broadcast ram; + emptySlot0(uint32, int16) broadcast ram; + emptySlot1(uint32, int16) broadcast ram; + emptySlot2(uint32, int16) broadcast ram; + emptySlot3(uint32, int16) broadcast ram; + emptySlot4(uint32, int16) broadcast ram; + emptySlot5(uint32, int16) broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + announceWinner(uint32) broadcast; +}; + +dclass DistributedBossbotBoss : DistributedBossCog { + setState(string) broadcast ram; + setBattleDifficulty(uint8) broadcast ram; + requestGetFood(int8, int8, uint32) airecv clsend; + toonGotFood(uint32, int8, int8, uint32) broadcast; + requestServeFood(int8, int8) airecv clsend; + toonServeFood(uint32, int8, int8) broadcast; + hitBoss(uint8) airecv clsend; + hitToon(uint32) airecv clsend; + ballHitBoss(uint8) airecv clsend; + setBossDamage(uint16, uint8, int16) broadcast ram; + setSpeedDamage(uint16, uint8, int16) broadcast ram; + reachedTable(uint8) airecv clsend; + hitTable(uint8) airecv clsend; + awayFromTable(uint8) airecv clsend; + toonGotHealed(uint32) broadcast; + requestGetToonup(int8, int8, uint32) airecv clsend; + toonGotToonup(uint32, int8, int8, uint32) broadcast; +}; + +dclass DistributedCogKart : DistributedElevatorExt { + setCountryClubId(uint16) required broadcast ram; + setPosHpr(int16/10, int16/10, int16/10, int16/10, int16/10, int16/10) required broadcast ram; + setCountryClubInteriorZone(uint32); + setCountryClubInteriorZoneForce(uint32); +}; + +dclass DistributedCountryClub : DistributedObject { + setZoneId(uint32) required broadcast ram; + setBlockedRooms(uint8[]) required broadcast ram; + setCountryClubId(uint16) required broadcast ram; + setLayoutIndex(uint16) required broadcast ram; + setFloorNum(uint8) required broadcast ram; + setRoomDoIds(uint32[]) broadcast ram; + setCountryClubZone(uint32) broadcast ram; + elevatorAlert(uint32) broadcast ram; +}; + +dclass DistributedCountryClubRoom : DistributedLevel { + setCountryClubId(uint16) required broadcast ram; + setRoomId(uint16) required broadcast ram; + setRoomNum(uint8) required broadcast ram; + setSuits(uint32[], uint32[]) broadcast ram; + setBossConfronted(uint32) broadcast ram; + setDefeated() broadcast ram; + forceOuch(uint8) broadcast; +}; + +dclass DistributedMoleField : DistributedEntity { + setGameStart(int16, uint8, uint16) broadcast; + setClientTriggered() airecv clsend; + whackedMole(int8, int16) airecv clsend; + whackedBomb(int8, int16, int32) airecv clsend; + updateMole(int8, int8) broadcast; + reportToonHitByBomb(uint32, int8, int32) broadcast; + setScore(int16) required broadcast ram; + damageMe() airecv clsend; + setPityWin() broadcast; +}; + +dclass DistributedCountryClubBattle : DistributedLevelBattle { +}; + +dclass DistributedClubElevator : DistributedElevatorFSM { + setFloor(int8) broadcast ram; + setLocked(uint16) required broadcast ram; + setEntering(uint16) required broadcast ram; + kickToonsOut() broadcast; + setLatch(uint32) required broadcast ram; +}; + +dclass DistributedMaze : DistributedEntity { + setRoomDoId(uint32) required broadcast ram; + setGameStart(int16) broadcast; + setClientTriggered() airecv clsend; + setFinishedMaze() airecv clsend; + setGameOver() broadcast; + toonFinished(uint32, uint8, uint8) broadcast; + damageMe() airecv clsend; +}; + +dclass DistributedBattleWaiters : DistributedBattleFinal { +}; + +dclass DistributedFoodBelt : DistributedObject { + setBossCogId(uint32) required broadcast ram; + setIndex(uint8) required broadcast ram; + setState(char) broadcast ram; +}; + +dclass DistributedBanquetTable : DistributedObject { + setIndex(uint8) required broadcast ram; + setNumDiners(uint8) required broadcast ram; + setBossCogId(uint32) required broadcast ram; + setDinerInfo(uint8[], uint8[], uint8[]) required broadcast ram; + setState(char, uint32, int8) broadcast ram; + setDinerStatus(uint8, uint8) broadcast; + requestControl() airecv clsend; + requestFree(int8) airecv clsend; + setPitcherPos(uint8, uint16%360/100, int16) broadcast clsend; + clearSmoothing(int8) broadcast clsend; + firingWater(int32/100, int32/100, int32/100, int32/100, int32/100, int32/100) broadcast clsend; + waterHitBoss(uint8) broadcast clsend; +}; + +dclass DistributedBattleDiners : DistributedBattleFinal { +}; + +dclass DistributedGolfSpot : DistributedObject { + setIndex(uint8) required broadcast ram; + setBossCogId(uint32) required broadcast ram; + setState(char, uint32, int8) broadcast ram; + setGoingToReward() broadcast ram; + requestControl() airecv clsend; + requestFree(int8) airecv clsend; + setGolfSpotPos(uint8, uint16%360/100, int16) broadcast clsend; + clearSmoothing(int8) broadcast clsend; + setSwingInfo(uint8, int16/10, uint8) broadcast clsend; +}; + +struct TireInput { + int32/100 force; + int32/100 heading; +}; + +dclass DistributedIceGame : DistributedMinigame { + setForceArrowInfo(uint32, int32/100, int32/100) broadcast clsend; + setAvatarChoice(int32/100, int32/100) airecv clsend; + endingPositions(Coord3 []) airecv clsend; + reportScoringMovieDone() airecv clsend; + claimTreasure(uint8) airecv clsend; + claimPenalty(uint8) airecv clsend; + setTireInputs(TireInput []) broadcast; + setTimerStartTime(int16) broadcast; + setFinalPositions(Coord3 []) broadcast; + setMatchAndRound(int8, int8) broadcast; + setScores(int8, int8, int16[]) broadcast; + setNewState(string) broadcast; + setTreasureGrabbed(uint32, uint32) broadcast; + setPenaltyGrabbed(uint32, uint32) broadcast; +}; + +dclass DistributedCogThiefGame : DistributedMinigame { + throwingPie(uint32, int32, int32/100, int32/100, int32/100, int32/100) clsend broadcast; + hitBySuit(uint32, int32, int8, int32/100, int32/100, int32/100) clsend broadcast airecv; + pieHitSuit(uint32, int32, int8, int32/100, int32/100, int32/100) clsend broadcast airecv; + cogHitBarrel(int32, int8, int8, int32/100, int32/100, int32/100) clsend airecv; + cogAtReturnPos(int32, int8, int8) clsend airecv; + updateSuitGoal(int32, int32, int8, int8, int64, int32/100, int32/100, int32/100) broadcast; + makeCogCarryBarrel(int32, int32, int8, int8, int32/100, int32/100, int32/100) broadcast; + makeCogDropBarrel(int32, int32, int8, int8, int32/100, int32/100, int32/100) broadcast; + markBarrelStolen(int32, int32, int8) broadcast; +}; + +struct twoDTreasureInfo { + uint8 treasureIndex; + uint8 treasureValue; +}; + +struct twoDSectionInfo { + uint8 sectionIndex; + uint8 enemyIndicesSelected[]; + twoDTreasureInfo treasureIndicesSelected[]; + uint8 spawnPointIndicesSelected[]; + uint8 stomperIndicesSelected[]; +}; + +dclass DistributedTwoDGame : DistributedMinigame { + showShootGun(uint32, int16) clsend broadcast; + toonHitByEnemy(uint32, int16) clsend broadcast airecv; + toonFellDown(uint32, int16) clsend broadcast airecv; + toonSquished(uint32, int16) clsend broadcast airecv; + toonVictory(uint32, int16) clsend broadcast airecv; + claimTreasure(uint8, uint8) airecv clsend; + claimEnemyShot(uint8, uint8) airecv clsend; + reportDone() airecv clsend; + setSectionsSelected(twoDSectionInfo []) required broadcast ram; + setTreasureGrabbed(uint32, uint8, uint8) broadcast; + setEnemyShot(uint32, uint8, uint8, uint32) broadcast; + addVictoryScore(uint32, uint8) broadcast; + setEveryoneDone() broadcast; +}; + +dclass DistributedChineseCheckers : DistributedNode { + requestExit() clsend airecv; + requestBegin() clsend airecv; + requestMove(uint8 []) clsend airecv; + requestTimer() clsend airecv; + requestSeatPositions() clsend airecv; + startBeginTimer(uint16, int16) broadcast ram; + gameStart(uint8) broadcast; + setTableDoId(uint32) required broadcast ram; + setGameState(uint8 [], uint8 []) required broadcast ram; + setTimer(int16) broadcast ram required; + setTurnTimer(int16) broadcast ram required; + sendTurn(uint8) broadcast ram; + requestWin() clsend airecv; + announceWin(uint32) broadcast; + announceSeatPositions(uint8 []) broadcast; +}; + +dclass DistributedCheckers : DistributedNode { + requestExit() clsend airecv; + requestBegin() clsend airecv; + requestTimer() clsend airecv; + requestMove(uint8 []) clsend airecv; + startBeginTimer(uint16, int16) broadcast ram; + gameStart(uint8) broadcast; + setTableDoId(uint32) required broadcast ram; + setGameState(uint8 [], uint8 []) required broadcast ram; + setTimer(int16) broadcast ram required; + setTurnTimer(int16) broadcast ram required; + sendTurn(uint8) broadcast ram; + requestWin() clsend airecv; + announceWin(uint32) broadcast; + illegalMove() broadcast; +}; + +dclass DistributedFindFour : DistributedNode { + requestExit() clsend airecv; + requestBegin() clsend airecv; + requestMove(uint8) clsend airecv; + requestTimer() clsend airecv; + requestWin(uint8 []) clsend airecv; + startBeginTimer(uint16, int16) broadcast ram; + setTableDoId(uint32) required broadcast ram; + setGameState(uint8 [][], uint8, uint8, uint8) required broadcast ram; + setTimer(int16) broadcast ram required; + setTurnTimer(int16) broadcast ram required; + gameStart(uint8) broadcast; + sendTurn(uint8) broadcast ram; + announceWin(uint32) broadcast; + announceWinLocation(uint8, uint8, uint8, uint8) broadcast; + announceWinnerPosition(uint8, uint8, uint8, uint8) broadcast; + illegalMove() broadcast; + tie() broadcast; +}; + +dclass DistributedMailManager : DistributedObject { + sendSimpleMail(uint32, uint32, string); + setNumMailItems(uint32, uint32) airecv; +}; + +dclass DistributedPartyManager : DistributedObject { + addParty(uint32, uint32, string, string, int8, int8, activity [], decoration [], uint32[], uint16); + addPartyRequest(uint32, char [0-256], char [0-256], int8, int8, activity [], decoration [], uint32[]) airecv clsend; + addPartyResponse(uint32, int8); + addPartyResponseUdToAi(uint64, int8, party) airecv; + + markInviteAsReadButNotReplied(uint32, uint64); + respondToInvite(uint32, uint32, uint16, uint64, uint8); + respondToInviteResponse(uint32, uint16, uint64, int8, uint8) airecv; + + changePrivateRequest(uint64, int8) airecv clsend; + changePrivateRequestAiToUd(uint32, uint64, int8); + changePrivateResponseUdToAi(uint32, uint64, int8, int8) airecv; + changePrivateResponse(uint64, int8, int8); + + changePartyStatusRequest(uint64, int8) airecv clsend; + changePartyStatusRequestAiToUd(uint32, uint64, int8); + changePartyStatusResponseUdToAi(uint32, uint64, int8, int8) airecv; + changePartyStatusResponse(uint64, int8, int8, uint16); + + partyInfoOfHostRequestAiToUd(uint32, uint32); + partyInfoOfHostFailedResponseUdToAi(uint32) airecv; + partyInfoOfHostResponseUdToAi(party, uint32[]) airecv; + + givePartyRefundResponse(uint32, uint64, int8, uint16, uint32); + getPartyZone(uint32, uint32, uint8) clsend airecv; + receivePartyZone(uint32, uint64, uint32); + freeZoneIdFromPlannedParty(uint32, uint32) clsend airecv; + + sendAvToPlayground(uint32, uint8); + exitParty(uint32) clsend airecv; + removeGuest(uint32, uint32) airecv clsend; + partyManagerAIStartingUp(uint32, uint32); + partyManagerAIGoingDown(uint32, uint32); + partyHasStartedAiToUd(uint64 partyId, uint32 shardId, uint32 zoneId, string hostName); + toonHasEnteredPartyAiToUd(uint32); + toonHasExitedPartyAiToUd(uint32); + partyHasFinishedUdToAllAi(uint64 partyId) airecv; + updateToPublicPartyInfoUdToAllAi(uint32 shardId, uint32 zoneId, uint64 partyId, uint32 hostId, uint8 numGuests, uint8 maxGuests, string hostName, uint8 activities[], uint8 minLeft) airecv; + updateToPublicPartyCountUdToAllAi(uint32 partyCount, uint64 partyId) airecv; + requestShardIdZoneIdForHostId(uint32) clsend airecv; + sendShardIdZoneIdToAvatar(uint32, uint32); + partyManagerUdStartingUp() airecv; + partyManagerUdLost() airecv; + updateAllPartyInfoToUd(uint32, uint64, uint32, uint32, uint8, uint8, string, uint8 [], uint64); + forceCheckStart(); + requestMw(uint32, string, uint32, uint32); + mwResponseUdToAllAi(uint32, string, uint32, uint32) airecv; + receiveId(uint64 ids[]) airecv; +}; + +dclass DistributedObjectGlobal : DistributedObject { +}; + +dclass GlobalPartyManager : DistributedObjectGlobal { + partyManagerAIHello(uint32 channel); + queryParty(uint32 hostId); + addParty(DoId avId, uint64 partyId, string start, string end, int8 isPrivate, + int8 inviteTheme, activity [], decoration [], DoIdList inviteeIds); + partyHasStarted(uint64 partyId, uint32 shardId, uint32 zoneId, string hostName); + toonJoinedParty(uint64 partyId, uint32 avId); + toonLeftParty(uint64 partyId, uint32 avId); + requestPartySlot(uint64 partyId, uint32 avId, uint32 gateId); + partyDone(uint64 partyId); + allocIds(uint16 count); +}; + +struct PotentialToon { + uint32 avNum; + string avName; + string avDNA; + uint8 avPosition; + uint8 aname; +}; + +dclass ClientServicesManager : DistributedObjectGlobal { + login(string cookie, char auth [0-256]) clsend; + acceptLogin(uint32 timestamp); + + requestAvatars() clsend; + setAvatars(PotentialToon[]); + + createAvatar(blob dna, uint8 index) clsend; + createAvatarResp(uint32 avId); + + setNameTyped(uint32 avId, string name) clsend; + setNameTypedResp(uint32 avId, uint8 status); + setNamePattern(uint32 avId, int16 p1, uint8 f1, int16 p2, uint8 f2, int16 p3, uint8 f3, int16 p4, uint8 f4) clsend; + setNamePatternResp(uint32 avId, uint8 status); + + acknowledgeAvatarName(uint32 avId) clsend; + acknowledgeAvatarNameResp(); + + deleteAvatar(uint32 avId) clsend; + + chooseAvatar(uint32 avId) clsend; + + systemMessage(string message); +}; + +dclass AwardManager : DistributedObjectGlobal { + giveAwardToToon(uint32, DoId, string, DoId, uint32, uint32); +}; + +dclass DistributedCpuInfoMgr : DistributedObjectGlobal { + setCpuInfoToUd(uint32, uint32, string, string); +}; + +dclass NonRepeatableRandomSourceClient { + getRandomSamplesReply(uint32, uint32 []) airecv; +}; + +dclass TTCodeRedemptionMgr : DistributedObject, NonRepeatableRandomSourceClient { + redeemCode(uint32, char [0-256]) airecv clsend; + redeemCodeResult(uint32, uint32, uint32); +}; + +dclass NonRepeatableRandomSource : DistributedObject, NonRepeatableRandomSourceClient { + getRandomSamples(DoId, string, uint32, uint32); + randomSample(DoId, uint32); + randomSampleAck() airecv; +}; + +dclass DistributedInGameNewsMgr : DistributedObjectGlobal { + setLatestIssueStr(string) required broadcast ram; + inGameNewsMgrAIStartingUp(uint32, uint32); + newIssueUDtoAI(string) airecv; +}; + +struct Friend +{ +uint32 doId; +string name; +blob dna; +uint32 petId; +}; + +dclass TTUFriendsManager : DistributedObjectGlobal { + removeFriend(uint32) clsend; + requestAvatarInfo(uint32[]) clsend; + + requestFriendsList() clsend; + + friendInfo(Friend); + friendList(Friend []); + + friendOnline(uint32, uint8, uint8); + friendOffline(uint32); + + goingOffline(uint32 avId); + + getAvatarDetails(uint32) clsend; + friendDetails(uint32, blob, uint16[], uint16, int16, int16, uint32, uint32, blob, blob, int8[]); + + routeTeleportQuery(uint32 toId) clsend; + teleportQuery(uint32 fromId); + + teleportResponse(uint32 fromId, uint8 tpAvailable, uint32 defaultShard, uint32 hoodId, uint32 zoneId) clsend; + setTeleportResponse(uint32 toId, uint8 tpAvailable, uint32 defaultShard, uint32 hoodId, uint32 zoneId); + + whisperSCTo(uint32 toId, uint16 msgIndex) clsend; + setWhisperSCFrom(uint32 fromId, uint16 msgIndex); + + whisperSCCustomTo(uint32 toId, uint16 msgIndex) clsend; + setWhisperSCCustomFrom(uint32 fromId, uint16 msgIndex); + + whisperSCEmoteTo(uint32 toId, uint16 emoteId) clsend; + setWhisperSCEmoteFrom(uint32 fromId, uint16 emoteId); + + requestSecret() clsend; + requestSecretResponse(int8 status, string secret); + + submitSecret(string(0-256) secret) clsend; + submitSecretResponse(int8 status, int32 avId); + + sendTalkWhisper(uint32 toId, string message) clsend; + receiveTalkWhisper(uint32 fromId, string message); + + battleSOS(uint32 toId) clsend; + setBattleSOS(uint32 fromId); + + teleportGiveup(uint32 toId) clsend; + setTeleportGiveup(uint32 fromId); + + whisperSCToontaskTo(uint32, uint32, uint32, uint32, uint8) clsend; + setWhisperSCToontaskFrom(uint32, uint32, uint32, uint32, uint8); + + sleepAutoReply(uint32 toId) clsend; + setSleepAutoReply(uint32 fromId); +}; + + +dclass DistributedPhaseEventMgr : DistributedObject { + setNumPhases(uint8) required broadcast ram; + setDates(datetime []) broadcast required; + setCurPhase(int8) required broadcast ram; + setIsRunning(bool) required broadcast ram; +}; + +dclass DistributedHydrantZeroMgr : DistributedPhaseEventMgr { +}; + +dclass DistributedMailboxZeroMgr : DistributedPhaseEventMgr { +}; + +dclass DistributedTrashcanZeroMgr : DistributedPhaseEventMgr { +}; + +dclass DistributedSillyMeterMgr : DistributedPhaseEventMgr { +}; diff --git a/config/general.prc b/config/general.prc index 1f6631ad..5843f841 100644 --- a/config/general.prc +++ b/config/general.prc @@ -1,130 +1,135 @@ -# Window settings: -window-title Toontown Unlimited -win-origin -1 -1 -icon-filename phase_3/etc/icon.ico -cursor-filename phase_3/etc/toonmono.cur - -# Audio: -audio-library-name p3fmod_audio - -# Graphics: -aux-display pandagl -aux-display pandadx9 -aux-display p3tinydisplay - -# Models: -model-cache-models #f -model-cache-textures #f -default-model-extension .bam - -# Textures: -texture-anisotropic-degree 16 - -# Preferences: -preferences-filename preferences.json - -# Content packs: -content-packs-filepath contentpacks/ -content-packs-sort-filename sort.yaml - -# Backups: -backups-filepath backups/ -backups-extension .json - -# Server: -server-timezone EST/EDT/-5 -server-port 7199 -account-server-endpoint https://toontownunlimited.com/api/ -account-bridge-filename astron/databases/account-bridge.db - -# Performance: -sync-video #f -texture-power-2 none -gl-check-errors #f -garbage-collect-states #f - -# Egg object types: -egg-object-type-barrier collide-mask { 0x01 } { Polyset descend } -egg-object-type-trigger collide-mask { 0x01 } { Polyset descend intangible } -egg-object-type-sphere collide-mask { 0x01 } { Sphere descend } -egg-object-type-trigger-sphere collide-mask { 0x01 } { Sphere descend intangible } -egg-object-type-floor collide-mask { 0x02 } { Polyset descend } -egg-object-type-dupefloor collide-mask { 0x02 } { Polyset keep descend } -egg-object-type-camera-collide collide-mask { 0x04 } { Polyset descend } -egg-object-type-camera-collide-sphere collide-mask { 0x04 } { Sphere descend } -egg-object-type-camera-barrier collide-mask { 0x05 } { Polyset descend } -egg-object-type-camera-barrier-sphere collide-mask { 0x05 } { Sphere descend } -egg-object-type-model { 1 } -egg-object-type-dcs { 1 } - -# Safe zones: -want-safe-zones #t -want-toontown-central #t -want-donalds-dock #t -want-daisys-garden #t -want-minnies-melodyland #t -want-the-burrrgh #t -want-donalds-dreamland #t -want-goofy-speedway #t -want-outdoor-zone #t -want-golf-zone #t - -# Safe zone settings: -want-treasure-planners #t -want-suit-planners #t -want-butterflies #f - -# Classic characters: -want-classic-chars #t -want-mickey #t -want-donald-dock #t -want-daisy #t -want-minnie #t -want-pluto #t -want-donald-dreamland #t -want-chip-and-dale #t -want-goofy #t - -# Trolley minigames: -want-minigames #t -want-photo-game #f -want-travel-game #f - -# Picnic table board games: -want-game-tables #f - -# Cog headquarters: -want-cog-headquarters #t -want-sellbot-headquarters #t -want-cashbot-headquarters #t -want-lawbot-headquarters #t -want-bossbot-headquarters #t - -# Cashbot boss: -want-resistance-toonup #t -want-resistance-restock #t -want-resistance-dance #f - -# Cog battles: -base-xp-multiplier 1.0 - -# Cog buildings: -want-cogbuildings #t - -# Optional: -show-total-population #t -want-mat-all-tailors #t -want-long-pattern-game #f -want-talkative-tyler #f -want-yin-yang #f - -# Developer options: -want-dev #f -want-pstats 0 - -# Temporary: -smooth-lag 0.4 -want-old-fireworks #t - -# Live updates: +# Window settings: +window-title Toontown Unlimited +win-origin -1 -1 +icon-filename phase_3/etc/icon.ico +cursor-filename phase_3/etc/toonmono.cur + +# Audio: +audio-library-name p3fmod_audio + +# Graphics: +aux-display pandagl +aux-display pandadx9 +aux-display p3tinydisplay + +# Models: +model-cache-models #f +model-cache-textures #f +default-model-extension .bam + +# Textures: +texture-anisotropic-degree 16 + +# Preferences: +preferences-filename preferences.json + +# Content packs: +content-packs-filepath contentpacks/ +content-packs-sort-filename sort.yaml + +# Backups: +backups-filepath backups/ +backups-extension .json + +# Server: +server-timezone EST/EDT/-5 +server-port 7199 +account-server-endpoint https://toontownunlimited.com/api/ +account-bridge-filename astron/databases/account-bridge.db + +# Performance: +sync-video #f +texture-power-2 none +gl-check-errors #f +garbage-collect-states #f + +# Egg object types: +egg-object-type-barrier collide-mask { 0x01 } { Polyset descend } +egg-object-type-trigger collide-mask { 0x01 } { Polyset descend intangible } +egg-object-type-sphere collide-mask { 0x01 } { Sphere descend } +egg-object-type-trigger-sphere collide-mask { 0x01 } { Sphere descend intangible } +egg-object-type-floor collide-mask { 0x02 } { Polyset descend } +egg-object-type-dupefloor collide-mask { 0x02 } { Polyset keep descend } +egg-object-type-camera-collide collide-mask { 0x04 } { Polyset descend } +egg-object-type-camera-collide-sphere collide-mask { 0x04 } { Sphere descend } +egg-object-type-camera-barrier collide-mask { 0x05 } { Polyset descend } +egg-object-type-camera-barrier-sphere collide-mask { 0x05 } { Sphere descend } +egg-object-type-model { 1 } +egg-object-type-dcs { 1 } + +# Safe zones: +want-safe-zones #t +want-toontown-central #t +want-donalds-dock #t +want-daisys-garden #t +want-minnies-melodyland #t +want-the-burrrgh #t +want-donalds-dreamland #t +want-goofy-speedway #t +want-outdoor-zone #t +want-golf-zone #t + +# Safe zone settings: +want-treasure-planners #t +want-suit-planners #t +want-butterflies #f + +# Classic characters: +want-classic-chars #t +want-mickey #t +want-donald-dock #t +want-daisy #t +want-minnie #t +want-pluto #t +want-donald-dreamland #t +want-chip-and-dale #t +want-goofy #t + +# Trolley minigames: +want-minigames #t +want-photo-game #f +want-travel-game #f + +# Picnic table board games: +want-game-tables #f + +# Cog headquarters: +want-cog-headquarters #t +want-sellbot-headquarters #t +want-cashbot-headquarters #t +want-lawbot-headquarters #t +want-bossbot-headquarters #t + +# Cashbot boss: +want-resistance-toonup #t +want-resistance-restock #t +want-resistance-dance #f + +# Cog battles: +base-xp-multiplier 1.0 + +# Cog Dominiums +want-emblems #t +cogdo-want-barrel-room #t +want-lawbot-cogdo #t + +# Cog buildings: +want-cogbuildings #t + +# Optional: +show-total-population #t +want-mat-all-tailors #t +want-long-pattern-game #f +want-talkative-tyler #f +want-yin-yang #f + +# Developer options: +want-dev #f +want-pstats 0 + +# Temporary: +smooth-lag 0.4 +want-old-fireworks #t + +# Live updates: want-live-updates #t \ No newline at end of file diff --git a/otp/distributed/DCClassImports.py b/otp/distributed/DCClassImports.py index 7b063f86..6a9fbdec 100644 --- a/otp/distributed/DCClassImports.py +++ b/otp/distributed/DCClassImports.py @@ -1,58 +1,58 @@ -# This file was generated by the parse_dclass.py utility. -from pandac.PandaModules import * - - -hashVal = 1165841663 - - -from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot -from toontown.golf import DistributedPhysicsWorld, DistributedGolfHole, DistributedGolfCourse -from toontown.building import DistributedAnimatedProp, DistributedTrophyMgr, DistributedBuilding, DistributedAnimBuilding, DistributedBuildingQueryMgr, DistributedToonInterior, DistributedToonHallInterior, DistributedSuitInterior, DistributedHQInterior, DistributedGagshopInterior, DistributedPetshopInterior, DistributedKartShopInterior, DistributedBankInterior, DistributedBankCollectable, DistributedLibraryInterior, DistributedDoor, DistributedAnimDoor, DistributedKnockKnockDoor, DistributedElevator, DistributedElevatorFSM, DistributedElevatorExt, DistributedElevatorInt, DistributedElevatorFloor, DistributedBossElevator, DistributedVPElevator, DistributedCFOElevator, DistributedCJElevator, DistributedBBElevator, DistributedBoardingParty, DistributedTutorialInterior, DistributedClubElevator -from toontown.uberdog.DistributedPartyManager import DistributedPartyManager -from otp.friends import FriendManager, AvatarFriendsManager, PlayerFriendsManager, GuildManager, FriendInfo, AvatarFriendInfo -from otp.level import DistributedLevel, DistributedEntity, DistributedInteractiveEntity -from toontown.shtiker import DeleteManager, PurchaseManager, NewbiePurchaseManager -from toontown.pets import DistributedPetProxy -from toontown.uberdog.ClientServicesManager import ClientServicesManager -from toontown.ai import WelcomeValleyManager, NewsManager, DistributedAprilToonsMgr, DistributedBlackCatMgr, DistributedPolarBearMgr, DistributedPolarPlaceEffectMgr, DistributedGreenToonEffectMgr, DistributedResistanceEmoteMgr, DistributedScavengerHuntTarget, DistributedTrickOrTreatTarget, DistributedWinterCarolingTarget, DistributedSillyMeterMgr -from toontown.ai.DistributedTrashcanZeroMgr import DistributedTrashcanZeroMgr -from toontown.uberdog.DistributedMailManager import DistributedMailManager -from otp.chat import ChatAgent -from toontown.classicchars import DistributedCCharBase, DistributedMickey, DistributedVampireMickey, DistributedMinnie, DistributedWitchMinnie, DistributedGoofy, DistributedSuperGoofy, DistributedDaisy, DistributedSockHopDaisy, DistributedChip, DistributedPoliceChip, DistributedDale, DistributedJailbirdDale, DistributedGoofySpeedway, DistributedDonald, DistributedFrankenDonald, DistributedDonaldDock, DistributedPluto, DistributedWesternPluto -from toontown.uberdog.DistributedCpuInfoMgr import DistributedCpuInfoMgr -from toontown.parties.GlobalPartyManager import GlobalPartyManager -from toontown.racing.DistributedStartingBlock import DistributedViewingBlock -from toontown.ai.DistributedPhaseEventMgr import DistributedPhaseEventMgr -from toontown.pets.PetDCImports import * -from toontown.suit import DistributedSuitPlanner, DistributedSuitBase, DistributedSuit, DistributedTutorialSuit, DistributedFactorySuit, DistributedMintSuit, DistributedStageSuit, DistributedSellbotBoss, DistributedCashbotBoss, DistributedCashbotBossGoon, DistributedGoon, DistributedGridGoon, DistributedLawbotBoss, DistributedLawbotBossSuit, DistributedBossbotBoss -from toontown.distributed import ToontownDistrict, ToontownDistrictStats, DistributedTimer -from toontown.effects import DistributedFireworkShow -from toontown.uberdog.DistributedDataStoreManager import DistributedDataStoreManager -from toontown.safezone import DistributedTrolley, DistributedPartyGate, DistributedBoat, DistributedButterfly, DistributedMMPiano, DistributedDGFlower, DistributedFishingSpot, SafeZoneManager, DistributedTreasure, DistributedGolfKart, DistributedPicnicBasket, DistributedGameTable, DistributedChineseCheckers, DistributedCheckers, DistributedFindFour -from toontown.fishing import DistributedFishingPond, DistributedFishingTarget, DistributedPondBingoManager -from toontown.minigame import DistributedMinigame, DistributedMinigameTemplate, DistributedRaceGame, DistributedCannonGame, DistributedPhotoGame, DistributedPatternGame, DistributedRingGame, DistributedTagGame, DistributedMazeGame, DistributedTugOfWarGame, DistributedCatchGame, DistributedDivingGame, DistributedTargetGame, DistributedTravelGame, DistributedPairingGame, DistributedVineGame, DistributedIceGame, DistributedCogThiefGame, DistributedTwoDGame -from toontown.racing import DistributedVehicle, DistributedStartingBlock, DistributedRace, DistributedKartPad, DistributedRacePad, DistributedViewPad, DistributedStartingBlock, DistributedLeaderBoard, DistributedGag, DistributedProjectile -from toontown.distributed.NonRepeatableRandomSourceUD import NonRepeatableRandomSourceUD -from toontown.catalog import CatalogManager -from toontown.ai.DistributedHydrantZeroMgr import DistributedHydrantZeroMgr -from toontown.rpc.AwardManager import AwardManager -from toontown.parties import DistributedParty, DistributedPartyActivity, DistributedPartyTeamActivity, DistributedPartyCannon, DistributedPartyCannonActivity, DistributedPartyCatchActivity, DistributedPartyWinterCatchActivity, DistributedPartyCogActivity, DistributedPartyWinterCogActivity, DistributedPartyFireworksActivity, DistributedPartyDanceActivityBase, DistributedPartyDanceActivity, DistributedPartyDance20Activity, DistributedPartyValentineDanceActivity, DistributedPartyValentineDance20Activity, DistributedPartyTrampolineActivity, DistributedPartyValentineTrampolineActivity, DistributedPartyVictoryTrampolineActivity, DistributedPartyWinterTrampolineActivity, DistributedPartyTugOfWarActivity, DistributedPartyJukeboxActivityBase, DistributedPartyJukeboxActivity, DistributedPartyJukebox40Activity, DistributedPartyValentineJukeboxActivity, DistributedPartyValentineJukebox40Activity -from toontown.uberdog.DistributedInGameNewsMgr import DistributedInGameNewsMgr -from toontown.coghq.InGameEditorDCImports import * -from toontown.friends import TTPlayerFriendsManager, TTUFriendsManager -from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog -from otp.distributed import Account, ObjectServer, DistributedDistrict, DistributedDirectory, DistributedTestObject, CentralLogger -from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedBankMgr, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor -from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCYin, DistributedNPCYang, DistributedNPCBanker -from toontown.tutorial import DistributedBattleTutorial, TutorialManager -from toontown.coderedemption.TTCodeRedemptionMgr import TTCodeRedemptionMgr -from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI -from toontown.ai.DistributedMailboxZeroMgr import DistributedMailboxZeroMgr -from toontown.uberdog.DistributedDeliveryManager import DistributedDeliveryManager -from direct.distributed import DistributedObject, DistributedNode, DistributedSmoothNode, DistributedCartesianGrid, DistributedCamera, DistributedObjectGlobal -from otp.ai import TimeManager, MagicWordManager -from otp.avatar import DistributedAvatar, DistributedPlayer, AvatarHandle -from toontown.battle import DistributedBattleBase, DistributedBattle, DistributedBattleBldg, DistributedBattleFinal, DistributedBattleWaiters, DistributedBattleDiners - - -dcImports = locals().copy() +# This file was generated by the parse_dclass.py utility. +from pandac.PandaModules import * + + +hashVal = 2177730225L + + +from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot +from toontown.golf import DistributedPhysicsWorld, DistributedGolfHole, DistributedGolfCourse +from toontown.building import DistributedAnimatedProp, DistributedTrophyMgr, DistributedBuilding, DistributedAnimBuilding, DistributedBuildingQueryMgr, DistributedToonInterior, DistributedToonHallInterior, DistributedSuitInterior, DistributedHQInterior, DistributedGagshopInterior, DistributedPetshopInterior, DistributedKartShopInterior, DistributedBankInterior, DistributedBankCollectable, DistributedLibraryInterior, DistributedDoor, DistributedAnimDoor, DistributedKnockKnockDoor, DistributedElevator, DistributedElevatorFSM, DistributedElevatorExt, DistributedElevatorInt, DistributedElevatorFloor, DistributedBossElevator, DistributedVPElevator, DistributedCFOElevator, DistributedCJElevator, DistributedBBElevator, DistributedBoardingParty, DistributedTutorialInterior, DistributedClubElevator +from toontown.uberdog.DistributedPartyManager import DistributedPartyManager +from otp.friends import FriendManager, AvatarFriendsManager, PlayerFriendsManager, GuildManager, FriendInfo, AvatarFriendInfo +from otp.level import DistributedLevel, DistributedEntity, DistributedInteractiveEntity +from toontown.shtiker import DeleteManager, PurchaseManager, NewbiePurchaseManager +from toontown.pets import DistributedPetProxy +from toontown.uberdog.ClientServicesManager import ClientServicesManager +from toontown.ai import WelcomeValleyManager, NewsManager, DistributedAprilToonsMgr, DistributedBlackCatMgr, DistributedPolarBearMgr, DistributedPolarPlaceEffectMgr, DistributedGreenToonEffectMgr, DistributedResistanceEmoteMgr, DistributedScavengerHuntTarget, DistributedTrickOrTreatTarget, DistributedWinterCarolingTarget, DistributedSillyMeterMgr +from toontown.ai.DistributedTrashcanZeroMgr import DistributedTrashcanZeroMgr +from toontown.uberdog.DistributedMailManager import DistributedMailManager +from otp.chat import ChatAgent +from toontown.classicchars import DistributedCCharBase, DistributedMickey, DistributedVampireMickey, DistributedMinnie, DistributedWitchMinnie, DistributedGoofy, DistributedSuperGoofy, DistributedDaisy, DistributedSockHopDaisy, DistributedChip, DistributedPoliceChip, DistributedDale, DistributedJailbirdDale, DistributedGoofySpeedway, DistributedDonald, DistributedFrankenDonald, DistributedDonaldDock, DistributedPluto, DistributedWesternPluto +from toontown.uberdog.DistributedCpuInfoMgr import DistributedCpuInfoMgr +from toontown.parties.GlobalPartyManager import GlobalPartyManager +from toontown.racing.DistributedStartingBlock import DistributedViewingBlock +from toontown.ai.DistributedPhaseEventMgr import DistributedPhaseEventMgr +from toontown.pets.PetDCImports import * +from toontown.suit import DistributedSuitPlanner, DistributedSuitBase, DistributedSuit, DistributedTutorialSuit, DistributedFactorySuit, DistributedMintSuit, DistributedStageSuit, DistributedSellbotBoss, DistributedCashbotBoss, DistributedCashbotBossGoon, DistributedGoon, DistributedGridGoon, DistributedLawbotBoss, DistributedLawbotBossSuit, DistributedBossbotBoss +from toontown.distributed import ToontownDistrict, ToontownDistrictStats, DistributedTimer +from toontown.effects import DistributedFireworkShow +from toontown.uberdog.DistributedDataStoreManager import DistributedDataStoreManager +from toontown.safezone import DistributedTrolley, DistributedPartyGate, DistributedBoat, DistributedButterfly, DistributedMMPiano, DistributedDGFlower, DistributedFishingSpot, SafeZoneManager, DistributedTreasure, DistributedGolfKart, DistributedPicnicBasket, DistributedGameTable, DistributedChineseCheckers, DistributedCheckers, DistributedFindFour +from toontown.fishing import DistributedFishingPond, DistributedFishingTarget, DistributedPondBingoManager +from toontown.minigame import DistributedMinigame, DistributedMinigameTemplate, DistributedRaceGame, DistributedCannonGame, DistributedPhotoGame, DistributedPatternGame, DistributedRingGame, DistributedTagGame, DistributedMazeGame, DistributedTugOfWarGame, DistributedCatchGame, DistributedDivingGame, DistributedTargetGame, DistributedTravelGame, DistributedPairingGame, DistributedVineGame, DistributedIceGame, DistributedCogThiefGame, DistributedTwoDGame +from toontown.racing import DistributedVehicle, DistributedStartingBlock, DistributedRace, DistributedKartPad, DistributedRacePad, DistributedViewPad, DistributedStartingBlock, DistributedLeaderBoard, DistributedGag, DistributedProjectile +from toontown.distributed.NonRepeatableRandomSourceUD import NonRepeatableRandomSourceUD +from toontown.catalog import CatalogManager +from toontown.ai.DistributedHydrantZeroMgr import DistributedHydrantZeroMgr +from toontown.rpc.AwardManager import AwardManager +from toontown.parties import DistributedParty, DistributedPartyActivity, DistributedPartyTeamActivity, DistributedPartyCannon, DistributedPartyCannonActivity, DistributedPartyCatchActivity, DistributedPartyWinterCatchActivity, DistributedPartyCogActivity, DistributedPartyWinterCogActivity, DistributedPartyFireworksActivity, DistributedPartyDanceActivityBase, DistributedPartyDanceActivity, DistributedPartyDance20Activity, DistributedPartyValentineDanceActivity, DistributedPartyValentineDance20Activity, DistributedPartyTrampolineActivity, DistributedPartyValentineTrampolineActivity, DistributedPartyVictoryTrampolineActivity, DistributedPartyWinterTrampolineActivity, DistributedPartyTugOfWarActivity, DistributedPartyJukeboxActivityBase, DistributedPartyJukeboxActivity, DistributedPartyJukebox40Activity, DistributedPartyValentineJukeboxActivity, DistributedPartyValentineJukebox40Activity +from toontown.uberdog.DistributedInGameNewsMgr import DistributedInGameNewsMgr +from toontown.coghq.InGameEditorDCImports import * +from toontown.friends import TTPlayerFriendsManager, TTUFriendsManager +from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog +from otp.distributed import Account, ObjectServer, DistributedDistrict, DistributedDirectory, DistributedTestObject, CentralLogger +from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedBankMgr, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor +from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCYin, DistributedNPCYang, DistributedNPCBanker +from toontown.tutorial import DistributedBattleTutorial, TutorialManager +from toontown.coderedemption.TTCodeRedemptionMgr import TTCodeRedemptionMgr +from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI +from toontown.ai.DistributedMailboxZeroMgr import DistributedMailboxZeroMgr +from toontown.uberdog.DistributedDeliveryManager import DistributedDeliveryManager +from direct.distributed import DistributedObject, DistributedNode, DistributedSmoothNode, DistributedCartesianGrid, DistributedCamera, DistributedObjectGlobal +from otp.ai import TimeManager, MagicWordManager +from otp.avatar import DistributedAvatar, DistributedPlayer, AvatarHandle +from toontown.battle import DistributedBattleBase, DistributedBattle, DistributedBattleBldg, DistributedBattleFinal, DistributedBattleWaiters, DistributedBattleDiners + + +dcImports = locals().copy() diff --git a/toontown/cogdominium/CogdoBarrelRoom.py b/toontown/cogdominium/CogdoBarrelRoom.py index 61d98163..958cd119 100644 --- a/toontown/cogdominium/CogdoBarrelRoom.py +++ b/toontown/cogdominium/CogdoBarrelRoom.py @@ -37,8 +37,6 @@ class CogdoBarrelRoom: self.model.setPos(*CogdoBarrelRoomConsts.BarrelRoomModelPos) self.model.reparentTo(render) self.model.stash() - self.dummyElevInNode = self.model.attachNewNode('elevator-in') - self.dummyElevInNode.hide() self.entranceNode = self.model.attachNewNode('door-entrance') self.entranceNode.setPos(0, -65, 0) self.nearBattleNode = self.model.attachNewNode('near-battle') @@ -49,6 +47,11 @@ class CogdoBarrelRoom: self.fog = Fog('barrel-room-fog') self.fog.setColor(CogdoBarrelRoomConsts.BarrelRoomFogColor) self.fog.setLinearRange(*CogdoBarrelRoomConsts.BarrelRoomFogLinearRange) + self.brBarrel = render.attachNewNode('@@CogdoBarrels') + for i in range(len(CogdoBarrelRoomConsts.BarrelProps)): + self.bPath = self.brBarrel.attachNewNode('%s%s'% (CogdoBarrelRoomConsts.BarrelPathName, i)) + self.bPath.setPos(CogdoBarrelRoomConsts.BarrelProps[i]['pos']) + self.bPath.setH(CogdoBarrelRoomConsts.BarrelProps[i]['heading']) self._isLoaded = True def unload(self): @@ -61,9 +64,10 @@ class CogdoBarrelRoom: if self.rewardUi: self.rewardUi.destroy() self.rewardUi = None - if self.fog: - render.setFogOff() - del self.fog + if hasattr(self, 'fog'): + if self.fog: + render.setFogOff() + del self.fog taskMgr.remove(self.rewardUiTaskName) taskMgr.remove(self.rewardCameraTaskName) self._isLoaded = False @@ -75,8 +79,9 @@ class CogdoBarrelRoom: def show(self): if not self.cogdoBarrelsNode: self.cogdoBarrelsNode = render.find('**/@@CogdoBarrels') - self.cogdoBarrelsNode.reparentTo(self.model) - self.cogdoBarrelsNode.unstash() + if not self.cogdoBarrelsNode.isEmpty(): + self.cogdoBarrelsNode.reparentTo(self.model) + self.cogdoBarrelsNode.unstash() self.defaultFar = base.camLens.getFar() base.camLens.setFar(CogdoBarrelRoomConsts.BarrelRoomCameraFar) self.showBattleAreaLight(True) @@ -85,7 +90,7 @@ class CogdoBarrelRoom: def hide(self): self.model.stash() - render.setFogOff() + #render.setFogOff() if self.defaultFar is not None: base.camLens.setFar(self.defaultFar) return @@ -103,11 +108,11 @@ class CogdoBarrelRoom: self.timer.stash() def placeToonsAtEntrance(self, toons): - for i in xrange(len(toons)): + for i in range(len(toons)): toons[i].setPosHpr(self.entranceNode, *CogdoBarrelRoomConsts.BarrelRoomPlayerSpawnPoints[i]) def placeToonsNearBattle(self, toons): - for i in xrange(len(toons)): + for i in range(len(toons)): toons[i].setPosHpr(self.nearBattleNode, *CogdoBarrelRoomConsts.BarrelRoomPlayerSpawnPoints[i]) def showBattleAreaLight(self, visible = True): @@ -158,10 +163,10 @@ class CogdoBarrelRoom: track = Sequence(Func(camera.reparentTo, render), Func(camera.setPosHpr, self.model, 0, 0, 11.0, 0, -14, 0), Func(self.showBattleAreaLight, False), name=trackName) return (track, trackName) - def showRewardUi(self, results, callback = None): + def showRewardUi(self, callback = None): track, trackName = self.__rewardCamera() if CogdoBarrelRoomConsts.ShowRewardUI: - self.rewardUi.setRewards(results) + self.rewardUi.setRewards() self.rewardUi.unstash() taskMgr.doMethodLater(CogdoBarrelRoomConsts.RewardUiTime, self.__rewardUiTimeout, self.rewardUiTaskName, extraArgs=[callback]) return (track, trackName) diff --git a/toontown/cogdominium/CogdoBarrelRoomConsts.py b/toontown/cogdominium/CogdoBarrelRoomConsts.py index ca4055d1..d665f7cf 100644 --- a/toontown/cogdominium/CogdoBarrelRoomConsts.py +++ b/toontown/cogdominium/CogdoBarrelRoomConsts.py @@ -1,9 +1,9 @@ from pandac.PandaModules import * CollectionTime = 30 -BarrelRoomIntroTimeout = 15.0 +BarrelRoomIntroTimeout = 12.0 RewardUiTime = 5.0 -EndWithAllBarrelsCollected = False -ShowRewardUI = False +EndWithAllBarrelsCollected = True +ShowRewardUI = True AllBarrelsCollectedTime = 5.0 ToonUp = (2, 4) BarrelProps = [{'pos': (-10, -66, 0), @@ -26,7 +26,7 @@ BarrelProps = [{'pos': (-10, -66, 0), 'heading': 141}, {'pos': (10, -14.4, 0), 'heading': 2}] -StomperProps = [{'path': '**/stomper_GRP_01/stomper_cylinder_01', +StomperProps = [{'path': '**/stomper_GRP_01/stomper_cylinder_034', 'motion': 'up'}, {'path': '**/stomper_GRP_02/stomper_cylinder_034', 'motion': 'down'}, @@ -55,6 +55,7 @@ StomperSound = 'phase_9/audio/sfx/CHQ_FACT_stomper_raise.ogg' MaxToons = 4 BarrelRoomModel = 'phase_5/models/cogdominium/tt_m_ara_cbr_barrelRoom' BarrelRoomModelPos = (0, 0, 0) +BarrelRoomElevatorInPath = '**/elevatorIn_locator' BarrelRoomElevatorOutPath = '**/elevatorOut_locator' BarrelRoomPlayerSpawnPoints = [(-4, 0, @@ -83,6 +84,7 @@ BarrelRoomPlayerSpawnPoints = [(-4, BarrelRoomCameraFar = 525.0 BarrelRoomFogColor = Vec4(0.65, 0.21, 0, 1.0) BarrelRoomFogLinearRange = (0.0, 800.0) +BarrelPathName = 'CogdoBarrel_' BarrelModel = 'phase_5/models/cogdominium/tt_m_ara_cbr_laughBarrel' BarrelModelScale = 1.0 BarrelCollParams = (0, @@ -91,6 +93,8 @@ BarrelCollParams = (0, 2.0) BarrelBumpSound = 'phase_4/audio/sfx/Golf_Hit_Barrier_2.ogg' BarrelGrabSound = 'phase_4/audio/sfx/SZ_DD_treasure.ogg' +BarrelAvailableTexture = 'phase_5/maps/tt_t_ara_cbr_Barrel_notUsed.jpg' +BarrelUsedTexture = 'phase_5/maps/tt_t_ara_cbr_Barrel_Used.jpg' StateHidden, StateAvailable, StateUsed, StateCrushed = range(4) def numBarrels(): diff --git a/toontown/cogdominium/CogdoBarrelRoomMovies.py b/toontown/cogdominium/CogdoBarrelRoomMovies.py new file mode 100644 index 00000000..3b709c16 --- /dev/null +++ b/toontown/cogdominium/CogdoBarrelRoomMovies.py @@ -0,0 +1,118 @@ +from pandac.PandaModules import NodePath, Point3, PlaneNode, TextNode +from direct.interval.IntervalGlobal import * +from direct.showbase.ShowBase import Plane +from direct.directnotify import DirectNotifyGlobal +from direct.showbase.RandomNumGen import RandomNumGen +from direct.interval.MetaInterval import Sequence, Parallel +from direct.interval.FunctionInterval import Func, Wait +from direct.gui.DirectGui import * +from toontown.toonbase.ToontownGlobals import * +from toontown.toonbase import TTLocalizer +from toontown.suit import Suit, SuitDNA +from toontown.toon import Toon, ToonHead, ToonDNA +from DistributedCogdoInterior import * +from CogdoUtil import CogdoGameMovie +import CogdoBarrelRoomConsts, CogdoUtil + +class CogdoBarrelRoomIntro(CogdoGameMovie): + notify = DirectNotifyGlobal.directNotify.newCategory('CogdoElevatorMovie') + + def __init__(self): + CogdoGameMovie.__init__(self) + self._toonDialogueSfx = None + self.toonHead = None + self.frame = None + return + + def displayLine(self, text): + self.notify.debug('displayLine') + self._dialogueLabel.node().setText(text) + self.toonHead.reparentTo(aspect2d) + self._toonDialogueSfx.play() + self.toonHead.setClipPlane(self.clipPlane) + + def makeSuit(self, suitType): + self.notify.debug('makeSuit()') + suit = Suit.Suit() + dna = SuitDNA.SuitDNA() + dna.newSuit(suitType) + suit.setStyle(dna) + suit.isDisguised = 1 + suit.generateSuit() + suit.setScale(1, 1, 2) + suit.setPos(0, 0, -4.4) + suit.reparentTo(self.toonHead) + for part in suit.getHeadParts(): + part.hide() + + suit.loop('neutral') + + def load(self): + self.notify.debug('load()') + CogdoGameMovie.load(self) + backgroundGui = loader.loadModel('phase_5/models/cogdominium/tt_m_gui_csa_flyThru') + self.bg = backgroundGui.find('**/background') + self.chatBubble = backgroundGui.find('**/chatBubble') + self.chatBubble.setScale(6.5, 6.5, 7.3) + self.chatBubble.setPos(0.32, 0, -0.78) + self.bg.setScale(5.2) + self.bg.setPos(0.14, 0, -0.6667) + self.bg.reparentTo(aspect2d) + self.chatBubble.reparentTo(aspect2d) + self.frame = DirectFrame(geom=self.bg, relief=None, pos=(0.2, 0, -0.6667)) + self.bg.wrtReparentTo(self.frame) + self.gameTitleText = DirectLabel(parent=self.frame, text=TTLocalizer.CogdoBarrelRoomTitle, scale=TTLocalizer.MRPgameTitleText * 0.8, text_align=TextNode.ACenter, text_font=getSignFont(), text_fg=(1.0, 0.33, 0.33, 1.0), pos=TTLocalizer.MRgameTitleTextPos, relief=None) + self.chatBubble.wrtReparentTo(self.frame) + self.frame.hide() + backgroundGui.removeNode() + self.toonDNA = ToonDNA.ToonDNA() + self.toonDNA.newToonFromProperties('dss', 'ss', 'm', 'm', 2, 0, 2, 2, 1, 8, 1, 8, 1, 14) + self.toonHead = Toon.Toon() + self.toonHead.setDNA(self.toonDNA) + self.makeSuit('sc') + self.toonHead.getGeomNode().setDepthWrite(1) + self.toonHead.getGeomNode().setDepthTest(1) + self.toonHead.loop('neutral') + self.toonHead.setPosHprScale(-0.73, 0, -1.27, 180, 0, 0, 0.18, 0.18, 0.18) + self.toonHead.reparentTo(hidden) + self.toonHead.startBlink() + self.clipPlane = self.toonHead.attachNewNode(PlaneNode('clip')) + self.clipPlane.node().setPlane(Plane(0, 0, 1, 0)) + self.clipPlane.setPos(0, 0, 2.45) + self._toonDialogueSfx = loader.loadSfx('phase_3.5/audio/dial/AV_dog_long.ogg') + self._camHelperNode = NodePath('CamHelperNode') + self._camHelperNode.reparentTo(render) + dialogue = TTLocalizer.CogdoBarrelRoomIntroDialog + + def start(): + self.frame.show() + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 0) + + def end(): + self._dialogueLabel.reparentTo(hidden) + self.toonHead.reparentTo(hidden) + self.frame.hide() + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 1) + self._stopUpdateTask() + + self._ival = Sequence(Func(start), Func(self.displayLine, dialogue), Wait(CogdoBarrelRoomConsts.BarrelRoomIntroTimeout), Func(end)) + self._startUpdateTask() + return + + def _updateTask(self, task): + dt = globalClock.getDt() + return task.cont + + def unload(self): + self.frame.destroy() + del self.frame + self.bg.removeNode() + del self.bg + self.chatBubble.removeNode() + del self.chatBubble + self.toonHead.stopBlink() + self.toonHead.stop() + self.toonHead.removeNode() + self.toonHead.delete() + del self.toonHead + CogdoGameMovie.unload(self) \ No newline at end of file diff --git a/toontown/cogdominium/CogdoBarrelRoomRewardPanel.py b/toontown/cogdominium/CogdoBarrelRoomRewardPanel.py index 620c4bb7..051c4d22 100644 --- a/toontown/cogdominium/CogdoBarrelRoomRewardPanel.py +++ b/toontown/cogdominium/CogdoBarrelRoomRewardPanel.py @@ -1,12 +1,13 @@ from pandac.PandaModules import * from direct.gui.DirectGui import * +from toontown.toon import DistributedToon from toontown.toonbase import ToontownGlobals, TTLocalizer from toontown.cogdominium import CogdoBarrelRoomConsts class CogdoBarrelRoomRewardPanel(DirectFrame): def __init__(self): - DirectFrame.__init__(self, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=TTLocalizer.RPdirectFrame, pos=(0, 0, 0.587)) + DirectFrame.__init__(self, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=TTLocalizer.RPdirectFrame, pos=(0, 0, -0.587)) self.initialiseoptions(CogdoBarrelRoomRewardPanel) self.avNameLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, 0.3), text='Toon Ups', text_scale=0.08) self.rewardLines = [] @@ -22,15 +23,15 @@ class CogdoBarrelRoomRewardPanel(DirectFrame): return - def setRewards(self, results): - for p in xrange(len(results[0])): - doId = results[0][p] - laff = results[1][p] - if doId > 0 and doId in base.cr.doId2do: - toon = base.cr.doId2do[doId] - self.rewardLines[p]['name'].setProp('text', toon.getName()) - self.rewardLines[p]['laff'].setProp('text', str(laff)) + def setRewards(self): + RewardLineIndex = 0 + for doId in base.cr.doId2do: + toon = base.cr.doId2do.get(doId) + if isinstance(toon, DistributedToon.DistributedToon): + self.rewardLines[RewardLineIndex]['name'].setProp('text', toon.getName()) + self.rewardLines[RewardLineIndex]['laff'].setProp('text', '%s/%s' % (str(toon.hp), str(toon.maxHp))) if doId == base.localAvatar.getDoId(): - self.rewardLines[p]['frame'].setProp('relief', DGG.RIDGE) - self.rewardLines[p]['frame'].setProp('borderWidth', (0.01, 0.01)) - self.rewardLines[p]['frame'].setProp('frameColor', (1, 1, 1, 0.5)) + self.rewardLines[RewardLineIndex]['frame'].setProp('relief', DGG.RIDGE) + self.rewardLines[RewardLineIndex]['frame'].setProp('borderWidth', (0.01, 0.01)) + self.rewardLines[RewardLineIndex]['frame'].setProp('frameColor', (1, 1, 1, 0.5)) + RewardLineIndex += 1 diff --git a/toontown/cogdominium/CogdoCraneGame.py b/toontown/cogdominium/CogdoCraneGame.py new file mode 100644 index 00000000..653012dc --- /dev/null +++ b/toontown/cogdominium/CogdoCraneGame.py @@ -0,0 +1,74 @@ +import CogdoCraneGameConsts as Globals +from CogdoGameAudioManager import CogdoGameAudioManager + +class CogdoCraneGame(DirectObject): + notify = directNotify.newCategory('CogdoFlyingGame') + + def __init__(self, distGame): + self.distGame = distGame + self.toonId2Player = {} + self.players = [] + + def _initAudio(self): + self._audioMgr = CogdoGameAudioManager(Globals.MusicFiles, Globals.SfxFiles, camera, cutoff=Globals.AudioCutoff) + + def _destroyAudio(self): + self._audioMgr.destroy() + del self._audioMgr + + def load(self): + self._initAudio() + + def unload(self): + self._destroyAudio() + del self.toonId2Player + + def onstage(self): + pass + + def offstage(self): + pass + + def startIntro(self): + self._audioMgr.playMusic('normal') + + def endIntro(self): + for player in self.players: + self.placePlayer(player) + if player.toon is localAvatar: + localAvatar.sendCurrentPosition() + player.request('Ready') + + def startFinish(self): + pass + + def endFinish(self): + pass + + def start(self): + for player in self.players: + player.handleGameStart() + player.request('Normal') + + def exit(self): + for player in self.players: + player.request('Done') + + def _addPlayer(self, player): + self.players.append(player) + self.toonId2Player[player.toon.doId] = player + + def _removePlayer(self, player): + if player in self.players: + self.players.remove(player) + else: + for cPlayer in self.players: + if cPlayer.toon == player.toon: + self.players.remove(cPlayer) + break + + if self.toonId2Player.has_key(player.toon.doId): + del self.toonId2Player[player.toon.doId] + + def handleToonLeft(self, toonId): + self._removePlayer(self.toonId2Player[toonId]) \ No newline at end of file diff --git a/toontown/cogdominium/CogdoCraneGameConsts.py b/toontown/cogdominium/CogdoCraneGameConsts.py index 2ea2f3ee..3f75ac51 100644 --- a/toontown/cogdominium/CogdoCraneGameConsts.py +++ b/toontown/cogdominium/CogdoCraneGameConsts.py @@ -1,6 +1,14 @@ from direct.fsm.StatePush import StateVar from otp.level.EntityStateVarSet import EntityStateVarSet +from CogdoUtil import VariableContainer from toontown.cogdominium.CogdoEntityTypes import CogdoCraneGameSettings, CogdoCraneCogSettings +Gameplay = VariableContainer() +Gameplay.SecondsUntilGameOver = 60.0 * 3.0 +Gameplay.TimeRunningOutSeconds = 45.0 +Audio = VariableContainer() +Audio.MusicFiles = {'normal': 'phase_9/audio/bgm/CHQ_FACT_bg.ogg', + 'end': 'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg', + 'timeRunningOut': 'phase_7/audio/bgm/encntr_suit_winning_indoor.ogg'} Settings = EntityStateVarSet(CogdoCraneGameSettings) CogSettings = EntityStateVarSet(CogdoCraneCogSettings) CranePosHprs = [(13.4, -136.6, 6, -45, 0, 0), diff --git a/toontown/cogdominium/CogdoElevatorMovie.py b/toontown/cogdominium/CogdoElevatorMovie.py index 29eca097..67fb0256 100644 --- a/toontown/cogdominium/CogdoElevatorMovie.py +++ b/toontown/cogdominium/CogdoElevatorMovie.py @@ -10,6 +10,7 @@ from toontown.toonbase.ToontownGlobals import * from toontown.toonbase import TTLocalizer from toontown.suit import Suit, SuitDNA from toontown.toon import Toon, ToonHead, ToonDNA +from DistributedCogdoInterior import * from CogdoUtil import CogdoGameMovie import CogdoUtil @@ -82,17 +83,17 @@ class CogdoElevatorMovie(CogdoGameMovie): self._toonDialogueSfx = loader.loadSfx('phase_3.5/audio/dial/AV_dog_long.ogg') self._camHelperNode = NodePath('CamHelperNode') self._camHelperNode.reparentTo(render) - dialogue = TTLocalizer.CogdoElevatorRewardLaff + dialogue = TTLocalizer.CogdoMazeGameElevatorRewardLaff def start(): self.frame.show() - base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 0) + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 0) def end(): self._dialogueLabel.reparentTo(hidden) self.toonHead.reparentTo(hidden) self.frame.hide() - base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 1) + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 1) self._stopUpdateTask() self._ival = Sequence(Func(start), Func(self.displayLine, dialogue), Wait(self.elevatorDuration), Func(end)) diff --git a/toontown/cogdominium/CogdoExecutiveSuiteMovies.py b/toontown/cogdominium/CogdoExecutiveSuiteMovies.py index 4ed95df8..96709977 100644 --- a/toontown/cogdominium/CogdoExecutiveSuiteMovies.py +++ b/toontown/cogdominium/CogdoExecutiveSuiteMovies.py @@ -91,7 +91,7 @@ class CogdoExecutiveSuiteIntro(CogdoGameMovie): def start(): self.frame.show() - base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 0) + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 0) def showShopOwner(): self._setCamTarget(self._shopOwner, -10, offset=Point3(0, 0, 5)) @@ -100,7 +100,7 @@ class CogdoExecutiveSuiteIntro(CogdoGameMovie): self._dialogueLabel.reparentTo(hidden) self.toonHead.reparentTo(hidden) self.frame.hide() - base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 1) + base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 1) self._stopUpdateTask() self._ival = Sequence(Func(start), Func(self.displayLine, dialogue), Func(showShopOwner), ParallelEndTogether(camera.posInterval(self.cameraMoveDuration, Point3(8, 0, 13), blendType='easeInOut'), camera.hprInterval(0.5, self._camHelperNode.getHpr(), blendType='easeInOut')), Wait(self.introDuration), Func(end)) diff --git a/toontown/cogdominium/CogdoFlyingCameraManager.py b/toontown/cogdominium/CogdoFlyingCameraManager.py index c77bf741..d0142399 100644 --- a/toontown/cogdominium/CogdoFlyingCameraManager.py +++ b/toontown/cogdominium/CogdoFlyingCameraManager.py @@ -161,26 +161,30 @@ class CogdoFlyingCameraManager: name = entry.getIntoNode().getName() if name.find('col_') >= 0: np = entry.getIntoNodePath().getParent() - if np not in nodesInBetween: + if not nodesInBetween.has_key(np): nodesInBetween[np] = np.getParent() for np in nodesInBetween.keys(): - if np in self._betweenCamAndToon: + if self._betweenCamAndToon.has_key(np): del self._betweenCamAndToon[np] else: np.setTransparency(True) np.wrtReparentTo(self._transNP) if np.getName().find('lightFixture') >= 0: - np.find('**/*floor_mesh').hide() + if not np.find('**/*floor_mesh').isEmpty(): + np.find('**/*floor_mesh').hide() elif np.getName().find('platform') >= 0: - np.find('**/*Floor').hide() + if not np.find('**/*Floor').isEmpty(): + np.find('**/*Floor').hide() for np, parent in self._betweenCamAndToon.items(): np.wrtReparentTo(parent) np.setTransparency(False) if np.getName().find('lightFixture') >= 0: - np.find('**/*floor_mesh').show() + if not np.find('**/*floor_mesh').isEmpty(): + np.find('**/*floor_mesh').show() elif np.getName().find('platform') >= 0: - np.find('**/*Floor').show() + if not np.find('**/*Floor').isEmpty(): + np.find('**/*Floor').show() self._betweenCamAndToon = nodesInBetween diff --git a/toontown/cogdominium/CogdoFlyingGame.py b/toontown/cogdominium/CogdoFlyingGame.py index c46fe749..9cb6d892 100644 --- a/toontown/cogdominium/CogdoFlyingGame.py +++ b/toontown/cogdominium/CogdoFlyingGame.py @@ -160,13 +160,7 @@ class CogdoFlyingGame(DirectObject): self.acceptOnce(CogdoFlyingLocalPlayer.RanOutOfTimeEventName, self.handleLocalPlayerRanOutOfTime) self.__startUpdateTask() self.isGameComplete = False - if __debug__ and base.config.GetBool('schellgames-dev', True): - self.acceptOnce('end', self.guiMgr.forceTimerDone) - def toggleFog(): - self.levelFog.setVisible(not self.levelFog.isVisible()) - - self.accept('home', toggleFog) for eagle in self.legalEagles: eagle.gameStart(self.distGame.getStartTime()) @@ -299,20 +293,22 @@ class CogdoFlyingGame(DirectObject): if gatherable.type in [Globals.Level.GatherableTypes.InvulPowerup]: if player.toon.isLocal(): self.audioMgr.playMusic('invul') + taskMgr.doMethodLater(30, lambda task: self.debuffPowerup(toonId, gatherable.type, elapsedTime), 'gatherable-timeout') else: self.notify.warning('Trying to pickup gatherable nonetype:%s' % pickupNum) return def debuffPowerup(self, toonId, pickupType, elapsedTime): self.notify.debugCall() - player = self.toonId2Player[toonId] - if player.isBuffActive(pickupType): - if pickupType in [Globals.Level.GatherableTypes.InvulPowerup]: - if self.guiMgr.isTimeRunningOut(): - self.audioMgr.playMusic('timeRunningOut') - else: - self.audioMgr.playMusic('normal') - player.handleDebuffPowerup(pickupType, elapsedTime) + if toonId in self.toonId2Player: + player = self.toonId2Player[toonId] + if player.isBuffActive(pickupType): + if pickupType in [Globals.Level.GatherableTypes.InvulPowerup]: + if self.guiMgr.isTimeRunningOut(): + self.audioMgr.playMusic('timeRunningOut') + else: + self.audioMgr.playMusic('normal') + player.handleDebuffPowerup(pickupType, elapsedTime) def handleLocalToonEnterLegalEagle(self, eagle, collEntry): if not self.localPlayer.isEnemyHitting() and not self.localPlayer.isInvulnerable(): diff --git a/toontown/cogdominium/CogdoFlyingGameGlobals.py b/toontown/cogdominium/CogdoFlyingGameGlobals.py index 8f3ecc34..e68348b3 100644 --- a/toontown/cogdominium/CogdoFlyingGameGlobals.py +++ b/toontown/cogdominium/CogdoFlyingGameGlobals.py @@ -9,25 +9,29 @@ AI.SafezoneId2DeathDamage = {2000: 1, 5000: 4, 4000: 8, 3000: 12, - 9000: 16} + 9000: 16, + 7000: 20} AI.SafezoneId2WhirlwindDamage = {2000: 1, 1000: 2, 5000: 4, 4000: 8, 3000: 12, - 9000: 16} + 9000: 16, + 7000: 20} AI.SafezoneId2LegalEagleDamage = {2000: 2, 1000: 4, 5000: 8, 4000: 16, 3000: 24, - 9000: 32} + 9000: 32, + 7000: 36} AI.SafezoneId2MinionDamage = {2000: 1, 1000: 2, 5000: 4, 4000: 8, 3000: 12, - 9000: 16} + 9000: 16, + 7000: 20} Camera = VariableContainer() Camera.Angle = 12.5 Camera.Distance = 20 @@ -41,6 +45,7 @@ Camera.AlphaBetweenToon = 0.35 Camera.SpinRadius = 9.0 Camera.MaxSpinAngle = 20.0 Camera.MaxSpinX = 16.0 +Camera.GameCameraFar = 400.0 Gameplay = VariableContainer() Gameplay.SecondsUntilGameOver = 60.0 * 3.0 Gameplay.TimeRunningOutSeconds = 45.0 @@ -95,7 +100,8 @@ Gameplay.SafezoneId2LaffPickupHealAmount = {2000: 1, 5000: 4, 4000: 8, 3000: 12, - 9000: 16} + 9000: 16, + 7000: 20} Gameplay.InvulBuffTime = 15.0 Gameplay.InvulBlinkTime = 5.0 Gameplay.InvulSingleBlinkTime = 0.5 @@ -167,15 +173,15 @@ LegalEagle.PostCooldownHeightOffNest = 40.0 Dev = DevVariableContainer('cogdoflying') Dev.DisableDeath = False Dev.InfiniteFuel = False -Dev.InfiniteTimeLimit = True +Dev.InfiniteTimeLimit = False Dev.Invincibility = False Dev.NoLegalEagleAttacks = False Audio = VariableContainer() Audio.Cutoff = 75.0 -Audio.MusicFiles = {'normal': 'phase_4/audio/bgm/MG_cannon_game.ogg', - 'end': 'phase_4/audio/bgm/FF_safezone.ogg', - 'waiting': 'phase_4/audio/bgm/m_match_bg2.ogg', - 'invul': 'phase_4/audio/bgm/MG_CogThief.ogg', +Audio.MusicFiles = {'normal': 'phase_9/audio/bgm/CHQ_FACT_bg.ogg', + 'end': 'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg', + 'waiting': 'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg', + 'invul': 'phase_9/audio/bgm/encntr_toon_winning.ogg', 'timeRunningOut': 'phase_7/audio/bgm/encntr_suit_winning_indoor.ogg'} Audio.SfxFiles = {'propeller': 'phase_4/audio/sfx/TB_propeller.ogg', 'propeller_damaged': 'phase_5/audio/sfx/tt_s_ara_cfg_propellers_damaged.ogg', @@ -226,7 +232,8 @@ Level.DifficultyOrder = {2000: (1, 1, 1, 2, 1), 5000: (1, 2, 1, 2, 2), 4000: (1, 2, 1, 2, 3, 2), 3000: (1, 2, 2, 3, 2, 3), - 9000: (2, 3, 2, 3, 2, 3, 2)} + 9000: (2, 3, 2, 3, 2, 3, 2), + 7000: (2, 3, 2, 3, 2, 3, 2)} Dev.WantTempLevel = True Dev.DevQuadsOrder = (1, 2, 3, 4, 5, 6, 7, 8) Level.AddSparkleToPowerups = True diff --git a/toontown/cogdominium/CogdoFlyingGameGuis.py b/toontown/cogdominium/CogdoFlyingGameGuis.py index 380ec8fb..6fd2e8cb 100644 --- a/toontown/cogdominium/CogdoFlyingGameGuis.py +++ b/toontown/cogdominium/CogdoFlyingGameGuis.py @@ -57,7 +57,10 @@ class CogdoFlyingProgressGui(DirectFrame): return def _getToonMarker(self, toon): - return self._laffMeterModel.find('**/' + toon.style.getType() + 'head') + type = self._laffMeterModel.find('**/' + toon.style.getType() + 'head') + if type.isEmpty(): + type = self._laffMeterModel.find('**/bunnyhead') + return type def update(self): for toon, marker in self._toonMarkers.items(): @@ -144,13 +147,13 @@ class CogdoFlyingFuelGui(DirectFrame): return numBlades = fuelState - 1 if len(self.activeBlades) != numBlades: - for i in xrange(len(self.activeBlades)): + for i in range(len(self.activeBlades)): blade = self.activeBlades.pop() blade.stash() if numBlades > len(self.blades): numBlades = len(self.blades) - for i in xrange(numBlades): + for i in range(numBlades): blade = self.blades[i] self.activeBlades.append(blade) blade.unstash() diff --git a/toontown/cogdominium/CogdoFlyingGuiManager.py b/toontown/cogdominium/CogdoFlyingGuiManager.py index b3b598b4..caf845e2 100644 --- a/toontown/cogdominium/CogdoFlyingGuiManager.py +++ b/toontown/cogdominium/CogdoFlyingGuiManager.py @@ -28,7 +28,7 @@ class CogdoFlyingGuiManager: self._progressGui = CogdoFlyingProgressGui(self.root, self._level) def _initHud(self): - self._memoGui = CogdoMemoGui(self.root) + self._memoGui = CogdoMemoGui(self.root, 'memo_card') self._memoGui.posNextToLaffMeter() def _initTimer(self): diff --git a/toontown/cogdominium/CogdoFlyingLegalEagle.py b/toontown/cogdominium/CogdoFlyingLegalEagle.py index f7eabefc..880259ca 100644 --- a/toontown/cogdominium/CogdoFlyingLegalEagle.py +++ b/toontown/cogdominium/CogdoFlyingLegalEagle.py @@ -70,6 +70,8 @@ class CogdoFlyingLegalEagle(DirectObject, FSM): audioMgr = base.cogdoGameAudioMgr self._screamSfx = audioMgr.createSfx('legalEagleScream', self.suit) self.initIntervals() + self.suit.nametag3d.stash() + self.suit.nametag.destroy() return def attachPropeller(self): diff --git a/toontown/cogdominium/CogdoFlyingLevel.py b/toontown/cogdominium/CogdoFlyingLevel.py index 67e23e1e..8ff596c4 100644 --- a/toontown/cogdominium/CogdoFlyingLevel.py +++ b/toontown/cogdominium/CogdoFlyingLevel.py @@ -7,7 +7,7 @@ import CogdoUtil import CogdoFlyingGameGlobals as Globals from CogdoFlyingLevelQuadrant import CogdoFlyingLevelQuadrant from CogdoFlyingObjects import CogdoFlyingGatherableFactory, CogdoFlyingPlatform, CogdoFlyingLevelFog -from CogdoFlyingObstacles import CogdoFlyingObtacleFactory +from CogdoFlyingObstacles import CogdoFlyingObstacleFactory from CogdoGameExit import CogdoGameExit from otp.otpbase import OTPGlobals @@ -51,7 +51,7 @@ class CogdoFlyingLevel(DirectObject): self.forwardLimit = self.quadLengthUnits * 20 self._frameModel.flattenStrong() self.gatherableFactory = CogdoFlyingGatherableFactory() - self.obstacleFactory = CogdoFlyingObtacleFactory() + self.obstacleFactory = CogdoFlyingObstacleFactory() return def getExit(self): @@ -159,7 +159,7 @@ class CogdoFlyingLevel(DirectObject): if quadNum >= 0: if quadNum > 0: self.quadrants[max(quadNum - self.quadVisibiltyBehind, 0)].onstage() - for i in xrange(quadNum, min(quadNum + self.quadVisibiltyAhead + 1, self._numQuads)): + for i in range(quadNum, min(quadNum + self.quadVisibiltyAhead + 1, self._numQuads)): self.quadrants[i].onstage() self.visibleQuadIndices.append(i) if i == 0: @@ -168,7 +168,7 @@ class CogdoFlyingLevel(DirectObject): self.endPlatform.onstage() self._currentQuadNum = quadNum - for i in xrange(0, max(self._currentQuadNum - self.quadVisibiltyBehind, 0)) + range(min(self._currentQuadNum + self.quadVisibiltyAhead + 1, self._numQuads), self._numQuads): + for i in range(0, max(self._currentQuadNum - self.quadVisibiltyBehind, 0)) + range(min(self._currentQuadNum + self.quadVisibiltyAhead + 1, self._numQuads), self._numQuads): self.quadrants[i].offstage() if i == 0: self.startPlatform.offstage() @@ -193,6 +193,7 @@ class CogdoFlyingLevelFactory: self.quadVisibiltyAhead = quadVisibilityAhead self.quadVisibiltyBehind = quadVisibiltyBehind self._rng = rng or RandomNumGen(1) + self.isOrg = self._rng.randint(0, 1) self._level = None return @@ -200,7 +201,8 @@ class CogdoFlyingLevelFactory: levelNode = NodePath('level') frameModel = CogdoUtil.loadFlyingModel('level') startPlatformModel = CogdoUtil.loadFlyingModel('levelStart') - endPlatformModel = CogdoUtil.loadFlyingModel('levelEnd') + ver = '_org' if self.isOrg else '' + endPlatformModel = CogdoUtil.loadFlyingModel('levelEnd%s' % ver) for fan in frameModel.findAllMatches('**/*wallFan'): fan.flattenStrong() @@ -211,7 +213,8 @@ class CogdoFlyingLevelFactory: frameModel.find('**/wallL').setBin('opaque', 2) frameModel.find('**/fogTranslucent_top').setBin('fixed', 2) frameModel.getChildren().reparentTo(levelNode) - levelNode.hide() + if not self.isOrg: + levelNode.hide() self._level = CogdoFlyingLevel(self.parent, levelNode, startPlatformModel, endPlatformModel, self.quadLengthUnits, self.quadVisibiltyAhead, self.quadVisibiltyBehind) if Globals.Dev.WantTempLevel: quads = Globals.Dev.DevQuadsOrder @@ -223,7 +226,8 @@ class CogdoFlyingLevelFactory: quads.append(quadList[self._rng.randint(0, len(quadList) - 1)]) for i in quads: - filePath = CogdoUtil.getModelPath('quadrant%i' % i, 'flying') + ver = '_org' if self.isOrg else '' + filePath = CogdoUtil.getModelPath('quadrant%i%s' % (i, ver), 'flying') quadModel = loader.loadModel(filePath) for np in quadModel.findAllMatches('**/*lightCone*'): CogdoUtil.initializeLightCone(np, 'fixed', 3) @@ -240,4 +244,7 @@ class CogdoFlyingLevelFactory: def createLevelFog(self): if self._level is None: self.loadAndBuildLevel() - return CogdoFlyingLevelFog(self._level) + if self.isOrg: + return CogdoFlyingLevelFog(self._level, (0,0,0,1)) + else: + return CogdoFlyingLevelFog(self._level) diff --git a/toontown/cogdominium/CogdoFlyingLevelQuadrant.py b/toontown/cogdominium/CogdoFlyingLevelQuadrant.py index 51fadefb..b2635d7a 100644 --- a/toontown/cogdominium/CogdoFlyingLevelQuadrant.py +++ b/toontown/cogdominium/CogdoFlyingLevelQuadrant.py @@ -52,8 +52,9 @@ class CogdoFlyingLevelQuadrant: for np in self._model.findAllMatches('**/*LayerStack*'): np.wrtReparentTo(self._model) - for np in self._model.find('**/static').getChildren(): - np.wrtReparentTo(self._model) + if not self._model.find('**/static').isEmpty(): + for np in self._model.find('**/static').getChildren(): + np.wrtReparentTo(self._model) self._model.flattenMedium() @@ -138,8 +139,6 @@ class CogdoFlyingLevelQuadrant: def generatePowerUps(): for powerupType, locName in Globals.Level.PowerupType2Loc.iteritems(): - if powerupType == Globals.Level.GatherableTypes.LaffPowerup and Globals.Level.IgnoreLaffPowerups: - continue gatherables = gatherableModel.findAllMatches('**/%s' % locName) for gatherable in gatherables: pickup = self._level.gatherableFactory.createPowerup(powerupType) diff --git a/toontown/cogdominium/CogdoFlyingLocalPlayer.py b/toontown/cogdominium/CogdoFlyingLocalPlayer.py index 17e078bb..3442288d 100644 --- a/toontown/cogdominium/CogdoFlyingLocalPlayer.py +++ b/toontown/cogdominium/CogdoFlyingLocalPlayer.py @@ -555,29 +555,33 @@ class CogdoFlyingLocalPlayer(CogdoFlyingPlayer): power = math.fabs(distance / fanHeight - 1.0) * powerRange + min power = clamp(power, min, max) blowVec *= power - fanVelocity = self.fanIndex2ToonVelocity[fan.index] - fanVelocity += blowVec + if fan.index in self.fanIndex2ToonVelocity: + fanVelocity = self.fanIndex2ToonVelocity[fan.index] + fanVelocity += blowVec removeList = [] for fan in self.fansStillHavingEffect: if fan not in self.activeFans: blowVec = fan.getBlowDirection() blowVec *= Globals.Gameplay.ToonDeceleration['fan'] * dt - fanVelocity = Vec3(self.fanIndex2ToonVelocity[fan.index]) - lastLen = fanVelocity.length() - fanVelocity -= blowVec - if fanVelocity.length() > lastLen: - removeList.append(fan) - else: - self.fanIndex2ToonVelocity[fan.index] = fanVelocity + if fan.index in self.fanIndex2ToonVelocity: + fanVelocity = Vec3(self.fanIndex2ToonVelocity[fan.index]) + lastLen = fanVelocity.length() + fanVelocity -= blowVec + if fanVelocity.length() > lastLen: + removeList.append(fan) + else: + self.fanIndex2ToonVelocity[fan.index] = fanVelocity for fan in removeList: self.fansStillHavingEffect.remove(fan) - del self.fanIndex2ToonVelocity[fan.index] + if fan.index in self.fanIndex2ToonVelocity: + del self.fanIndex2ToonVelocity[fan.index] self.fanVelocity = Vec3(0.0, 0.0, 0.0) for fan in self.fansStillHavingEffect: - self.fanVelocity += self.fanIndex2ToonVelocity[fan.index] + if fan.index in self.fanIndex2ToonVelocity: + self.fanVelocity += self.fanIndex2ToonVelocity[fan.index] minVal = -Globals.Gameplay.ToonVelMax['fan'] maxVal = Globals.Gameplay.ToonVelMax['fan'] @@ -1073,10 +1077,9 @@ class CogdoFlyingLocalPlayer(CogdoFlyingPlayer): elif gatherable.type == Globals.Level.GatherableTypes.Propeller: self.handleEnterPropeller(gatherable) elif gatherable.type == Globals.Level.GatherableTypes.LaffPowerup: - self._getLaffSfx.play() + self.handleEnterLaffPowerup(gatherable) elif gatherable.type == Globals.Level.GatherableTypes.InvulPowerup: - self._getRedTapeSfx.play() - messenger.send(CogdoFlyingGuiManager.InvulnerableEventName) + self.handleEnterInvulPowerup(gatherable) def handleEnterMemo(self, gatherable): self.score += 1 @@ -1097,3 +1100,10 @@ class CogdoFlyingLocalPlayer(CogdoFlyingPlayer): self._guiMgr.update() self._refuelSfx.play() self._refuelSpinSfx.play(volume=0.15) + + def handleEnterLaffPowerup(self, gatherable): + self._getLaffSfx.play() + + def handleEnterInvulPowerup(self, gatherable): + messenger.send(CogdoFlyingGuiManager.InvulnerableEventName) + self._getRedTapeSfx.play() \ No newline at end of file diff --git a/toontown/cogdominium/CogdoFlyingObjects.py b/toontown/cogdominium/CogdoFlyingObjects.py index 7f8a4a9a..0c9c4eb7 100644 --- a/toontown/cogdominium/CogdoFlyingObjects.py +++ b/toontown/cogdominium/CogdoFlyingObjects.py @@ -242,7 +242,8 @@ class CogdoFlyingPowerup(CogdoFlyingGatherable): self._model.setAlphaScale(0.5) if Globals.Level.AddSparkleToPowerups: self.f = self.find('**/particleEffect_sparkles') - self.f.hide() + if not self.f.isEmpty(): + self.f.hide() def pickUp(self, toon, elapsedSeconds = 0.0): if self.wasPickedUpByToon(toon) == True: @@ -339,6 +340,7 @@ class CogdoFlyingLevelFog: def __init__(self, level, color = Globals.Level.FogColor): self._level = level self.color = color + self.defaultFar = None fogDistance = self._level.quadLengthUnits * max(1, self._level.quadVisibiltyAhead * 0.2) self.fog = Fog('RenderFog') self.fog.setColor(self.color) @@ -346,11 +348,16 @@ class CogdoFlyingLevelFog: self._visible = False self._clearColor = Vec4(base.win.getClearColor()) self._clearColor.setW(1.0) + self.defaultFar = base.camLens.getFar() + base.camLens.setFar(Globals.Camera.GameCameraFar) + base.setBackgroundColor(self.color) def destroy(self): self.setVisible(False) if hasattr(self, 'fog'): del self.fog + if self.defaultFar is not None: + base.camLens.setFar(self.defaultFar) def isVisible(self): return self._visible diff --git a/toontown/cogdominium/CogdoFlyingObstacles.py b/toontown/cogdominium/CogdoFlyingObstacles.py index 7cfbd223..c7e12fd1 100644 --- a/toontown/cogdominium/CogdoFlyingObstacles.py +++ b/toontown/cogdominium/CogdoFlyingObstacles.py @@ -16,7 +16,7 @@ from direct.particles import ParticleEffect from direct.particles import Particles from direct.particles import ForceGroup -class CogdoFlyingObtacleFactory: +class CogdoFlyingObstacleFactory: def __init__(self): self._index = -1 @@ -29,8 +29,9 @@ class CogdoFlyingObtacleFactory: self._fanModel.removeNode() del self._fanModel if Globals.Level.AddParticlesToStreamers: - self.f.cleanup() - del self.f + if hasattr(self, 'f'): + self.f.cleanup() + del self.f def createFan(self): self._index += 1 @@ -237,6 +238,8 @@ class CogdoFlyingMinion(CogdoFlyingObstacle): d.newSuit(Globals.Gameplay.MinionDnaName) self.suit.setDNA(d) self.suit.setScale(Globals.Gameplay.MinionScale) + self.suit.nametag3d.stash() + self.suit.nametag.destroy() swapAvatarShadowPlacer(self.suit, 'minion-%sShadowPlacer' % index) self.mopathNodePath = NodePath('mopathNodePath') self.suit.reparentTo(self.mopathNodePath) diff --git a/toontown/cogdominium/CogdoFlyingPlayer.py b/toontown/cogdominium/CogdoFlyingPlayer.py index f4cae889..7c610924 100644 --- a/toontown/cogdominium/CogdoFlyingPlayer.py +++ b/toontown/cogdominium/CogdoFlyingPlayer.py @@ -233,14 +233,14 @@ class CogdoFlyingPlayer(FSM): return numBlades = fuelState - 1 if len(self.activeBlades) != numBlades: - for i in xrange(len(self.activeBlades)): + for i in range(len(self.activeBlades)): blade = self.activeBlades.pop() blade.stash() if numBlades > len(self.blades): numBlades = len(self.blades) if numBlades > 0: - for i in xrange(numBlades): + for i in range(numBlades): blade = self.blades[i] self.activeBlades.append(blade) blade.unstash() diff --git a/toontown/cogdominium/CogdoGameGatherable.py b/toontown/cogdominium/CogdoGameGatherable.py index ef5ebd40..1bbf4720 100644 --- a/toontown/cogdominium/CogdoGameGatherable.py +++ b/toontown/cogdominium/CogdoGameGatherable.py @@ -102,10 +102,7 @@ class CogdoMemo(CogdoGameGatherable): def __init__(self, serialNum, model = None, pitch = 0, triggerRadius = 1.0, spinRate = 60): if model is None: - node = CogdoUtil.loadModel('memo', 'shared') - model = node.find('**/memo') - model.detachNode() - node.removeNode() + model = CogdoUtil.loadModel('joke', 'shared') model.setP(pitch) self._spinRate = spinRate CogdoGameGatherable.__init__(self, serialNum, model, triggerRadius, name='CogdoMemo') diff --git a/toontown/cogdominium/CogdoInterior.py b/toontown/cogdominium/CogdoInterior.py index efa56e4f..54c724d4 100644 --- a/toontown/cogdominium/CogdoInterior.py +++ b/toontown/cogdominium/CogdoInterior.py @@ -76,7 +76,7 @@ class CogdoInterior(Place.Place): self.parentFSM.getStateNamed('cogdoInterior').addChild(self.fsm) self.townBattle = TownBattle.TownBattle('town-battle-done') self.townBattle.load() - for i in xrange(1, 3): + for i in range(1, 3): Suit.loadSuits(i) def unload(self): @@ -90,7 +90,7 @@ class CogdoInterior(Place.Place): self.townBattle.unload() self.townBattle.cleanup() del self.townBattle - for i in xrange(1, 3): + for i in range(1, 3): Suit.unloadSuits(i) def setState(self, state, battleEvent = None): diff --git a/toontown/cogdominium/CogdoMaze.py b/toontown/cogdominium/CogdoMaze.py index 735d44ec..281accf0 100644 --- a/toontown/cogdominium/CogdoMaze.py +++ b/toontown/cogdominium/CogdoMaze.py @@ -109,8 +109,8 @@ class CogdoMazeFactory: quadrantKeys = self._cogdoMazeData.QuadrantCollisions.keys() self._rng.shuffle(quadrantKeys) i = 0 - for y in xrange(self.height): - for x in xrange(self.width): + for y in range(self.height): + for x in range(self.width): key = quadrantKeys[i] collTable = self._cogdoMazeData.QuadrantCollisions[key] angle = self._cogdoMazeData.QuadrantAngles[self._rng.randint(0, len(self._cogdoMazeData.QuadrantAngles) - 1)] @@ -121,9 +121,9 @@ class CogdoMazeFactory: def _generateBarrierData(self): data = [] - for y in xrange(self.height): + for y in range(self.height): data.append([]) - for x in xrange(self.width): + for x in range(self.width): if x == self.width - 1: ax = -1 else: @@ -204,12 +204,12 @@ class CogdoMazeFactory: self._data['originX'] = int(self._data['width'] / 2) self._data['originY'] = int(self._data['height'] / 2) collisionTable = [] - horizontalWall = [ 1 for x in xrange(self._data['width']) ] + horizontalWall = [ 1 for x in range(self._data['width']) ] collisionTable.append(horizontalWall) - for i in xrange(0, len(self.quadrantData), self.width): - for y in xrange(self.quadrantSize): + for i in range(0, len(self.quadrantData), self.width): + for y in range(self.quadrantSize): row = [1] - for x in xrange(i, i + self.width): + for x in range(i, i + self.width): if x == 1 and y < self.quadrantSize / 2 - 2: newData = [] for j in self.quadrantData[x][1][y]: @@ -227,17 +227,17 @@ class CogdoMazeFactory: collisionTable.append(horizontalWall[:]) barriers = Globals.MazeBarriers - for i in xrange(len(barriers)): + for i in range(len(barriers)): for coords in barriers[i]: collisionTable[coords[1]][coords[0]] = 0 y = self._data['originY'] - for x in xrange(len(collisionTable[y])): + for x in range(len(collisionTable[y])): if collisionTable[y][x] == 0: collisionTable[y][x] = 2 x = self._data['originX'] - for y in xrange(len(collisionTable)): + for y in range(len(collisionTable)): if collisionTable[y][x] == 0: collisionTable[y][x] = 2 @@ -254,8 +254,8 @@ class CogdoMazeFactory: halfWidth = int(self.width / 2) halfHeight = int(self.height / 2) i = 0 - for y in xrange(self.height): - for x in xrange(self.width): + for y in range(self.height): + for x in range(self.width): ax = (x - halfWidth) * size ay = (y - halfHeight) * size extension = '' @@ -272,7 +272,7 @@ class CogdoMazeFactory: quadrantHalfUnitSize = quadrantUnitSize * 0.5 barrierModel = CogdoUtil.loadMazeModel('grouping_blockerDivider').find('**/divider') y = 3 - for x in xrange(self.width): + for x in range(self.width): if x == (self.width - 1) / 2: continue ax = (x - halfWidth) * size @@ -284,7 +284,7 @@ class CogdoMazeFactory: offset = self.cellWidth - 0.5 for x in (0, 3): - for y in xrange(self.height): + for y in range(self.height): ax = (x - halfWidth) * size - quadrantHalfUnitSize - frameActualSize + offset ay = (y - halfHeight) * size b = NodePath('barrier') diff --git a/toontown/cogdominium/CogdoMazeGame.py b/toontown/cogdominium/CogdoMazeGame.py index 11df5666..d950c618 100644 --- a/toontown/cogdominium/CogdoMazeGame.py +++ b/toontown/cogdominium/CogdoMazeGame.py @@ -49,20 +49,20 @@ class CogdoMazeGame(DirectObject): self.lastBalloonTimestamp = None difficulty = self.distGame.getDifficulty() serialNum = 0 - for i in xrange(numSuits[0]): + for i in range(numSuits[0]): suitRng = RandomNumGen(self.distGame.doId + serialNum * 10) suit = CogdoMazeBossSuit(serialNum, self.maze, suitRng, difficulty, startTile=suitSpawnSpot[0][i]) self.addSuit(suit) self.guiMgr.mazeMapGui.addSuit(suit.suit) serialNum += 1 - for i in xrange(numSuits[1]): + for i in range(numSuits[1]): suitRng = RandomNumGen(self.distGame.doId + serialNum * 10) suit = CogdoMazeFastMinionSuit(serialNum, self.maze, suitRng, difficulty, startTile=suitSpawnSpot[1][i]) self.addSuit(suit) serialNum += 1 - for i in xrange(numSuits[2]): + for i in range(numSuits[2]): suitRng = RandomNumGen(self.distGame.doId + serialNum * 10) suit = CogdoMazeSlowMinionSuit(serialNum, self.maze, suitRng, difficulty, startTile=suitSpawnSpot[2][i]) self.addSuit(suit) @@ -269,7 +269,7 @@ class CogdoMazeGame(DirectObject): self.players.remove(cPlayer) break - if player.toon.doId in self.toonId2Player: + if self.toonId2Player.has_key(player.toon.doId): del self.toonId2Player[player.toon.doId] self.guiMgr.mazeMapGui.removeToon(player.toon) @@ -302,7 +302,7 @@ class CogdoMazeGame(DirectObject): def __updateGags(self): remove = [] - for i in xrange(len(self.gags)): + for i in range(len(self.gags)): balloon = self.gags[i] if balloon.isSingleton(): remove.append(i) @@ -353,7 +353,7 @@ class CogdoMazeGame(DirectObject): start = math.radians(random.randint(0, 360)) step = math.radians(360.0 / numDrops) radius = 2.0 - for i in xrange(numDrops): + for i in range(numDrops): angle = start + i * step x = radius * math.cos(angle) + suit.suit.getX() y = radius * math.sin(angle) + suit.suit.getY() diff --git a/toontown/cogdominium/CogdoMazeGameGuis.py b/toontown/cogdominium/CogdoMazeGameGuis.py index e576caef..52b20e89 100644 --- a/toontown/cogdominium/CogdoMazeGameGuis.py +++ b/toontown/cogdominium/CogdoMazeGameGuis.py @@ -188,7 +188,7 @@ class CogdoMazeBossGui(DirectFrame): self._openDoor.stash() spacingX = codeFrameWidth + codeFrameGap startX = -0.5 * ((self._codeLength - 1) * spacingX - codeFrameGap) - for i in xrange(self._codeLength): + for i in range(self._codeLength): marker = CogdoMazeBossCodeFrame(i, self._code[i], bossCard) marker.reparentTo(self) marker.setPos(bossCard, startX + spacingX * i, 0, 0) diff --git a/toontown/cogdominium/CogdoMazeGameMovies.py b/toontown/cogdominium/CogdoMazeGameMovies.py index 4057fe37..c5ed394e 100644 --- a/toontown/cogdominium/CogdoMazeGameMovies.py +++ b/toontown/cogdominium/CogdoMazeGameMovies.py @@ -123,7 +123,7 @@ class CogdoMazeGameIntro(CogdoGameMovie): def end(): self._stopUpdateTask() - self._ival = Sequence(Func(start), Func(self.displayLine, 'toon', self._getRandomLine(dialogue[0])), showExitIval, Func(showWaterCooler), Func(self.displayLine, 'toon', self._getRandomLine(dialogue[1])), Wait(waitDuration), Func(showBoss), bossSuit.hprInterval(1.0, bossSuit.getHpr() + Point3(180, 0, 0), blendType='easeInOut'), Func(self.displayLine, 'toon', self._getRandomLine(dialogue[2])), Wait(waitDuration - 1.0), Func(end)) + self._ival = Sequence(Func(start), Func(self.displayLine, 'cog', self._getRandomLine(dialogue[0])), showExitIval, Func(showWaterCooler), Func(self.displayLine, 'toon', self._getRandomLine(dialogue[1])), Wait(waitDuration), Func(showBoss), bossSuit.hprInterval(1.0, bossSuit.getHpr() + Point3(180, 0, 0), blendType='easeInOut'), Func(self.displayLine, 'cog', self._getRandomLine(dialogue[2])), Wait(waitDuration - 1.0), Func(end)) self._startUpdateTask() def _setCamTarget(self, targetNP, distance, offset = Point3(0, 0, 0), angle = Point3(0, 0, 0)): diff --git a/toontown/cogdominium/CogdoMazeGuiManager.py b/toontown/cogdominium/CogdoMazeGuiManager.py index 8373ad2c..a3a7ac08 100644 --- a/toontown/cogdominium/CogdoMazeGuiManager.py +++ b/toontown/cogdominium/CogdoMazeGuiManager.py @@ -102,6 +102,7 @@ class CogdoMazeGuiManager: self._initTimer() self._timer.setTime(duration) self._timer.countdown(duration, timerExpiredCallback) + self._timer.show() self._presentTimerIval = ToontownIntervals.start(ToontownIntervals.getPresentGuiIval(self._timer, 'present_timer', startPos=(0, 0, 0.35))) return diff --git a/toontown/cogdominium/CogdoMazeSuits.py b/toontown/cogdominium/CogdoMazeSuits.py index 69d6715c..cf7f9e59 100644 --- a/toontown/cogdominium/CogdoMazeSuits.py +++ b/toontown/cogdominium/CogdoMazeSuits.py @@ -19,7 +19,7 @@ class CogdoMazeSuit(MazeSuit, FSM, CogdoMazeSplattable): MazeSuit.__init__(self, serialNum, maze, randomNumGen, data['cellWalkPeriod'], difficulty, data['dnaName'], startTile=startTile, walkSameDirectionProb=Globals.SuitWalkSameDirectionProb, walkTurnAroundProb=Globals.SuitWalkTurnAroundProb, uniqueRandomNumGen=False, walkAnimName=walkAnimName) FSM.__init__(self, 'CogdoMazeSuit') CogdoMazeSplattable.__init__(self, self.suit, '%s-%i' % (Globals.SuitCollisionName, self.serialNum), 1.5) - if 'scale' in data: + if data.has_key('scale'): self.suit.setScale(data['scale']) self.hp = data['hp'] self.type = cogdoSuitType @@ -228,8 +228,8 @@ class CogdoMazeBossSuit(CogdoMazeSuit): def pickRandomValidSpot(self, r = 5): validSpots = [] - for x in xrange(self.TX - r, self.TX + r): - for y in xrange(self.TY - r, self.TY + r): + for x in range(self.TX - r, self.TX + r): + for y in range(self.TY - r, self.TY + r): if self.maze.isWalkable(x, y): validSpots.append([x, y]) diff --git a/toontown/cogdominium/CogdoMemoGui.py b/toontown/cogdominium/CogdoMemoGui.py index 47cf60c4..a4a5512d 100644 --- a/toontown/cogdominium/CogdoMemoGui.py +++ b/toontown/cogdominium/CogdoMemoGui.py @@ -9,9 +9,9 @@ MEMOICON_SCALE = 0.2 class CogdoMemoGui(DirectFrame): - def __init__(self, parent): + def __init__(self, parent, type='joke_card'): DirectFrame.__init__(self, parent=parent, relief=None, state=DGG.NORMAL, sortOrder=DGG.BACKGROUND_SORT_INDEX) - self._initModel() + self._initModel(type) self.hide() return @@ -26,9 +26,9 @@ class CogdoMemoGui(DirectFrame): def posNextToLaffMeter(self): self.setPos(-0.975, 0, -0.875) - def _initModel(self): + def _initModel(self, type='joke_card'): self._countLabel = DirectLabel(parent=self, relief=None, pos=(0.0625, 0, -0.025), scale=CogdoGameConsts.MemoGuiTextScale, text=str(0), text_fg=CogdoGameConsts.MemoGuiTextColor, text_shadow=(0.2, 0.2, 0.2, 1), text_align=TextNode.ALeft, text_font=ToontownGlobals.getToonFont()) - self._memoIcon = CogdoUtil.loadModel('memo_card', game='shared', group='gui') + self._memoIcon = CogdoUtil.loadModel(type, game='shared', group='gui') self._memoIcon.reparentTo(self) self._memoIcon.setScale(MEMOICON_SCALE) return diff --git a/toontown/cogdominium/CogdoUtil.py b/toontown/cogdominium/CogdoUtil.py index 05817bae..ac145791 100644 --- a/toontown/cogdominium/CogdoUtil.py +++ b/toontown/cogdominium/CogdoUtil.py @@ -69,7 +69,7 @@ class CogdoGameMovie: textNode.setFont(ToontownGlobals.getToonFont()) self._dialogueLabel = aspect2d.attachNewNode(textNode) self._dialogueLabel.setScale(0.06, 0.06, 0.06) - self._dialogueLabel.setPos(0.32, 0, -0.75) + self._dialogueLabel.setPos(0.32, 0, -0.7325) self._dialogueLabel.reparentTo(hidden) def unload(self): @@ -120,9 +120,9 @@ def rotateTable(table, angle): t = [] width = len(table[0]) height = len(table) - for j in xrange(width): + for j in range(width): row = [] - for i in xrange(height): + for i in range(height): row.append(table[height - 1 - i][j]) t.append(row) @@ -137,9 +137,9 @@ def rotateTable(table, angle): t = [] width = len(table[0]) height = len(table) - for j in xrange(width): + for j in range(width): row = [] - for i in xrange(height): + for i in range(height): row.append(table[i][width - 1 - j]) t.append(row) diff --git a/toontown/cogdominium/DistCogdoCrane.py b/toontown/cogdominium/DistCogdoCrane.py index b41545d8..3f7eb445 100644 --- a/toontown/cogdominium/DistCogdoCrane.py +++ b/toontown/cogdominium/DistCogdoCrane.py @@ -1,20 +1,17 @@ -from direct.distributed import DistributedObject +from direct.gui.DirectGui import * +from pandac.PandaModules import * +from direct.interval.IntervalGlobal import * from direct.distributed.ClockDelta import * from direct.fsm import FSM -from direct.gui.DirectGui import * -from direct.interval.IntervalGlobal import * -from direct.showbase import PythonUtil +from direct.distributed import DistributedObject from direct.showutil import Rope +from direct.showbase import PythonUtil from direct.task import Task -from pandac.PandaModules import * -import random - +from toontown.toonbase import ToontownGlobals +from toontown.toonbase import TTLocalizer from otp.otpbase import OTPGlobals from toontown.cogdominium import CogdoCraneGameConsts as GameConsts -from toontown.nametag import NametagGlobals -from toontown.toonbase import TTLocalizer -from toontown.toonbase import ToontownGlobals - +import random class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): notify = DirectNotifyGlobal.directNotify.newCategory('DistCogdoCrane') @@ -235,7 +232,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.physicsActivated = 0 def __straightenCable(self): - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): an, anp, cnp = self.activeLinks[linkNum] an.getPhysicsObject().setVelocity(0, 0, 0) z = float(linkNum + 1) / float(self.numLinks) * self.cableLength @@ -258,7 +255,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.links = [] self.links.append((self.topLink, Point3(0, 0, 0))) anchor = self.topLink - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): anchor = self.__makeLink(anchor, linkNum) self.collisions.stash() @@ -401,7 +398,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): taskMgr.add(self.__watchControls, 'watchCraneControls') taskMgr.doMethodLater(5, self.__displayCraneAdvice, self.craneAdviceName) taskMgr.doMethodLater(10, self.__displayMagnetAdvice, self.magnetAdviceName) - NametagGlobals.setForceOnscreenChat(True) + NametagGlobals.setOnscreenChatForced(1) self.arrowVert = 0 self.arrowHorz = 0 @@ -418,7 +415,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.ignore('InputState-turnRight') self.arrowVert = 0 self.arrowHorz = 0 - NametagGlobals.setForceOnscreenChat(False) + NametagGlobals.setOnscreenChatForced(0) taskMgr.remove('watchCraneControls') self.__setMoveSound(None) return @@ -554,7 +551,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): def startFlicker(self): self.magnetSoundInterval.start() self.lightning = [] - for i in xrange(4): + for i in range(4): t = float(i) / 3.0 - 0.5 l = self.craneGame.lightning.copyTo(self.gripper) l.setScale(random.choice([1, -1]), 1, 5) @@ -683,7 +680,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.armSmoother.setPos(self.crane.getPos()) self.armSmoother.setHpr(self.arm.getHpr()) self.armSmoother.setPhonyTimestamp() - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): smoother = self.linkSmoothers[linkNum] an, anp, cnp = self.activeLinks[linkNum] smoother.clearPositions(0) @@ -692,7 +689,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): def doSmoothTask(self, task): self.armSmoother.computeAndApplySmoothPosHpr(self.crane, self.arm) - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): smoother = self.linkSmoothers[linkNum] anp = self.activeLinks[linkNum][1] smoother.computeAndApplySmoothPos(anp) @@ -719,7 +716,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.armSmoother.applySmoothPos(self.crane) self.armSmoother.applySmoothHpr(self.arm) self.armSmoother.clearPositions(1) - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): smoother = self.linkSmoothers[linkNum] an, anp, cnp = self.activeLinks[linkNum] if smoother.getLatestPosition(): @@ -735,7 +732,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): self.armSmoother.setH(h) self.armSmoother.setTimestamp(local) self.armSmoother.markPosition() - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): smoother = self.linkSmoothers[linkNum] lp = links[linkNum] smoother.setPos(*lp) @@ -749,7 +746,7 @@ class DistCogdoCrane(DistributedObject.DistributedObject, FSM.FSM): def d_sendCablePos(self): timestamp = globalClockDelta.getFrameNetworkTime() links = [] - for linkNum in xrange(self.numLinks): + for linkNum in range(self.numLinks): an, anp, cnp = self.activeLinks[linkNum] p = anp.getPos() links.append((p[0], p[1], p[2])) diff --git a/toontown/cogdominium/DistCogdoCraneGame.py b/toontown/cogdominium/DistCogdoCraneGame.py index 262b684a..98f688ae 100644 --- a/toontown/cogdominium/DistCogdoCraneGame.py +++ b/toontown/cogdominium/DistCogdoCraneGame.py @@ -102,7 +102,7 @@ class DistCogdoCraneGame(CogdoCraneGameBase, DistCogdoLevelGame): self.notify.warning('Not a collision node: %s' % repr(cnp)) break newCollideMask = newCollideMask | cn.getIntoCollideMask() - for i in xrange(cn.getNumSolids()): + for i in range(cn.getNumSolids()): solid = cn.getSolid(i) if isinstance(solid, PM.CollisionPolygon): plane = PM.Plane(solid.getPlane()) diff --git a/toontown/cogdominium/DistCogdoCraneGameAI.py b/toontown/cogdominium/DistCogdoCraneGameAI.py index d7788f68..1ac2594f 100644 --- a/toontown/cogdominium/DistCogdoCraneGameAI.py +++ b/toontown/cogdominium/DistCogdoCraneGameAI.py @@ -1,6 +1,70 @@ -from direct.directnotify import DirectNotifyGlobal +from direct.directnotify.DirectNotifyGlobal import directNotify from toontown.cogdominium.DistCogdoLevelGameAI import DistCogdoLevelGameAI +from toontown.cogdominium.DistCogdoCraneAI import DistCogdoCraneAI +from toontown.cogdominium import CogdoCraneGameConsts as GameConsts +from toontown.cogdominium.CogdoCraneGameBase import CogdoCraneGameBase -class DistCogdoCraneGameAI(DistCogdoLevelGameAI): - notify = DirectNotifyGlobal.directNotify.newCategory("DistCogdoCraneGameAI") +class DistCogdoCraneGameAI(DistCogdoLevelGameAI, CogdoCraneGameBase): + notify = directNotify.newCategory('DistCogdoCraneGameAI') + + def __init__(self, air, interior): + DistCogdoLevelGameAI.__init__(self, air, interior) + self._cranes = [ + None] * self.MaxPlayers + + def enterLoaded(self): + DistCogdoLevelGameAI.enterLoaded(self) + for i in xrange(self.MaxPlayers): + crane = DistCogdoCraneAI(self.air, self, i) + crane.generateWithRequired(self.zoneId) + self._cranes[i] = crane + + def exitLoaded(self): + for i in xrange(self.MaxPlayers): + if self._cranes[i]: + self._cranes[i].requestDelete() + self._cranes[i] = None + continue + + DistCogdoLevelGameAI.exitLoaded(self) + + def enterGame(self): + DistCogdoLevelGameAI.enterGame(self) + for i in xrange(self.getNumPlayers()): + self._cranes[i].request('Controlled', self.getToonIds()[i]) + + self._scheduleGameDone() + + def _scheduleGameDone(self): + timeLeft = GameConsts.Settings.GameDuration.get() - globalClock.getRealTime() - self.getStartTime() + if timeLeft > 0: + self._gameDoneEvent = taskMgr.doMethodLater(timeLeft, self._gameDoneDL, self.uniqueName('boardroomGameDone')) + else: + self._gameDoneDL() + + def exitGame(self): + taskMgr.remove(self._gameDoneEvent) + self._gameDoneEvent = None + + def _gameDoneDL(self, task = None): + self._handleGameFinished() + return task.done + + def enterFinish(self): + DistCogdoLevelGameAI.enterFinish(self) + self._finishDoneEvent = taskMgr.doMethodLater(10.0, self._finishDoneDL, self.uniqueName('boardroomFinishDone')) + + def exitFinish(self): + taskMgr.remove(self._finishDoneEvent) + self._finishDoneEvent = None + + def _finishDoneDL(self, task): + self.announceGameDone() + return task.done + if __dev__: + + def _handleGameDurationChanged(self, gameDuration): + if hasattr(self, '_gameDoneEvent') and self._gameDoneEvent != None: + taskMgr.remove(self._gameDoneEvent) + self._scheduleGameDone() \ No newline at end of file diff --git a/toontown/cogdominium/DistCogdoCraneObject.py b/toontown/cogdominium/DistCogdoCraneObject.py index b6a65424..319f9fba 100644 --- a/toontown/cogdominium/DistCogdoCraneObject.py +++ b/toontown/cogdominium/DistCogdoCraneObject.py @@ -126,10 +126,12 @@ class DistCogdoCraneObject(DistributedSmoothNode.DistributedSmoothNode, FSM.FSM) vel.normalize() impact = vel[1] if impact >= self.getMinImpact(): + print 'hit! %s' % impact self.hitBossSoundInterval.start() self.doHitBoss(impact) else: self.touchedBossSoundInterval.start() + print '--not hard enough: %s' % impact def doHitBoss(self, impact): self.d_hitBoss(impact) diff --git a/toontown/cogdominium/DistCogdoFlyingGame.py b/toontown/cogdominium/DistCogdoFlyingGame.py index 3c49f035..475d8ed7 100644 --- a/toontown/cogdominium/DistCogdoFlyingGame.py +++ b/toontown/cogdominium/DistCogdoFlyingGame.py @@ -10,8 +10,6 @@ class DistCogdoFlyingGame(DistCogdoGame): def __init__(self, cr): DistCogdoGame.__init__(self, cr) - if __debug__ and base.config.GetBool('schellgames-dev', True): - self.accept('onCodeReload', self.__sgOnCodeReload) self.game = CogdoFlyingGame(self) def delete(self): diff --git a/toontown/cogdominium/DistCogdoFlyingGameAI.py b/toontown/cogdominium/DistCogdoFlyingGameAI.py index d69382e9..3412000d 100644 --- a/toontown/cogdominium/DistCogdoFlyingGameAI.py +++ b/toontown/cogdominium/DistCogdoFlyingGameAI.py @@ -1,42 +1,129 @@ from direct.directnotify import DirectNotifyGlobal +from direct.distributed.ClockDelta import * from toontown.cogdominium.DistCogdoGameAI import DistCogdoGameAI +import CogdoFlyingGameGlobals as Globals class DistCogdoFlyingGameAI(DistCogdoGameAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistCogdoFlyingGameAI") + + def __init__(self, air): + DistCogdoGameAI.__init__(self, air) + self.completed = [] + self.eagles = {} + self.totalMemos = 0 + + def requestAction(self, action, data): + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if not av: + return + + if action == Globals.AI.GameActions.LandOnWinPlatform: + self.completed.append(avId) + for toon in self.toons: + if toon not in self.completed: + return + + self.gameDone() + + elif action == Globals.AI.GameActions.BladeLost: + self.sendUpdate("toonBladeLost", [avId]) + + elif action == Globals.AI.GameActions.SetBlades: + self.sendUpdate("toonSetBlades", [avId, data]) + + elif action == Globals.AI.GameActions.Died: + damage = Globals.AI.SafezoneId2DeathDamage[self.getSafezoneId()] + self.__damage(av, damage) + self.sendUpdate("toonDied", [avId, globalClockDelta.getRealNetworkTime()]) + + elif action == Globals.AI.GameActions.Spawn: + self.sendUpdate("toonSpawn", [avId, globalClockDelta.getRealNetworkTime()]) + + elif action == Globals.AI.GameActions.RequestEnterEagleInterest: + if not self.eagles.get(data): + self.eagles[data] = avId + self.sendUpdate("toonSetAsEagleTarget", [avId, data, globalClockDelta.getRealNetworkTime()]) + + elif action == Globals.AI.GameActions.RequestExitEagleInterest: + if self.eagles.get(data) == avId: + self.eagles[data] = 0 + self.sendUpdate("toonClearAsEagleTarget", [avId, data, globalClockDelta.getRealNetworkTime()]) + + elif action == Globals.AI.GameActions.HitLegalEagle: + damage = Globals.AI.SafezoneId2LegalEagleDamage[self.getSafezoneId()] + self.__damage(av, damage) + + elif action == Globals.AI.GameActions.HitMinion: + damage = Globals.AI.SafezoneId2MinionDamage[self.getSafezoneId()] + self.__damage(av, damage) + + elif action == Globals.AI.GameActions.HitWhirlwind: + damage = Globals.AI.SafezoneId2WhirlwindDamage[self.getSafezoneId()] + self.__damage(av, damage) + + elif action == Globals.AI.GameActions.RanOutOfTimePenalty: + damage = int(20 * self.getDifficulty()) + self.__damage(av, damage) + + else: + self.notify.warning('Client requested unknown action \'%s\'' %action) - def requestAction(self, todo0, todo1): - pass + def requestPickUp(self, pickupNum, pickupType): + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if not av: + return + + if pickupType <= len(Globals.Level.GatherableTypes): + self.sendUpdate("pickUp", [avId, pickupNum, globalClockDelta.getRealNetworkTime()]) + if pickupType == Globals.Level.GatherableTypes.LaffPowerup: + av.toonUp(int(27 * self.getDifficulty()) + 3) + + if pickupType == Globals.Level.GatherableTypes.Memo: + self.totalMemos += 1 + + else: + self.notify.warning('Client requested unknown pickup \'%s\'' % pickupType) - def requestPickUp(self, todo0, todo1): - pass + def handleStart(self): + for toon in self.toons: + self.acceptOnce(self.air.getAvatarExitEvent(toon), self.__handleAvExit, [toon]) + + def __handleAvExit(self, toon): + if self.air: + if toon in self.toons: + self.toons.remove(toon) + self.ignore(self.air.getAvatarExitEvent(toon)) + if not self.toons: + self.gameDone(failed=True) + + def requestDelete(self): + DistCogdoGameAI.requestDelete(self) + self.ignoreAll() + + def __removeToon(self, avId): + if avId not in self.toons: + return + + self.toons.pop(self.toons.index(avId)) + if len(self.toons) == 0: + self.gameDone(failed=True) + + def __damage(self, av, damage): + av.takeDamage(damage) + if av.getHp() < 1: + self.__removeToon(av.doId) + + def getTotalMemos(self): + return self.totalMemos - def pickUp(self, todo0, todo1, todo2): - pass - - def debuffPowerup(self, todo0, todo1, todo2): - pass - - def doAction(self, todo0, todo1): - pass - - def eagleExitCooldown(self, todo0, todo1): - pass - - def toonSetAsEagleTarget(self, todo0, todo1, todo2): - pass - - def toonClearAsEagleTarget(self, todo0, todo1, todo2): - pass - - def toonDied(self, todo0, todo1): - pass - - def toonSpawn(self, todo0, todo1): - pass - - def toonSetBlades(self, todo0, todo1): - pass - - def toonBladeLost(self, todo0): - pass +from otp.ai.MagicWordGlobal import * +@magicWord(category=CATEGORY_MODERATOR) +def endFly(): + if hasattr(simbase.air, 'cogdoGame'): + game = simbase.air.cogdoGame + game.requestAction(Globals.AI.GameActions.LandOnWinPlatform, 0) + return 'Finished cogdo flying game!' + \ No newline at end of file diff --git a/toontown/cogdominium/DistCogdoGame.py b/toontown/cogdominium/DistCogdoGame.py index e93249ec..2d2da09b 100644 --- a/toontown/cogdominium/DistCogdoGame.py +++ b/toontown/cogdominium/DistCogdoGame.py @@ -11,7 +11,7 @@ from toontown.minigame.MinigameRulesPanel import MinigameRulesPanel from toontown.cogdominium.CogdoGameRulesPanel import CogdoGameRulesPanel from toontown.minigame import MinigameGlobals from toontown.toonbase import TTLocalizer as TTL -SCHELLGAMES_DEV = __debug__ and base.config.GetBool('schellgames-dev', False) +SCHELLGAMES_DEV = __debug__ and base.config.GetBool('cogdo-enable-cheat', True) class DistCogdoGame(DistCogdoGameBase, DistributedObject): notify = directNotify.newCategory('DistCogdoGame') @@ -19,6 +19,7 @@ class DistCogdoGame(DistCogdoGameBase, DistributedObject): def __init__(self, cr): DistributedObject.__init__(self, cr) base.cogdoGame = self + cr.cogdoGame = self self._waitingStartLabel = DirectLabel(text=TTL.MinigameWaitingForOtherPlayers, text_fg=VBase4(1, 1, 1, 1), relief=None, pos=(-0.6, 0, -0.75), scale=0.075) self._waitingStartLabel.hide() self.loadFSM = ClassicFSM.ClassicFSM('DistCogdoGame.loaded', [State.State('NotLoaded', self.enterNotLoaded, self.exitNotLoaded, ['Loaded']), State.State('Loaded', self.enterLoaded, self.exitLoaded, ['NotLoaded'])], 'NotLoaded', 'NotLoaded') @@ -71,7 +72,7 @@ class DistCogdoGame(DistCogdoGameBase, DistributedObject): return def getToon(self, toonId): - if toonId in self.cr.doId2do: + if self.cr.doId2do.has_key(toonId): return self.cr.doId2do[toonId] else: return None @@ -88,8 +89,8 @@ class DistCogdoGame(DistCogdoGameBase, DistributedObject): def announceGenerate(self): DistributedObject.announceGenerate(self) - self._requestInterior() self.loadFSM.request('Loaded') + self._requestInterior() self.notify.info('difficulty: %s, safezoneId: %s' % (self.getDifficulty(), self.getSafezoneId())) def _requestInterior(self): @@ -116,6 +117,7 @@ class DistCogdoGame(DistCogdoGameBase, DistributedObject): def disable(self): base.cogdoGame = None + self.cr.cogdoGame = None self.fsm.requestFinalState() self.loadFSM.requestFinalState() self.fsm = None @@ -230,7 +232,7 @@ class DistCogdoGame(DistCogdoGameBase, DistributedObject): def enterGame(self): if SCHELLGAMES_DEV: - self.acceptOnce('escape', messenger.send, ['magicWord', ['~endgame']]) + self.acceptOnce('escape', messenger.send, ['magicWord', ['~endMaze']]) def exitGame(self): if SCHELLGAMES_DEV: diff --git a/toontown/cogdominium/DistCogdoGameAI.py b/toontown/cogdominium/DistCogdoGameAI.py index 1a9f6052..9f494890 100644 --- a/toontown/cogdominium/DistCogdoGameAI.py +++ b/toontown/cogdominium/DistCogdoGameAI.py @@ -1,36 +1,108 @@ from direct.directnotify import DirectNotifyGlobal from direct.distributed.DistributedObjectAI import DistributedObjectAI +from direct.distributed.ClockDelta import * +import CogdoGameConsts class DistCogdoGameAI(DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistCogdoGameAI") - - def setInteriorId(self, todo0): - pass - - def setExteriorZone(self, todo0): - pass - - def setDifficultyOverrides(self, todo0, todo1): - pass - - def setVisible(self): - pass - - def setIntroStart(self): - pass - - def setToonSad(self, todo0): - pass - - def setToonDisconnect(self, todo0): - pass - + delayIntro = .1 + + def __init__(self, air): + DistributedObjectAI.__init__(self, air) + air.cogdoGame = self + self.interiorId = 0 + self.exteriorZone = 0 + self.difficultyOverrides = [2147483647, -1] + self.requests = {} + self.toons = [] + + def announceGenerate(self): + DistributedObjectAI.announceGenerate(self) + + self.finishEvent = self.uniqueName('CogdoMazeGameDone') + self.gameOverEvent = self.uniqueName('CogdoMazeGameLose') + + self.resetRequests() + + def d_startIntro(self): + self.sendUpdate('setVisible', []) + taskMgr.doMethodLater(self.delayIntro, self.__startIntro, self.taskName('CogdoStartIntro')) + + def getInterior(self): + return self.air.doId2do.get(self.interiorId) + + def resetRequests(self): + interior = self.getInterior() + toons = interior.getToons()[0] + for toon in toons: + self.requests[toon] = 0 + + def __startIntro(self, task = None): + self.sendUpdate('setIntroStart', []) + if task: + return task.done + def setAvatarReady(self): + avId = self.air.getAvatarIdFromSender() + self.requests[avId] = 1 + if not avId in self.toons: self.toons.append(avId) + if self.allToonsReady(): + self.handleStart() + self.sendUpdate('setGameStart', [globalClockDelta.getRealNetworkTime()]) + + def allToonsReady(self): + interior = self.getInterior() + toons = interior.getToons()[0] + for toon in toons: + if self.requests.get(toon, 0) == 0: + return 0 + return 1 + + def handleStart(self): pass - def setGameStart(self, todo0): - pass + def setInteriorId(self, id): + self.interiorId = id + + def getInteriorId(self): + return self.interiorId - def setGameFinish(self, todo0): - pass + def setExteriorZone(self, zone): + self.exteriorZone = zone + + def getExteriorZone(self): + return self.exteriorZone + def setDifficultyOverrides(self, difficulty, exteriorDifficulty): + self.difficultyOverrides = [difficulty, exteriorDifficulty] + + def getDifficultyOverrides(self): + return self.difficultyOverrides + + def toonWentSad(self, avId): + self.sendUpdate('setToonSad', [avId]) + + def setToons(self, toons): + self.toons = toons + + def disable(self): + DistributedObjectAI.disable(self) + self.air.cogdoGame = None + del self.air.cogdoGame + + def gameDone(self, failed=False): + if not failed: + if len(self.toons) == 0: + failed = True + + if not failed: + messenger.send(self.finishEvent, [self.toons]) + else: + messenger.send(self.gameOverEvent) + + def getDifficulty(self): + return CogdoGameConsts.getDifficulty(self.getSafezoneId()) + + def getSafezoneId(self): + return CogdoGameConsts.getSafezoneId(self.exteriorZone) + \ No newline at end of file diff --git a/toontown/cogdominium/DistCogdoMazeGame.py b/toontown/cogdominium/DistCogdoMazeGame.py index c4d7113e..a79cd4d6 100644 --- a/toontown/cogdominium/DistCogdoMazeGame.py +++ b/toontown/cogdominium/DistCogdoMazeGame.py @@ -14,8 +14,6 @@ class DistCogdoMazeGame(DistCogdoGame, DistCogdoMazeGameBase): DistCogdoGame.__init__(self, cr) self.game = CogdoMazeGame(self) self._numSuits = (0, 0, 0) - if __debug__ and base.config.GetBool('schellgames-dev', True): - self.accept('onCodeReload', self.__sgOnCodeReload) def delete(self): del self.randomNumGen @@ -45,7 +43,7 @@ class DistCogdoMazeGame(DistCogdoGame, DistCogdoMazeGameBase): bossCode = None if self._numSuits[0] > 0: bossCode = '' - for u in xrange(self._numSuits[0]): + for u in range(self._numSuits[0]): bossCode += '%X' % self.randomNumGen.randint(0, 15) self.game.load(mazeFactory, self._numSuits, bossCode) @@ -230,3 +228,12 @@ class DistCogdoMazeGame(DistCogdoGame, DistCogdoMazeGameBase): def setToonDisconnect(self, toonId): DistCogdoGame.setToonDisconnect(self, toonId) self.game.handleToonDisconnected(toonId) + +from otp.ai.MagicWordGlobal import * + +@magicWord(category=CATEGORY_MODERATOR) +def revealMap(): + if hasattr(base.cr, 'cogdoGame'): + game = base.cr.cogdoGame + game.game.guiMgr.mazeMapGui.showExit() + game.game.guiMgr.mazeMapGui.revealAll() diff --git a/toontown/cogdominium/DistCogdoMazeGameAI.py b/toontown/cogdominium/DistCogdoMazeGameAI.py index c17e7014..eb748399 100644 --- a/toontown/cogdominium/DistCogdoMazeGameAI.py +++ b/toontown/cogdominium/DistCogdoMazeGameAI.py @@ -1,51 +1,249 @@ from direct.directnotify import DirectNotifyGlobal from toontown.cogdominium.DistCogdoGameAI import DistCogdoGameAI +import CogdoMazeGameGlobals +from direct.distributed.ClockDelta import * +from direct.task import Timer +from toontown.battle import BattleBase +from toontown.building.ElevatorConstants import * + +ALL_ABOARD_LAG = .7 + +BASE_TOON_UP = 10 +JOKE_TOON_UP = 5 class DistCogdoMazeGameAI(DistCogdoGameAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistCogdoMazeGameAI") - - def requestAction(self, todo0, todo1): - pass - - def doAction(self, todo0, todo1, todo2): - pass - - def setNumSuits(self, todo0): - pass - - def requestUseGag(self, todo0, todo1, todo2, todo3): - pass - - def toonUsedGag(self, todo0, todo1, todo2, todo3, todo4): - pass - - def requestSuitHitByGag(self, todo0, todo1): - pass - - def suitHitByGag(self, todo0, todo1, todo2): - pass - - def requestHitBySuit(self, todo0, todo1, todo2): - pass - - def toonHitBySuit(self, todo0, todo1, todo2, todo3): - pass - + delayIntro = BattleBase.ELEVATOR_T + ElevatorData[ELEVATOR_NORMAL]['openTime'] + BattleBase.SERVER_BUFFER_TIME + + def __init__(self, air): + DistCogdoGameAI.__init__(self, air) + self.numSuits = (0,0,0) + self.timer = Timer.Timer() + self.doorRevealed = False + self.toonsInDoor = [] + self.bosses = {} + self.fastMinions = {} + self.slowMinions = {} + self.suitTypes = [self.bosses, self.fastMinions, self.slowMinions] + self.numJokes = {} + + def announceGenerate(self): + DistCogdoGameAI.announceGenerate(self) + self.setupSuitsAI() + + def setupSuitsAI(self): + bossHp = CogdoMazeGameGlobals.SuitData[0]['hp'] + fastMiniHp = CogdoMazeGameGlobals.SuitData[1]['hp'] + slowMiniHp = CogdoMazeGameGlobals.SuitData[2]['hp'] + + serialNum = 0 + for i in range(self.numSuits[0]): + self.bosses[serialNum] = bossHp + serialNum += 1 + for i in range(self.numSuits[1]): + self.fastMinions[serialNum] = fastMiniHp + serialNum += 1 + for i in range(self.numSuits[2]): + self.slowMinions[serialNum] = slowMiniHp + serialNum += 1 + + def setNumSuits(self, num): + self.numSuits = num + + def getNumSuits(self): + return self.numSuits + + def requestUseGag(self, x, y, h, timestamp): + avId = self.air.getAvatarIdFromSender() + self.sendUpdate('toonUsedGag', [avId, x, y, h, globalClockDelta.getRealNetworkTime()]) + + def requestSuitHitByGag(self, suitType, suitNum): + hitAI = self.hitSuitAI(suitType, suitNum) + if not hitAI: + self.notify.warning('Cannot hit suit!') + return + avId = self.air.getAvatarIdFromSender() + self.sendUpdate('suitHitByGag', [avId, suitType, suitNum]) + + def requestHitBySuit(self, suitType, suitNum, nettime): + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if av: + lostHp = CogdoMazeGameGlobals.SuitData[suitType]['toonDamage'] * self.getDifficulty() * 10 + av.takeDamage(lostHp) + networkTime = globalClockDelta.getRealNetworkTime() + self.sendUpdate('toonHitBySuit', [avId, suitType, suitNum, networkTime]) + if av.getHp() < 1: + self.toonWentSad(avId) + def requestHitByDrop(self): - pass + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if av: + lostHp = CogdoMazeGameGlobals.DropDamage + av.takeDamage(lostHp) + self.sendUpdate('toonHitByDrop', [avId]) + + def requestPickUp(self, pickupNum): + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if av: + now = globalClockDelta.getRealNetworkTime() + + if avId in self.numJokes: + self.numJokes[avId] += 1 + + else: + self.numJokes[avId] = 1 + + self.sendUpdate('pickUp', [avId, pickupNum, now]) + + def requestGag(self, coolerIndex): + avId = self.air.getAvatarIdFromSender() + self.sendUpdate('hasGag', [avId, globalClockDelta.getRealNetworkTime()]) + + def hitSuitAI(self, suitType, suitNum): + cogKey = None + for cogNum in self.suitTypes[suitType].keys(): + if cogNum == suitNum: + cogKey = cogNum + break + if cogKey == None: + return 0 + cogHp = self.suitTypes[suitType][cogKey] + cogHp -= 1 + self.suitTypes[suitType][cogKey] = cogHp + if cogHp <= 0: + del self.suitTypes[suitType][cogKey] + return 1 + + def handleStart(self): + taskMgr.add(self.__checkGameDone, self.taskName('check-game-done')) + taskMgr.add(self.__checkPlayersTask, self.taskName('check-players-task')) + serverDelay = 1.0 + self.timer.startCallback(CogdoMazeGameGlobals.SecondsUntilTimeout + serverDelay, self.__handleGameOver) + taskMgr.doMethodLater(serverDelay, self.clientCountdown, self.taskName('client_countdown')) + taskMgr.add(self.__timeWarningTask, self.taskName('time-warning-task')) + + def clientCountdown(self, task): + self.doAction(CogdoMazeGameGlobals.GameActions.Countdown, 0) + return task.done + + def __handleGameOver(self): + self.removeAll() + self.gameDone(failed=True) + + def __checkGameDone(self, task): + bossesLeft = self.bosses + if len(bossesLeft) == 0: + self.timer.stop() + self.doAction(CogdoMazeGameGlobals.GameActions.OpenDoor, 0) + self.__startTimeout() + return task.done + + return task.again + + def __startTimeout(self): + self.timer.startCallback(CogdoMazeGameGlobals.SecondsUntilGameEnds, self.__handleTimeout) + + def __handleTimeout(self): + for toon in self.toons: + if not toon in self.toonsInDoor: + self.killToon(toon) + + self.removeAll() + self.gameDone() + + def __timeWarningTask(self, task): + if self.timer.getT() <= CogdoMazeGameGlobals.SecondsForTimeAlert: + self.doAction(CogdoMazeGameGlobals.GameActions.TimeAlert, 0) + return task.done + + return task.again + + def killToon(self, avId): + av = self.air.doId2do.get(avId) + if av: + if av.getHp() > 0: + av.takeDamage(av.getHp()) + self.toonWentSad(avId) + self.__playerDisconnected(avId) + + def __checkPlayersTask(self, task): + for toonId in self.toons: + toon = self.air.doId2do.get(toonId) + if not toon: + self.__playerDisconnected(toonId) + + return task.again + + def __playerDisconnected(self, avId): + self.sendUpdate('setToonDisconnect', [avId]) + self.toons.pop(self.toons.index(avId)) + if len(self.toons) == 0: + self.removeAll() + self.gameDone(failed=True) + + def doAction(self, action, data): + self.sendUpdate('doAction', [action, data, globalClockDelta.getRealNetworkTime()]) + + def requestAction(self, action, data): + Globals = CogdoMazeGameGlobals + avId = self.air.getAvatarIdFromSender() + if action == Globals.GameActions.RevealDoor: + if not self.doorRevealed: + self.doAction(action, avId) + self.doorRevealed = True + + else: + self.notify.warning('Toon tried to reveal door but it\'s already revealed! Ignoring.') + + elif action == Globals.GameActions.EnterDoor: + if not avId in self.toonsInDoor: + self.doAction(action, avId) + self.toonsInDoor.append(avId) + self.toonUpToon(avId) + + else: + self.notify.warning('Toon tried to enter into door but already entered! Ignoring.') + return + + if len(self.toonsInDoor) >= len(self.toons): + self.__handleAllAboard() + + else: + self.notify.warning('Client requested unknown action \'%s\'' %action) + + def __handleAllAboard(self): + if len(self.toonsInDoor) != len(self.toons): + self.notify.warning('__handleAllAboard expect all toons aboard!') + return + self.removeAll() + taskMgr.doMethodLater(ALL_ABOARD_LAG, lambda t: self.gameDone(), self.taskName('all-aboard-delay')) + + def toonUpToon(self, toonId): + if toonId in self.toonsInDoor: + toon = self.air.doId2do.get(toonId) + if toon: + val = min(BASE_TOON_UP + JOKE_TOON_UP * self.numJokes.get(toonId, 0), toon.getMaxHp()) + toon.toonUp(val) + + def removeAll(self): + taskMgr.remove(self.taskName('check-game-done')) + taskMgr.remove(self.taskName('check-players-task')) + taskMgr.remove(self.taskName('time-warning-task')) + taskMgr.remove(self.taskName('all-aboard-delay')) + self.timer.stop() + + def disable(self): + DistCogdoGameAI.disable(self) + self.removeAll() - def toonHitByDrop(self, todo0): - pass - - def requestPickUp(self, todo0): - pass - - def pickUp(self, todo0, todo1, todo2): - pass - - def requestGag(self, todo0): - pass - - def hasGag(self, todo0, todo1): - pass +from otp.ai.MagicWordGlobal import * +@magicWord(category=CATEGORY_MODERATOR) +def endMaze(): + if hasattr(simbase.air, 'cogdoGame'): + maze = simbase.air.cogdoGame + maze.doAction(CogdoMazeGameGlobals.GameActions.OpenDoor, 0) + return 'Finished cogdo maze game!' diff --git a/toontown/cogdominium/DistributedCogdoBarrel.py b/toontown/cogdominium/DistributedCogdoBarrel.py index d105fd0a..e0e0018c 100644 --- a/toontown/cogdominium/DistributedCogdoBarrel.py +++ b/toontown/cogdominium/DistributedCogdoBarrel.py @@ -3,12 +3,15 @@ from direct.directnotify import DirectNotifyGlobal from direct.distributed import DistributedObject from toontown.toonbase import ToontownGlobals, ToontownIntervals from toontown.cogdominium import CogdoBarrelRoomConsts +from toontown.cogdominium import CogdoBarrelRoom +import random class DistributedCogdoBarrel(DistributedObject.DistributedObject): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedCogdoBarrel') def __init__(self, cr): DistributedObject.DistributedObject.__init__(self, cr) + self.barrelRoom = CogdoBarrelRoom.CogdoBarrelRoom() self.index = None self.state = None self.model = None @@ -17,6 +20,7 @@ class DistributedCogdoBarrel(DistributedObject.DistributedObject): self.collNodePath = None self.availableTex = None self.usedTex = None + self.brLaff = 0 return def generate(self): @@ -32,7 +36,6 @@ class DistributedCogdoBarrel(DistributedObject.DistributedObject): cogdoBarrelsNode = render.find('@@CogdoBarrels') if not cogdoBarrelsNode or cogdoBarrelsNode.isEmpty(): cogdoBarrelsNode = render.attachNewNode('CogdoBarrels') - cogdoBarrelsNode.stash() self.model.reparentTo(cogdoBarrelsNode) self.availableTex = loader.loadTexture('phase_5/maps/tt_t_ara_cbr_Barrel_notUsed.jpg') self.usedTex = loader.loadTexture('phase_5/maps/tt_t_ara_cbr_Barrel_Used.jpg') @@ -110,13 +113,18 @@ class DistributedCogdoBarrel(DistributedObject.DistributedObject): self.sendUpdate('requestGrab', []) def setGrab(self, avId): + toonup = CogdoBarrelRoomConsts.ToonUp if avId == base.localAvatar.doId: ToontownIntervals.start(ToontownIntervals.getPulseIval(self.model, self.__pulseIvalName(), 1.15, duration=0.2)) self.setState(CogdoBarrelRoomConsts.StateUsed) + self.brLaff = random.randint(toonup[0], toonup[1]) def setReject(self): pass + def getBarrelLaff(self): + return self.brLaff + def __pulseIvalName(self): return 'DistributedCogdoBarrelPulse%s' % self.doId diff --git a/toontown/cogdominium/DistributedCogdoBarrelAI.py b/toontown/cogdominium/DistributedCogdoBarrelAI.py index 23c5e081..3479af63 100644 --- a/toontown/cogdominium/DistributedCogdoBarrelAI.py +++ b/toontown/cogdominium/DistributedCogdoBarrelAI.py @@ -1,21 +1,36 @@ from direct.directnotify import DirectNotifyGlobal -from direct.distributed.DistributedObjectAI import DistributedObjectAI +from direct.distributed import DistributedObjectAI +import CogdoBarrelRoomConsts +import random -class DistributedCogdoBarrelAI(DistributedObjectAI): +class DistributedCogdoBarrelAI(DistributedObjectAI.DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistributedCogdoBarrelAI") - + + def __init__(self, air, index): + DistributedObjectAI.DistributedObjectAI.__init__(self, air) + self.index = index + self.state = CogdoBarrelRoomConsts.StateAvailable + self.brLaff = 0 + def requestGrab(self): - pass - - def setIndex(self, todo0): - pass - - def setState(self, todo0): - pass - - def setGrab(self, todo0): - pass - - def setReject(self): - pass - + toonup = CogdoBarrelRoomConsts.ToonUp + if self.state == CogdoBarrelRoomConsts.StateAvailable: + self.state = CogdoBarrelRoomConsts.StateUsed + self.sendUpdate("setState", [CogdoBarrelRoomConsts.StateUsed]) + self.sendUpdate("setGrab", [self.air.getAvatarIdFromSender()]) + self.brLaff = random.randint(toonup[0], toonup[1]) + self.recieveToonUp() + + def getIndex(self): + return self.index + + def getState(self): + return self.state + + def recieveToonUp(self): + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) + if not av: + return + + av.toonUp(self.brLaff) diff --git a/toontown/cogdominium/DistributedCogdoElevatorExt.py b/toontown/cogdominium/DistributedCogdoElevatorExt.py index 25f65334..b722f2da 100644 --- a/toontown/cogdominium/DistributedCogdoElevatorExt.py +++ b/toontown/cogdominium/DistributedCogdoElevatorExt.py @@ -1,17 +1,22 @@ +# File: D (Python 2.4) + from toontown.building.DistributedElevatorExt import DistributedElevatorExt +from toontown.building.ElevatorConstants import * +from toontown.building.ElevatorUtils import * +from toontown.toonbase import ToontownGlobals class DistributedCogdoElevatorExt(DistributedElevatorExt): - - def setupElevator(self): - DistributedElevatorExt.setupElevator(self) - self.elevatorSphereNodePath.setY(-1.0) - self.elevatorSphereNodePath.setZ(1.5) - + def __init__(self, cr): + DistributedElevatorExt.__init__(self, cr) + self.type = ELEVATOR_FIELD + def getElevatorModel(self): return self.bldg.getCogdoElevatorNodePath() + def getBldgDoorOrigin(self): return self.bldg.getCogdoDoorOrigin() + def _getDoorsClosedInfo(self): return ('cogdoInterior', 'cogdoInterior') diff --git a/toontown/cogdominium/DistributedCogdoElevatorExtAI.py b/toontown/cogdominium/DistributedCogdoElevatorExtAI.py index 5f69fdf5..4624df08 100644 --- a/toontown/cogdominium/DistributedCogdoElevatorExtAI.py +++ b/toontown/cogdominium/DistributedCogdoElevatorExtAI.py @@ -1,6 +1,12 @@ +# File: D (Python 2.4) + from direct.directnotify import DirectNotifyGlobal from toontown.building.DistributedElevatorExtAI import DistributedElevatorExtAI class DistributedCogdoElevatorExtAI(DistributedElevatorExtAI): - notify = DirectNotifyGlobal.directNotify.newCategory("DistributedCogdoElevatorExtAI") + notify = DirectNotifyGlobal.directNotify.newCategory('DistributedCogdoElevatorExtAI') + + def _createInterior(self): + self.bldg.createCogdoInterior() + diff --git a/toontown/cogdominium/DistributedCogdoInterior.py b/toontown/cogdominium/DistributedCogdoInterior.py index 9d06b5dc..0fabdb02 100644 --- a/toontown/cogdominium/DistributedCogdoInterior.py +++ b/toontown/cogdominium/DistributedCogdoInterior.py @@ -1,34 +1,37 @@ -from direct.directnotify import DirectNotifyGlobal -from direct.distributed import DistributedObject +import random +from direct.interval.IntervalGlobal import * from direct.distributed.ClockDelta import * +from toontown.building.ElevatorConstants import * +from toontown.toon import NPCToons +from pandac.PandaModules import NodePath +from toontown.building import ElevatorUtils +from toontown.toonbase import ToontownGlobals +from toontown.toonbase import ToontownBattleGlobals +from direct.directnotify import DirectNotifyGlobal from direct.fsm import ClassicFSM, State +from direct.distributed import DistributedObject from direct.fsm import State from direct.fsm.StatePush import StateVar, FunctionCall -from direct.interval.IntervalGlobal import * -from pandac.PandaModules import NodePath -import random - -from CogdoElevatorMovie import CogdoElevatorMovie -from CogdoExecutiveSuiteMovies import CogdoExecutiveSuiteIntro from toontown.battle import BattleBase -from toontown.building import ElevatorUtils -from toontown.building.ElevatorConstants import * -from toontown.chat.ChatGlobals import * -from toontown.cogdominium import CogdoBarrelRoom, CogdoBarrelRoomConsts -from toontown.cogdominium import CogdoGameConsts -from toontown.cogdominium.CogdoLayout import CogdoLayout -from toontown.distributed import DelayDelete from toontown.hood import ZoneUtil -from toontown.toon import NPCToons +from toontown.cogdominium.CogdoLayout import CogdoLayout +from toontown.cogdominium import CogdoGameConsts +from toontown.cogdominium import CogdoBarrelRoom, CogdoBarrelRoomConsts +from toontown.distributed import DelayDelete from toontown.toonbase import TTLocalizer -from toontown.toonbase import ToontownBattleGlobals -from toontown.toonbase import ToontownGlobals - - +from CogdoExecutiveSuiteMovies import CogdoExecutiveSuiteIntro +from CogdoBarrelRoomMovies import CogdoBarrelRoomIntro +from CogdoElevatorMovie import CogdoElevatorMovie +SUITE_DICT = {'s': 'tt_m_ara_crg_penthouse_sell', + 'l': 'tt_m_ara_crg_penthouse_law', + 'm': 'tt_m_ara_crg_penthouse_sell', + 'c': 'tt_m_ara_crg_penthouse_sell'} PAINTING_DICT = {'s': 'tt_m_ara_crg_paintingMoverShaker', 'l': 'tt_m_ara_crg_paintingLegalEagle', 'm': 'tt_m_ara_crg_paintingMoverShaker', 'c': 'tt_m_ara_crg_paintingMoverShaker'} + +from toontown.nametag.NametagGlobals import * class DistributedCogdoInterior(DistributedObject.DistributedObject): id = 0 @@ -73,7 +76,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): 120, 12, 38] - self._wantBarrelRoom = config.GetBool('cogdo-want-barrel-room', 0) + self._wantBarrelRoom = config.GetBool('cogdo-want-barrel-room', 1) self.barrelRoom = CogdoBarrelRoom.CogdoBarrelRoom() self.brResults = [[], []] self.barrelRoomIntroTrack = None @@ -83,8 +86,8 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.waitMusic = base.loadMusic('phase_7/audio/bgm/encntr_toon_winning_indoor.ogg') self.elevatorMusic = base.loadMusic('phase_7/audio/bgm/tt_elevator.ogg') self.fsm = ClassicFSM.ClassicFSM('DistributedCogdoInterior', [State.State('WaitForAllToonsInside', self.enterWaitForAllToonsInside, self.exitWaitForAllToonsInside, ['Elevator']), - State.State('Elevator', self.enterElevator, self.exitElevator, ['Game']), - State.State('Game', self.enterGame, self.exitGame, ['Resting', 'Failed', 'BattleIntro']), + State.State('Elevator', self.enterElevator, self.exitElevator, ['Game', 'BattleIntro', 'BarrelRoomIntro']), + State.State('Game', self.enterGame, self.exitGame, ['Resting', 'Failed', 'BattleIntro', 'BarrelRoomIntro', 'Elevator']), State.State('BarrelRoomIntro', self.enterBarrelRoomIntro, self.exitBarrelRoomIntro, ['CollectBarrels', 'Off']), State.State('CollectBarrels', self.enterCollectBarrels, self.exitCollectBarrels, ['BarrelRoomReward', 'Off']), State.State('BarrelRoomReward', self.enterBarrelRoomReward, self.exitBarrelRoomReward, ['Battle', @@ -121,6 +124,9 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): def setFOType(self, typeId): self.FOType = chr(typeId) + def getFOType(self): + return self.FOType + def __uniqueName(self, name): DistributedCogdoInterior.id += 1 return name + '%d' % DistributedCogdoInterior.id @@ -132,7 +138,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.elevatorModelIn = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_csa_elevatorB') self.leftDoorIn = self.elevatorModelIn.find('**/left_door') self.rightDoorIn = self.elevatorModelIn.find('**/right_door') - self.elevatorModelOut = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_csa_elevatorB') + self.elevatorModelOut = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_csa_elevator') self.leftDoorOut = self.elevatorModelOut.find('**/left_door') self.rightDoorOut = self.elevatorModelOut.find('**/right_door') @@ -152,12 +158,13 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): def setElevatorLights(self, elevatorModel): npc = elevatorModel.findAllMatches('**/floor_light_?;+s') - for i in xrange(npc.getNumPaths()): + for i in range(npc.getNumPaths()): np = npc.getPath(i) + np.setDepthOffset(120) floor = int(np.getName()[-1:]) - 1 if floor == self.currentFloor: np.setColor(LIGHT_ON_COLOR) - elif floor < self.layout.getNumGameFloors(): + elif floor < self.layout.getNumGameFloors() + (1 if self.FOType != "s" else 0): if self.isBossFloor(self.currentFloor): np.setColor(LIGHT_ON_COLOR) else: @@ -219,10 +226,10 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): return def isBossFloor(self, floorNum): - if self.layout.hasBossBattle(): - if self.layout.getBossBattleFloor() == floorNum: - return True - return False + if not self.layout.hasBossBattle(): + return False + + return (self.layout.getBossBattleFloor() + 0) == floorNum def __cleanup(self): self.toons = [] @@ -259,7 +266,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.ignore(toon.uniqueName('disable')) def __finishInterval(self, name): - if name in self.activeIntervals: + if self.activeIntervals.has_key(name): interval = self.activeIntervals[name] if interval.isPlaying(): interval.finish() @@ -308,7 +315,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.toons = [] for toonId in toonIds: if toonId != 0: - if toonId in self.cr.doId2do: + if self.cr.doId2do.has_key(toonId): toon = self.cr.doId2do[toonId] toon.stopSmooth() self.toons.append(toon) @@ -326,7 +333,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.suits = [] self.joiningReserves = [] for suitId in suitIds: - if suitId in self.cr.doId2do: + if self.cr.doId2do.has_key(suitId): suit = self.cr.doId2do[suitId] self.suits.append(suit) suit.fsm.request('Battle') @@ -334,13 +341,20 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): suit.reparentTo(render) if oldsuits.count(suit) == 0: self.joiningReserves.append(suit) + + if 'Elevator' in repr(self.fsm): + # fix the pos + pos, h = BattleBase.BattleBase.suitPoints[len(suitIds) - 1][suitIds.index(suitId)] + suit.setPos(pos) + suit.setH(h) + else: self.notify.warning('setSuits() - no suit: %d' % suitId) self.reserveSuits = [] - for index in xrange(len(reserveIds)): + for index in range(len(reserveIds)): suitId = reserveIds[index] - if suitId in self.cr.doId2do: + if self.cr.doId2do.has_key(suitId): suit = self.cr.doId2do[suitId] self.reserveSuits.append((suit, values[index])) else: @@ -405,17 +419,26 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): def __playElevator(self, ts, name, callback): SuitHs = [] SuitPositions = [] + if self.floorModel: self.floorModel.removeNode() self.floorModel = None + if self.cage: self.cage = None + if self.currentFloor == 0: SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions + if self.isBossFloor(self.currentFloor): + self.notify.info('__playElevator: currentFloor %s is boss' % self.currentFloor) self.barrelRoom.unload() - self.floorModel = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_penthouse') + if self.FOType: + penthouseName = SUITE_DICT.get(self.FOType) + for i in range(4): + self.floorModel = loader.loadModel('phase_5/models/cogdominium/%s' % penthouseName) + self.cage = self.floorModel.find('**/cage') pos = self.cage.getPos() self.cagePos = [] @@ -426,57 +449,79 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.cageDoor.wrtReparentTo(self.cage) if self.FOType: paintingModelName = PAINTING_DICT.get(self.FOType) - for i in xrange(4): + for i in range(4): paintingModel = loader.loadModel('phase_5/models/cogdominium/%s' % paintingModelName) loc = self.floorModel.find('**/loc_painting%d' % (i + 1)) paintingModel.reparentTo(loc) + if not self.floorModel.find('**/trophyCase').isEmpty(): + for i in range(4): + goldEmblem = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_goldTrophy.bam') + loc = self.floorModel.find('**/gold_0%d' % (i + 1)) + goldEmblem.reparentTo(loc) + for i in range(20): + silverEmblem = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_silverTrophy.bam') + loc = self.floorModel.find('**/silver_0%d' % (i + 1)) + silverEmblem.reparentTo(loc) + SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions self.__makeShopOwnerNpc() + else: if self._wantBarrelRoom: self.barrelRoom.load() self.barrelRoom.hide() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions + if self.floorModel: self.floorModel.reparentTo(render) if self.isBossFloor(self.currentFloor): - self.notify.debug('Load boss_suit_office') + self.notify.info('Load boss_suit_office') elevIn = self.floorModel.find(CogdoGameConsts.PenthouseElevatorInPath).copyTo(render) elevOut = self.floorModel.find(CogdoGameConsts.PenthouseElevatorOutPath) frame = self.elevatorModelOut.find('**/frame') + if not frame.isEmpty(): frame.hide() + frame = self.elevatorModelIn.find('**/frame') + if not frame.isEmpty(): frame.hide() + self.elevatorModelOut.reparentTo(elevOut) + self.elevatorModelOut.setY(0) + else: elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') - elif self._wantBarrelRoom and self.barrelRoom.isLoaded(): - elevIn = self.barrelRoom.dummyElevInNode + + elif self._wantBarrelRoom and self.barrelRoom.isLoaded() and self.currentFloor == 2 and self.FOType == 'l': #i know this is really ugly + elevIn = self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorInPath) elevOut = self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorOutPath) y = elevOut.getY(render) elevOut = elevOut.copyTo(render) elevOut.setY(render, y - 0.75) + else: floorModel = loader.loadModel('phase_7/models/modules/boss_suit_office') elevIn = floorModel.find('**/elevator-in').copyTo(render) elevOut = floorModel.find('**/elevator-out').copyTo(render) floorModel.removeNode() + self.elevIn = elevIn self.elevOut = elevOut self._haveEntranceElevator.set(True) - for index in xrange(len(self.suits)): - self.suits[index].setPos(SuitPositions[index]) - if len(self.suits) > 2: - self.suits[index].setH(SuitHs[index]) - else: - self.suits[index].setH(170) - self.suits[index].loop('neutral') + for index in range(len(self.suits)): + if not self.suits[index].isEmpty(): + self.suits[index].setPos(SuitPositions[index]) + if len(self.suits) > 2: + self.suits[index].setH(SuitHs[index]) + else: + self.suits[index].setH(170) + self.suits[index].loop('neutral') for toon in self.toons: toon.reparentTo(self.elevatorModelIn) @@ -500,7 +545,6 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track - return def enterElevator(self, ts = 0): if not self._CogdoGameRepeat: @@ -512,9 +556,10 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.elevatorModelOut.detachNode() messenger.send('sellbotFieldOfficeChanged', [True]) else: - self._movie = CogdoElevatorMovie() - self._movie.load() - self._movie.play() + if self.FOType == 's': + self._movie = CogdoElevatorMovie() + self._movie.load() + self._movie.play() self.__playElevator(ts, self.elevatorName, self.__handleElevatorDone) mult = ToontownBattleGlobals.getCreditMultiplier(self.currentFloor) base.localAvatar.inventory.setBattleCreditMultiplier(mult) @@ -531,12 +576,16 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): return None def __setupBarrelRoom(self): - base.cr.playGame.getPlace().fsm.request('stopped') + self.currentFloor += 1 base.transitions.irisOut(0.0) - self.elevatorModelIn.detachNode() + self.elevatorModelOut.setY(-12) + self.elevatorModelIn.reparentTo(self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorInPath)) + self.leftDoorIn.setPos(3.5, 0, 0) + self.rightDoorIn.setPos(-3.5, 0, 0) self._showExitElevator() self.barrelRoom.show() self.barrelRoom.placeToonsAtEntrance(self.toons) + self.setElevatorLights(self.elevatorModelOut) def barrelRoomIntroDone(self): self.sendUpdate('toonBarrelRoomIntroDone', []) @@ -550,6 +599,9 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self.accept(self.barrelRoomIntroDoneEvent, self.barrelRoomIntroDone) self.activeIntervals[trackName] = self.barrelRoomIntroTrack self.barrelRoomIntroTrack.start(ts) + self._movie = CogdoBarrelRoomIntro() + self._movie.load() + self._movie.play() else: self._showExitElevator() @@ -583,16 +635,13 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): def __brRewardDone(self, task = None): self.notify.info('Toon finished watching the barrel room reward.') self.sendUpdate('toonBarrelRoomRewardDone', []) - - def setBarrelRoomReward(self, avIds, laffs): - self.brResults = [avIds, laffs] - self.barrelRoom.setRewardResults(self.brResults) + self.fsm.request('Battle') def enterBarrelRoomReward(self, ts = 0): if self._wantBarrelRoom and not self.isBossFloor(self.currentFloor): base.cr.playGame.getPlace().fsm.request('stopped') self.startAlertElevatorLightIval(self.elevatorModelOut) - track, trackName = self.barrelRoom.showRewardUi(self.brResults, callback=self.__brRewardDone) + track, trackName = self.barrelRoom.showRewardUi(callback=self.__brRewardDone) self.activeIntervals[trackName] = track track.start() self.barrelRoom.placeToonsNearBattle(self.toons) @@ -680,7 +729,7 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): self._stashEntranceElevator.set(False) def _setAvPosToExit(self): - base.localAvatar.setPos(self.elevOut, 0, -10, 0) + base.localAvatar.setPos(self.elevOut, 0, -22, 0) base.localAvatar.setHpr(self.elevOut, 0, 0, 0) base.cr.playGame.getPlace().fsm.request('walk') @@ -739,12 +788,12 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): pass else: self.notify.warning('Invalid floor number for display badges.') - for player in xrange(len(self.toons)): + for player in range(len(self.toons)): goldBadge = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_goldTrophy') goldBadge.setScale(1.2) goldNode = render.find('**/gold_0' + str(player + 1)) goldBadge.reparentTo(goldNode) - for floor in xrange(numFloors): + for floor in range(numFloors): silverBadge = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_silverTrophy.bam') silverBadge.setScale(1.2) silverNode = render.find('**/silver_0' + str(floor * 4 + (player + 1))) @@ -755,7 +804,13 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): trackName = '__outroPenthouse-%d' % avatar.doId track = Parallel(name=trackName) base.cr.playGame.getPlace().fsm.request('stopped') - speech = TTLocalizer.CogdoExecutiveSuiteToonThankYou % self.SOSToonName + + if self.FOType == "l": + speech = TTLocalizer.CogdoExecutiveSuiteToonThankYouLawbot + + else: + speech = TTLocalizer.CogdoExecutiveSuiteToonThankYou % self.SOSToonName + track.append(Sequence(Func(camera.wrtReparentTo, localAvatar), Func(camera.setPos, 0, -9, 9), Func(camera.lookAt, Point3(5, 15, 0)), Parallel(self.cage.posInterval(0.75, self.cagePos[1], blendType='easeOut'), SoundInterval(self.cageLowerSfx, duration=0.5)), Parallel(self.cageDoor.hprInterval(0.5, VBase3(0, 90, 0), blendType='easeOut'), Sequence(SoundInterval(self.cageDoorSfx), duration=0)), Wait(0.25), Func(self.shopOwnerNpc.wrtReparentTo, render), Func(self.shopOwnerNpc.setScale, 1), Func(self.shopOwnerNpc.loop, 'walk'), Func(self.shopOwnerNpc.headsUp, Point3(0, 10, 0)), ParallelEndTogether(self.shopOwnerNpc.posInterval(1.5, Point3(0, 10, 0)), self.shopOwnerNpc.hprInterval(0.5, VBase3(180, 0, 0), blendType='easeInOut')), Func(self.shopOwnerNpc.setChatAbsolute, TTLocalizer.CagedToonYippee, CFSpeech), ActorInterval(self.shopOwnerNpc, 'jump'), Func(self.shopOwnerNpc.loop, 'neutral'), Func(self.shopOwnerNpc.headsUp, localAvatar), Func(self.shopOwnerNpc.setLocalPageChat, speech, 0), Func(camera.lookAt, self.shopOwnerNpc, Point3(0, 0, 2)))) self.activeIntervals[trackName] = track self.accept('doneChatPage', self.__outroPenthouseChatDone) @@ -764,6 +819,6 @@ class DistributedCogdoInterior(DistributedObject.DistributedObject): def __outroPenthouseChatDone(self, elapsed = None): self.shopOwnerNpc.setChatAbsolute(TTLocalizer.CogdoExecutiveSuiteToonBye, CFSpeech) self.ignore('doneChatPage') - track = Parallel(Sequence(ActorInterval(self.shopOwnerNpc, 'wave'), Func(self.shopOwnerNpc.loop, 'neutral')), Sequence(Wait(2.0), Func(self.exitCogdoBuilding), Func(base.camLens.setMinFov, ToontownGlobals.DefaultCameraFov/(4./3.)))) + track = Parallel(Sequence(ActorInterval(self.shopOwnerNpc, 'wave'), Func(self.shopOwnerNpc.loop, 'neutral')), Sequence(Wait(2.0), Func(self.exitCogdoBuilding), Func(base.camLens.setFov, ToontownGlobals.DefaultCameraFov))) track.start() self.penthouseOutroChatDoneTrack = track diff --git a/toontown/cogdominium/DistributedCogdoInteriorAI.py b/toontown/cogdominium/DistributedCogdoInteriorAI.py index e2fe2142..75648648 100644 --- a/toontown/cogdominium/DistributedCogdoInteriorAI.py +++ b/toontown/cogdominium/DistributedCogdoInteriorAI.py @@ -1,57 +1,559 @@ from direct.directnotify import DirectNotifyGlobal from direct.distributed.DistributedObjectAI import DistributedObjectAI +from direct.distributed.ClockDelta import * +from direct.fsm import FSM +from direct.task import Timer +from toontown.battle import BattleBase +from toontown.building.ElevatorConstants import * +from toontown.toonbase.ToontownGlobals import * +from toontown.toonbase.ToontownBattleGlobals import * +import DistCogdoMazeGameAI, CogdoMazeGameGlobals, DistributedCogdoElevatorIntAI +import DistCogdoFlyingGameAI, DistributedCogdoBarrelAI +from DistributedCogdoBattleBldgAI import DistributedCogdoBattleBldgAI +from SuitPlannerCogdoInteriorAI import SuitPlannerCogdoInteriorAI +from toontown.cogdominium import CogdoBarrelRoomConsts -class DistributedCogdoInteriorAI(DistributedObjectAI): +from toontown.toon import NPCToons +import random, math + +NUM_FLOORS_DICT = { + 's': 1, + 'l': 2, + 'm':1, + 'c': 1 + } + +BATTLE_INTRO_DURATION = 10 +BARREL_INTRO_DURATION = 12 +BARREL_ROOM_DURATION = 30 +BARREL_ROOM_REWARD_DURATION = 7 + +class DistributedCogdoInteriorAI(DistributedObjectAI, FSM.FSM): notify = DirectNotifyGlobal.directNotify.newCategory("DistributedCogdoInteriorAI") + + def __init__(self, air, exterior): + DistributedObjectAI.__init__(self, air) + FSM.FSM.__init__(self, 'CogdoInteriorAIFSM') + self.toons = filter(None, exterior.elevator.seats[:]) + self.responses = {} + self.bldgDoId = exterior.doId + self.numFloors = NUM_FLOORS_DICT[exterior.track] + self.sosNPC = self.__generateSOS(exterior.difficulty) + + self.shopOwnerNpcId = 0 + + self.extZoneId, self.zoneId = exterior.getExteriorAndInteriorZoneId() + npcIdList = NPCToons.zone2NpcDict.get(self.zoneId, []) + + if len(npcIdList) == 0: + self.notify.info('No NPC in taken cogdo at %s' % self.zoneId) + + else: + if len(npcIdList) > 1: + self.notify.warning('Multiple NPCs in taken cogdo at %s' % self.zoneId) + + self.shopOwnerNpcId = npcIdList[0] - def setZoneId(self, todo0): - pass + self.gameDone = 0 + self.bossBattleDone = 0 + self.curFloor = 0 + self.topFloor = 2 + self.timer = Timer.Timer() + self.exterior = exterior + self.planner = self.exterior.planner + self.savedByMap = { } + self.battle = None + + self.FOType = exterior.track - def setExtZoneId(self, todo0): - pass + self.gameFloor = 1 + self.battleFloor = 2 + self.barrelFloor = -1 + + if self.FOType == 'l': + self.battleFloor = 3 + self.barrelFloor = 2 + self.topFloor += 1 + + self.toonSkillPtsGained = { } + self.toonExp = { } + self.toonOrigQuests = { } + self.toonItems = { } + self.toonOrigMerits = { } + self.toonMerits = { } + self.toonParts = { } + self.helpfulToons = [] + self.barrels = [] + self.suits = [] + self.activeSuits = [] + self.reserveSuits = [] + self.joinedReserves = [] + self.suitsKilled = [] + self.suitsKilledPerFloor = [] + self.ignoreResponses = 0 + self.ignoreElevatorDone = 0 + self.ignoreReserveJoinDone = 0 + + def __generateSOS(self, difficulty): + g = lambda: random.choice(NPCToons.FOnpcFriends.keys()) + v = g() + + getStars = lambda x: NPCToons.getNPCTrackLevelHpRarity(x)[-1] + + maxStars = min(2, int(math.ceil(difficulty / 5.))) + minStars = max(0, maxStars - 1) + + while not (minStars <= getStars(v) <= maxStars): + v = g() + + self.notify.info('selected SOS %s (stars = %s)' % (v, getStars(v))) + return v + + def setZoneId(self, zoneId): + self.zoneId = zoneId + + def getZoneId(self): + return self.zoneId - def setDistBldgDoId(self, todo0): - pass + def setExtZoneId(self, extZoneId): + self.extZoneId = extZoneId + + def getExtZoneId(self): + return self.extZoneId + + def setDistBldgDoId(self, bldgDoId): + self.bldgDoId = bldgDoId + + def getDistBldgDoId(self): + return self.bldgDoId - def setNumFloors(self, todo0): - pass + def setNumFloors(self, numFloors): + self.numFloors = numFloors + + def getNumFloors(self): + return self.numFloors - def setShopOwnerNpcId(self, todo0): - pass - - def setSOSNpcId(self, todo0): - pass - - def setFOType(self, todo0): - pass - - def setToons(self, todo0, todo1): - pass - - def setSuits(self, todo0, todo1, todo2): - pass - - def setState(self, todo0, todo1): - pass - - def setAvatarJoined(self): - pass - - def elevatorDone(self): - pass + def setShopOwnerNpcId(self, id): + self.shopOwnerNpcId = id + + def getShopOwnerNpcId(self): + return self.shopOwnerNpcId + + def setState(self, state, timestamp): + self.request(state) + + def getState(self): + timestamp = globalClockDelta.getRealNetworkTime() + return [self.state, timestamp] + + def b_setState(self, state): + self.setState(state, 0) + self.d_setState(state) + + def d_setState(self, state): + timestamp = globalClockDelta.getRealNetworkTime() + self.sendUpdate('setState', [state, timestamp]) def reserveJoinDone(self): - pass + toonId = self.air.getAvatarIdFromSender() + if self.ignoreResponses == 1: + return None + elif self.toons.count(toonId) == 0: + self.notify.warning('reserveJoinDone() - toon not in list: %d' % toonId) + return None + self.b_setState('Battle') + + def elevatorDone(self): + toonId = self.air.getAvatarIdFromSender() + if self.ignoreResponses == 1: + return None + + elif self.toons.count(toonId) == 0: + self.notify.warning('elevatorDone() - toon not in toon list: %d' % toonId) + + def enterWaitForAllToonsInside(self): + self.resetResponses() + + if self.FOType == "s": + self.game = DistCogdoMazeGameAI.DistCogdoMazeGameAI(self.air) + self.game.setNumSuits(CogdoMazeGameGlobals.NumSuits) + + elif self.FOType == "l": + self.game = DistCogdoFlyingGameAI.DistCogdoFlyingGameAI(self.air) + + elif self.FOType == "m": + self.game = DistCogdoCraneGameAI.DistCogdoCraneGameAI(self.air) - def toonLeftBarrelRoom(self): - pass + self.sendUpdate("setSOSNpcId", [self.sosNPC]) + self.sendUpdate("setFOType", [ord(self.FOType)]) + + def resetResponses(self): + for toon in self.toons: + self.responses[toon] = 0 + + def setAvatarJoined(self): + avId = self.air.getAvatarIdFromSender() + self.responses[avId] = 1 + avatar = self.air.doId2do.get(avId) + if avatar != None: + self.savedByMap[avId] = (avatar.getName(), avatar.dna.asTuple()) + self.addToon(avId) + if self.allToonsJoined(): + self.request('Elevator') + + def addToon(self, avId): + if not avId in self.toons: + self.toons.append(avId) + + if self.air.doId2do.has_key(avId): + event = self.air.getAvatarExitEvent(avId) + self.accept(event, self.__handleUnexpectedExit, [avId]) + + def __handleUnexpectedExit(self, avId): + self.removeToon(avId) + if len(self.toons) == 0: + self.exterior.deleteSuitInterior() + if self.battle: + self.battle.requestDelete() + self.battle = None + + def removeToon(self, avId): + if avId in self.toons: self.toons.pop(avId) + + def enterElevator(self): + self.curFloor += 1 + self.d_setToons() + self.resetResponses() + + if self.curFloor == self.gameFloor: + self.enterGame() + + self.d_setState('Elevator') + self.timer.stop() + self.timer.startCallback(BattleBase.ELEVATOR_T + ElevatorData[ELEVATOR_NORMAL]['openTime'] + BattleBase.SERVER_BUFFER_TIME, self.serverElevatorDone) + + if self.curFloor == self.battleFloor: + self.planner.myPrint() + suitHandles = self.planner.genFloorSuits(0) + + self.suits = suitHandles['activeSuits'] + self.activeSuits = self.suits[:] + self.reserveSuits = suitHandles['reserveSuits'] + + self.d_setSuits() + + def exitElevator(self): + self.timer.stop() + + def serverElevatorDone(self): + if self.curFloor == self.gameFloor: + self.d_setState('Game') + + elif self.curFloor == self.battleFloor: + self.b_setState('BattleIntro') + self.timer.startCallback(BATTLE_INTRO_DURATION, self.battleIntroDone) + + else: + self.notify.warning('Unknown floor %s (track=%s)' % (self.curFloor, self.FOType)) + + def battleIntroDone(self): + if self.air: + self.createBattle() + self.b_setState('Battle') + + def barrelIntroDone(self): + if not self.air: + return + + self.b_setState('CollectBarrels') + for i in xrange(len(CogdoBarrelRoomConsts.BarrelProps)): + barrel = DistributedCogdoBarrelAI.DistributedCogdoBarrelAI(self.air, i) + barrel.generateWithRequired(self.zoneId) + self.barrels.append(barrel) + self.timer.startCallback(BARREL_ROOM_DURATION, self.barrelReward) - def toonBarrelRoomIntroDone(self): - pass + def barrelReward(self): + if not self.air: + return + + self.b_setState('BarrelRoomReward') + for i in self.barrels: + i.requestDelete() + self.timer.startCallback(BARREL_ROOM_REWARD_DURATION, self.barrelRewardDone) + + def barrelRewardDone(self): + if not self.air: + return + + barrelPlanner = SuitPlannerCogdoInteriorAI(self.exterior._cogdoLayout, max(0, self.exterior.difficulty - 5), + self.FOType, self.exterior.getExteriorAndInteriorZoneId()[1]) + barrelPlanner.myPrint() + suitHandles = barrelPlanner.genFloorSuits(0) + + self.suits = suitHandles['activeSuits'] + self.activeSuits = self.suits[:] + self.reserveSuits = suitHandles['reserveSuits'] + + self.d_setSuits() + + self.battleIntroDone() + + def handleAllAboard(self, seats): + if not hasattr(self, 'air') or not self.air: + return None + + numOfEmptySeats = seats.count(None) + if numOfEmptySeats == 4: + self.exterior.deleteSuitInterior() + return + + elif not 0 <= numOfEmptySeats <= 3: + self.notify.error('Bad number of empty seats: %s' % numOfEmptySeats) + + for toon in self.toons: + if toon not in seats: + self.removeToon(toon) + + self.toons = filter(None, seats) + self.d_setToons() - def setBarrelRoomReward(self, todo0, todo1): - pass + self.request('Elevator') + + def enterGame(self): + self.game.setToons(self.toons) + self.game.setInteriorId(self.doId) + self.game.setExteriorZone(self.exterior.zoneId) + self.game.setDifficultyOverrides(2147483647, -1) + self.game.generateWithRequired(self.zoneId) + self.game.d_startIntro() + self.accept(self.game.finishEvent, self.__handleGameDone) + self.accept(self.game.gameOverEvent, self.__handleGameOver) + + def __handleGameDone(self, toons): + self.game.requestDelete() + self.gameDone = 1 + self.toons = toons + if self.curFloor == self.barrelFloor - 1: + self.curFloor += 1 + self.d_setToons() + self.resetResponses() + self.b_setState('BarrelRoomIntro') + self.timer.startCallback(BARREL_INTRO_DURATION, self.barrelIntroDone) + else: + self.request('Elevator') + + def __handleGameOver(self): + self.game.requestDelete() + self.exterior.deleteSuitInterior() + + def createBattle(self): + isBoss = self.curFloor == self.topFloor + self.battle = DistributedCogdoBattleBldgAI(self.air, self.zoneId, self.__handleRoundDone, self.__handleBattleDone, bossBattle = isBoss) + self.battle.suitsKilled = self.suitsKilled + self.battle.suitsKilledPerFloor = self.suitsKilledPerFloor + self.battle.battleCalc.toonSkillPtsGained = self.toonSkillPtsGained + self.battle.toonExp = self.toonExp + self.battle.toonOrigQuests = self.toonOrigQuests + self.battle.toonItems = self.toonItems + self.battle.toonOrigMerits = self.toonOrigMerits + self.battle.toonMerits = self.toonMerits + self.battle.toonParts = self.toonParts + self.battle.helpfulToons = self.helpfulToons + self.battle.setInitialMembers(self.toons, self.suits) + self.battle.generateWithRequired(self.zoneId) + + mult = getCreditMultiplier(self.curFloor) + + self.battle.battleCalc.setSkillCreditMultiplier(self.battle.battleCalc.getSkillCreditMultiplier() * mult) + + def enterBattleDone(self, toonIds): + toonIds = toonIds[0] + if len(toonIds) != len(self.toons): + deadToons = [] + for toon in self.toons: + if toonIds.count(toon) == 0: + deadToons.append(toon) + continue + + for toon in deadToons: + self.removeToon(toon) + + self.d_setToons() + if len(self.toons) == 0: + self.exterior.deleteSuitInterior() + + elif self.curFloor == self.topFloor: + self.battle.resume(self.curFloor, topFloor = 1) + + else: + self.battle.resume(self.curFloor, topFloor = 0) + + def __doDeleteInterior(self, task): + self.exterior.deleteSuitInterior() + return task.done + + def exitBattleDone(self): + self.cleanupFloorBattle() + + def cleanupFloorBattle(self): + for suit in self.suits: + if suit.isDeleted(): + continue + suit.requestDelete() + + self.suits = [] + self.reserveSuits = [] + self.activeSuits = [] + if self.battle != None: + self.battle.requestDelete() + + self.battle = None + + def __handleRoundDone(self, toonIds, totalHp, deadSuits): + totalMaxHp = 0 + for suit in self.suits: + totalMaxHp += suit.maxHP + + for suit in deadSuits: + self.activeSuits.remove(suit) + + if len(self.reserveSuits) > 0 and len(self.activeSuits) < 4: + self.joinedReserves = [] + hpPercent = 100 - (totalHp / totalMaxHp) * 100.0 + for info in self.reserveSuits: + if info[1] <= hpPercent and len(self.activeSuits) < 4: + self.suits.append(info[0]) + self.activeSuits.append(info[0]) + self.joinedReserves.append(info) + continue + + for info in self.joinedReserves: + self.reserveSuits.remove(info) + + if len(self.joinedReserves) > 0: + self.d_setSuits() + self.request('ReservesJoining') + return + + if len(self.activeSuits) == 0: + self.request('BattleDone', [ + toonIds]) + else: + self.battle.resume() + + def enterReservesJoining(self): + self.resetResponses() + self.timer.startCallback(ElevatorData[ELEVATOR_NORMAL]['openTime'] + SUIT_HOLD_ELEVATOR_TIME + BattleBase.SERVER_BUFFER_TIME, self.serverReserveJoinDone) - def toonBarrelRoomRewardDone(self): - pass + def exitReservesJoining(self): + self.timer.stop() + self.resetResponses() + for info in self.joinedReserves: + self.battle.suitRequestJoin(info[0]) + + self.battle.resume() + self.joinedReserves = [] + + def serverReserveJoinDone(self): + self.ignoreReserveJoinDone = 1 + self.b_setState('Battle') + + def __handleBattleDone(self, zoneId, toonIds): + if len(toonIds) == 0: + taskMgr.doMethodLater(10, self.__doDeleteInterior, self.taskName('deleteInterior')) + elif self.curFloor == self.topFloor: + self.request('Reward') + else: + self.b_setState('Resting') + + def enterResting(self): + self.intElevator = DistributedCogdoElevatorIntAI.DistributedCogdoElevatorIntAI(self.air, self, self.toons) + self.intElevator.generateWithRequired(self.zoneId) + + def exitResting(self): + self.intElevator.requestDelete() + + def enterReward(self): + victors = self.toons[:] + savedBy = [] + for v in victors: + tuple = self.savedByMap.get(v) + if tuple: + savedBy.append([ + v, + tuple[0], + tuple[1]]) + + toon = self.air.doId2do.get(v) + if toon: + if self.FOType == 's': + if not toon.attemptAddNPCFriend(self.sosNPC, numCalls=1): + self.notify.info('%s unable to add NPCFriend %s to %s.' % (self.doId, self.sosNPC, v)) + + elif self.FOType == 'l': + reward = self.getEmblemsReward() + toon.addEmblems(reward) + + else: + self.notify.warning('%s unable to reward %s: unknown reward for track %s' % (self.doId, v, self.FOType)) + + self.exterior.fsm.request('waitForVictorsFromCogdo', [ + victors, + savedBy]) + self.d_setState('Reward') + + def removeToon(self, toonId): + if self.toons.count(toonId): + self.toons.remove(toonId) + + def d_setToons(self): + self.sendUpdate('setToons', self.getToons()) + + def getToons(self): + return [self.toons, 0] + + def d_setSuits(self): + self.sendUpdate('setSuits', self.getSuits()) + + def getSuits(self): + suitIds = [] + for suit in self.activeSuits: + suitIds.append(suit.doId) + + reserveIds = [] + values = [] + for info in self.reserveSuits: + reserveIds.append(info[0].doId) + values.append(info[1]) + + return [ + suitIds, + reserveIds, + values] + + def allToonsJoined(self): + for toon in self.toons: + if self.responses[toon] == 0: + return 0 + return 1 + def delete(self): + DistributedObjectAI.delete(self) + self.timer.stop() + + def getEmblemsReward(self): + hoodIdMap = {2: .5, # ttc + 1: 1., # dd + 5: 1.5, # dg + 4: 2., # mm + 3: 2.7, # br + 9: 3.5, # dl + 7: 4 # ff + } + + hoodValue = hoodIdMap[int(self.exterior.zoneId // 1000)] + diff = max(self.exterior.difficulty, 1) + memos = self.game.getTotalMemos() + + E = (hoodValue * max(memos, 1) * diff) / 2.5 + return divmod(E, 100)[::-1] diff --git a/toontown/cogdominium/SuitPlannerCogdoInteriorAI.py b/toontown/cogdominium/SuitPlannerCogdoInteriorAI.py index 2a492ef3..d2a604fd 100644 --- a/toontown/cogdominium/SuitPlannerCogdoInteriorAI.py +++ b/toontown/cogdominium/SuitPlannerCogdoInteriorAI.py @@ -1,10 +1,206 @@ -from toontown.building.SuitPlannerInteriorAI import SuitPlannerInteriorAI +from otp.ai.AIBaseGlobal import * +from toontown.suit import SuitDNA +from direct.directnotify import DirectNotifyGlobal +from toontown.suit import DistributedSuitAI +from toontown.building import SuitBuildingGlobals +import types, math, random +BASE_RESERVE = 10 -class SuitPlannerCogdoInteriorAI(SuitPlannerInteriorAI): - def __init__(self, cogdoLayout, bldgLevel, bldgTrack, zone): - self._cogdoLayout = cogdoLayout - SuitPlannerInteriorAI.__init__(self, self._cogdoLayout.getNumGameFloors(), bldgLevel, bldgTrack, zone) +MAX_RESERVES = { + 's': BASE_RESERVE * .9, + 'm': BASE_RESERVE * 1.1, + 'l': BASE_RESERVE * 1.25, + 'c': BASE_RESERVE * 1.5, + } - def _genSuitInfos(self, numFloors, bldgLevel, bldgTrack): - SuitPlannerInteriorAI._genSuitInfos(self, self._cogdoLayout.getNumFloors(), bldgLevel, bldgTrack) +def filterReviveChance(track, revive): + if revive >= 0: + return revive + + return random.randint(config.GetInt('min-lt-vs', 0), config.GetInt('max-lt-vs', 2)) + # implements difficulty 19 / LT + +def getMaxReserves(track): + return int(math.ceil(MAX_RESERVES[track])) + +class SuitPlannerCogdoInteriorAI: + notify = DirectNotifyGlobal.directNotify.newCategory('SuitPlannerCogdoInteriorAI') + + def __init__(self, layout, difficulty, track, zoneId, numFloors = 1): + self.zoneId = zoneId + self.numFloors = layout.getNumFloors() + difficulty = min(difficulty + 4, len(SuitBuildingGlobals.SuitBuildingInfo) - 1) + + self.respectInvasions = 1 + + if isinstance(difficulty, types.StringType): + self.notify.warning('difficulty is a string!') + difficulty = int(difficulty) + + self._genSuitInfos(numFloors, difficulty, track) + + def __genJoinChances(self, num): + joinChances = [] + for currChance in range(num): + joinChances.append(random.randint(1, 100)) + + joinChances.sort(cmp) + return joinChances + + def _genSuitInfos(self, numFloors, difficulty, bldgTrack): + self.suitInfos = [] + self.notify.debug('\n\ngenerating suitsInfos with numFloors (' + str(numFloors) + ') difficulty (' + str(difficulty) + '+1) and bldgTrack (' + str(bldgTrack) + ')') + for currFloor in range(numFloors): + infoDict = {} + lvls = self.__genLevelList(difficulty, currFloor, numFloors) + activeDicts = [] + numActive = random.randint(1, min(4, len(lvls))) + + if currFloor + 1 == numFloors and len(lvls) > 1: + origBossSpot = len(lvls) - 1 + + if numActive == 1: + newBossSpot = numActive - 1 + + else: + newBossSpot = numActive - 2 + + tmp = lvls[newBossSpot] + lvls[newBossSpot] = lvls[origBossSpot] + lvls[origBossSpot] = tmp + + bldgInfo = SuitBuildingGlobals.SuitBuildingInfo[difficulty] + + if len(bldgInfo) > SuitBuildingGlobals.SUIT_BLDG_INFO_REVIVES: + revives = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_REVIVES][0] + + else: + revives = 0 + + for currActive in range(numActive - 1, -1, -1): + level = lvls[currActive] + type = self.__genNormalSuitType(level) + activeDict = {} + activeDict['type'] = type + activeDict['track'] = bldgTrack + activeDict['level'] = level + activeDict['revives'] = filterReviveChance(bldgTrack, revives) + activeDicts.append(activeDict) + + infoDict['activeSuits'] = activeDicts + reserveDicts = [] + numReserve = min(len(lvls) - numActive, getMaxReserves(bldgTrack)) + joinChances = self.__genJoinChances(numReserve) + for currReserve in range(numReserve): + level = lvls[currReserve + numActive] + type = self.__genNormalSuitType(level) + reserveDict = {} + reserveDict['type'] = type + reserveDict['track'] = bldgTrack + reserveDict['level'] = level + reserveDict['revives'] = filterReviveChance(bldgTrack, revives) + reserveDict['joinChance'] = joinChances[currReserve] + reserveDicts.append(reserveDict) + + infoDict['reserveSuits'] = reserveDicts + self.suitInfos.append(infoDict) + + def __genNormalSuitType(self, lvl): + return SuitDNA.getRandomSuitType(lvl) + + def __genLevelList(self, difficulty, currFloor, numFloors): + bldgInfo = SuitBuildingGlobals.SuitBuildingInfo[difficulty] + + lvlPoolRange = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_LVL_POOL] + maxFloors = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_FLOORS][1] + lvlPoolMults = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_LVL_POOL_MULTS] + floorIdx = min(currFloor, maxFloors - 1) + lvlPoolMin = lvlPoolRange[0] * lvlPoolMults[floorIdx] + lvlPoolMax = lvlPoolRange[1] * lvlPoolMults[floorIdx] + lvlPool = random.randint(int(lvlPoolMin), int(lvlPoolMax)) + lvlMin = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_SUIT_LVLS][0] + lvlMax = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_SUIT_LVLS][1] + self.notify.debug('Level Pool: ' + str(lvlPool)) + lvlList = [] + while lvlPool >= lvlMin: + newLvl = random.randint(lvlMin, min(lvlPool, lvlMax)) + lvlList.append(newLvl) + lvlPool -= newLvl + + if currFloor + 1 == numFloors: + bossLvlRange = bldgInfo[SuitBuildingGlobals.SUIT_BLDG_INFO_BOSS_LVLS] + newLvl = random.randint(bossLvlRange[0], bossLvlRange[1]) + lvlList.append(newLvl) + lvlList.sort(cmp) + self.notify.debug('LevelList: ' + repr(lvlList)) + return lvlList + + def __setupSuitInfo(self, suit, bldgTrack, suitLevel, suitType): + suitName, skeleton = simbase.air.suitInvasionManager.getInvadingCog() + if suitName and self.respectInvasions: + suitType = SuitDNA.getSuitType(suitName) + bldgTrack = SuitDNA.getSuitDept(suitName) + suitLevel = min(max(suitLevel, suitType), suitType + 4) + dna = SuitDNA.SuitDNA() + dna.newSuitRandom(suitType, bldgTrack) + suit.dna = dna + self.notify.debug('Creating suit type ' + suit.dna.name + ' of level ' + str(suitLevel) + ' from type ' + str(suitType) + ' and track ' + str(bldgTrack)) + suit.setLevel(suitLevel) + return skeleton + + def __genSuitObject(self, suitZone, suitType, bldgTrack, suitLevel, revives = 0): + newSuit = DistributedSuitAI.DistributedSuitAI(simbase.air, None) + skel = self.__setupSuitInfo(newSuit, bldgTrack, suitLevel, suitType) + if skel: + newSuit.setSkelecog(1) + newSuit.setSkeleRevives(revives) + newSuit.generateWithRequired(suitZone) + newSuit.node().setName('suit-%s' % newSuit.doId) + return newSuit + + def myPrint(self): + print 'Generated suits for cogdo: ' + + for floor, currInfo in enumerate(self.suitInfos): + floor += 1 + + actives = currInfo['activeSuits'] + reserves = currInfo['reserveSuits'] + + print ' Floor %d has %d active suits.' % (floor, len(actives)) + print ' Floor %d has %d reserve suits.' % (floor, len(reserves)) + + for idx, currActive in enumerate(actives): + type, track, level, revives = map(lambda x: currActive[x], ('type', 'track', 'level', 'revives')) + + print '-- Active suit %d is %s, %s and level %d and revives is %d' % (idx, type, track, level, revives) + + for idx, currReserve in enumerate(reserves): + type, track, level, revives, res = map(lambda x: currReserve[x], ('type', 'track', 'level', 'revives', 'joinChance')) + print '- Reserve suit %d is %s, %s and level %d and JC = %d and revives is %d' % (idx, type, track, level, res, revives) + + def genFloorSuits(self, floor): + suitHandles = {} + floorInfo = self.suitInfos[floor] + activeSuits = [] + for activeSuitInfo in floorInfo['activeSuits']: + suit = self.__genSuitObject(self.zoneId, activeSuitInfo['type'], activeSuitInfo['track'], activeSuitInfo['level'], activeSuitInfo['revives']) + activeSuits.append(suit) + + suitHandles['activeSuits'] = activeSuits + reserveSuits = [] + for reserveSuitInfo in floorInfo['reserveSuits']: + suit = self.__genSuitObject(self.zoneId, reserveSuitInfo['type'], reserveSuitInfo['track'], reserveSuitInfo['level'], reserveSuitInfo['revives']) + reserveSuits.append((suit, reserveSuitInfo['joinChance'])) + + suitHandles['reserveSuits'] = reserveSuits + return suitHandles + + def genSuits(self): + suitHandles = [] + for floor in range(len(self.suitInfos)): + floorSuitHandles = self.genFloorSuits(floor) + suitHandles.append(floorSuitHandles) + + return suitHandles