Advertisement
Spectrewiz

EpicDiseasesDev

Mar 15th, 2012
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.50 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using System.Drawing;
  5. using System.Timers;
  6. using Terraria;
  7. using Hooks;
  8. using TShockAPI;
  9. using TShockAPI.DB;
  10. using System.ComponentModel;
  11.  
  12. namespace EpicDiseases
  13. {
  14.     [APIVersion(1, 11)]
  15.     public class EpicDiseases : TerrariaPlugin
  16.     {
  17.         public override string Name
  18.         {
  19.             get { return "Epic Diseases DEV"; }
  20.         }
  21.  
  22.         public override string Author
  23.         {
  24.             get { return "Spectrewiz"; }
  25.         }
  26.  
  27.         public override string Description
  28.         {
  29.             get { return "So far theres pretty much nothing that goes on."; }
  30.         }
  31.  
  32.         public override Version Version
  33.         {
  34.             get { return new Version("0.0.1"); }
  35.         }
  36.  
  37.         public static List<Player> Players = new List<Player>();
  38.         public static Timer aTimer = new Timer(5000);
  39.         public override void Initialize()
  40.         {
  41.             GameHooks.Update += OnUpdate;
  42.             GameHooks.Initialize += OnInitialize;
  43.             NetHooks.GreetPlayer += OnGreetPlayer;
  44.             ServerHooks.Leave += OnLeave;
  45.             ServerHooks.Chat += OnChat;
  46.             aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
  47.         }
  48.  
  49.         protected override void Dispose(bool disposing)
  50.         {
  51.             if (disposing)
  52.             {
  53.                 GameHooks.Update -= OnUpdate;
  54.                 GameHooks.Initialize -= OnInitialize;
  55.                 NetHooks.GreetPlayer -= OnGreetPlayer;
  56.                 ServerHooks.Leave -= OnLeave;
  57.                 ServerHooks.Chat -= OnChat;
  58.             }
  59.             base.Dispose(disposing);
  60.         }
  61.  
  62.         public EpicDiseases(Main game)
  63.             : base(game)
  64.         {
  65.         }
  66.  
  67.         public void OnInitialize()
  68.         {
  69.             bool infect = false;
  70.  
  71.             foreach (Group group in TShock.Groups.groups)
  72.             {
  73.                 if (group.Name != "superadmin")
  74.                 {
  75.                     if (group.HasPermission("Infect"))
  76.                         infect = true;
  77.                 }
  78.             }
  79.  
  80.             List<string> permlist = new List<string>();
  81.             if (!infect)
  82.                 permlist.Add("Infect");
  83.             TShock.Groups.AddPermissions("trustedadmin", permlist);
  84.  
  85.             Commands.ChatCommands.Add(new Command("Infect", Infect, "infect"));
  86.         }
  87.  
  88.         public void OnUpdate()
  89.         {
  90.             aTimer.Start();
  91.         }
  92.  
  93.         public void OnGreetPlayer(int who, HandledEventArgs e)
  94.         {
  95.             lock (Players)
  96.                 Players.Add(new Player(who));
  97.         }
  98.  
  99.         public void OnLeave(int ply)
  100.         {
  101.             lock (Players)
  102.             {
  103.                 for (int i = 0; i < Players.Count; i++)
  104.                 {
  105.                     if (Players[i].Index == ply)
  106.                     {
  107.                         Players.RemoveAt(i);
  108.                         break; //Found the player, break.
  109.                     }
  110.                 }
  111.             }
  112.         }
  113.  
  114.         public void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
  115.         {
  116.         }
  117.  
  118.         public static void Help(CommandArgs args)
  119.         {
  120.             args.Player.SendMessage("This plugin is completely evil", Color.DarkGray);
  121.         }
  122.  
  123.         public static void Rules(CommandArgs args)
  124.         {
  125.             args.Player.SendMessage("I am still wondering if this is going to be a Supernatural Plugin, or a Black Plague Plugin.", Color.DarkRed);
  126.         }
  127.  
  128.         public static void InfectPlayer(string ply)
  129.         {
  130.             var playername = Player.GetPlayerByName(ply);
  131.             if (TShock.Utils.FindPlayer(ply).Count > 0)
  132.             {
  133.                 playername.SetState(Infected.Infected);
  134.                 foreach (Player player in EpicDiseases.Players)
  135.                 {
  136.                     player.TSPlayer.SendMessage("A foul odor fills the air.", Color.DarkGray);
  137.                 }
  138.             }
  139.         }
  140.  
  141.         public static void CurePlayer(string ply)
  142.         {
  143.             var playername = Player.GetPlayerByName(ply);
  144.             if (TShock.Utils.FindPlayer(ply).Count > 0)
  145.             {
  146.                 playername.SetState(Infected.Clear);
  147.                 foreach (Player player in EpicDiseases.Players)
  148.                 {
  149.                     player.TSPlayer.SendMessage("A cleansing magic sweeps throught the land curing everyone.", Color.Aqua);
  150.                 }
  151.             }
  152.         }
  153.  
  154.         public static void Symptoms()
  155.         {
  156.             if (Players.Count > 0)
  157.             {
  158.                 foreach (Player player in EpicDiseases.Players)
  159.                 {
  160.                     if (player.GetState() == Infected.Infected)
  161.                     {
  162.                         player.TSPlayer.DamagePlayer(23);
  163.                         player.TSPlayer.SendMessage("*Cough Cough*", Color.DarkGray);
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.  
  169.         public static void Infect(CommandArgs args)
  170.         {
  171.             string cmd = "help";
  172.             if (args.Parameters.Count > 0)
  173.             {
  174.                 cmd = args.Parameters[0].ToLower();
  175.             }
  176.             switch (cmd)
  177.             {
  178.                 case "help":
  179.                     Help(args);
  180.                     break;
  181.                 case "rules":
  182.                     Rules(args);
  183.                     break;
  184.                 case "iplayer":
  185.                     try
  186.                     {
  187.                         InfectPlayer(args.Parameters[1]);
  188.                         args.Player.SendMessage(string.Format("You stir up Black Magic, and the foul plague sweeps through mankind."), Color.DarkGray);
  189.                     }
  190.                     catch (Exception e)
  191.                     {
  192.                         args.Player.SendMessage(string.Format("Cannot find {0}", args.Parameters[1]), Color.Red);
  193.                         Console.ForegroundColor = ConsoleColor.Red;
  194.                         Console.WriteLine(e.Message);
  195.                         Console.ResetColor();
  196.                     }
  197.                     break;
  198.                 case "infectplayer":
  199.                     try
  200.                     {
  201.                         InfectPlayer(args.Parameters[1]);
  202.                         args.Player.SendMessage(string.Format("You stir up Black Magic, and the foul plague sweeps through mankind."), Color.DarkGray);
  203.                     }
  204.                     catch (Exception e)
  205.                     {
  206.                         args.Player.SendMessage(string.Format("Cannot find {0}", args.Parameters[1]), Color.Red);
  207.                         Console.ForegroundColor = ConsoleColor.Red;
  208.                         Console.WriteLine(e.Message);
  209.                         Console.ResetColor();
  210.                     }
  211.                     break;
  212.                 case "cplayer":
  213.                     try
  214.                     {
  215.                         CurePlayer(args.Parameters[1]);
  216.                         args.Player.SendMessage(string.Format("You sweep through the land spreading cleansing magic everywhere. The plague has been cured!"), Color.Aqua);
  217.                     }
  218.                     catch (Exception e)
  219.                     {
  220.                         args.Player.SendMessage(string.Format("Cannot find {0}", args.Parameters[1]), Color.Red);
  221.                         Console.ForegroundColor = ConsoleColor.Red;
  222.                         Console.WriteLine(e.Message);
  223.                         Console.ResetColor();
  224.                     }
  225.                     break;
  226.                 case "cureplayer":
  227.                     try
  228.                     {
  229.                         CurePlayer(args.Parameters[1]);
  230.                         args.Player.SendMessage(string.Format("You sweep through the land spreading cleansing magic everywhere. The plague has been cured!"), Color.Aqua);
  231.                     }
  232.                     catch (Exception e)
  233.                     {
  234.                         args.Player.SendMessage(string.Format("Cannot find {0}", args.Parameters[1]), Color.Red);
  235.                         Console.ForegroundColor = ConsoleColor.Red;
  236.                         Console.WriteLine(e.Message);
  237.                         Console.ResetColor();
  238.                     }
  239.                     break;
  240.                 default:
  241.                     Help(args);
  242.                     break;
  243.             }
  244.         }
  245.  
  246.         public static void OnTimedEvent(object source, ElapsedEventArgs e)
  247.         {
  248.             Symptoms();
  249.         }
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement