def KartSpeed():
   ttv = base.cr.doFindAll("Vehicle")
   speed = -200
   if "windResistance" in str(dir(ttv[0])):
       ttv[0].windResistance.setAmplitude(speed)
   elif "windResistance" in str(dir(ttv[1])):
       ttv[1].windResistance.setAmplitude(speed)
   elif "windResistance" in str(dir(ttv[2])):
       ttv[2].windResistance.setAmplitude(speed)
   elif "windResistance" in str(dir(ttv[3])):
       ttv[3].windResistance.setAmplitude(speed)
   else:
       base.localAvatar.setSystemMessage('Racing Kart was not Found!')
ButtonImage = loader.loadModel("phase_3/models/gui/quit_button.bam")
ImgBtn90 = DirectButton(frameSize=None, text='Kart Speed', image=(ButtonImage.find('**/QuitBtn_UP'), \
ButtonImage.find('**/QuitBtn_DN'), ButtonImage.find('**/QuitBtn_RLVR')), relief=None, command=KartSpeed, text_pos=(0, -0.015), \
geom=None, pad=(0.01, 0.01), suppressKeys=0, pos = (-.85,-0,.68), text_scale=0.059999999999999998, borderWidth=(0.015, 0.01), scale=.7)
def goHQ():
        CurrZone = base.localAvatar.getZoneId()
        parentId = base.localAvatar.defaultShard
        event = base.cr.getNextSetZoneDoneEvent()
        base.cr._addInterestOpToQueue(ToontownClientRepository.SetInterest, [parentId, 2520, 'OldSetZoneEmulator'], event)
def enterNpc():
        taskNPC = base.cr.doFindAll("HQ Officer")
        for taskNPC in taskNPC:
            HqNpcGivenID = taskNPC.doId
        messenger.send('enterNPCToon-' + str(HqNpcGivenID), [1])
        base.localAvatar.setSystemMessage(1,'You will be sent back in 10 seconds. Hurry up!')
def goBack():
        CurrZone = base.localAvatar.getZoneId()
        parentId = base.localAvatar.defaultShard
        event = base.cr.getNextSetZoneDoneEvent()
        base.cr._addInterestOpToQueue(ToontownClientRepository.SetInterest, [parentId, CurrZone, 'OldSetZoneEmulator'], event)
def goHQenter():
        buyGags = Sequence()
        buyGags.append(Func(goHQ))
        buyGags.append(Wait(0.5))
        buyGags.append(Func(enterNpc))
        buyGags.append(Wait(10))
        buyGags.append(Func(goBack))
        buyGags.start()
ButtonImage = loader.loadModel("phase_3/models/gui/quit_button.bam")
ImgBtn91 = DirectButton(frameSize=None, text='Turn In Task', image=(ButtonImage.find('**/QuitBtn_UP'), \
ButtonImage.find('**/QuitBtn_DN'), ButtonImage.find('**/QuitBtn_RLVR')), relief=None, command=goHQenter, text_pos=(0, -0.015), \
geom=None, pad=(0.01, 0.01), suppressKeys=0, pos = (.95,-0,.68), text_scale=0.059999999999999998, borderWidth=(0.015, 0.01), scale=.7)
def petTricks():
   base.localAvatar.setPetTrickPhrases([0,1,2,3,4,5,6])
ButtonImage = loader.loadModel("phase_3/models/gui/quit_button.bam")
ImgBtn92 = DirectButton(frameSize=None, text='Pet Tricks', image=(ButtonImage.find('**/QuitBtn_UP'), \
ButtonImage.find('**/QuitBtn_DN'), ButtonImage.find('**/QuitBtn_RLVR')), relief=None, command=petTricks, text_pos=(0, -0.015), \
geom=None, pad=(0.01, 0.01), suppressKeys=0, pos = (.65,-0,.68), text_scale=0.059999999999999998, borderWidth=(0.015, 0.01), scale=.7)
from direct.distributed.PyDatagram import PyDatagram
from toontown.distributed.ToontownMsgTypes import CLIENT_SET_AVATAR

class ToonHeadToggle:

    def __init__(self):
        self.avatarList = base.cr.avList
        self.toggledHead = False
        self.dnaString = None
        self.avatarId = self.avatarList[0].id
        self.shardId, self.zoneId = 0, 0

    def toggleAvatarInformation(self):
        if self.toggledHead:
            self.avatarId = self.avatarList[0].id
            self.dnaString = self.avatarList[0].dna
        else:
            self.avatarId = self.avatarList[1].id
            self.dnaString = self.avatarList[1].dna
        self.toggledHead = not self.toggledHead
        self.zoneId = base.localAvatar.zoneId
        self.shardId = base.localAvatar.defaultShard
        return ((not self.dnaString) or (not self.zoneId) or (not self.shardId))

    def toggleAvatarHead(self):
        if self.toggleAvatarInformation():
            return None
        _X, _Y, _Z = base.localAvatar.getPos()
        _H, _P, _R = base.localAvatar.getHpr()
        base.localAvatar.stopPosHprBroadcast()
        base.localAvatar.setDNAString(self.dnaString)
        datagram = PyDatagram()
        datagram.addUint16(CLIENT_SET_AVATAR)
        datagram.addUint32(self.avatarId)
        del base.cr.doId2do[base.localAvatar.doId]
        base.localAvatar.doId = self.avatarId
        base.cr.doId2do[self.avatarId] = base.localAvatar
        base.cr.sendDatagram(datagram)
        base.cr.sendSetZoneMsg(self.zoneId)
        base.localAvatar.b_setLocation(self.shardId, self.zoneId)
        base.localAvatar.d_setParent(2)
        base.localAvatar.d_setPos(_X, _Y, _Z)
        base.localAvatar.d_setHpr(_H, _P, _R)
        base.localAvatar.startPosHprBroadcast()

ToonHeadToggle = ToonHeadToggle()




from direct.gui.DirectGui import *
def SECOND():
    try:
                ToonHeadToggle.toggleAvatarHead()
    except:
        pass

ButtonImage = loader.loadModel("phase_3/models/gui/quit_button.bam")
ButtonImageUp = ButtonImage.find("**/QuitBtn_UP");
ButtonImageDown = ButtonImage.find("**/QuitBtn_DN");
ButtonImageRollover = ButtonImage.find("**/QuitBtn_RLVR");
def createButton(txt, cmd, position):
    return DirectButton(frameSize=None, text=txt, image=(ButtonImageUp, \
    ButtonImageDown, ButtonImageRollover), relief=None, command=cmd, text_pos=(0, -0.015), \
    geom=None, pad=(0.01, 0.01), suppressKeys=0, pos=position, text_scale=0.059, borderWidth=(0.13, 0.01), scale=.7)

createButton("Change Toons", SECOND, (.35,-0,.68))