Advertisement
Guest User

Tradeanddueljava

a guest
Jul 29th, 2012
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 34.48 KB | None | 0 0
  1. package server.model.mobile.players;
  2.  
  3. import server.Config;
  4. import server.Server;
  5. import server.model.items.GameItem;
  6. import server.model.items.Item;
  7. import server.util.Misc;
  8.  
  9. import java.util.concurrent.CopyOnWriteArrayList;
  10.  
  11.  
  12. public class TradeAndDuel {
  13.  
  14.     private final Client c;
  15.  
  16.     public TradeAndDuel(Client Client) {
  17.         this.c = Client;
  18.     }
  19.  
  20.     /**
  21.      * Trading
  22.      */
  23.  
  24.     public CopyOnWriteArrayList<GameItem> offeredItems = new CopyOnWriteArrayList<GameItem>();
  25.  
  26.     private String formatPlayerName(String str) {
  27.         String str1 = Misc.ucFirst(str);
  28.         str1.replace("_", " ");
  29.         return str1;
  30.     }
  31.  
  32.     public void requestTrade(int id) {
  33.  
  34.         Client o = (Client) PlayerHandler.players[id];
  35.         if (o == null || c.playerId < 0 || id == c.playerId || c.tradeWith == c.playerId) {
  36.             return;
  37.         }
  38.  
  39.         c.tradeWith = id;
  40.         if (c.connectedFrom.equals(o.connectedFrom) || o.connectedFrom.equals(c.connectedFrom)) {
  41.             c.sendMessage("You cannot trade yourself from the same IP.");
  42.             return;
  43.         }
  44.         if (c.anticheattimer > 0) {
  45.             c.sendMessage("you must wait " + c.anticheattimer / 2 + " more seconds to trade");
  46.             return;
  47.         }
  48.         if (o.duelStatus == 6 || o.inTrade || o.isBanking || o.PartyRoomInterface || o.playerIsNPC || o.isPartyRoom) {
  49.             c.sendMessage("This player is currently busy.");
  50.             return;
  51.         }
  52.         if (o.playerRights == 3 && c.playerRights != 3 && !Config.rlAdminsCanTrade || c.playerRights == 3 && o.playerRights != 3 && !Config.rlAdminsCanTrade) {
  53.             c.sendMessage("RealityScape Admins cannot trade.");
  54.             return;
  55.         }
  56.         if (!c.inTrade && o.tradeRequested && o.tradeWith == c.playerId) {
  57.             c.getTradeAndDuel().openTrade();
  58.             o.getTradeAndDuel().openTrade();
  59.         } else if (!c.inTrade) {
  60.             c.tradeRequested = true;
  61.             c.sendMessage("Sending trade request...");
  62.             o.sendMessage(c.playerName + ":tradereq:");
  63.         }
  64.     }
  65.  
  66.     public void openTrade() {
  67.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  68.         if (o == null || c.tradeWith == c.playerId || c.duelStatus == 6 || c.isBanking || c.isPartyRoom || c.inDuelScreen) {
  69.             return;
  70.         }
  71.         c.inTrade = true;
  72.         c.canOffer = true;
  73.         c.tradeStatus = 1;
  74.         o.getPA().sendFrame126("" + formatPlayerName(c.playerName) + "", 3451);
  75.         c.getPA().sendFrame126("" + formatPlayerName(o.playerName) + "", 3451);
  76.         o.getPA().sendFrame126("Trading with: " + formatPlayerName(c.playerName) + "", 3417);
  77.         c.getPA().sendFrame126("Trading with: " + formatPlayerName(o.playerName) + "", 3417);
  78.         c.tradeRequested = false;
  79.         c.getItems().resetItems(3322);
  80.         resetTItems(3415);
  81.         resetOTItems(3416);
  82.         String out = o.playerName;
  83.  
  84.         if(o.playerRights == 1) {
  85.             out = "@cr1@" + out;
  86.         }
  87.         else if(o.playerRights == 2) {
  88.             out = "@cr2@" + out;
  89.         }
  90.         displayWAndI(c);
  91.         c.getPA().sendFrame126("", 3431);
  92.         c.getPA().sendFrame126("Are you sure you want to make this trade?", 3535);
  93.         c.getPA().sendFrame248(3323, 3321);
  94.     }
  95.  
  96.     public void displayWAndI(Client c) {
  97.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  98.         c.getPA().sendFrame126(formatPlayerName(o.playerName) + " has\\n " + o.getItems().freeSlots() + " free\\n inventory slots.", 23505);
  99.         o.getPA().sendFrame126(formatPlayerName(c.playerName) + " has\\n " + c.getItems().freeSlots() + " free\\n inventory slots.", 23505);
  100.     }
  101.  
  102.     public void resetTItems(int WriteFrame) {
  103.         synchronized (c) {
  104.             c.getOutStream().createFrameVarSizeWord(53);
  105.             c.getOutStream().writeWord(WriteFrame);
  106.             int len = offeredItems.toArray().length;
  107.             int current = 0;
  108.             c.getOutStream().writeWord(len);
  109.             for (GameItem item : offeredItems) {
  110.                 if (item.amount > 254) {
  111.                     c.getOutStream().writeByte(255);
  112.                     c.getOutStream().writeDWord_v2(item.amount);
  113.                 } else {
  114.                     c.getOutStream().writeByte(item.amount);
  115.                 }
  116.                 c.getOutStream().writeWordBigEndianA(item.id + 1);
  117.                 current++;
  118.             }
  119.             if (current < 27) {
  120.                 for (int i = current; i < 28; i++) {
  121.                     c.getOutStream().writeByte(1);
  122.                     c.getOutStream().writeWordBigEndianA(-1);
  123.                 }
  124.             }
  125.             c.getOutStream().endFrameVarSizeWord();
  126.             c.flushOutStream();
  127.         }
  128.     }
  129.  
  130.     public boolean fromTrade(int itemID, int amount) {
  131.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  132.         if (o == null || !c.inTrade || !c.canOffer) {
  133.             declineTrade();
  134.             return false;
  135.         }
  136.         falseTradeConfirm();
  137.         if (!Item.itemStackable[itemID]) {
  138.             if (amount > 28) {
  139.                 amount = 28;
  140.             }
  141.             for (int a = 0; a < amount; a++) {
  142.                 for (GameItem item : offeredItems) {
  143.                     if (item.id == itemID) {
  144.                         if (!item.stackable) {
  145.                             offeredItems.remove(item);
  146.                             c.getItems().addItem(itemID, 1);
  147.                         } else {
  148.                             if (item.amount > amount) {
  149.                                 item.amount -= amount;
  150.                                 c.getItems().addItem(itemID, amount);
  151.                             } else {
  152.                                 amount = item.amount;
  153.                                 offeredItems.remove(item);
  154.                                 c.getItems().addItem(itemID, amount);
  155.                             }
  156.                         }
  157.                         break;
  158.                     }
  159.                 }
  160.             }
  161.         }
  162.         for (GameItem item : offeredItems) {
  163.             if (item.id == itemID) {
  164.                 if (!item.stackable) {
  165.                 } else {
  166.                     if (item.amount > amount) {
  167.                         item.amount -= amount;
  168.                         c.getItems().addItem(itemID, amount);
  169.                     } else {
  170.                         amount = item.amount;
  171.                         offeredItems.remove(item);
  172.                         c.getItems().addItem(itemID, amount);
  173.                     }
  174.                 }
  175.                 break;
  176.             }
  177.         }
  178.         falseTradeConfirm();
  179.         c.getItems().resetItems(3322);
  180.         resetTItems(3415);
  181.         o.getTradeAndDuel().resetOTItems(3416);
  182.         displayWAndI(c);
  183.         c.getPA().sendFrame126("", 3431);
  184.         o.getPA().sendFrame126("", 3431);
  185.         return true;
  186.     }
  187.  
  188.     private boolean falseTradeConfirm() {
  189.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  190.         return c.tradeConfirmed = o.tradeConfirmed = false;
  191.     }
  192.  
  193.     public boolean tradeItem(int itemID, int fromSlot, int amount) {
  194.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  195.         if (o == null || c.playerItems[fromSlot] - 1 != itemID) {
  196.             return false;
  197.         }
  198.         if (!((c.playerItems[fromSlot] == itemID + 1) && (c.playerItemsN[fromSlot] >= amount))) {
  199.             return false;
  200.         }
  201.         for (int i : Config.ITEM_TRADEABLE) {
  202.             if (i == itemID) {
  203.                 c.sendMessage("You can't trade this item.");
  204.                 return false;
  205.             }
  206.         }
  207.         falseTradeConfirm();
  208.         if (!Item.itemStackable[itemID] && !Item.itemIsNote[itemID]) {
  209.             for (int a = 0; a < amount && a < 28; a++) {
  210.                 if (c.getItems().playerHasItem(itemID, 1)) {
  211.                     offeredItems.add(new GameItem(itemID, 1));
  212.                     c.getItems().deleteItem(itemID, c.getItems().getItemSlot(itemID), 1);
  213.                 }
  214.             }
  215.             c.getItems().resetItems(3322);
  216.             resetTItems(3415);
  217.             o.getTradeAndDuel().resetOTItems(3416);
  218.             displayWAndI(c);
  219.             c.getPA().sendFrame126("", 3431);
  220.             o.getPA().sendFrame126("", 3431);
  221.         }
  222.         if (c.getItems().getItemCount(itemID) < amount) {
  223.             amount = c.getItems().getItemCount(itemID);
  224.             if (amount == 0 || !c.getItems().playerHasItem(itemID, amount)) {
  225.                 return false;
  226.             }
  227.         }
  228.         if (!c.inTrade || !c.canOffer) {
  229.             declineTrade();
  230.             return false;
  231.         }
  232.         if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) {
  233.             boolean inTrade = false;
  234.             for (GameItem item : offeredItems) {
  235.                 if (item.id == itemID) {
  236.                     inTrade = true;
  237.                     item.amount += amount;
  238.                     c.getItems().deleteItem2(itemID, amount);
  239.                     break;
  240.                 }
  241.             }
  242.  
  243.             if (!inTrade) {
  244.                 offeredItems.add(new GameItem(itemID, amount));
  245.                 c.getItems().deleteItem2(itemID, amount);
  246.             }
  247.         }
  248.         c.getItems().resetItems(3322);
  249.         resetTItems(3415);
  250.         o.getTradeAndDuel().resetOTItems(3416);
  251.         displayWAndI(c);
  252.         c.getPA().sendFrame126("", 3431);
  253.         o.getPA().sendFrame126("", 3431);
  254.         return true;
  255.     }
  256.  
  257.  
  258.     public void resetTrade() {
  259.         offeredItems.clear();
  260.         c.inTrade = false;
  261.         c.tradeWith = 0;
  262.         c.canOffer = true;
  263.         c.tradeConfirmed = false;
  264.         c.tradeConfirmed2 = false;
  265.         c.acceptedTrade = false;
  266.         c.getPA().removeAllWindows();
  267.         c.tradeResetNeeded = false;
  268.         c.getPA().sendFrame126("Are you sure you want to make this trade?", 3535);
  269.     }
  270.  
  271.     public void declineTrade() {
  272.         c.tradeStatus = 0;
  273.         declineTrade(true);
  274.     }
  275.  
  276.  
  277.     public void declineTrade(boolean tellOther) {
  278.         c.getPA().removeAllWindows();
  279.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  280.         if (o == null) {
  281.             return;
  282.         }
  283.         if (tellOther) {
  284.             o.getTradeAndDuel().declineTrade(false);
  285.             o.getTradeAndDuel().c.getPA().removeAllWindows();
  286.         }
  287.         if (c.isPartyRoom) {
  288.             c.isPartyRoom = false;
  289.         }
  290.         for (GameItem item : offeredItems) {
  291.             if (item.amount < 1) {
  292.                 continue;
  293.             }
  294.             if (item.stackable) {
  295.                 c.getItems().addItem(item.id, item.amount);
  296.             } else {
  297.                 for (int i = 0; i < item.amount; i++) {
  298.                     c.getItems().addItem(item.id, 1);
  299.                 }
  300.             }
  301.         }
  302.         c.canOffer = true;
  303.         c.tradeConfirmed = false;
  304.         c.tradeConfirmed2 = false;
  305.         offeredItems.clear();
  306.         c.inTrade = false;
  307.         c.tradeWith = 0;
  308.     }
  309.  
  310.  
  311.     public void resetOTItems(int WriteFrame) {
  312.         synchronized (c) {
  313.             Client o = (Client) PlayerHandler.players[c.tradeWith];
  314.             if (o == null) {
  315.                 return;
  316.             }
  317.             c.getOutStream().createFrameVarSizeWord(53);
  318.             c.getOutStream().writeWord(WriteFrame);
  319.             int len = o.getTradeAndDuel().offeredItems.toArray().length;
  320.             int current = 0;
  321.             c.getOutStream().writeWord(len);
  322.             for (GameItem item : o.getTradeAndDuel().offeredItems) {
  323.                 if (item.amount > 254) {
  324.                     c.getOutStream().writeByte(255); // item's stack count. if over 254, write byte 255
  325.                     c.getOutStream().writeDWord_v2(item.amount);
  326.                 } else {
  327.                     c.getOutStream().writeByte(item.amount);
  328.                 }
  329.                 c.getOutStream().writeWordBigEndianA(item.id + 1); // item id
  330.                 current++;
  331.             }
  332.             if (current < 27) {
  333.                 for (int i = current; i < 28; i++) {
  334.                     c.getOutStream().writeByte(1);
  335.                     c.getOutStream().writeWordBigEndianA(-1);
  336.                 }
  337.             }
  338.             c.getOutStream().endFrameVarSizeWord();
  339.             c.flushOutStream();
  340.         }
  341.     }
  342.  
  343.  
  344.     public void confirmScreen() {
  345.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  346.         if (o == null) {
  347.             return;
  348.         }
  349.         c.canOffer = false;
  350.         c.getItems().resetItems(3214);
  351.         String SendTrade = "Absolutely nothing!";
  352.         String SendAmount;
  353.         int Count = 0;
  354.         for (GameItem item : offeredItems) {
  355.             if (item.id > 0) {
  356.                 if (item.amount >= 1000 && item.amount < 1000000) {
  357.                     SendAmount = "@cya@" + (item.amount / 1000) + "K @whi@(" + Misc.format(item.amount) + ")";
  358.                 } else if (item.amount >= 1000000) {
  359.                     SendAmount = "@gre@" + (item.amount / 1000000) + " million @whi@(" + Misc.format(item.amount) + ")";
  360.                 } else {
  361.                     SendAmount = "" + Misc.format(item.amount);
  362.                 }
  363.                 if (Count == 0) {
  364.                     SendTrade = c.getItems().getItemName(item.id);
  365.                 } else {
  366.                     SendTrade = SendTrade + "\\n" + c.getItems().getItemName(item.id);
  367.                 }
  368.  
  369.                 if (item.stackable) {
  370.                     SendTrade = SendTrade + " x " + SendAmount;
  371.                 }
  372.                 Count++;
  373.             }
  374.         }
  375.  
  376.         c.getPA().sendFrame126(SendTrade, 3557);
  377.         SendTrade = "Absolutely nothing!";
  378.         SendAmount = "";
  379.         Count = 0;
  380.  
  381.         for (GameItem item : o.getTradeAndDuel().offeredItems) {
  382.             if (item.id > 0) {
  383.                 if (item.amount >= 1000 && item.amount < 1000000) {
  384.                     SendAmount = "@cya@" + (item.amount / 1000) + "K @whi@(" + Misc.format(item.amount) + ")";
  385.                 } else if (item.amount >= 1000000) {
  386.                     SendAmount = "@gre@" + (item.amount / 1000000) + " million @whi@(" + Misc.format(item.amount) + ")";
  387.                 } else {
  388.                     SendAmount = "" + Misc.format(item.amount);
  389.                 }
  390.                 //SendAmount = SendAmount;
  391.                 if (Count == 0) {
  392.                     SendTrade = c.getItems().getItemName(item.id);
  393.                 } else {
  394.                     SendTrade = SendTrade + "\\n" + c.getItems().getItemName(item.id);
  395.                 }
  396.                 if (item.stackable) {
  397.                     SendTrade = SendTrade + " x " + SendAmount;
  398.                 }
  399.                 Count++;
  400.             }
  401.         }
  402.         c.getPA().sendFrame126(SendTrade, 3558);
  403.         c.getPA().sendFrame248(3443, 197);
  404.     }
  405.  
  406.  
  407.     public void giveItems() {
  408.         Client o = (Client) PlayerHandler.players[c.tradeWith];
  409.         if (o == null) {
  410.             return;
  411.         }
  412.         try {
  413.             for (GameItem item : o.getTradeAndDuel().offeredItems) {
  414.                 if (item.id > 0) {
  415.                     c.getItems().addItem(item.id, item.amount);
  416.                 }
  417.             }
  418.  
  419.             c.getPA().removeAllWindows();
  420.             c.tradeResetNeeded = true;
  421.             PlayerSave.saveGame(c);
  422.         } catch (Exception ignored) {
  423.         }
  424.     }
  425.  
  426.     /**
  427.      * Dueling
  428.      */
  429.  
  430.     public CopyOnWriteArrayList<GameItem> otherStakedItems = new CopyOnWriteArrayList<GameItem>();
  431.     public CopyOnWriteArrayList<GameItem> stakedItems = new CopyOnWriteArrayList<GameItem>();
  432.  
  433.     public void requestDuel(int id) {
  434.         if (id == c.playerId) {
  435.             return;
  436.         }
  437.         resetDuel();
  438.         resetDuelItems();
  439.         c.duelingWith = id;
  440.         Client o = (Client) PlayerHandler.players[id];
  441.         if (o == null || c.connectedFrom.equals(o.connectedFrom) || o.connectedFrom.equals(c.connectedFrom)) {
  442.             return;
  443.         }
  444.         if (!Config.rlAdminsCanStake && c.playerRights == 3) {
  445.             c.sendMessage("RealityScape Admin's cannot stake!");
  446.             return;
  447.         }
  448.         if (o.inDuelScreen || o.inTrade || o.isBanking || o.playerIsNPC || o.isPartyRoom || o.duelStatus == 6 || o.inCwGame || c.inCwGame || o.duelStatus > 0) {
  449.             c.sendMessage("This player is currently busy.");
  450.             return;
  451.         }
  452.         if (c.duelStatus > 0) {
  453.             c.sendMessage("You must decline this duel before accepting another one!");
  454.             return;
  455.         }
  456.         c.duelRequested = true;
  457.         if (c.duelStatus == 0 && o.duelStatus == 0 && c.duelRequested && o.duelRequested && c.duelingWith == o.getId() && o.duelingWith == c.getId()) {
  458.             if (c.goodDistance(c.getX(), c.getY(), o.getX(), o.getY(), 1)) {
  459.                 if (c.duelStatus == 0) {
  460.                     c.getTradeAndDuel().openDuel();
  461.                     o.getTradeAndDuel().openDuel();
  462.                 } else {
  463.                     c.sendMessage("You must decline this duel before accepting another one!");
  464.                 }
  465.             } else {
  466.                 c.sendMessage("You need to get closer to your opponent to start the duel.");
  467.             }
  468.  
  469.         } else {
  470.             c.sendMessage("Sending duel request...");
  471.             o.sendMessage(c.playerName + ":duelreq:");
  472.         }
  473.     }
  474.  
  475.     public void openDuel() {
  476.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  477.         if (o == null || c.inTrade || c.duelStatus == 6 || c.isBanking || o.inCwGame || c.inCwGame || c.isPartyRoom) {
  478.             return;
  479.         }
  480.         c.inDuelScreen = true;
  481.         c.duelStatus = 1;
  482.         refreshduelRules();
  483.         refreshDuelScreen();
  484.         c.canOffer = true;
  485.         for (int i = 0; i < c.playerEquipment.length; i++) {
  486.             sendDuelEquipment(c.playerEquipment[i], c.playerEquipmentN[i], i);
  487.         }
  488.         c.getPA().sendFrame126("Dueling with: " + o.playerName + " (level-" + o.combatLevel + ")", 6671);
  489.         c.getPA().sendFrame126("", 6684);
  490.         c.getPA().sendFrame248(6575, 3321);
  491.         c.getItems().resetItems(3322);
  492.  
  493.     }
  494.  
  495.     public void sendDuelEquipment(int itemId, int amount, int slot) {
  496.         synchronized (c) {
  497.             if (itemId != 0) {
  498.                 c.getOutStream().createFrameVarSizeWord(34);
  499.                 c.getOutStream().writeWord(13824);
  500.                 c.getOutStream().writeByte(slot);
  501.                 c.getOutStream().writeWord(itemId + 1);
  502.  
  503.                 if (amount > 254) {
  504.                     c.getOutStream().writeByte(255);
  505.                     c.getOutStream().writeDWord(amount);
  506.                 } else {
  507.                     c.getOutStream().writeByte(amount);
  508.                 }
  509.                 c.getOutStream().endFrameVarSizeWord();
  510.                 c.flushOutStream();
  511.             }
  512.         }
  513.     }
  514.  
  515.     public void refreshduelRules() {
  516.         for (int i = 0; i < c.duelRule.length; i++) {
  517.             c.duelRule[i] = false;
  518.         }
  519.         c.getPA().sendFrame87(286, 0);
  520.         c.duelOption = 0;
  521.     }
  522.  
  523.     public void refreshDuelScreen() {
  524.         synchronized (c) {
  525.             Client o = (Client) PlayerHandler.players[c.duelingWith];
  526.             if (o == null) {
  527.                 return;
  528.             }
  529.             c.getOutStream().createFrameVarSizeWord(53);
  530.             c.getOutStream().writeWord(6669);
  531.             c.getOutStream().writeWord(stakedItems.toArray().length);
  532.             int current = 0;
  533.             for (GameItem item : stakedItems) {
  534.                 if (item.amount > 254) {
  535.                     c.getOutStream().writeByte(255);
  536.                     c.getOutStream().writeDWord_v2(item.amount);
  537.                 } else {
  538.                     c.getOutStream().writeByte(item.amount);
  539.                 }
  540.                 if (item.id > Config.ITEM_LIMIT || item.id < 0) {
  541.                     item.id = Config.ITEM_LIMIT;
  542.                 }
  543.                 c.getOutStream().writeWordBigEndianA(item.id + 1);
  544.  
  545.                 current++;
  546.             }
  547.  
  548.             if (current < 27) {
  549.                 for (int i = current; i < 28; i++) {
  550.                     c.getOutStream().writeByte(1);
  551.                     c.getOutStream().writeWordBigEndianA(-1);
  552.                 }
  553.             }
  554.             c.getOutStream().endFrameVarSizeWord();
  555.             c.flushOutStream();
  556.  
  557.             c.getOutStream().createFrameVarSizeWord(53);
  558.             c.getOutStream().writeWord(6670);
  559.             c.getOutStream().writeWord(o.getTradeAndDuel().stakedItems.toArray().length);
  560.             current = 0;
  561.             for (GameItem item : o.getTradeAndDuel().stakedItems) {
  562.                 if (item.amount > 254) {
  563.                     c.getOutStream().writeByte(255);
  564.                     c.getOutStream().writeDWord_v2(item.amount);
  565.                 } else {
  566.                     c.getOutStream().writeByte(item.amount);
  567.                 }
  568.                 if (item.id > Config.ITEM_LIMIT || item.id < 0) {
  569.                     item.id = Config.ITEM_LIMIT;
  570.                 }
  571.                 c.getOutStream().writeWordBigEndianA(item.id + 1);
  572.                 current++;
  573.             }
  574.  
  575.             if (current < 27) {
  576.                 for (int i = current; i < 28; i++) {
  577.                     c.getOutStream().writeByte(1);
  578.                     c.getOutStream().writeWordBigEndianA(-1);
  579.                 }
  580.             }
  581.             c.getOutStream().endFrameVarSizeWord();
  582.             c.flushOutStream();
  583.         }
  584.     }
  585.  
  586.  
  587.     public boolean stakeItem(int itemID, int fromSlot, int amount) {
  588.         if (!Config.stakingIsEnabled) {
  589.             c.sendMessage("Staking has been disabled. Please contact Genesis.");
  590.             return false;
  591.         }
  592.         if (!Config.rlAdminsCanStake && c.playerRights == 3) {
  593.             c.sendMessage("RealityScape Admin's cannot stake!");
  594.             return false;
  595.         }
  596.         for (int i : Config.ITEM_TRADEABLE) {
  597.             if(i == itemID) {
  598.                 c.sendMessage("You can't stake this item.");
  599.                 return false;
  600.             }
  601.         }
  602.         if(c.inTrade || !c.inDuelScreen || !c.canOffer) {
  603.             return false;
  604.         }
  605.         if (c.playerItems[fromSlot]-1 != itemID) {
  606.             return false;
  607.         }
  608.         if (!c.getItems().playerHasItem(itemID, amount)) {
  609.             return false;
  610.         }
  611.         if (amount <= 0)
  612.             return false;
  613.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  614.         if (o == null ) {
  615.             declineDuel();
  616.             return false;
  617.         }
  618.         if (o.duelStatus <= 0 || c.duelStatus <= 0) {
  619.             declineDuel();
  620.             o.getTradeAndDuel().declineDuel();
  621.             return false;
  622.         }
  623.         changeDuelStuff();
  624.         if(!Item.itemStackable[itemID]) {
  625.             for(int a = 0; a < amount; a++) {
  626.                 if(c.getItems().playerHasItem(itemID, 1)) {
  627.                     stakedItems.add(new GameItem(itemID, 1));
  628.                     c.getItems().deleteItem(itemID, c.getItems().getItemSlot(itemID), 1);
  629.                 }
  630.             }
  631.             c.getItems().resetItems(3214);
  632.             c.getItems().resetItems(3322);
  633.             o.getItems().resetItems(3214);
  634.             o.getItems().resetItems(3322);
  635.             refreshDuelScreen();
  636.             o.getTradeAndDuel().refreshDuelScreen();
  637.             c.getPA().sendFrame126("", 6684);
  638.             o.getPA().sendFrame126("", 6684);
  639.         }
  640.  
  641.         if(!c.getItems().playerHasItem(itemID, amount)) {
  642.             return false;
  643.         }
  644.         if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) {
  645.             boolean found = false;
  646.             for (GameItem item : stakedItems) {
  647.                 if (item.id == itemID) {
  648.                     found = true;
  649.                     item.amount += amount;
  650.                     c.getItems().deleteItem(itemID, fromSlot, amount);
  651.                     break;
  652.                 }
  653.             }
  654.             if (!found) {
  655.                 c.getItems().deleteItem(itemID, fromSlot, amount);
  656.                 stakedItems.add(new GameItem(itemID, amount));
  657.             }
  658.         }
  659.  
  660.         c.getItems().resetItems(3214);
  661.         c.getItems().resetItems(3322);
  662.         o.getItems().resetItems(3214);
  663.         o.getItems().resetItems(3322);
  664.         refreshDuelScreen();
  665.         o.getTradeAndDuel().refreshDuelScreen();
  666.         c.getPA().sendFrame126("", 6684);
  667.         o.getPA().sendFrame126("", 6684);
  668.         return true;
  669.     }
  670.  
  671.  
  672.     public boolean fromDuel(int itemID, int fromSlot, int amount) {
  673.                 Client o = (Client) PlayerHandler.players[c.duelingWith];
  674.                 if (o == null) {
  675.                     declineDuel();
  676.                     return false;
  677.                 }
  678.                 if (!c.getItems().playerHasItem(itemID, amount)) {
  679.                     return false;
  680.                 }
  681.                 if (c.playerItems[fromSlot]-1 != itemID) {
  682.                     return false;
  683.                 }
  684.                 if(c.duelStatus == 0 || c.duelStatus == 5) {
  685.                     c.getTradeAndDuel().stakedItems.clear();
  686.                     System.out.println(""+c.playerName+" Tried to dupe!");
  687.                     return false;
  688.                 }
  689.                 if (o.duelStatus == 6 || c.duelStatus > 2 && c.duelStatus < 7) {
  690.                     return false;
  691.                 }
  692.                 if (o.duelStatus <= 0 || c.duelStatus <= 0) {
  693.                     declineDuel();
  694.                     o.getTradeAndDuel().declineDuel();
  695.                     return false;
  696.                 }
  697.                 if(Item.itemStackable[itemID]) {
  698.                     if(c.getItems().freeSlots() - 1 < (c.duelSpaceReq)) {
  699.                         c.sendMessage("You have too many rules set to remove that item.");
  700.                         return false;
  701.                     }
  702.                 }
  703.  
  704.                 if(!c.canOffer && !c.inDuelScreen){
  705.                     return false;
  706.                 }
  707.  
  708.                 changeDuelStuff();
  709.                 boolean goodSpace = true;
  710.                 if(!Item.itemStackable[itemID]) {
  711.                     for(int a = 0; a < amount; a++) {
  712.                         for (GameItem item : stakedItems) {
  713.                             if(item.id == itemID) {
  714.                                 if(!item.stackable) {
  715.                                     if(c.getItems().freeSlots() - 1 < (c.duelSpaceReq)) {
  716.                                         goodSpace = false;
  717.                                         break;
  718.                                     }
  719.                                     if(c.duelStatus == 0 || c.duelStatus == 5) {
  720.                                         System.out.println(""+c.playerName+" Tried to dupe!");
  721.                                         c.getTradeAndDuel().stakedItems.clear();
  722.                                         return false;
  723.                                     }
  724.                                     stakedItems.remove(item);
  725.                                     c.getItems().addItem(itemID, 1);
  726.                                 }  else  {
  727.                                     if(c.getItems().freeSlots() - 1 < (c.duelSpaceReq)) {
  728.                                         goodSpace = false;
  729.                                         break;
  730.                                     }
  731.                                     if(item.amount > amount) {
  732.                                         item.amount -= amount;
  733.                                         c.getItems().addItem(itemID, amount);
  734.                                     } else  {
  735.                                         if(c.getItems().freeSlots() - 1 < (c.duelSpaceReq)) {
  736.                                             goodSpace = false;
  737.                                             break;
  738.                                         }
  739.                                         amount = item.amount;
  740.                                         stakedItems.remove(item);
  741.                                         c.getItems().addItem(itemID, amount);
  742.                                     }
  743.                                 }
  744.                                 break;
  745.                             }
  746.                             o.duelStatus = 1;
  747.                             c.duelStatus = 1;
  748.                             c.getItems().resetItems(3214);
  749.                             c.getItems().resetItems(3322);
  750.                             o.getItems().resetItems(3214);
  751.                             o.getItems().resetItems(3322);
  752.                             c.getTradeAndDuel().refreshDuelScreen();
  753.                             o.getTradeAndDuel().refreshDuelScreen();
  754.                             o.getPA().sendFrame126("", 6684);
  755.                         }
  756.                     }
  757.                 }
  758.  
  759.                 for (GameItem item : stakedItems) {
  760.                     if(item.id == itemID) {
  761.                         if(!item.stackable) {
  762.                         } else {
  763.                             if(item.amount > amount) {
  764.                                 item.amount -= amount;
  765.                                 c.getItems().addItem(itemID, amount);
  766.                             } else {
  767.                                 amount = item.amount;
  768.                                 stakedItems.remove(item);
  769.                                 c.getItems().addItem(itemID, amount);
  770.                             }
  771.                         }
  772.                         break;
  773.                     }
  774.                 }
  775.                 o.duelStatus = 1;
  776.                 c.duelStatus = 1;
  777.                 c.getItems().resetItems(3214);
  778.                 c.getItems().resetItems(3322);
  779.                 o.getItems().resetItems(3214);
  780.                 o.getItems().resetItems(3322);
  781.                 c.getTradeAndDuel().refreshDuelScreen();
  782.                 o.getTradeAndDuel().refreshDuelScreen();
  783.                 o.getPA().sendFrame126("", 6684);
  784.                 if(!goodSpace) {
  785.                     c.sendMessage("You have too many rules set to remove that item.");
  786.                     return true;
  787.                 }
  788.         return true;
  789.     }
  790.  
  791.     public void confirmDuel() {
  792.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  793.         if (o == null) {
  794.             declineDuel();
  795.             return;
  796.         }
  797.         String itemId = "";
  798.         for (GameItem item : stakedItems) {
  799.             if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) {
  800.                 itemId += c.getItems().getItemName(item.id) + " x " + Misc.format(item.amount) + "\\n";
  801.             } else {
  802.                 itemId += c.getItems().getItemName(item.id) + "\\n";
  803.             }
  804.         }
  805.         c.getPA().sendFrame126(itemId, 6516);
  806.         itemId = "";
  807.         for (GameItem item : o.getTradeAndDuel().stakedItems) {
  808.             if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) {
  809.                 itemId += c.getItems().getItemName(item.id) + " x " + Misc.format(item.amount) + "\\n";
  810.             } else {
  811.                 itemId += c.getItems().getItemName(item.id) + "\\n";
  812.             }
  813.         }
  814.         c.getPA().sendFrame126(itemId, 6517);
  815.         c.getPA().sendFrame126("", 8242);
  816.         for (int i = 8238; i <= 8253; i++) {
  817.             c.getPA().sendFrame126("", i);
  818.         }
  819.         c.getPA().sendFrame126("Hitpoints will be restored.", 8250);
  820.         c.getPA().sendFrame126("Boosted stats will be restored.", 8238);
  821.         if (c.duelRule[8]) {
  822.             c.getPA().sendFrame126("There will be obstacles in the arena.", 8239);
  823.         }
  824.         c.getPA().sendFrame126("", 8240);
  825.         c.getPA().sendFrame126("", 8241);
  826.  
  827.         String[] rulesOption = {"Players cannot forfeit!", "Players cannot move.", "Players cannot use range.", "Players cannot use melee.", "Players cannot use magic.", "Players cannot drink pots.", "Players cannot eat food.", "Players cannot use prayer."};
  828.  
  829.         int lineNumber = 8242;
  830.         for (int i = 0; i < 8; i++) {
  831.             if (c.duelRule[i]) {
  832.                 c.getPA().sendFrame126("" + rulesOption[i], lineNumber);
  833.                 lineNumber++;
  834.             }
  835.         }
  836.         c.getPA().sendFrame126("", 6571);
  837.         c.getPA().sendFrame248(6412, 197);
  838.     }
  839.  
  840.  
  841.     public void startDuel() {
  842.         c.inDuelScreen = false;
  843.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  844.         if (o == null || o.disconnected) {
  845.             duelVictory();
  846.         }
  847.         if (o != null) {
  848.             c.duelName = o.playerName;
  849.             c.duelLevel = o.combatLevel;
  850.         } else {
  851.             c.duelName = "???";
  852.             c.duelLevel = 3;
  853.         }
  854.         c.playMusic(47);
  855.         c.headIconHints = 2;
  856.         if (c.duelRule[7]) {
  857.             for (int p = 0; p < c.PRAYER.length; p++) { // reset prayer glows
  858.                 c.prayerActive[p] = false;
  859.                 c.getPA().sendFrame36(c.PRAYER_GLOW[p], 0);
  860.             }
  861.             c.headIcon = -1;
  862.             c.getPA().requestUpdates();
  863.         }
  864.         if (c.duelRule[11]) {
  865.             c.getItems().removeItem(0);
  866.         }
  867.         if (c.duelRule[12]) {
  868.             c.getItems().removeItem(1);
  869.         }
  870.         if (c.duelRule[13]) {
  871.             c.getItems().removeItem(2);
  872.         }
  873.         if (c.duelRule[14]) {
  874.             c.getItems().removeItem(3);
  875.         }
  876.         if (c.duelRule[15]) {
  877.             c.getItems().removeItem(4);
  878.         }
  879.         if (c.duelRule[16]) {
  880.             c.getItems().removeItem(5);
  881.         }
  882.         if (c.duelRule[17]) {
  883.             c.getItems().removeItem(7);
  884.         }
  885.         if (c.duelRule[18]) {
  886.             c.getItems().removeItem(9);
  887.         }
  888.         if (c.duelRule[19]) {
  889.             c.getItems().removeItem(10);
  890.         }
  891.         if (c.duelRule[20]) {
  892.             c.getItems().removeItem(12);
  893.         }
  894.         if (c.duelRule[21]) {
  895.             c.getItems().removeItem(13);
  896.         }
  897.         if ((c.duelRule[16] && c.getItems().is2handed(c.getItems().getItemName(c.playerEquipment[Player.playerWeapon]).toLowerCase(), c.playerEquipment[Player.playerWeapon]))) {
  898.             c.getItems().removeItem(3);
  899.         }
  900.         c.duelStatus = 5;
  901.         c.getPA().removeAllWindows();
  902.         c.specAmount = 10;
  903.         c.getItems().addSpecialBar(c.playerEquipment[Player.playerWeapon]);
  904.         c.lastVeng = 0;
  905.         c.vengOn = false;
  906.  
  907.         if (c.duelRule[8]) {
  908.             if (c.duelRule[1]) {
  909.                 c.getPA().movePlayer(c.duelTeleX, c.duelTeleY, 0);
  910.             } else {
  911.                 c.getPA().movePlayer(3366 + Misc.random(12), 3246 + Misc.random(6), 0);
  912.             }
  913.         } else {
  914.             if (c.duelRule[1]) {
  915.                 c.getPA().movePlayer(c.duelTeleX, c.duelTeleY, 0);
  916.             } else {
  917.                 c.getPA().movePlayer(3335 + Misc.random(12), 3246 + Misc.random(6), 0);
  918.             }
  919.         }
  920.         if (o != null) {
  921.             c.getPA().createPlayerHints(10, o.playerId);
  922.         }
  923.         c.getPA().showOption(3, 0, "Attack");
  924.         for (int i = 0; i < 20; i++) {
  925.             c.playerLevel[i] = c.getPA().getLevelForXP(c.playerXP[i]);
  926.             c.getPA().refreshSkill(i);
  927.         }
  928.         if (o != null) {
  929.             for (GameItem item : o.getTradeAndDuel().stakedItems) {
  930.                 otherStakedItems.add(new GameItem(item.id, item.amount));
  931.             }
  932.         }
  933.         PlayerSave.saveGame(c);
  934.         c.getPA().requestUpdates();
  935.     }
  936.  
  937.  
  938.     public void duelVictory() {
  939.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  940.         c.duelStatus = 6;
  941.         c.getCombat().resetPrayers();
  942.         for (int i = 0; i < 20; i++) {
  943.             c.playerLevel[i] = c.getPA().getLevelForXP(c.playerXP[i]);
  944.             c.getPA().refreshSkill(i);
  945.         }
  946.         if (c.isSkulled) {
  947.             c.isSkulled = false;
  948.             c.skullTimer = 0;
  949.             c.headIconPk = -1;
  950.             c.getPA().requestUpdates();
  951.         }
  952.         c.getPA().refreshSkill(3);
  953.         duelRewardInterface();
  954.         c.getPA().sendFrame126(c.duelName, 6840);
  955.         c.getPA().sendFrame126("" + c.duelLevel, 6839);
  956.         c.getPA().showInterface(6733);
  957.         claimStakedItems();
  958.         c.getPA().movePlayer(Config.DUELING_RESPAWN_X + (Misc.random(Config.RANDOM_DUELING_RESPAWN)), Config.DUELING_RESPAWN_Y + (Misc.random(Config.RANDOM_DUELING_RESPAWN)), 0);
  959.         c.getPA().requestUpdates();
  960.         c.getPA().showOption(3, 0, "Challenge");
  961.         c.getPA().createPlayerHints(10, -1);
  962.         c.canOffer = true;
  963.         c.duelSpaceReq = 0;
  964.         c.duelingWith = 0;
  965.         c.getCombat().resetPlayerAttack();
  966.         c.duelRequested = false;
  967.         PlayerSave.saveGame(c);
  968.         if (o != null)
  969.             PlayerSave.saveGame(o);
  970.     }
  971.  
  972.     public void duelRewardInterface() {
  973.         synchronized(c) {
  974.             c.getOutStream().createFrameVarSizeWord(53);
  975.             c.getOutStream().writeWord(6822);
  976.             c.getOutStream().writeWord(otherStakedItems.toArray().length);
  977.             for (GameItem item : otherStakedItems) {
  978.                 if (item.amount > 254) {
  979.                     c.getOutStream().writeByte(255);
  980.                     c.getOutStream().writeDWord_v2(item.amount);
  981.                 } else {
  982.                     c.getOutStream().writeByte(item.amount);
  983.                 }
  984.                 if (item.id > Config.ITEM_LIMIT || item.id < 0) {
  985.                     item.id = Config.ITEM_LIMIT;
  986.                 }
  987.                 c.getOutStream().writeWordBigEndianA(item.id + 1);
  988.             }
  989.             c.getOutStream().endFrameVarSizeWord();
  990.             c.flushOutStream();
  991.         }
  992.     }
  993.  
  994.  
  995.     public void claimStakedItems() {
  996.         for (GameItem item : otherStakedItems) {
  997.             if (item.id > 0 && item.amount > 0) {
  998.                 if (Item.itemStackable[item.id]) {
  999.                     if (!c.getItems().addItem(item.id, item.amount)) {
  1000.                         Server.itemHandler.createGroundItem(c, item.id, 3363, 3269, c.heightLevel, item.amount, c.getId());
  1001.                     }
  1002.                 } else {
  1003.                     int amount = item.amount;
  1004.                     for (int a = 1; a <= amount; a++) {
  1005.                         if (!c.getItems().addItem(item.id, 1)) {
  1006.                             Server.itemHandler.createGroundItem(c, item.id, 3363, 3269, c.heightLevel, 1, c.getId());
  1007.                         }
  1008.                     }
  1009.                 }
  1010.             }
  1011.         }
  1012.         for (GameItem item : stakedItems) {
  1013.             if (item.id > 0 && item.amount > 0) {
  1014.                 if (Item.itemStackable[item.id]) {
  1015.                     if (!c.getItems().addItem(item.id, item.amount)) {
  1016.                         Server.itemHandler.createGroundItem(c, item.id, 3363, 3269, c.heightLevel, item.amount, c.getId());
  1017.                     }
  1018.                 } else {
  1019.                     int amount = item.amount;
  1020.                     for (int a = 1; a <= amount; a++) {
  1021.                         if (!c.getItems().addItem(item.id, 1)) {
  1022.                             Server.itemHandler.createGroundItem(c, item.id, 3363, 3269, c.heightLevel, 1, c.getId());
  1023.                         }
  1024.                     }
  1025.                 }
  1026.             }
  1027.         }
  1028.         resetDuel();
  1029.         resetDuelItems();
  1030.         PlayerSave.saveGame(c);
  1031.         c.duelStatus = 0;
  1032.     }
  1033.  
  1034.     public void declineDuel() {
  1035.         declineDuel(true);
  1036.     }
  1037.  
  1038.     public void declineDuel(boolean tellOther) {
  1039.         c.getPA().removeAllWindows();
  1040.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  1041.         if (o == null || o.duelStatus == 6) {
  1042.             return;
  1043.         }
  1044.         o.getPA().removeAllWindows();
  1045.         //o.sendMessage("Other player declined trade!");
  1046.         if (tellOther) {
  1047.             o.getTradeAndDuel().declineDuel(false);
  1048.             o.getTradeAndDuel().c.getPA().removeAllWindows();
  1049.         }
  1050.         c.canOffer = true;
  1051.         c.duelStatus = 0;
  1052.         c.duelingWith = 0;
  1053.         c.duelSpaceReq = 0;
  1054.         c.inDuelScreen = false;
  1055.         c.duelRequested = false;
  1056.         for (GameItem item : stakedItems) {
  1057.             if (item.amount < 1) {
  1058.                 continue;
  1059.             }
  1060.             if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) {
  1061.                 c.getItems().addItem(item.id, item.amount);
  1062.             } else {
  1063.                 c.getItems().addItem(item.id, 1);
  1064.             }
  1065.         }
  1066.         stakedItems.clear();
  1067.         for (int i = 0; i < c.duelRule.length; i++) {
  1068.             c.duelRule[i] = false;
  1069.         }
  1070.     }
  1071.  
  1072.     public void resetDuel() {
  1073.         if (c.isDead) {
  1074.             c.lostDuel = true;
  1075.         }
  1076.         c.getPA().showOption(3, 0, "Challenge");
  1077.         c.headIconHints = 0;
  1078.         for (int i = 0; i < c.duelRule.length; i++) {
  1079.             c.duelRule[i] = false;
  1080.         }
  1081.         c.inDuelScreen = false;
  1082.         c.getPA().createPlayerHints(10, -1);
  1083.         c.canOffer = true;
  1084.         c.duelStatus = 0;
  1085.         c.duelSpaceReq = 0;
  1086.         c.duelingWith = 0;
  1087.         c.getPA().requestUpdates();
  1088.         c.getCombat().resetPlayerAttack();
  1089.         c.duelRequested = false;
  1090.     }
  1091.  
  1092.     public void resetDuelItems() {
  1093.         stakedItems.clear();
  1094.         otherStakedItems.clear();
  1095.     }
  1096.  
  1097.     public void changeDuelStuff() {
  1098.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  1099.         if (o == null) {
  1100.             return;
  1101.         }
  1102.         o.duelStatus = 1;
  1103.         c.duelStatus = 1;
  1104.         o.getPA().sendFrame126("", 6684);
  1105.         c.getPA().sendFrame126("", 6684);
  1106.     }
  1107.  
  1108.  
  1109.     public void selectRule(int i) {
  1110.         Client o = (Client) PlayerHandler.players[c.duelingWith];
  1111.         if (o == null || !c.canOffer) {
  1112.             return;
  1113.         }
  1114.         changeDuelStuff();
  1115.         o.duelSlot = c.duelSlot;
  1116.         if (i >= 11 && c.duelSlot > -1) {
  1117.             if (c.playerEquipment[c.duelSlot] > 0) {
  1118.                 if (!c.duelRule[i]) {
  1119.                     c.duelSpaceReq++;
  1120.                 } else {
  1121.                     c.duelSpaceReq--;
  1122.                 }
  1123.             }
  1124.             if (o.playerEquipment[o.duelSlot] > 0) {
  1125.                 if (!o.duelRule[i]) {
  1126.                     o.duelSpaceReq++;
  1127.                 } else {
  1128.                     o.duelSpaceReq--;
  1129.                 }
  1130.             }
  1131.         }
  1132.         if (i == 16 && (c.getItems().is2handed(c.getItems().getItemName(c.playerEquipment[Player.playerWeapon]).toLowerCase(), c.playerEquipment[Player.playerWeapon])
  1133.                 && c.getItems().freeSlots() == 0) || (o.getItems().is2handed(c.getItems().getItemName(c.playerEquipment[Player.playerWeapon]).toLowerCase(), c.playerEquipment[Player.playerWeapon])
  1134.                 && o.getItems().freeSlots() == 0)) {
  1135.             c.sendMessage("You or your opponent don't have the required space to set this rule.");
  1136.             return;
  1137.         }
  1138.         if (i >= 11) {
  1139.             if (c.getItems().freeSlots() < (c.duelSpaceReq) || o.getItems().freeSlots() < (o.duelSpaceReq)) {
  1140.                 c.sendMessage("You or your opponent don't have the required space to set this rule.");
  1141.                 if (c.playerEquipment[c.duelSlot] > 0) {
  1142.                     c.duelSpaceReq--;
  1143.                 }
  1144.                 if (o.playerEquipment[o.duelSlot] > 0) {
  1145.                     o.duelSpaceReq--;
  1146.                 }
  1147.                 return;
  1148.             }
  1149.         }
  1150.  
  1151.         if (!c.duelRule[i]) {
  1152.             c.duelRule[i] = true;
  1153.             c.duelOption += c.DUEL_RULE_ID[i];
  1154.         } else {
  1155.             c.duelRule[i] = false;
  1156.             c.duelOption -= c.DUEL_RULE_ID[i];
  1157.         }
  1158.  
  1159.         c.getPA().sendFrame87(286, c.duelOption);
  1160.         o.duelOption = c.duelOption;
  1161.         o.duelRule[i] = c.duelRule[i];
  1162.         o.getPA().sendFrame87(286, o.duelOption);
  1163.  
  1164.         if (c.duelRule[8]) {
  1165.             if (c.duelRule[1]) {
  1166.                 c.duelTeleX = 3366 + Misc.random(12);
  1167.                 o.duelTeleX = c.duelTeleX - 1;
  1168.                 c.duelTeleY = 3246 + Misc.random(6);
  1169.                 o.duelTeleY = c.duelTeleY;
  1170.             }
  1171.         } else {
  1172.             if (c.duelRule[1]) {
  1173.                 c.duelTeleX = 3335 + Misc.random(12);
  1174.                 o.duelTeleX = c.duelTeleX - 1;
  1175.                 c.duelTeleY = 3246 + Misc.random(6);
  1176.                 o.duelTeleY = c.duelTeleY;
  1177.             }
  1178.         }
  1179.  
  1180.     }
  1181.  
  1182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement