public override void Update() { if (Shell.Rnd.Next(0, 2) == 0 && !Cease) { Shell.RunQueue.Add(new VoidDel(delegate() { UpwardParticle Add = new UpwardParticle("PURPLESPRITE", new Vector2(Shell.Rnd.Next(140, 1140), Shell.Rnd.Next(200, 600)), (TAtlasInfo)Shell.AtlasDirectory["PURPLE"], 0.4f); Add.CenterOrigin = true; Add.ColourValue = new Color(0, 0, 0, 0); Add.AnimationQueue.Add(Animation.Retrieve("FADEINOUT")); Add.TransientAnimation = true; Shell.UpdateQueue.Add(Add); Shell.RenderQueue.Add(Add); })); } LastFireCountdown--; if (LastFireCountdown < 1) { LastFireCountdown = 1; } if (Shell.Rnd.Next(0, LastFireCountdown) == 0 && !Cease) { LastFireCountdown = 400; Shell.RunQueue.Add(new VoidDel(delegate() { Double Degree = Shell.Rnd.NextDouble() * (2 * Math.PI); Vector2 SpawnPos = (new Vector2((float)Math.Sin(Degree), (float)Math.Cos(Degree)) * 1000f) + new Vector2(640, 360); Transient Add = new Transient("MEME", SpawnPos, (TAtlasInfo)Shell.AtlasDirectory["MEMES"], ((float)Shell.Rnd.NextDouble() * 0.09f) + 0.405f); Add.CenterOrigin = true; Vector2 Target = new Vector2(Shell.Rnd.Next(400, 881), Shell.Rnd.Next(300, 420)); Vector2 Trajectory = (Target - Add.DrawCoords) * 2; Animation A = new Animation("MEMEFLOATER"); Animation B = new Animation("MEMEFLOATER_TURN"); SortedList Moves = Animation.CreateVectorTween(Trajectory, 7000, 33); A.WriteMovement(Moves); SortedList Rots = Animation.CreateFloatTween(Shell.Rnd.Next(-10, 10) / 10f, 1000, 33); B.WriteRotation(Rots); A.Loop = true; B.Loop = true; Add.AnimationQueue.Add(A); Add.AnimationQueue.Add(B); Add.SetAtlasFrame(new Point(Shell.Rnd.Next(0, 4), Shell.Rnd.Next(0, 4))); Add.Scale(new Vector2(-0.5f, -0.5f)); Shell.UpdateQueue.Add(Add); Shell.RenderQueue.Add(Add); })); } base.Update(); }
public override void Update() { base.Update(); if (Shell.DeleteQueue.Contains(this)) { foreach (WorldEntity E in Dependents) { Shell.DeleteQueue.Add(E); } } ArrayList CleanupR = new ArrayList(); foreach (WorldEntity D in Dependents) { if (!(Shell.UpdateQueue.Contains(D) || Shell.RenderQueue.Contains(D))) { CleanupR.Add(D); } } foreach (WorldEntity C in CleanupR) { Dependents.Remove(C); } CleanupR = new ArrayList(); int LocalTimeElapsed = Environment.TickCount - LastTime; if (ButtonScripts.Paused) { LocalTimeElapsed = 0; } MyTime += LocalTimeElapsed; if (ButtonScripts.Paused) { LastTime = Environment.TickCount; return; } if (MyTime > 300000000) { MyTime = 0; } if (States.Contains("FLOATING")) { if (AdjustSin == -100d) { AdjustSin = (MyTime / 1000f) - (Math.Floor((MyTime / 1000f) / (Math.PI * 2)) * (Math.PI * 2)); } Move(new Vector2(0, (float)(Math.Sin(MyTime / 1000f - AdjustSin) - Math.Sin((MyTime / 1000f - AdjustSin) - 60)) * 0.75f)); } if (States.Contains("GLOW")) { if (MyMask == null) { MyMask = new EssenseGlow("BIGSOFIA_CHILD_ESSENCEGLOW", pDrawCoords + new Vector2(35, 100), (TAtlasInfo)Shell.AtlasDirectory["BIGJUDGINGGLOW"], LayerDepth + 0.1f, Name); Dependents.Add(MyMask); Shell.RunQueue.Add(new VoidDel(delegate() { Shell.UpdateQueue.Add(MyMask); Shell.RenderQueue.Add(MyMask); } )); } else { MyMask.QuickMoveTo(pDrawCoords + new Vector2(35, 100)); } } else if (MyMask != null) { Shell.DeleteQueue.Add(MyMask); MyMask = null; } if (States.Contains("SHIFTER")) { if (Shell.Rnd.Next(0, 20) == 0) { int AY = Shell.Rnd.Next(0, 3); int AX = Shell.Rnd.Next(0, 4); if (AY == 2) { AX = Shell.Rnd.Next(0, 2); } pAtlasCoordinates = new Point(AX, AY); if (MyMask != null && pAtlasCoordinates != new Point(0, 0)) { MyMask.Drawable = false; } else if (MyMask != null) { MyMask.Drawable = true; } } } else { if (MyMask != null) { MyMask.Drawable = true; } } if (States.Contains("SPEW1")) { if (MyTime % SpewFreqencyOne < 1000) { SetForSpew1 = true; if (Shell.Rnd.Next(0, 2) == 1) { SpewVar1.X = 1; } else { SpewVar1.X = -1; } if (Shell.Rnd.Next(0, 2) == 1) { SpewVar1.Y = 1; } else { SpewVar1.Y = -1; } } if (SetForSpew1 && (MyTime % SpewFreqencyOne) - 1000 > 0) { if (SpewCounter1 < Math.Floor(((MyTime % SpewFreqencyOne) - 1000) / 50f) + 1) { Transient Add = new Transient("BIGSOFIA_CHILD_SPEW", pDrawCoords + new Vector2(0, -80), (TAtlasInfo)Shell.AtlasDirectory["BIGSOFIA"], LayerDepth - 0.1f + (0.001f * SpewCounter1)); Dependents.Add(Add); Add.Lifespan = 1500; Add.CenterOrigin = true; double SinNum = ((Math.PI / 6d) * SpewCounter1); Vector2 Trajectory = new Vector2((float)Math.Sin(SinNum) * 1000f * SpewVar1.X, (float)Math.Cos(SinNum) * 1000f * SpewVar1.Y); Animation A = new Animation("BIGSOFIASPEW"); Animation B = new Animation("BIGSOFIASPEW_TURN"); SortedList Moves = Animation.CreateVectorTween(Trajectory, 1000, 20); A.WriteMovement(Moves); SortedList Rots = Animation.CreateFloatTween(Shell.Rnd.Next(-10, 10) / 10f, 2000, 20); B.WriteRotation(Rots); A.Loop = true; B.Loop = true; Add.AnimationQueue.Add(A); Add.AnimationQueue.Add(B); int AY = Shell.Rnd.Next(0, 3); int AX = Shell.Rnd.Next(0, 4); if (AY == 2) { AX = Shell.Rnd.Next(0, 2); if (Shell.Rnd.Next(0, 20) == 0) { AX = 2; } } Add.SetAtlasFrame(new Point(AX, AY)); Add.Scale(new Vector2(-0.6f, -0.6f)); Shell.RunQueue.Add(new VoidDel(delegate() { Shell.UpdateQueue.Add(Add); Shell.RenderQueue.Add(Add); })); SpewCounter1++; if (SpewCounter1 >= 12) { SpewCounter1 = 0; SetForSpew1 = false; } } } } else { SetForSpew1 = false; } if (States.Contains("SPEW2")) { if (MyTime % SpewFreqencyTwo < 1000) { SetForSpew2 = true; } if (SetForSpew2 && (MyTime % SpewFreqencyTwo) - 1000 > 0) { if (SpewCounter2 < Math.Floor(((MyTime % SpewFreqencyTwo) - 1000) / 300f) + 1) { for (int i = 0; i < 12; i++) { Transient Add = new Transient("BIGSOFIA_CHILD_SPEW", pDrawCoords + new Vector2(0, -70), (TAtlasInfo)Shell.AtlasDirectory["BIGSOFIA"], LayerDepth - 0.1f + (0.001f * SpewCounter1)); Dependents.Add(Add); Add.Lifespan = 1500; Add.CenterOrigin = true; double SinNum = ((Math.PI / 6d) * i); Vector2 Trajectory = new Vector2((float)Math.Sin(SinNum) * 1000f, (float)Math.Cos(SinNum) * 1000f); Animation A = new Animation("BIGSOFIASPEW"); Animation B = new Animation("BIGSOFIASPEW_TURN"); SortedList Moves = Animation.CreateVectorTween(Trajectory, 1000, 20); A.WriteMovement(Moves); SortedList Rots = Animation.CreateFloatTween(Shell.Rnd.Next(-10, 10) / 10f, 2000, 20); B.WriteRotation(Rots); A.Loop = true; B.Loop = true; Add.AnimationQueue.Add(A); Add.AnimationQueue.Add(B); int AY = Shell.Rnd.Next(0, 3); int AX = Shell.Rnd.Next(0, 4); if (AY == 2) { AX = Shell.Rnd.Next(0, 2); if (Shell.Rnd.Next(0, 20) == 0) { AX = 2; } } Add.SetAtlasFrame(new Point(AX, AY)); Add.Scale(new Vector2(-0.6f, -0.6f)); Shell.RunQueue.Add(new VoidDel(delegate() { Shell.UpdateQueue.Add(Add); Shell.RenderQueue.Add(Add); })); } SpewCounter2++; if (SpewCounter2 >= SpewWavesTwo) { SpewCounter2 = 0; SetForSpew2 = false; } } } } else { SetForSpew2 = false; } LastTime = Environment.TickCount; }