mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 12:12:36 -06:00
Merge branch 'master' of https://gitlab.com/toontown-unlimited/src
This commit is contained in:
commit
613e3983d3
15 changed files with 2 additions and 486 deletions
|
@ -112,8 +112,6 @@ 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
|
||||
|
@ -1848,16 +1846,6 @@ dclass DistributedNPCKartClerk : DistributedNPCToonBase {
|
|||
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 {
|
||||
};
|
||||
|
||||
|
|
|
@ -36,4 +36,3 @@ want-parties #t
|
|||
|
||||
# Optional:
|
||||
want-talkative-tyler #f
|
||||
want-yin-yang #f
|
||||
|
|
|
@ -121,7 +121,6 @@ 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
|
||||
|
|
|
@ -33,9 +33,6 @@ want-resistance-toonup #t
|
|||
want-resistance-restock #t
|
||||
want-resistance-dance #t
|
||||
|
||||
# Optional:
|
||||
want-yin-yang #t
|
||||
|
||||
# Developer options:
|
||||
show-population #t
|
||||
force-skip-tutorial #t
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
from pandac.PandaModules import *
|
||||
|
||||
|
||||
hashVal = 1403862015
|
||||
hashVal = 2077607028
|
||||
|
||||
|
||||
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
|
||||
|
@ -43,7 +43,7 @@ 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.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCBanker
|
||||
from toontown.tutorial import DistributedBattleTutorial, TutorialManager
|
||||
from toontown.coderedemption.TTCodeRedemptionMgr import TTCodeRedemptionMgr
|
||||
from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI
|
||||
|
|
|
@ -87,7 +87,6 @@ class ToontownAIRepository(ToontownInternalRepository):
|
|||
self.doLiveUpdates = self.config.GetBool('want-live-updates', False)
|
||||
self.wantTrackClsends = self.config.GetBool('want-track-clsends', False)
|
||||
self.wantAchievements = self.config.GetBool('want-achievements', True)
|
||||
self.wantYinYang = self.config.GetBool('want-yin-yang', False)
|
||||
self.baseXpMultiplier = self.config.GetFloat('base-xp-multiplier', 1.0)
|
||||
self.wantHalloween = self.config.GetBool('want-halloween', False)
|
||||
self.wantChristmas = self.config.GetBool('want-christmas', False)
|
||||
|
|
|
@ -31,16 +31,6 @@ class TTHoodAI(HoodAI.HoodAI):
|
|||
self.createClassicChar()
|
||||
if simbase.config.GetBool('want-butterflies', True):
|
||||
self.createButterflies()
|
||||
|
||||
if simbase.air.wantYinYang:
|
||||
NPCToons.createNPC(
|
||||
simbase.air, 2021,
|
||||
(ToontownGlobals.ToontownCentral, TTLocalizer.NPCToonNames[2021], ('css', 'ms', 'm', 'm', 26, 0, 26, 26, 0, 27, 0, 27, 0, 27), 'm', 1, NPCToons.NPC_YIN),
|
||||
ToontownGlobals.ToontownCentral, posIndex=0)
|
||||
NPCToons.createNPC(
|
||||
simbase.air, 2022,
|
||||
(ToontownGlobals.ToontownCentral, TTLocalizer.NPCToonNames[2022], ('bss', 'ms', 'm', 'm', 0, 0, 0, 0, 0, 31, 0, 31, 0, 31), 'm', 1, NPCToons.NPC_YANG),
|
||||
ToontownGlobals.ToontownCentral, posIndex=0)
|
||||
|
||||
if simbase.air.wantHalloween:
|
||||
self.TrickOrTreatTargetManager = DistributedTrickOrTreatTargetAI.DistributedTrickOrTreatTargetAI(self.air)
|
||||
|
|
|
@ -24,12 +24,6 @@ class ColorShop(StateData.StateData):
|
|||
else:
|
||||
colorList = ToonDNA.defaultGirlColorList
|
||||
|
||||
if base.wantYinYang: # Free black/white Toons event.
|
||||
if dna.head[0] == 'c':
|
||||
colorList = colorList + [26]
|
||||
elif dna.head[0] == 'b':
|
||||
colorList = [0] + colorList
|
||||
|
||||
return colorList
|
||||
|
||||
def enter(self, toon, shopsVisited = []):
|
||||
|
|
|
@ -1,191 +0,0 @@
|
|||
from direct.fsm import ClassicFSM, State
|
||||
from direct.gui.DirectGui import *
|
||||
from direct.task.Task import Task
|
||||
from pandac.PandaModules import *
|
||||
import time
|
||||
|
||||
from DistributedNPCToonBase import *
|
||||
from toontown.chat.ChatGlobals import *
|
||||
from toontown.effects import DustCloud
|
||||
from toontown.nametag.NametagGlobals import *
|
||||
from toontown.toonbase import TTLocalizer
|
||||
|
||||
|
||||
def getDustCloudIval(toon):
|
||||
dustCloud = DustCloud.DustCloud(fBillboard=0)
|
||||
dustCloud.setBillboardAxis(2.0)
|
||||
dustCloud.setZ(3)
|
||||
dustCloud.setScale(0.4)
|
||||
dustCloud.createTrack()
|
||||
if getattr(toon, 'laffMeter', None):
|
||||
toon.laffMeter.color = toon.style.getWhiteColor()
|
||||
seq = Sequence(Wait(0.5), Func(dustCloud.reparentTo, toon), dustCloud.track, Func(dustCloud.destroy))
|
||||
if getattr(toon, 'laffMeter', None):
|
||||
seq.append(Func(toon.laffMeter.adjustFace, toon.hp, toon.maxHp))
|
||||
return seq
|
||||
|
||||
|
||||
class DistributedNPCYang(DistributedNPCToonBase):
|
||||
def __init__(self, cr):
|
||||
DistributedNPCToonBase.__init__(self, cr)
|
||||
|
||||
self.pickColorGui = None
|
||||
self.pickColorGuiDoneEvent = 'pickColorGuiDone'
|
||||
|
||||
self.nextCollision = 0
|
||||
|
||||
self.fsm = ClassicFSM.ClassicFSM(
|
||||
'NPCYin',
|
||||
[
|
||||
State.State('off', self.enterOff, self.exitOff, ['pickColor']),
|
||||
State.State('pickColor', self.enterPickColor, self.exitPickColor, ['off'])
|
||||
], 'off', 'off')
|
||||
self.fsm.enterInitialState()
|
||||
|
||||
self.title = None
|
||||
self.yesButton = None
|
||||
self.noButton = None
|
||||
|
||||
self.buttonModels = loader.loadModel('phase_3.5/models/gui/inventory_gui')
|
||||
self.upButton = self.buttonModels.find('**//InventoryButtonUp')
|
||||
self.downButton = self.buttonModels.find('**/InventoryButtonDown')
|
||||
self.rolloverButton = self.buttonModels.find('**/InventoryButtonRollover')
|
||||
|
||||
def disable(self):
|
||||
self.ignoreAll()
|
||||
|
||||
if self.title:
|
||||
self.title.destroy()
|
||||
self.title = None
|
||||
|
||||
if self.yesButton:
|
||||
self.yesButton.destroy()
|
||||
self.yesButton = None
|
||||
|
||||
if self.noButton:
|
||||
self.noButton.destroy()
|
||||
self.noButton = None
|
||||
|
||||
if self.buttonModels:
|
||||
self.buttonModels.removeNode()
|
||||
self.buttonModels = None
|
||||
|
||||
if self.upButton:
|
||||
self.upButton.removeNode()
|
||||
self.upButton = None
|
||||
|
||||
if self.downButton:
|
||||
self.downButton.removeNode()
|
||||
self.downButton = None
|
||||
|
||||
if self.rolloverButton:
|
||||
self.rolloverButton.removeNode()
|
||||
self.rolloverButton = None
|
||||
|
||||
if self.pickColorGui:
|
||||
self.pickColorGui.destroy()
|
||||
self.pickColorGui = None
|
||||
|
||||
self.nextCollision = 0
|
||||
|
||||
DistributedNPCToonBase.disable(self)
|
||||
|
||||
def initToonState(self):
|
||||
self.setAnimState('neutral', 1.05, None, None)
|
||||
self.setPosHpr(101, -14, 4, -305, 0, 0)
|
||||
|
||||
def getCollSphereRadius(self):
|
||||
return 1.0
|
||||
|
||||
def handleCollisionSphereEnter(self, collEntry):
|
||||
self.currentTime = time.time()
|
||||
if self.nextCollision <= self.currentTime:
|
||||
self.fsm.request('pickColor')
|
||||
self.nextCollision = self.currentTime + 2
|
||||
|
||||
def enterOff(self):
|
||||
pass
|
||||
|
||||
def exitOff(self):
|
||||
pass
|
||||
|
||||
def enterPickColor(self):
|
||||
base.cr.playGame.getPlace().setState('stopped')
|
||||
taskMgr.doMethodLater(15, self.leave, 'npcSleepTask-%s' % self.doId)
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
if base.localAvatar.style.getAnimal() != 'bear':
|
||||
self.setChatAbsolute(TTLocalizer.YangNotBear, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
elif base.localAvatar.style.headColor == 0x00:
|
||||
self.setChatAbsolute(TTLocalizer.YangAlreadyWhite, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
else:
|
||||
self.popupPickColorGUI()
|
||||
|
||||
def exitPickColor(self, task=None):
|
||||
taskMgr.remove('npcSleepTask-%s' % self.doId)
|
||||
if self.title:
|
||||
self.title.destroy()
|
||||
self.title = None
|
||||
if self.yesButton:
|
||||
self.yesButton.destroy()
|
||||
self.yesButton = None
|
||||
if self.noButton:
|
||||
self.noButton.destroy()
|
||||
self.noButton = None
|
||||
|
||||
if task is not None:
|
||||
return task.done
|
||||
|
||||
def popupPickColorGUI(self):
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YangPickColor, CFSpeech)
|
||||
base.setCellsActive(base.bottomCells, 0)
|
||||
|
||||
self.title = DirectLabel(
|
||||
aspect2d, relief=None, text=TTLocalizer.YangTitle,
|
||||
text_pos=(0, 0), text_fg=(1, 0, 0, 1), text_scale=0.09,
|
||||
text_font=ToontownGlobals.getSignFont(),
|
||||
pos=(0, 0, -0.55), text_shadow=(1, 1, 1, 1))
|
||||
self.yesButton = DirectButton(
|
||||
relief=None, text=TTLocalizer.lYes,
|
||||
text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23),
|
||||
text_scale=0.8, image=(self.upButton, self.downButton, self.rolloverButton),
|
||||
image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(-0.275, 0, -0.75), scale=0.15,
|
||||
command=lambda self=self: self.d_requestTransformation())
|
||||
self.noButton = DirectButton(
|
||||
relief=None, text=TTLocalizer.lNo,
|
||||
text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23),
|
||||
text_scale=0.8, image=(self.upButton, self.downButton, self.rolloverButton),
|
||||
image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(0.275, 0, -0.75), scale=0.15,
|
||||
command=lambda self=self: self.leave())
|
||||
|
||||
def doTransformation(self, avId):
|
||||
av = self.cr.doId2do.get(avId)
|
||||
if not av:
|
||||
return
|
||||
if av.style.getAnimal() != 'bear':
|
||||
return
|
||||
self.dustCloudIval = getDustCloudIval(av)
|
||||
self.dustCloudIval.start()
|
||||
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YangEnjoy, CFSpeech|CFTimeout)
|
||||
base.setCellsActive(base.bottomCells, 1)
|
||||
|
||||
def d_requestTransformation(self):
|
||||
self.sendUpdate('requestTransformation', [])
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
|
||||
def leave(self, task=None):
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YangGoodbye, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
base.setCellsActive(base.bottomCells, 1)
|
||||
|
||||
if task is not None:
|
||||
return task.done
|
|
@ -1,20 +0,0 @@
|
|||
from DistributedNPCToonBaseAI import *
|
||||
from toontown.toon.ToonDNA import ToonDNA
|
||||
|
||||
|
||||
class DistributedNPCYangAI(DistributedNPCToonBaseAI):
|
||||
def requestTransformation(self):
|
||||
avId = self.air.getAvatarIdFromSender()
|
||||
av = self.air.doId2do.get(avId)
|
||||
if av is None:
|
||||
return
|
||||
if not hasattr(av, 'dna'):
|
||||
return
|
||||
if (av.dna.getAnimal() == 'bear') and (av.dna.headColor != 0x00):
|
||||
newDNA = ToonDNA()
|
||||
newDNA.makeFromNetString(av.getDNAString())
|
||||
newDNA.headColor = 0x00
|
||||
newDNA.armColor = 0x00
|
||||
newDNA.legColor = 0x00
|
||||
taskMgr.doMethodLater(1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId)
|
||||
self.sendUpdate('doTransformation', [avId])
|
|
@ -1,192 +0,0 @@
|
|||
from direct.fsm import ClassicFSM, State
|
||||
from direct.gui.DirectGui import *
|
||||
from direct.task.Task import Task
|
||||
from pandac.PandaModules import *
|
||||
import time
|
||||
|
||||
from DistributedNPCToonBase import *
|
||||
from toontown.chat.ChatGlobals import *
|
||||
from toontown.effects import DustCloud
|
||||
from toontown.nametag.NametagGlobals import *
|
||||
from toontown.toonbase import TTLocalizer
|
||||
|
||||
|
||||
def getDustCloudIval(toon):
|
||||
dustCloud = DustCloud.DustCloud(fBillboard=0)
|
||||
dustCloud.setBillboardAxis(2.0)
|
||||
dustCloud.setZ(3)
|
||||
dustCloud.setScale(0.4)
|
||||
dustCloud.createTrack()
|
||||
if getattr(toon, 'laffMeter', None):
|
||||
toon.laffMeter.color = toon.style.getBlackColor()
|
||||
seq = Sequence(Wait(0.5), Func(dustCloud.reparentTo, toon), dustCloud.track, Func(dustCloud.destroy))
|
||||
if getattr(toon, 'laffMeter', None):
|
||||
seq.append(Func(toon.laffMeter.adjustFace, toon.hp, toon.maxHp))
|
||||
return seq
|
||||
|
||||
|
||||
class DistributedNPCYin(DistributedNPCToonBase):
|
||||
def __init__(self, cr):
|
||||
DistributedNPCToonBase.__init__(self, cr)
|
||||
|
||||
self.pickColorGui = None
|
||||
self.pickColorGuiDoneEvent = 'pickColorGuiDone'
|
||||
|
||||
self.nextCollision = 0
|
||||
|
||||
self.fsm = ClassicFSM.ClassicFSM(
|
||||
'NPCYin',
|
||||
[
|
||||
State.State('off', self.enterOff, self.exitOff, ['pickColor']),
|
||||
State.State('pickColor', self.enterPickColor, self.exitPickColor, ['off'])
|
||||
], 'off', 'off')
|
||||
self.fsm.enterInitialState()
|
||||
|
||||
self.title = None
|
||||
self.yesButton = None
|
||||
self.noButton = None
|
||||
|
||||
self.buttonModels = loader.loadModel('phase_3.5/models/gui/inventory_gui')
|
||||
self.upButton = self.buttonModels.find('**//InventoryButtonUp')
|
||||
self.downButton = self.buttonModels.find('**/InventoryButtonDown')
|
||||
self.rolloverButton = self.buttonModels.find('**/InventoryButtonRollover')
|
||||
|
||||
def disable(self):
|
||||
self.ignoreAll()
|
||||
|
||||
if self.title:
|
||||
self.title.destroy()
|
||||
self.title = None
|
||||
|
||||
if self.yesButton:
|
||||
self.yesButton.destroy()
|
||||
self.yesButton = None
|
||||
|
||||
if self.noButton:
|
||||
self.noButton.destroy()
|
||||
self.noButton = None
|
||||
|
||||
if self.buttonModels:
|
||||
self.buttonModels.removeNode()
|
||||
self.buttonModels = None
|
||||
|
||||
if self.upButton:
|
||||
self.upButton.removeNode()
|
||||
self.upButton = None
|
||||
|
||||
if self.downButton:
|
||||
self.downButton.removeNode()
|
||||
self.downButton = None
|
||||
|
||||
if self.rolloverButton:
|
||||
self.rolloverButton.removeNode()
|
||||
self.rolloverButton = None
|
||||
|
||||
if self.pickColorGui:
|
||||
self.pickColorGui.destroy()
|
||||
self.pickColorGui = None
|
||||
|
||||
self.nextCollision = 0
|
||||
|
||||
DistributedNPCToonBase.disable(self)
|
||||
|
||||
def initToonState(self):
|
||||
self.setAnimState('neutral', 1.05, None, None)
|
||||
self.setPosHpr(101, 15.5, 4, -245, 0, 0)
|
||||
|
||||
def getCollSphereRadius(self):
|
||||
return 1.0
|
||||
|
||||
def handleCollisionSphereEnter(self, collEntry):
|
||||
self.currentTime = time.time()
|
||||
if self.nextCollision <= self.currentTime:
|
||||
self.fsm.request('pickColor')
|
||||
self.nextCollision = self.currentTime + 2
|
||||
|
||||
def enterOff(self):
|
||||
pass
|
||||
|
||||
def exitOff(self):
|
||||
pass
|
||||
|
||||
def enterPickColor(self):
|
||||
base.cr.playGame.getPlace().setState('stopped')
|
||||
taskMgr.doMethodLater(15, self.leave, 'npcSleepTask-%s' % self.doId)
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
if base.localAvatar.style.getAnimal() != 'cat':
|
||||
self.setChatAbsolute(TTLocalizer.YinNotCat, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
elif base.localAvatar.style.headColor == 0x1a:
|
||||
self.setChatAbsolute(TTLocalizer.YinAlreadyBlack, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
else:
|
||||
self.popupPickColorGUI()
|
||||
|
||||
def exitPickColor(self, task=None):
|
||||
taskMgr.remove('npcSleepTask-%s' % self.doId)
|
||||
if self.title:
|
||||
self.title.destroy()
|
||||
self.title = None
|
||||
if self.yesButton:
|
||||
self.yesButton.destroy()
|
||||
self.yesButton = None
|
||||
if self.noButton:
|
||||
self.noButton.destroy()
|
||||
self.noButton = None
|
||||
|
||||
if task is not None:
|
||||
return task.done
|
||||
|
||||
def popupPickColorGUI(self):
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YinPickColor, CFSpeech)
|
||||
base.setCellsActive(base.bottomCells, 0)
|
||||
|
||||
self.title = DirectLabel(
|
||||
aspect2d, relief=None, text=TTLocalizer.YinTitle,
|
||||
text_pos=(0, 0), text_fg=(1, 0, 0, 1), text_scale=0.09,
|
||||
text_font=ToontownGlobals.getSignFont(),
|
||||
pos=(0, 0, -0.55), text_shadow=(1, 1, 1, 1))
|
||||
self.yesButton = DirectButton(
|
||||
relief=None, text=TTLocalizer.lYes,
|
||||
text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23),
|
||||
text_scale=0.8, image=(self.upButton, self.downButton, self.rolloverButton),
|
||||
image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(-0.275, 0, -0.75), scale=0.15,
|
||||
command=lambda self=self: self.d_requestTransformation())
|
||||
self.noButton = DirectButton(
|
||||
relief=None, text=TTLocalizer.lNo,
|
||||
text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23),
|
||||
text_scale=0.8, image=(self.upButton, self.downButton, self.rolloverButton),
|
||||
image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(0.275, 0, -0.75), scale=0.15,
|
||||
command=lambda self=self: self.leave())
|
||||
|
||||
def doTransformation(self, avId):
|
||||
av = self.cr.doId2do.get(avId)
|
||||
if not av:
|
||||
return
|
||||
if av.style.getAnimal() != 'cat':
|
||||
return
|
||||
self.dustCloudIval = getDustCloudIval(av)
|
||||
self.dustCloudIval.start()
|
||||
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YinEnjoy, CFSpeech|CFTimeout)
|
||||
base.setCellsActive(base.bottomCells, 1)
|
||||
|
||||
def d_requestTransformation(self):
|
||||
self.sendUpdate('requestTransformation', [])
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
|
||||
def leave(self, task=None):
|
||||
self.setChatAbsolute('', CFSpeech)
|
||||
self.setChatAbsolute(TTLocalizer.YinGoodbye, CFSpeech|CFTimeout)
|
||||
self.fsm.request('off')
|
||||
base.cr.playGame.getPlace().setState('walk')
|
||||
base.setCellsActive(base.bottomCells, 1)
|
||||
|
||||
if task is not None:
|
||||
return task.done
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
from DistributedNPCToonBaseAI import *
|
||||
from toontown.toon.ToonDNA import ToonDNA
|
||||
|
||||
|
||||
class DistributedNPCYinAI(DistributedNPCToonBaseAI):
|
||||
def requestTransformation(self):
|
||||
avId = self.air.getAvatarIdFromSender()
|
||||
av = self.air.doId2do.get(avId)
|
||||
if av is None:
|
||||
return
|
||||
if not hasattr(av, 'dna'):
|
||||
return
|
||||
if (av.dna.getAnimal() == 'cat') and (av.dna.headColor != 0x1a):
|
||||
newDNA = ToonDNA()
|
||||
newDNA.makeFromNetString(av.getDNAString())
|
||||
newDNA.headColor = 0x1a
|
||||
newDNA.armColor = 0x1a
|
||||
newDNA.legColor = 0x1a
|
||||
taskMgr.doMethodLater(1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId)
|
||||
self.sendUpdate('doTransformation', [avId])
|
|
@ -70,8 +70,6 @@ NPC_FLIPPYTOONHALL = 10
|
|||
NPC_SCIENTIST = 11
|
||||
NPC_SMART = 13
|
||||
NPC_BANKER = 14
|
||||
NPC_YIN = 15
|
||||
NPC_YANG = 16
|
||||
CLERK_COUNTDOWN_TIME = 120
|
||||
TAILOR_COUNTDOWN_TIME = 300
|
||||
RTDNAFile = '/RTDNAFile.txt'
|
||||
|
@ -97,8 +95,6 @@ def createNPC(air, npcId, desc, zoneId, posIndex = 0, questCallback = None):
|
|||
import DistributedNPCScientistAI
|
||||
import DistributedSmartNPCAI
|
||||
import DistributedNPCBankerAI
|
||||
import DistributedNPCYinAI
|
||||
import DistributedNPCYangAI
|
||||
canonicalZoneId, name, dnaType, gender, protected, type = desc
|
||||
if type == NPC_REGULAR:
|
||||
npc = DistributedNPCToonAI.DistributedNPCToonAI(air, npcId, questCallback=questCallback)
|
||||
|
@ -128,12 +124,6 @@ def createNPC(air, npcId, desc, zoneId, posIndex = 0, questCallback = None):
|
|||
npc = DistributedSmartNPCAI.DistributedSmartNPCAI(air, npcId)
|
||||
elif type == NPC_BANKER:
|
||||
npc = DistributedNPCBankerAI.DistributedNPCBankerAI(air, npcId)
|
||||
elif type == NPC_YIN:
|
||||
if simbase.air.wantYinYang:
|
||||
npc = DistributedNPCYinAI.DistributedNPCYinAI(air, npcId)
|
||||
elif type == NPC_YANG:
|
||||
if simbase.air.wantYinYang:
|
||||
npc = DistributedNPCYangAI.DistributedNPCYangAI(air, npcId)
|
||||
else:
|
||||
print 'createNPC() error!!!'
|
||||
npc.setName(name)
|
||||
|
|
|
@ -7007,8 +7007,6 @@ NPCToonNames = {20000: 'Tutorial Tom',
|
|||
2018: 'Doctor Surlee',
|
||||
2019: 'Doctor Dimm',
|
||||
2020: 'Professor Prepostera',
|
||||
2021: 'Yin',
|
||||
2022: 'Yang',
|
||||
2101: 'Dentist Daniel',
|
||||
2102: 'Sheriff Sherry',
|
||||
2103: 'Sneezy Kitty',
|
||||
|
@ -9787,18 +9785,6 @@ InteractivePropTrackBonusTerms = {0: 'Super Toon-Up!',
|
|||
5: 'Super Squirt!',
|
||||
6: ''}
|
||||
PlayingCardUnknown = 'Card Name is unknown'
|
||||
YinTitle = 'Are you absolutely sure?'
|
||||
YinNotCat = 'Sorry, I only make cats black.'
|
||||
YinAlreadyBlack = "You're already black!"
|
||||
YinPickColor = 'Are you sure you want to be a black cat?'
|
||||
YinEnjoy = 'Enjoy! You are now permanently a black cat.'
|
||||
YinGoodbye = 'Okay, then. See you later!'
|
||||
YangTitle = 'Are you absolutely sure?'
|
||||
YangNotBear = 'Sorry, I only make bears white.'
|
||||
YangAlreadyWhite = "You're already white!"
|
||||
YangPickColor = 'Are you sure you want to be a polar bear?'
|
||||
YangEnjoy = 'Enjoy! You are now permanently a polar bear.'
|
||||
YangGoodbye = 'Okay, then. See you later!'
|
||||
|
||||
# Buffs
|
||||
|
||||
|
|
|
@ -236,9 +236,6 @@ class ToonBase(OTPBase.OTPBase):
|
|||
|
||||
self.filters = CommonFilters(self.win, self.cam)
|
||||
|
||||
# Free black/white Toons:
|
||||
self.wantYinYang = config.GetBool('want-yin-yang', False)
|
||||
|
||||
def openMainWindow(self, *args, **kw):
|
||||
result = OTPBase.OTPBase.openMainWindow(self, *args, **kw)
|
||||
self.setCursorAndIcon()
|
||||
|
|
Loading…
Reference in a new issue