예제 #1
0
    def getPicture(self, avatar):
        PetDNA = PetDNA
        Pet = Pet
        import toontown.pets
        pet = Pet.Pet(forGui=1)
        dna = avatar.petDNA
        if dna == None:
            dna = PetDNA.getRandomPetDNA()

        pet.setDNA(dna)
        pet.setH(180)
        (model, ival) = self.makeFrameModel(pet, 0)
        pet.setScale(2.0)
        pet.setP(-40)
        track = PetTricks.getTrickIval(pet, self.trickId)
        name = 'petTrick-item-%s' % self.sequenceNumber
        CatalogPetTrickItem.sequenceNumber += 1
        if track != None:
            track = Sequence(Sequence(track),
                             ActorInterval(pet, 'neutral', duration=2),
                             name=name)
        else:
            pet.animFSM.request('neutral')
            track = Sequence(Wait(4), name=name)
        self.petPicture = pet
        self.hasPicture = True
        return (model, track)
 def getPicture(self, avatar):
     from toontown.pets import PetDNA, Pet
     pet = Pet.Pet(forGui=1)
     dna = PetDNA.getRandomPetDNA()
     pet.setDNA(dna)
     pet.setH(180)
     model, ival = self.makeFrameModel(pet, 0)
     pet.setScale(2.0)
     pet.setP(-40)
     track = PetTricks.getTrickIval(pet, self.trickId)
     name = 'petTrick-item-%s' % self.sequenceNumber
     CatalogPetTrickItem.sequenceNumber += 1
     if track is not None:
         track = Sequence(
             Sequence(track),
             ActorInterval(
                 pet,
                 'neutral',
                 duration=2),
             name=name)
     else:
         pet.animFSM.request('neutral')
         track = Sequence(Wait(4), name=name)
     self.petPicture = pet
     self.hasPicture = True
     return model, track
예제 #3
0
def __healJuggle(heal):
    """ __healJuggle(heal)
    """
    petProxyId = heal['petId']
    pet = Pet.Pet()
    gender = 0
    if base.cr.doId2do.has_key(petProxyId):
        petProxy = base.cr.doId2do[petProxyId]
        if (petProxy == None):
            return
        pet.setDNA(petProxy.style)
        pet.setName(petProxy.petName)
        gender = petProxy.gender
    else:
        pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1])
        pet.setName('Smiley')
    targets = heal['target']
    ineffective = heal['sidestep']
    level = heal['level']

    # Make a 'sandwich' around the track specific interval
    track = Sequence(__teleportIn(heal, pet))

    # Do the trick (or not)
    if ineffective:
        trickTrack = Parallel(Wait(1.0),
                              Func(pet.loop, 'neutralSad'),
                              Func(pet.showMood, 'confusion')
                              ) 
    else:
        trickTrack = PetTricks.getTrickIval(pet, level)
    track.append(trickTrack)
    
    delay = 4.0
    first = 1
    targetTrack = Sequence()
    for target in targets:
        targetToon = target['toon']
        hp = target['hp']
        callerToonId = heal['toonId']
        reactIval = Func(__healToon, targetToon, hp, gender, callerToonId, ineffective)
        if (first == 1):
            #targetTrack.append(Wait(delay))
            first = 0

        targetTrack.append(reactIval)

    mtrack = Parallel(Wait(2.0),
                      targetTrack)
    track.append(mtrack)
    track.append(Sequence(Func(pet.clearMood)))
    track.append(__teleportOut(heal, pet))
    for target in targets:
        targetToon = target['toon']
        track.append(Func(targetToon.clearChat))
    track.append(Func(pet.delete))
    return track
예제 #4
0
def __healJuggle(heal):
    petProxyId = heal['petId']
    pet = Pet.Pet()
    gender = 0
    if base.cr.doId2do.has_key(petProxyId):
        petProxy = base.cr.doId2do[petProxyId]
        if petProxy == None:
            return None
        
        pet.setDNA(petProxy.style)
        pet.setName(petProxy.petName)
        gender = petProxy.gender
    else:
        pet.setDNA([
            -1,
            0,
            0,
            -1,
            2,
            0,
            4,
            0,
            1])
        pet.setName('Smiley')
    targets = heal['target']
    ineffective = heal['sidestep']
    level = heal['level']
    track = Sequence(__teleportIn(heal, pet))
    if ineffective:
        trickTrack = Parallel(Wait(1.0), Func(pet.loop, 'neutralSad'), Func(pet.showMood, 'confusion'))
    else:
        trickTrack = PetTricks.getTrickIval(pet, level)
    track.append(trickTrack)
    delay = 4.0
    first = 1
    targetTrack = Sequence()
    for target in targets:
        targetToon = target['toon']
        hp = target['hp']
        callerToonId = heal['toonId']
        reactIval = Func(__healToon, targetToon, hp, gender, callerToonId, ineffective)
        if first == 1:
            first = 0
        
        targetTrack.append(reactIval)
    
    mtrack = Parallel(Wait(2.0), targetTrack)
    track.append(mtrack)
    track.append(Sequence(Func(pet.clearMood)))
    track.append(__teleportOut(heal, pet))
    for target in targets:
        targetToon = target['toon']
        track.append(Func(targetToon.clearChat))
    
    track.append(Func(pet.delete))
    return track
예제 #5
0
 def doTrick(self, trickId, timestamp):
     if not self.isLockedDown():
         if self.trickIval is not None and self.trickIval.isPlaying():
             self.trickIval.finish()
         self.trickIval = PetTricks.getTrickIval(self, trickId)
         if trickId == PetTricks.Tricks.BALK:
             mood = self.getDominantMood()
             self.trickIval = Parallel(self.trickIval, Sequence(Func(self.handleMoodChange, 'confusion'), Wait(1.0), Func(self.handleMoodChange, mood)))
         self.trickIval.start(globalClockDelta.localElapsedTime(timestamp))
     return
 def doTrick(self, trickId, timestamp):
     if not self.isLockedDown():
         if self.trickIval is not None and self.trickIval.isPlaying():
             self.trickIval.finish()
         self.trickIval = PetTricks.getTrickIval(self, trickId)
         if trickId == PetTricks.Tricks.BALK:
             mood = self.getDominantMood()
             self.trickIval = Parallel(
                 self.trickIval,
                 Sequence(Func(self.handleMoodChange, 'confusion'),
                          Wait(1.0), Func(self.handleMoodChange, mood)))
         self.trickIval.start(globalClockDelta.localElapsedTime(timestamp))
예제 #7
0
def __doPetSOS(heal):
    petProxyId = heal['petId']
    pet = Pet.Pet()
    gender = 0
    if petProxyId in base.cr.doId2do:
        petProxy = base.cr.doId2do[petProxyId]
        if petProxy == None:
            return
        pet.setDNA(petProxy.style)
        pet.setName(petProxy.petName)
        gender = petProxy.gender
    else:
        pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1])
        pet.setName(TTLocalizer.DefaultDoodleName)
    targets = heal['target']
    ineffective = heal['sidestep']
    level = heal['level']
    track = Sequence(__teleportIn(heal, pet))
    if ineffective:
        trickTrack = Parallel(Wait(1.0), Func(pet.loop, 'neutralSad'),
                              Func(pet.showMood, 'confusion'))
    else:
        trickTrack = PetTricks.getTrickIval(pet, level)
    track.append(trickTrack)
    delay = 4.0
    first = 1
    targetTrack = Sequence()
    for target in targets:
        targetToon = target['toon']
        hp = target['hp']
        callerToonId = heal['toonId']
        reactIval = Func(__healToon, targetToon, hp, gender, callerToonId,
                         ineffective)
        if first == 1:
            first = 0
        targetTrack.append(reactIval)

    mtrack = Parallel(Wait(2.0), targetTrack)
    track.append(mtrack)
    track.append(Sequence(Func(pet.clearMood)))
    track.append(__teleportOut(heal, pet))
    for target in targets:
        targetToon = target['toon']
        track.append(Func(targetToon.clearChat))

    track.append(Func(pet.delete))
    return track
예제 #8
0
    def getPicture(self, avatar):
        # Returns a (DirectWidget, Interval) pair to draw and animate a
        # little representation of the item, or (None, None) if the
        # item has no representation.  This method is only called on
        # the client.

        # Don't import this at the top of the file, since this code
        # must run on the AI.
        from toontown.pets import PetDNA, Pet

        pet = Pet.Pet(forGui = 1)

        # We use the avatar's own pet if he/she has a pet (and we know
        # its DNA), otherwise use a random pet.
        dna = avatar.petDNA
        if dna == None:
            dna = PetDNA.getRandomPetDNA()
        pet.setDNA(dna)
        
        pet.setH(180)
        model, ival = self.makeFrameModel(pet, 0)
        pet.setScale(2.0)
        pet.setP(-40)

        # Discard the ival from makeFrameModel, since we don't want to
        # spin.

        track = PetTricks.getTrickIval(pet, self.trickId)
        name = "petTrick-item-%s" % (self.sequenceNumber)
        CatalogPetTrickItem.sequenceNumber += 1
        if track != None:
            track = Sequence(Sequence(track),
                             ActorInterval(pet, 'neutral', duration = 2),
                             name = name)
        else:
            pet.animFSM.request('neutral')
            track = Sequence(Wait(4),
                             name = name)
        self.petPicture = pet

        assert (not self.hasPicture)
        self.hasPicture=True
        
        return (model, track)