Exemple #1
0
        public void SummonFireball()
        {
            ResetFireball();
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "WizardFireballProjectile_Sprite",
                SourceAnchor        = m_spellOffset,
                Target              = m_target,
                Speed               = new Vector2(0f, 0f),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = MiniBossFireballSize
            };

            if (Difficulty == GameTypes.EnemyDifficulty.EXPERT)
            {
                projectileData.SpriteName = "GhostBossProjectile_Sprite";
            }
            SoundManager.Play3DSound(this, m_target, "Fire_Wizard_Form");
            m_fireballSummon                = m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            m_fireballSummon.Opacity        = 0f;
            m_fireballSummon.Scale          = Vector2.Zero;
            m_fireballSummon.AnimationDelay = 0.1f;
            m_fireballSummon.PlayAnimation();
            m_fireballSummon.Rotation = 0f;
            Tween.To(m_fireballSummon, 0.5f, Back.EaseOut, "Opacity", "1", "ScaleX", MiniBossFireballSize.X.ToString(),
                     "ScaleY", MiniBossFireballSize.Y.ToString());
            projectileData.Dispose();
        }
Exemple #2
0
        private void ThrowExpertProjectiles(LogicSet ls, bool useBossProjectile = false)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "GhostProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(0f, 0f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };

            ls.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "FairyAttack1"));
            projectileData.Angle = new Vector2(0f, 0f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(90f, 90f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(180f, 180f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Dispose();
        }
Exemple #3
0
        public void ShatterIceball(int numIceballs)
        {
            SoundManager.Play3DSound(this, m_target, "Ice_Wizard_Attack_Glass");
            if (m_iceballSummon.SpriteName == "WizardIceSpell_Sprite")
            {
                m_iceballSummon.PlayAnimation("Grown", "End");
            }
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "WizardIceProjectile_Sprite",
                SourceAnchor        = m_spellOffset,
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = MiniBossIceSize
            };
            var   num  = 0f;
            float num2 = 360 / numIceballs;

            for (var i = 0; i < numIceballs; i++)
            {
                projectileData.Angle = new Vector2(num, num);
                var projectileObj = m_levelScreen.ProjectileManager.FireProjectile(projectileData);
                Tween.RunFunction(0.15f, this, "ChangeIceballState", projectileObj);
                num += num2;
            }
            projectileData.Dispose();
        }
Exemple #4
0
        private void ThrowStandingProjectiles(LogicSet ls, bool useBossProjectile = false)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "SpellDamageShield_Sprite",
                SourceAnchor        = new Vector2(0f, 60f),
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(0f, 0f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale,
                Lifespan            = 0.75f
            };

            ls.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "FairyAttack1"));
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            ls.AddAction(new DelayLogicAction(0.075f));
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            ls.AddAction(new DelayLogicAction(0.075f));
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Dispose();
        }
Exemple #5
0
        public void CastFireball()
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "WizardFireballProjectile_Sprite",
                SourceAnchor        = m_spellOffset,
                Target              = m_target,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = MiniBossFireballSize
            };

            if (Difficulty == GameTypes.EnemyDifficulty.ADVANCED)
            {
                projectileData.AngleOffset = CDGMath.RandomInt(-25, 25);
            }
            if (Difficulty == GameTypes.EnemyDifficulty.EXPERT)
            {
                projectileData.SpriteName = "GhostBossProjectile_Sprite";
            }
            SoundManager.Play3DSound(this, m_target, "FireWizard_Attack_01", "FireWizard_Attack_02",
                                     "FireWizard_Attack_03", "FireWizard_Attack_04");
            var projectileObj = m_levelScreen.ProjectileManager.FireProjectile(projectileData);

            projectileObj.Rotation = 0f;
            Tween.RunFunction(0.15f, this, "ChangeFireballState", projectileObj);
        }
Exemple #6
0
 public override void Dispose()
 {
     if (!IsDisposed)
     {
         m_projectileManager = null;
         m_data = null;
         base.Dispose();
     }
 }
 public override void Dispose()
 {
     if (!base.IsDisposed)
     {
         this.m_projectileManager = null;
         this.m_data = null;
         base.Dispose();
     }
 }
Exemple #8
0
        public void SummonFireball()
        {
            ResetFireball();
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "WizardFireballProjectile_Sprite",
                SourceAnchor        = m_spellOffset,
                Target              = m_target,
                Speed               = new Vector2(0f, 0f),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                DestroysWithEnemy   = false,
                Scale               = ProjectileScale
            };

            if (Difficulty == GameTypes.EnemyDifficulty.EXPERT)
            {
                projectileData.SpriteName          = "GhostBossProjectile_Sprite";
                projectileData.CollidesWithTerrain = false;
            }
            SoundManager.Play3DSound(this, m_target, "Fire_Wizard_Form");
            m_fireballSummon                = m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            m_fireballSummon.Opacity        = 0f;
            m_fireballSummon.Scale          = Vector2.Zero;
            m_fireballSummon.AnimationDelay = 0.1f;
            m_fireballSummon.PlayAnimation();
            m_fireballSummon.Rotation = 0f;
            object arg_186_0 = m_fireballSummon;
            var    arg_186_1 = 0.5f;
            Easing arg_186_2 = Back.EaseOut;
            var    array     = new string[6];

            array[0] = "Opacity";
            array[1] = "1";
            array[2] = "ScaleX";
            var arg_165_0 = array;
            var arg_165_1 = 3;
            var x         = ProjectileScale.X;

            arg_165_0[arg_165_1] = x.ToString();
            array[4]             = "ScaleY";
            var arg_184_0 = array;
            var arg_184_1 = 5;
            var y         = ProjectileScale.Y;

            arg_184_0[arg_184_1] = y.ToString();
            Tween.To(arg_186_0, arg_186_1, arg_186_2, array);
            projectileData.Dispose();
        }
Exemple #9
0
        protected override void InitializeLogic()
        {
            var rotation = Rotation;
            var num      = ParseTagToFloat("delay");
            var num2     = ParseTagToFloat("speed");

            if (num == 0f)
            {
                Console.WriteLine("ERROR: Turret set with delay of 0. Shoots too fast.");
                num = 10000f;
            }
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "TurretProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(num2, num2),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(rotation, rotation),
                CollidesWithTerrain = true,
                Scale               = ProjectileScale
            };
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new PlayAnimationLogicAction(false), Types.Sequence.Parallel);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                          "Turret_Attack03"));
            logicSet.AddAction(new DelayLogicAction(num));
            m_generalBasicLB.AddLogicSet(logicSet);
            m_generalAdvancedLB.AddLogicSet(logicSet);
            m_generalExpertLB.AddLogicSet(logicSet);
            m_generalMiniBossLB.AddLogicSet(logicSet);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #10
0
        public void ThrowFourProjectiles(bool useBossProjectile)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "GhostProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(0f, 0f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };

            if (useBossProjectile)
            {
                projectileData.SpriteName = "GhostProjectileBoss_Sprite";
            }
            if (Difficulty == GameTypes.EnemyDifficulty.MINIBOSS)
            {
                SoundManager.Play3DSound(this, Game.ScreenManager.Player, "Boss_Flameskull_Roar_01",
                                         "Boss_Flameskull_Roar_02", "Boss_Flameskull_Roar_03");
            }
            else
            {
                SoundManager.Play3DSound(this, Game.ScreenManager.Player, "FairyAttack1");
            }
            m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            projectileData.Angle = new Vector2(90f, 90f);
            m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            projectileData.Angle = new Vector2(180f, 180f);
            m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            projectileData.Angle = new Vector2(-90f, -90f);
            m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            projectileData.Dispose();
        }
Exemple #11
0
        private void ThrowRapidProjectiles(LogicSet ls)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName    = "EnemySpearKnightWave_Sprite",
                SourceAnchor  = new Vector2(130f, -28f),
                Target        = null,
                Speed         = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted    = false,
                RotationSpeed = 0f,
                Damage        = Damage,
                AngleOffset   = 0f,
                Angle         = Vector2.Zero
            };

            ls.AddAction(new DelayLogicAction(0.2f, 0.35f));
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            ls.AddAction(new DelayLogicAction(0.2f, 0.35f));
            projectileData.SourceAnchor = new Vector2(130f, 28f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Dispose();
        }
Exemple #12
0
        public void SummonIceball()
        {
            ResetIceball();
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "WizardIceSpell_Sprite",
                SourceAnchor        = m_spellOffset,
                Target              = null,
                Speed               = new Vector2(0f, 0f),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = MiniBossIceSize
            };

            SoundManager.Play3DSound(this, m_target, "Ice_Wizard_Form");
            m_iceballSummon = m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            m_iceballSummon.PlayAnimation("Start", "Grown");
            projectileData.Dispose();
        }
Exemple #13
0
        private void DropFireProjectile()
        {
            UpdateCollisionBoxes();
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "SpellDamageShield_Sprite",
                SourceAnchor        = new Vector2(0f, Bounds.Bottom - Y - 10f),
                Speed               = new Vector2(0f, 0f),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                Angle               = new Vector2(0f, 0f),
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = ProjectileScale,
                Lifespan            = m_fireDropLifespan,
                LockPosition        = true
            };

            m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            projectileData.Dispose();
        }
Exemple #14
0
        private void ThrowTwoProjectiles(LogicSet ls)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName    = "EnemySpearKnightWave_Sprite",
                SourceAnchor  = new Vector2(30f, 0f),
                Target        = null,
                Speed         = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted    = false,
                RotationSpeed = 0f,
                Damage        = Damage,
                AngleOffset   = 0f,
                Angle         = new Vector2(22f, 22f)
            };

            ls.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-22f, -22f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            ls.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            projectileData.Dispose();
        }
Exemple #15
0
        private void CastFireShield(int numFires)
        {
            var data = new ProjectileData(this)
            {
                SpriteName          = "SpellDamageShield_Sprite",
                SourceAnchor        = new Vector2(0f, Bounds.Bottom - Y - 10f),
                Speed               = new Vector2(m_fireRotationSpeed, m_fireRotationSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Target              = this,
                Damage              = Damage,
                Angle               = new Vector2(0f, 0f),
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = new Vector2(m_fireShieldScale, m_fireShieldScale),
                Lifespan            = 999999f,
                DestroysWithEnemy   = false,
                LockPosition        = true
            };

            SoundManager.PlaySound("Cast_FireShield");
            var fireDistance = m_fireDistance;

            for (var i = 0; i < numFires; i++)
            {
                var altX          = 360f / numFires * i;
                var projectileObj = m_levelScreen.ProjectileManager.FireProjectile(data);
                projectileObj.AltX                 = altX;
                projectileObj.AltY                 = fireDistance;
                projectileObj.Spell                = 11;
                projectileObj.CanBeFusRohDahed     = false;
                projectileObj.AccelerationXEnabled = false;
                projectileObj.AccelerationYEnabled = false;
                projectileObj.IgnoreBoundsCheck    = true;
                m_fireShieldList.Add(projectileObj);
            }
        }
Exemple #16
0
        public void ThrowSprayProjectiles(bool firstShot)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "EyeballProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(0f, 0f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };
            var num = 30;

            for (var i = 0; i <= 360; i += num)
            {
                if (firstShot)
                {
                    projectileData.AngleOffset = 10 + i;
                }
                else
                {
                    projectileData.AngleOffset = 20 + i;
                }
                m_levelScreen.ProjectileManager.FireProjectile(projectileData);
            }
            if (firstShot)
            {
                Tween.RunFunction(0.8f, this, "ThrowSprayProjectiles", false);
            }
            projectileData.Dispose();
        }
Exemple #17
0
        private void ThrowThreeProjectiles(LogicSet ls)
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "BoneProjectile_Sprite",
                SourceAnchor        = new Vector2(20f, -20f),
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = true,
                RotationSpeed       = 10f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(-72f, -72f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };

            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Speed = new Vector2(ProjectileSpeed - 350f, ProjectileSpeed - 350f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Speed = new Vector2(ProjectileSpeed + 350f, ProjectileSpeed + 350f);
            ls.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Dispose();
        }
Exemple #18
0
        public ProjectileObj FireProjectile(ProjectileData data)
        {
            if (data.Source == null)
            {
                throw new Exception("Cannot have a projectile with no source");
            }
            var projectileObj = m_projectilePool.CheckOut();

            projectileObj.Reset();
            projectileObj.LifeSpan = data.Lifespan;
            var source = data.Source;

            projectileObj.ChaseTarget = data.ChaseTarget;
            projectileObj.Source      = source;
            projectileObj.Target      = data.Target;
            projectileObj.UpdateHeading();
            projectileObj.TurnSpeed               = data.TurnSpeed;
            projectileObj.CollidesWithTerrain     = data.CollidesWithTerrain;
            projectileObj.DestroysWithTerrain     = data.DestroysWithTerrain;
            projectileObj.DestroysWithEnemy       = data.DestroysWithEnemy;
            projectileObj.FollowArc               = data.FollowArc;
            projectileObj.Orientation             = MathHelper.ToRadians(data.StartingRotation);
            projectileObj.ShowIcon                = data.ShowIcon;
            projectileObj.IsCollidable            = data.IsCollidable;
            projectileObj.CollidesWith1Ways       = data.CollidesWith1Ways;
            projectileObj.DestroyOnRoomTransition = data.DestroyOnRoomTransition;
            projectileObj.CanBeFusRohDahed        = data.CanBeFusRohDahed;
            projectileObj.IgnoreInvincibleCounter = data.IgnoreInvincibleCounter;
            projectileObj.WrapProjectile          = data.WrapProjectile;
            var num = 0f;

            if (data.Target != null)
            {
                var num2 = data.Target.X - source.X;
                var num3 = data.Target.Y - source.Y - data.SourceAnchor.Y;
                if (source.Flip == SpriteEffects.FlipHorizontally)
                {
                    num   = 180f - num;
                    num2 += data.SourceAnchor.X;
                    num   = MathHelper.ToDegrees((float)Math.Atan2(num3, num2));
                    num  -= data.AngleOffset;
                }
                else
                {
                    num   = MathHelper.ToDegrees((float)Math.Atan2(num3, num2));
                    num2 -= data.SourceAnchor.X;
                    num  += data.AngleOffset;
                }
            }
            else
            {
                num = data.Angle.X + data.AngleOffset;
                if (data.Angle.X != data.Angle.Y)
                {
                    num = CDGMath.RandomFloat(data.Angle.X, data.Angle.Y) + data.AngleOffset;
                }
                if (source.Flip != SpriteEffects.None && source.Rotation != 0f)
                {
                    num -= 180f;
                }
                else if (source.Flip != SpriteEffects.None && source.Rotation == 0f)
                {
                    num = 180f - num;
                }
            }
            if (!data.LockPosition)
            {
                projectileObj.Rotation = num;
            }
            num = MathHelper.ToRadians(num);
            projectileObj.Damage = data.Damage;
            m_levelScreen.PhysicsManager.AddObject(projectileObj);
            projectileObj.ChangeSprite(data.SpriteName);
            projectileObj.RotationSpeed = data.RotationSpeed;
            projectileObj.Visible       = true;
            if (source.Flip != SpriteEffects.None)
            {
                projectileObj.X = source.AbsX - data.SourceAnchor.X;
            }
            else
            {
                projectileObj.X = source.AbsX + data.SourceAnchor.X;
            }
            projectileObj.Y          = source.AbsY + data.SourceAnchor.Y;
            projectileObj.IsWeighted = data.IsWeighted;
            var vector = new Vector2((float)Math.Cos(num), (float)Math.Sin(num));
            var num4   = data.Speed.X;

            if (data.Speed.X != data.Speed.Y)
            {
                num4 = CDGMath.RandomFloat(data.Speed.X, data.Speed.Y);
            }
            projectileObj.AccelerationX = vector.X * num4;
            projectileObj.AccelerationY = vector.Y * num4;
            projectileObj.CurrentSpeed  = num4;
            if (source is PlayerObj)
            {
                if (projectileObj.LifeSpan == 0f)
                {
                    projectileObj.LifeSpan = (source as PlayerObj).ProjectileLifeSpan;
                }
                projectileObj.CollisionTypeTag = 2;
                projectileObj.Scale            = data.Scale;
            }
            else
            {
                if (projectileObj.LifeSpan == 0f)
                {
                    projectileObj.LifeSpan = 15f;
                }
                projectileObj.CollisionTypeTag = 3;
                projectileObj.Scale            = data.Scale;
            }
            if (data.Target != null && data.Source.Flip == SpriteEffects.FlipHorizontally && data.ChaseTarget)
            {
                projectileObj.Orientation = MathHelper.ToRadians(180f);
            }
            if (data.Source is PlayerObj && (Game.PlayerStats.Traits.X == 22f || Game.PlayerStats.Traits.Y == 22f))
            {
                projectileObj.AccelerationX *= -1f;
                if (!data.LockPosition)
                {
                    if (data.Source.Flip == SpriteEffects.FlipHorizontally)
                    {
                        projectileObj.Flip = SpriteEffects.None;
                    }
                    else
                    {
                        projectileObj.Flip = SpriteEffects.FlipHorizontally;
                    }
                }
            }
            projectileObj.PlayAnimation();
            return(projectileObj);
        }
Exemple #19
0
 protected override void InitializeLogic()
 {
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightWalk_Character", true, true), Types.Sequence.Serial);
     logicSet.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(0.2f, 1f, false), Types.Sequence.Serial);
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightWalk_Character", true, true), Types.Sequence.Serial);
     logicSet2.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.2f, 1f, false), Types.Sequence.Serial);
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(0.2f, 1f, false), Types.Sequence.Serial);
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.AttackThrustDelay, false), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new MoveDirectionLogicAction(this.AttackThrustSpeed), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this.m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect", new object[]
     {
         this,
         20,
         0.3f
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("AttackStart", "End", false), Types.Sequence.Parallel);
     logicSet4.AddAction(new DelayLogicAction(this.AttackThrustDuration, false), Types.Sequence.Serial);
     logicSet4.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.AttackThrustDelayExpert, false), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveDirectionLogicAction(this.AttackThrustSpeedExpert), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this.m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect", new object[]
     {
         this,
         20,
         0.3f
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("AttackStart", "End", false), Types.Sequence.Parallel);
     logicSet5.AddAction(new DelayLogicAction(this.AttackThrustDurationExpert, false), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet5.Tag = 2;
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.AttackThrustDelayMiniBoss, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveDirectionLogicAction(this.AttackThrustSpeedMiniBoss), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this.m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect", new object[]
     {
         this,
         20,
         0.3f
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End", false), Types.Sequence.Parallel);
     logicSet6.AddAction(new DelayLogicAction(this.AttackThrustDurationMiniBoss, false), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.25f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveDirectionLogicAction(this.AttackThrustSpeedMiniBoss), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this.m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect", new object[]
     {
         this,
         20,
         0.3f
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End", false), Types.Sequence.Parallel);
     logicSet6.AddAction(new DelayLogicAction(this.AttackThrustDurationMiniBoss, false), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.25f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveDirectionLogicAction(this.AttackThrustSpeedMiniBoss), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this.m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect", new object[]
     {
         this,
         20,
         0.3f
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End", false), Types.Sequence.Parallel);
     logicSet6.AddAction(new DelayLogicAction(this.AttackThrustDurationMiniBoss, false), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.Tag = 2;
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EnemySpearKnightWave_Sprite",
         SourceAnchor = new Vector2(30f, 0f),
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(0f, 0f),
         Scale = base.ProjectileScale
     };
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(this.AttackProjectileDelay, false), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnight_Projectile"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet7.Tag = 2;
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet8.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(this.AttackProjectileExpertDelay, false), Types.Sequence.Serial);
     this.ThrowThreeProjectiles(logicSet8);
     logicSet8.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet8.Tag = 2;
     LogicSet logicSet9 = new LogicSet(this);
     logicSet9.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet9.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet9.AddAction(new DelayLogicAction(this.AttackProjectileMinibossDelay, false), Types.Sequence.Serial);
     logicSet9.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnight_Projectile"
     }), Types.Sequence.Serial);
     logicSet9.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0333333351f), Types.Sequence.Serial);
     this.ThrowTwoProjectiles(logicSet9);
     logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet9.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     this.ThrowThreeProjectiles(logicSet9);
     logicSet9.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet9.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     this.ThrowTwoProjectiles(logicSet9);
     logicSet9.AddAction(new DelayLogicAction(0.5f, false), Types.Sequence.Serial);
     logicSet9.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet9.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.1f), Types.Sequence.Serial);
     logicSet9.Tag = 2;
     LogicSet logicSet10 = new LogicSet(this);
     logicSet10.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet10.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(this.AttackProjectileMinibossDelay, false), Types.Sequence.Serial);
     logicSet10.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnight_Projectile"
     }), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0333333351f), Types.Sequence.Serial);
     this.ThrowThreeProjectiles(logicSet10);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     this.ThrowTwoProjectiles(logicSet10);
     logicSet10.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character", true, true), Types.Sequence.Serial);
     logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(0.05f, false), Types.Sequence.Serial);
     this.ThrowThreeProjectiles(logicSet10);
     logicSet10.AddAction(new DelayLogicAction(0.5f, false), Types.Sequence.Serial);
     logicSet10.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.1f), Types.Sequence.Serial);
     logicSet10.Tag = 2;
     LogicSet logicSet11 = new LogicSet(this);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet11.AddAction(new MoveLogicAction(this.m_target, false, 300f), Types.Sequence.Serial);
     logicSet11.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     logicSet11.AddAction(new DelayLogicAction(0.3f, false), Types.Sequence.Serial);
     logicSet11.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet11.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     this.ThrowRapidProjectiles(logicSet11);
     this.ThrowRapidProjectiles(logicSet11);
     this.ThrowRapidProjectiles(logicSet11);
     logicSet11.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet11.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet11.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     logicSet11.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     this.ThrowRapidProjectiles(logicSet11);
     this.ThrowRapidProjectiles(logicSet11);
     this.ThrowRapidProjectiles(logicSet11);
     logicSet11.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet11.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet11.Tag = 2;
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4,
         logicSet7
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4,
         logicSet7
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet5,
         logicSet8
     });
     this.m_generalMiniBossLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet6,
         logicSet9,
         logicSet10
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalMiniBossLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
     {
         55,
         25,
         20
     });
     projectileData.Dispose();
     base.InitializeLogic();
 }
Exemple #20
0
        protected override void InitializeLogic()
        {
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new MoveLogicAction(m_target, true));
            logicSet.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Move01", "Blob_Move02", "Blob_Move03",
                                                          "Blank", "Blank", "Blank", "Blank", "Blank"));
            logicSet.AddAction(new DelayLogicAction(1.1f, 1.9f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new MoveLogicAction(m_target, false));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Move01", "Blob_Move02", "Blob_Move03",
                                                           "Blank", "Blank", "Blank", "Blank", "Blank"));
            logicSet2.AddAction(new DelayLogicAction(1f, 1.5f));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet3.AddAction(new DelayLogicAction(0.5f, 0.9f));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet4.AddAction(new GroundCheckLogicAction());
            logicSet4.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet4.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump"));
            logicSet4.AddAction(new DelayLogicAction(JumpDelay));
            logicSet4.AddAction(new MoveLogicAction(m_target, true, Speed * 6.75f));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Jump"));
            logicSet4.AddAction(new JumpLogicAction());
            logicSet4.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character"));
            logicSet4.AddAction(new DelayLogicAction(0.2f));
            logicSet4.AddAction(new GroundCheckLogicAction());
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Land"));
            logicSet4.AddAction(new MoveLogicAction(m_target, true, Speed));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Jump"));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character"));
            logicSet4.AddAction(new DelayLogicAction(0.2f));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet4.Tag = 2;
            var data = new ProjectileData(this)
            {
                SpriteName          = "SpellDamageShield_Sprite",
                SourceAnchor        = new Vector2(0f, 10f),
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                Angle               = new Vector2(0f, 0f),
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = ProjectileScale,
                Lifespan            = ExpertBlobProjectileDuration,
                LockPosition        = true
            };
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet5.AddAction(new GroundCheckLogicAction());
            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump"));
            logicSet5.AddAction(new DelayLogicAction(JumpDelay));
            logicSet5.AddAction(new MoveLogicAction(m_target, true, Speed * 6.75f));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Jump"));
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet5.AddAction(new JumpLogicAction());
            logicSet5.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character"));
            logicSet5.AddAction(new DelayLogicAction(0.2f));
            logicSet5.AddAction(new GroundCheckLogicAction());
            logicSet5.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Land"));
            logicSet5.AddAction(new MoveLogicAction(m_target, true, Speed));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Jump"));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character"));
            logicSet5.AddAction(new DelayLogicAction(0.2f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet5.Tag = 2;
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.AddAction(new GroundCheckLogicAction());
            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump"));
            logicSet6.AddAction(new DelayLogicAction(JumpDelay));
            logicSet6.AddAction(new MoveLogicAction(m_target, true, Speed * 6.75f));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Jump"));
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet6.AddAction(new JumpLogicAction());
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character"));
            logicSet6.AddAction(new DelayLogicAction(0.2f));
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet6.AddAction(new DelayLogicAction(0.2f));
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet6.AddAction(new DelayLogicAction(0.2f));
            logicSet6.AddAction(new GroundCheckLogicAction());
            logicSet6.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Land"));
            logicSet6.AddAction(new MoveLogicAction(m_target, true, Speed));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Jump"));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character"));
            logicSet6.AddAction(new DelayLogicAction(0.2f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.Tag = 2;
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new MoveLogicAction(m_target, true));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Move01", "Blob_Move02", "Blob_Move03",
                                                           "Blank", "Blank", "Blank", "Blank", "Blank"));
            logicSet7.AddAction(new DelayLogicAction(1.1f, 1.9f));
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new MoveLogicAction(m_target, false));
            logicSet8.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Move01", "Blob_Move02", "Blob_Move03",
                                                           "Blank", "Blank", "Blank", "Blank", "Blank"));
            logicSet8.AddAction(new DelayLogicAction(1f, 1.5f));
            var logicSet9 = new LogicSet(this);

            logicSet9.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet9.AddAction(new DelayLogicAction(0.5f, 0.9f));
            var logicSet10 = new LogicSet(this);

            logicSet10.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet10.AddAction(new GroundCheckLogicAction());
            logicSet10.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossJump_Character", false, false));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump"));
            logicSet10.AddAction(new DelayLogicAction(JumpDelay));
            logicSet10.AddAction(new MoveLogicAction(m_target, true, Speed * 6.75f));
            logicSet10.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Jump"));
            logicSet10.AddAction(new JumpLogicAction());
            logicSet10.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossAir_Character"));
            logicSet10.AddAction(new DelayLogicAction(0.2f));
            logicSet10.AddAction(new GroundCheckLogicAction());
            logicSet10.AddAction(new Play3DSoundLogicAction(this, m_target, "Blob_Land"));
            logicSet10.AddAction(new MoveLogicAction(m_target, true, Speed));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossJump_Character", false, false));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Jump"));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossIdle_Character"));
            logicSet10.AddAction(new DelayLogicAction(0.2f));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet10.Tag = 2;
            var logicSet11 = new LogicSet(this);

            logicSet11.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossAir_Character"));
            logicSet11.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "FairyMove1", "FairyMove2",
                                                            "FairyMove3"));
            logicSet11.AddAction(new ChaseLogicAction(m_target, true, 1f));
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet5);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet6);
            m_generalCooldownLB.AddLogicSet(logicSet, logicSet2, logicSet3);
            m_generalMiniBossLB.AddLogicSet(logicSet7, logicSet8, logicSet9, logicSet10);
            m_generalNeoLB.AddLogicSet(logicSet11);
            m_generalBossCooldownLB.AddLogicSet(logicSet7, logicSet8, logicSet9);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            logicBlocksToDispose.Add(m_generalNeoLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            logicBlocksToDispose.Add(m_generalBossCooldownLB);
            if (Difficulty == GameTypes.EnemyDifficulty.MINIBOSS)
            {
                SetCooldownLogicBlock(m_generalBossCooldownLB, 40, 40, 20);
                ChangeSprite("EnemyBlobBossIdle_Character");
            }
            else
            {
                SetCooldownLogicBlock(m_generalCooldownLB, 40, 40, 20);
            }
            base.InitializeLogic();
        }
Exemple #21
0
 protected override void InitializeLogic()
 {
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Move01",
         "Blob_Move02",
         "Blob_Move03",
         "Blank",
         "Blank",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(1.1f, 1.9f, false), Types.Sequence.Serial);
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet2.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Move01",
         "Blob_Move02",
         "Blob_Move03",
         "Blank",
         "Blank",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(1f, 1.5f, false), Types.Sequence.Serial);
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(0.5f, 0.9f, false), Types.Sequence.Serial);
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet4.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump", false), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.JumpDelay, false), Types.Sequence.Serial);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, base.Speed * 6.75f), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Jump"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet4.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Land"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, base.Speed), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Jump", false), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     ProjectileData data = new ProjectileData(this)
     {
         SpriteName = "SpellDamageShield_Sprite",
         SourceAnchor = new Vector2(0f, 10f),
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         Angle = new Vector2(0f, 0f),
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = base.ProjectileScale,
         Lifespan = this.ExpertBlobProjectileDuration,
         LockPosition = true
     };
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet5.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump", false), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.JumpDelay, false), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, base.Speed * 6.75f), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Jump"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet5.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet5.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Land"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, base.Speed), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Jump", false), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet5.Tag = 2;
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump", false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.JumpDelay, false), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, base.Speed * 6.75f), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Jump"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet6.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobAir_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Land"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, base.Speed), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobJump_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Jump", false), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyBlobIdle_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.Tag = 2;
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Move01",
         "Blob_Move02",
         "Blob_Move03",
         "Blank",
         "Blank",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(1.1f, 1.9f, false), Types.Sequence.Serial);
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet8.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Move01",
         "Blob_Move02",
         "Blob_Move03",
         "Blank",
         "Blank",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(1f, 1.5f, false), Types.Sequence.Serial);
     LogicSet logicSet9 = new LogicSet(this);
     logicSet9.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet9.AddAction(new DelayLogicAction(0.5f, 0.9f, false), Types.Sequence.Serial);
     LogicSet logicSet10 = new LogicSet(this);
     logicSet10.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet10.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet10.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossJump_Character", false, false), Types.Sequence.Serial);
     logicSet10.AddAction(new PlayAnimationLogicAction("Start", "BeforeJump", false), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(this.JumpDelay, false), Types.Sequence.Serial);
     logicSet10.AddAction(new MoveLogicAction(this.m_target, true, base.Speed * 6.75f), Types.Sequence.Serial);
     logicSet10.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Jump"
     }), Types.Sequence.Serial);
     logicSet10.AddAction(new JumpLogicAction(0f), Types.Sequence.Serial);
     logicSet10.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossAir_Character", true, true), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet10.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet10.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Blob_Land"
     }), Types.Sequence.Serial);
     logicSet10.AddAction(new MoveLogicAction(this.m_target, true, base.Speed), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossJump_Character", false, false), Types.Sequence.Serial);
     logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Jump", false), Types.Sequence.Serial);
     logicSet10.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossIdle_Character", true, true), Types.Sequence.Serial);
     logicSet10.AddAction(new DelayLogicAction(0.2f, false), Types.Sequence.Serial);
     logicSet10.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet10.Tag = 2;
     LogicSet logicSet11 = new LogicSet(this);
     logicSet11.AddAction(new ChangeSpriteLogicAction("EnemyBlobBossAir_Character", true, true), Types.Sequence.Serial);
     logicSet11.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "FairyMove1",
         "FairyMove2",
         "FairyMove3"
     }), Types.Sequence.Serial);
     logicSet11.AddAction(new ChaseLogicAction(this.m_target, true, 1f, -1f), Types.Sequence.Serial);
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet5
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet6
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3
     });
     this.m_generalMiniBossLB.AddLogicSet(new LogicSet[]
     {
         logicSet7,
         logicSet8,
         logicSet9,
         logicSet10
     });
     this.m_generalNeoLB.AddLogicSet(new LogicSet[]
     {
         logicSet11
     });
     this.m_generalBossCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet7,
         logicSet8,
         logicSet9
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     this.logicBlocksToDispose.Add(this.m_generalNeoLB);
     this.logicBlocksToDispose.Add(this.m_generalMiniBossLB);
     this.logicBlocksToDispose.Add(this.m_generalBossCooldownLB);
     if (base.Difficulty == GameTypes.EnemyDifficulty.MINIBOSS)
     {
         base.SetCooldownLogicBlock(this.m_generalBossCooldownLB, new int[]
         {
             40,
             40,
             20
         });
         this.ChangeSprite("EnemyBlobBossIdle_Character");
     }
     else
     {
         base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
         {
             40,
             40,
             20
         });
     }
     base.InitializeLogic();
 }
Exemple #22
0
        protected override void InitializeLogic()
        {
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightWalk_Character"));
            logicSet.AddAction(new MoveLogicAction(m_target, true));
            logicSet.AddAction(new DelayLogicAction(1f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightWalk_Character"));
            logicSet2.AddAction(new MoveLogicAction(m_target, false));
            logicSet2.AddAction(new DelayLogicAction(1f));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character"));
            logicSet3.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet3.AddAction(new DelayLogicAction(0.5f));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet4.AddAction(new DelayLogicAction(SlashDelay));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet4.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet4.Tag = 2;
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet5.AddAction(new DelayLogicAction(SlashTripleDelay));
            logicSet5.AddAction(new MoveDirectionLogicAction(TripleAttackSpeed));
            logicSet5.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0166666675f));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet5.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet5.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0833333358f));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet5.Tag = 2;
            var data = new ProjectileData(this)
            {
                SpriteName          = "EnemySpearKnightWave_Sprite",
                SourceAnchor        = new Vector2(60f, 0f),
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(0f, 0f),
                CollidesWithTerrain = true,
                Scale               = ProjectileScale
            };
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet6.AddAction(new DelayLogicAction(SlashDelay));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet6.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.Tag = 2;
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet7.AddAction(new DelayLogicAction(SlashTripleDelay));
            logicSet7.AddAction(new MoveDirectionLogicAction(TripleAttackSpeed));
            logicSet7.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.008333334f));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SwordKnight_Attack_v02"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet7.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0833333358f));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet7.Tag = 2;
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false));
            logicSet8.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet8.AddAction(new DelayLogicAction(SlashDelay));
            logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, data));
            logicSet8.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet8.Tag = 2;
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4, logicSet5);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4, logicSet7);
            m_generalCooldownLB.AddLogicSet(logicSet, logicSet2, logicSet3);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            switch (Difficulty)
            {
            case GameTypes.EnemyDifficulty.BASIC:
                SetCooldownLogicBlock(m_generalCooldownLB, 14, 11, 75);
                break;

            case GameTypes.EnemyDifficulty.ADVANCED:
            case GameTypes.EnemyDifficulty.EXPERT:
                SetCooldownLogicBlock(m_generalCooldownLB, 40, 30, 30);
                break;

            case GameTypes.EnemyDifficulty.MINIBOSS:
            {
                var arg_9C4_1 = m_generalCooldownLB;
                var array     = new int[3];
                array[0] = 100;
                SetCooldownLogicBlock(arg_9C4_1, array);
                break;
            }
            }
            base.InitializeLogic();
        }
Exemple #23
0
 public override void Dispose()
 {
     if (!base.IsDisposed)
     {
         this.m_damageShieldProjectiles.Clear();
         this.m_damageShieldProjectiles = null;
         this.m_delayObj.Dispose();
         this.m_delayObj = null;
         if (this.m_daggerProjData != null)
         {
             this.m_daggerProjData.Dispose();
             this.m_daggerProjData = null;
         }
         if (this.m_axeProjData != null)
         {
             this.m_axeProjData.Dispose();
             this.m_axeProjData = null;
         }
         base.Dispose();
     }
 }
Exemple #24
0
 private void CastCloseShield()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "SpellClose_Sprite",
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         DestroysWithEnemy = false,
         DestroysWithTerrain = false,
         CollidesWithTerrain = false,
         Scale = new Vector2(this.m_Spell_Close_Scale, this.m_Spell_Close_Scale),
         Damage = this.Damage,
         Lifespan = this.m_Spell_Close_Lifespan,
         LockPosition = true
     };
     projectileData.Damage = (int)((float)this.TotalMagicDamage * 1f);
     SoundManager.PlaySound("Cast_GiantSword");
     this.m_levelScreen.ImpactEffectPool.LastBossSpellCastEffect(this, 90f, true);
     ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileObj.TextureColor = Color.CadetBlue;
     projectileData.Dispose();
 }
Exemple #25
0
        protected override void InitializeLogic()
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "TurretProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = true,
                Scale               = ProjectileScale
            };
            var logicSet = new LogicSet(this);

            projectileData.Angle = new Vector2(0f, 0f);
            logicSet.AddAction(new RunFunctionLogicAction(this, "FireAnimation"));
            logicSet.AddAction(new DelayLogicAction(FireballDelay));
            logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Eyeball_ProjectileAttack"));
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(90f, 90f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(180f, 180f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character"));
            logicSet.AddAction(new DelayLogicAction(1f, 1f));
            logicSet.Tag = 2;
            var logicSet2 = new LogicSet(this);

            projectileData.Angle = new Vector2(45f, 45f);
            logicSet2.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet2.AddAction(new RunFunctionLogicAction(this, "FireAnimation"));
            logicSet2.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet2.AddAction(new DelayLogicAction(FireballDelay));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Eyeball_ProjectileAttack"));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-45f, -45f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(135f, 135f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-135f, -135f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(90f, 90f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(180f, 180f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(0f, 0f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character"));
            logicSet2.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet2.AddAction(new DelayLogicAction(1f, 1f));
            logicSet2.Tag = 2;
            var logicSet3 = new LogicSet(this);

            projectileData.Angle = new Vector2(45f, 45f);
            projectileData.CollidesWithTerrain = false;
            projectileData.SpriteName          = "GhostProjectile_Sprite";
            logicSet3.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet3.AddAction(new RunFunctionLogicAction(this, "FireAnimation"));
            logicSet3.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet3.AddAction(new DelayLogicAction(FireballDelay));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Eyeball_ProjectileAttack"));
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-45f, -45f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(135f, 135f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-135f, -135f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(90f, 90f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(180f, 180f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(0f, 0f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character"));
            logicSet3.AddAction(new DelayLogicAction(1f, 1f));
            logicSet3.AddAction(new RunFunctionLogicAction(this, "FireAnimation"));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Eyeball_ProjectileAttack"));
            projectileData.Angle = new Vector2(25f, 25f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-25f, -25f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(115f, 115f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-115f, -115f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-70f, -70f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(70f, 70f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(160f, 160f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-160f, -160f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character"));
            logicSet3.AddAction(new ChangePropertyLogicAction(_objectList[1], "Rotation", 45));
            logicSet3.AddAction(new DelayLogicAction(1.25f, 1.25f));
            logicSet3.Tag = 2;
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new DelayLogicAction(0.5f, 0.5f));
            m_generalBasicLB.AddLogicSet(logicSet, logicSet4);
            m_generalAdvancedLB.AddLogicSet(logicSet2, logicSet4);
            m_generalExpertLB.AddLogicSet(logicSet3, logicSet4);
            m_generalMiniBossLB.AddLogicSet(logicSet2, logicSet4);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #26
0
 public static ProjectileData GetProjData(byte spellType, PlayerObj player)
 {
     ProjectileData projectileData = new ProjectileData(player)
     {
         SpriteName = "BoneProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = null,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = 0,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = Vector2.One,
         ShowIcon = false
     };
     switch (spellType)
     {
     case 1:
         projectileData.SpriteName = "SpellDagger_Sprite";
         projectileData.Angle = Vector2.Zero;
         projectileData.SourceAnchor = new Vector2(50f, 0f);
         projectileData.Speed = new Vector2(1750f, 1750f);
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = true;
         projectileData.DestroysWithTerrain = true;
         projectileData.Scale = new Vector2(2.5f, 2.5f);
         break;
     case 2:
         projectileData.SpriteName = "SpellAxe_Sprite";
         projectileData.Angle = new Vector2(-74f, -74f);
         projectileData.Speed = new Vector2(1050f, 1050f);
         projectileData.SourceAnchor = new Vector2(50f, -50f);
         projectileData.IsWeighted = true;
         projectileData.RotationSpeed = 10f;
         projectileData.CollidesWithTerrain = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.Scale = new Vector2(3f, 3f);
         break;
     case 3:
         projectileData.SpriteName = "SpellTimeBomb_Sprite";
         projectileData.Angle = new Vector2(-35f, -35f);
         projectileData.Speed = new Vector2(500f, 500f);
         projectileData.SourceAnchor = new Vector2(50f, -50f);
         projectileData.IsWeighted = true;
         projectileData.RotationSpeed = 0f;
         projectileData.StartingRotation = 0f;
         projectileData.CollidesWithTerrain = true;
         projectileData.DestroysWithTerrain = false;
         projectileData.CollidesWith1Ways = true;
         projectileData.Scale = new Vector2(3f, 3f);
         break;
     case 4:
     case 6:
         break;
     case 5:
         projectileData.SpriteName = "SpellNuke_Sprite";
         projectileData.Angle = new Vector2(-65f, -65f);
         projectileData.Speed = new Vector2(500f, 500f);
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.ChaseTarget = false;
         projectileData.DestroysWithEnemy = true;
         projectileData.Scale = new Vector2(2f, 2f);
         break;
     case 7:
         projectileData.SourceAnchor = new Vector2(0f, 0f);
         projectileData.SpriteName = "SpellDisplacer_Sprite";
         projectileData.Angle = new Vector2(0f, 0f);
         projectileData.Speed = Vector2.Zero;
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = true;
         projectileData.DestroysWithTerrain = false;
         projectileData.CollidesWith1Ways = true;
         projectileData.Scale = new Vector2(2f, 2f);
         break;
     case 8:
         projectileData.SpriteName = "SpellBoomerang_Sprite";
         projectileData.Angle = new Vector2(0f, 0f);
         projectileData.SourceAnchor = new Vector2(50f, -10f);
         projectileData.Speed = new Vector2(790f, 790f);
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 25f;
         projectileData.CollidesWithTerrain = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.Scale = new Vector2(3f, 3f);
         break;
     case 9:
         projectileData.SpriteName = "SpellDualBlades_Sprite";
         projectileData.Angle = new Vector2(-55f, -55f);
         projectileData.SourceAnchor = new Vector2(50f, 30f);
         projectileData.Speed = new Vector2(1000f, 1000f);
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 30f;
         projectileData.CollidesWithTerrain = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.Scale = new Vector2(2f, 2f);
         break;
     case 10:
         projectileData.SpriteName = "SpellClose_Sprite";
         projectileData.SourceAnchor = new Vector2(120f, -60f);
         projectileData.Speed = new Vector2(0f, 0f);
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.DestroysWithEnemy = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.CollidesWithTerrain = false;
         projectileData.Scale = new Vector2(2.5f, 2.5f);
         projectileData.LockPosition = true;
         break;
     case 11:
         projectileData.SpriteName = "SpellDamageShield_Sprite";
         projectileData.Angle = new Vector2(-65f, -65f);
         projectileData.Speed = new Vector2(3.25f, 3.25f);
         projectileData.Target = player;
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = false;
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.Scale = new Vector2(3f, 3f);
         projectileData.DestroyOnRoomTransition = false;
         break;
     case 12:
         projectileData.SpriteName = "SpellBounce_Sprite";
         projectileData.Angle = new Vector2(-135f, -135f);
         projectileData.Speed = new Vector2(785f, 785f);
         projectileData.IsWeighted = false;
         projectileData.StartingRotation = -135f;
         projectileData.FollowArc = false;
         projectileData.RotationSpeed = 20f;
         projectileData.SourceAnchor = new Vector2(-10f, -10f);
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.CollidesWithTerrain = true;
         projectileData.Scale = new Vector2(3.25f, 3.25f);
         break;
     case 13:
         projectileData.SpriteName = "TurretProjectile_Sprite";
         projectileData.Angle = Vector2.Zero;
         projectileData.SourceAnchor = new Vector2(50f, 0f);
         projectileData.Speed = new Vector2(1100f, 1100f);
         projectileData.Lifespan = 0.35f;
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = true;
         projectileData.DestroysWithTerrain = true;
         projectileData.Scale = new Vector2(2.5f, 2.5f);
         break;
     case 14:
         projectileData.SpriteName = "LaserSpell_Sprite";
         projectileData.Angle = new Vector2(0f, 0f);
         projectileData.Speed = new Vector2(0f, 0f);
         projectileData.IsWeighted = false;
         projectileData.IsCollidable = false;
         projectileData.StartingRotation = 0f;
         projectileData.FollowArc = false;
         projectileData.RotationSpeed = 0f;
         projectileData.DestroysWithTerrain = false;
         projectileData.DestroysWithEnemy = false;
         projectileData.CollidesWithTerrain = false;
         projectileData.LockPosition = true;
         break;
     case 15:
         projectileData.SpriteName = "TurretProjectile_Sprite";
         projectileData.Angle = Vector2.Zero;
         projectileData.SourceAnchor = new Vector2(50f, 0f);
         projectileData.Speed = new Vector2(1750f, 1750f);
         projectileData.Lifespan = 0.75f;
         projectileData.IsWeighted = false;
         projectileData.RotationSpeed = 0f;
         projectileData.CollidesWithTerrain = true;
         projectileData.DestroysWithTerrain = true;
         projectileData.Scale = new Vector2(2.75f, 2.75f);
         break;
     default:
         if (spellType == 100)
         {
             projectileData.SpriteName = "LaserSpell_Sprite";
             projectileData.Angle = new Vector2(0f, 0f);
             projectileData.Speed = new Vector2(0f, 0f);
             projectileData.IsWeighted = false;
             projectileData.IsCollidable = false;
             projectileData.StartingRotation = 0f;
             projectileData.FollowArc = false;
             projectileData.RotationSpeed = 0f;
             projectileData.DestroysWithTerrain = false;
             projectileData.DestroysWithEnemy = false;
             projectileData.CollidesWithTerrain = false;
             projectileData.LockPosition = true;
         }
         break;
     }
     return projectileData;
 }
Exemple #27
0
 protected override void InitializeLogic()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "PlantProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = true,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = true,
         Scale = base.ProjectileScale
     };
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Squirm_01",
         "Enemy_Venus_Squirm_02",
         "Enemy_Venus_Squirm_03"
     }), Types.Sequence.Serial);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false), Types.Sequence.Serial);
     logicSet.AddAction(new PlayAnimationLogicAction(1, base.TotalFrames - 1, false), Types.Sequence.Serial);
     logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Attack_01"
     }), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-75f, -75f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-105f, -105f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet.AddAction(new PlayAnimationLogicAction(base.TotalFrames - 1, base.TotalFrames, false), Types.Sequence.Serial);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet.Tag = 2;
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false), Types.Sequence.Serial);
     logicSet2.AddAction(new PlayAnimationLogicAction(1, base.TotalFrames - 1, false), Types.Sequence.Serial);
     logicSet2.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Attack_01"
     }), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-60f, -60f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-75f, -75f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-105f, -105f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-120f, -120f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new PlayAnimationLogicAction(base.TotalFrames - 1, base.TotalFrames, false), Types.Sequence.Serial);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet2.Tag = 2;
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false), Types.Sequence.Serial);
     logicSet3.AddAction(new PlayAnimationLogicAction(1, base.TotalFrames - 1, false), Types.Sequence.Serial);
     logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Attack_01"
     }), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-45f, -45f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-60f, -60f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-85f, -85f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-95f, -95f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-75f, -75f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-105f, -105f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-120f, -120f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-135f, -135f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet3.AddAction(new PlayAnimationLogicAction(base.TotalFrames - 1, base.TotalFrames, false), Types.Sequence.Serial);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.Tag = 2;
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction(1, base.TotalFrames - 1, false), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Attack_01"
     }), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-60f, -60f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-87f, -87f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-93f, -93f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-75f, -75f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-105f, -105f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-120f, -120f);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction(base.TotalFrames - 1, base.TotalFrames, false), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(0.25f, false), Types.Sequence.Serial);
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Squirm_01",
         "Enemy_Venus_Squirm_02",
         "Enemy_Venus_Squirm_03",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.25f, 0.45f, false), Types.Sequence.Serial);
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Squirm_01",
         "Enemy_Venus_Squirm_02",
         "Enemy_Venus_Squirm_03",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.25f, 0.45f, false), Types.Sequence.Serial);
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Enemy_Venus_Squirm_01",
         "Enemy_Venus_Squirm_02",
         "Enemy_Venus_Squirm_03",
         "Blank",
         "Blank",
         "Blank"
     }), Types.Sequence.Serial);
     logicSet8.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character", true, true), Types.Sequence.Serial);
     logicSet8.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(0.25f, 0.45f, false), Types.Sequence.Serial);
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet2
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet3
     });
     this.m_generalMiniBossLB.AddLogicSet(new LogicSet[]
     {
         logicSet4
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet5
     });
     this.m_generalCooldownExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet6,
         logicSet7,
         logicSet8
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalMiniBossLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownExpertLB);
     base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
     {
         100
     });
     if (base.Difficulty == GameTypes.EnemyDifficulty.MINIBOSS)
     {
         LogicBlock arg_AA5_1 = this.m_generalCooldownExpertLB;
         int[] array = new int[3];
         array[0] = 50;
         array[1] = 50;
         base.SetCooldownLogicBlock(arg_AA5_1, array);
     }
     projectileData.Dispose();
     base.InitializeLogic();
 }
Exemple #28
0
        protected override void InitializeLogic()
        {
            var arg_06_0 = Rotation;
            var num      = ParseTagToFloat("delay");
            var num2     = ParseTagToFloat("speed");

            if (num == 0f)
            {
                Console.WriteLine("ERROR: Turret set with delay of 0. Shoots too fast.");
                num = FireDelay;
            }
            if (num2 == 0f)
            {
                num2 = ProjectileSpeed;
            }
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "HomingProjectile_Sprite",
                SourceAnchor        = new Vector2(35f, 0f),
                Speed               = new Vector2(num2, num2),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = true,
                Scale               = ProjectileScale,
                FollowArc           = false,
                ChaseTarget         = false,
                TurnSpeed           = 0f,
                StartingRotation    = 0f,
                Lifespan            = 10f
            };
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new DelayLogicAction(0.5f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new PlayAnimationLogicAction(false), Types.Sequence.Parallel);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new RunFunctionLogicAction(this, "FireProjectileEffect"));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                           "Turret_Attack03"));
            logicSet2.AddAction(new DelayLogicAction(num));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new PlayAnimationLogicAction(false), Types.Sequence.Parallel);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                           "Turret_Attack03"));
            logicSet3.AddAction(new DelayLogicAction(0.1f));
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                           "Turret_Attack03"));
            logicSet3.AddAction(new DelayLogicAction(0.1f));
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                           "Turret_Attack03"));
            logicSet3.AddAction(new RunFunctionLogicAction(this, "FireProjectileEffect"));
            logicSet3.AddAction(new DelayLogicAction(num));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new PlayAnimationLogicAction(false), Types.Sequence.Parallel);
            projectileData.ChaseTarget = true;
            projectileData.Target      = m_target;
            projectileData.TurnSpeed   = 0.02f;
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "Turret_Attack01", "Turret_Attack02",
                                                           "Turret_Attack03"));
            logicSet4.AddAction(new RunFunctionLogicAction(this, "FireProjectileEffect"));
            logicSet4.AddAction(new DelayLogicAction(num));
            m_generalBasicLB.AddLogicSet(logicSet2, logicSet);
            m_generalAdvancedLB.AddLogicSet(logicSet3, logicSet);
            m_generalExpertLB.AddLogicSet(logicSet4, logicSet);
            m_generalMiniBossLB.AddLogicSet(logicSet2, logicSet);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #29
0
 private void ThrowTwoProjectiles(LogicSet ls)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EnemySpearKnightWave_Sprite",
         SourceAnchor = new Vector2(30f, 0f),
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(22f, 22f)
     };
     ls.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-22f, -22f);
     ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     ls.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     projectileData.Dispose();
 }
Exemple #30
0
        protected override void InitializeLogic()
        {
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherIdle_Character"));
            logicSet.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet.AddAction(new DelayLogicAction(0.2f, 0.75f));
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "ArrowProjectile_Sprite",
                SourceAnchor        = new Vector2(10f, -20f),
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = true,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = true,
                Scale               = ProjectileScale,
                FollowArc           = true
            };
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-20f, -20f);
            logicSet2.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet2.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet2.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet2.AddAction(new DelayLogicAction(m_fireDelay));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet2.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet2.AddAction(new DelayLogicAction(0.5f));
            logicSet2.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet2.AddAction(new DelayLogicAction(0.5f));
            logicSet2.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-20f, -20f);
            logicSet3.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet3.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet3.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet3.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-20f, -20f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-50f, -50f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet3.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet3.AddAction(new DelayLogicAction(0.5f));
            logicSet3.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet3.AddAction(new DelayLogicAction(0.5f));
            logicSet3.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-35f, -35f);
            logicSet4.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet4.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet4.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-35f, -35f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-15f, -15f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-55f, -55f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet4.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet4.AddAction(new DelayLogicAction(0.5f));
            logicSet4.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet4.AddAction(new DelayLogicAction(0.5f));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-50f, -50f);
            logicSet5.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet5.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-50f, -50f);
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet5.AddAction(new DelayLogicAction(0.5f));
            logicSet5.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet5.AddAction(new DelayLogicAction(0.5f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-50f, -50f);
            logicSet6.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet6.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-50f, -50f);
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet6.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet6.AddAction(new DelayLogicAction(0.5f));
            logicSet6.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet6.AddAction(new DelayLogicAction(0.5f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-60f, -60f);
            logicSet7.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet7.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-60f, -60f);
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-45f, -45f);
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet7.AddAction(new DelayLogicAction(0.5f));
            logicSet7.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet7.AddAction(new DelayLogicAction(0.5f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-70f, -70f);
            logicSet8.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet8.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet8.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet8.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-70f, -70f);
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet8.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet8.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet8.AddAction(new DelayLogicAction(0.5f));
            logicSet8.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet8.AddAction(new DelayLogicAction(0.5f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet9 = new LogicSet(this);

            logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-55f, -55f);
            logicSet9.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet9.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet9.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet9.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-55f, -55f);
            logicSet9.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-85f, -85f);
            logicSet9.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet9.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                           "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet9.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet9.AddAction(new DelayLogicAction(0.5f));
            logicSet9.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet9.AddAction(new DelayLogicAction(0.5f));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(false));
            var logicSet10 = new LogicSet(this);

            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySkeletonArcherAttack_Character", false, false));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet10.AddAction(new RunFunctionLogicAction(this, "AngleArcher", projectileData.Angle.X));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet10.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Load"));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "BeginAttack"));
            logicSet10.AddAction(new DelayLogicAction(m_fireDelay));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet10.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-85f, -85f);
            logicSet10.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-95f, -95f);
            logicSet10.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet10.AddAction(new Play3DSoundLogicAction(this, m_target, "SkeletonArcher_Attack_01",
                                                            "SkeletonArcher_Attack_02", "SkeletonArcher_Attack_03"));
            logicSet10.AddAction(new PlayAnimationLogicAction("Attack", "EndAttack"));
            logicSet10.AddAction(new DelayLogicAction(0.5f));
            logicSet10.AddAction(new ChangePropertyLogicAction(GetChildAt(1), "Rotation", 0));
            logicSet10.AddAction(new DelayLogicAction(0.5f));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(false));
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet8, logicSet5);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet3, logicSet9, logicSet6);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet4, logicSet10, logicSet7);
            projectileData.Dispose();
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            _objectList[1].TextureColor = TintablePart.TextureColor;
            base.InitializeLogic();
        }
Exemple #31
0
 private void ThrowRapidProjectiles(LogicSet ls)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EnemySpearKnightWave_Sprite",
         SourceAnchor = new Vector2(130f, -28f),
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = Vector2.Zero
     };
     ls.AddAction(new DelayLogicAction(0.2f, 0.35f, false), Types.Sequence.Serial);
     ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     ls.AddAction(new DelayLogicAction(0.2f, 0.35f, false), Types.Sequence.Serial);
     projectileData.SourceAnchor = new Vector2(130f, 28f);
     ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Dispose();
 }
 public void CastFireball()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "WizardFireballProjectile_Sprite",
         SourceAnchor = this.m_spellOffset,
         Target = this.m_target,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = this.MiniBossFireballSize
     };
     if (base.Difficulty == GameTypes.EnemyDifficulty.ADVANCED)
     {
         projectileData.AngleOffset = (float)CDGMath.RandomInt(-25, 25);
     }
     if (base.Difficulty == GameTypes.EnemyDifficulty.EXPERT)
     {
         projectileData.SpriteName = "GhostBossProjectile_Sprite";
     }
     SoundManager.Play3DSound(this, this.m_target, new string[]
     {
         "FireWizard_Attack_01",
         "FireWizard_Attack_02",
         "FireWizard_Attack_03",
         "FireWizard_Attack_04"
     });
     ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileObj.Rotation = 0f;
     Tween.RunFunction(0.15f, this, "ChangeFireballState", new object[]
     {
         projectileObj
     });
 }
 public void ShatterIceball(int numIceballs)
 {
     SoundManager.Play3DSound(this, this.m_target, "Ice_Wizard_Attack_Glass");
     if (this.m_iceballSummon.SpriteName == "WizardIceSpell_Sprite")
     {
         this.m_iceballSummon.PlayAnimation("Grown", "End", false);
     }
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "WizardIceProjectile_Sprite",
         SourceAnchor = this.m_spellOffset,
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = this.MiniBossIceSize
     };
     float num = 0f;
     float num2 = (float)(360 / numIceballs);
     for (int i = 0; i < numIceballs; i++)
     {
         projectileData.Angle = new Vector2(num, num);
         ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         Tween.RunFunction(0.15f, this, "ChangeIceballState", new object[]
         {
             projectileObj
         });
         num += num2;
     }
     projectileData.Dispose();
 }
Exemple #34
0
 public void CastSwordsRandom()
 {
     Vector2 vector = new Vector2((float)this.m_levelScreen.CurrentRoom.Bounds.Center.X, base.Y);
     base.UpdateCollisionBoxes();
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "LastBossSwordVerticalProjectile_Sprite",
         Target = null,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         StartingRotation = 0f,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         DestroysWithEnemy = false,
         LockPosition = true
     };
     int megaUpwardSwordProjectileSpeed = this.MegaUpwardSwordProjectileSpeed;
     int num = 0;
     int num2 = 0;
     float num3 = 1f;
     for (int i = 0; i < this.MegaUpwardSwordProjectileAmount; i++)
     {
         ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileObj.Scale = new Vector2(1.5f, 1.5f);
         projectileObj.X = vector.X + 50f + (float)num;
         projectileObj.Y = vector.Y + ((float)this.Bounds.Bottom - base.Y) + 120f;
         projectileObj.Opacity = 0f;
         Tween.To(projectileObj, 0.25f, new Easing(Tween.EaseNone), new string[]
         {
             "Opacity",
             "1"
         });
         Tween.By(projectileObj, 2.5f, new Easing(Quad.EaseIn), new string[]
         {
             "delay",
             num3.ToString(),
             "Y",
             (-megaUpwardSwordProjectileSpeed).ToString()
         });
         Tween.AddEndHandlerToLastTween(projectileObj, "KillProjectile", new object[0]);
         num = CDGMath.RandomInt(50, 1000);
         ProjectileObj projectileObj2 = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileObj2.Scale = new Vector2(2f, 2f);
         projectileObj2.X = vector.X - 50f + (float)num2;
         projectileObj2.Y = vector.Y + ((float)this.Bounds.Bottom - base.Y) + 120f;
         projectileObj2.Opacity = 0f;
         Tween.To(projectileObj2, 0.25f, new Easing(Tween.EaseNone), new string[]
         {
             "Opacity",
             "1"
         });
         Tween.By(projectileObj2, 2.5f, new Easing(Quad.EaseIn), new string[]
         {
             "delay",
             num3.ToString(),
             "Y",
             (-megaUpwardSwordProjectileSpeed).ToString()
         });
         Tween.AddEndHandlerToLastTween(projectileObj, "KillProjectile", new object[0]);
         num2 = -CDGMath.RandomInt(50, 1000);
         num3 += 0.25f;
     }
     projectileData.Dispose();
 }
Exemple #35
0
 protected override void InitializeLogic()
 {
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyNinjaRun_Character", true, true), Types.Sequence.Serial);
     logicSet.AddAction(new PlayAnimationLogicAction(true), Types.Sequence.Serial);
     logicSet.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(0.25f, 0.85f, false), Types.Sequence.Serial);
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyNinjaRun_Character", true, true), Types.Sequence.Serial);
     logicSet2.AddAction(new PlayAnimationLogicAction(true), Types.Sequence.Serial);
     logicSet2.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.25f, 0.85f, false), Types.Sequence.Serial);
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new StopAnimationLogicAction(), Types.Sequence.Serial);
     logicSet3.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(0.25f, 0.85f, false), Types.Sequence.Serial);
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "ShurikenProjectile1_Sprite",
         SourceAnchor = new Vector2(15f, 0f),
         Target = this.m_target,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 20f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = true,
         Scale = base.ProjectileScale
     };
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.PauseBeforeProjectile, false), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction(1, 3, false), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Ninja_ThrowStar_01",
         "Ninja_ThrowStar_02",
         "Ninja_ThrowStar_03"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction(4, 5, false), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.PauseAfterProjectile, false), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.PauseBeforeProjectile, false), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction(1, 3, false), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Ninja_ThrowStar_01",
         "Ninja_ThrowStar_02",
         "Ninja_ThrowStar_03"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = -10f;
     logicSet5.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = 10f;
     logicSet5.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction(4, 5, false), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.PauseAfterProjectile, false), Types.Sequence.Serial);
     logicSet5.Tag = 2;
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.PauseBeforeProjectile, false), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction(1, 3, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Ninja_ThrowStar_01",
         "Ninja_ThrowStar_02",
         "Ninja_ThrowStar_03"
     }), Types.Sequence.Serial);
     projectileData.AngleOffset = 0f;
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = -5f;
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = 5f;
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = -25f;
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = 25f;
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction(4, 5, false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.PauseAfterProjectile, false), Types.Sequence.Serial);
     logicSet6.Tag = 2;
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "CreateLog", null), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(this.TeleportDelay, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "CreateSmoke", null), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangePropertyLogicAction(this, "IsWeighted", true), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet7.Tag = 2;
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet8.AddAction(new RunFunctionLogicAction(this, "CreateLog", null), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(this.TeleportDelay, false), Types.Sequence.Serial);
     logicSet8.AddAction(new RunFunctionLogicAction(this, "CreateSmoke", null), Types.Sequence.Serial);
     projectileData.Target = null;
     logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Ninja_ThrowStar_01",
         "Ninja_ThrowStar_02",
         "Ninja_ThrowStar_03"
     }), Types.Sequence.Serial);
     projectileData.AngleOffset = 45f;
     logicSet8.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = 135f;
     logicSet8.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = -45f;
     logicSet8.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.AngleOffset = -135f;
     logicSet8.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet8.AddAction(new ChangePropertyLogicAction(this, "IsWeighted", true), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet8.AddAction(new GroundCheckLogicAction(), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet8.Tag = 2;
     this.m_basicTeleportAttackLB.AddLogicSet(new LogicSet[]
     {
         logicSet7
     });
     this.m_expertTeleportAttackLB.AddLogicSet(new LogicSet[]
     {
         logicSet8
     });
     this.logicBlocksToDispose.Add(this.m_basicTeleportAttackLB);
     this.logicBlocksToDispose.Add(this.m_expertTeleportAttackLB);
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet5
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet6
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     LogicBlock arg_906_1 = this.m_generalCooldownLB;
     int[] array = new int[3];
     array[0] = 50;
     array[1] = 50;
     base.SetCooldownLogicBlock(arg_906_1, array);
     projectileData.Dispose();
     base.InitializeLogic();
 }
Exemple #36
0
 protected override void InitializeLogic()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "TurretProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = true,
         Scale = base.ProjectileScale
     };
     LogicSet logicSet = new LogicSet(this);
     projectileData.Angle = new Vector2(0f, 0f);
     logicSet.AddAction(new RunFunctionLogicAction(this, "FireAnimation", new object[0]), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Eyeball_ProjectileAttack"
     }), Types.Sequence.Serial);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(90f, 90f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(180f, 180f);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character", true, true), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(1f, 1f, false), Types.Sequence.Serial);
     logicSet.Tag = 2;
     LogicSet logicSet2 = new LogicSet(this);
     projectileData.Angle = new Vector2(45f, 45f);
     logicSet2.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet2.AddAction(new RunFunctionLogicAction(this, "FireAnimation", new object[0]), Types.Sequence.Serial);
     logicSet2.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet2.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Eyeball_ProjectileAttack"
     }), Types.Sequence.Serial);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-45f, -45f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(135f, 135f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-135f, -135f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(90f, 90f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(180f, 180f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(0f, 0f);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character", true, true), Types.Sequence.Serial);
     logicSet2.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(1f, 1f, false), Types.Sequence.Serial);
     logicSet2.Tag = 2;
     LogicSet logicSet3 = new LogicSet(this);
     projectileData.Angle = new Vector2(45f, 45f);
     projectileData.CollidesWithTerrain = false;
     projectileData.SpriteName = "GhostProjectile_Sprite";
     logicSet3.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet3.AddAction(new RunFunctionLogicAction(this, "FireAnimation", new object[0]), Types.Sequence.Serial);
     logicSet3.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Eyeball_ProjectileAttack"
     }), Types.Sequence.Serial);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-45f, -45f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(135f, 135f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-135f, -135f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-90f, -90f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(90f, 90f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(180f, 180f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(0f, 0f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(1f, 1f, false), Types.Sequence.Serial);
     logicSet3.AddAction(new RunFunctionLogicAction(this, "FireAnimation", new object[0]), Types.Sequence.Serial);
     logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "Eyeball_ProjectileAttack"
     }), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(25f, 25f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-25f, -25f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(115f, 115f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-115f, -115f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-70f, -70f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(70f, 70f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(160f, 160f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     projectileData.Angle = new Vector2(-160f, -160f);
     logicSet3.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyStarburstIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new ChangePropertyLogicAction(this._objectList[1], "Rotation", 45), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(1.25f, 1.25f, false), Types.Sequence.Serial);
     logicSet3.Tag = 2;
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new DelayLogicAction(0.5f, 0.5f, false), Types.Sequence.Serial);
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet4
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet2,
         logicSet4
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet3,
         logicSet4
     });
     this.m_generalMiniBossLB.AddLogicSet(new LogicSet[]
     {
         logicSet2,
         logicSet4
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalMiniBossLB);
     projectileData.Dispose();
     base.InitializeLogic();
 }
Exemple #37
0
 public void ThrowCardinalProjectilesNeo(int startProjIndex, bool randomizeFlipper, int flipper)
 {
     if (startProjIndex < 13)
     {
         ProjectileData projectileData = new ProjectileData(this)
         {
             SpriteName = "EyeballProjectile_Sprite",
             SourceAnchor = Vector2.Zero,
             Target = null,
             Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
             IsWeighted = false,
             RotationSpeed = 0f,
             Damage = base.Damage,
             AngleOffset = 0f,
             Scale = base.ProjectileScale,
             CollidesWithTerrain = false,
             Angle = new Vector2(0f, 0f)
         };
         if (randomizeFlipper)
         {
             flipper = CDGMath.RandomPlusMinus();
         }
         projectileData.AngleOffset = (float)(-10 + startProjIndex * 17 * flipper);
         this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileData.AngleOffset = (float)(80 + startProjIndex * 17 * flipper);
         this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileData.AngleOffset = (float)(170 + startProjIndex * 17 * flipper);
         this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileData.AngleOffset = (float)(260 + startProjIndex * 17 * flipper);
         this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileData.Dispose();
         startProjIndex++;
         Tween.RunFunction(0.12f, this, "ThrowCardinalProjectilesNeo", new object[]
         {
             startProjIndex,
             false,
             flipper
         });
     }
 }
 protected override void InitializeLogic()
 {
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightWalk_Character", true, true), Types.Sequence.Serial);
     logicSet.AddAction(new MoveLogicAction(this.m_target, true, -1f), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(1f, false), Types.Sequence.Serial);
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightWalk_Character", true, true), Types.Sequence.Serial);
     logicSet2.AddAction(new MoveLogicAction(this.m_target, false, -1f), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(1f, false), Types.Sequence.Serial);
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(0.5f, false), Types.Sequence.Serial);
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.SlashDelay, false), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.SlashTripleDelay, false), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveDirectionLogicAction(this.TripleAttackSpeed), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0166666675f), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet5.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0833333358f), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet5.Tag = 2;
     ProjectileData data = new ProjectileData(this)
     {
         SpriteName = "EnemySpearKnightWave_Sprite",
         SourceAnchor = new Vector2(60f, 0f),
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(0f, 0f),
         CollidesWithTerrain = true,
         Scale = base.ProjectileScale
     };
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.SlashDelay, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet6.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet6.Tag = 2;
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(this.SlashTripleDelay, false), Types.Sequence.Serial);
     logicSet7.AddAction(new MoveDirectionLogicAction(this.TripleAttackSpeed), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.008333334f), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SwordKnight_Attack_v02"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet7.AddAction(new MoveLogicAction(null, true, 0f), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0833333358f), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false), Types.Sequence.Serial);
     logicSet7.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet7.Tag = 2;
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new MoveLogicAction(this.m_target, true, 0f), Types.Sequence.Serial);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(true, 0), Types.Sequence.Serial);
     logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightAttack_Character", false, false), Types.Sequence.Serial);
     logicSet8.AddAction(new PlayAnimationLogicAction("Start", "Windup", false), Types.Sequence.Serial);
     logicSet8.AddAction(new DelayLogicAction(this.SlashDelay, false), Types.Sequence.Serial);
     logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, new string[]
     {
         "SpearKnightAttack1"
     }), Types.Sequence.Serial);
     logicSet8.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, data), Types.Sequence.Serial);
     logicSet8.AddAction(new PlayAnimationLogicAction("Attack", "End", false), Types.Sequence.Serial);
     logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySwordKnightIdle_Character", false, false), Types.Sequence.Serial);
     logicSet8.AddAction(new LockFaceDirectionLogicAction(false, 0), Types.Sequence.Serial);
     logicSet8.Tag = 2;
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4,
         logicSet5
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3,
         logicSet4,
         logicSet7
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet2,
         logicSet3
     });
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     switch (base.Difficulty)
     {
     case GameTypes.EnemyDifficulty.BASIC:
         base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
         {
             14,
             11,
             75
         });
         break;
     case GameTypes.EnemyDifficulty.ADVANCED:
     case GameTypes.EnemyDifficulty.EXPERT:
         base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
         {
             40,
             30,
             30
         });
         break;
     case GameTypes.EnemyDifficulty.MINIBOSS:
     {
         LogicBlock arg_9C4_1 = this.m_generalCooldownLB;
         int[] array = new int[3];
         array[0] = 100;
         base.SetCooldownLogicBlock(arg_9C4_1, array);
         break;
     }
     }
     base.InitializeLogic();
 }
Exemple #39
0
 public void ThrowSprayProjectiles(bool firstShot)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EyeballProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(0f, 0f),
         CollidesWithTerrain = false,
         Scale = base.ProjectileScale
     };
     int num = 30;
     for (int i = 0; i <= 360; i += num)
     {
         if (firstShot)
         {
             projectileData.AngleOffset = (float)(10 + i);
         }
         else
         {
             projectileData.AngleOffset = (float)(20 + i);
         }
         this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     }
     if (firstShot)
     {
         Tween.RunFunction(0.8f, this, "ThrowSprayProjectiles", new object[]
         {
             false
         });
     }
     projectileData.Dispose();
 }
 public void SummonFireball()
 {
     this.ResetFireball();
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "WizardFireballProjectile_Sprite",
         SourceAnchor = this.m_spellOffset,
         Target = this.m_target,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = this.MiniBossFireballSize
     };
     if (base.Difficulty == GameTypes.EnemyDifficulty.EXPERT)
     {
         projectileData.SpriteName = "GhostBossProjectile_Sprite";
     }
     SoundManager.Play3DSound(this, this.m_target, "Fire_Wizard_Form");
     this.m_fireballSummon = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     this.m_fireballSummon.Opacity = 0f;
     this.m_fireballSummon.Scale = Vector2.Zero;
     this.m_fireballSummon.AnimationDelay = 0.1f;
     this.m_fireballSummon.PlayAnimation(true);
     this.m_fireballSummon.Rotation = 0f;
     Tween.To(this.m_fireballSummon, 0.5f, new Easing(Back.EaseOut), new string[]
     {
         "Opacity",
         "1",
         "ScaleX",
         this.MiniBossFireballSize.X.ToString(),
         "ScaleY",
         this.MiniBossFireballSize.Y.ToString()
     });
     projectileData.Dispose();
 }
Exemple #41
0
        public static ProjectileData GetProjData(byte spellType, PlayerObj player)
        {
            var projectileData = new ProjectileData(player)
            {
                SpriteName          = "BoneProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(0f, 0f),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = 0,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = Vector2.One,
                ShowIcon            = false
            };

            switch (spellType)
            {
            case 1:
                projectileData.SpriteName          = "SpellDagger_Sprite";
                projectileData.Angle               = Vector2.Zero;
                projectileData.SourceAnchor        = new Vector2(50f, 0f);
                projectileData.Speed               = new Vector2(1750f, 1750f);
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.CollidesWithTerrain = true;
                projectileData.DestroysWithTerrain = true;
                projectileData.Scale               = new Vector2(2.5f, 2.5f);
                break;

            case 2:
                projectileData.SpriteName          = "SpellAxe_Sprite";
                projectileData.Angle               = new Vector2(-74f, -74f);
                projectileData.Speed               = new Vector2(1050f, 1050f);
                projectileData.SourceAnchor        = new Vector2(50f, -50f);
                projectileData.IsWeighted          = true;
                projectileData.RotationSpeed       = 10f;
                projectileData.CollidesWithTerrain = false;
                projectileData.DestroysWithTerrain = false;
                projectileData.DestroysWithEnemy   = false;
                projectileData.Scale               = new Vector2(3f, 3f);
                break;

            case 3:
                projectileData.SpriteName          = "SpellTimeBomb_Sprite";
                projectileData.Angle               = new Vector2(-35f, -35f);
                projectileData.Speed               = new Vector2(500f, 500f);
                projectileData.SourceAnchor        = new Vector2(50f, -50f);
                projectileData.IsWeighted          = true;
                projectileData.RotationSpeed       = 0f;
                projectileData.StartingRotation    = 0f;
                projectileData.CollidesWithTerrain = true;
                projectileData.DestroysWithTerrain = false;
                projectileData.CollidesWith1Ways   = true;
                projectileData.Scale               = new Vector2(3f, 3f);
                break;

            case 4:
            case 6:
                break;

            case 5:
                projectileData.SpriteName          = "SpellNuke_Sprite";
                projectileData.Angle               = new Vector2(-65f, -65f);
                projectileData.Speed               = new Vector2(500f, 500f);
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.CollidesWithTerrain = false;
                projectileData.DestroysWithTerrain = false;
                projectileData.ChaseTarget         = false;
                projectileData.DestroysWithEnemy   = true;
                projectileData.Scale               = new Vector2(2f, 2f);
                break;

            case 7:
                projectileData.SourceAnchor        = new Vector2(0f, 0f);
                projectileData.SpriteName          = "SpellDisplacer_Sprite";
                projectileData.Angle               = new Vector2(0f, 0f);
                projectileData.Speed               = Vector2.Zero;
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.CollidesWithTerrain = true;
                projectileData.DestroysWithTerrain = false;
                projectileData.CollidesWith1Ways   = true;
                projectileData.Scale               = new Vector2(2f, 2f);
                break;

            case 8:
                projectileData.SpriteName          = "SpellBoomerang_Sprite";
                projectileData.Angle               = new Vector2(0f, 0f);
                projectileData.SourceAnchor        = new Vector2(50f, -10f);
                projectileData.Speed               = new Vector2(790f, 790f);
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 25f;
                projectileData.CollidesWithTerrain = false;
                projectileData.DestroysWithTerrain = false;
                projectileData.DestroysWithEnemy   = false;
                projectileData.Scale               = new Vector2(3f, 3f);
                break;

            case 9:
                projectileData.SpriteName          = "SpellDualBlades_Sprite";
                projectileData.Angle               = new Vector2(-55f, -55f);
                projectileData.SourceAnchor        = new Vector2(50f, 30f);
                projectileData.Speed               = new Vector2(1000f, 1000f);
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 30f;
                projectileData.CollidesWithTerrain = false;
                projectileData.DestroysWithTerrain = false;
                projectileData.DestroysWithEnemy   = false;
                projectileData.Scale               = new Vector2(2f, 2f);
                break;

            case 10:
                projectileData.SpriteName          = "SpellClose_Sprite";
                projectileData.SourceAnchor        = new Vector2(120f, -60f);
                projectileData.Speed               = new Vector2(0f, 0f);
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.DestroysWithEnemy   = false;
                projectileData.DestroysWithTerrain = false;
                projectileData.CollidesWithTerrain = false;
                projectileData.Scale               = new Vector2(2.5f, 2.5f);
                projectileData.LockPosition        = true;
                break;

            case 11:
                projectileData.SpriteName              = "SpellDamageShield_Sprite";
                projectileData.Angle                   = new Vector2(-65f, -65f);
                projectileData.Speed                   = new Vector2(3.25f, 3.25f);
                projectileData.Target                  = player;
                projectileData.IsWeighted              = false;
                projectileData.RotationSpeed           = 0f;
                projectileData.CollidesWithTerrain     = false;
                projectileData.DestroysWithTerrain     = false;
                projectileData.DestroysWithEnemy       = false;
                projectileData.Scale                   = new Vector2(3f, 3f);
                projectileData.DestroyOnRoomTransition = false;
                break;

            case 12:
                projectileData.SpriteName          = "SpellBounce_Sprite";
                projectileData.Angle               = new Vector2(-135f, -135f);
                projectileData.Speed               = new Vector2(785f, 785f);
                projectileData.IsWeighted          = false;
                projectileData.StartingRotation    = -135f;
                projectileData.FollowArc           = false;
                projectileData.RotationSpeed       = 20f;
                projectileData.SourceAnchor        = new Vector2(-10f, -10f);
                projectileData.DestroysWithTerrain = false;
                projectileData.DestroysWithEnemy   = false;
                projectileData.CollidesWithTerrain = true;
                projectileData.Scale               = new Vector2(3.25f, 3.25f);
                break;

            case 13:
                projectileData.SpriteName          = "TurretProjectile_Sprite";
                projectileData.Angle               = Vector2.Zero;
                projectileData.SourceAnchor        = new Vector2(50f, 0f);
                projectileData.Speed               = new Vector2(1100f, 1100f);
                projectileData.Lifespan            = 0.35f;
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.CollidesWithTerrain = true;
                projectileData.DestroysWithTerrain = true;
                projectileData.Scale               = new Vector2(2.5f, 2.5f);
                break;

            case 14:
                projectileData.SpriteName          = "LaserSpell_Sprite";
                projectileData.Angle               = new Vector2(0f, 0f);
                projectileData.Speed               = new Vector2(0f, 0f);
                projectileData.IsWeighted          = false;
                projectileData.IsCollidable        = false;
                projectileData.StartingRotation    = 0f;
                projectileData.FollowArc           = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.DestroysWithTerrain = false;
                projectileData.DestroysWithEnemy   = false;
                projectileData.CollidesWithTerrain = false;
                projectileData.LockPosition        = true;
                break;

            case 15:
                projectileData.SpriteName          = "TurretProjectile_Sprite";
                projectileData.Angle               = Vector2.Zero;
                projectileData.SourceAnchor        = new Vector2(50f, 0f);
                projectileData.Speed               = new Vector2(1750f, 1750f);
                projectileData.Lifespan            = 0.75f;
                projectileData.IsWeighted          = false;
                projectileData.RotationSpeed       = 0f;
                projectileData.CollidesWithTerrain = true;
                projectileData.DestroysWithTerrain = true;
                projectileData.Scale               = new Vector2(2.75f, 2.75f);
                break;

            default:
                if (spellType == 100)
                {
                    projectileData.SpriteName          = "LaserSpell_Sprite";
                    projectileData.Angle               = new Vector2(0f, 0f);
                    projectileData.Speed               = new Vector2(0f, 0f);
                    projectileData.IsWeighted          = false;
                    projectileData.IsCollidable        = false;
                    projectileData.StartingRotation    = 0f;
                    projectileData.FollowArc           = false;
                    projectileData.RotationSpeed       = 0f;
                    projectileData.DestroysWithTerrain = false;
                    projectileData.DestroysWithEnemy   = false;
                    projectileData.CollidesWithTerrain = false;
                    projectileData.LockPosition        = true;
                }
                break;
            }
            return(projectileData);
        }
Exemple #42
0
 private void ThrowThreeProjectiles(LogicSet ls)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EyeballProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = this.m_target,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = base.ProjectileScale,
         Angle = new Vector2(0f, 0f)
     };
     for (int i = 0; i <= 3; i++)
     {
         projectileData.AngleOffset = 0f;
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         projectileData.AngleOffset = 45f;
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         projectileData.AngleOffset = -45f;
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         ls.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     }
     projectileData.Dispose();
 }
 public void SummonIceball()
 {
     this.ResetIceball();
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "WizardIceSpell_Sprite",
         SourceAnchor = this.m_spellOffset,
         Target = null,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = this.MiniBossIceSize
     };
     SoundManager.Play3DSound(this, this.m_target, "Ice_Wizard_Form");
     this.m_iceballSummon = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     this.m_iceballSummon.PlayAnimation("Start", "Grown", false);
     projectileData.Dispose();
 }
Exemple #44
0
 public void ThrowRandomProjectiles()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EyeballProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(0f, 0f),
         CollidesWithTerrain = false,
         Scale = base.ProjectileScale
     };
     projectileData.Angle = new Vector2(0f, 44f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(45f, 89f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(90f, 134f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(135f, 179f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(180f, 224f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(225f, 269f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(270f, 314f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Angle = new Vector2(315f, 359f);
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     projectileData.Dispose();
 }
Exemple #45
0
 private void ThrowCardinalProjectiles(LogicSet ls)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EyeballProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = null,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Scale = base.ProjectileScale,
         CollidesWithTerrain = false,
         Angle = new Vector2(0f, 0f)
     };
     int num = CDGMath.RandomPlusMinus();
     for (int i = 0; i <= 170; i += 10)
     {
         projectileData.AngleOffset = (float)(i * num);
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         projectileData.AngleOffset = (float)(90 + i * num);
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         projectileData.AngleOffset = (float)(180 + i * num);
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         projectileData.AngleOffset = (float)(270 + i * num);
         ls.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
         ls.AddAction(new DelayLogicAction(0.175f, false), Types.Sequence.Serial);
     }
     projectileData.Dispose();
 }
Exemple #46
0
 protected override void InitializeLogic()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "EyeballProjectile_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = this.m_target,
         Speed = new Vector2(this.ProjectileSpeed, this.ProjectileSpeed),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = base.ProjectileScale
     };
     LogicSet logicSet = new LogicSet(this);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character", true, true), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "Eyeball_ProjectileAttack"
     }), Types.Sequence.Serial);
     logicSet.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false), Types.Sequence.Serial);
     logicSet.AddAction(new DelayLogicAction(1f, 3f, false), Types.Sequence.Serial);
     logicSet.Tag = 2;
     LogicSet logicSet2 = new LogicSet(this);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character", true, true), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet2.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.15f, false), Types.Sequence.Serial);
     logicSet2.AddAction(new FireProjectileLogicAction(this.m_levelScreen.ProjectileManager, projectileData), Types.Sequence.Serial);
     logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false), Types.Sequence.Serial);
     logicSet2.AddAction(new DelayLogicAction(0.75f, 2f, false), Types.Sequence.Serial);
     logicSet2.Tag = 2;
     LogicSet logicSet3 = new LogicSet(this);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character", true, true), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet3.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     this.ThrowThreeProjectiles(logicSet3);
     logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false), Types.Sequence.Serial);
     logicSet3.AddAction(new DelayLogicAction(1f, 3f, false), Types.Sequence.Serial);
     logicSet3.Tag = 2;
     LogicSet logicSet4 = new LogicSet(this);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character", true, true), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this, "LockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupilFire_Sprite"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet4.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this, "ThrowCardinalProjectiles", new object[]
     {
         0,
         true,
         0
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new DelayLogicAction(3.15f, false), Types.Sequence.Serial);
     logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupil_Sprite"
     }), Types.Sequence.Serial);
     logicSet4.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet4.Tag = 2;
     LogicSet logicSet5 = new LogicSet(this);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character", true, true), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this, "LockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupilFire_Sprite"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet5.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this, "ThrowCardinalProjectilesNeo", new object[]
     {
         0,
         true,
         0
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new DelayLogicAction(3f, false), Types.Sequence.Serial);
     logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupil_Sprite"
     }), Types.Sequence.Serial);
     logicSet5.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet5.Tag = 2;
     LogicSet logicSet6 = new LogicSet(this);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character", true, true), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this, "LockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupilFire_Sprite"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet6.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this, "ThrowSprayProjectiles", new object[]
     {
         true
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(1.6f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this, "ThrowSprayProjectiles", new object[]
     {
         true
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new DelayLogicAction(1.6f, false), Types.Sequence.Serial);
     logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupil_Sprite"
     }), Types.Sequence.Serial);
     logicSet6.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet6.Tag = 2;
     LogicSet logicSet7 = new LogicSet(this);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character", true, true), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "LockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupilFire_Sprite"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(this.FireballDelay, false), Types.Sequence.Serial);
     logicSet7.AddAction(new Play3DSoundLogicAction(this, this.m_target, new string[]
     {
         "EyeballFire1"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.1f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.575f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.575f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.575f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.575f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles", new object[0]), Types.Sequence.Serial);
     logicSet7.AddAction(new DelayLogicAction(0.575f, false), Types.Sequence.Serial);
     logicSet7.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this.m_pupil, "ChangeSprite", new object[]
     {
         "EnemyEyeballBossPupil_Sprite"
     }), Types.Sequence.Serial);
     logicSet7.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball", new object[0]), Types.Sequence.Serial);
     logicSet7.Tag = 2;
     LogicSet logicSet8 = new LogicSet(this);
     logicSet8.AddAction(new DelayLogicAction(0.2f, 0.5f, false), Types.Sequence.Serial);
     this.m_generalBasicLB.AddLogicSet(new LogicSet[]
     {
         logicSet,
         logicSet8
     });
     this.m_generalAdvancedLB.AddLogicSet(new LogicSet[]
     {
         logicSet2,
         logicSet8
     });
     this.m_generalExpertLB.AddLogicSet(new LogicSet[]
     {
         logicSet3,
         logicSet8
     });
     this.m_generalMiniBossLB.AddLogicSet(new LogicSet[]
     {
         logicSet4,
         logicSet6,
         logicSet7,
         logicSet8
     });
     this.m_generalCooldownLB.AddLogicSet(new LogicSet[]
     {
         logicSet8
     });
     this.m_generalNeoLB.AddLogicSet(new LogicSet[]
     {
         logicSet5,
         logicSet6,
         logicSet7,
         logicSet8
     });
     this.logicBlocksToDispose.Add(this.m_generalNeoLB);
     this.logicBlocksToDispose.Add(this.m_generalBasicLB);
     this.logicBlocksToDispose.Add(this.m_generalAdvancedLB);
     this.logicBlocksToDispose.Add(this.m_generalExpertLB);
     this.logicBlocksToDispose.Add(this.m_generalMiniBossLB);
     this.logicBlocksToDispose.Add(this.m_generalCooldownLB);
     base.SetCooldownLogicBlock(this.m_generalCooldownLB, new int[]
     {
         100
     });
     projectileData.Dispose();
     base.InitializeLogic();
 }
Exemple #47
0
        protected override void InitializeLogic()
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "PlantProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = true,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = true,
                Scale               = ProjectileScale
            };
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Squirm_01",
                                                          "Enemy_Venus_Squirm_02", "Enemy_Venus_Squirm_03"));
            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false));
            logicSet.AddAction(new PlayAnimationLogicAction(1, TotalFrames - 1));
            logicSet.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Attack_01"));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-105f, -105f);
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet.AddAction(new PlayAnimationLogicAction(TotalFrames - 1, TotalFrames));
            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet.Tag = 2;
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false));
            logicSet2.AddAction(new PlayAnimationLogicAction(1, TotalFrames - 1));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Attack_01"));
            projectileData.Angle = new Vector2(-60f, -60f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-105f, -105f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-120f, -120f);
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new PlayAnimationLogicAction(TotalFrames - 1, TotalFrames));
            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet2.Tag = 2;
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false));
            logicSet3.AddAction(new PlayAnimationLogicAction(1, TotalFrames - 1));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Attack_01"));
            projectileData.Angle = new Vector2(-45f, -45f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-60f, -60f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-85f, -85f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-95f, -95f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-105f, -105f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-120f, -120f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-135f, -135f);
            logicSet3.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet3.AddAction(new PlayAnimationLogicAction(TotalFrames - 1, TotalFrames));
            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet3.Tag = 2;
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyPlantAttack_Character", false, false));
            logicSet4.AddAction(new PlayAnimationLogicAction(1, TotalFrames - 1));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Attack_01"));
            projectileData.Angle = new Vector2(-60f, -60f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-87f, -87f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-90f, -90f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-93f, -93f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-75f, -75f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-105f, -105f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.Angle = new Vector2(-120f, -120f);
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet4.AddAction(new PlayAnimationLogicAction(TotalFrames - 1, TotalFrames));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet4.Tag = 2;
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new DelayLogicAction(0.25f));
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Squirm_01",
                                                           "Enemy_Venus_Squirm_02", "Enemy_Venus_Squirm_03", "Blank", "Blank", "Blank"));
            logicSet6.AddAction(new MoveLogicAction(m_target, true));
            logicSet6.AddAction(new DelayLogicAction(0.25f, 0.45f));
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Squirm_01",
                                                           "Enemy_Venus_Squirm_02", "Enemy_Venus_Squirm_03", "Blank", "Blank", "Blank"));
            logicSet7.AddAction(new MoveLogicAction(m_target, false));
            logicSet7.AddAction(new DelayLogicAction(0.25f, 0.45f));
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Enemy_Venus_Squirm_01",
                                                           "Enemy_Venus_Squirm_02", "Enemy_Venus_Squirm_03", "Blank", "Blank", "Blank"));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemyPlantIdle_Character"));
            logicSet8.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet8.AddAction(new DelayLogicAction(0.25f, 0.45f));
            m_generalBasicLB.AddLogicSet(logicSet);
            m_generalAdvancedLB.AddLogicSet(logicSet2);
            m_generalExpertLB.AddLogicSet(logicSet3);
            m_generalMiniBossLB.AddLogicSet(logicSet4);
            m_generalCooldownLB.AddLogicSet(logicSet5);
            m_generalCooldownExpertLB.AddLogicSet(logicSet6, logicSet7, logicSet8);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            logicBlocksToDispose.Add(m_generalCooldownExpertLB);
            SetCooldownLogicBlock(m_generalCooldownLB, 100);
            if (Difficulty == GameTypes.EnemyDifficulty.MINIBOSS)
            {
                var arg_AA5_1 = m_generalCooldownExpertLB;
                var array     = new int[3];
                array[0] = 50;
                array[1] = 50;
                SetCooldownLogicBlock(arg_AA5_1, array);
            }
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #48
0
        protected override void InitializeLogic()
        {
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightWalk_Character"));
            logicSet.AddAction(new MoveLogicAction(m_target, true));
            logicSet.AddAction(new DelayLogicAction(0.2f, 1f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightWalk_Character"));
            logicSet2.AddAction(new MoveLogicAction(m_target, false));
            logicSet2.AddAction(new DelayLogicAction(0.2f, 1f));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet3.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet3.AddAction(new DelayLogicAction(0.2f, 1f));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character"));
            logicSet4.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet4.AddAction(new DelayLogicAction(AttackThrustDelay));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet4.AddAction(new MoveDirectionLogicAction(AttackThrustSpeed));
            logicSet4.AddAction(new RunFunctionLogicAction(m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect",
                                                           this, 20, 0.3f));
            logicSet4.AddAction(new PlayAnimationLogicAction("AttackStart", "End"), Types.Sequence.Parallel);
            logicSet4.AddAction(new DelayLogicAction(AttackThrustDuration));
            logicSet4.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet4.AddAction(new DelayLogicAction(0.3f));
            logicSet4.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet4.Tag = 2;
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character"));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet5.AddAction(new DelayLogicAction(AttackThrustDelayExpert));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet5.AddAction(new MoveDirectionLogicAction(AttackThrustSpeedExpert));
            logicSet5.AddAction(new RunFunctionLogicAction(m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect",
                                                           this, 20, 0.3f));
            logicSet5.AddAction(new PlayAnimationLogicAction("AttackStart", "End"), Types.Sequence.Parallel);
            logicSet5.AddAction(new DelayLogicAction(AttackThrustDurationExpert));
            logicSet5.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet5.AddAction(new DelayLogicAction(0.3f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet5.Tag = 2;
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character"));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet6.AddAction(new DelayLogicAction(AttackThrustDelayMiniBoss));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet6.AddAction(new MoveDirectionLogicAction(AttackThrustSpeedMiniBoss));
            logicSet6.AddAction(new RunFunctionLogicAction(m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect",
                                                           this, 20, 0.3f));
            logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End"), Types.Sequence.Parallel);
            logicSet6.AddAction(new DelayLogicAction(AttackThrustDurationMiniBoss));
            logicSet6.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character"));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet6.AddAction(new DelayLogicAction(0.25f));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet6.AddAction(new MoveDirectionLogicAction(AttackThrustSpeedMiniBoss));
            logicSet6.AddAction(new RunFunctionLogicAction(m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect",
                                                           this, 20, 0.3f));
            logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End"), Types.Sequence.Parallel);
            logicSet6.AddAction(new DelayLogicAction(AttackThrustDurationMiniBoss));
            logicSet6.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack_Character"));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet6.AddAction(new DelayLogicAction(0.25f));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet6.AddAction(new MoveDirectionLogicAction(AttackThrustSpeedMiniBoss));
            logicSet6.AddAction(new RunFunctionLogicAction(m_levelScreen.ImpactEffectPool, "DisplayThrustDustEffect",
                                                           this, 20, 0.3f));
            logicSet6.AddAction(new PlayAnimationLogicAction("AttackStart", "End"), Types.Sequence.Parallel);
            logicSet6.AddAction(new DelayLogicAction(AttackThrustDurationMiniBoss));
            logicSet6.AddAction(new MoveLogicAction(null, true, 0f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet6.AddAction(new DelayLogicAction(0.3f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.Tag = 2;
            var projectileData = new ProjectileData(this)
            {
                SpriteName    = "EnemySpearKnightWave_Sprite",
                SourceAnchor  = new Vector2(30f, 0f),
                Target        = null,
                Speed         = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted    = false,
                RotationSpeed = 0f,
                Damage        = Damage,
                AngleOffset   = 0f,
                Angle         = new Vector2(0f, 0f),
                Scale         = ProjectileScale
            };
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet7.AddAction(new DelayLogicAction(AttackProjectileDelay));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnightAttack1"));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnight_Projectile"));
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new DelayLogicAction(0.3f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet7.Tag = 2;
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet8.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet8.AddAction(new DelayLogicAction(AttackProjectileExpertDelay));
            ThrowThreeProjectiles(logicSet8);
            logicSet8.AddAction(new DelayLogicAction(0.3f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet8.Tag = 2;
            var logicSet9 = new LogicSet(this);

            logicSet9.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet9.AddAction(new DelayLogicAction(AttackProjectileMinibossDelay));
            logicSet9.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnight_Projectile"));
            logicSet9.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0333333351f));
            ThrowTwoProjectiles(logicSet9);
            logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet9.AddAction(new DelayLogicAction(0.05f));
            ThrowThreeProjectiles(logicSet9);
            logicSet9.AddAction(new DelayLogicAction(0.05f));
            logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet9.AddAction(new DelayLogicAction(0.05f));
            ThrowTwoProjectiles(logicSet9);
            logicSet9.AddAction(new DelayLogicAction(0.5f));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet9.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.1f));
            logicSet9.Tag = 2;
            var logicSet10 = new LogicSet(this);

            logicSet10.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet10.AddAction(new DelayLogicAction(AttackProjectileMinibossDelay));
            logicSet10.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SpearKnight_Projectile"));
            logicSet10.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.0333333351f));
            ThrowThreeProjectiles(logicSet10);
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet10.AddAction(new DelayLogicAction(0.05f));
            ThrowTwoProjectiles(logicSet10);
            logicSet10.AddAction(new DelayLogicAction(0.05f));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightAttack2_Character"));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet10.AddAction(new DelayLogicAction(0.05f));
            ThrowThreeProjectiles(logicSet10);
            logicSet10.AddAction(new DelayLogicAction(0.5f));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet10.AddAction(new ChangePropertyLogicAction(this, "AnimationDelay", 0.1f));
            logicSet10.Tag = 2;
            var logicSet11 = new LogicSet(this);

            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemySpearKnightIdle_Character"));
            logicSet11.AddAction(new MoveLogicAction(m_target, false, 300f));
            logicSet11.AddAction(new JumpLogicAction());
            logicSet11.AddAction(new DelayLogicAction(0.3f));
            logicSet11.AddAction(new GroundCheckLogicAction());
            logicSet11.AddAction(new JumpLogicAction());
            ThrowRapidProjectiles(logicSet11);
            ThrowRapidProjectiles(logicSet11);
            ThrowRapidProjectiles(logicSet11);
            logicSet11.AddAction(new GroundCheckLogicAction());
            logicSet11.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet11.AddAction(new DelayLogicAction(0.1f));
            logicSet11.AddAction(new JumpLogicAction());
            ThrowRapidProjectiles(logicSet11);
            ThrowRapidProjectiles(logicSet11);
            ThrowRapidProjectiles(logicSet11);
            logicSet11.AddAction(new GroundCheckLogicAction());
            logicSet11.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet11.Tag = 2;
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4, logicSet7);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4, logicSet7);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet5, logicSet8);
            m_generalMiniBossLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet6, logicSet9, logicSet10);
            m_generalCooldownLB.AddLogicSet(logicSet, logicSet2, logicSet3);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            SetCooldownLogicBlock(m_generalCooldownLB, 55, 25, 20);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #49
0
        protected override void InitializeLogic()
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "BoneProjectile_Sprite",
                SourceAnchor        = new Vector2(20f, -20f),
                Target              = null,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = true,
                RotationSpeed       = 10f,
                Damage              = Damage,
                AngleOffset         = 0f,
                Angle               = new Vector2(-72f, -72f),
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemySkeletonWalk_Character"));
            logicSet.AddAction(new MoveLogicAction(m_target, true));
            logicSet.AddAction(new DelayLogicAction(0.2f, 0.75f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemySkeletonWalk_Character"));
            logicSet2.AddAction(new MoveLogicAction(m_target, false));
            logicSet2.AddAction(new DelayLogicAction(0.2f, 0.75f));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemySkeletonIdle_Character"));
            logicSet3.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet3.AddAction(new DelayLogicAction(0.2f, 0.75f));
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new StopAnimationLogicAction());
            logicSet4.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet4.AddAction(new DelayLogicAction(0.5f, 1f));
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet5.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet5.AddAction(new DelayLogicAction(AttackDelay));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet5.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet5.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet5.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet5.Tag = 2;
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet6.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet6.AddAction(new DelayLogicAction(AttackDelay));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            projectileData.Angle = new Vector2(-85f, -85f);
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet6.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet6.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet6.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet6.Tag = 2;
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySkeletonJump_Character", false, false));
            logicSet7.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet7.AddAction(new DelayLogicAction(JumpDelay));
            logicSet7.AddAction(new JumpLogicAction());
            logicSet7.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet7.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            projectileData.Angle = new Vector2(-72f, -72f);
            logicSet7.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet7.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet7.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet7.Tag = 2;
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySkeletonJump_Character", false, false));
            logicSet8.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet8.AddAction(new DelayLogicAction(JumpDelay));
            logicSet8.AddAction(new JumpLogicAction());
            logicSet8.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet8.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet8.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            projectileData.Angle = new Vector2(-85f, -85f);
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet8.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet8.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet8.Tag = 2;
            var logicSet9 = new LogicSet(this);

            logicSet9.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet9.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet9.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet9.AddAction(new DelayLogicAction(AttackDelay));
            logicSet9.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            ThrowThreeProjectiles(logicSet9);
            logicSet9.AddAction(new PlayAnimationLogicAction("Attack", "End"), Types.Sequence.Parallel);
            logicSet9.AddAction(new DelayLogicAction(0.15f));
            ThrowThreeProjectiles(logicSet9);
            logicSet9.AddAction(new DelayLogicAction(0.15f));
            ThrowThreeProjectiles(logicSet9);
            logicSet9.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet9.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet9.Tag = 2;
            var logicSet10 = new LogicSet(this);

            logicSet10.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySkeletonJump_Character", false, false));
            logicSet10.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet10.AddAction(new DelayLogicAction(JumpDelay));
            logicSet10.AddAction(new JumpLogicAction());
            logicSet10.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet10.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet10.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet10.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            ThrowThreeProjectiles(logicSet10);
            logicSet10.AddAction(new PlayAnimationLogicAction("Attack", "End"), Types.Sequence.Parallel);
            logicSet10.AddAction(new DelayLogicAction(0.15f));
            ThrowThreeProjectiles(logicSet10);
            logicSet10.AddAction(new DelayLogicAction(0.15f));
            ThrowThreeProjectiles(logicSet10);
            logicSet10.AddAction(new DelayLogicAction(0.2f, 0.4f));
            logicSet10.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet10.Tag = 2;
            var logicSet11 = new LogicSet(this);

            logicSet11.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet11.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet11.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet11.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet11.AddAction(new DelayLogicAction(AttackDelay));
            projectileData.Angle         = new Vector2(-89f, -35f);
            projectileData.RotationSpeed = 8f;
            projectileData.SourceAnchor  = new Vector2(5f, -20f);
            logicSet11.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            logicSet11.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet11.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet11.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet11.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet11.AddAction(new ChangeSpriteLogicAction("EnemySkeletonIdle_Character"));
            logicSet11.AddAction(new DelayLogicAction(0.4f, 0.9f));
            var logicSet12 = new LogicSet(this);

            logicSet12.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet12.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet12.AddAction(new ChangeSpriteLogicAction("EnemySkeletonAttack_Character", false, false));
            logicSet12.AddAction(new PlayAnimationLogicAction("Start", "Windup"));
            logicSet12.AddAction(new DelayLogicAction(AttackDelay));
            logicSet12.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "SkeletonHit1"));
            logicSet12.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet12.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet12.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet12.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet12.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet12.AddAction(new PlayAnimationLogicAction("Attack", "End"));
            logicSet12.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet12.AddAction(new DelayLogicAction(0.15f, 0.35f));
            logicSet12.AddAction(new ChangeSpriteLogicAction("EnemySkeletonIdle_Character"));
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet5, logicSet6);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet5, logicSet6, logicSet7, logicSet8);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet9, logicSet10);
            m_generalMiniBossLB.AddLogicSet(logicSet, logicSet2, logicSet4, logicSet11, logicSet12);
            m_generalCooldownLB.AddLogicSet(logicSet, logicSet2, logicSet3);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            SetCooldownLogicBlock(m_generalCooldownLB, 30, 30, 40);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #50
0
 public void CastCloseShield()
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "SpellClose_Sprite",
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         DestroysWithEnemy = false,
         DestroysWithTerrain = false,
         CollidesWithTerrain = false,
         Scale = new Vector2(this.m_Spell_Close_Scale, this.m_Spell_Close_Scale),
         Damage = base.Damage,
         Lifespan = this.m_Spell_Close_Lifespan,
         LockPosition = true
     };
     this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
     SoundManager.Play3DSound(this, this.m_target, "Cast_GiantSword");
     this.m_levelScreen.ImpactEffectPool.LastBossSpellCastEffect(this, 90f, true);
     projectileData.Dispose();
 }
Exemple #51
0
 public void CastDamageShield(int numOrbs)
 {
     foreach (ProjectileObj current in this.m_damageShieldProjectiles)
     {
         current.KillProjectile();
     }
     this.m_damageShieldProjectiles.Clear();
     ProjectileData data = new ProjectileData(this)
     {
         SpriteName = "LastBossOrbProjectile_Sprite",
         Angle = new Vector2(-65f, -65f),
         Speed = new Vector2(this.m_Mega_Shield_Speed, this.m_Mega_Shield_Speed),
         Target = this,
         IsWeighted = false,
         RotationSpeed = 0f,
         CollidesWithTerrain = false,
         DestroysWithTerrain = false,
         DestroysWithEnemy = false,
         CanBeFusRohDahed = false,
         ShowIcon = false,
         Lifespan = 9999f,
         Damage = base.Damage / 2
     };
     SoundManager.Play3DSound(this, this.m_target, "FinalBoss_St2_SwordSummon_b");
     int mega_Shield_Distance = this.m_Mega_Shield_Distance;
     for (int i = 0; i < numOrbs; i++)
     {
         float num = 360f / (float)numOrbs * (float)i;
         ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(data);
         projectileObj.AltX = num;
         projectileObj.AltY = (float)mega_Shield_Distance;
         projectileObj.Spell = 11;
         projectileObj.AccelerationXEnabled = false;
         projectileObj.AccelerationYEnabled = false;
         projectileObj.IgnoreBoundsCheck = true;
         projectileObj.Scale = new Vector2(this.m_Mega_Shield_Scale, this.m_Mega_Shield_Scale);
         projectileObj.Position = CDGMath.GetCirclePosition(num, (float)mega_Shield_Distance, base.Position);
         this.m_levelScreen.ImpactEffectPool.SpellCastEffect(projectileObj.Position, projectileObj.Rotation, false);
         this.m_damageShieldProjectiles.Add(projectileObj);
     }
 }
Exemple #52
0
 public FireProjectileLogicAction(ProjectileManager projectileManager, ProjectileData data)
 {
     m_projectileManager = projectileManager;
     m_data = data.Clone();
 }
Exemple #53
0
 public void CastSpears(int numSpears, float duration)
 {
     ProjectileData projectileData = new ProjectileData(this)
     {
         SpriteName = "LastBossSpearProjectile_Sprite",
         Target = null,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         StartingRotation = 0f,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         DestroysWithEnemy = false,
         ShowIcon = false,
         LockPosition = true,
         CanBeFusRohDahed = false
     };
     int num = 0;
     int num2 = 0;
     float num3 = 0.5f;
     base.UpdateCollisionBoxes();
     Vector2 vector = new Vector2((float)this.m_levelScreen.CurrentRoom.Bounds.Center.X, base.Y);
     for (int i = 0; i < numSpears; i++)
     {
         ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileObj.Scale = new Vector2(2f, 2f);
         projectileObj.X = vector.X + 50f + (float)num;
         projectileObj.Y = base.Y + ((float)this.Bounds.Bottom - base.Y);
         projectileObj.StopAnimation();
         num += projectileObj.Width;
         Tween.RunFunction(num3, typeof(SoundManager), "Play3DSound", new object[]
         {
             this,
             this.m_target,
             new string[]
             {
                 "FinalBoss_St2_Lance_01",
                 "FinalBoss_St2_Lance_02",
                 "FinalBoss_St2_Lance_03",
                 "FinalBoss_St2_Lance_04",
                 "FinalBoss_St2_Lance_05",
                 "FinalBoss_St2_Lance_06",
                 "FinalBoss_St2_Lance_07",
                 "FinalBoss_St2_Lance_08"
             }
         });
         Tween.RunFunction(num3, projectileObj, "PlayAnimation", new object[]
         {
             "Before",
             "End",
             false
         });
         Tween.RunFunction(num3 + duration, projectileObj, "PlayAnimation", new object[]
         {
             "Retract",
             "RetractComplete",
             false
         });
         Tween.RunFunction(num3 + duration, typeof(SoundManager), "Play3DSound", new object[]
         {
             this,
             this.m_target,
             new string[]
             {
                 "FinalBoss_St2_Lance_Retract_01",
                 "FinalBoss_St2_Lance_Retract_02",
                 "FinalBoss_St2_Lance_Retract_03",
                 "FinalBoss_St2_Lance_Retract_04",
                 "FinalBoss_St2_Lance_Retract_05",
                 "FinalBoss_St2_Lance_Retract_06"
             }
         });
         Tween.RunFunction(num3 + duration + 1f, projectileObj, "KillProjectile", new object[0]);
         ProjectileObj projectileObj2 = this.m_levelScreen.ProjectileManager.FireProjectile(projectileData);
         projectileObj2.Scale = new Vector2(2f, 2f);
         projectileObj2.X = vector.X - 50f + (float)num2;
         projectileObj2.Y = base.Y + ((float)this.Bounds.Bottom - base.Y);
         projectileObj2.StopAnimation();
         num2 -= projectileObj2.Width;
         Tween.RunFunction(num3, projectileObj2, "PlayAnimation", new object[]
         {
             "Before",
             "End",
             false
         });
         Tween.RunFunction(num3 + duration, projectileObj2, "PlayAnimation", new object[]
         {
             "Retract",
             "RetractComplete",
             false
         });
         Tween.RunFunction(num3 + duration + 1f, projectileObj2, "KillProjectile", new object[0]);
         num3 += 0.05f;
     }
     projectileData.Dispose();
 }
Exemple #54
0
        protected override void InitializeLogic()
        {
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "EyeballProjectile_Sprite",
                SourceAnchor        = Vector2.Zero,
                Target              = m_target,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 0f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = false,
                Scale               = ProjectileScale
            };
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character"));
            logicSet.AddAction(new DelayLogicAction(FireballDelay));
            logicSet.AddAction(new Play3DSoundLogicAction(this, m_target, "Eyeball_ProjectileAttack"));
            logicSet.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false));
            logicSet.AddAction(new DelayLogicAction(1f, 3f));
            logicSet.Tag = 2;
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character"));
            logicSet2.AddAction(new DelayLogicAction(FireballDelay));
            logicSet2.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new DelayLogicAction(0.15f));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new DelayLogicAction(0.15f));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new DelayLogicAction(0.15f));
            logicSet2.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false));
            logicSet2.AddAction(new DelayLogicAction(0.75f, 2f));
            logicSet2.Tag = 2;
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyEyeballFire_Character"));
            logicSet3.AddAction(new DelayLogicAction(FireballDelay));
            logicSet3.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet3.AddAction(new DelayLogicAction(0.1f));
            ThrowThreeProjectiles(logicSet3);
            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyEyeballIdle_Character", false, false));
            logicSet3.AddAction(new DelayLogicAction(1f, 3f));
            logicSet3.Tag = 2;
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character"));
            logicSet4.AddAction(new RunFunctionLogicAction(this, "LockEyeball"));
            logicSet4.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupilFire_Sprite"));
            logicSet4.AddAction(new DelayLogicAction(FireballDelay));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet4.AddAction(new DelayLogicAction(0.1f));
            logicSet4.AddAction(new RunFunctionLogicAction(this, "ThrowCardinalProjectiles", 0, true, 0));
            logicSet4.AddAction(new DelayLogicAction(3.15f));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false));
            logicSet4.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupil_Sprite"));
            logicSet4.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball"));
            logicSet4.Tag = 2;
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character"));
            logicSet5.AddAction(new RunFunctionLogicAction(this, "LockEyeball"));
            logicSet5.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupilFire_Sprite"));
            logicSet5.AddAction(new DelayLogicAction(FireballDelay));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet5.AddAction(new DelayLogicAction(0.1f));
            logicSet5.AddAction(new RunFunctionLogicAction(this, "ThrowCardinalProjectilesNeo", 0, true, 0));
            logicSet5.AddAction(new DelayLogicAction(3f));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false));
            logicSet5.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupil_Sprite"));
            logicSet5.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball"));
            logicSet5.Tag = 2;
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character"));
            logicSet6.AddAction(new RunFunctionLogicAction(this, "LockEyeball"));
            logicSet6.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupilFire_Sprite"));
            logicSet6.AddAction(new DelayLogicAction(FireballDelay));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet6.AddAction(new DelayLogicAction(0.1f));
            logicSet6.AddAction(new RunFunctionLogicAction(this, "ThrowSprayProjectiles", true));
            logicSet6.AddAction(new DelayLogicAction(1.6f));
            logicSet6.AddAction(new RunFunctionLogicAction(this, "ThrowSprayProjectiles", true));
            logicSet6.AddAction(new DelayLogicAction(1.6f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false));
            logicSet6.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupil_Sprite"));
            logicSet6.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball"));
            logicSet6.Tag = 2;
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossFire_Character"));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "LockEyeball"));
            logicSet7.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupilFire_Sprite"));
            logicSet7.AddAction(new DelayLogicAction(FireballDelay));
            logicSet7.AddAction(new Play3DSoundLogicAction(this, m_target, "EyeballFire1"));
            logicSet7.AddAction(new DelayLogicAction(0.1f));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles"));
            logicSet7.AddAction(new DelayLogicAction(0.575f));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles"));
            logicSet7.AddAction(new DelayLogicAction(0.575f));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles"));
            logicSet7.AddAction(new DelayLogicAction(0.575f));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles"));
            logicSet7.AddAction(new DelayLogicAction(0.575f));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "ThrowRandomProjectiles"));
            logicSet7.AddAction(new DelayLogicAction(0.575f));
            logicSet7.AddAction(new ChangeSpriteLogicAction("EnemyEyeballBossEye_Character", false, false));
            logicSet7.AddAction(new RunFunctionLogicAction(m_pupil, "ChangeSprite", "EnemyEyeballBossPupil_Sprite"));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "UnlockEyeball"));
            logicSet7.Tag = 2;
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new DelayLogicAction(0.2f, 0.5f));
            m_generalBasicLB.AddLogicSet(logicSet, logicSet8);
            m_generalAdvancedLB.AddLogicSet(logicSet2, logicSet8);
            m_generalExpertLB.AddLogicSet(logicSet3, logicSet8);
            m_generalMiniBossLB.AddLogicSet(logicSet4, logicSet6, logicSet7, logicSet8);
            m_generalCooldownLB.AddLogicSet(logicSet8);
            m_generalNeoLB.AddLogicSet(logicSet5, logicSet6, logicSet7, logicSet8);
            logicBlocksToDispose.Add(m_generalNeoLB);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalMiniBossLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            SetCooldownLogicBlock(m_generalCooldownLB, 100);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #55
0
 public void CastSwords(bool castLeft)
 {
     ProjectileData data = new ProjectileData(this)
     {
         SpriteName = "LastBossSwordProjectile_Sprite",
         Target = null,
         Speed = new Vector2(0f, 0f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         StartingRotation = 0f,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         DestroysWithEnemy = false
     };
     float num = 1f;
     int num2 = this.MegaFlyingDaggerProjectileSpeed;
     if (!castLeft)
     {
         num2 = this.MegaFlyingDaggerProjectileSpeed * -1;
     }
     SoundManager.Play3DSound(this, this.m_target, "FinalBoss_St2_SwordSummon_b");
     for (int i = 0; i < this.MegaFlyingSwordAmount; i++)
     {
         Vector2 vector = new Vector2(base.X, base.Y + (float)CDGMath.RandomInt(-1320, 100));
         ProjectileObj projectileObj = this.m_levelScreen.ProjectileManager.FireProjectile(data);
         projectileObj.Position = vector;
         Tween.By(projectileObj, 2.5f, new Easing(Tween.EaseNone), new string[]
         {
             "delay",
             num.ToString(),
             "X",
             num2.ToString()
         });
         Tween.AddEndHandlerToLastTween(projectileObj, "KillProjectile", new object[0]);
         Tween.RunFunction(num, typeof(SoundManager), "Play3DSound", new object[]
         {
             this,
             this.m_target,
             new string[]
             {
                 "FinalBoss_St2_SwordSummon_c_01",
                 "FinalBoss_St2_SwordSummon_c_02",
                 "FinalBoss_St2_SwordSummon_c_03",
                 "FinalBoss_St2_SwordSummon_c_04",
                 "FinalBoss_St2_SwordSummon_c_05",
                 "FinalBoss_St2_SwordSummon_c_06",
                 "FinalBoss_St2_SwordSummon_c_07",
                 "FinalBoss_St2_SwordSummon_c_08"
             }
         });
         this.m_levelScreen.ImpactEffectPool.SpellCastEffect(vector, 0f, false);
         num += 0.075f;
     }
 }
Exemple #56
0
 public void ThrowAxeProjectilesNeo()
 {
     if (this.m_axeProjData != null)
     {
         this.m_axeProjData.Dispose();
         this.m_axeProjData = null;
     }
     this.m_axeProjData = new ProjectileData(this)
     {
         SpriteName = "SpellAxe_Sprite",
         SourceAnchor = new Vector2(20f, -20f),
         Target = null,
         Speed = new Vector2(this.AxeProjectileSpeed, this.AxeProjectileSpeed),
         IsWeighted = true,
         RotationSpeed = 10f,
         Damage = base.Damage,
         AngleOffset = 0f,
         Angle = new Vector2(-90f, -90f),
         CollidesWithTerrain = false,
         Scale = this.AxeSpellScale
     };
     Tween.RunFunction(0.3f, this, "CastAxe", new object[]
     {
         true
     });
     Tween.RunFunction(0.3f, this, "CastAxe", new object[]
     {
         true
     });
     Tween.RunFunction(0.3f, this, "CastAxe", new object[]
     {
         true
     });
 }
Exemple #57
0
        protected override void InitializeLogic()
        {
            var logicSet = new LogicSet(this);

            logicSet.AddAction(new ChangeSpriteLogicAction("EnemyNinjaRun_Character"));
            logicSet.AddAction(new PlayAnimationLogicAction());
            logicSet.AddAction(new MoveLogicAction(m_target, true));
            logicSet.AddAction(new DelayLogicAction(0.25f, 0.85f));
            var logicSet2 = new LogicSet(this);

            logicSet2.AddAction(new ChangeSpriteLogicAction("EnemyNinjaRun_Character"));
            logicSet2.AddAction(new PlayAnimationLogicAction());
            logicSet2.AddAction(new MoveLogicAction(m_target, false));
            logicSet2.AddAction(new DelayLogicAction(0.25f, 0.85f));
            var logicSet3 = new LogicSet(this);

            logicSet3.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character"));
            logicSet3.AddAction(new StopAnimationLogicAction());
            logicSet3.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet3.AddAction(new DelayLogicAction(0.25f, 0.85f));
            var projectileData = new ProjectileData(this)
            {
                SpriteName          = "ShurikenProjectile1_Sprite",
                SourceAnchor        = new Vector2(15f, 0f),
                Target              = m_target,
                Speed               = new Vector2(ProjectileSpeed, ProjectileSpeed),
                IsWeighted          = false,
                RotationSpeed       = 20f,
                Damage              = Damage,
                AngleOffset         = 0f,
                CollidesWithTerrain = true,
                Scale               = ProjectileScale
            };
            var logicSet4 = new LogicSet(this);

            logicSet4.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character"));
            logicSet4.AddAction(new DelayLogicAction(PauseBeforeProjectile));
            logicSet4.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false));
            logicSet4.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet4.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Ninja_ThrowStar_01",
                                                           "Ninja_ThrowStar_02", "Ninja_ThrowStar_03"));
            logicSet4.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet4.AddAction(new PlayAnimationLogicAction(4, 5));
            logicSet4.AddAction(new DelayLogicAction(PauseAfterProjectile));
            logicSet4.Tag = 2;
            var logicSet5 = new LogicSet(this);

            logicSet5.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character"));
            logicSet5.AddAction(new DelayLogicAction(PauseBeforeProjectile));
            logicSet5.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false));
            logicSet5.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet5.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Ninja_ThrowStar_01",
                                                           "Ninja_ThrowStar_02", "Ninja_ThrowStar_03"));
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = -10f;
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = 10f;
            logicSet5.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet5.AddAction(new PlayAnimationLogicAction(4, 5));
            logicSet5.AddAction(new DelayLogicAction(PauseAfterProjectile));
            logicSet5.Tag = 2;
            var logicSet6 = new LogicSet(this);

            logicSet6.AddAction(new MoveLogicAction(m_target, true, 0f));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyNinjaIdle_Character"));
            logicSet6.AddAction(new DelayLogicAction(PauseBeforeProjectile));
            logicSet6.AddAction(new ChangeSpriteLogicAction("EnemyNinjaThrow_Character", false, false));
            logicSet6.AddAction(new PlayAnimationLogicAction(1, 3));
            logicSet6.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Ninja_ThrowStar_01",
                                                           "Ninja_ThrowStar_02", "Ninja_ThrowStar_03"));
            projectileData.AngleOffset = 0f;
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = -5f;
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = 5f;
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = -25f;
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = 25f;
            logicSet6.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet6.AddAction(new PlayAnimationLogicAction(4, 5));
            logicSet6.AddAction(new DelayLogicAction(PauseAfterProjectile));
            logicSet6.Tag = 2;
            var logicSet7 = new LogicSet(this);

            logicSet7.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "CreateLog", null));
            logicSet7.AddAction(new DelayLogicAction(TeleportDelay));
            logicSet7.AddAction(new RunFunctionLogicAction(this, "CreateSmoke", null));
            logicSet7.AddAction(new DelayLogicAction(0.15f));
            logicSet7.AddAction(new ChangePropertyLogicAction(this, "IsWeighted", true));
            logicSet7.AddAction(new DelayLogicAction(0.15f));
            logicSet7.AddAction(new GroundCheckLogicAction());
            logicSet7.AddAction(new DelayLogicAction(0.15f));
            logicSet7.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet7.Tag = 2;
            var logicSet8 = new LogicSet(this);

            logicSet8.AddAction(new LockFaceDirectionLogicAction(true));
            logicSet8.AddAction(new RunFunctionLogicAction(this, "CreateLog", null));
            logicSet8.AddAction(new DelayLogicAction(TeleportDelay));
            logicSet8.AddAction(new RunFunctionLogicAction(this, "CreateSmoke", null));
            projectileData.Target = null;
            logicSet8.AddAction(new Play3DSoundLogicAction(this, Game.ScreenManager.Player, "Ninja_ThrowStar_01",
                                                           "Ninja_ThrowStar_02", "Ninja_ThrowStar_03"));
            projectileData.AngleOffset = 45f;
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = 135f;
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = -45f;
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            projectileData.AngleOffset = -135f;
            logicSet8.AddAction(new FireProjectileLogicAction(m_levelScreen.ProjectileManager, projectileData));
            logicSet8.AddAction(new DelayLogicAction(0.15f));
            logicSet8.AddAction(new ChangePropertyLogicAction(this, "IsWeighted", true));
            logicSet8.AddAction(new DelayLogicAction(0.15f));
            logicSet8.AddAction(new GroundCheckLogicAction());
            logicSet8.AddAction(new DelayLogicAction(0.15f));
            logicSet8.AddAction(new LockFaceDirectionLogicAction(false));
            logicSet8.Tag = 2;
            m_basicTeleportAttackLB.AddLogicSet(logicSet7);
            m_expertTeleportAttackLB.AddLogicSet(logicSet8);
            logicBlocksToDispose.Add(m_basicTeleportAttackLB);
            logicBlocksToDispose.Add(m_expertTeleportAttackLB);
            m_generalBasicLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet4);
            m_generalAdvancedLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet5);
            m_generalExpertLB.AddLogicSet(logicSet, logicSet2, logicSet3, logicSet6);
            m_generalCooldownLB.AddLogicSet(logicSet, logicSet2, logicSet3);
            logicBlocksToDispose.Add(m_generalBasicLB);
            logicBlocksToDispose.Add(m_generalAdvancedLB);
            logicBlocksToDispose.Add(m_generalExpertLB);
            logicBlocksToDispose.Add(m_generalCooldownLB);
            var arg_906_1 = m_generalCooldownLB;
            var array     = new int[3];

            array[0] = 50;
            array[1] = 50;
            SetCooldownLogicBlock(arg_906_1, array);
            projectileData.Dispose();
            base.InitializeLogic();
        }
Exemple #58
0
 public ProjectileObj FireProjectile(ProjectileData data)
 {
     if (data.Source == null)
     {
         throw new Exception("Cannot have a projectile with no source");
     }
     ProjectileObj projectileObj = this.m_projectilePool.CheckOut();
     projectileObj.Reset();
     projectileObj.LifeSpan = data.Lifespan;
     GameObj source = data.Source;
     projectileObj.ChaseTarget = data.ChaseTarget;
     projectileObj.Source = source;
     projectileObj.Target = data.Target;
     projectileObj.UpdateHeading();
     projectileObj.TurnSpeed = data.TurnSpeed;
     projectileObj.CollidesWithTerrain = data.CollidesWithTerrain;
     projectileObj.DestroysWithTerrain = data.DestroysWithTerrain;
     projectileObj.DestroysWithEnemy = data.DestroysWithEnemy;
     projectileObj.FollowArc = data.FollowArc;
     projectileObj.Orientation = MathHelper.ToRadians(data.StartingRotation);
     projectileObj.ShowIcon = data.ShowIcon;
     projectileObj.IsCollidable = data.IsCollidable;
     projectileObj.CollidesWith1Ways = data.CollidesWith1Ways;
     projectileObj.DestroyOnRoomTransition = data.DestroyOnRoomTransition;
     projectileObj.CanBeFusRohDahed = data.CanBeFusRohDahed;
     projectileObj.IgnoreInvincibleCounter = data.IgnoreInvincibleCounter;
     projectileObj.WrapProjectile = data.WrapProjectile;
     float num = 0f;
     if (data.Target != null)
     {
         float num2 = data.Target.X - source.X;
         float num3 = data.Target.Y - source.Y - data.SourceAnchor.Y;
         if (source.Flip == SpriteEffects.FlipHorizontally)
         {
             num = 180f - num;
             num2 += data.SourceAnchor.X;
             num = MathHelper.ToDegrees((float)Math.Atan2((double)num3, (double)num2));
             num -= data.AngleOffset;
         }
         else
         {
             num = MathHelper.ToDegrees((float)Math.Atan2((double)num3, (double)num2));
             num2 -= data.SourceAnchor.X;
             num += data.AngleOffset;
         }
     }
     else
     {
         num = data.Angle.X + data.AngleOffset;
         if (data.Angle.X != data.Angle.Y)
         {
             num = CDGMath.RandomFloat(data.Angle.X, data.Angle.Y) + data.AngleOffset;
         }
         if (source.Flip != SpriteEffects.None && source.Rotation != 0f)
         {
             num -= 180f;
         }
         else if (source.Flip != SpriteEffects.None && source.Rotation == 0f)
         {
             num = 180f - num;
         }
     }
     if (!data.LockPosition)
     {
         projectileObj.Rotation = num;
     }
     num = MathHelper.ToRadians(num);
     projectileObj.Damage = data.Damage;
     this.m_levelScreen.PhysicsManager.AddObject(projectileObj);
     projectileObj.ChangeSprite(data.SpriteName);
     projectileObj.RotationSpeed = data.RotationSpeed;
     projectileObj.Visible = true;
     if (source.Flip != SpriteEffects.None)
     {
         projectileObj.X = source.AbsX - data.SourceAnchor.X;
     }
     else
     {
         projectileObj.X = source.AbsX + data.SourceAnchor.X;
     }
     projectileObj.Y = source.AbsY + data.SourceAnchor.Y;
     projectileObj.IsWeighted = data.IsWeighted;
     Vector2 vector = new Vector2((float)Math.Cos((double)num), (float)Math.Sin((double)num));
     float num4 = data.Speed.X;
     if (data.Speed.X != data.Speed.Y)
     {
         num4 = CDGMath.RandomFloat(data.Speed.X, data.Speed.Y);
     }
     projectileObj.AccelerationX = vector.X * num4;
     projectileObj.AccelerationY = vector.Y * num4;
     projectileObj.CurrentSpeed = num4;
     if (source is PlayerObj)
     {
         if (projectileObj.LifeSpan == 0f)
         {
             projectileObj.LifeSpan = (source as PlayerObj).ProjectileLifeSpan;
         }
         projectileObj.CollisionTypeTag = 2;
         projectileObj.Scale = data.Scale;
     }
     else
     {
         if (projectileObj.LifeSpan == 0f)
         {
             projectileObj.LifeSpan = 15f;
         }
         projectileObj.CollisionTypeTag = 3;
         projectileObj.Scale = data.Scale;
     }
     if (data.Target != null && data.Source.Flip == SpriteEffects.FlipHorizontally && data.ChaseTarget)
     {
         projectileObj.Orientation = MathHelper.ToRadians(180f);
     }
     if (data.Source is PlayerObj && (Game.PlayerStats.Traits.X == 22f || Game.PlayerStats.Traits.Y == 22f))
     {
         projectileObj.AccelerationX *= -1f;
         if (!data.LockPosition)
         {
             if (data.Source.Flip == SpriteEffects.FlipHorizontally)
             {
                 projectileObj.Flip = SpriteEffects.None;
             }
             else
             {
                 projectileObj.Flip = SpriteEffects.FlipHorizontally;
             }
         }
     }
     projectileObj.PlayAnimation(true);
     return projectileObj;
 }
Exemple #59
0
 public void ThrowDaggerProjectilesNeo()
 {
     if (this.m_daggerProjData != null)
     {
         this.m_daggerProjData.Dispose();
         this.m_daggerProjData = null;
     }
     this.m_daggerProjData = new ProjectileData(this)
     {
         SpriteName = "SpellDagger_Sprite",
         SourceAnchor = Vector2.Zero,
         Target = this.m_target,
         Speed = new Vector2(this.DaggerProjectileSpeed - 160f, this.DaggerProjectileSpeed - 160f),
         IsWeighted = false,
         RotationSpeed = 0f,
         Damage = base.Damage,
         AngleOffset = 0f,
         CollidesWithTerrain = false,
         Scale = this.DaggerSpellScale
     };
     Tween.RunFunction(0f, this, "CastDaggers", new object[]
     {
         false
     });
     Tween.RunFunction(0.05f, this, "CastDaggers", new object[]
     {
         true
     });
     Tween.RunFunction(0.1f, this, "CastDaggers", new object[]
     {
         true
     });
 }