public void handlePacket(Player player, Packet packet) { int size = packet.getLength(); if(packet.getPacketId() == PacketHandlers.PacketId.WALK_2) { size -= 14; } player.getWalkingQueue().resetWalkingQueue(); int steps = (size - 5) / 2; if (steps > WalkingQueue.MAX_WALKING_WAYPOINTS) { misc.WriteError("Warning: Walk command contains too many steps (" + steps + ") currently set to 50 [maybe need increase?]"); return; } player.getWalkingQueue().setIsRunning(packet.readByteA() == 1); bool following = false; if (!canWalk(player, packet, following)) { player.getPackets().clearMapFlag(); player.getWalkingQueue().resetWalkingQueue(); return; } int firstX = packet.readUShort() - (player.getLocation().getRegionX() - 6) * 8; int firstY = packet.readShortA() - (player.getLocation().getRegionY() - 6) * 8; player.getWalkingQueue().addToWalkingQueue(firstX, firstY); for (int i = 0; i < steps; i++) //all the waypoints. player.getWalkingQueue().addToWalkingQueue((packet.readByteA() + firstX), (packet.readByteS() + firstY)); if (player.getTeleportTo() != null) //is teleporting? player.getWalkingQueue().resetWalkingQueue(); if (player.getTemporaryAttribute("homeTeleporting") != null) { player.removeTemporaryAttribute("homeTeleporting"); } SkillHandler.resetAllSkills(player); if (player.getTrade() != null) player.getTrade().decline(); if (player.getDuel() != null) { if (player.getDuel().getStatus() < 4) player.getDuel().declineDuel(); else if (player.getDuel().getStatus() == 8) player.getDuel().recieveWinnings(player); } if (player.getTarget() != null) { if (!following && player.getTarget().getAttacker() != null && player.getTarget().getAttacker().Equals(player)) player.getTarget().setAttacker(null); } if (!following) { player.getFollow().setFollowing(null); player.setTarget(null); player.removeTemporaryAttribute("autoCasting"); if (player.getEntityFocus() != 65535) player.setEntityFocus(65535); } player.getPackets().closeInterfaces(); }
public static void openInterface(Player p) { p.getPackets().displayInterface(771); p.getPackets().sendPlayerHead(771, 79); p.getPackets().animateInterface(9804, 771, 79); p.getPackets().sendConfig(1262, p.getAppearance().getGender() == 2 ? 1 : 8); p.getAppearance().setTemporaryAppearance(new Appearance()); p.getAppearance().getTemporaryAppearance().setColoursArray(p.getAppearance().getColoursArray()); p.getAppearance().getTemporaryAppearance().setLookArray(p.getAppearance().getLookArray()); p.getAppearance().getTemporaryAppearance().setGender(p.getAppearance().getGender()); p.removeTemporaryAttribute("hairToggle"); }
public static void openInterface(Player p) { p.getPackets().displayInterface(771); p.getPackets().sendPlayerHead(771, 79); p.getPackets().animateInterface(9804, 771, 79); p.getPackets().sendConfig(1262, p.getAppearance().getGender() == 2 ? 1 : 8); p.getAppearance().setTemporaryAppearance(new Appearance()); p.getAppearance().getTemporaryAppearance().setColoursArray(p.getAppearance().getColoursArray()); p.getAppearance().getTemporaryAppearance().setLookArray(p.getAppearance().getLookArray()); p.getAppearance().getTemporaryAppearance().setGender(p.getAppearance().getGender()); p.removeTemporaryAttribute("hairToggle"); }
public void clear() { appearanceUpdateRequired = false; teleportUpdateRequired = false; //not a isUpdateRequired because should do a update regardless if you are teleporting or not. mapRegionChangeUpdateRequired = false; //not a isUpdateRequired because mapRegion has to be accurately set when doing a update, or messes up). chatTextUpdateRequired = false; animationUpdateRequired = false; graphicsUpdateRequired = false; hitUpdateRequired = false; hit2UpdateRequired = false; entityFocusUpdateRequired = false; forceTextUpdateRequired = false; faceLocationUpdateRequired = false; forceMovementRequired = false; player.getSprites().setSprites(-1, -1); player.removeTemporaryAttribute("forceText"); }
public static void doObstacle(Player p, int index) { if (p.getTemporaryAttribute("unmovable") != null) { return; } switch (index) { case 0: // 3 planks, northern (east side) case 1: // 3 planks, middle (east side) case 2: // 3 planks, southern (east side) case 3: // 3 planks, northern (west side) case 4: // 3 planks, middle (west side) case 5: // 3 planks, southern (west side) int logXCoord = index <= 2 ? (int)AGILITY_ARENA_OBJECTS[index][1] + 1 : (int)AGILITY_ARENA_OBJECTS[index][1] - 1; int logDirectionX = index <= 2 ? -7 : +7; CoordinateEvent plankObstaclesCoordinateEvent = new CoordinateEvent(p, new Location(logXCoord, (int)AGILITY_ARENA_OBJECTS[index][2], 3)); plankObstaclesCoordinateEvent.setAction(() => { bool running = p.getWalkingQueue().isRunToggled(); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.getAppearance().setWalkAnimation(155); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.getWalkingQueue().forceWalk(logDirectionX, 0); Event plankObstaclesEvent = new Event(4300); plankObstaclesEvent.setAction(() => { plankObstaclesEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getAppearance().setWalkAnimation(-1); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]); p.getWalkingQueue().setRunToggled(running); }); Server.registerEvent(plankObstaclesEvent); }); Server.registerCoordinateEvent(plankObstaclesCoordinateEvent); break; case 6: //Handholds obstacle east of planks. case 7: //Handholds obstacle west of planks. int handHoldsDirectionX = 1; int handHoldsDirectionY = 1; if (index == 6) { handHoldsDirectionX = -1; handHoldsDirectionY = +1; } else if (index == 7) { handHoldsDirectionX = +1; handHoldsDirectionY = -1; } CoordinateEvent handholdsObstacleCoordinateEvent = new CoordinateEvent(p, new Location((int)AGILITY_ARENA_OBJECTS[index][1], (int)AGILITY_ARENA_OBJECTS[index][2], 3)); handholdsObstacleCoordinateEvent.setAction(() => { bool running = p.getWalkingQueue().isRunToggled(); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.setLastAnimation(new Animation(1121)); p.setFaceLocation(new Location(p.getLocation().getX(), p.getLocation().getY() + handHoldsDirectionY, 3)); Event handholdsObstaclesEvent = new Event(700); int handholdsObstaclesCounter = 0; handholdsObstaclesEvent.setAction(() => { p.setLastAnimation(new Animation(1122)); int regionX = p.getUpdateFlags().getLastRegion().getRegionX(); int regionY = p.getUpdateFlags().getLastRegion().getRegionY(); int lX = (p.getLocation().getX() - ((regionX - 6) * 8)); int lY = (p.getLocation().getY() - ((regionY - 6) * 8)); p.setForceMovement(new ForceMovement(lX, lY, lX + handHoldsDirectionX, lY, 0, 5, 0)); if (handholdsObstaclesCounter++ >= 7) { p.setLastAnimation(new Animation(65535)); handholdsObstaclesEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]); p.getWalkingQueue().setRunToggled(running); return; } Event teleportEvent = new Event(500); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(new Location(p.getLocation().getX() + handHoldsDirectionX, p.getLocation().getY(), 3)); }); Server.registerEvent(teleportEvent); }); Server.registerEvent(handholdsObstaclesEvent); }); Server.registerCoordinateEvent(handholdsObstacleCoordinateEvent); break; } }
public static void configureSelectSpellInterface(Player p) { p.removeTemporaryAttribute("autoCasting"); if (p.getMagicType() == 1) { if (p.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON) == 4170) { // Slayer staff. p.getPackets().sendTab(83, 310); return; } else if (p.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON) == 8841) { // Void knight mace. p.getPackets().sendTab(83, 406); return; } else { p.getPackets().sendTab(83, 319); } } else if (p.getMagicType() == 2) { if (p.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON) == 4675) { // Ancient staff. p.getPackets().sendTab(83, 388); } else { p.getPackets().sendMessage("You cannot autocast Ancient Magic with this staff."); } } }
public static void setAutoCastSpell(Player p, int spell, int spellIndex, bool ancients) { p.getPackets().modifyText(AUTOCAST_NAME[spell], 90, 11); p.getPackets().showChildInterface(90, 83, false); p.getPackets().showChildInterface(90, AUTOCAST_CONFIG[spell], true); p.getPackets().sendConfig(43, 3); p.getPackets().sendTab(83, 90); p.getPackets().modifyText(p.getEquipment().getSlot(ItemData.EQUIP.WEAPON).getDefinition().getName(), 90, 0); p.setTemporaryAttribute("autoCastSpell", spellIndex); p.setTemporaryAttribute("autoCastSpell2", spell); if (ancients) { p.setTemporaryAttribute("autoCastAncients", ancients); } else { p.removeTemporaryAttribute("autoCastAncients"); } }
public static bool openTunnelDoor(Player player, int doorId, int x, int y) { if (doorId < 6716 || (doorId > 6731 && doorId < 6735) || doorId > 6750) { return false; } int index = getDoorIndex(doorId, x, y); int index2 = getOtherDoor(x, y); // index of the door next to the one you clicked. if (index == -1 || index2 == -1) { return false; } bool betweenDoors = player.getTemporaryAttribute("betweenDoors") != null; Location clickedDoor = new Location(DOOR_LOCATION[index][0], DOOR_LOCATION[index][1], 0); Location otherDoor = new Location(DOOR_LOCATION[index2][0], DOOR_LOCATION[index2][1], 0); int openDoorId = DOOR_OPEN_DIRECTION[index][0]; int openDoorId2 = DOOR_OPEN_DIRECTION[index2][0]; int openDirection = DOOR_OPEN_DIRECTION[index][2]; int newX = openDirection == 1 ? x+1 : openDirection == 2 ? x : openDirection == 3 ? x-1 : openDirection == 4 ? x : x; int newY = openDirection == 1 ? y : openDirection == 2 ? y+1 : openDirection == 3 ? y : openDirection == 4 ? y-1 : y; int newX2 = openDirection == 1 ? DOOR_LOCATION[index2][0] + 1 : openDirection == 2 ? DOOR_LOCATION[index2][0] : openDirection == 3 ? DOOR_LOCATION[index2][0] - 1 : openDirection == 4 ? DOOR_LOCATION[index2][0] : DOOR_LOCATION[index2][0]; int newY2 = openDirection == 1 ? DOOR_LOCATION[index2][1] : openDirection == 2 ? DOOR_LOCATION[index2][1] + 1 : openDirection == 3 ? DOOR_LOCATION[index2][1] : openDirection == 4 ? DOOR_LOCATION[index2][1] - 1 : DOOR_LOCATION[index2][1]; int[] doorStandCoordinates = getDoorCoordinates(player, index, index2, betweenDoors); int[] walkDirections = getWalkDirections(player, index, index2, betweenDoors); player.setFaceLocation(clickedDoor); AreaEvent doorsWalkAreaEvent = new AreaEvent(player, doorStandCoordinates[0], doorStandCoordinates[1], doorStandCoordinates[2] + 1, doorStandCoordinates[3] + 1); doorsWalkAreaEvent.setAction(() => { player.setTemporaryAttribute("unmovable", true); Event forceWalkDoorEvent = new Event(800); forceWalkDoorEvent.setAction(() => { player.getWalkingQueue().resetWalkingQueue(); foreach(Player p in Server.getPlayerList()) { //change door for all logged in players? uhh what? p.getPackets().removeObject(clickedDoor, openDoorId == 6713 ? 4 : 3, 0); p.getPackets().removeObject(otherDoor, openDoorId2 == 6732 ? 3 : 4, 0); p.getPackets().createObject(openDoorId, new Location(newX, newY, 0), DOOR_OPEN_DIRECTION[index][1], 0); p.getPackets().createObject(openDoorId2, new Location(newX2, newY2, 0), DOOR_OPEN_DIRECTION[index2][1], 0); } player.getWalkingQueue().forceWalk(walkDirections[0], walkDirections[1]); forceWalkDoorEvent.stop(); }); Server.registerEvent(forceWalkDoorEvent); Event betweenDoorsEvent = new Event(betweenDoors ? 2200 : 1900); betweenDoorsEvent.setAction(() => { int face = openDirection == 3 ? 0 : openDirection == 4 ? 3 : openDirection == 2 ? 1 : 2; foreach(Player p in Server.getPlayerList()) { p.getPackets().removeObject(new Location(newX, newY, 0), openDoorId == 6713 ? 4 : 3, 0); p.getPackets().removeObject(new Location(newX2, newY2, 0), openDoorId2 == 6732 ? 3 : 4, 0); p.getPackets().createObject(DOORS[index], clickedDoor, face, 0); p.getPackets().createObject(DOORS[index2], otherDoor, face, 0); } player.removeTemporaryAttribute("unmovable"); if (!betweenDoors) { player.getPackets().sendConfig(1270, 1); player.setTemporaryAttribute("betweenDoors", true); } else { player.getPackets().sendConfig(1270, 0); player.removeTemporaryAttribute("betweenDoors"); } betweenDoorsEvent.stop(); }); Server.registerEvent(betweenDoorsEvent); }); Server.registerCoordinateEvent(doorsWalkAreaEvent); return true; }
public static void cancelAutoCast(Player p, bool cancelCast) { if (cancelCast) { p.getEquipment().setWeapon(); //p.getPackets().sendConfig(43, 0); resetSpellIcon(p); p.removeTemporaryAttribute("autoCastSpell"); p.removeTemporaryAttribute("autoCastAncients"); p.getPackets().showChildInterface(90, 83, true); p.getPackets().modifyText("Spell", 90, 11); return; } if (p.getTemporaryAttribute("autoCastSpell") != null) { setAutoCastSpell(p, (int)p.getTemporaryAttribute("autoCastSpell2"), (int)p.getTemporaryAttribute("autoCastSpell"), (bool)(p.getTemporaryAttribute("autoCastAncients") != null ? true : false)); } else { //p.getPackets().sendConfig(43, 0); resetSpellIcon(p); p.getEquipment().setWeapon(); p.getPackets().showChildInterface(90, 83, true); p.getPackets().modifyText("Spell", 90, 11); p.removeTemporaryAttribute("autoCastSpell"); p.removeTemporaryAttribute("autoCastAncients"); p.removeTemporaryAttribute("autoCastSpell2"); } }
protected static void createdAnimatedArmour(Player p, int index) { if (p.getTemporaryAttribute("warriorGuildAnimator") == null) { return; } p.setLastAnimation(new Animation(827)); p.setTemporaryAttribute("unmovable", true); for (int i = 0; i < ARMOUR_SETS[index].Length; i++) { p.getInventory().deleteItem(ARMOUR_SETS[index][i]); } p.getPackets().sendChatboxInterface(211); p.getPackets().modifyText("You place the armour onto the platform where it", 211, 1); p.getPackets().modifyText("dissapears...", 211, 2); int animatorIndex = (int) p.getTemporaryAttribute("warriorGuildAnimator"); Event createAnimatedArmourEvent = new Event(1500); int createAnimatedArmourCounter = 0; Npc npc = null; createAnimatedArmourEvent.setAction(() => { if (createAnimatedArmourCounter == 0) { p.getPackets().sendChatboxInterface(211); p.getPackets().modifyText("The animator hums, something appears to be working.", 211, 1); p.getPackets().modifyText("You stand back.", 211, 2); createAnimatedArmourEvent.setTick(500); } else if (createAnimatedArmourCounter == 1) { p.getWalkingQueue().forceWalk(0, + 3); createAnimatedArmourEvent.setTick(2000); } else if (createAnimatedArmourCounter == 2) { createAnimatedArmourEvent.setTick(500); Location minCoords = new Location(2849, 3534, 0); Location maxCoords = new Location(2861, 3545, 0); npc = new Npc(ANIMATED_ARMOUR[index]); npc.setMinimumCoords(minCoords); npc.setMaximumCoords(maxCoords); npc.setLocation(new Location(ANIMATOR_LOCATIONS[animatorIndex][0], ANIMATOR_LOCATIONS[animatorIndex][1], 0)); npc.setWalkType(WalkType.STATIC); npc.setForceText("I'm ALIVE!"); npc.setLastAnimation(new Animation(4166)); npc.setEntityFocus(p.getClientIndex()); npc.setOwner(p); npc.setTarget(p); p.getPackets().setArrowOnEntity(1, npc.getClientIndex()); Server.getNpcList().Add(npc); } else { p.setEntityFocus(npc.getClientIndex()); p.getPackets().softCloseInterfaces(); createAnimatedArmourEvent.stop(); p.removeTemporaryAttribute("unmovable"); npc.getFollow().setFollowing(p); } createAnimatedArmourCounter++; }); Server.registerEvent(createAnimatedArmourEvent); }
public static void verifyEnterTunnel(Player p) { p.getPackets().closeInterfaces(); if (p.getTemporaryAttribute("barrowTunnel") != null) { if ((int) p.getTemporaryAttribute("barrowTunnel") == 2) { p.teleport(new Location(3568, 9712, 0)); p.removeTemporaryAttribute("barrowTunnel"); return; } } p.getPackets().sendChatboxInterface(228); p.getPackets().modifyText("Yeah, I'm fearless!", 228, 2); p.getPackets().modifyText("No way, that looks scary!", 228, 3); p.setTemporaryAttribute("barrowTunnel", 2); }
private void resetVariables(Player p) { p.setSkullCycles(0); p.getSpecialAttack().resetSpecial(); p.setLastkiller(null); p.setDead(false); p.setEntityFocus(65535); p.setPoisonAmount(0); p.clearKillersHits(); p.setLastVengeanceTime(0); p.setVengeance(false); p.removeTemporaryAttribute("willDie"); p.setFrozen(false); p.removeTemporaryAttribute("unmovable"); p.setAntifireCycles(0); p.setSuperAntipoisonCycles(0); p.setTeleblockTime(0); p.removeTemporaryAttribute("teleblocked"); p.setTarget(null); p.setAttacker(null); foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL))) p.getSkills().setCurLevel(skill, p.getSkills().getMaxLevel(skill)); p.getPackets().sendSkillLevels(); Prayer.deactivateAllPrayers(p); if (p.getTemporaryAttribute("cantDoAnything") != null) { p.getAppearance().setInvisible(false); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.removeTemporaryAttribute("cantDoAnything"); p.removeTemporaryAttribute("unmovable"); teleportToWaitingRoom(p, false); p.getPackets().closeInterfaces(); p.getPackets().setMinimapStatus(0); p.getPackets().clearMapFlag(); } }
private static void travel(Player p, int index, bool returning) { p.setTemporaryAttribute("unmovable", true); p.getPackets().displayInterface(120); if (returning) { p.getPackets().sendMessage("You sail off back to Oo'glog.."); } else { p.getPackets().sendMessage("You climb aboard Captain Bentley's boat and set sail to " + DESTINATION_NAMES[index] + "."); } Event travelEvent = new Event(2000); int travelCounter = 0; travelEvent.setAction(() => { if (travelCounter == 0) { travelCounter++; travelEvent.setTick(600); if (returning) { p.teleport(new Location(2622, 2857, 0)); } else { p.teleport(new Location(LOCATIONS[index][0], LOCATIONS[index][1], LOCATIONS[index][2])); } } else { travelEvent.stop(); p.getPackets().sendOverlay(170); p.removeTemporaryAttribute("unmovable"); p.getPackets().sendMessage(returning ? "The boat arrives back in Oo'glog." : DESTINATION_MESSAGES[index]); p.getPackets().closeInterfaces(); Event removeOverlayEvent = new Event(2000); removeOverlayEvent.setAction(() => { removeOverlayEvent.stop(); p.getPackets().sendRemoveOverlay(); if (index == 1) { p.removeTemporaryAttribute("snowInterface"); } }); Server.registerEvent(removeOverlayEvent); } }); Server.registerEvent(travelEvent); }
public static bool teleport(Player p, int opt, JewellerySlot js) { if (js == null) { return false; } if (js.index == -1 || js.index > 3 || opt > 6) { return false; } if (!canTeleport(p, js)) { p.getPackets().closeInterfaces(); return true; } if ((js.index == 2 && opt == 4) || (js.index != 2 && opt == 6)) { p.getPackets().sendMessage("You stay where you are."); p.getPackets().closeInterfaces(); return true; } opt -= 2; // Used to get the 'index' from the button id. p.setLastGraphics(new Graphics(1684)); p.setLastAnimation(new Animation(9603)); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("teleporting", true); p.setTemporaryAttribute("unmovable", true); p.removeTemporaryAttribute("autoCasting"); p.removeTemporaryAttribute("lootedBarrowChest"); p.setTarget(null); changeJewellery(p, js); int option = opt; p.getPackets().closeInterfaces(); Event teleportEvent = new Event(2000); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(new Location(TELEPORT_COORDINATES[js.index][option][0], TELEPORT_COORDINATES[js.index][option][1], 0)); p.setLastAnimation(new Animation(65535)); Teleport.resetTeleport(p); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(teleportEvent); return true; }
private static void eatFood(Player p, int i, int j, int slot) { //delay at which you eat food 0.5 seconds (half a second per eat). int delay = 500; //If you are dead or yourHp is zero (this should be enough), also if variable is set to die from next attack if (p.isDead() || p.getHp() <= 0 || p.getTemporaryAttribute("willDie") != null) return; //Last time you ate timer was previously set. if (p.getTemporaryAttribute("eatFoodTimer") != null) { //Check if the timer has passed the time of 1.2 seconds if (Environment.TickCount - (int) p.getTemporaryAttribute("eatFoodTimer") < 1200) { return; } } //if you are in a duel if (p.getDuel() != null) { //dueling with No Food rule enabled if (p.getDuel().ruleEnabled(DuelSession.RULE.NO_FOOD)) { p.getPackets().sendMessage("Food has been disabled for this duel!"); return; } } //Set timer right now because you are eating some food. p.setTemporaryAttribute("eatFoodTimer", Environment.TickCount); //while you are eating the target you are attacking gets reset. p.setTarget(null); p.resetCombatTurns(); p.setEntityFocus(65535); p.getPackets().closeInterfaces(); p.removeTemporaryAttribute("autoCasting"); //start eating the food at delay which is 0.5 of a second / half a second. Event eatFoodEvent = new Event(delay); eatFoodEvent.setAction(() => { //make the food eating event stop after this time. eatFoodEvent.stop(); //if you are dead or your hp is zero aka dead. if (p.isDead() || p.getHp() <= 0) { return; } int newHealth = p.getSkills().getCurLevel(Skills.SKILL.HITPOINTS) + FOOD_HEAL[j]; int item = i != 2 && FOOD[i + 1][j] != -1 ? FOOD[i + 1][j] : -1; if (!p.getInventory().replaceItemSlot(FOOD[i][j], item, slot)) { return; } p.getPackets().sendMessage("You eat the " + ItemData.forId(FOOD[i][j]).getName().ToLower() + "."); p.getSkills().setCurLevel(Skills.SKILL.HITPOINTS, newHealth > p.getSkills().getMaxLevel(Skills.SKILL.HITPOINTS) ? p.getSkills().getMaxLevel(Skills.SKILL.HITPOINTS) : newHealth); p.setLastAnimation(new Animation(829)); p.getPackets().sendSkillLevel(Skills.SKILL.HITPOINTS); }); Server.registerEvent(eatFoodEvent); }
public static void showAliDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 156: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Hello?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 157; break; case 157: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Well, hello there " + p.getLoginDetails().getUsername() + ", can i help you?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 158; break; case 158: p.getPackets().sendChatboxInterface2(230); p.getPackets().modifyText("Can you take me to Al-Kharid please?", 230, 2); p.getPackets().modifyText("You don't look like you're from around here..", 230, 3); p.getPackets().modifyText("Nothing, sorry to bother you", 230, 4); newStatus = 159; break; case 159: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Can you take me to Al-Kharid please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 160; break; case 160: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Certainly, let's go..", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 161; break; case 161: p.setTemporaryAttribute("unmovable", true); p.getPackets().displayInterface(120); p.getPackets().sendMessage("You follow Ali across vast lands.."); Event moveToAlKharidEvent = new Event(2000); int moveToAlKharidCounter = 0; moveToAlKharidEvent.setAction(() => { if (moveToAlKharidCounter == 0) { moveToAlKharidCounter++; moveToAlKharidEvent.setTick(600); p.teleport(new Location(3311 + misc.random(2),3199 + misc.random(3), 0)); } else { moveToAlKharidEvent.stop(); p.getPackets().sendOverlay(170); p.removeTemporaryAttribute("unmovable"); p.getPackets().sendMessage("..Eventually, you find yourself in Al-Kharid."); p.getPackets().closeInterfaces(); Event removeOverlayEvent = new Event(2000); removeOverlayEvent.setAction(() => { removeOverlayEvent.stop(); p.getPackets().sendRemoveOverlay(); }); Server.registerEvent(removeOverlayEvent); } }); Server.registerEvent(moveToAlKharidEvent); break; case 162: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("You don't look like you're from around here..", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 163; break; case 163: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("That's because i'm not!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 164; break; case 164: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("I thought as much, Where are you from?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 165; break; case 165: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("I usually reside in a small desert town, called Al-Kharid.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 166; break; case 166: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("What does Al-Kharid have to offer?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 167; break; case 167: p.getPackets().sendNPCHead(1862, 244, 2); p.getPackets().modifyText("Ali Morissane", 244, 3); p.getPackets().modifyText("Sand! lots, and lots of sand! On a more serious note..", 244, 4); p.getPackets().modifyText("A mine full of ore rich rocks, a duel arena where", 244, 5); p.getPackets().modifyText("I hear fortunes are gained and lost. Also, a small market,", 244, 6); p.getPackets().modifyText("which has been attracting crafty thieves as of late!", 244, 7); p.getPackets().animateInterface(9827, 244, 2); p.getPackets().sendChatboxInterface2(244); newStatus = 168; break; case 168: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("I may have to pay Al-Kharid a visit...", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 169; break; case 169: p.getPackets().sendNPCHead(1862, 242, 2); p.getPackets().modifyText("Ali Morissane", 242, 3); p.getPackets().modifyText("There is one problem. We have also been having", 242, 4); p.getPackets().modifyText("trouble with some of the locals recently.", 242, 5); p.getPackets().animateInterface(9827, 242, 2); p.getPackets().sendChatboxInterface2(242); newStatus = 170; break; case 170: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Trouble with the locals?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 171; break; case 171: p.getPackets().sendNPCHead(1862, 243, 2); p.getPackets().modifyText("Ali Morissane", 243, 3); p.getPackets().modifyText("Yes. Although I really shouldn't say anything but", 243, 4); p.getPackets().modifyText("perhaps you can help. Bandits have overtaken some of", 243, 5); p.getPackets().modifyText("the empty tents in Al-Kharid, and are quite aggressive...", 243, 6); p.getPackets().animateInterface(9827, 243, 2); p.getPackets().sendChatboxInterface2(243); newStatus = 172; break; case 172: p.getPackets().sendNPCHead(1862, 244, 2); p.getPackets().modifyText("Ali Morissane", 244, 3); p.getPackets().modifyText("..And that's not all! Deep under the town lies a beast,", 244, 4); p.getPackets().modifyText("I hear it's a mixture of a bug and a fly...I expect it", 244, 5); p.getPackets().modifyText("would take a fine warrior to defeat it and no doubt", 244, 6); p.getPackets().modifyText("he would be generously rewarded.", 244, 7); p.getPackets().animateInterface(9827, 244, 2); p.getPackets().sendChatboxInterface2(244); newStatus = 173; break; case 173: p.getPackets().sendPlayerHead(65, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 65, 3); p.getPackets().modifyText("Do you have a map, or directions", 65, 4); p.getPackets().modifyText("to Al-Kharid?", 65, 5); p.getPackets().animateInterface(9827, 65, 2); p.getPackets().sendChatboxInterface2(65); newStatus = 174; break; case 174: p.getPackets().sendNPCHead(1862, 243, 2); p.getPackets().modifyText("Ali Morissane", 243, 3); p.getPackets().modifyText("I don't i'm afraid, although I travel back reguarly and", 243, 4); p.getPackets().modifyText("happen to have room for a passenger. So if you'd", 243, 5); p.getPackets().modifyText("ever like to go to Al-Kharid, don't hesitate to ask me.", 243, 6); p.getPackets().animateInterface(9827, 243, 2); p.getPackets().sendChatboxInterface2(243); newStatus = 175; break; case 175: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Thankyou for the offer, I may take you up on it soon.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 176; break; case 176: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("I'll see you then!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; case 177: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Nothing, sorry to bother you!", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
/* * NOTE: Anything that goes in here and varies between HD and LD, * reset the variable in ActionSender.configureGameScreen */ public void updateVariables(Player p) { int currentLevel = p.getLocation().wildernessLevel(); if (currentLevel != -1) { //Is in wilderness. int lastWildLevel = (p.getTemporaryAttribute("wildLvl") == null) ? -1 : (int)p.getTemporaryAttribute("wildLvl"); if (currentLevel != lastWildLevel) { if (currentLevel > 0) { p.setTemporaryAttribute("wildLvl", currentLevel); if (p.getTemporaryAttribute("inWild") == null) { p.getPackets().sendPlayerOption("Attack", 1, 1); p.getPackets().sendOverlay(381); p.setTemporaryAttribute("inWild", true); } } else { if (p.getTemporaryAttribute("inWild") != null) { p.getPackets().sendPlayerOption("null", 1, 1); p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("wildLvl"); p.removeTemporaryAttribute("inWild"); } } } } if (Location.inMultiCombat(p.getLocation())) { if (p.getTemporaryAttribute("inMulti") == null) { p.getPackets().displayMultiIcon(); p.setTemporaryAttribute("inMulti", true); } } else { if (p.getTemporaryAttribute("inMulti") != null) { p.getPackets().removeMultiIcon(); p.removeTemporaryAttribute("inMulti"); } } if (Location.atDuelArena(p.getLocation())) { if (p.getDuel() != null) { if (p.getDuel().getStatus() == 5 || p.getDuel().getStatus() == 6) { p.getPackets().sendPlayerOption("Fight", 1, 1); } } if (p.getTemporaryAttribute("challengeUpdate") != null) { p.getPackets().sendPlayerOption("Challenge", 1, 0); p.removeTemporaryAttribute("challengeUpdate"); } if (p.getTemporaryAttribute("atDuelArea") == null) { p.getPackets().sendPlayerOption("Challenge", 1, 0); p.getPackets().sendOverlay(638); p.setTemporaryAttribute("atDuelArea", true); } } else { if (p.getTemporaryAttribute("atDuelArea") != null) { p.getPackets().sendPlayerOption("null", 1, 0); p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("atDuelArea"); } } if (Location.atBarrows(p.getLocation())) { if (p.getTemporaryAttribute("atBarrows") == null) { p.getPackets().sendOverlay(24); p.getPackets().setMinimapStatus(2); p.getPackets().sendConfig(452, 2652256); // doors if (p.getTemporaryAttribute("betweenDoors") == null) { if (Barrows.betweenDoors(p)) { p.setTemporaryAttribute("betweenDoors", true); p.getPackets().sendConfig(1270, 1); } } p.getPackets().modifyText("Kill Count: " + p.getBarrowKillCount(), 24, 0); p.setTemporaryAttribute("atBarrows", true); Barrows.prayerDrainEvent(p); bool allBrothersKilled = true; for (int i = 0; i < 6; i++) { if (!p.getBarrowBrothersKilled(i)) { allBrothersKilled = false; } } if (allBrothersKilled) { Barrows.startEarthQuake(p); } } } else { if (p.getTemporaryAttribute("atBarrows") != null) { bool allBrothersKilled = true; for (int i = 0; i < 6; i++) { if (!p.getBarrowBrothersKilled(i)) { allBrothersKilled = false; } } if (allBrothersKilled) { for (int i = 0; i < 6; i++) { p.setBarrowBrothersKilled(i, false); p.setBarrowTunnel(-1); p.setBarrowKillCount(0); p.getPackets().resetCamera(); p.removeTemporaryAttribute("lootedBarrowChest"); } p.getPackets().resetCamera(); p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("atBarrows"); p.removeTemporaryAttribute("barrowTunnel"); p.getPackets().setMinimapStatus(0); Barrows.removeBrotherFromGame(p); } } if (Location.atGodwars(p.getLocation())) { if (p.getTemporaryAttribute("atGodwars") == null) { p.getPackets().sendOverlay(601); p.setTemporaryAttribute("atGodwars", true); } } else { if (p.getTemporaryAttribute("atGodwars") != null) { p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("atGodwars"); } } if (Location.atAgilityArena(p.getLocation())) { if (p.getTemporaryAttribute("atAgilityArena") == null) { p.getPackets().sendOverlay(5); AgilityArena.updatePillarForPlayer(p); p.setTemporaryAttribute("atAgilityArena", true); } if (p.getLocation().getZ() == 0) { p.removeTemporaryAttribute("atAgilityArena"); p.getPackets().sendRemoveOverlay(); p.setAgilityArenaStatus(0); p.setTaggedLastAgilityPillar(false); } } else { if (p.getTemporaryAttribute("atAgilityArena") != null) { p.getPackets().sendRemoveOverlay(); p.setAgilityArenaStatus(0); p.setTaggedLastAgilityPillar(false); p.removeTemporaryAttribute("atAgilityArena"); } } /* * We check the cantDoAnything variable to determine whether they're using the orb. */ if (Location.inFightPitsWaitingArea(p.getLocation())) { if (p.getTemporaryAttribute("waitingForFightPits") == null) { Server.getMinigames().getFightPits().addWaitingPlayer(p); p.setTemporaryAttribute("waitingForFightPits", true); } } else { if (p.getTemporaryAttribute("waitingForFightPits") != null && p.getTemporaryAttribute("cantDoAnything") == null) { Server.getMinigames().getFightPits().removeWaitingPlayer(p); p.removeTemporaryAttribute("waitingForFightPits"); } } if (Location.inFightPits(p.getLocation())) { if (p.getTemporaryAttribute("cantDoAnything") == null) { if (p.getTemporaryAttribute("inFightPits") == null) { p.getPackets().sendPlayerOption("Attack", 1, 1); Server.getMinigames().getFightPits().displayFightPitsInterface(p); p.setTemporaryAttribute("inFightPits", true); } } } else { if (p.getTemporaryAttribute("inFightPits") != null) { p.getPackets().sendPlayerOption("null", 1, 1); p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("inFightPits"); } } if (Location.onWaterbirthIsle(p.getLocation())) { if (p.getTemporaryAttribute("snowInterface") == null) { p.getPackets().sendOverlay(370); p.setTemporaryAttribute("snowInterface", true); } } else { if (p.getTemporaryAttribute("snowInterface") != null) { p.getPackets().sendRemoveOverlay(); p.removeTemporaryAttribute("snowInterface"); } } } }
public static void teleport(Player p, LoadedLaddersAndStairs.HeightObject obj) { p.getWalkingQueue().resetWalkingQueue(); p.setTemporaryAttribute("unmovable", true); p.setFaceLocation(obj.getLocation()); if (obj.getAnimation() != -1) { p.setLastAnimation(new Animation(obj.getAnimation())); } Event teleportEvent = new Event(obj.getAnimation() != -1 ? obj.getTeleDelay() : 500); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(obj.getTeleLocation()); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(teleportEvent); }
/** * Handles a player emote: does the appropriate animation. * @param player * @param buttonId * @return */ public static bool emote(Player player, int buttonId) { if (buttonId == 2) { player.setLastAnimation(new Animation(855, 0)); } else if (buttonId == 3) { player.setLastAnimation(new Animation(856, 0)); } else if (buttonId == 4) { player.setLastAnimation(new Animation(858, 0)); } else if (buttonId == 5) { player.setLastAnimation(new Animation(859, 0)); } else if (buttonId == 6) { player.setLastAnimation(new Animation(857, 0)); } else if (buttonId == 7) { player.setLastAnimation(new Animation(863, 0)); } else if (buttonId == 8) { player.setLastAnimation(new Animation(2113, 0)); } else if (buttonId == 9) { player.setLastAnimation(new Animation(862, 0)); } else if (buttonId == 10) { player.setLastAnimation(new Animation(864, 0)); } else if (buttonId == 11) { player.setLastAnimation(new Animation(861, 0)); } else if (buttonId == 12) { player.setLastAnimation(new Animation(2109, 0)); } else if (buttonId == 13) { player.setLastAnimation(new Animation(2111, 0)); } else if (buttonId == 14) { player.setLastAnimation(new Animation(866, 0)); } else if (buttonId == 15) { player.setLastAnimation(new Animation(2106, 0)); } else if (buttonId == 16) { player.setLastAnimation(new Animation(2107, 0)); } else if (buttonId == 17) { player.setLastAnimation(new Animation(2108, 0)); } else if (buttonId == 18) { player.setLastAnimation(new Animation(860, 0)); } else if (buttonId == 19) { player.setLastAnimation(new Animation(0x558, 0)); player.setLastGraphics(new Graphics(574, 0)); } else if (buttonId == 20) { player.setLastAnimation(new Animation(2105, 0)); } else if (buttonId == 21) { player.setLastAnimation(new Animation(2110, 0)); } else if (buttonId == 22) { player.setLastAnimation(new Animation(865, 0)); } else if (buttonId == 23) { player.setLastAnimation(new Animation(2112, 0)); } else if (buttonId == 24) { player.setLastAnimation(new Animation(0x84F, 0)); } else if (buttonId == 25) { player.setLastAnimation(new Animation(0x850, 0)); } else if (buttonId == 26) { player.setLastAnimation(new Animation(1131, 0)); } else if (buttonId == 27) { player.setLastAnimation(new Animation(1130, 0)); } else if (buttonId == 28) { player.setLastAnimation(new Animation(1129, 0)); } else if (buttonId == 29) { player.setLastAnimation(new Animation(1128, 0)); } else if (buttonId == 30) { player.setLastAnimation(new Animation(4275, 0)); } else if (buttonId == 31) { player.setLastAnimation(new Animation(1745, 0)); } else if (buttonId == 32) { player.setLastAnimation(new Animation(4280, 0)); } else if (buttonId == 33) { player.setLastAnimation(new Animation(4276, 0)); } else if (buttonId == 34) { player.setLastAnimation(new Animation(3544, 0)); } else if (buttonId == 35) { player.setLastAnimation(new Animation(3543, 0)); } else if (buttonId == 36) { player.setLastAnimation(new Animation(7272, 0)); player.setLastGraphics(new Graphics(1244, 0)); } else if (buttonId == 37) { player.setLastAnimation(new Animation(2836, 0)); } else if (buttonId == 38) { player.setLastAnimation(new Animation(6111, 0)); } else if (buttonId == 39) { Skillcape.emote(player); } else if (buttonId == 40) { player.setLastAnimation(new Animation(7531, 0)); } else if (buttonId == 41) { player.setLastAnimation(new Animation(2414, 0)); player.setLastGraphics(new Graphics(1537, 0)); } else if (buttonId == 42) { player.setLastAnimation(new Animation(8770, 0)); player.setLastGraphics(new Graphics(1553, 0)); } else if (buttonId == 43) // Explore { player.setLastAnimation(new Animation(9990, 0)); player.setLastGraphics(new Graphics(1734, 0)); } else if (buttonId == 44) { // Trick player.setLastAnimation(new Animation(10530, 0)); player.setLastGraphics(new Graphics(1864, 0)); } else if (buttonId == 45) { // Freeze player.setLastAnimation(new Animation(11044, 0)); player.setLastGraphics(new Graphics(1973, 0)); } else if (buttonId == 46) { //TODO: lol todo.. umm ya.. unmovable remover is here so.. //it can be used to cheat to remove unmovable spells haha. //to fix: make another unmovable check so there would be 2 ways to become unmovable. //trigger the turkey emote event which changes animation/graphic based on delay. if (player.getTemporaryAttribute("turkeyEmoteInProgress") == null) { player.setTemporaryAttribute("turkeyEmoteStage", 11); player.setTemporaryAttribute("turkeyEmoteInProgress", 1); } else { //Force cancellation of the turkeyEmote Event. player.setTemporaryAttribute("turkeyEmoteStage", -1); //Don't create a new event until the old one is stopped. return false; } Event turkeyEmoteEvent = new Event(500); //500 milliseconds per stage timer (adjust this for better results). turkeyEmoteEvent.setAction(() => { int turkeyEmoteStage = (int)(player.getTemporaryAttribute("turkeyEmoteStage") == null ? -1 : (int)player.getTemporaryAttribute("turkeyEmoteStage")); if (turkeyEmoteStage <= 0) { //kill off this event. turkeyEmoteEvent.stop(); player.removeTemporaryAttribute("unmovable"); player.setTemporaryAttribute("turkeyEmoteInProgress", null); return; } if (turkeyEmoteStage == 11) { player.setLastAnimation(new Animation(10994, 0)); } else if (turkeyEmoteStage == 10) { player.setLastGraphics(new Graphics(1714, 0)); } else if (turkeyEmoteStage == 9) { player.setLastAnimation(new Animation(10996, 0)); player.setTemporaryAttribute("unmovable", true); player.getAppearance().setNpcId(8499); player.getUpdateFlags().setAppearanceUpdateRequired(true); } else if (turkeyEmoteStage == 1) { player.setLastAnimation(new Animation(10995, 0)); player.setLastGraphics(new Graphics(1714, 0)); player.getAppearance().setNpcId(-1); player.getUpdateFlags().setAppearanceUpdateRequired(true); player.removeTemporaryAttribute("unmovable"); player.removeTemporaryAttribute("turkeyEmoteStage"); } if (turkeyEmoteStage > 0) { turkeyEmoteStage--; player.setTemporaryAttribute("turkeyEmoteStage", turkeyEmoteStage); } }); Server.registerEvent(turkeyEmoteEvent); } else { return false; } return true; }
private static void drinkPotion(Player p, int i, int j, int slot) { //TODO antipoisons/antifire int lastPotion = -1; int delay = 500; long lastDrink = 0; if (p.isDead() || p.getTemporaryAttribute("willDie") != null) { return; } if (p.getDuel() != null) { if (p.getDuel().ruleEnabled(DuelSession.RULE.NO_DRINKS)) { p.getPackets().sendMessage("Drinks have been disabled for this duel!"); return; } } if (p.getTemporaryAttribute("lastDrankPotion") != null) { lastPotion = (int) p.getTemporaryAttribute("lastDrankPotion"); } if (p.getTemporaryAttribute("drinkPotionTimer") != null) { lastDrink = (int) p.getTemporaryAttribute("drinkPotionTimer"); } int time = (j == lastPotion) ? 1000 : 500; if (Environment.TickCount - lastDrink < time) { return; } p.getPackets().closeInterfaces(); p.setTemporaryAttribute("drinkPotionTimer", Environment.TickCount); p.setTemporaryAttribute("lastDrankPotion", j); p.setTarget(null); p.resetCombatTurns(); p.setEntityFocus(65535); p.removeTemporaryAttribute("autoCasting"); Event drinkPotionEvent = new Event(delay); drinkPotionEvent.setAction(() => { drinkPotionEvent.stop(); if (p.isDead() || p.getSkills().getCurLevel(Skills.SKILL.HITPOINTS) <= 0) { return; } int item = i != 0 && POTIONS[i - 1][j] != -1 ? POTIONS[i - 1][j] : 229; if (!p.getInventory().replaceItemSlot(POTIONS[i][j], item, slot)) { return; } string drinkPotion = ItemData.forId(POTIONS[0][j]).getName().Replace("(", "").Replace(")", "").Replace("3", "").Replace("2", "").Replace("1", "").ToLower(); p.getPackets().sendMessage("You drink some of your " + drinkPotion + "."); p.getPackets().sendMessage("You have " + (i == 0 ? "no" : i.ToString()) + " doses of potion left."); switch(j) { case 0: //Attack potion [+3 and 10% of max attack] statBoost(p, Skills.SKILL.ATTACK, 0.10, 3, false); break; case 1: //Antipoison potion p.setPoisonAmount(0); break; case 2: //Strength potion [+3 and 10% of max strength] statBoost(p, Skills.SKILL.STRENGTH, 0.10, 3, false); break; case 3: //Restore potion [restores randomly between 10-39 points] restorePotion(p, Skills.SKILL.DEFENCE, 10, 39); restorePotion(p, Skills.SKILL.ATTACK, 10, 39); restorePotion(p, Skills.SKILL.STRENGTH, 10, 39); restorePotion(p, Skills.SKILL.RANGE, 10, 39); restorePotion(p, Skills.SKILL.HITPOINTS, 10, 39); break; case 4: //Energy potion [restores 20% energy] double newEnergy = p.getRunEnergy() * 0.20; p.setRunEnergy(((p.getRunEnergy() + (int)newEnergy >= 100) ? 100 : (p.getRunEnergy() + (int)newEnergy))); break; case 5: //Defence potion [Should be +3 and 10% of max defence] statBoost(p, Skills.SKILL.DEFENCE, 0.10, 3, false); break; case 6: //Agility potion [restores 2 or 3 agility points] int newAgility = misc.random(2, 3) + p.getSkills().getCurLevel(Skills.SKILL.AGILITY); if (newAgility < p.getSkills().getMaxLevel(Skills.SKILL.AGILITY)) p.getSkills().setCurLevel(Skills.SKILL.AGILITY, newAgility); break; case 7: //Combat potion [Should be 10% of attack+strength and +3 to each]. statBoost(p, Skills.SKILL.ATTACK, 0.10, 3, false); statBoost(p, Skills.SKILL.STRENGTH, 0.10, 3, false); break; case 8: //Prayer potion, [heals 7-31, formula = 7+floor(prayerlevel/4)] int newPrayer = 7 + (int)Math.Floor((double)(p.getSkills().getMaxLevel(Skills.SKILL.PRAYER) / 4)) + p.getSkills().getCurLevel(Skills.SKILL.PRAYER); if (newPrayer < p.getSkills().getCurLevel(Skills.SKILL.PRAYER)) p.getSkills().setCurLevel(Skills.SKILL.PRAYER, newPrayer); checkOverdose(p, Skills.SKILL.PRAYER); break; case 9: //Summoning potion [25% of players summoning + 7] int newSummoning = (7 + (int)((double)p.getSkills().getMaxLevel(Skills.SKILL.SUMMONING) * 0.25)) + p.getSkills().getCurLevel(Skills.SKILL.SUMMONING); if (newSummoning < p.getSkills().getCurLevel(Skills.SKILL.SUMMONING)) p.getSkills().setCurLevel(Skills.SKILL.SUMMONING, newSummoning); statBoost(p, Skills.SKILL.STRENGTH, 0.10, 3, false); break; case 10: //Super attack potion [15% of players attack + 5] statBoost(p, Skills.SKILL.ATTACK, 0.15, 5, false); break; case 11: // super antipoison p.setPoisonAmount(0); p.setSuperAntipoisonCycles(20); break; case 12: //Fishing potion [fishing +3] if (p.getSkills().getCurLevel(Skills.SKILL.FISHING) < (p.getSkills().getMaxLevel(Skills.SKILL.FISHING) + 3)) p.getSkills().setCurLevel(Skills.SKILL.FISHING, p.getSkills().getCurLevel(Skills.SKILL.FISHING) + 3); break; case 13: p.setRunEnergy(p.getRunEnergy() + 20); if (p.getRunEnergy() >= 100) { p.setRunEnergy(100); } break; case 14: //Hunter potion [hunting + 3] if (p.getSkills().getCurLevel(Skills.SKILL.HUNTER) < (p.getSkills().getMaxLevel(Skills.SKILL.HUNTER) + 3)) p.getSkills().setCurLevel(Skills.SKILL.HUNTER, p.getSkills().getCurLevel(Skills.SKILL.HUNTER) + 3); break; case 15: //Super strength [strength 15% +5] statBoost(p, Skills.SKILL.STRENGTH, 0.15, 5, false); break; case 16: //restores all skills by 33%. foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL))) superRestorePotion(p, skill, 0.33); break; case 17://Super defence [defence 15% +5] statBoost(p, Skills.SKILL.DEFENCE, 0.15, 5, false); break; case 18: // Antifire potion p.setAntifireCycles(20); break; case 19: //Ranging potions statBoost(p, Skills.SKILL.RANGE, 0.10, 4, false); break; case 20: //Magic potion. if (p.getSkills().getCurLevel(Skills.SKILL.MAGIC) < (p.getSkills().getMaxLevel(Skills.SKILL.MAGIC) + 4)) p.getSkills().setCurLevel(Skills.SKILL.MAGIC, p.getSkills().getCurLevel(Skills.SKILL.MAGIC) + 4); break; case 21: //Zamorak brew potion. [Attack %20+2][Strength %12 +2][Defense -10% + -2][hitpoints -10% + 20] statBoost(p, Skills.SKILL.ATTACK, 0.20, 2, false); statBoost(p, Skills.SKILL.STRENGTH, 0.12, 2, false); statBoost(p, Skills.SKILL.DEFENCE, 0.10, 2, true); statBoost(p, Skills.SKILL.HITPOINTS, 0.10, 20, true); break; case 22: //Saradomin brew potion. [Hitpoints +%15][Defense +25%][Strength, Attack, Magic and Ranged -10%] statBoost(p, Skills.SKILL.HITPOINTS, 0.15, 0, false); statBoost(p, Skills.SKILL.DEFENCE, 0.25, 0, false); statBoost(p, Skills.SKILL.STRENGTH, 0.10, 0, true); statBoost(p, Skills.SKILL.ATTACK, 0.10, 0, true); statBoost(p, Skills.SKILL.MAGIC, 0.10, 0, true); statBoost(p, Skills.SKILL.RANGE, 0.10, 0, true); break; } p.setLastAnimation(new Animation(829)); p.getPackets().sendSkillLevels(); }); Server.registerEvent(drinkPotionEvent); }
public void useOrb(Player p, int button) { if (p.getTemporaryAttribute("teleporting") != null) { return; } if (button == -1) { AreaEvent useOrbAreaEvent = new AreaEvent(p, 2398, 5171, 2400, 5173); useOrbAreaEvent.setAction(() => { p.getPackets().displayInventoryInterface(374); p.getAppearance().setInvisible(true); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.setTemporaryAttribute("cantDoAnything", true); p.setTemporaryAttribute("unmovable", true); p.getPackets().setMinimapStatus(2); Event useOrbEvent = new Event(500); useOrbEvent.setAction(() => { useOrbEvent.stop(); int random = misc.random(4); p.teleport(new Location(ORB_COORDINATES[1][random], ORB_COORDINATES[2][random], 0)); }); Server.registerEvent(useOrbEvent); }); Server.registerCoordinateEvent(useOrbAreaEvent); } else { if (p.getTemporaryAttribute("cantDoAnything") != null) { if (button == 5) { Event useOrbTwoEvent = new Event(500); useOrbTwoEvent.setAction(() => { useOrbTwoEvent.stop(); p.getAppearance().setInvisible(false); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.removeTemporaryAttribute("cantDoAnything"); p.removeTemporaryAttribute("unmovable"); teleportToWaitingRoom(p, false); p.getPackets().closeInterfaces(); p.getPackets().setMinimapStatus(0); p.getPackets().clearMapFlag(); }); Server.registerEvent(useOrbTwoEvent); return; } for (int i = 0; i < ORB_COORDINATES[0].Length; i++) { if (button == ORB_COORDINATES[0][i]) { int j = i; p.setTemporaryAttribute("teleporting", true); Event teleportToOrbEvent = new Event(500); teleportToOrbEvent.setAction(() => { teleportToOrbEvent.stop(); p.teleport(new Location(ORB_COORDINATES[1][j], ORB_COORDINATES[2][j], 0)); Teleport.resetTeleport(p); }); Server.registerEvent(teleportToOrbEvent); return; } } } } }
private void handleEnterText(Player player, Packet packet) { if (player.getTemporaryAttribute("interfaceVariable") == null) { player.getPackets().sendMessage("An error occured, please try again."); return; } long textAsLong = packet.readLong(); EnterVariable var = (EnterVariable) player.getTemporaryAttribute("interfaceVariable"); switch(var.getInterfaceId()) { case 590: // Clan chat setup Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername()); if (clan != null) { clan.setClanName(misc.longToPlayerName(textAsLong)); Server.getClanManager().updateClan(clan); player.getPackets().modifyText(misc.formatPlayerNameForDisplay(clan.getClanName()), 590, 22); break; } player.getPackets().sendMessage("Please set up a clan channel before trying to change the name."); break; } player.removeTemporaryAttribute("interfaceVariable"); }
public void useDoor(Player p, int doorId) { bool running = p.getWalkingQueue().isRunToggled(); if (doorId == 9369) { // main entrance int y = p.getLocation().getY() >= 5177 ? 5177 : 5175; CoordinateEvent mainEntranceCoordinateEvent = new CoordinateEvent(p, new Location(2399, y, 0)); mainEntranceCoordinateEvent.setAction(() => { p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.getWalkingQueue().forceWalk(0, y == 5177 ? -2 : +2); Event useMainDoorEvent = new Event(1000); useMainDoorEvent.setAction(() => { useMainDoorEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getWalkingQueue().setRunToggled(running); }); Server.registerEvent(useMainDoorEvent); }); Server.registerCoordinateEvent(mainEntranceCoordinateEvent); } else if (doorId == 9368) { // game door int y = p.getLocation().getY() >= 5169 ? 5169 : 5167; CoordinateEvent gameDoorCoordinateEvent = new CoordinateEvent(p, new Location(2399, y, 0)); gameDoorCoordinateEvent.setAction(() => { if (playersPlaying.Count == 1) { sendNPCMessage(p, "Here is some TokKul, as a reward."); p.getInventory().addItemOrGround(6529, tokkulReward); } removePlayingPlayer(p); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); if (y == 5167) { p.getWalkingQueue().forceWalk(0, +2); } else { p.getPackets().sendMessage("You are unable to bypass the hot barrier."); return; } p.setTemporaryAttribute("unmovable", true); Event gameDoorEvent = new Event(1000); gameDoorEvent.setAction(() => { gameDoorEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getWalkingQueue().setRunToggled(running); p.getPackets().sendMessage("You leave the fight pit."); resetVariables(p); }); Server.registerEvent(gameDoorEvent); }); Server.registerCoordinateEvent(gameDoorCoordinateEvent); } }
private void handleEnterAmount(Player player, Packet packet) { if (player.getTemporaryAttribute("interfaceVariable") == null) { player.getPackets().sendMessage("An error occured, please try again."); return; } EnterVariable var = (EnterVariable) player.getTemporaryAttribute("interfaceVariable"); int craftType = (int) (player.getTemporaryAttribute("craftType") == null ? -1 : (int) player.getTemporaryAttribute("craftType")); // 'Category' of item to craft int amount = packet.readInt(); switch(var.getInterfaceId()) { case 675: // Jewellery crafting Jewellery.makeJewellery(player, var.getSlot(), amount, true); break; case 304: // Dragonhide crafting. int leatherType = (int) (player.getTemporaryAttribute("leatherCraft") == null ? -1 : (int) player.getTemporaryAttribute("leatherCraft")); // Type of leather to craft. switch (var.getSlot()) { case 0: if (leatherType != -1) { Leather.craftDragonHide(player, 1, 0, leatherType, true); // Body break; } else if (craftType == 6) { // Ball of wool Spinning.craftSpinning(player, amount, 0, true); break; } break; case 1: if (craftType == 6) { // Bowstring Spinning.craftSpinning(player, amount, 1, true); break; } break; case 2: if (craftType == 6) { // Crossbow string Spinning.craftSpinning(player, amount, 2, true); break; } break; case 4: Leather.craftDragonHide(player, 1, 4, leatherType, true); // Vambraces break; case 8: Leather.craftDragonHide(player, 1, 8, leatherType, true); // Chaps break; } break; case 303: switch(var.getSlot()) { case 120: // Unholy symbol Silver.newSilverItem(player, amount, var.getSlot(), true); break; case 121: // Tiara Silver.newSilverItem(player, amount, var.getSlot(), true); break; } break; case 154: // Craft normal leather. if (var.getSlot() >= 28 && var.getSlot() <= 34) { Leather.craftNormalLeather(player, var.getSlot(), amount, true); break; } break; case 542: // Glassblowing. switch(var.getSlot()) { case 40: // Make X beer glass. Glass.craftGlass(player, amount, 0, true); break; case 41: // Make X candle lantern. Glass.craftGlass(player, amount, 1, true); break; case 42: // Make X oil lamp. Glass.craftGlass(player, amount, 2, true); break; case 38: // Make X vial. Glass.craftGlass(player, amount, 3, true); break; case 44: // Make X Fishbowl Glass.craftGlass(player, amount, 4, true); break; case 39: // Make X orb. Glass.craftGlass(player, amount, 5, true); break; case 43: // Make X lantern lens Glass.craftGlass(player, amount, 6, true); break; case 45: // Make X dorgeshuun light orb. Glass.craftGlass(player, amount, 7, true); break; } break; case 763: // Bank inventory - X. player.getBank().setLastXAmount(amount); player.getBank().deposit(var.getSlot(), amount); player.getBank().refreshBank(); break; case 762: // Bank - X. player.getBank().setLastXAmount(amount); player.getBank().withdraw(var.getSlot(), amount); player.getBank().refreshBank(); break; case 336: // Trade/stake inventory - trade X. if (player.getTrade() != null) { player.getTrade().tradeItem(var.getSlot(), amount); break; } if (player.getDuel() != null) { player.getDuel().stakeItem(var.getSlot(), amount); break; } break; case 631: if (player.getDuel() != null) { player.getDuel().removeItem(var.getSlot(), amount); break; } break; case 335: // Trade/stake interface - remove X. player.getTrade().removeItem(var.getSlot(), amount); break; case 620: // Shop - buy X. player.getShopSession().buyItem(var.getSlot(), amount); break; case 105: //Grand Exchange custom quantity and price inputs. switch(var.getSlot()) { case 0: //custom enter quantity player.getGESession().setCustomAmount(amount); break; case 1: //custom enter per price player.getGESession().setCustomPrice(amount); break; } break; case 305: // What would you like to make? - 4 options if (player.getTemporaryAttribute("fletchType") == null) { return; } int logType = (int) player.getTemporaryAttribute("fletchType"); switch(var.getSlot()) { case 0: MakeBows.cutLog(player, amount, logType, 0, (player.getTemporaryAttribute("stringingBow") == null ? false : (bool)player.getTemporaryAttribute("stringingBow")), true); break; case 1: MakeBows.cutLog(player, amount, logType, 1, (player.getTemporaryAttribute("stringingBow") == null ? false : (bool)player.getTemporaryAttribute("stringingBow")), true); break; case 2: MakeBows.cutLog(player, amount, 0, 2, false, true); break; case 3: MakeBows.cutLog(player, amount, 0, 3, false, true); break; } break; case 306: // What would you like to make? - 5 options switch(var.getSlot()) { case 0: Clay.craftClay(player, amount, craftType, var.getSlot(), true); break; case 1: Clay.craftClay(player, amount, craftType, var.getSlot(), true); break; case 2: Clay.craftClay(player, amount, craftType, var.getSlot(), true); break; case 3: Clay.craftClay(player, amount, craftType, var.getSlot(), true); break; case 4: Clay.craftClay(player, amount, craftType, var.getSlot(), true); break; } break; case 309: // What would you like to make - 1 option if (var.getSlot() >= 50 && var.getSlot() <= 60) { // Cut gem Jewellery.cutGem(player, craftType, amount, true); break; } else if (var.getSlot() >= 100 && var.getSlot() <= 110) { // String amulet Jewellery.stringAmulet(player, craftType, amount, true); break; } switch(var.getSlot()) { case 0: MakeXbow.createXbow(player, amount, (int) (player.getTemporaryAttribute("bowType2") == null ? -1 : (int) player.getTemporaryAttribute("bowType2")), (bool) (player.getTemporaryAttribute("stringingBow") == null ? false :(bool) player.getTemporaryAttribute("stringingBow")), true); break; case 1: MakeBows.cutLog(player, amount, (int) (player.getTemporaryAttribute("fletchType") == null ? -1 : (int) player.getTemporaryAttribute("fletchType")), (int) (player.getTemporaryAttribute("bowType") == null ? -1 : (int) player.getTemporaryAttribute("bowType")), true, true); break; case 2: Herblore.grindIngredient(player, amount, true); break; case 3: Herblore.makeUnfinishedPotion(player, amount, true); break; case 4: Herblore.completePotion(player, amount, true); break; case 5: Cooking.cookItem(player, amount, true, player.getTemporaryAttribute("cookingFireLocation") != null); break; case 6: MakeAmmo.makeBoltTip(player, (int) (player.getTemporaryAttribute("boltTips") == null ? -1 : (int) player.getTemporaryAttribute("boltTips")), amount, true); break; } break; case 311: // Smelting interface switch(var.getSlot()) { case 13: // Bronze Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 17: // Blurite Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 21: // Iron Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 25: // Silver Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 29: // Steel Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 33: // Gold Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 37: // Mithril Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 41: // Adamant Smelting.smeltOre(player, var.getSlot(), true, amount); break; case 45: // Rune Smelting.smeltOre(player, var.getSlot(), true, amount); break; } break; case 300: // Smithing interface. if (player.getTemporaryAttribute("smithingItem") == null) { return; } SmithBar item = (SmithBar) player.getTemporaryAttribute("smithingItem"); if (item != null) { item.setAmount(amount); } Smithing.smithItem(player, var.getSlot(), amount, false); break; } player.removeTemporaryAttribute("interfaceVariable"); }
public static void crossDitch(Player p, int x, int y) { if (p.getTemporaryAttribute("unmovable") != null) { return; } AreaEvent crossDitchAreaEvent = new AreaEvent(p, x, y - 1, x, y + 2); crossDitchAreaEvent.setAction(() => { p.getPackets().closeInterfaces(); p.getWalkingQueue().resetWalkingQueue(); p.setTemporaryAttribute("unmovable", true); int newY = p.getLocation().getY() >= 3523 ? p.getLocation().getY()-3 : p.getLocation().getY()+3; int dir = newY == 3 ? 0 : 4; Location faceLocation = new Location(p.getLocation().getX(), dir == 3 ? 3523 : 3520, 0); p.setFaceLocation(faceLocation); Event crossDitchMoveEvent = new Event(500); crossDitchMoveEvent.setAction(() => { crossDitchMoveEvent.stop(); p.setLastAnimation(new Animation(6132)); int regionX = p.getUpdateFlags().getLastRegion().getRegionX(); int regionY = p.getUpdateFlags().getLastRegion().getRegionY(); int lX = (p.getLocation().getX() - ((regionX - 6) * 8)); int lY = (p.getLocation().getY() - ((regionY - 6) * 8)); ForceMovement movement = new ForceMovement(lX, lY, lX, newY, 33, 60, dir); p.setForceMovement(movement); p.setFaceLocation(new Location(x, y, 0)); Event crossDitchTeleportEvent = new Event(1250); crossDitchTeleportEvent.setAction(() => { crossDitchTeleportEvent.stop(); int playerY = p.getLocation().getY(); int nY = playerY >= 3523 ? 3520 : 3523; p.teleport(new Location(p.getLocation().getX(), nY, 0)); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(crossDitchTeleportEvent); }); Server.registerEvent(crossDitchMoveEvent); }); Server.registerCoordinateEvent(crossDitchAreaEvent); }
public static void showAliDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 205: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Would you like to go back to Lletya?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 206; break; case 206: p.getPackets().sendChatboxInterface2(228); p.getPackets().modifyText("Yes please, let's go", 228, 2); p.getPackets().modifyText("Not yet", 228, 3); newStatus = 207; break; case 207: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Yes please, let's go.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 208; break; case 208: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Very well.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 209; break; case 209: p.setTemporaryAttribute("unmovable", true); p.getPackets().displayInterface(120); p.getPackets().sendMessage("Your camel trots off slowly out of the desert.."); Event moveBackToLletyaEvent = new Event(2000); int moveBackToLletyaCounter = 0; moveBackToLletyaEvent.setAction(() => { if (moveBackToLletyaCounter == 0) { moveBackToLletyaCounter++; moveBackToLletyaEvent.setTick(600); p.teleport(new Location(2340, 3799, 0)); } else { moveBackToLletyaEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getPackets().sendMessage("..You and Ali are back in Lletya."); p.getPackets().closeInterfaces(); } }); Server.registerEvent(moveBackToLletyaEvent); break; case 210: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Not yet.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 211; break; case 211: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("No problem, I will be here when you decide to leave.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }