Guest User

Woodcutting.java

a guest
Jan 29th, 2012
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.84 KB | None | 0 0
  1. package server.model.players.skills;
  2.  
  3. import server.model.players.*;
  4. import server.Server;
  5. import server.Config;
  6. import server.util.Misc;
  7.  
  8. /**
  9. * @Recoded by Xaero
  10. */
  11.  
  12. public class Woodcutting {
  13.  
  14. Client c;
  15.  
  16. private final int VALID_AXE[] = {1351,1349,1353,1361,1355,1357,1359,6739};
  17. private final int[] AXE_REQS = {1,1,6,6,21,31,41,61};
  18. private int logType;
  19. private int exp;
  20. private int levelReq;
  21. private int axeType;
  22. private int treeType;
  23. private int counts = 0;
  24. private int logsLeft;
  25. private boolean allowLogs = false;
  26. private boolean firstEmote = false;
  27. public final int EMOTES[] = {879,877,875,873,871,869,867,2846};
  28. private final int maxLogsInOneTree = 25;
  29. private final int treeRespawnTimer = 5;//seconds
  30.  
  31. public Woodcutting(Client c) {
  32. this.c = c;
  33. }
  34.  
  35. public void startWoodcutting(int logType, int levelReq, int exp) {
  36. if (c.getItems().freeSlots() > 0) {
  37. if (goodAxe() > 0) {
  38. if (c.playerLevel[c.playerWoodcutting] >= levelReq) {
  39. this.logType = logType;
  40. this.exp = exp;
  41. this.levelReq = levelReq;
  42. this.axeType = goodAxe();
  43. this.treeType = c.objectId;
  44. this.logsLeft = 1 + Misc.random(maxLogsInOneTree - 1);
  45. c.wcTimer = getWcTimer();
  46. c.cuttingTree = true;
  47. this.firstEmote = true;
  48. c.wcEmoteDelay = System.currentTimeMillis();
  49. c.sendMessage("You swing your axe at the tree.");
  50. c.turnPlayerTo(c.objectX, c.objectY);
  51. } else {
  52. c.getPA().resetVariables();
  53. c.startAnimation(65535);
  54. c.sendMessage("You need a woodcutting level of " + levelReq + " to cut this tree.");
  55. }
  56. } else {
  57. c.startAnimation(65535);
  58. c.sendMessage("You don't have an axe which you have the Woodcutting level to use.");
  59. c.getPA().resetVariables();
  60. }
  61. } else {
  62. c.sendMessage("Not enough space in your inventory.");
  63. c.turnPlayerTo(c.objectX, c.objectY);
  64. resetWoodcut();
  65. }
  66. }
  67.  
  68. public void resetWoodcut() {
  69. this.logType = -1;
  70. this.exp = -1;
  71. this.levelReq = -1;
  72. this.axeType = -1;
  73. c.wcTimer = -1;
  74. c.cuttingTree = false;
  75. this.firstEmote = false;
  76. this.allowLogs = false;
  77. this.counts = 0;
  78. }
  79.  
  80. public void cutWood() {
  81. if(this.allowLogs){
  82. if (c.getItems().addItem(logType,1)) {
  83. this.logsLeft--;
  84. c.sendMessage("You get some " + getTreeName(treeType) + " logs.");
  85. c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);
  86. c.getPA().refreshSkill(c.playerWoodcutting);
  87. c.wcTimer = getWcTimer();
  88. if(this.logsLeft == 0){
  89. spawnStump();
  90. }
  91. } else {
  92. c.getPA().resetVariables();
  93. resetWoodcut();
  94. }
  95. }
  96. }
  97.  
  98. public void spawnStump(){
  99. int stump = getStump();
  100. int stumpx = c.objectX;
  101. int stumpy = c.objectY;
  102. for(int i = 0; i < Server.playerHandler.players.length; i++){
  103. Client all = (Client)Server.playerHandler.players[i];
  104. if(all != null){
  105. all.getPA().object(stump, stumpx, stumpy, 0, 10);
  106. }
  107. }
  108. int slot = getFreeRespawnSlot();
  109. Server.trees[slot] = new TreeRespawn(slot);
  110. Server.trees[slot].respawnDelay = System.currentTimeMillis();
  111. Server.trees[slot].respawnTimer = treeRespawnTimer;
  112. Server.trees[slot].respawnRequired = true;
  113. Server.trees[slot].respawnTree = c.objectId;
  114. Server.trees[slot].respawnX = c.objectX;
  115. Server.trees[slot].respawnY = c.objectY;
  116. Server.trees[slot].stumpId = stump;
  117. Server.trees[slot].stumpX = stumpx;
  118. Server.trees[slot].stumpY = stumpy;
  119. Server.treesToRespawn.add(slot);
  120. Server.treesToRespawn2 = Server.convertIntegers(Server.treesToRespawn);
  121. for(int i = 0; i < Server.playerHandler.players.length; i++){
  122. Client all = (Client)Server.playerHandler.players[i];
  123. if(all != null){
  124. if(all.objectX == Server.trees[slot].respawnX && all.objectY == Server.trees[slot].respawnY){
  125. all.getPA().resetVariables();
  126. all.getWoodcutting().resetWoodcut();
  127. }
  128. }
  129. }
  130. c.startAnimation(65535);
  131. }
  132.  
  133. public int getFreeRespawnSlot(){
  134. for(int i = 0; i < Server.trees.length; i++){
  135. if(Server.trees[i] == null){
  136. return i;
  137. }
  138. }
  139. return -1;
  140. }
  141.  
  142. public int getStump(){
  143. switch(c.objectId){
  144. case 1276:
  145. case 1278://trees
  146. return 1342;
  147. case 1281: //oak
  148. return 1355;
  149. case 1308: //willow
  150. return 7399;
  151. case 1307: //maple
  152. return 7400;
  153. case 1309: //yew
  154. return 7402;
  155. case 1306: //magic
  156. return 7401;
  157. }
  158. return 6212;
  159. }
  160.  
  161. public int goodAxe() {
  162. for (int j = VALID_AXE.length - 1; j >= 0; j--) {
  163. if (c.playerEquipment[c.playerWeapon] == VALID_AXE[j]) {
  164. if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
  165. return VALID_AXE[j];
  166. }
  167. }
  168. for (int i = 0; i < c.playerItems.length; i++) {
  169. for (int j = VALID_AXE.length - 1; j >= 0; j--) {
  170. if (c.playerItems[i] == VALID_AXE[j] + 1) {
  171. if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
  172. return VALID_AXE[j];
  173. }
  174. }
  175. }
  176. return - 1;
  177. }
  178.  
  179. public int getWcTimer() {
  180. int aType = getAxeSlot(this.axeType) + 1;
  181. int tType = getTreeRate(this.treeType);
  182. int lvlRate = (c.playerLevel[c.playerWoodcutting] / 10) / 2;
  183. int time = Misc.random(13 - aType - lvlRate + tType);
  184. return time;
  185. }
  186.  
  187. public void wcProcesses(){
  188. startEmote();
  189. if(c.cuttingTree && this.firstEmote == false){
  190. if(System.currentTimeMillis() - c.wcEmoteDelay < 2000){
  191. return;
  192. }
  193. if(c.isMoving == false){
  194. c.startAnimation(this.EMOTES[getAxeSlot(this.axeType)]);
  195. c.turnPlayerTo(c.objectX, c.objectY);
  196. c.wcEmoteDelay = System.currentTimeMillis();
  197. if(this.allowLogs == false){
  198. this.allowLogs = true;
  199. }
  200. }
  201. }
  202. }
  203.  
  204.  
  205. public void startEmote(){
  206. if(c.cuttingTree && this.firstEmote == true){
  207. if(c.isMoving == false && this.counts == 0){
  208. this.counts++;
  209. return;
  210. }
  211. if(c.isMoving){
  212. return;
  213. }
  214. c.startAnimation(EMOTES[getAxeSlot(this.axeType)]);
  215. c.turnPlayerTo(c.objectX, c.objectY);
  216. this.counts = 0;
  217. c.wcEmoteDelay = System.currentTimeMillis();
  218. this.firstEmote = false;
  219. }
  220. }
  221.  
  222. public int getAxeSlot(int type){
  223. for(int a = 0; a < VALID_AXE.length; a++){
  224. if(VALID_AXE[a] == type){
  225. return a;
  226. }
  227. }
  228. return -1;
  229. }
  230.  
  231.  
  232. public int getTreeRate(int type){
  233. switch(type){
  234. case 1276:
  235. case 1278://trees
  236. return 1;
  237. case 1281: //oak
  238. return 2;
  239. case 1308: //willow
  240. return 3;
  241. case 1307: //maple
  242. return 4;
  243. case 1309: //yew
  244. return 5;
  245. case 1306: //magic
  246. return 6;
  247. }
  248. return 0;
  249. }
  250.  
  251. public String getTreeName(int type){
  252. switch(type){
  253. case 1276:
  254. case 1278://trees
  255. return "tree";
  256. case 1281: //oak
  257. return "oak";
  258. case 1308: //willow
  259. return "willow";
  260. case 1307: //maple
  261. return "maple";
  262. case 1309: //yew
  263. return "yew";
  264. case 1306: //magic
  265. return "magic";
  266. }
  267. return "";
  268. }
  269.  
  270. }
Advertisement
Add Comment
Please, Sign In to add comment