armark1ng

Untitled

Apr 8th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.90 KB | None | 0 0
  1. package com.rs.game.player;
  2.  
  3. import java.io.Serializable;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. import com.rs.cache.loaders.ClientScriptMap;
  8. import com.rs.cache.loaders.GeneralRequirementMap;
  9. import com.rs.cache.loaders.NPCDefinitions;
  10. import com.rs.game.TemporaryAtributtes.Key;
  11. import com.rs.game.player.actions.HomeTeleport;
  12.  
  13. public class TimersManager implements Serializable {
  14.  
  15. private static final long serialVersionUID = -3278352340946510939L;
  16.  
  17. private static final int BEAST_MENU_VAR = 4517;
  18.  
  19. public static enum RecordKey {
  20.  
  21. ARAXXI(0, false, true, 29), THE_BARROWS_BROTHERS(1, false, false, 29), THE_BARROWS_RISE_OF_THE_FIX(2, false,
  22. true, 29), CHAOS_ELEMENTAL(3, false, false, 35), COMMANDER_ZILYANA(4, true, true, 18), CORPOREAL_BEAST(
  23. 5, false, false, 35), DAGANNOTH_KINGS(6, false, false, 31), GENERAL_GRAARDOR(7, true, true, 18), GIANT_MOLE(
  24. 8, true, true, 22), FIGHT_KILN(9, true, false, 32), // har-aken
  25. KALPHITE_KING(10, true, false, 4), KALPHITE_QUEEN(11, false, false, 4), KING_BLACK_DRAGON(12, false, false, 35), KREE_ARRA(
  26. 13, true, true, 18), KRIL_TSUTSAROTH(14, true, true, 18), LEGIONES(15, true, false, 33), NEX(16, true,
  27. false, 18), QUEEN_BLACK_DRAGON(17, true, false, 24), FIGHT_CAVES(18, true, false, 32), // tztok-jad
  28. VORAGO(19, true, true, 22);
  29.  
  30. private boolean hasHM, hasFastestKill;
  31. private int index, lodestoneComponent;
  32.  
  33. private RecordKey(int index, boolean hasHM, boolean hasFastestKill, int lodestoneComponent) {
  34. this.index = index;
  35. this.hasHM = hasHM;
  36. this.hasFastestKill = hasFastestKill;
  37. this.lodestoneComponent = lodestoneComponent;
  38. }
  39. }
  40.  
  41. private Player player;
  42.  
  43. private Map<RecordKey, BossRecord> record;
  44. private int currentTime;
  45.  
  46. public static class BossRecord implements Serializable {
  47.  
  48. private static final long serialVersionUID = -8783909294743985403L;
  49.  
  50. private int totalKills;
  51. private int totalHmKills;
  52. private int fastestKill;
  53.  
  54. /*
  55. * private BossRecord(int totalKills, int totalHmKills, int fastestKill)
  56. * { this.totalKills = totalKills; this.totalHmKills = totalHmKills;
  57. * this.fastestKill = fastestKill; }
  58. */
  59.  
  60. public int getTotalKills() {
  61. return totalKills;
  62. }
  63.  
  64. public int getTotalHmKills() {
  65. return totalHmKills;
  66. }
  67. }
  68.  
  69. public TimersManager() {
  70. record = new HashMap<RecordKey, BossRecord>();
  71. currentTime = -1;
  72. }
  73.  
  74. public void setPlayer(Player player) {
  75. this.player = player;
  76. if (record == null) // temporary
  77. record = new HashMap<RecordKey, BossRecord>();
  78. }
  79.  
  80. public void init() {
  81. sendBossKills();
  82. sendSlayerCreatureKills();
  83. }
  84.  
  85. public boolean isActive() {
  86. return currentTime >= 0;
  87. }
  88.  
  89. public void process() {
  90. if (isActive() && currentTime < (Integer.MAX_VALUE / 30))
  91. currentTime++;
  92. }
  93.  
  94. /*
  95. * when boss respawns / instance starts depending in type
  96. */
  97. public void sendTimer() {
  98. if (!isActive()) // starts it if wasnt on
  99. currentTime = 0;
  100. sendInterfaces();
  101. }
  102.  
  103. public void sendInterfaces() {
  104. if (isActive())
  105. player.getInterfaceManager().sendTimerInterface();
  106. }
  107.  
  108. /*
  109. * doesnt save
  110. */
  111. public void removeTimer() {
  112. removeTimer(null);
  113. }
  114.  
  115. public void removeTimer(RecordKey key, boolean hm) {
  116. if (!isActive()) // shouldnt be used with this if not a timer boss
  117. return;
  118. if (key != null) {
  119. BossRecord record = getRecord(key);
  120. if (record == null) {
  121. record = new BossRecord();
  122. this.record.put(key, record);
  123. }
  124. record.fastestKill = record.fastestKill == 0 || record.fastestKill > currentTime ? currentTime
  125. : record.fastestKill;
  126. if (key.hasHM && hm)
  127. record.totalHmKills++;
  128. else
  129. record.totalKills++;
  130. sendBossKills();
  131. }
  132. currentTime = -1;
  133. player.getInterfaceManager().removeTimerInterface();
  134. }
  135.  
  136. /*
  137. * if null, doesnt save the time it done, if not null, saves
  138. */
  139. public void removeTimer(RecordKey key) {
  140. removeTimer(key, false);
  141. }
  142.  
  143. public void increaseKills(RecordKey key, boolean hm) {
  144. if (isActive() || key.hasFastestKill) // shouldnt be used with this if a
  145. // timer boss
  146. return;
  147. BossRecord record = getRecord(key);
  148. if (record == null) {
  149. record = new BossRecord();
  150. this.record.put(key, record);
  151. }
  152. if (key.hasHM && hm)
  153. record.totalHmKills++;
  154. else
  155. record.totalKills++;
  156. sendBossKills();
  157. }
  158.  
  159. public BossRecord getRecord(RecordKey key) {
  160. return record.get(key);
  161. }
  162.  
  163. public void setBeastMenu(int index) {
  164. if (index >= 3 || index < 0)
  165. return;
  166. player.getVarsManager().sendVar(BEAST_MENU_VAR, index);
  167. if (index == 0)
  168. openBossInfo(0);
  169. }
  170.  
  171. // must be sent before
  172. public void sendBossKills() {
  173. BossRecord moleRecord = getRecord(RecordKey.GIANT_MOLE);
  174. player.getVarsManager().sendVarBit(22946, moleRecord != null ? moleRecord.totalKills : 0);
  175. player.getVarsManager().sendVarBit(22947, moleRecord != null ? moleRecord.totalHmKills : 0);
  176. BossRecord kbdRecord = getRecord(RecordKey.KING_BLACK_DRAGON);
  177. player.getVarsManager().sendVarBit(22948, kbdRecord != null ? kbdRecord.totalKills : 0);
  178. BossRecord barrowsRecord = getRecord(RecordKey.THE_BARROWS_BROTHERS);
  179. player.getVarsManager().sendVarBit(22949, barrowsRecord != null ? barrowsRecord.totalKills : 0);
  180. BossRecord chaosElementalRecord = getRecord(RecordKey.CHAOS_ELEMENTAL);
  181. player.getVarsManager().sendVarBit(22950, chaosElementalRecord != null ? chaosElementalRecord.totalKills : 0);
  182. BossRecord kalphiteQueenRecord = getRecord(RecordKey.KALPHITE_QUEEN);
  183. player.getVarsManager().sendVarBit(22951, kalphiteQueenRecord != null ? kalphiteQueenRecord.totalKills : 0);
  184. BossRecord fightCavesRecord = getRecord(RecordKey.FIGHT_CAVES);
  185. player.getVarsManager().sendVarBit(22952, fightCavesRecord != null ? fightCavesRecord.totalKills : 0);
  186. BossRecord corperealBeastRecord = getRecord(RecordKey.CORPOREAL_BEAST);
  187. player.getVarsManager().sendVarBit(22953, corperealBeastRecord != null ? corperealBeastRecord.totalKills : 0);
  188. BossRecord draganothKingsRecord = getRecord(RecordKey.DAGANNOTH_KINGS);
  189. player.getVarsManager().sendVarBit(22954, draganothKingsRecord != null ? draganothKingsRecord.totalKills : 0);
  190. BossRecord qbdRecord = getRecord(RecordKey.QUEEN_BLACK_DRAGON);
  191. player.getVarsManager().sendVarBit(22955, qbdRecord != null ? qbdRecord.totalKills : 0);
  192. BossRecord czRecord = getRecord(RecordKey.COMMANDER_ZILYANA);
  193. player.getVarsManager().sendVarBit(22956, czRecord != null ? czRecord.totalKills : 0);
  194. player.getVarsManager().sendVarBit(22957, czRecord != null ? czRecord.totalHmKills : 0);
  195. BossRecord generalGraadorRecord = getRecord(RecordKey.GENERAL_GRAARDOR);
  196. player.getVarsManager().sendVarBit(22958, generalGraadorRecord != null ? generalGraadorRecord.totalKills : 0);
  197. player.getVarsManager().sendVarBit(22959, generalGraadorRecord != null ? generalGraadorRecord.totalHmKills : 0);
  198. BossRecord kreeAraRecord = getRecord(RecordKey.KREE_ARRA);
  199. player.getVarsManager().sendVarBit(22960, kreeAraRecord != null ? kreeAraRecord.totalKills : 0);
  200. player.getVarsManager().sendVarBit(22961, kreeAraRecord != null ? kreeAraRecord.totalHmKills : 0);
  201. BossRecord krilTsutsarothRecord = getRecord(RecordKey.KRIL_TSUTSAROTH);
  202. player.getVarsManager().sendVarBit(22962, krilTsutsarothRecord != null ? krilTsutsarothRecord.totalKills : 0);
  203. player.getVarsManager().sendVarBit(22963, krilTsutsarothRecord != null ? krilTsutsarothRecord.totalHmKills : 0);
  204. BossRecord kilnRecord = getRecord(RecordKey.FIGHT_KILN);
  205. player.getVarsManager().sendVarBit(22964, kilnRecord != null ? kilnRecord.totalKills : 0);
  206. BossRecord kalphiteKingRecord = getRecord(RecordKey.KALPHITE_KING);
  207. player.getVarsManager().sendVarBit(22965, kalphiteKingRecord != null ? kalphiteKingRecord.totalKills : 0);
  208. BossRecord legionesRecord = getRecord(RecordKey.LEGIONES);
  209. player.getVarsManager().sendVarBit(22966, legionesRecord != null ? legionesRecord.totalKills : 0);
  210. BossRecord nexRecord = getRecord(RecordKey.NEX);
  211. player.getVarsManager().sendVarBit(22967, nexRecord != null ? nexRecord.totalKills : 0);
  212. BossRecord riseOfTheSixRecord = getRecord(RecordKey.THE_BARROWS_RISE_OF_THE_FIX);
  213. player.getVarsManager().sendVarBit(22968, riseOfTheSixRecord != null ? riseOfTheSixRecord.totalKills : 0);
  214. BossRecord araxxiRecord = getRecord(RecordKey.ARAXXI);
  215. player.getVarsManager().sendVarBit(22969, araxxiRecord != null ? araxxiRecord.totalKills : 0);
  216. BossRecord voragoRecord = getRecord(RecordKey.VORAGO);
  217. player.getVarsManager().sendVarBit(22970, voragoRecord != null ? voragoRecord.totalKills : 0);
  218. player.getVarsManager().sendVarBit(22971, voragoRecord != null ? voragoRecord.totalHmKills : 0);
  219.  
  220. }
  221.  
  222. // TODO tracking at slayer itself
  223. public void sendSlayerCreatureKills() {
  224. player.getVarsManager().sendVarBit(22921, 0);// Terror Dogs
  225. player.getVarsManager().sendVarBit(22922, 0);// Bloodvields
  226. player.getVarsManager().sendVarBit(22923, 0);// Warped Tort
  227. player.getVarsManager().sendVarBit(22924, 0);// Abberant Specters
  228. player.getVarsManager().sendVarBit(22925, 0);// Dust Devils
  229. player.getVarsManager().sendVarBit(22926, 0);// Automations
  230. player.getVarsManager().sendVarBit(22927, 0);// Skeletal Wyverns
  231. player.getVarsManager().sendVarBit(22928, 0);// Jungle StykeWyrms
  232. player.getVarsManager().sendVarBit(22929, 0);// Aquanites
  233. player.getVarsManager().sendVarBit(22930, 0);// Nechraels
  234. player.getVarsManager().sendVarBit(22931, 0);// Mutated Jadinkos
  235. player.getVarsManager().sendVarBit(22932, 0);// Ascension Creatures
  236. player.getVarsManager().sendVarBit(22933, 0);// Polypore Creatures
  237. player.getVarsManager().sendVarBit(22934, 0);// Spiritual Mages
  238. player.getVarsManager().sendVarBit(22935, 0);// Abyssal Demons
  239. player.getVarsManager().sendVarBit(22936, 0);// Dark beasts
  240. player.getVarsManager().sendVarBit(22937, 0);// Airut
  241. player.getVarsManager().sendVarBit(22938, 0);// Ice StykeWyrms
  242. player.getVarsManager().sendVarBit(22939, 0);// Kal'gerion demons
  243. player.getVarsManager().sendVarBit(22940, 0);// Glaciors
  244. player.getVarsManager().sendVarBit(22941, 0);// Tormented Demons
  245. player.getVarsManager().sendVarBit(22942, 0);// Gargoyls
  246. player.getVarsManager().sendVarBit(22943, 0);// Muspha
  247. player.getVarsManager().sendVarBit(22944, 0);// Nihil
  248. player.getVarsManager().sendVarBit(22945, 0);// Desert StykeWyrms
  249. }
  250.  
  251. public void teleportToLodestone() {
  252. if (player.getVarsManager().getValue(BEAST_MENU_VAR) != 0)
  253. return;
  254. RecordKey key = (RecordKey) player.getTemporaryAttributtes().remove(Key.BOSS_INFO);
  255. if (key == null)
  256. return;
  257. player.getInterfaceManager().closeMenu();
  258. player.stopAll();
  259. HomeTeleport.useLodestone(player, key.lodestoneComponent);
  260. }
  261.  
  262. public void openBossInfo(int index) {
  263. if (index >= RecordKey.values().length || index < 0 || player.getVarsManager().getValue(BEAST_MENU_VAR) != 0)
  264. return;
  265.  
  266. RecordKey key = RecordKey.values()[index];
  267.  
  268. player.getTemporaryAttributtes().put(Key.BOSS_INFO, key);
  269.  
  270. BossRecord record = getRecord(key);
  271.  
  272. player.getPackets().sendCSVarInteger(4486, record == null ? 0 : record.totalKills);
  273. player.getPackets().sendCSVarInteger(4487, !key.hasHM ? -1 : record == null ? 0 : record.totalHmKills);
  274. player.getPackets().sendCSVarInteger(4488, !key.hasFastestKill ? -1 : record == null ? 0 : record.fastestKill);
  275.  
  276. GeneralRequirementMap data = GeneralRequirementMap.getMap(ClientScriptMap.getMap(9031).getIntValue(index));
  277. player.getPackets()
  278. .sendCSVarInteger(4484, NPCDefinitions.getNPCDefinitions(data.getIntValue(1347)).renderEmote);
  279. player.getPackets().sendCSVarInteger(4485, data.getId());
  280. }
  281.  
  282. // ignore this. not related to code. only use removetimer and sendtimer
  283. // methods
  284. public void showTimer() {
  285. if (!isActive()) // shouldnt happen unless u open inter manualy
  286. return;
  287.  
  288. player.getPackets().sendExecuteScript(720);
  289. player.getPackets().sendCSVarInteger(4258, currentTime * 30);
  290. }
  291.  
  292. }
Add Comment
Please, Sign In to add comment