@Override public boolean checkWalkStep(int lastX, int lastY, int nextX, int nextY) { if (npc != null && nextY < base.getY() + 28) { if (npc.getPhase() > 1) { for (int[] step : PLATFORM_STEPS[0]) { if (base.getX() + (step[0] - 64) == nextX && base.getY() + (step[1] - 64) == nextY) { return true; } } if (npc.getPhase() > 2) { for (int[] step : PLATFORM_STEPS[1]) { if (base.getX() + (step[0] - 64) == nextX && base.getY() + (step[1] - 64) == nextY) { return true; } } if (npc.getPhase() > 3) { for (int[] step : PLATFORM_STEPS[2]) { if (base.getX() + (step[0] - 64) == nextX && base.getY() + (step[1] - 64) == nextY) { return true; } } } } } return false; } return true; }
/** Ends the controler. 0 - tele 1 - logout */ private void end(int type) { player.setForceMultiArea(false); player.setLargeSceneView(false); if (type == 0) { boolean resizable = player.getInterfaceManager().hasRezizableScreen(); player.getPackets().closeInterface(resizable ? 746 : 548, resizable ? 1 : 0); player.getPackets().sendGlobalConfig(184, -1); } else { player.setLocation(OUTSIDE); } removeControler(); if (npc != null) player.getBank().addItems(npc.getRewards().toArray(), false); /* * 1200 delay because of leaving */ CoresManager.slowExecutor.schedule( new Runnable() { @Override public void run() { RegionBuilder.destroyMap(regionBase[0], regionBase[1], 8, 8); } }, 1200, TimeUnit.MILLISECONDS); }
@Override public void process() { if (npc == null) return; if (player.getY() < base.getY() + 28) { if (npc.hasFinished()) { return; } if (platformStand++ == 3) { player .getPackets() .sendGameMessage("You are damaged for standing too long on the raw magical platforms."); player.applyHit(new Hit(npc, 200, HitLook.REGULAR_DAMAGE)); platformStand = 0; } } else { platformStand = 0; } }
@Override public boolean processButtonClick(int interfaceId, int componentId, int slotId, int packetId) { if (npc == null) { return true; } switch (interfaceId) { case 1284: switch (componentId) { case 8: player.getBank().addItems(npc.getRewards().toArray(), false); npc.getRewards().clear(); player.getPackets().sendGameMessage("All the items were moved to your bank."); break; case 9: npc.getRewards().clear(); player.getPackets().sendGameMessage("All the items were removed from the chest."); break; case 10: for (int slot = 0; slot < npc.getRewards().toArray().length; slot++) { Item item = npc.getRewards().get(slot); if (item == null) { continue; } boolean added = true; if (item.getDefinitions().isStackable() || item.getAmount() < 2) { added = player.getInventory().addItem(item); if (added) { npc.getRewards().toArray()[slot] = null; } } else { for (int i = 0; i < item.getAmount(); i++) { Item single = new Item(item.getId()); if (!player.getInventory().addItem(single)) { added = false; break; } npc.getRewards().remove(single); } } if (!added) { player .getPackets() .sendGameMessage( "You only had enough space in your inventory to accept some of the items."); break; } } break; case 7: Item item = npc.getRewards().get(slotId); if (item == null) { return true; } switch (packetId) { case 52: player.getPackets().sendGameMessage("It's a " + item.getDefinitions().getName()); return false; case 4: npc.getRewards().toArray()[slotId] = null; break; case 64: player.getBank().addItems(new Item[] {npc.getRewards().toArray()[slotId]}, false); npc.getRewards().toArray()[slotId] = null; break; case 61: boolean added = true; if (item.getDefinitions().isStackable() || item.getAmount() < 2) { added = player.getInventory().addItem(item); if (added) { npc.getRewards().toArray()[slotId] = null; } } else { for (int i = 0; i < item.getAmount(); i++) { Item single = new Item(item.getId()); if (!player.getInventory().addItem(single)) { added = false; break; } npc.getRewards().remove(single); } } if (!added) { player .getPackets() .sendGameMessage( "You only had enough space in your inventory to accept some of the items."); break; } break; default: return true; } break; default: return true; } npc.openRewardChest(false); return false; } return true; }
@Override public boolean processObjectClick1(WorldObject object) { if (npc == null) { return true; } if (object.getId() == 70790) { if (npc.getPhase() < 5) { return true; } player.lock(); FadingScreen.fade( player, new Runnable() { @Override public void run() { player .getPackets() .sendGameMessage( "You descend the stairs that appeared when you defeated the Queen Black Dragon."); player.getPackets().sendGlobalConfig(184, -1); npc.finish(); RegionBuilder.copyAllPlanesMap(160, 760, regionBase[0], regionBase[1], 8, 8); player.setForceNextMapLoadRefresh(true); player.loadMapRegions(); player .getPackets() .sendDestroyObject(new WorldObject(70849, 10, 0, base.transform(24, 21, -1))); player .getPackets() .sendDestroyObject(new WorldObject(70837, 10, 0, base.transform(22, 24, -1))); player .getPackets() .sendDestroyObject(new WorldObject(70840, 10, 0, base.transform(34, 24, -1))); World.removeObject(new WorldObject(70775, 10, 0, base.transform(31, 29, -1)), true); player .getPackets() .sendDestroyObject(new WorldObject(70822, 10, 0, base.transform(21, 35, -1))); player .getPackets() .sendDestroyObject(new WorldObject(70818, 10, 0, base.transform(39, 35, -1))); player.setNextWorldTile(base.transform(31, 36, -1)); boolean resizable = player.getInterfaceManager().hasRezizableScreen(); player.getPackets().closeInterface(resizable ? 746 : 548, resizable ? 1 : 0); player.unlock(); } }); return false; } if (object.getId() == 70813) { Magic.sendObjectTeleportSpell(player, true, Settings.RESPAWN_PLAYER_LOCATION); return false; } if (object.getId() == 70814) { player.getPackets().sendGameMessage("The gate is locked."); return false; } if (object.getId() == 70815) { player.getDialogueManager().startDialogue("RewardChest", npc); return false; } if (object.getId() == 70817) { npc.openRewardChest(false); return false; } if (object.getId() == npc.getActiveArtifact().getId()) { player.getMusicsManager().playMusic(1118); // QUEEN BLACK DRAGON npc.setSpawningWorms(false); npc.setNextAttack(20); npc.setActiveArtifact(new WorldObject(object.getId() + 1, 10, 0, object)); npc.setHitpoints(npc.getMaxHitpoints()); npc.setCantInteract(false); npc.setPhase(npc.getPhase() + 1); World.spawnObject(npc.getActiveArtifact(), false); switch (object.getId()) { case 70777: player.getPackets().sendGlobalConfig(1924, 2); player .getPackets() .sendSpawnedObject(new WorldObject(70843, 10, 0, base.transform(24, 21, -1))); break; case 70780: player.getPackets().sendGlobalConfig(1924, 4); player .getPackets() .sendSpawnedObject(new WorldObject(70845, 10, 0, base.transform(24, 21, -1))); break; case 70783: player.getPackets().sendGlobalConfig(1924, 6); player .getPackets() .sendSpawnedObject(new WorldObject(70847, 10, 0, base.transform(24, 21, -1))); break; case 70786: player.getPackets().sendGlobalConfig(1924, 8); player .getPackets() .sendSpawnedObject(new WorldObject(70849, 10, 0, base.transform(24, 21, -1))); break; } return false; } return true; }