コード例 #1
0
ファイル: JewelleryTeleport.cs プロジェクト: Rut0/RSPS-CSharp
        private static bool canTeleport(Player p, JewellerySlot js)
        {
            if (p.getTemporaryAttribute("teleporting") != null)
            {
                return(false);
            }
            if (p.getDuel() != null)
            {
                if (p.getDuel().getStatus() < 4)
                {
                    p.getDuel().declineDuel();
                }
                else if (p.getDuel().getStatus() == 5 || p.getDuel().getStatus() == 6)
                {
                    p.getPackets().sendMessage("You cannot teleport whilst in a duel.");
                    return(false);
                }
                else if (p.getDuel().getStatus() == 8)
                {
                    p.getDuel().recieveWinnings(p);
                }
            }
            int wildLvl = js.index == 1 || js.index == 2 ? 30 : 20;

            if (Location.inWilderness(p.getLocation()) && p.getLocation().wildernessLevel() >= wildLvl)
            {
                p.getPackets().sendMessage("You cannot teleport above level " + wildLvl + " wilderness!");
                return(false);
            }
            if (Location.inFightCave(p.getLocation()))
            {
                FightCave.antiTeleportMessage(p);
                return(false);
            }
            if (p.getTemporaryAttribute("teleblocked") != null)
            {
                p.getPackets().sendMessage("A magical force prevents you from teleporting!");
                return(false);
            }
            if (Location.inFightPits(p.getLocation()))
            {
                p.getPackets().sendMessage("You are unable to teleport from the fight pits.");
                return(false);
            }
            if (p.getTemporaryAttribute("unmovable") != null)
            {
                return(false);
            }
            return(true);
        }
コード例 #2
0
ファイル: JewelleryTeleport.cs プロジェクト: Rut0/RSPS-CSharp
        public static bool teleport(Player p, int opt, JewellerySlot js)
        {
            if (js == null)
            {
                return(false);
            }
            if (js.index == -1 || js.index > 3 || opt > 6)
            {
                return(false);
            }
            if (!canTeleport(p, js))
            {
                p.getPackets().closeInterfaces();
                return(true);
            }
            if ((js.index == 2 && opt == 4) || (js.index != 2 && opt == 6))
            {
                p.getPackets().sendMessage("You stay where you are.");
                p.getPackets().closeInterfaces();
                return(true);
            }
            opt -= 2; // Used to get the 'index' from the button id.
            p.setLastGraphics(new Graphics(1684));
            p.setLastAnimation(new Animation(9603));
            p.getWalkingQueue().resetWalkingQueue();
            p.getPackets().clearMapFlag();
            p.setTemporaryAttribute("teleporting", true);
            p.setTemporaryAttribute("unmovable", true);
            p.removeTemporaryAttribute("autoCasting");
            p.removeTemporaryAttribute("lootedBarrowChest");
            p.setTarget(null);
            changeJewellery(p, js);
            int option = opt;

            p.getPackets().closeInterfaces();
            Event teleportEvent = new Event(2000);

            teleportEvent.setAction(() =>
            {
                teleportEvent.stop();
                p.teleport(new Location(TELEPORT_COORDINATES[js.index][option][0], TELEPORT_COORDINATES[js.index][option][1], 0));
                p.setLastAnimation(new Animation(65535));
                Teleport.resetTeleport(p);
                p.removeTemporaryAttribute("unmovable");
            });
            Server.registerEvent(teleportEvent);
            return(true);
        }
コード例 #3
0
ファイル: JewelleryTeleport.cs プロジェクト: ramatronics/rsps
 public static bool teleport(Player p, int opt, JewellerySlot js)
 {
     if (js == null)
     {
         return false;
     }
     if (js.index == -1 || js.index > 3 || opt > 6)
     {
         return false;
     }
     if (!canTeleport(p, js))
     {
         p.getPackets().closeInterfaces();
         return true;
     }
     if ((js.index == 2 && opt == 4) || (js.index != 2 && opt == 6))
     {
         p.getPackets().sendMessage("You stay where you are.");
         p.getPackets().closeInterfaces();
         return true;
     }
     opt -= 2; // Used to get the 'index' from the button id.
     p.setLastGraphics(new Graphics(1684));
     p.setLastAnimation(new Animation(9603));
     p.getWalkingQueue().resetWalkingQueue();
     p.getPackets().clearMapFlag();
     p.setTemporaryAttribute("teleporting", true);
     p.setTemporaryAttribute("unmovable", true);
     p.removeTemporaryAttribute("autoCasting");
     p.removeTemporaryAttribute("lootedBarrowChest");
     p.setTarget(null);
     changeJewellery(p, js);
     int option = opt;
     p.getPackets().closeInterfaces();
     Event teleportEvent = new Event(2000);
     teleportEvent.setAction(() =>
     {
         teleportEvent.stop();
         p.teleport(new Location(TELEPORT_COORDINATES[js.index][option][0], TELEPORT_COORDINATES[js.index][option][1], 0));
         p.setLastAnimation(new Animation(65535));
         Teleport.resetTeleport(p);
         p.removeTemporaryAttribute("unmovable");
     });
     Server.registerEvent(teleportEvent);
     return true;
 }
コード例 #4
0
ファイル: JewelleryTeleport.cs プロジェクト: ramatronics/rsps
 private static bool canTeleport(Player p, JewellerySlot js)
 {
     if (p.getTemporaryAttribute("teleporting") != null)
     {
         return false;
     }
     if (p.getDuel() != null)
     {
         if (p.getDuel().getStatus() < 4)
         {
             p.getDuel().declineDuel();
         }
         else if (p.getDuel().getStatus() == 5 || p.getDuel().getStatus() == 6)
         {
             p.getPackets().sendMessage("You cannot teleport whilst in a duel.");
             return false;
         }
         else if (p.getDuel().getStatus() == 8)
         {
             p.getDuel().recieveWinnings(p);
         }
     }
     int wildLvl = js.index == 1 || js.index == 2 ? 30 : 20;
     if (Location.inWilderness(p.getLocation()) && p.getLocation().wildernessLevel() >= wildLvl)
     {
         p.getPackets().sendMessage("You cannot teleport above level " + wildLvl + " wilderness!");
         return false;
     }
     if (Location.inFightCave(p.getLocation()))
     {
         FightCave.antiTeleportMessage(p);
         return false;
     }
     if (p.getTemporaryAttribute("teleblocked") != null)
     {
         p.getPackets().sendMessage("A magical force prevents you from teleporting!");
         return false;
     }
     if (Location.inFightPits(p.getLocation()))
     {
         p.getPackets().sendMessage("You are unable to teleport from the fight pits.");
         return false;
     }
     if (p.getTemporaryAttribute("unmovable") != null)
     {
         return false;
     }
     return true;
 }
コード例 #5
0
ファイル: JewelleryTeleport.cs プロジェクト: ramatronics/rsps
 protected static void changeJewellery(Player p, JewellerySlot js)
 {
     bool gloryAmulet = js.index < 2;
     bool newItem = true;
     string s = js.index == 2 ? "Ring of Dueling" : js.index == 3 ? "Games necklace" : "Amulet of Glory";
     for (int i = 0; i < JEWELLERY[js.index].Length; i++)
     {
         int charges = i;
         if (!js.wearing)
         {
             Item item = p.getInventory().getSlot(js.slot);
             if (item.getItemId() == JEWELLERY[js.index][i])
             {
                 if (gloryAmulet)
                 {
                     charges--;
                 }
                 string t = charges > 1 ? " charges" : " charge";
                 if (charges > 0)
                 {
                     p.getPackets().sendMessage("The " + s + " now has " + charges + t + " .");
                 }
                 else if (gloryAmulet && charges == 0)
                 {
                     p.getPackets().sendMessage("The Amulet of Glory has run out of charges.");
                 }
                 else if (!gloryAmulet && charges <= 1)
                 {
                     newItem = false;
                     p.getPackets().sendMessage("The " + s + " crumbles to dust.");
                     p.getInventory().deleteItem(item.getItemId(), js.slot, 1);
                 }
                 if (newItem)
                 {
                     item.setItemId(JEWELLERY[js.index][i - 1]);
                     p.getPackets().refreshInventory();
                 }
                 break;
             }
         }
         else
         {
             Item item = p.getEquipment().getSlot((ItemData.EQUIP)js.slot);
             if (item.getItemId() == JEWELLERY[js.index][i])
             {
                 if (gloryAmulet)
                 {
                     charges--;
                 }
                 string t = charges > 1 ? " charges" : " charge";
                 if (charges > 0)
                 {
                     p.getPackets().sendMessage("The " + s + " now has " + charges + t + " .");
                 }
                 else if (gloryAmulet && charges == 0)
                 {
                     p.getPackets().sendMessage("The Amulet of Glory has run out of charges.");
                 }
                 else if (!gloryAmulet && charges <= 1)
                 {
                     newItem = false;
                     p.getPackets().sendMessage("The " + s + " crumbles to dust.");
                     item.setItemId(-1);
                     item.setItemAmount(0);
                 }
                 if (newItem)
                 {
                     item.setItemId(JEWELLERY[js.index][i - 1]);
                 }
                 p.getPackets().refreshEquipment();
                 break;
             }
         }
     }
 }
コード例 #6
0
ファイル: JewelleryTeleport.cs プロジェクト: Rut0/RSPS-CSharp
        protected static void changeJewellery(Player p, JewellerySlot js)
        {
            bool   gloryAmulet = js.index < 2;
            bool   newItem     = true;
            string s           = js.index == 2 ? "Ring of Dueling" : js.index == 3 ? "Games necklace" : "Amulet of Glory";

            for (int i = 0; i < JEWELLERY[js.index].Length; i++)
            {
                int charges = i;
                if (!js.wearing)
                {
                    Item item = p.getInventory().getSlot(js.slot);
                    if (item.getItemId() == JEWELLERY[js.index][i])
                    {
                        if (gloryAmulet)
                        {
                            charges--;
                        }
                        string t = charges > 1 ? " charges" : " charge";
                        if (charges > 0)
                        {
                            p.getPackets().sendMessage("The " + s + " now has " + charges + t + " .");
                        }
                        else if (gloryAmulet && charges == 0)
                        {
                            p.getPackets().sendMessage("The Amulet of Glory has run out of charges.");
                        }
                        else if (!gloryAmulet && charges <= 1)
                        {
                            newItem = false;
                            p.getPackets().sendMessage("The " + s + " crumbles to dust.");
                            p.getInventory().deleteItem(item.getItemId(), js.slot, 1);
                        }
                        if (newItem)
                        {
                            item.setItemId(JEWELLERY[js.index][i - 1]);
                            p.getPackets().refreshInventory();
                        }
                        break;
                    }
                }
                else
                {
                    Item item = p.getEquipment().getSlot((ItemData.EQUIP)js.slot);
                    if (item.getItemId() == JEWELLERY[js.index][i])
                    {
                        if (gloryAmulet)
                        {
                            charges--;
                        }
                        string t = charges > 1 ? " charges" : " charge";
                        if (charges > 0)
                        {
                            p.getPackets().sendMessage("The " + s + " now has " + charges + t + " .");
                        }
                        else if (gloryAmulet && charges == 0)
                        {
                            p.getPackets().sendMessage("The Amulet of Glory has run out of charges.");
                        }
                        else if (!gloryAmulet && charges <= 1)
                        {
                            newItem = false;
                            p.getPackets().sendMessage("The " + s + " crumbles to dust.");
                            item.setItemId(-1);
                            item.setItemAmount(0);
                        }
                        if (newItem)
                        {
                            item.setItemId(JEWELLERY[js.index][i - 1]);
                        }
                        p.getPackets().refreshEquipment();
                        break;
                    }
                }
            }
        }