diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index d8d5002d..a9e15013 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -358,6 +358,10 @@ namespace TShockAPI { HelpText = "Starts a Pumpkin Moon invasion at the specified wave." }); + add(new Command(Permissions.invade, SnowInvasion, "snowinvasion") + { + HelpText = "Starts a Snow Moon invasion at the specified wave." + }); #endregion #region TP Commands add(new Command(Permissions.home, Home, "home") @@ -395,6 +399,14 @@ namespace TShockAPI { HelpText = "Sets a blood moon." }); + add(new Command(Permissions.snowmoon, SnowMoon, "snowmoon") + { + HelpText = "Sets a snow moon." + }); + add(new Command(Permissions.pumpkinmoon, PumpkinMoon, "pumpkinmoon") + { + HelpText = "Sets a pumpkin moon." + }); add(new Command(Permissions.grow, Grow, "grow") { AllowServer = false, @@ -1578,6 +1590,18 @@ namespace TShockAPI TShock.Utils.Broadcast(string.Format("{0} turned on the blood moon.", args.Player.Name), Color.Green); } + private static void SnowMoon(CommandArgs args) + { + TSPlayer.Server.SetSnowMoon(true); + TShock.Utils.Broadcast(string.Format("{0} turned on the snow moon.", args.Player.Name), Color.Green); + } + + private static void PumpkinMoon(CommandArgs args) + { + TSPlayer.Server.SetPumpkinMoon(true); + TShock.Utils.Broadcast(string.Format("{0} turned on the pumpkin moon.", args.Player.Name), Color.Green); + } + private static void Eclipse(CommandArgs args) { TSPlayer.Server.SetEclipse(true); @@ -1634,7 +1658,7 @@ namespace TShockAPI Main.bloodMoon = false; NPC.waveKills = 0f; NPC.waveCount = wave; - string text = "Pumpkin Invasion started at wave;" + wave; + string text = "Pumpkin Invasion started at wave: " + wave; if (Main.netMode == 0) { Main.NewText(text, 175, 75, 255, false); @@ -1645,6 +1669,35 @@ namespace TShockAPI NetMessage.SendData(25, -1, -1, text, 255, 175f, 75f, 255f, 0); } } + + private static void SnowInvasion(CommandArgs args) + { + TSPlayer.Server.SetTime(false, 0.0); + + int wave = 1; + if (args.Parameters.Count != 0) + int.TryParse(args.Parameters[0], out wave); + + Main.snowMoon = true; + Main.pumpkinMoon = false; + Main.bloodMoon = false; + if (Main.netMode != 1) + { + NPC.waveKills = 0f; + NPC.waveCount = 1; + string text = "Snow Invasion started at wave: " + wave; + if (Main.netMode == 0) + { + Main.NewText(text, 175, 75, 255, false); + return; + } + if (Main.netMode == 2) + { + NetMessage.SendData(25, -1, -1, text, 255, 175f, 75f, 255f, 0); + } + } + } + private static void Hardmode(CommandArgs args) { if (Main.hardMode) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index e0eb0ad4..f9027533 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -3216,6 +3216,7 @@ namespace TShockAPI case -2: case -3: case -4: + case -5: invasion = true; break; case 4: @@ -3226,6 +3227,7 @@ namespace TShockAPI case 125: case 126: case 127: + case 128: case 134: case 222: case 245: @@ -3254,6 +3256,9 @@ namespace TShockAPI string boss; switch (Type) { + case -5: + boss = "a snow invasion"; + break; case -4: boss = "a pumpkin invasion"; break; diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 108651ac..4f7d68f4 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -227,6 +227,12 @@ namespace TShockAPI [Description("User can force a blood moon.")] public static readonly string bloodmoon = "tshock.world.time.bloodmoon"; + [Description("User can force a pumpkin moon.")] + public static readonly string pumpkinmoon = "tshock.world.time.pumpkinmoon"; + + [Description("User can force a snow moon.")] + public static readonly string snowmoon = "tshock.world.time.snowmoon"; + [Description("User can set the time.")] public static readonly string time = "tshock.world.time.set"; diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index f90361bc..67bee342 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -1195,6 +1195,18 @@ namespace TShockAPI Main.bloodMoon = bloodMoon; SetTime(false, 0); } + + public void SetSnowMoon(bool snowMoon) + { + Main.snowMoon = snowMoon; + SetTime(false, 0); + } + + public void SetPumpkinMoon(bool pumpkinMoon) + { + Main.pumpkinMoon = pumpkinMoon; + SetTime(false, 0); + } public void SetEclipse(bool Eclipse) {