armark1ng

Untitled

Apr 7th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.99 KB | None | 0 0
  1. package com.rs.game.player.controllers.bossInstance;
  2.  
  3. import com.rs.cache.loaders.AnimationDefinitions;
  4. import com.rs.game.Animation;
  5. import com.rs.game.EffectsManager.EffectType;
  6. import com.rs.game.Entity;
  7. import com.rs.game.Hit;
  8. import com.rs.game.Hit.HitLook;
  9. import com.rs.game.World;
  10. import com.rs.game.WorldObject;
  11. import com.rs.game.WorldTile;
  12. import com.rs.game.item.FloorItem;
  13. import com.rs.game.item.Item;
  14. import com.rs.game.map.bossInstance.BossInstance;
  15. import com.rs.game.map.bossInstance.BossInstanceHandler;
  16. import com.rs.game.map.bossInstance.BossInstanceHandler.Boss;
  17. import com.rs.game.map.bossInstance.impl.VoragoInstance;
  18. import com.rs.game.npc.NPC;
  19. import com.rs.game.npc.others.GraveStone;
  20. import com.rs.game.npc.vorago.StoneClone;
  21. import com.rs.game.npc.vorago.Vitalis;
  22. import com.rs.game.npc.vorago.Vorago;
  23. import com.rs.game.npc.vorago.VoragoFace;
  24. import com.rs.game.player.Inventory;
  25. import com.rs.game.player.MusicsManager;
  26. import com.rs.game.player.controllers.events.DeathEvent;
  27. import com.rs.game.tasks.WorldTask;
  28. import com.rs.game.tasks.WorldTasksManager;
  29. import com.rs.net.decoders.WorldPacketsDecoder;
  30. import com.rs.utils.Utils;
  31.  
  32. public class VoragoInstanceController extends BossInstanceController {
  33.  
  34. /*
  35. * Vorago location for jump 3097 6119 0 Vorago gap object 84826
  36. */
  37.  
  38. private boolean isJumping;
  39.  
  40. @Override
  41. public boolean processObjectClick1(final WorldObject object) {
  42. if (getVoragoInstance().getVorago() == null && getVoragoInstance().playerIsOnBattle(player))
  43. return false;
  44. if (object.getId() == 84828) {// squeeze
  45. if (getVoragoInstance().getVorago().getPhaseProgress() == 1) {
  46. player.getPackets().sendGameMessage("There is no need to do that anymore.");
  47. return false;
  48. }
  49. if (getVoragoInstance().arttributes[0]) {
  50. player.getPackets().sendGameMessage("There is already someone jumping.");
  51. return false;
  52. }
  53. player.lock();
  54. getVoragoInstance().arttributes[0] = player.getX() > object.getX() ? true : false;
  55. getVoragoInstance().getVorago().getTemporaryAttributtes().put("VoragoType", 0);
  56. getVoragoInstance().getVorago().transform();
  57. isJumping = true;
  58. player.setNextAnimation(new Animation(-1));// TODO
  59. WorldTasksManager.schedule(new WorldTask() {
  60. @Override
  61. public void run() {
  62. player.unlock();
  63. WorldTile location = new WorldTile(player.getX() > object.getX() ? (object.getX() - 1) : (object
  64. .getX() + 1), object.getY(), 0);
  65. player.setNextAnimation(new Animation(-1));
  66. player.setNextWorldTile(location);
  67. }
  68. }, 2);
  69. return false;
  70. } else if (object.getId() == 84827) {// climb up/down
  71. player.lock();
  72. player.setNextFaceRectanglePrecise(new WorldTile(object.getX() - 2, object.getY(), 0), 1, 1);
  73. player.setNextAnimation(new Animation(player.getX() == object.getX() ? 15456 : 15457));
  74. WorldTasksManager.schedule(new WorldTask() {
  75. @Override
  76. public void run() {
  77. player.unlock();
  78. WorldTile location = new WorldTile(player.getX() == object.getX() ? (object.getX() - 1) : (object
  79. .getX()), object.getY(), 0);
  80. player.setNextAnimation(new Animation(-1));
  81. player.setNextWorldTile(location);
  82. }
  83. }, 2);
  84. return false;
  85. } else if (object.getId() == 84825) {// jump gap
  86. if (player.getY() <= object.getY()) {
  87. player.getPackets().sendGameMessage("You can't reach that!");
  88. return false;
  89. }
  90. if (player.getInventory().getFreeSlots() == 0) {
  91. player.getPackets().sendGameMessage(
  92. "You need to have atleast 1 free inventory space in order to recieve the maul piece.");
  93. return false;
  94. }
  95. Vorago vorago = getVoragoInstance().getVorago();
  96. if (vorago.getX() != (object.getX() - 2) || vorago.getY() != (object.getY() - 4)) {
  97. player.getPackets().sendGameMessage("Looks like vorago is not in the right spot.");
  98. return false;
  99. }
  100. if (vorago.getDirection() != Utils.getAngle(0, -1) && vorago.getDirection() != Utils.getAngle(1, -1)
  101. && vorago.getDirection() != Utils.getAngle(-1, -1)) {
  102. player.getPackets().sendGameMessage("Vorago must be facing south in order to jump on his back.");
  103. return false;
  104. }
  105. player.lock();
  106. player.setNextAnimation(new Animation(20311));
  107. vorago.setNextAnimation(new Animation(20376));
  108. player.faceEntity(vorago);
  109. vorago.setCantInteract(true);
  110. WorldTasksManager.schedule(new WorldTask() {
  111. @Override
  112. public void run() {
  113. player.unlock();
  114. WorldTile location = getVoragoInstance().getTile(new WorldTile(3104, 6121, 0));
  115. player.setNextAnimation(new Animation(-1));
  116. vorago.setCantInteract(false);
  117. vorago.setPhaseProgress(1);
  118. player.setNextWorldTile(location);
  119. player.getInventory().addItem(28600, 1);
  120. }
  121. }, (AnimationDefinitions.getAnimationDefinitions(20311).getEmoteClientCycles() / 30) + 1);
  122. return false;
  123. } else if (object.getId() == 84909) {// rope
  124. player.lock();
  125. player.setNextAnimation(new Animation(828));
  126. WorldTasksManager.schedule(new WorldTask() {
  127. @Override
  128. public void run() {
  129. getInstance().leaveInstance(player, BossInstance.EXITED);
  130. removeControler();
  131. }
  132. }, 0);
  133. return false;
  134. } else if (object.getId() == 84826) {// several jump gaps
  135. player.lock();
  136. player.setNextAnimation(new Animation(15461));
  137. WorldTasksManager.schedule(new WorldTask() {
  138. @Override
  139. public void run() {
  140. player.unlock();
  141. int rot = object.getRotation();
  142. WorldTile location = new WorldTile(rot == 0 ? player.getX()
  143. : (player.getX() < object.getX() ? (object.getX() + 3) : (object.getX() - 1)),
  144. rot == 0 ? (player.getY() < object.getY() ? (object.getY() + 3) : (object.getY() - 1))
  145. : player.getY(), 0);
  146. player.setNextAnimation(new Animation(-1));
  147. player.setNextWorldTile(location);
  148. }
  149. }, (AnimationDefinitions.getAnimationDefinitions(15461).getEmoteClientCycles() / 30) + 1);
  150. return false;
  151. } else if (object.getId() == 84959) {
  152. getVoragoInstance().getVorago().fireGravityField(player);
  153. return false;
  154. } else if (object.getId() == 95044 || object.getId() == 95043 || object.getId() == 95042) {// Bombs
  155. getVoragoInstance().getVorago().handleBombClick(player, object);
  156. return false;
  157. }
  158. return true;
  159. }
  160.  
  161. @Override
  162. public boolean processObjectClick5(WorldObject object) {
  163. if (object.getId() == 84962) {
  164. int index = getVoragoInstance().getVorago().getCeilingIndex(
  165. new WorldTile(object.getX(), object.getY(), object.getPlane()));
  166. if (getVoragoInstance().getVorago().getCeilingColapses()[index] == null)
  167. return false;
  168. getVoragoInstance().getVorago().getCeilingColapses()[index] = null;
  169. player.faceObject(object);
  170. player.lock();
  171. WorldTasksManager.schedule(new WorldTask() {
  172. @Override
  173. public void run() {
  174. player.unlock();
  175. World.removeObject(object);
  176. if (!player.getEffectsManager().hasActiveEffect(EffectType.BARRICADE))
  177. player.applyHit(new Hit(getVoragoInstance().getVorago(), 4000, HitLook.REGULAR_DAMAGE));
  178. }
  179. }, 1);
  180. return false;
  181. }
  182. return true;
  183. }
  184.  
  185. @Override
  186. public boolean keepCombating(Entity target) {
  187. if (target.getTemporaryAttributtes().get("CantBeAttackedOnPhaseStart") != null
  188. || (target.getTemporaryAttributtes().get("CantBeAttacked") != null))
  189. return false;
  190. return true;
  191. }
  192.  
  193. @Override
  194. public boolean canAttack(Entity target) {
  195. if (target.getTemporaryAttributtes().get("CantBeAttackedOnPhaseStart") != null)
  196. return false;
  197. if (target.getTemporaryAttributtes().get("BringHimDownClick") != null
  198. && target.getTemporaryAttributtes().get("BringHimDownClick") == Boolean.TRUE) {
  199. if (player.getTemporaryAttributtes().get("BRINGHIM") != null) {
  200. if (!player.getInterfaceManager().containsInterface(1413))
  201. player.getInterfaceManager().sendFadingInterface(1413);
  202. getVoragoInstance().getVorago().setBringHimPoints(
  203. getVoragoInstance().getVorago().getBringHimPoints() + 1);
  204. player.getPackets().sendCSVarInteger(2770, getVoragoInstance().getVorago().getBringHimPoints());
  205. player.setNextAnimation(getVoragoInstance().getVorago().getBringHimDownAnimation());
  206. return false;
  207. }
  208. player.stopAll();
  209. player.faceEntity(target);
  210. player.getTemporaryAttributtes().put("BRINGHIM", Boolean.TRUE);
  211. player.setNextAnimation(getVoragoInstance().getVorago().getBringHimDownAnimation());
  212. player.getPackets().sendCSVarInteger(2770, getVoragoInstance().getVorago().getBringHimPoints());
  213. player.getInterfaceManager().sendFadingInterface(1413);
  214. return false;
  215. } else if (target.getTemporaryAttributtes().get("CantBeAttacked") != null) {
  216. String reason = (String) target.getTemporaryAttributtes().get("CantBeAttacked");
  217. if (reason != "")
  218. player.getPackets().sendGameMessage(reason);
  219. return false;
  220. } else if (target instanceof StoneClone) {
  221. if (((StoneClone) target).getTarget() != player && !hasKilledClone()) {
  222. player.getPackets().sendGameMessage(
  223. "Only those who have recently killed their stone clone can battle one.");
  224. return false;
  225. }
  226. }
  227. return true;
  228. }
  229.  
  230. @Override
  231. public boolean checkWalkStep(int lastX, int lastY, int nextX, int nextY) {
  232. for (int i = 95042; i <= 95044; i++) {
  233. if (World.containsObjectWithId(new WorldTile(nextX, nextY, player.getPlane()), i))
  234. return false;
  235. }
  236. if (player.getTemporaryAttributtes().get("PHASE_5_START") != null
  237. && nextX >= getVoragoInstance().getVoragoSpawnLocation(5).getX())
  238. return false;
  239. for (NPC npc : World.getNPCs()) {
  240. if (npc instanceof Vorago) {
  241. Vorago vorago = (Vorago) npc;
  242. if (Utils.colides(nextX, nextY, player.getSize(), npc.getX(), npc.getY(), npc.getSize())) {
  243. if (vorago.getPhase() == 5
  244. || vorago.getTemporaryAttributtes().get("TheEnd") != null
  245. || ((vorago.getPhase() == 3 || vorago.getPhase() == 4)
  246. && vorago.getTemporaryAttributtes().get("CantBeAttacked") != null && vorago
  247. .getTemporaryAttributtes().get("waterfall") == null))
  248. return false;
  249. }
  250. if (!vorago.canMove(player, nextX, nextY))
  251. return false;
  252. }
  253. if (Utils.colides(nextX, nextY, player.getSize(), npc.getX(), npc.getY(), npc.getSize()))
  254. if (npc instanceof Vitalis || npc instanceof VoragoFace)
  255. return false;
  256. }
  257. return true;
  258. }
  259.  
  260. public boolean hasKilledClone() {
  261. return player.getTemporaryAttributtes().get("RecentlyKilledClone") != null;
  262. }
  263.  
  264. @Override
  265. public void processIngoingHit(Hit hit) {
  266. if (hit.getLook() == HitLook.MAGIC_DAMAGE && hit.getSource() != null && (hit.getSource() instanceof Vorago)) {
  267. int blues = player.getTemporaryAttributtes().get("BlueBombs") == null ? 0 : (int) player
  268. .getTemporaryAttributtes().get("BlueBombs");
  269. player.getTemporaryAttributtes().put("BlueBombs", blues + 1);
  270. }
  271. if (hit.getSource() instanceof Vorago) {
  272. Vorago vorago = (Vorago) hit.getSource();
  273. if (vorago.getPhase() == 5 && vorago.getHitpoints() == 0) {
  274. hit.setDamage(0);
  275. }
  276. }
  277. super.processIngoingHit(hit);
  278. }
  279.  
  280. @Override
  281. public void processIncommingHit(Hit hit, Entity target) {
  282. if (target instanceof Vorago) {
  283. int hitDamage = hit.getDamage();
  284. int totalDamage = player.getTemporaryAttributtes().get("TotalDamage") == null ? 0 : (int) player
  285. .getTemporaryAttributtes().get("TotalDamage");
  286. player.getTemporaryAttributtes().put("TotalDamage", totalDamage + hitDamage);
  287. }
  288. }
  289.  
  290. @Override
  291. public void processNPCDeath(NPC npc) {
  292. if (npc instanceof StoneClone) {
  293. if (((StoneClone) npc).getTarget() == player) {
  294. getVoragoInstance().getVorago().sendCloneDeath(player);
  295. player.getHintIconsManager().removeAll();
  296. player.getHintIconsManager().removeUnsavedHintIcon();
  297. player.getTemporaryAttributtes().put("RecentlyKilledClone", Boolean.TRUE);
  298. }
  299. }
  300. }
  301.  
  302. @Override
  303. public boolean processNPCClick1(NPC npc) {
  304. if (npc.getId() == 17162 || npc.getId() == 17161) {
  305. if (getVoragoInstance().getVoragoFace().isTransforming())
  306. return false;
  307. if (npc.getId() == 17162) {
  308. if (getVoragoInstance().getVoragoFace().isBattleInGoing()) {
  309. player.getDialogueManager().startDialogue("SimpleMessage", "Looks like vorago is not here.");
  310. return false;
  311. }
  312. getVoragoInstance().getVoragoFace().startTransformation(player);
  313. } else
  314. player.getDialogueManager().startDialogue("VoragoFaceD", npc.getId(), 0, getVoragoInstance());
  315. return false;
  316. }
  317. return true;
  318. }
  319.  
  320. private int process;
  321.  
  322. @Override
  323. public void process() {
  324. Vorago vorago = getVoragoInstance().getVorago();
  325. if (vorago == null)
  326. return;
  327. if (process == 4) {
  328. if (vorago.getTemporaryAttributtes().get("BringHimDownClick") != null
  329. && vorago.getTemporaryAttributtes().get("BringHimDownClick") == Boolean.TRUE) {
  330. player.applyHit(new Hit(vorago, 150, HitLook.REGULAR_DAMAGE));
  331. } else if (vorago.isUnderMist(player) && vorago.getHitpoints() != 0) {
  332. player.applyHit(new Hit(vorago, Utils.random(300, 600), HitLook.REGULAR_DAMAGE));
  333. int perc = player.getCombatDefinitions().getSpecialAttackPercentage();
  334. if (perc != 0)
  335. player.getCombatDefinitions().desecreaseSpecialAttack(perc < 10 ? (10 - perc) : 10);
  336. player.setRunEnergy(player.getRunEnergy() - 20);
  337. } else if (player.getTemporaryAttributtes().get("Suffocating") != null && vorago.getHitpoints() != 0) {
  338. int damage = (int) player.getTemporaryAttributtes().get("Suffocating");
  339. player.applyHit(new Hit(vorago, damage, HitLook.REGULAR_DAMAGE));
  340. player.getTemporaryAttributtes().put("Suffocating", damage + 100);
  341. } else if (vorago.getPhase() == 5) {
  342. if (hasWeaponPieces())
  343. player.applyHit(new Hit(vorago, 100, HitLook.REGULAR_DAMAGE));
  344. }
  345. process = 0;
  346. }
  347. process++;
  348. }
  349.  
  350. public boolean hasWeaponPieces() {
  351. return player.getInventory().containsOneItem(28600, 28602, 28604);
  352. }
  353.  
  354. @Override
  355. public void moved() {
  356. if (player.getTemporaryAttributtes().get("BRINGHIM") != null) {
  357. player.getTemporaryAttributtes().remove("BRINGHIM");
  358. player.setNextAnimation(new Animation(-1));
  359. player.getInterfaceManager().removeFadingInterface();
  360. }
  361. }
  362.  
  363. @Override
  364. public boolean processNPCClick2(NPC npc) {
  365. if (npc.getId() == 17161) {
  366. player.getDialogueManager().startDialogue("VoragoFaceD", npc.getId(), 1, getVoragoInstance());
  367. return false;
  368. }
  369. return true;
  370. }
  371.  
  372. @Override
  373. public boolean logout() {
  374. if (getVoragoInstance().playerIsOnBattle(player)) {
  375. if (getVoragoInstance().getVorago() != null) {
  376. if (player.getInventory().containsItem(28600, 1)) {
  377. getVoragoInstance().getVorago().weaponPieces[0] = World.addWeaponPiece(new Item(28600),
  378. new WorldTile(player));
  379. }
  380. if (player.getInventory().containsItem(28602, 1)) {
  381. getVoragoInstance().getVorago().weaponPieces[1] = World.addWeaponPiece(new Item(28602),
  382. new WorldTile(player));
  383. }
  384. if (player.getInventory().containsItem(28604, 1)) {
  385. getVoragoInstance().getVorago().weaponPieces[2] = World.addWeaponPiece(new Item(28604),
  386. new WorldTile(player));
  387. }
  388. if (player.getInventory().containsItem(28606, 1)) {
  389. World.addWeaponPiece(new Item(28606), new WorldTile(player));
  390. }
  391. }
  392. resetAttributesOnLeaveBattle();
  393. getVoragoInstance().removePlayerFromBattle(player, BossInstance.LOGGED_OUT);
  394. } else
  395. getVoragoInstance().removePlayer(player, BossInstance.LOGGED_OUT);
  396. return false;
  397. }
  398.  
  399. @Override
  400. public boolean login() {
  401. removeControler();
  402. BossInstanceHandler.joinInstance(player, Boss.Vorago, "", true);
  403. return false;
  404. }
  405.  
  406. public VoragoInstance getVoragoInstance() {
  407. return (VoragoInstance) getInstance();
  408. }
  409.  
  410. @Override
  411. public boolean sendDeath() {
  412. if (getVoragoInstance().getVorago() != null) {
  413. if (player.getInventory().containsItem(28600, 1)) {
  414. getVoragoInstance().getVorago().weaponPieces[0] = World.addWeaponPiece(new Item(28600), new WorldTile(
  415. player));
  416. }
  417. if (player.getInventory().containsItem(28602, 1)) {
  418. getVoragoInstance().getVorago().weaponPieces[1] = World.addWeaponPiece(new Item(28602), new WorldTile(
  419. player));
  420. }
  421. if (player.getInventory().containsItem(28604, 1)) {
  422. getVoragoInstance().getVorago().weaponPieces[2] = World.addWeaponPiece(new Item(28604), new WorldTile(
  423. player));
  424. }
  425. if (player.getInventory().containsItem(28606, 1)) {
  426. World.addWeaponPiece(new Item(28606), new WorldTile(player));
  427. }
  428. }
  429. if (getVoragoInstance().playerIsOnBattle(player)) {
  430. resetAttributesOnLeaveBattle();
  431. getVoragoInstance().removePlayerFromBattle(player, BossInstance.DIED);
  432. } else
  433. getVoragoInstance().removePlayer(player, BossInstance.DIED);
  434. player.lock(8);
  435. player.stopAll();
  436. WorldTasksManager.schedule(new WorldTask() {
  437. int loop;
  438.  
  439. @Override
  440. public void run() {
  441. if (loop == 0) {
  442. player.setNextAnimation(player.getTemporaryAttributtes().get("InstantDeath") != null ? new Animation(
  443. 20388) : player.getDeathAnimation());
  444. } else if (loop == 1) {
  445. player.getPackets().sendGameMessage("Oh dear, you have died.");
  446. } else if (loop == 3) {
  447. getInstance().leaveInstance(player, BossInstance.DIED);
  448. removeControler();
  449. if (getInstance().getSettings().isPractiseMode()) {
  450. player.reset();
  451. player.setNextWorldTile(getInstance().getBoss().getOutsideTile());
  452. } else {
  453.  
  454. WorldTile graveStoneLoc = getInstance().getBoss().getGraveStoneTile();
  455. if (graveStoneLoc == null)
  456. graveStoneLoc = getInstance().isPublic() ? new WorldTile(player) : getInstance().getBoss()
  457. .getOutsideTile();
  458.  
  459. if (getInstance().getBoss() == Boss.Corporeal_Beast) { // drop
  460. // items
  461. // instead
  462. player.reset();
  463. Integer[][] slots = GraveStone.getItemSlotsKeptOnDeath(player, true, player.hasSkull(),
  464. player.getPrayer().isProtectingItem());
  465. WorldTile respawnTile = DeathEvent.getRespawnHub(player);
  466. player.sendItemsOnDeath(null, graveStoneLoc, respawnTile, true, slots, true);
  467. player.setNextWorldTile(respawnTile);
  468. } else
  469. player.getControlerManager().startControler("DeathEvent", graveStoneLoc, player.hasSkull());
  470. }
  471. } else if (loop == 4) {
  472. player.getMusicsManager().playMusicEffect(MusicsManager.DEATH_MUSIC_EFFECT);
  473. stop();
  474. }
  475. loop++;
  476. }
  477. }, 0, 1);
  478. return false;
  479. }
  480.  
  481. @Override
  482. public boolean processMagicTeleport(WorldTile toTile) {
  483. if (!getVoragoInstance().isPublic() || (getVoragoInstance().playerIsOnBattle(player))) {
  484. player.getDialogueManager().startDialogue("SimpleMessage", "You can't leave just like that!");
  485. return false;
  486. }
  487. getVoragoInstance().removePlayer(player, BossInstance.TELEPORTED);
  488. return true;
  489. }
  490.  
  491. @Override
  492. public boolean processItemTeleport(WorldTile toTile) {
  493. if (!getVoragoInstance().isPublic() || (getVoragoInstance().playerIsOnBattle(player))) {
  494. player.getDialogueManager().startDialogue("SimpleMessage", "You can't leave just like that!");
  495. return false;
  496. }
  497. getVoragoInstance().removePlayer(player, BossInstance.TELEPORTED);
  498. return true;
  499. }
  500.  
  501. @Override
  502. public boolean processObjectTeleport(WorldTile toTile) {
  503. if (!getVoragoInstance().isPublic() || (getVoragoInstance().playerIsOnBattle(player))) {
  504. player.getDialogueManager().startDialogue("SimpleMessage", "You can't leave just like that!");
  505. return false;
  506. }
  507. getVoragoInstance().removePlayer(player, BossInstance.TELEPORTED);
  508. return true;
  509. }
  510.  
  511. public void resetAttributesOnLeaveBattle() {
  512. if (isJumping) {
  513. isJumping = false;
  514. getVoragoInstance().arttributes[0] = false;
  515. }
  516. player.getTemporaryAttributtes().clear();
  517. removeItems();
  518. }
  519.  
  520. @Override
  521. public boolean processButtonClick(int interfaceId, int componentId, int slotId, int slotId2, int packetId) {
  522. if (interfaceId == Inventory.INVENTORY_INTERFACE || interfaceId == Inventory.INVENTORY_INTERFACE_2) {
  523. if (slotId2 == 28600 || slotId2 == 28602 || slotId2 == 28604) {
  524. if (packetId != WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
  525. return true;
  526. if (player.getInventory().containsItem(28600, 1) && player.getInventory().containsItem(28602, 1)
  527. && player.getInventory().containsItem(28604, 1)) {
  528. player.getInventory().deleteItem(28600, 1);
  529. player.getInventory().deleteItem(28602, 1);
  530. player.getInventory().deleteItem(28604, 1);
  531. player.getInventory().addItem(28606, 1);
  532. player.getPackets().sendGameMessage(
  533. "You combine the weapon pieces together to make the maul of omens.");
  534. return false;
  535. }
  536. player.getPackets().sendGameMessage("You don't have all the weapon pieces required.");
  537. return false;
  538. } else if (slotId2 == 28606) {
  539. if (packetId != WorldPacketsDecoder.ACTION_BUTTON3_PACKET)
  540. return true;
  541. Vorago vorago = getVoragoInstance().getVorago();
  542. WorldTile voragoSpawnLocation = getVoragoInstance().getVoragoSpawnLocation(5);
  543. if (vorago == null || vorago.getPhase() != 5)
  544. return false;
  545. if (!Utils.isOnRange(vorago, player, 1)) {
  546. VoragoInstance.sendMessage(player, 1, "You need to be closer to use this on Vorago.");
  547. return false;
  548. }
  549. if (vorago.getX() != (voragoSpawnLocation.getX() + 8)) {
  550. VoragoInstance.sendMessage(player, 1, "Vorago is still not close enough to the edge.");
  551. return false;
  552. }
  553. vorago.sendRealDeath(player);
  554. }
  555. }
  556. return true;
  557. }
  558.  
  559. @Override
  560. public boolean canTakeItem(FloorItem item) {
  561. switch (item.getId()) {
  562. case 28600:
  563. getVoragoInstance().getVorago().weaponPieces[0] = null;
  564. break;
  565. case 28602:
  566. getVoragoInstance().getVorago().weaponPieces[1] = null;
  567. break;
  568. case 28604:
  569. getVoragoInstance().getVorago().weaponPieces[2] = null;
  570. break;
  571. }
  572. return true;
  573. }
  574.  
  575. @Override
  576. public boolean canDropItem(Item item) {
  577. switch (item.getId()) {
  578. case 28600:
  579. player.stopAll(false);
  580. player.lock(1);
  581. player.getInventory().deleteItem(item);
  582. getVoragoInstance().getVorago().weaponPieces[0] = World.addWeaponPiece(item, new WorldTile(player));
  583. return false;
  584. case 28602:
  585. player.stopAll(false);
  586. player.lock(1);
  587. player.getInventory().deleteItem(item);
  588. getVoragoInstance().getVorago().weaponPieces[1] = World.addWeaponPiece(item, new WorldTile(player));
  589. return false;
  590. case 28604:
  591. player.stopAll(false);
  592. player.lock(1);
  593. player.getInventory().deleteItem(item);
  594. getVoragoInstance().getVorago().weaponPieces[2] = World.addWeaponPiece(item, new WorldTile(player));
  595. return false;
  596. case 28606:
  597. player.stopAll(false);
  598. player.lock(1);
  599. player.getInventory().deleteItem(item);
  600. World.addWeaponPiece(item, new WorldTile(player));
  601. return false;
  602. }
  603. return true;
  604. }
  605.  
  606. public void removeItems() {
  607. for (int i = 0; i < 8; i += 2) {
  608. player.getInventory().deleteItem(new Item(28600 + i));
  609. }
  610. }
  611.  
  612. }
Advertisement
Add Comment
Please, Sign In to add comment