Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rs.game.player;
- import com.rs.game.Animation;
- import com.rs.game.Graphics;
- import com.rs.game.WorldTile;
- import com.rs.game.npc.NPC;
- import com.rs.game.tasks.WorldTask;
- import com.rs.game.tasks.WorldTasksManager;
- import com.rs.net.decoders.WorldPacketsDecoder;
- import com.rs.utils.Utils;
- import java.io.Serializable;
- import java.util.ArrayList;
- public final class EmotesManager implements Serializable {
- private static final long serialVersionUID = 8489480378717534336L;
- private final ArrayList<Integer> unlockedEmotes;
- private transient Player player;
- private transient long nextEmoteEnd;
- public EmotesManager() {
- unlockedEmotes = new ArrayList<Integer>();
- for (int emoteId = 2; emoteId < 24; emoteId++)
- unlockedEmotes.add(emoteId);
- unlockedEmotes.add(36);
- unlockedEmotes.add(37);
- unlockedEmotes.add(38);
- unlockedEmotes.add(39);
- unlockedEmotes.add(40);
- unlockedEmotes.add(44);
- unlockedEmotes.add(45);
- unlockedEmotes.add(46);
- unlockedEmotes.add(47);
- unlockedEmotes.add(48);
- }
- public void setPlayer(Player player) {
- this.player = player;
- }
- public void unlockEmote(int id) {
- if (unlockedEmotes.contains(id))
- return;
- if (unlockedEmotes.add(id))
- refreshListConfigs();
- }
- public static int getId(int slotId, int packetId) {
- switch (slotId) {
- case 0:
- return 2;
- case 1:
- return 3;
- case 2:
- if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
- return 4;
- else
- return -1; //TODO Curtsy
- case 3:
- return 5;
- case 4:
- return 6;
- case 5:
- return 7;
- case 6:
- return 8;
- case 7:
- return 9;
- case 8:
- return 10;
- case 9:
- return 12;
- case 10:
- return 11;
- case 11:
- return 13;
- case 12:
- return 14;
- case 13:
- return 15;
- case 14:
- return 16;
- case 15:
- return 17;
- case 16:
- return 18;
- case 17:
- return 19;
- case 18:
- return 20;
- case 19:
- return 21;
- case 20:
- return 22;
- case 21:
- return 23;
- case 22:
- return 24;
- case 23:
- return 25;
- case 24:
- return 26;
- case 25:
- return 27;
- case 26:
- return 28;
- case 27:
- return 29;
- case 28:
- return 30;
- case 29:
- return 31;
- case 30:
- return 32;
- case 31:
- return 33;
- case 32:
- return 34;
- case 33:
- return 35;
- case 34:
- return 36;
- case 35:
- return 37;
- case 36:
- return 38;
- case 37:
- return 39;
- case 38:
- return 40;
- case 39:
- return 41;
- case 40:
- return 42;
- case 41:
- return 43;
- case 42:
- return 44;
- case 43:
- return 45;
- case 44:
- return 46;
- case 45:
- return 47;
- case 46:
- return 48;
- default:
- return -1;
- }
- }
- public void useBookEmote(int id) {
- if (player.getAttackedByDelay() + 10000 > Utils.currentTimeMillis()) {
- player.getPackets().sendGameMessage("You can't perform while you're under combat.");
- return;
- } else if (isDoingEmote()) {
- player.getPackets().sendGameMessage("You're already doing an emote!");
- return;
- }
- player.stopAll();
- switch (id) {
- case 2:
- // Yes
- player.setNextAnimation(new Animation(855));
- break;
- case 3:
- // No
- player.setNextAnimation(new Animation(856));
- break;
- case 4:
- final int legsId = player.getEquipment().getLegsId();
- switch (legsId) {
- case 10396:
- case 10744:
- case 13791:
- player.setNextAnimation(new Animation(5312));
- break;
- default:
- player.setNextAnimation(new Animation(858));
- break;
- }
- break;
- case 5:
- final int hatId = player.getEquipment().getHatId();
- switch (hatId) {
- case 10392:
- case 10740:
- case 13789:
- player.setNextAnimation(new Animation(5315));
- break;
- default:
- player.setNextAnimation(new Animation(859));
- break;
- }
- break;
- case 6:
- // Think
- player.setNextAnimation(new Animation(857));
- break;
- case 7:
- // Wave
- player.setNextAnimation(new Animation(863));
- break;
- case 8:
- // Shrug
- player.setNextAnimation(new Animation(2113));
- break;
- case 9:
- // Cheer
- player.setNextAnimation(new Animation(862));
- break;
- case 10:
- // Beckon
- for (int i = 10862; i < 10884; i++) {
- if (player.getEquipment().getHatId() == i
- || player.getEquipment().getShieldId() == i
- || player.getEquipment().getBootsId() == i
- || player.getEquipment().getChestId() == i
- || player.getEquipment().getLegsId() == i) {
- player.setNextAnimation(new Animation(5845));
- } else {
- player.setNextAnimation(new Animation(864));
- }
- }
- break;
- case 12:
- // Laugh
- player.setNextAnimation(new Animation(861));
- break;
- case 11:
- // Jump For Joy
- player.setNextAnimation(new Animation(2109));
- break;
- case 13:
- // Yawn
- final int sleepCap = player.getEquipment().getHatId();
- switch (sleepCap) {
- case 10398:
- case 10746:
- case 13792:
- player.setNextAnimation(new Animation(5313));
- player.setNextGraphics(new Graphics(967));
- break;
- default:
- player.setNextAnimation(new Animation(2111));
- break;
- }
- break;
- case 14:
- final int flaredTrousers = player.getEquipment().getLegsId();
- switch (flaredTrousers) {
- case 10394:
- case 10742:
- case 13790:
- player.setNextAnimation(new Animation(5316));
- break;
- default:
- player.setNextAnimation(new Animation(866));
- break;
- }
- case 15:
- // Jig
- player.setNextAnimation(new Animation(2106));
- break;
- case 16:
- // Twirl
- player.setNextAnimation(new Animation(2107));
- break;
- case 17:
- // Headbang
- player.setNextAnimation(new Animation(2108));
- break;
- case 18:
- // Cry
- player.setNextAnimation(new Animation(860));
- break;
- case 19:
- // Blow Kiss
- player.setNextAnimation(new Animation(1374));
- player.setNextGraphics(new Graphics(1702));
- break;
- case 20:
- // Panic
- player.setNextAnimation(new Animation(2105));
- break;
- case 21:
- // RaspBerry
- player.setNextAnimation(new Animation(2110));
- break;
- case 22:
- // Clap
- player.setNextAnimation(new Animation(865));
- break;
- case 23:
- // Salute
- player.setNextAnimation(new Animation(2112));
- break;
- case 24:
- // Goblin Bow
- if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25)) {
- player.setNextAnimation(new Animation(0x84F));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the Lost Tribe quest.");
- }
- case 25:
- // Goblin Salute
- if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25)) {
- player.setNextAnimation(new Animation(0x850));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the Lost Tribe quest.");
- break;
- }
- case 26:
- // Glass Box
- if (unlockedEmotes.contains(26)) {
- player.setNextAnimation(new Animation(1131));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
- break;
- }
- case 27:
- // Climb Rope
- if (unlockedEmotes.contains(27)) {
- player.setNextAnimation(new Animation(1130));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
- break;
- }
- case 28:
- // Lean
- if (unlockedEmotes.contains(28)) {
- player.setNextAnimation(new Animation(1129));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
- break;
- }
- case 29:
- // Glass Wall
- if (unlockedEmotes.contains(29)) {
- player.setNextAnimation(new Animation(1128));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
- break;
- }
- case 30:
- // Slap Head
- if (unlockedEmotes.contains(30)) {
- player.setNextAnimation(new Animation(4275));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
- break;
- }
- case 31:
- // Stomp
- if (unlockedEmotes.contains(31)) {
- player.setNextAnimation(new Animation(4278));
- player.setNextGraphics(new Graphics(713));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
- break;
- }
- case 32:
- if (unlockedEmotes.contains(32)) {
- if ((player.getEquipment().getHatId() == 11015 || player.getEquipment().getHatId() == 11021)
- && (player.getEquipment().getBootsId() == 11016 || player.getEquipment().getBootsId() == 11019)
- && (player.getEquipment().getChestId() == 11017 || player.getEquipment().getChestId() == 11020)
- && (player.getEquipment().getLegsId() == 11018 || player.getEquipment().getLegsId() == 11022)) {
- player.setNextAnimation(new Animation(3859));
- break;
- } else {
- player.setNextAnimation(new Animation(4280));
- break;
- }
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
- break;
- }
- case 33:
- // Idea
- if (unlockedEmotes.contains(33)) {
- player.setNextAnimation(new Animation(4276));
- player.setNextGraphics(new Graphics(712));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
- break;
- }
- case 34:
- // Zombie Walk
- if (unlockedEmotes.contains(34)) {
- player.setNextAnimation(new Animation(3544));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the gravedigger random event.");
- break;
- }
- case 35:
- // Zombie Dance
- if (unlockedEmotes.contains(35)) {
- player.setNextAnimation(new Animation(3543));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the gravedigger random event.");
- }
- case 36:
- // Zombie Hand
- player.setNextAnimation(new Animation(7272));
- player.setNextGraphics(new Graphics(1244));
- break;
- case 37:
- // Scared
- player.setNextAnimation(new Animation(2836));
- break;
- case 38:
- // Bunny-hop
- player.setNextAnimation(new Animation(6111));
- break;
- case 39:
- // Skillcapes
- final int capeId = player.getEquipment().getCapeId();
- switch (capeId) {
- case 9747:
- case 9748:
- case 10639: // Attack cape
- player.setNextAnimation(new Animation(4959));
- player.setNextGraphics(new Graphics(823));
- break;
- case 9753:
- case 9754:
- case 10641: // Defence cape
- player.setNextAnimation(new Animation(4961));
- player.setNextGraphics(new Graphics(824));
- break;
- case 9750:
- case 9751:
- case 10640: // Strength cape
- player.setNextAnimation(new Animation(4981));
- player.setNextGraphics(new Graphics(828));
- break;
- case 9768:
- case 9769:
- case 10647: // Hitpoints cape
- player.setNextAnimation(new Animation(14242));
- player.setNextGraphics(new Graphics(2745));
- break;
- case 9756:
- case 9757:
- case 10642: // Ranged cape
- player.setNextAnimation(new Animation(4973));
- player.setNextGraphics(new Graphics(832));
- break;
- case 9762:
- case 9763:
- case 10644: // Magic cape
- player.setNextAnimation(new Animation(4939));
- player.setNextGraphics(new Graphics(813));
- break;
- case 9759:
- case 9760:
- case 10643: // Prayer cape
- player.setNextAnimation(new Animation(4979));
- player.setNextGraphics(new Graphics(829));
- break;
- case 9801:
- case 9802:
- case 10658: // Cooking cape
- player.setNextAnimation(new Animation(4955));
- player.setNextGraphics(new Graphics(821));
- break;
- case 9807:
- case 9808:
- case 10660: // Woodcutting cape
- player.setNextAnimation(new Animation(4957));
- player.setNextGraphics(new Graphics(822));
- break;
- case 9783:
- case 9784:
- case 10652: // Fletching cape
- player.setNextAnimation(new Animation(4937));
- player.setNextGraphics(new Graphics(812));
- break;
- case 9798:
- case 9799:
- case 10657: // Fishing cape
- player.setNextAnimation(new Animation(4951));
- player.setNextGraphics(new Graphics(819));
- break;
- case 9804:
- case 9805:
- case 10659: // Firemaking cape
- player.setNextAnimation(new Animation(4975));
- player.setNextGraphics(new Graphics(831));
- break;
- case 9780:
- case 9781:
- case 10651: // Crafting cape
- player.setNextAnimation(new Animation(4949));
- player.setNextGraphics(new Graphics(818));
- break;
- case 9795:
- case 9796:
- case 10656: // Smithing cape
- player.setNextAnimation(new Animation(4943));
- player.setNextGraphics(new Graphics(815));
- break;
- case 9792:
- case 9793:
- case 10655: // Mining cape
- player.setNextAnimation(new Animation(4941));
- player.setNextGraphics(new Graphics(814));
- break;
- case 9774:
- case 9775:
- case 10649: // Herblore cape
- player.setNextAnimation(new Animation(4969));
- player.setNextGraphics(new Graphics(835));
- break;
- case 9771:
- case 9772:
- case 10648: // Agility cape
- player.setNextAnimation(new Animation(4977));
- player.setNextGraphics(new Graphics(830));
- break;
- case 9777:
- case 9778:
- case 10650: // Thieving cape
- player.setNextAnimation(new Animation(4965));
- player.setNextGraphics(new Graphics(826));
- break;
- case 9786:
- case 9787:
- case 10653: // Slayer cape
- player.setNextAnimation(new Animation(4967));
- player.setNextGraphics(new Graphics(1656));
- break;
- case 9810:
- case 9811:
- case 10611: // Farming cape
- player.setNextAnimation(new Animation(4963));
- player.setNextGraphics(new Graphics(825));
- break;
- case 9765:
- case 9766:
- case 10645: // Runecrafting cape
- player.setNextAnimation(new Animation(4947));
- player.setNextGraphics(new Graphics(817));
- break;
- case 9789:
- case 9790:
- case 10654: // Construction cape
- player.setNextAnimation(new Animation(4953));
- player.setNextGraphics(new Graphics(820));
- break;
- case 12169:
- case 12170:
- case 12524: // Summoning cape
- player.setNextAnimation(new Animation(8525));
- player.setNextGraphics(new Graphics(1515));
- break;
- case 9948:
- case 9949:
- case 10646: // Hunter cape
- player.setNextAnimation(new Animation(5158));
- player.setNextGraphics(new Graphics(907));
- break;
- case 9813:
- case 10662: // Quest cape
- player.setNextAnimation(new Animation(4945));
- player.setNextGraphics(new Graphics(816));
- break;
- case 15706:
- case 18508:
- case 18509: // Dungeoneering cape
- final int rand = (int) (Math.random() * (2 + 1));
- player.setNextAnimation(new Animation(13190));
- player.setNextGraphics(new Graphics(2442));
- WorldTasksManager.schedule(new WorldTask() {
- int step;
- @Override
- public void run() {
- if (step == 1) {
- player.getAppearence().transformIntoNPC(
- (rand == 0 ? 11227 : (rand == 1 ? 11228 : 11229)));
- player.setNextAnimation(new Animation(
- ((rand > 0 ? 13192 : (rand == 1 ? 13193 : 13194)))));
- }
- if (step == 3) {
- player.getAppearence().transformIntoNPC(-1);
- stop();
- }
- step++;
- }
- }, 0, 1);
- break;
- case 19709:
- case 19710: // Master Dungeoneering cape
- WorldTasksManager.schedule(new WorldTask() {
- int step;
- private NPC dung1, dung2, dung3, dung4;
- @Override
- public void run() {
- if (step == 1) {
- player.getAppearence().transformIntoNPC(11229);
- player.setNextAnimation(new Animation(14608));
- dung1 = new NPC(-1, new WorldTile(player.getX(), player.getY() - 1, player.getPlane()), -1, true);
- player.setNextFaceEntity(dung1);
- dung1.setLocation(dung1);
- dung1.setNextGraphics(new Graphics(2777));
- dung2 = new NPC(-1, new WorldTile(player.getX() + 1, player.getY() - 1, player.getPlane()), -1, true);
- }
- if (step == 2) {
- player.setNextFaceEntity(null);
- dung1.finish();
- player.getAppearence().transformIntoNPC(11228);
- dung2.setLocation(dung2);
- player.setNextAnimation(new Animation(14609));
- player.setNextGraphics(new Graphics(2782));
- dung2.setNextGraphics(new Graphics(2778));
- dung3 = new NPC(-1, new WorldTile(player.getX(), player.getY() - 1, player.getPlane()), -1, true);
- dung4 = new NPC(-1, new WorldTile(player.getX(), player.getY() + 1, player.getPlane()), -1, true);
- }
- if (step == 3) {
- dung2.finish();
- player.getAppearence().transformIntoNPC(11227);
- dung3.setLocation(dung3);
- dung4.setLocation(dung4);
- dung4.setNextFaceEntity(player);
- player.setNextAnimation(new Animation(14610));
- dung3.setNextGraphics(new Graphics(2779));
- dung4.setNextGraphics(new Graphics(2780));
- }
- if (step > 4) {
- dung4.setNextFaceEntity(null);
- player.getAppearence().transformIntoNPC(-1);
- dung3.finish();
- dung4.finish();
- stop();
- }
- step++;
- }
- }, 0, 1);
- break;
- default:
- player.getPackets().sendGameMessage("You need to be wearing a skillcape in order to perform that emote.");
- break;
- }
- return;
- case 40:
- // Snowman Dance
- player.setNextAnimation(new Animation(7531));
- break;
- case 41:
- // Air Guitar
- if (unlockedEmotes.contains(41)) {
- player.setNextAnimation(new Animation(2414));
- player.setNextGraphics(new Graphics(1537));
- player.getPackets().sendMusicEffect(302);
- break;
- } else {
- player.getPackets().sendGameMessage("This emote can be accessed by unlocking 500 pieces of music.");
- break;
- }
- case 42:
- // Safety First
- if (unlockedEmotes.contains(42)) {
- player.setNextAnimation(new Animation(8770));
- player.setNextGraphics(new Graphics(1553));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Player Safety to unlock it.");
- break;
- }
- case 43:
- // Explore
- if (unlockedEmotes.contains(43)) {
- player.setNextAnimation(new Animation(9990));
- player.setNextGraphics(new Graphics(1734));
- break;
- } else {
- player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. You will need to complete the Beginner Tasks in the Lumbridge and Draynor Achievement Diary to use it.");
- break;
- }
- case 44:
- // Trick
- player.setNextAnimation(new Animation(10530));
- player.setNextGraphics(new Graphics(1864));
- break;
- case 45:
- // Freeze
- player.setNextAnimation(new Animation(11044));
- player.setNextGraphics(new Graphics(1973));
- break;
- case 46:
- // Give Thanks
- player.lock(10);
- nextEmoteEnd = Utils.currentTimeMillis() + (10 * 600);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- switch (step) {
- case 0:
- player.setNextAnimation(new Animation(10994));
- player.setNextGraphics(new Graphics(86));
- break;
- case 1:
- player.setNextAnimation(new Animation(10996));
- player.getAppearence().transformIntoNPC(8499);
- break;
- case 6:
- player.setNextAnimation(new Animation(10995));
- player.setNextGraphics(new Graphics(86));
- player.getAppearence().transformIntoNPC(-1);
- stop();
- break;
- default:
- break;
- }
- step++;
- }
- private int step;
- }, 0, 1);
- break;
- case 47:
- // Around the world in Eggty days
- player.setNextAnimation(new Animation(11542));
- player.setNextGraphics(new Graphics(2037));
- break;
- case 48:
- // Dramatic Point
- player.setNextAnimation(new Animation(12658));
- player.setNextGraphics(new Graphics(780));
- break;
- default:
- break;
- }
- if (!isDoingEmote())
- setNextEmoteEnd();
- }
- public void setNextEmoteEnd() {
- nextEmoteEnd = player.getLastAnimationEnd() - 600;
- }
- public void setNextEmoteEnd(long delay) {
- nextEmoteEnd = Utils.currentTimeMillis() + delay;
- }
- public void init() {
- refreshListConfigs();
- }
- private void refreshListConfigs() {
- if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25))
- player.getVarsManager().sendVar(465, 7);
- int value1 = 0;
- if (unlockedEmotes.contains(32))
- value1 += 1;
- if (unlockedEmotes.contains(30))
- value1 += 2;
- if (unlockedEmotes.contains(33))
- value1 += 4;
- if (unlockedEmotes.contains(31))
- value1 += 8;
- if (value1 > 0)
- player.getVarsManager().sendVar(802, value1);
- if (unlockedEmotes.contains(36))
- player.getVarsManager().sendVar(1085, 249852);
- int value2 = 0;
- if (unlockedEmotes.contains(29))
- value2 += 1;
- if (unlockedEmotes.contains(26))
- value2 += 2;
- if (unlockedEmotes.contains(27))
- value2 += 4;
- if (unlockedEmotes.contains(28))
- value2 += 8;
- if (unlockedEmotes.contains(37))
- value2 += 16;
- if (unlockedEmotes.contains(35))
- value2 += 32;
- if (unlockedEmotes.contains(34))
- value2 += 64;
- if (unlockedEmotes.contains(38))
- value2 += 128;
- if (unlockedEmotes.contains(39))
- value2 += 256;
- if (unlockedEmotes.contains(40))
- value2 += 512;
- if (unlockedEmotes.contains(41))
- value2 += 1024;
- if (unlockedEmotes.contains(42))
- value2 += 2048;
- if (unlockedEmotes.contains(43))
- value2 += 4096;
- if (unlockedEmotes.contains(44))
- value2 += 8192;
- if (unlockedEmotes.contains(46))
- value2 += 16384;
- if (unlockedEmotes.contains(45))
- value2 += 32768;
- if (value2 > 0)
- player.getVarsManager().sendVar(313, value2);
- if (unlockedEmotes.contains(47))
- player.getVarsManager().sendVar(1404, 123728213);
- if (unlockedEmotes.contains(48))
- player.getVarsManager().sendVar(1597, -1);
- }
- public long getNextEmoteEnd() {
- return nextEmoteEnd;
- }
- public boolean isDoingEmote() {
- return nextEmoteEnd >= Utils.currentTimeMillis();
- }
- public void unlockEmotesBook() {
- player.getPackets().sendUnlockIComponentOptionSlots(590, 8, 0, 118, 0, 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment