Guest User

EmotesManager.java

a guest
Jul 5th, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 34.75 KB | None | 0 0
  1. package com.rs.game.player;
  2.  
  3. import com.rs.game.Animation;
  4. import com.rs.game.Graphics;
  5. import com.rs.game.WorldTile;
  6. import com.rs.game.npc.NPC;
  7. import com.rs.game.tasks.WorldTask;
  8. import com.rs.game.tasks.WorldTasksManager;
  9. import com.rs.net.decoders.WorldPacketsDecoder;
  10. import com.rs.utils.Utils;
  11. import java.io.Serializable;
  12. import java.util.ArrayList;
  13.  
  14. public final class EmotesManager implements Serializable {
  15.  
  16.         private static final long serialVersionUID = 8489480378717534336L;
  17.    
  18.     private final ArrayList<Integer> unlockedEmotes;
  19.     private transient Player player;
  20.     private transient long nextEmoteEnd;
  21.  
  22.     public EmotesManager() {
  23.         unlockedEmotes = new ArrayList<Integer>();
  24.         for (int emoteId = 2; emoteId < 24; emoteId++)
  25.             unlockedEmotes.add(emoteId);
  26.                 unlockedEmotes.add(36);
  27.                 unlockedEmotes.add(37);
  28.                 unlockedEmotes.add(38);
  29.                 unlockedEmotes.add(39);
  30.                 unlockedEmotes.add(40);
  31.                 unlockedEmotes.add(44);
  32.                 unlockedEmotes.add(45);
  33.                 unlockedEmotes.add(46);
  34.                 unlockedEmotes.add(47);
  35.                 unlockedEmotes.add(48);
  36.     }
  37.  
  38.     public void setPlayer(Player player) {
  39.         this.player = player;
  40.     }
  41.  
  42.     public void unlockEmote(int id) {
  43.         if (unlockedEmotes.contains(id))
  44.             return;
  45.         if (unlockedEmotes.add(id))
  46.             refreshListConfigs();
  47.     }
  48.  
  49.     public static int getId(int slotId, int packetId) {
  50.         switch (slotId) {
  51.         case 0:
  52.                     return 2;
  53.         case 1:
  54.                     return 3;
  55.         case 2:
  56.                     if (packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET)
  57.             return 4;
  58.                     else
  59.             return -1; //TODO Curtsy
  60.         case 3:
  61.                     return 5;
  62.         case 4:
  63.                     return 6;
  64.         case 5:
  65.                     return 7;
  66.         case 6:
  67.                     return 8;
  68.         case 7:
  69.                     return 9;
  70.         case 8:
  71.                     return 10;
  72.         case 9:
  73.                     return 12;
  74.         case 10:
  75.                     return 11;
  76.         case 11:
  77.                     return 13;
  78.         case 12:
  79.                     return 14;
  80.         case 13:
  81.                     return 15;
  82.         case 14:
  83.                     return 16;
  84.         case 15:
  85.                     return 17;
  86.         case 16:
  87.                     return 18;
  88.         case 17:
  89.                     return 19;
  90.         case 18:
  91.                     return 20;
  92.         case 19:
  93.                     return 21;
  94.         case 20:
  95.                     return 22;
  96.         case 21:
  97.                     return 23;
  98.         case 22:
  99.                     return 24;
  100.         case 23:
  101.                     return 25;
  102.         case 24:
  103.                     return 26;
  104.         case 25:
  105.                     return 27;
  106.         case 26:
  107.                     return 28;
  108.         case 27:
  109.                     return 29;
  110.         case 28:
  111.                     return 30;
  112.         case 29:
  113.                     return 31;
  114.         case 30:
  115.                     return 32;
  116.         case 31:
  117.                     return 33;
  118.         case 32:
  119.                     return 34;
  120.         case 33:
  121.                     return 35;
  122.         case 34:
  123.                     return 36;
  124.         case 35:
  125.                     return 37;
  126.         case 36:
  127.                     return 38;
  128.         case 37:
  129.                     return 39;
  130.         case 38:
  131.                     return 40;
  132.         case 39:
  133.                     return 41;
  134.         case 40:
  135.                     return 42;
  136.         case 41:
  137.                     return 43;
  138.         case 42:
  139.                     return 44;
  140.         case 43:
  141.                     return 45;
  142.         case 44:
  143.                     return 46;
  144.         case 45:
  145.                     return 47;
  146.         case 46:
  147.                     return 48;
  148.         default:
  149.             return -1;
  150.         }
  151.     }
  152.  
  153.     public void useBookEmote(int id) {
  154.         if (player.getAttackedByDelay() + 10000 > Utils.currentTimeMillis()) {
  155.             player.getPackets().sendGameMessage("You can't perform while you're under combat.");
  156.             return;
  157.         } else if (isDoingEmote()) {
  158.             player.getPackets().sendGameMessage("You're already doing an emote!");
  159.             return;
  160.         }
  161.         player.stopAll();
  162.             switch (id) {
  163.                 case 2:
  164.                     // Yes
  165.                     player.setNextAnimation(new Animation(855));
  166.                     break;
  167.                 case 3:
  168.                     // No
  169.                     player.setNextAnimation(new Animation(856));
  170.                     break;
  171.                 case 4:
  172.                     final int legsId = player.getEquipment().getLegsId();
  173.                     switch (legsId) {
  174.                     case 10396:
  175.                     case 10744:
  176.                     case 13791:
  177.                         player.setNextAnimation(new Animation(5312));
  178.                         break;
  179.                     default:
  180.                         player.setNextAnimation(new Animation(858));
  181.                         break;
  182.                     }
  183.                     break;
  184.                 case 5:
  185.                     final int hatId = player.getEquipment().getHatId();
  186.                     switch (hatId) {
  187.                     case 10392:
  188.                     case 10740:
  189.                     case 13789:
  190.                         player.setNextAnimation(new Animation(5315));
  191.                         break;
  192.                     default:
  193.                         player.setNextAnimation(new Animation(859));
  194.                         break;
  195.                     }
  196.                     break;
  197.                 case 6:
  198.                     // Think
  199.                     player.setNextAnimation(new Animation(857));
  200.                     break;
  201.                 case 7:
  202.                     // Wave
  203.                     player.setNextAnimation(new Animation(863));
  204.                     break;
  205.                 case 8:
  206.                     // Shrug
  207.                     player.setNextAnimation(new Animation(2113));
  208.                     break;
  209.                 case 9:
  210.                     // Cheer
  211.                     player.setNextAnimation(new Animation(862));
  212.                     break;
  213.                 case 10:
  214.                     // Beckon
  215.                     for (int i = 10862; i < 10884; i++) {
  216.                         if (player.getEquipment().getHatId() == i
  217.                                 || player.getEquipment().getShieldId() == i
  218.                                 || player.getEquipment().getBootsId() == i
  219.                                 || player.getEquipment().getChestId() == i
  220.                                 || player.getEquipment().getLegsId() == i) {
  221.                             player.setNextAnimation(new Animation(5845));
  222.                         } else {
  223.                             player.setNextAnimation(new Animation(864));
  224.                         }
  225.                     }
  226.                     break;
  227.                 case 12:
  228.                     // Laugh
  229.                     player.setNextAnimation(new Animation(861));
  230.                     break;
  231.                 case 11:
  232.                     // Jump For Joy
  233.                     player.setNextAnimation(new Animation(2109));
  234.                     break;
  235.                 case 13:
  236.                     // Yawn
  237.                     final int sleepCap = player.getEquipment().getHatId();
  238.                     switch (sleepCap) {
  239.                     case 10398:
  240.                     case 10746:
  241.                     case 13792:
  242.                         player.setNextAnimation(new Animation(5313));
  243.                         player.setNextGraphics(new Graphics(967));
  244.                         break;
  245.                     default:
  246.                         player.setNextAnimation(new Animation(2111));
  247.                         break;
  248.                     }
  249.                     break;
  250.                 case 14:
  251.                     final int flaredTrousers = player.getEquipment().getLegsId();
  252.                     switch (flaredTrousers) {
  253.                     case 10394:
  254.                     case 10742:
  255.                     case 13790:
  256.                         player.setNextAnimation(new Animation(5316));
  257.                         break;
  258.                     default:
  259.                         player.setNextAnimation(new Animation(866));
  260.                         break;
  261.                     }
  262.                 case 15:
  263.                     // Jig
  264.                     player.setNextAnimation(new Animation(2106));
  265.                     break;
  266.                 case 16:
  267.                     // Twirl
  268.                     player.setNextAnimation(new Animation(2107));
  269.                     break;
  270.                 case 17:
  271.                     // Headbang
  272.                     player.setNextAnimation(new Animation(2108));
  273.                     break;
  274.                 case 18:
  275.                     // Cry
  276.                     player.setNextAnimation(new Animation(860));
  277.                     break;
  278.                 case 19:
  279.                     // Blow Kiss
  280.                     player.setNextAnimation(new Animation(1374));
  281.                     player.setNextGraphics(new Graphics(1702));
  282.                     break;
  283.                 case 20:
  284.                     // Panic
  285.                     player.setNextAnimation(new Animation(2105));
  286.                     break;
  287.                 case 21:
  288.                     // RaspBerry
  289.                     player.setNextAnimation(new Animation(2110));
  290.                     break;
  291.                 case 22:
  292.                     // Clap
  293.                     player.setNextAnimation(new Animation(865));
  294.                     break;
  295.                 case 23:
  296.                     // Salute
  297.                     player.setNextAnimation(new Animation(2112));
  298.                     break;
  299.                 case 24:
  300.                     // Goblin Bow
  301.                     if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25)) {
  302.                         player.setNextAnimation(new Animation(0x84F));
  303.                         break;
  304.                     } else {
  305.                          player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the Lost Tribe quest.");
  306.                     }
  307.                 case 25:
  308.                     // Goblin Salute
  309.                     if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25)) {
  310.                         player.setNextAnimation(new Animation(0x850));
  311.                         break;
  312.                     } else {
  313.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the Lost Tribe quest.");
  314.                         break;
  315.                     }
  316.                 case 26:
  317.                     // Glass Box
  318.                     if (unlockedEmotes.contains(26)) {
  319.                         player.setNextAnimation(new Animation(1131));
  320.                         break;
  321.                     } else {
  322.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
  323.                         break;
  324.                     }
  325.                 case 27:
  326.                     // Climb Rope
  327.                     if (unlockedEmotes.contains(27)) {
  328.                     player.setNextAnimation(new Animation(1130));
  329.                     break;
  330.                     } else {
  331.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
  332.                         break;
  333.                     }
  334.                 case 28:
  335.                     // Lean
  336.                     if (unlockedEmotes.contains(28)) {
  337.                         player.setNextAnimation(new Animation(1129));
  338.                         break;
  339.                     } else {
  340.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
  341.                         break;
  342.                     }
  343.                 case 29:
  344.                     // Glass Wall
  345.                     if (unlockedEmotes.contains(29)) {
  346.                         player.setNextAnimation(new Animation(1128));
  347.                         break;
  348.                     } else {
  349.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the mime random event.");
  350.                         break;
  351.                     }
  352.                 case 30:
  353.                     // Slap Head
  354.                     if (unlockedEmotes.contains(30)) {
  355.                         player.setNextAnimation(new Animation(4275));
  356.                         break;
  357.                     } else {
  358.                         player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
  359.                         break;
  360.                     }
  361.                 case 31:
  362.                     // Stomp
  363.                     if (unlockedEmotes.contains(31)) {
  364.                         player.setNextAnimation(new Animation(4278));
  365.                         player.setNextGraphics(new Graphics(713));
  366.                         break;
  367.                     } else {
  368.                         player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
  369.                         break;
  370.                     }
  371.                 case 32:
  372.                     if (unlockedEmotes.contains(32)) {
  373.                     if ((player.getEquipment().getHatId() == 11015 || player.getEquipment().getHatId() == 11021)
  374.                             && (player.getEquipment().getBootsId() == 11016 || player.getEquipment().getBootsId() == 11019)
  375.                             && (player.getEquipment().getChestId() == 11017 || player.getEquipment().getChestId() == 11020)
  376.                             && (player.getEquipment().getLegsId() == 11018 || player.getEquipment().getLegsId() == 11022)) {
  377.                             player.setNextAnimation(new Animation(3859));
  378.                                         break;
  379.                         } else {
  380.                         player.setNextAnimation(new Animation(4280));
  381.                                 break;
  382.                     }
  383.                     } else {
  384.                         player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
  385.                         break;
  386.                     }
  387.                 case 33:
  388.                     // Idea
  389.                     if (unlockedEmotes.contains(33)) {
  390.                         player.setNextAnimation(new Animation(4276));
  391.                         player.setNextGraphics(new Graphics(712));
  392.                         break;
  393.                     } else {
  394.                         player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Security to unlock it.");
  395.                         break;
  396.                     }
  397.                 case 34:
  398.                     // Zombie Walk
  399.                     if (unlockedEmotes.contains(34)) {
  400.                         player.setNextAnimation(new Animation(3544));
  401.                         break;
  402.                     } else {
  403.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the gravedigger random event.");
  404.                         break;
  405.                     }
  406.                 case 35:
  407.                     // Zombie Dance
  408.                     if (unlockedEmotes.contains(35)) {
  409.                         player.setNextAnimation(new Animation(3543));
  410.                         break;
  411.                     } else {
  412.                         player.getDialogueManager().startDialogue("SimpleMessage", "This emote can be unlocked during the gravedigger random event.");
  413.                     }
  414.                 case 36:
  415.                     // Zombie Hand
  416.                     player.setNextAnimation(new Animation(7272));
  417.                     player.setNextGraphics(new Graphics(1244));
  418.                     break;
  419.                 case 37:
  420.                     // Scared
  421.                     player.setNextAnimation(new Animation(2836));
  422.                     break;
  423.                 case 38:
  424.                     // Bunny-hop
  425.                     player.setNextAnimation(new Animation(6111));
  426.                     break;
  427.                 case 39:
  428.                     // Skillcapes
  429.                     final int capeId = player.getEquipment().getCapeId();
  430.                     switch (capeId) {
  431.                         case 9747:
  432.                         case 9748:
  433.                         case 10639: // Attack cape
  434.                             player.setNextAnimation(new Animation(4959));
  435.                             player.setNextGraphics(new Graphics(823));
  436.                             break;
  437.                         case 9753:
  438.                         case 9754:
  439.                         case 10641: // Defence cape
  440.                             player.setNextAnimation(new Animation(4961));
  441.                             player.setNextGraphics(new Graphics(824));
  442.                             break;
  443.                         case 9750:
  444.                         case 9751:
  445.                         case 10640: // Strength cape
  446.                             player.setNextAnimation(new Animation(4981));
  447.                             player.setNextGraphics(new Graphics(828));
  448.                             break;
  449.                         case 9768:
  450.                         case 9769:
  451.                         case 10647: // Hitpoints cape
  452.                             player.setNextAnimation(new Animation(14242));
  453.                             player.setNextGraphics(new Graphics(2745));
  454.                             break;
  455.                         case 9756:
  456.                         case 9757:
  457.                         case 10642: // Ranged cape
  458.                             player.setNextAnimation(new Animation(4973));
  459.                             player.setNextGraphics(new Graphics(832));
  460.                             break;
  461.                         case 9762:
  462.                         case 9763:
  463.                         case 10644: // Magic cape
  464.                             player.setNextAnimation(new Animation(4939));
  465.                             player.setNextGraphics(new Graphics(813));
  466.                             break;
  467.                         case 9759:
  468.                         case 9760:
  469.                         case 10643: // Prayer cape
  470.                             player.setNextAnimation(new Animation(4979));
  471.                             player.setNextGraphics(new Graphics(829));
  472.                             break;
  473.                         case 9801:
  474.                         case 9802:
  475.                         case 10658: // Cooking cape
  476.                             player.setNextAnimation(new Animation(4955));
  477.                             player.setNextGraphics(new Graphics(821));
  478.                             break;
  479.                         case 9807:
  480.                         case 9808:
  481.                         case 10660: // Woodcutting cape
  482.                             player.setNextAnimation(new Animation(4957));
  483.                             player.setNextGraphics(new Graphics(822));
  484.                             break;
  485.                         case 9783:
  486.                         case 9784:
  487.                         case 10652: // Fletching cape
  488.                             player.setNextAnimation(new Animation(4937));
  489.                             player.setNextGraphics(new Graphics(812));
  490.                             break;
  491.                         case 9798:
  492.                         case 9799:
  493.                         case 10657: // Fishing cape
  494.                             player.setNextAnimation(new Animation(4951));
  495.                             player.setNextGraphics(new Graphics(819));
  496.                             break;
  497.                         case 9804:
  498.                         case 9805:
  499.                         case 10659: // Firemaking cape
  500.                             player.setNextAnimation(new Animation(4975));
  501.                             player.setNextGraphics(new Graphics(831));
  502.                             break;
  503.                         case 9780:
  504.                         case 9781:
  505.                         case 10651: // Crafting cape
  506.                             player.setNextAnimation(new Animation(4949));
  507.                             player.setNextGraphics(new Graphics(818));
  508.                             break;
  509.                         case 9795:
  510.                         case 9796:
  511.                         case 10656: // Smithing cape
  512.                             player.setNextAnimation(new Animation(4943));
  513.                             player.setNextGraphics(new Graphics(815));
  514.                             break;
  515.                         case 9792:
  516.                         case 9793:
  517.                         case 10655: // Mining cape
  518.                             player.setNextAnimation(new Animation(4941));
  519.                             player.setNextGraphics(new Graphics(814));
  520.                             break;
  521.                         case 9774:
  522.                         case 9775:
  523.                         case 10649: // Herblore cape
  524.                             player.setNextAnimation(new Animation(4969));
  525.                             player.setNextGraphics(new Graphics(835));
  526.                             break;
  527.                         case 9771:
  528.                         case 9772:
  529.                         case 10648: // Agility cape
  530.                             player.setNextAnimation(new Animation(4977));
  531.                             player.setNextGraphics(new Graphics(830));
  532.                             break;
  533.                         case 9777:
  534.                         case 9778:
  535.                         case 10650: // Thieving cape
  536.                             player.setNextAnimation(new Animation(4965));
  537.                             player.setNextGraphics(new Graphics(826));
  538.                             break;
  539.                         case 9786:
  540.                         case 9787:
  541.                         case 10653: // Slayer cape
  542.                             player.setNextAnimation(new Animation(4967));
  543.                             player.setNextGraphics(new Graphics(1656));
  544.                             break;
  545.                         case 9810:
  546.                         case 9811:
  547.                         case 10611: // Farming cape
  548.                             player.setNextAnimation(new Animation(4963));
  549.                             player.setNextGraphics(new Graphics(825));
  550.                             break;
  551.                         case 9765:
  552.                         case 9766:
  553.                         case 10645: // Runecrafting cape
  554.                             player.setNextAnimation(new Animation(4947));
  555.                             player.setNextGraphics(new Graphics(817));
  556.                             break;
  557.                         case 9789:
  558.                         case 9790:
  559.                         case 10654: // Construction cape
  560.                             player.setNextAnimation(new Animation(4953));
  561.                             player.setNextGraphics(new Graphics(820));
  562.                             break;
  563.                         case 12169:
  564.                         case 12170:
  565.                         case 12524: // Summoning cape
  566.                             player.setNextAnimation(new Animation(8525));
  567.                             player.setNextGraphics(new Graphics(1515));
  568.                             break;
  569.                         case 9948:
  570.                         case 9949:
  571.                         case 10646: // Hunter cape
  572.                             player.setNextAnimation(new Animation(5158));
  573.                             player.setNextGraphics(new Graphics(907));
  574.                             break;
  575.                         case 9813:
  576.                         case 10662: // Quest cape
  577.                             player.setNextAnimation(new Animation(4945));
  578.                             player.setNextGraphics(new Graphics(816));
  579.                             break;
  580.                         case 15706:
  581.                         case 18508:
  582.                         case 18509: // Dungeoneering cape
  583.                             final int rand = (int) (Math.random() * (2 + 1));
  584.                             player.setNextAnimation(new Animation(13190));
  585.                             player.setNextGraphics(new Graphics(2442));
  586.                             WorldTasksManager.schedule(new WorldTask() {
  587.                                 int step;
  588.                                 @Override
  589.                                 public void run() {
  590.                                     if (step == 1) {
  591.                                         player.getAppearence().transformIntoNPC(
  592.                                                 (rand == 0 ? 11227 : (rand == 1 ? 11228 : 11229)));
  593.                                         player.setNextAnimation(new Animation(
  594.                                                 ((rand > 0 ? 13192 : (rand == 1 ? 13193 : 13194)))));
  595.                                     }
  596.                                     if (step == 3) {
  597.                                         player.getAppearence().transformIntoNPC(-1);
  598.                                         stop();
  599.                                     }
  600.                                     step++;
  601.                                 }
  602.                             }, 0, 1);
  603.                             break;
  604.                         case 19709:
  605.                         case 19710: // Master Dungeoneering cape
  606.                             WorldTasksManager.schedule(new WorldTask() {
  607.                                 int step;
  608.                                 private NPC dung1, dung2, dung3, dung4;
  609.                                 @Override
  610.                                 public void run() {
  611.                                     if (step == 1) {
  612.                                         player.getAppearence().transformIntoNPC(11229);
  613.                                         player.setNextAnimation(new Animation(14608));
  614.                                         dung1 = new NPC(-1, new WorldTile(player.getX(), player.getY() - 1, player.getPlane()), -1, true);
  615.                                         player.setNextFaceEntity(dung1);
  616.                                         dung1.setLocation(dung1);
  617.                                         dung1.setNextGraphics(new Graphics(2777));
  618.                                         dung2 = new NPC(-1, new WorldTile(player.getX() + 1, player.getY() - 1, player.getPlane()), -1, true);
  619.                                     }
  620.                                     if (step == 2) {
  621.                                         player.setNextFaceEntity(null);
  622.                                         dung1.finish();
  623.                                         player.getAppearence().transformIntoNPC(11228);
  624.                                         dung2.setLocation(dung2);
  625.                                         player.setNextAnimation(new Animation(14609));
  626.                                         player.setNextGraphics(new Graphics(2782));
  627.                                         dung2.setNextGraphics(new Graphics(2778));
  628.                                         dung3 = new NPC(-1, new WorldTile(player.getX(), player.getY() - 1, player.getPlane()), -1, true);
  629.                                         dung4 = new NPC(-1, new WorldTile(player.getX(), player.getY() + 1, player.getPlane()), -1, true);
  630.                                     }
  631.                                     if (step == 3) {
  632.                                         dung2.finish();
  633.                                         player.getAppearence().transformIntoNPC(11227);
  634.                                         dung3.setLocation(dung3);
  635.                                         dung4.setLocation(dung4);
  636.                                         dung4.setNextFaceEntity(player);
  637.                                         player.setNextAnimation(new Animation(14610));
  638.                                         dung3.setNextGraphics(new Graphics(2779));
  639.                                         dung4.setNextGraphics(new Graphics(2780));
  640.                                     }
  641.                                     if (step > 4) {
  642.                                         dung4.setNextFaceEntity(null);
  643.                                         player.getAppearence().transformIntoNPC(-1);
  644.                                         dung3.finish();
  645.                                         dung4.finish();
  646.                                         stop();
  647.                                     }
  648.                                     step++;
  649.                                 }
  650.                             }, 0, 1);
  651.                             break;
  652.                         default:
  653.                             player.getPackets().sendGameMessage("You need to be wearing a skillcape in order to perform that emote.");
  654.                             break;
  655.                     }
  656.                     return;
  657.                 case 40:
  658.                     // Snowman Dance
  659.                     player.setNextAnimation(new Animation(7531));
  660.                     break;
  661.                 case 41:
  662.                     // Air Guitar
  663.                     if (unlockedEmotes.contains(41)) {
  664.                         player.setNextAnimation(new Animation(2414));
  665.                         player.setNextGraphics(new Graphics(1537));
  666.                         player.getPackets().sendMusicEffect(302);
  667.                         break;
  668.                     } else {
  669.                         player.getPackets().sendGameMessage("This emote can be accessed by unlocking 500 pieces of music.");
  670.                         break;
  671.                     }
  672.                 case 42:
  673.                     // Safety First
  674.                     if (unlockedEmotes.contains(42)) {
  675.                         player.setNextAnimation(new Animation(8770));
  676.                         player.setNextGraphics(new Graphics(1553));
  677.                         break;
  678.                     } else {
  679.                         player.getDialogueManager().startDialogue("SimpleMessage", "You can't use this emote yet. Visit the Stronghold of Player Safety to unlock it.");
  680.                         break;
  681.                     }
  682.                 case 43:
  683.                     // Explore
  684.                     if (unlockedEmotes.contains(43)) {
  685.                         player.setNextAnimation(new Animation(9990));
  686.                         player.setNextGraphics(new Graphics(1734));
  687.                         break;
  688.                     } else {
  689.                         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.");
  690.                         break;
  691.                     }
  692.                 case 44:
  693.                     // Trick
  694.                     player.setNextAnimation(new Animation(10530));
  695.                     player.setNextGraphics(new Graphics(1864));
  696.                     break;
  697.                 case 45:
  698.                     // Freeze
  699.                     player.setNextAnimation(new Animation(11044));
  700.                     player.setNextGraphics(new Graphics(1973));
  701.                     break;
  702.                 case 46:
  703.                     // Give Thanks
  704.                     player.lock(10);
  705.                     nextEmoteEnd = Utils.currentTimeMillis() + (10 * 600);
  706.                     WorldTasksManager.schedule(new WorldTask() {
  707.                         @Override
  708.                         public void run() {
  709.                             switch (step) {
  710.                                 case 0:
  711.                                     player.setNextAnimation(new Animation(10994));
  712.                                     player.setNextGraphics(new Graphics(86));
  713.                                     break;
  714.                                 case 1:
  715.                                     player.setNextAnimation(new Animation(10996));
  716.                                     player.getAppearence().transformIntoNPC(8499);
  717.                                     break;
  718.                                 case 6:
  719.                                     player.setNextAnimation(new Animation(10995));
  720.                                     player.setNextGraphics(new Graphics(86));
  721.                                     player.getAppearence().transformIntoNPC(-1);
  722.                                     stop();
  723.                                     break;
  724.                                 default:
  725.                                     break;
  726.                             }
  727.                             step++;
  728.                         }
  729.                         private int step;
  730.                     }, 0, 1);
  731.                     break;
  732.                 case 47:
  733.                     // Around the world in Eggty days
  734.                     player.setNextAnimation(new Animation(11542));
  735.                     player.setNextGraphics(new Graphics(2037));
  736.                     break;
  737.                 case 48:
  738.                     // Dramatic Point
  739.                     player.setNextAnimation(new Animation(12658));
  740.                     player.setNextGraphics(new Graphics(780));
  741.                     break;
  742.                 default:
  743.                     break;
  744.             }
  745.         if (!isDoingEmote())
  746.             setNextEmoteEnd();
  747.     }
  748.  
  749.     public void setNextEmoteEnd() {
  750.         nextEmoteEnd = player.getLastAnimationEnd() - 600;
  751.     }
  752.  
  753.     public void setNextEmoteEnd(long delay) {
  754.         nextEmoteEnd = Utils.currentTimeMillis() + delay;
  755.     }
  756.  
  757.     public void init() {
  758.         refreshListConfigs();
  759.     }
  760.  
  761.     private void refreshListConfigs() {
  762.         if (unlockedEmotes.contains(24) && unlockedEmotes.contains(25))
  763.                     player.getVarsManager().sendVar(465, 7);
  764.         int value1 = 0;
  765.         if (unlockedEmotes.contains(32))
  766.                     value1 += 1;
  767.         if (unlockedEmotes.contains(30))
  768.                     value1 += 2;
  769.         if (unlockedEmotes.contains(33))
  770.                     value1 += 4;
  771.         if (unlockedEmotes.contains(31))
  772.                     value1 += 8;
  773.         if (value1 > 0)
  774.                     player.getVarsManager().sendVar(802, value1);
  775.         if (unlockedEmotes.contains(36))
  776.                     player.getVarsManager().sendVar(1085, 249852);
  777.         int value2 = 0;
  778.         if (unlockedEmotes.contains(29))
  779.                     value2 += 1;
  780.         if (unlockedEmotes.contains(26))
  781.                     value2 += 2;
  782.         if (unlockedEmotes.contains(27))
  783.                     value2 += 4;
  784.         if (unlockedEmotes.contains(28))
  785.                     value2 += 8;
  786.         if (unlockedEmotes.contains(37))
  787.                     value2 += 16;
  788.         if (unlockedEmotes.contains(35))
  789.                     value2 += 32;
  790.         if (unlockedEmotes.contains(34))
  791.                     value2 += 64;
  792.         if (unlockedEmotes.contains(38))
  793.                     value2 += 128;
  794.         if (unlockedEmotes.contains(39))
  795.                     value2 += 256;
  796.         if (unlockedEmotes.contains(40))
  797.                     value2 += 512;
  798.         if (unlockedEmotes.contains(41))
  799.                     value2 += 1024;
  800.         if (unlockedEmotes.contains(42))
  801.                     value2 += 2048;
  802.         if (unlockedEmotes.contains(43))
  803.                     value2 += 4096;
  804.         if (unlockedEmotes.contains(44))
  805.                     value2 += 8192;
  806.         if (unlockedEmotes.contains(46))
  807.                     value2 += 16384;
  808.         if (unlockedEmotes.contains(45))
  809.                     value2 += 32768;
  810.         if (value2 > 0)
  811.                     player.getVarsManager().sendVar(313, value2);
  812.                 if (unlockedEmotes.contains(47))
  813.                     player.getVarsManager().sendVar(1404, 123728213);
  814.                 if (unlockedEmotes.contains(48))
  815.                     player.getVarsManager().sendVar(1597, -1);
  816.     }
  817.  
  818.     public long getNextEmoteEnd() {
  819.         return nextEmoteEnd;
  820.     }
  821.  
  822.     public boolean isDoingEmote() {
  823.         return nextEmoteEnd >= Utils.currentTimeMillis();
  824.     }
  825.  
  826.     public void unlockEmotesBook() {
  827.         player.getPackets().sendUnlockIComponentOptionSlots(590, 8, 0, 118, 0, 1);
  828.     }
  829. }
Advertisement
Add Comment
Please, Sign In to add comment