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(); }
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(); }
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(); }
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(); }
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); }
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(); } }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); } }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); } }
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(); }
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(); }
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; }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); } }
public FireProjectileLogicAction(ProjectileManager projectileManager, ProjectileData data) { m_projectileManager = projectileManager; m_data = data.Clone(); }
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(); }
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(); }
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; } }
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 }); }
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(); }
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; }
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 }); }