class Sandbag(LightDropGag):
        
    name = GagGlobals.Sandbag
    model = GagGlobals.getProp('5', 'sandbag-mod')
    anim = GagGlobals.getProp('5', 'sandbag-chan')
    hitSfxPath = GagGlobals.BAG_DROP_SFX
    missSfxPath = GagGlobals.BAG_MISS_SFX
    
    def __init__(self):
        LightDropGag.__init__(self)
        self.setImage('phase_3.5/maps/sandbag.png')
        self.colliderRadius = 0.75
Exemplo n.º 2
0
 def buildFlower(self):
     if self.flower:
         self.flower.removeNode()
         self.flower = None
     self.flower = loader.loadModel(
         GagGlobals.getProp(3.5, 'squirting-flower'))
     self.flower.setScale(GagGlobals.PNT3NEAR0)
Exemplo n.º 3
0
class FlowerPot(LightDropGag):

    name = GagGlobals.FlowerPot
    model = GagGlobals.getProp('5', 'flowerpot-mod')
    anim = GagGlobals.getProp('5', 'flowerpot-chan')
    hitSfxPath = GagGlobals.POT_DROP_SFX
    missSfxPath = GagGlobals.POT_MISS_SFX

    def __init__(self):
        LightDropGag.__init__(self)
        self.setImage('phase_3.5/maps/flowerpot.png')
        self.colliderRadius = 0.75
        self.colliderOfs = Point3(0, 0, -3.5)

    def startDrop(self, entity):
        if self.dropLoc:
            self.dropLoc.setZ(self.dropLoc.getZ() + 3.5)
        LightDropGag.startDrop(self, entity)
 def buildEntity(self):
     cloud = Actor(self.model,
                   {'chan': GagGlobals.getProp(4, 'stormcloud-chan')})
     trickleFx = GagUtils.loadParticle(5, 'trickleLiquidate')
     rainFx01 = GagUtils.loadParticle(5, 'liquidate')
     rainFx02 = GagUtils.loadParticle(5, 'liquidate')
     rainFx03 = GagUtils.loadParticle(5, 'liquidate')
     rainEffects = [rainFx01, rainFx02, rainFx03]
     entity = [cloud, [trickleFx, rainEffects]]
     self.entities.append(entity)
     return cloud, trickleFx, rainEffects, entity
    def startEntity(self, cog):
        if not cog:
            self.completeSquirt()
            return
        scaleUpPoint = Point3(1.5, 1.5, 1.5)
        rainDelay = 1
        effectDelay = 0.3
        cloudHold = 4.7
        tContact = 2.4
        if cog.isDead():
            cloudHold = 1.7
        cloud01, trickleFx, rainEffects, entity = self.buildEntity()
        cloud01.setZ(cog.suitPlan.getNametagZ() + 2)
        cloud01.reparentTo(cog)
        cloud02 = Actor(self.model,
                        {'chan': GagGlobals.getProp(4, 'stormcloud-chan')})
        cloud02.reparentTo(cloud01)

        def damageCog():
            if self.isLocal():
                cog.sendUpdate('hitByGag', [self.getID()])

        def __getCloudTrack(cloud, useEffect=1):
            track = Sequence(
                Func(cloud.pose, 'chan', 0),
                LerpScaleInterval(cloud,
                                  1.5,
                                  scaleUpPoint,
                                  startScale=GagGlobals.PNT3NEAR0),
                Wait(rainDelay))
            if useEffect == 1:
                pTrack = Parallel()
                delay = trickleDuration = cloudHold * 0.25
                trickleTrack = ParticleInterval(trickleFx,
                                                cloud,
                                                worldRelative=0,
                                                duration=trickleDuration,
                                                cleanup=True)
                track.append(trickleTrack)
                for i in range(0, 3):
                    dur = cloudHold - 2 * trickleDuration
                    pTrack.append(
                        Sequence(
                            Wait(delay),
                            ParticleInterval(rainEffects[i],
                                             cloud,
                                             worldRelative=0,
                                             duration=dur,
                                             cleanup=True)))
                    delay += effectDelay

                pTrack.append(
                    Sequence(
                        Wait(3 * effectDelay),
                        ActorInterval(cloud,
                                      'chan',
                                      startTime=1,
                                      duration=cloudHold)))
                damageTrack = Sequence()
                if cog.getHealth() - self.getDamage() <= 0:
                    damageTrack.append(
                        Func(cog.d_disableMovement, wantRay=True))
                    damageTrack.append(Func(damageCog))
                else:
                    damageTrack.append(Wait(tContact))
                    damageTrack.append(Func(damageCog))
                pTrack.append(damageTrack)
                track.append(pTrack)
            else:
                track.append(
                    ActorInterval(cloud,
                                  'chan',
                                  startTime=1,
                                  duration=cloudHold))
            track.append(LerpScaleInterval(cloud, 0.5, GagGlobals.PNT3NEAR0))
            track.append(Func(GagUtils.destroyProp, cloud))
            return track

        tracks = Parallel()
        soundTrack01 = self.getSoundTrack(1.3, self.avatar)
        soundTrack02 = self.getSoundTrack(3.4, self.avatar)
        tracks.append(soundTrack01)
        tracks.append(soundTrack02)
        cloud01Track = __getCloudTrack(cloud01)
        cloud02Track = __getCloudTrack(cloud02, useEffect=0)
        tracks.append(cloud01Track)
        tracks.append(cloud02Track)
        tracks.append(Func(self.destroyEntity, entity))
        tracks.start()