/*private void Npc_UseDoor(NpcUseDoorEventArgs e) {
         * if (this.isDisposed || !this.hooksEnabled || e.Handled)
         *  return;
         *
         * if (this.CircuitHandler != null)
         *  e.Handled = this.CircuitHandler.HandleDoorUse(TSPlayer.Server, new DPoint(e.X, e.Y), e.IsOpening, e.Npc);
         * }*/

        private void Projectile_TriggerPressurePlate(TriggerPressurePlateEventArgs <Projectile> e)
        {
            if (this.isDisposed || !this.hooksEnabled || e.Handled)
            {
                return;
            }

            if (this.CircuitHandler != null)
            {
                e.Handled = this.CircuitHandler.HandleTriggerPressurePlate(TSPlayer.Server, new DPoint(e.TileX, e.TileY), true);
            }
        }
    /*private void Npc_UseDoor(NpcUseDoorEventArgs e) {
      if (this.isDisposed || !this.hooksEnabled || e.Handled)
        return;

      if (this.CircuitHandler != null)
        e.Handled = this.CircuitHandler.HandleDoorUse(TSPlayer.Server, new DPoint(e.X, e.Y), e.IsOpening, e.Npc);
    }*/

    private void Projectile_TriggerPressurePlate(TriggerPressurePlateEventArgs<Projectile> e) {
      if (this.isDisposed || !this.hooksEnabled || e.Handled)
        return;

      if (this.CircuitHandler != null)
        e.Handled = this.CircuitHandler.HandleTriggerPressurePlate(TSPlayer.Server, new DPoint(e.TileX, e.TileY), true);
    }
Ejemplo n.º 3
0
		internal bool InvokeProjectileTriggerPressurePlate(Projectile projectile, int tileX, int tileY)
		{
			TriggerPressurePlateEventArgs<Projectile> args = new TriggerPressurePlateEventArgs<Projectile>
			{
				Object = projectile,
				TileX = tileX,
				TileY = tileY
			};

			this.ProjectileTriggerPressurePlate.Invoke(args);

			return args.Handled;
		}
Ejemplo n.º 4
0
		internal bool InvokePlayerTriggerPressurePlate(Player player, int tileX, int tileY)
		{
			TriggerPressurePlateEventArgs<Player> args = new TriggerPressurePlateEventArgs<Player>
			{
				Object = player,
				TileX = tileX,
				TileY = tileY
			};

			this.PlayerTriggerPressurePlate.Invoke(args);

			return args.Handled;
		}
Ejemplo n.º 5
0
		internal bool InvokeNpcTriggerPressurePlate(NPC npc, int tileX, int tileY)
		{
			TriggerPressurePlateEventArgs<NPC> args = new TriggerPressurePlateEventArgs<NPC>
			{
				Object = npc,
				TileX = tileX,
				TileY = tileY
			};

			this.NpcTriggerPressurePlate.Invoke(args);

			return args.Handled;
		}
Ejemplo n.º 6
0
 /// <summary>
 /// ProjectileTriggerPressurePlate callback.
 /// </summary>
 /// <param name="args"></param>
 private void OnProjectileTriggerPressurePlate(TriggerPressurePlateEventArgs<Projectile> args)
 {
     lock (this.m_AddonsLock)
     {
         this.m_Addons.ForEach(a =>
             {
                 var ret = a.Value.InvokeEvent("ProjectileTriggerPressurePlate", args);
                 if (ret != null && ret.Length >= 1)
                 {
                     bool result;
                     if (bool.TryParse(ret[0].ToString(), out result) && result)
                         args.Handled = true;
                 }
             });
     }
 }
Ejemplo n.º 7
0
        private void OnPlayerTriggerPressurePlate(TriggerPressurePlateEventArgs <Player> args)
        {
            if (!_config.Enabled)
            {
                return;
            }
            var underBlock = Main.tile[args.TileX, args.TileY + 1];

            if (underBlock.type != _config.BlockId)
            {
                return;
            }
            var underLeftBlock  = Main.tile[args.TileX - 1, args.TileY + 1];
            var underRightBlock = Main.tile[args.TileX + 1, args.TileY + 1];

            if (underRightBlock.type != _config.BlockId || underLeftBlock.type != _config.BlockId)
            {
                return;
            }
            if (!TShock.Players[args.Object.whoAmI].HasPermission("terrajump.use"))
            {
                TShock.Players[args.Object.whoAmI].SendErrorMessage("You don't have enough permissions to do this!");
                return;
            }
            var ow = TShock.Players[args.Object.whoAmI];

            try
            {
                if (_dMgr.PadDisables.Count(u => u.Uuid == ow.UUID) != 0)
                {
                    var dis = _dMgr.PadDisables.Find(u => u.Uuid == ow.UUID);
                    if (dis.IsSelf)
                    {
                        _dMgr.PadDisables.Remove(dis);
                        if (_dMgr.UserList.Count(u => u.Uuid == ow.UUID) == 0)
                        {
                            if (_dMgr.AddUser(new DisabledManager.TjUser
                            {
                                Uuid = ow.UUID,
                                SelfDisabled = false,
                                DisabledPads = new List <DisabledManager.PadPoint> {
                                    new DisabledManager.PadPoint {
                                        X = args.TileX, Y = args.TileY
                                    }
                                }
                            }))
                            {
                                ow.SendSuccessMessage("Successfully disabled this jump pad for you!");
                                return;
                            }

                            ow.SendErrorMessage("Failed to disable this jump pad for you!");
                        }

                        var user = _dMgr.UserList.Find(u => u.Uuid == ow.UUID);
                        if (user.DisabledPads.RemoveAll(p => p.X == args.TileX && p.Y == args.TileY) == 0)
                        {
                            user.DisabledPads.Add(new DisabledManager.PadPoint {
                                X = args.TileX, Y = args.TileY
                            });
                            if (_dMgr.ModifyUser(user))
                            {
                                ow.SendSuccessMessage("Successfully disabled this jump pad for you!");
                                return;
                            }

                            ow.SendErrorMessage("Failed to disable this jump pad for you!");
                        }

                        if (_dMgr.ModifyUser(user))
                        {
                            ow.SendSuccessMessage("Successfully enabled this jump pad for you!");
                        }
                        else
                        {
                            ow.SendErrorMessage("Failed to enabled this jump pad for you!");
                            return;
                        }
                    }
                    else
                    {
                        _dMgr.PadDisables.Remove(dis);
                        if (_dMgr.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) == 0)
                        {
                            if (_dMgr.AddPad(new DisabledManager.PadPoint {
                                X = args.TileX, Y = args.TileY
                            }))
                            {
                                ow.SendSuccessMessage("Successfully disabled this jump pad! (X: {0} Y: {1})",
                                                      args.TileX, args.TileY);
                                return;
                            }

                            ow.SendErrorMessage("Failed to disable this jump pad!");
                        }
                        else
                        {
                            if (_dMgr.RemovePad(_dMgr.DisabledPads.Find(p => p.X == args.TileX && p.Y == args.TileY)))
                            {
                                ow.SendSuccessMessage("Successfully enabled this jump pad! (X: {0} Y: {1})", args.TileX,
                                                      args.TileY);
                            }
                            else
                            {
                                ow.SendErrorMessage("Failed to enable this jump pad!");
                                return;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                TShock.Log.Error($"Exception!\n{e}\n{e.StackTrace}");
            }
            if (_dMgr.UserList.Count(u => u.Uuid == ow.UUID && (u.SelfDisabled || u.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) != 0)) != 0)
            {
                return;
            }
            if (_dMgr.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) != 0)
            {
                return;
            }
            ow.TPlayer.velocity.Y -= _config.Height;
            TSPlayer.All.SendData(PacketTypes.PlayerUpdate, "", ow.Index);
        }
Ejemplo n.º 8
0
        //End commands ecexute voids



        //Presure Plate trigger void
        void OnPlayerTriggerPressurePlate(TriggerPressurePlateEventArgs <Player> args)
        {
            if (!pressureTriggerEnable)
            {
                return;
            }
            else if (!TShock.Players[args.Object.whoAmI].HasPermission("terrajump.usepad"))
            {
                return;
            }
            //TShock.Log.ConsoleInfo("[PlTPP]Starting procedure");
            bool     pds           = false;
            TSPlayer ow            = TShock.Players[args.Object.whoAmI];
            Tile     pressurePlate = Main.tile[args.TileX, args.TileY];
            Tile     underBlock    = Main.tile[args.TileX, args.TileY + 1];
            Tile     upBlock       = Main.tile[args.TileX, args.TileY - 1];

            if (underBlock.type == Terraria.ID.TileID.SlimeBlock)
            {
                //TShock.Log.ConsoleInfo("[PlTPP]O on 'Under' this slime block are!");
                bool ulb             = false;
                bool urb             = false;
                Tile underLeftBlock  = Main.tile[args.TileX - 1, args.TileY + 1];
                Tile underRightBlock = Main.tile[args.TileX + 1, args.TileY + 1];
                if (underLeftBlock.type == Terraria.ID.TileID.SlimeBlock)
                {
                    //TShock.Log.ConsoleInfo("[PlTPP]Ok on left!");
                    ulb = true;
                }
                if (underRightBlock.type == Terraria.ID.TileID.SlimeBlock)
                {
                    //TShock.Log.ConsoleInfo("[PlTPP]Ok on right!");
                    urb = true;
                }
                if (ulb && urb)
                {
                    pds = true;
                }
            }
            else if (upBlock.type == Terraria.ID.TileID.SlimeBlock)
            {
                //TShock.Log.ConsoleInfo("[PlTPP]O on 'Up' this slime block are!");
                bool ulb          = false;
                bool urb          = false;
                Tile upLeftBlock  = Main.tile[args.TileX - 1, args.TileY - 1];
                Tile upRightBlock = Main.tile[args.TileX + 1, args.TileY - 1];
                if (upLeftBlock.type == Terraria.ID.TileID.SlimeBlock)
                {
                    //TShock.Log.ConsoleInfo("[PlTPP]Ok on left!");
                    ulb = true;
                }
                if (upRightBlock.type == Terraria.ID.TileID.SlimeBlock)
                {
                    //TShock.Log.ConsoleInfo("[PlTPP]Ok on right!");
                    urb = true;
                }
                if (ulb && urb)
                {
                    pds = true;
                }
            }
            else
            {
                //TShock.Log.ConsoleInfo("[PlTPP]Can't find any SlimeBlocks! Stoping");
                return;
            }

            if (pds)
            {
                ow.TPlayer.velocity.Y = ow.TPlayer.velocity.Y - height;
                TSPlayer.All.SendData(PacketTypes.PlayerUpdate, "", ow.Index);
                //TShock.Log.ConsoleInfo("[PlTPP]Wooh! Procedure succesfull finish!");
                ow.SendInfoMessage("Jump!");
            }
        }