//protected override void OnTick() //{ // base.OnTick(); //} public override void OnWaveChange() { switch (Main.invasionProgressWave) { case 1: TwitchChat.Post("Vortex tower was awoken!", Color.ForestGreen); EventPlayer.LunarSky = LunarSkies.Vortex; if (Main.netMode != 1) { GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } break; case 2: TwitchChat.Post("Vortex tower was defeated!", Color.ForestGreen); TwitchChat.Post("Solar tower was awoken!", Color.Orange); EventPlayer.LunarSky = LunarSkies.Solar; if (Main.netMode != 1) { GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } break; case 3: TwitchChat.Post("Solar tower was defeated!", Color.Orange); TwitchChat.Post("Stardust tower was awoken!", Color.AliceBlue); EventPlayer.LunarSky = LunarSkies.Stardust; if (Main.netMode != 1) { GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } break; case 4: TwitchChat.Post("Stardust tower was defeated!", Color.AliceBlue); TwitchChat.Post("Nebula tower was awoken!", Color.Violet); EventPlayer.LunarSky = LunarSkies.Nebula; if (Main.netMode != 1) { GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } break; case 5: TwitchChat.Post("Nebula tower was defeated!", Color.Violet); TwitchChat.Post("Impeting doom approach...", Color.PaleGreen); EventPlayer.LunarSky = LunarSkies.None; if (Main.netMode != 1) { NPC.NewNPC(Main.spawnTileX, Main.spawnTileY, NPCID.MoonLordCore); GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } break; } }
/// <summary> /// Used by mod internally! Better use <see cref="EventWorld.StartWorldEvent(WorldEvent)" /> to start events! Use only /// if you KNOW what you do!! /// Start event starting sequence, and send event data for all players. Can break things if called outside /// <see cref="EventWorld" />! /// </summary> /// <param name="world"></param> /// <param name="mod"></param> internal void EventStart(EventWorld world, TwitchChat mod) { if (Main.netMode == NetmodeID.Server) // Server { NetMessage.BroadcastChatMessage(NetworkText.FromKey(LanguageManager.Instance.GetTextValue(StartString)), StartColor); } else if (Main.netMode == NetmodeID.SinglePlayer) // Single Player { Main.NewText(Language.GetTextValue(LanguageManager.Instance.GetTextValue(StartString)), StartColor); } //Post(Language.GetTextValue(LanguageManager.Instance.GetTextValue(StartString)), StartColor); started = true; TimeLeft = Length; //timeStart = Main.time; //Count Players for (var i = 0; i < 255; i++) { if (Main.player[i] != null && Main.player[i].active && Main.player[i].statLifeMax >= 200) { numPlayers++; } } if (Type == InvasionType.Invasion) { Main.invasionSize = MultiplyByPlayers ? InvasionSize * numPlayers : InvasionSize; Main.invasionProgressDisplayLeft = Main.invasionSize - Main.invasionProgress; Main.invasionSizeStart = Main.invasionSize; TimeLeft = Main.invasionSize; Main.invasionProgressWave = 1; Main.invasionProgress = 0; Main.invasionX = Main.spawnTileX; Main.invasionProgressIcon = 0 + 8; Main.invasionProgressMax = Main.invasionSizeStart; Main.invasionType = -1; OnWaveChange(); } OnStart(); if (Main.netMode != 1) //If we NOT the server client { GlobalSpawnOverride.StartOverrideSpawnRate(SpawnRateMul, MaxSpawnMul); if (Type == InvasionType.WorldEvent && Invaders != null) { GlobalSpawnOverride.OverridePool(Invaders, DisableOthers, true); } else { if (InvasionList != null && InvasionList.Count != 0) { GlobalSpawnOverride.OverridePool(GetListForCurWave, DisableOthers, true); } } if (InvadersDrop != null) { GlobalSpawnOverride.OverrideItemPool(InvadersDrop); } } if (Main.netMode == 2) { ModPacket netMessage = mod.GetPacket(); netMessage.Write((byte)NetPacketType.EventWasStarted); netMessage.Write(GetType().Name); netMessage.Write(TimeLeft); netMessage.Write((byte)Type); if (Type == InvasionType.Invasion) { WriteWaveData(ref netMessage); } netMessage.Send(); } }