示例#1
0
    def OnCollision(self, CollisionEvent):

        c = CollisionEvent.OtherObject.Sprite.Color
        dist = (self.Owner.Transform.WorldTranslation -
                CollisionEvent.OtherObject.Transform.WorldTranslation)
        dist = abs(dist.x) + abs(dist.y)

        ld = CollisionEvent.OtherObject.LightReceiver.last_dist
        should_update = dist < ld or (
            dist >= ld
            and CollisionEvent.OtherObject.LightReceiver.last_dominator
            == self.Owner)

        a = dist / 5
        if a > self.DefaultAlpha:
            a = self.DefaultAlpha

        if should_update:
            CollisionEvent.OtherObject.LightReceiver.last_dominator = self.Owner
            CollisionEvent.OtherObject.LightReceiver.last_dist = dist

            CollisionEvent.OtherObject.Sprite.Color = VectorMath.Vec4(
                0, 0, 0, a)
        elif a < 0.8:
            now_a = CollisionEvent.OtherObject.Sprite.Color.a
            modifier = now_a - (1 - a) / 5
            modifier = 0 if modifier < 0 else modifier
            CollisionEvent.OtherObject.Sprite.Color = VectorMath.Vec4(
                0, 0, 0, modifier)
    def OnLogicUpdate(self, UpdateEvent):
        self.Owner.Transform.Translation = self.MousePos

        self.UpdateEnvironmentInfo()
        if self.AbsorbActive and self.WithInRange:
            self.PerformAbsorb()

        target_color = VectorMath.Vec4(1, 1, 1, 1)
        target_scale = 5
        target_sprite = self.ShadeTable.FindValue("OutRange")
        radius = 1.2
        self.Owner.Transform.Rotation = self.init_rotate

        skillname = self.hero.AbilityStatus.GetTreeSkillName()
        physskill = self.hero.AbilityStatus.GetPhysSkillName()

        self.Owner.BurnAnim.Active = False
        self.Owner.FreezeAnim.Active = False
        self.Owner.PoisonAnim.Active = False

        if self.TouchPlant and not self.Deactivated:
            target_sprite = self.ShadeTable.FindValue("Cross")
            self.SetPlantAlpha(0.5)

        elif self.WithInRange and not self.Deactivated:
            if self.TouchAttackable:
                target_sprite = self.ShadeTable.FindValue("Attack")
                radius = 2.4
            elif self.TouchAnnihilator or not skillname:
                target_sprite = self.ShadeTable.FindValue("OutRange")

            elif self.TouchGrowable and not self.hero.AbilityStatus.NoTreeSkill(
            ):
                target_color = VectorMath.Vec4(1, 1, 1, 0.75)
                target_sprite = self.ShadeTable.FindValue(skillname)

                if skillname in self.scale_table:
                    target_scale *= self.scale_table[skillname]

                if not skillname == "TreeSkillWhirlingnut":
                    self.Owner.Transform.RotateByAngles(
                        VectorMath.Vec3(
                            0, 0,
                            self.touch_normal.angleZ() - math.pi / 2))

                if physskill and skillname:
                    if physskill in self.color_table:
                        target_color = self.color_table[physskill]
                    if physskill in self.anim_table:
                        self.anim_table[physskill].Active = True
            else:
                target_sprite = self.ShadeTable.FindValue("InRange")

        self.Owner.SphereCollider.Radius = radius
        self.Owner.Sprite.Color = target_color
        self.Owner.Transform.Scale = self.initial_size * target_scale
        self.Owner.SphereCollider.Radius = self.ball_size / target_scale
        self.Owner.Sprite.SpriteSource = target_sprite
 def SetPlantAlpha(self, alpha):
     if self.touched_plant:
         if self.touched_plant.Sprite:
             self.touched_plant.Sprite.Color = VectorMath.Vec4(
                 1, 1, 1, alpha)
         if self.touched_plant.Hierarchy:
             for child in self.touched_plant.Hierarchy.Children:
                 if child.Sprite:
                     child.Sprite.Color = VectorMath.Vec4(1, 1, 1, alpha)
 def Fading(self):
     self.Owner.SpriteParticleSystem.Tint *= VectorMath.Vec4(1,1,1,0.95)
     for child in self.Owner.Hierarchy.Children:
         child.SpriteParticleSystem.Tint *= VectorMath.Vec4(1,1,1,0.95)
     
     if self.Owner.SpriteParticleSystem.Tint.a < 0.001:
         
         self.CurrentUpdater = self.Fading2
         self.Space.FindObjectByName("LevelSettings").LevelStart.HUDManager.ShowScores()
         self.Owner.DestroyInterface.Destroy()
示例#5
0
    def Fading(self):

        self.Owner.SpriteParticleSystem.Tint *= VectorMath.Vec4(1, 1, 1, 0.95)
        for child in self.Owner.Hierarchy.Children:
            child.SpriteParticleSystem.Tint *= VectorMath.Vec4(1, 1, 1, 0.95)

        if self.Owner.SpriteParticleSystem.Tint.a < 0.001:
            self.Space.SoundSpace.PlayCue("Rain")

            self.Owner.Destroy()
            self.Space.FindObjectByName("EndingWord1").FadeAnim.Active = True
            self.Space.FindObjectByName("EndingWord2").FadeAnim.Active = True
示例#6
0
    def DownUpdate(self):
        self.Owner.Sprite.Color *= VectorMath.Vec4(1, 1, 1, 0.9)
        for child in self.Owner.Hierarchy.Children:
            if child.Sprite:
                child.Sprite.Color *= VectorMath.Vec4(1, 1, 1, 0.92)

        self.Owner.Transform.Scale *= 0.95
        destination = self.camera.Transform.Translation + VectorMath.Vec3(
            8, -2.2, 0)

        t = self.Owner.Transform.Translation
        kept_ratio = 0.95
        self.Owner.Transform.Translation = t * kept_ratio + destination * (
            1 - kept_ratio)
示例#7
0
    def DestroyUpdate(self, UpdateEvent):
        self.Owner.SpriteText.Color *= VectorMath.Vec4(1, 1, 1,
                                                       self.DestroySpeed)
        self.hider.Sprite.Color *= VectorMath.Vec4(1, 1, 1, self.DestroySpeed)
        if self.emphasizer:
            self.emphasizer.Sprite.Color *= VectorMath.Vec4(
                1, 1, 1, self.DestroySpeed)

        if self.ShouldBeRealDestroyed:
            if self.Owner.SpriteText.Color.a < 0.01:
                if self.Owner.DestroyInterface:
                    self.Owner.DestroyInterface.Destroy()
                else:
                    self.Owner.Destroy()
示例#8
0
    def OnMouseDown(self, MouseDownEvent):
        self.Owner.Sprite.Color = VectorMath.Vec4(1, 0, 0, 0.25)

        heroClickEvent = Zero.ScriptEvent()
        heroClickEvent.Target = self.hero
        heroClickEvent.MaxRangeSqrt = 36
        self.Owner.Region.DispatchEvent("heroClickEvent", heroClickEvent)
    def HighAttack(self):
        self.Owner.Teleportable.Active = True
        self.Owner.Bounceable.Active = False

        self.Owner.ClickReceiver.Receivable = True

        if not self.Owner.Sprite.SpriteSource == self.outanim:
            self.Owner.Sprite.SpriteSource = self.outanim

        if self.Owner.Sprite.CurrentFrame == 2:
            hurtbox = self.Space.CreateAtPosition(
                "HurtBox", self.Owner.Transform.Translation + Vec3(0, .7, 0))
            hurtbox.Transform.Scale = Vec3(.26, 0.75, 1)
            hurtbox.CanHurt.HurtRate = -20
            hurtbox.TimedDeath.LifeTime = 0.05
            hurtbox.AttachToRelative(self.Owner)

            self.Owner.RigidBody.ApplyLinearImpulse(VectorMath.Vec3(0, 5, 0))

            sandsmoke = self.Space.CreateAtPosition(
                "SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(
                t.x, t.y, t.z, 0.1)
            sandsmoke.SphericalParticleEmitter.RandomVelocity *= 0.4
            sandsmoke.SphericalParticleEmitter.EmitCount = 3
            sandsmoke.SphericalParticleEmitter.ResetCount()

        if self.Owner.Sprite.CurrentFrame == 3:
            self.Owner.Sprite.AnimationSpeed = 0

        if self.Owner.RigidBody.Velocity.y < 0:
            self.Owner.Sprite.AnimationSpeed = 1
            self.CurrentUpdate = self.GoUnder
示例#10
0
    def Slamming(self):
        #initial check
        if not self.Owner.Sprite.SpriteSource == self.slamanim:
            self.Owner.Sprite.SpriteSource = self.slamanim

        if self.Owner.Sprite.CurrentFrame == 3:
            self.waitcounter = 100
            self.CurrentUpdate = self.PreWalk
            self.Owner.Sprite.AnimationActive = False
            self.SpeedMultiplier = 1
            self.Owner.CanBounce.Active = True
            dir_modifier = 1 if self.Owner.Sprite.FlipX else -1
            hurtbox = self.Space.CreateAtPosition(
                "HurtBox", self.Owner.Transform.Translation -
                Vec3(dir_modifier * .5, .5, 0))
            hurtbox.Transform.Scale = Vec3(1.5, .5, 1)
            hurtbox.TimedDeath.LifeTime = 0.1

            dx = abs(self.Owner.PlayerDetectorInterface.GetDirection().x)
            if dx <= 4:
                self.Space.FindObjectByName(
                    "Camera").CameraFunction.SetCameraShake(
                        True, .05 * (4 - dx), True, .05 * (4 - dx), .18, 0)

            sandsmoke = self.Space.CreateAtPosition(
                "SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(
                t.x, t.y, t.z, 0.8)
            sandsmoke.SphericalParticleEmitter.EmitCount = 25
            sandsmoke.SphericalParticleEmitter.ResetCount()
    def Attacking(self):
        self.Owner.Teleportable.Active = True
        self.Owner.Bounceable.Active = False

        self.Owner.ClickReceiver.Receivable = True

        if not self.Owner.Sprite.SpriteSource == self.outanim:
            self.Owner.SoundEmitter.PlayCue("DigCue")
            self.Owner.Sprite.SpriteSource = self.outanim

        if self.Owner.Sprite.CurrentFrame == 2:
            hurtbox = self.Space.CreateAtPosition(
                "HurtBox", self.Owner.Transform.Translation + Vec3(0, .6, 0))
            hurtbox.Transform.Scale = Vec3(.32, 0.85, 1)
            hurtbox.CanHurt.HurtRate = -100
            hurtbox.TimedDeath.LifeTime = 0.05
            hurtbox.AttachToRelative(self.Owner)

            sandsmoke = self.Space.CreateAtPosition(
                "SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(
                t.x, t.y, t.z, 0.1)
            sandsmoke.SphericalParticleEmitter.RandomVelocity *= 0.4
            sandsmoke.SphericalParticleEmitter.EmitCount = 3
            sandsmoke.SphericalParticleEmitter.ResetCount()
        if self.Owner.Sprite.CurrentFrame == 3:
            self.Owner.RigidBody.ApplyLinearImpulse(VectorMath.Vec3(0, 2.5, 0))
        if self.Owner.Sprite.CurrentFrame == 5:
            self.dumbcounter = 20
            self.CurrentUpdate = self.Resting
示例#12
0
    def Slamming(self):
        #initial check
        if not self.Owner.Sprite.SpriteSource == self.slamanim:
            self.Owner.Sprite.SpriteSource = self.slamanim

        if self.Owner.Sprite.CurrentFrame == 3:
            self.waitcounter = 100
            self.CurrentUpdate = self.PreWalk
            self.Owner.Sprite.AnimationActive = False
            self.SpeedMultiplier = 1
            self.Owner.CanBounce.Active = True
            dir_modifier = 1 if self.Owner.Sprite.FlipX else -1
            hurtbox = self.Space.CreateAtPosition(
                "HurtBox", self.Owner.Transform.Translation -
                Vec3(dir_modifier * .5, .5, 0))
            hurtbox.Transform.Scale = Vec3(1.5, .5, 1)
            hurtbox.TimedDeath.LifeTime = 0.1

            sandsmoke = self.Space.CreateAtPosition(
                "SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(
                t.x, t.y, t.z, 0.8)
            sandsmoke.SphericalParticleEmitter.EmitCount = 25
            sandsmoke.SphericalParticleEmitter.ResetCount()
示例#13
0
    def RemoveObserver(self, alpha):
        self.semarphor -= 1

        self.last_dist = 9999
        self.last_dominator = None

        if self.semarphor == 0:
            self.Owner.Sprite.Color = VectorMath.Vec4(0, 0, 0, alpha)
    def OnLogicUpdate(self, UpdateEvent):
        self.UpdateEnvironmentInfo()
        if self.Active and self.WithInRange:
            self.PerformAbsorb()

        target_color = VectorMath.Vec4(1, 1, 1, 0.25)
        target_scale = 1
        if self.WithInRange:
            if self.TouchAttackable:
                target_color = VectorMath.Vec4(1, 0, 0, 0.25)
                target_scale = 5
            elif not self.TouchAnnihilator and self.TouchGrowable:
                target_color = VectorMath.Vec4(0, 1, 0, 0.25)
                target_scale = 5
        self.Owner.Sprite.Color = target_color
        self.Owner.Transform.Scale = self.initial_size * target_scale
        self.Owner.SphereCollider.Radius = self.ball_size / target_scale
示例#15
0
    def OnLogicUpdate(self, UpdateEvent):

        #number bounces above enemy and then is destroyed afterwards
        self.Owner.Transform.Translation.y += self.upSpeed * UpdateEvent.Dt
        self.Owner.SpriteText.Color = self.Owner.SpriteText.Color - VectorMath.Vec4(0, 0, 0, self.alphaTimer)
        self.destroyTimer -= 1
        if(self.destroyTimer == 0):
            self.Owner.Destroy()
示例#16
0
    def OnLogicUpdate(self, UpdateEvent):
        if not self.Activated:
            if self.StartFreezing:
                self.FreezeCounter += UpdateEvent.Dt
                self.Owner.DragEffect.Drag *= 1.1
                if self.Owner.FlowEffect:
                    self.Owner.FlowEffect.FlowSpeed *= 0.95
                
                #self.Owner.AddComponentByName("FreezeAnim")
                if self.FreezeCounter > self.FreezeDelay:
                    freezeflow = Zero.ScriptEvent()
                    self.Owner.Region.DispatchEvent("FreezeFlowEvent", freezeflow)
                    self.Activated = True
                    self.Owner.Collider.Ghost = False
                    self.Owner.DragEffect.Active = False
                    
                    if self.Owner.FlowEffect:
                        self.Owner.FlowEffect.Active = False
                        
                    self.Owner.GravityEffect.Active = True
                    for contactholder in self.Owner.Collider.Contacts:
                        
                        otherobj = contactholder.OtherObject
                        if otherobj.MouseLocationIndicator:
                            continue
                        elif otherobj.CannotBeFrozen:
                            continue
                        elif otherobj.GrowableGround:
                            continue
                        elif otherobj.PlantAnnihilator:
                            continue  
                        if otherobj.RigidBody:
                            otherobj.RigidBody.Kinematic= False
                            otherobj.RigidBody.Static= True
                        if otherobj.AIMovementInterface:
                            otherobj.AIMovementInterface.Deactivate()
                        if otherobj.BurnAnim:
                            otherobj.BurnAnim.Active = False
                        if otherobj.PoisonAnim:
                            otherobj.PoisonAnim.Active = False
                        
                        #if otherobj.FreezeAnim:
                        #    otherobj.FreezeAnim.Active = False
        else:
            effect_active = False
            for contactholder in self.Owner.Collider.Contacts:
                if contactholder.OtherObject.CannotBeFrozen:
                    effect_active = True

            if not effect_active:
                s = self.Owner.Sprite.Color 
                self.Owner.Sprite.Color = VectorMath.Vec4(s.x * 2.3, s.y * 2.3, s.z * 2.3, 1)
                self.Owner.GravityEffect.Active = False
                if self.Owner.CanHurt:
                    self.Owner.CanHurt.Active = False
                Zero.Disconnect(self.Space, Events.LogicUpdate, self)
示例#17
0
    def ResetAlpha(self, alpha=1):
        targetlist = []
        if self.Owner.Sprite:
            targetlist.append(self.Owner.Sprite)
        if self.Owner.SpriteText:
            targetlist.append(self.Owner.SpriteText)

        for target in targetlist:
            c = target.Color
            target.Color = VectorMath.Vec4(c.x, c.y, c.z, alpha)
示例#18
0
    def OnTrigger(self, TriggerEvent):

        if self.Owner.FadeAnim:
            self.Owner.FadeAnim.Active = True
        else:
            s = self.Owner.Sprite.Color
            self.Owner.Sprite.Color = VectorMath.Vec4(s.x, s.y, s.z, s.a * 0.5)

        self.Owner.Collider.Ghost = True
        if self.Owner.IsSentry:
            self.Owner.RemoveComponentByName("IsSentry")
示例#19
0
 def GenerateRain(self):
     creatAt = Vec3(random.uniform(self.LowerLeft.x, self.UpperRight.x),
                    random.uniform(self.LowerLeft.y, self.UpperRight.y), 0)
     created = self.RainArchetype if self.RainArchetype else "Rain"
     obj = self.Space.CreateAtPosition(created, creatAt)
     obj.RigidBody.Velocity = Vec3(0,
                                   random.randint(self.SpeedVariation,
                                                  0), 0)
     for child in obj.Hierarchy.Children:
         child.Sprite.Color = self.RainShader
         child.Sprite.Color *= VectorMath.Vec4(1, 1, 1, 0.2)
示例#20
0
    def BeginShrink(self, UpdateEvent):
        self.cached_particle.SphericalParticleEmitter.EmitterSize *= 0.99
        self.Space.FindObjectByName("Camera").CameraFunction.SetCameraShake(
            True, .35, True, .35, 0.1, 0)

        self.temp_counter += 1
        if self.temp_counter > 10:
            self.temp_counter = 0
            self.Space.FindObjectByName(
                "RandomYeller").RandomYeller.CreateOne()
        if self.cached_particle.SphericalParticleEmitter.EmitterSize.x < 2.5 and not self.shrink_enough:
            self.shrink_enough = True
            self.Space.FindObjectByName("Camera").CameraFunction.SetCameraFade(
                VectorMath.Vec4(1, 1, 1, 0), VectorMath.Vec4(1, 1, 1, 1), 0.05,
                0)
            seq = Action.Sequence(self.Owner.Actions)
            Action.Delay(seq, 2)
            Action.Call(seq, lambda: self.Space.LoadLevel("CreditLevel"))
            Action.Call(
                seq, lambda: self.Space.FindObjectByName("LevelSettings").
                LevelStart.RemoveHUD())
示例#21
0
    def IncreaseAlpha(self):
        self.Soul.SpriteParticleSystem.Tint *= VectorMath.Vec4(1, 1, 1, 0.9)

        color = self.Owner.Sprite.Color
        color.w += self.IncreaseAlphaDelta
        if (color.w >= 1.0):
            color.w = 1.0
            self.CurrentUpdate = None
            self.DeathActive = True
            self.Soul.Destroy()

        self.Owner.Sprite.Color = color
示例#22
0
 def OnLogicUpdate(self, UpdateEvent):
     #cameraTimer = 15
     randomDirectionX = random.uniform(-3, 3)
     randomDirectionY = random.uniform(1, 2)
     #Sends the object flying in a random direction and then destroys it after a certain time
     self.Owner.RigidBody.ApplyLinearVelocity(
         VectorMath.Vec3(randomDirectionX, randomDirectionY, 0))
     self.Owner.Sprite.Color = self.Owner.Sprite.Color - VectorMath.Vec4(
         0, 0, 0, self.alphaTimer)
     self.destroyTimer -= 1
     self.Owner.RigidBody.ApplyLinearVelocity(VectorMath.Vec3(0, 0, 0))
     if (self.destroyTimer == 0):
         self.Owner.Destroy()
示例#23
0
 def OnLogicUpdate(self, UpdateEvent):
     if self.Active:
         if self.blink_tick <= self.BlinkTick:
             self.blink_tick += 1
         if self.blink_tick >= self.BlinkTick:
             if not self.Owner.Sprite.Color == self.BlinkColor:
                 self.Owner.Sprite.Color = self.BlinkColor
             else:
                 self.Owner.Sprite.Color = self.oricolor
             self.blink_tick = 0
     else:
         c = self.Owner.Sprite.Color
         self.Owner.Sprite.Color = VectorMath.Vec4(self.oricolor.x,self.oricolor.y,self.oricolor.z,c.a)
示例#24
0
    def OnTrigger(self, TriggerEvent):

        if self.Owner.FadeAnim:
            self.Owner.FadeAnim.Active = True

        if self.Owner.Sprite:
            s = self.Owner.Sprite.Color
            self.Owner.Sprite.Color = VectorMath.Vec4(s.x, s.y, s.z, s.a * 0)

        if self.Owner.Collider:
            self.Owner.Collider.Ghost = True
        if self.Owner.Hierarchy:
            for child in self.Owner.Hierarchy.Children:
                if child.Sprite.Color:
                    s = child.Sprite.Color
                    child.Sprite.Color = VectorMath.Vec4(
                        s.x, s.y, s.z, s.a * 0)
                    if child.Collider:
                        child.Collider.Ghost = True

        if self.Owner.IsSentry:
            self.Owner.RemoveComponentByName("IsSentry")
示例#25
0
 def OnLogicUpdate(self, UpdateEvent):
     self.EnsureSetting()
     
     if not self.LevelName == self.parentspace.CurrentLevel.Name:
         self.EnsureAbility()
         
     if self.now_ability != self.GetName():
         c = self.Owner.Sprite.Color
         self.Owner.Sprite.Color *= Vec4(1,1,1,0.9)
         if self.Owner.Sprite.Color.a <= 0.01:
             self.Owner.Sprite.SpriteSource = self.PicTable.FindValue(self.GetName())
             self.now_ability = self.GetName()
     else:
         c = self.Owner.Sprite.Color
         self.Owner.Sprite.Color = VectorMath.Vec4(c.x, c.y, c.z, c.a * 0.9 + 0.1)
示例#26
0
    def IncreaseAlpha(self):
        self.Soul.SpriteParticleSystem.Tint *= VectorMath.Vec4(1, 1, 1, 0.9)

        color = self.Owner.Sprite.Color
        color.w += self.IncreaseAlphaDelta
        if (color.w >= 1.0):
            color.w = 1.0
            self.CurrentUpdate = None
            self.DeathActive = True
            self.Soul.Destroy()
            if self.Owner.PlayerController.Mouse:
                self.Owner.PlayerController.Mouse.MouseLocationIndicator.Deactivated = False
            self.IsImmune = False

        self.Owner.Sprite.Color = color
示例#27
0
class Checkable:
    DarkenedColor = Property.Vector4(VectorMath.Vec4(0.5, 0.5, 0.5, 1))

    def Initialize(self, initializer):
        self.CheckOut()
        Zero.Connect(self.Owner, Events.CollisionStarted, self.OnCollision)

    def OnCollision(self, CollisionEvent):
        if CollisionEvent.OtherObject.CanCheck and not self.activated:
            self.activated = True
            CollisionEvent.OtherObject.CanCheck.SetCheck(self.Owner)
            self.Owner.Sprite.Color = VectorMath.Vec4(1, 1, 1, 1)

    def CheckOut(self):
        self.activated = False
        self.Owner.Sprite.Color = self.DarkenedColor
    def GoUnder(self):
        self.Owner.Teleportable.Active = False
        self.Owner.Bounceable.Active = False
        self.Owner.Collider.Ghost = True

        if not self.Owner.Sprite.SpriteSource == self.inanim:
            self.Owner.Sprite.SpriteSource = self.inanim
        if self.Owner.Sprite.CurrentFrame == 2:
            self.dumbcounter = 50
            self.CurrentUpdate = self.UndergroundWalking

            sandsmoke = self.Space.CreateAtPosition(
                "SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(
                t.x, t.y, t.z, 0.1)
            sandsmoke.SphericalParticleEmitter.RandomVelocity *= .5
            sandsmoke.SphericalParticleEmitter.StartVelocity *= .5
            sandsmoke.SphericalParticleEmitter.EmitCount = 10
            sandsmoke.SphericalParticleEmitter.ResetCount()
示例#29
0
 def OnLogicUpdate(self, UpdateEvent):
     
     if self.Active:
         if self.Countdown > 0:
             self.Countdown -= 1
         if self.Countdown == 0:
             self.Active = False
             self.Countdown = -1
         
         if self.blink_tick <= self.BlinkTick:
             self.blink_tick += 1
         if self.blink_tick >= self.BlinkTick:
             if not self.Owner.Sprite.Color == self.BlinkColor:
                 self.Owner.Sprite.Color = self.BlinkColor
                 #self.Owner.Sprite.BlendMode = Zero.BlendMode.Additive
               
             else:
                 self.Owner.Sprite.Color = self.oricolor
             self.blink_tick = 0
     else:
         c = self.Owner.Sprite.Color
         self.Owner.Sprite.Color = VectorMath.Vec4(self.oricolor.x,self.oricolor.y,self.oricolor.z,c.a)
    def Attacking(self):
        self.Owner.ClickReceiver.Receivable = True
        

        if not self.Owner.Sprite.SpriteSource == self.outanim:
            self.Owner.Sprite.SpriteSource = self.outanim
            
        if self.Owner.Sprite.CurrentFrame == 2:
            hurtbox = self.Space.CreateAtPosition("HurtBox",self.Owner.Transform.Translation + Vec3(0,.5,0))
            hurtbox.Transform.Scale = Vec3(1,1.5,1)
            hurtbox.CanHurt.HurtRate = -20
            hurtbox.TimedDeath.LifeTime = 0.3
            
            sandsmoke = self.Space.CreateAtPosition("SandSmokeParticle", self.Owner.Transform.Translation)
            t = sandsmoke.SpriteParticleSystem.Tint
            sandsmoke.SpriteParticleSystem.Tint = VectorMath.Vec4(t.x, t.y, t.z, 0.1)
            sandsmoke.SphericalParticleEmitter.EmitCount = 3
            sandsmoke.SphericalParticleEmitter.ResetCount()
            
        if self.Owner.Sprite.CurrentFrame == 5:
            self.dumbcounter = 20
            self.CurrentUpdate = self.Resting