Advertisement
Guest User

Untitled

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