InanZen

Explosive rod

Feb 15th, 2012
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.67 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Terraria;
  5. using Hooks;
  6. using TShockAPI;
  7.  
  8. namespace ExplosiveRod
  9. {
  10.  
  11.     [APIVersion(1, 11)]
  12.     public class ExplosiveRod: TerrariaPlugin
  13.     {
  14.         public static Dictionary<int, byte> cannonPlayers = new Dictionary<int, byte>();
  15.         public override string Name
  16.         {
  17.             get { return "Explosive rod"; }
  18.         }
  19.         public override string Author
  20.         {
  21.             get { return "by InanZen"; }
  22.         }
  23.         public override string Description
  24.         {
  25.             get { return "Shoots Explosives from ice rod"; }
  26.         }
  27.         public override Version Version
  28.         {
  29.             get { return new Version("1.0.1"); }
  30.         }
  31.         public override void Initialize()
  32.         {
  33.             GameHooks.Initialize += OnInitialize;
  34.             GetDataHandlers.TileEdit += TileEdit;
  35.         }
  36.         protected override void Dispose(bool disposing)
  37.         {
  38.             if (disposing)
  39.             {
  40.                 GameHooks.Initialize -= OnInitialize;
  41.                 GetDataHandlers.TileEdit -= TileEdit;
  42.             }
  43.             base.Dispose(disposing);
  44.         }
  45.         public ExplosiveRod(Main game)
  46.             : base(game)
  47.         {
  48.             Order = 5;
  49.         }
  50.         public void OnInitialize()
  51.         {
  52.             Commands.ChatCommands.Add(new Command("explosiverod", cannonCommand, "cannon"));
  53.         }
  54.         void TileEdit(Object sender, TShockAPI.GetDataHandlers.TileEditEventArgs args)
  55.         {
  56.             if (args.Type == 127 && cannonPlayers.Count > 0 && cannonPlayers.Keys.Contains(args.Player.UserID))
  57.             {
  58.                 byte cannonType = cannonPlayers[args.Player.UserID];
  59.                 if (cannonType == 1)
  60.                 {
  61.                     generateBoulder(args.X, args.Y);
  62.                     TShockAPI.TSPlayer.All.SendTileSquare(args.X, args.Y, 2);                  
  63.                 }
  64.                 else if (cannonType == 2)
  65.                 {
  66.                     generateExplosives(args.X, args.Y);
  67.                     Main.tile[args.X + 1, args.Y].active = true;
  68.                     Main.tile[args.X + 1, args.Y].wire = true;
  69.                     TShockAPI.TSPlayer.All.SendTileSquare(args.X, args.Y, 2);
  70.                     args.Handled = true;
  71.                     WorldGen.TripWire(args.X + 1, args.Y);
  72.                     Main.tile[args.X, args.Y].wire = false;
  73.                     Main.tile[args.X+1, args.Y].wire = false;
  74.                     TShockAPI.TSPlayer.All.SendTileSquare(args.X, args.Y, 2);
  75.                 }
  76.             }
  77.         }
  78.         public void generateExplosives(int x, int y)
  79.         {
  80.             Main.tile[x, y].active = true;
  81.             Main.tile[x, y].type = 141;
  82.             Main.tile[x, y].frameX = 0;
  83.             Main.tile[x, y].frameY = 18;
  84.             Main.tile[x, y].wire = true;
  85.         }
  86.         public void generateBoulder(int x, int y)
  87.         {
  88.             Main.tile[x, y].active = true;
  89.             Main.tile[x, y].type = 138;
  90.             Main.tile[x, y].frameX = 0;
  91.             Main.tile[x, y].frameY = 18;
  92.  
  93.             Main.tile[x + 1, y].active = true;
  94.             Main.tile[x + 1, y].type = 138;
  95.             Main.tile[x + 1, y].frameX = 18;
  96.             Main.tile[x + 1, y].frameY = 18;
  97.  
  98.             Main.tile[x, y - 1].active = true;
  99.             Main.tile[x, y - 1].type = 138;
  100.             Main.tile[x, y - 1].frameX = 0;
  101.             Main.tile[x, y - 1].frameY = 0;
  102.  
  103.             Main.tile[x + 1, y - 1].active = true;
  104.             Main.tile[x + 1, y - 1].type = 138;
  105.             Main.tile[x + 1, y - 1].frameX = 18;
  106.             Main.tile[x + 1, y - 1].frameY = 0;
  107.         }
  108.         public void cannonCommand(CommandArgs args)
  109.         {
  110.             string cmd = "";
  111.             if (args.Parameters.Count > 0)
  112.             {
  113.                 cmd = args.Parameters[0].ToLower();
  114.             }
  115.             switch (cmd)
  116.             {
  117.                 case "boulder":
  118.                     {
  119.                         if (cannonPlayers.Keys.Contains(args.Player.UserID))
  120.                         {
  121.                             cannonPlayers.Remove(args.Player.UserID);
  122.                             args.Player.SendMessage("Boulder rod disabled", Color.Violet);
  123.                         }
  124.                         else
  125.                         {
  126.                             cannonPlayers.Add(args.Player.UserID, 1);
  127.                             args.Player.SendMessage("Boulder rod enabled", Color.Violet);
  128.                         }
  129.                         break;
  130.                     }
  131.                 case "explosives":
  132.                     {
  133.                         if (cannonPlayers.Keys.Contains(args.Player.UserID))
  134.                         {
  135.                             cannonPlayers.Remove(args.Player.UserID);
  136.                             args.Player.SendMessage("Explosive rod disabled", Color.Violet);
  137.                         }
  138.                         else
  139.                         {
  140.                             cannonPlayers.Add(args.Player.UserID, 2);
  141.                             args.Player.SendMessage("Explosive rod enabled", Color.Violet);
  142.                         }
  143.                         break;
  144.                     }
  145.                 default:
  146.                     {
  147.                         args.Player.SendMessage("Available commands:", Color.Violet);
  148.                         args.Player.SendMessage("/cannon explosives - toggles explosive cannon", Color.Violet);
  149.                         args.Player.SendMessage("/cannon boulder - toggles boulder cannon", Color.Violet);
  150.                         break;
  151.                     }
  152.             }
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment