Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.33 KB | None | 0 0
  1. package org.rs2server.asgarnia.content;
  2.  
  3. import org.rs2server.asgarnia.event.Event;
  4. import org.rs2server.asgarnia.model.ItemDefinition;
  5. import org.rs2server.asgarnia.model.World;
  6. import org.rs2server.asgarnia.model.player.Player;
  7.  
  8. public class Consumables {
  9.  
  10.     public Consumables() {
  11.        
  12.     }
  13.    
  14.     public static final int[][] FOOD = {
  15.         {
  16.             319, 2142, 315, 2140, 2309, 325, 347, 2325, 333, 351,
  17.             2327, 329, 2003, 361, 2323, 2289, 379, 1891, 373, 2293,
  18.             1897, 2297, 3151, 3146, 3228, 7072, 355, 7062, 3363, 7078,
  19.             3365, 339, 3367, 7064, 3379, 7088, 7170, 2878, 3144, 7530,
  20.             7178, 5003, 7568, 7054, 7084, 365, 7082, 7188, 1985, 2343,
  21.             2149, 7066, 1885, 2011, 7058, 7056, 2301, 7068, 7060, 7198,
  22.             385, 397, 7208, 391, 7218, 1942, 1957, 1965, 1982, 5504, 1963,
  23.             2108, 2114, 5972
  24.         }, {
  25.             -1, -1, -1, -1, -1, -1, -1, 2333, -1, -1,
  26.             2331, -1, 1923, -1, 2335, 2291, -1, 1893, -1, 2295,
  27.             1899, 2299, -1, -1, -1, 1923, -1, 1923, -1, 1923,
  28.             -1, -1, -1, 1923, -1, -1, 2313, -1, -1, -1,
  29.             7180, -1, -1, -1, 1923, -1, 1923, 7190, -1, -1,
  30.             -1, 1923, -1, 1923, -1, -1, 2303, 1923, -1, 7200,
  31.             -1, -1, 7210, -1, 7220, -1, -1, -1, -1, -1, -1,
  32.             -1, -1, -1
  33.         }, {
  34.             -1, -1, -1, -1, -1, -1, -1, 2313, -1, -1,
  35.             2313, -1, -1, -1, 2313, -1, -1, 1895, -1, -1,
  36.             1901, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  37.             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  38.             2313, -1, -1, -1, -1, -1, -1, 2313, -1, -1,
  39.             -1, -1, -1, -1, -1, -1, -1, -1, -1, 2313,
  40.             -1, -1, 2313, -1, 2313, -1, -1, -1, -1, -1, -1,
  41.             -1, -1, -1
  42.         }
  43.     };
  44.    
  45.     public static final int[] FOOD_HEAL = {
  46.         1, 3, 3, 3, 5, 4, 5, 5, 7, 8,
  47.         12, 9, 11, 10, 7, 7, 12, 4, 14, 8,
  48.         5, 9, 3, 0, 5, 2, 6, 5, 5, 5,
  49.         6, 7, 8, 8, 8, 5, 0, 10, 18, 11,
  50.         6, 8, 15, 14, 5, 13, 5, 6, 2, 14,
  51.         11, 11, 19, 19, 20, 16, 11, 13, 22, 8,
  52.         20, 21, 10, 22, 10, 1, 1, 1, 2, 1, 3,
  53.         2, 2, 2, 8
  54.     };
  55.    
  56.     public static final int[][] POTIONS = {
  57.         {125, 179, 119, 131, 3014, 137, 3038, 9745, 143, 12146, 149, 185, 155, 3022, 10004, 161, 3030, 167, 2458, 173, 3046, 193, 6691}, // 1 dose
  58.         {123, 177, 117, 129, 3012, 135, 3036, 9743, 141, 12144, 147, 183, 153, 3020, 10002, 159, 3028, 165, 2456, 171, 3044, 191, 6689}, // 2 dose
  59.         {121, 175, 115, 127, 3010, 133, 3034, 9741, 139, 12142, 145, 181, 151, 3018, 10000, 157, 3026, 163, 2454, 169, 3042, 189, 6687}, // 3 dose
  60.         {2428, 2446, 113, 2430, 3008, 2432, 3032, 9739, 2434, 12140, 2436, 2448, 2438, 3016, 9998, 2440, 3024, 2442, 2452, 2444, 3040, 2450, 6685} // 4 dose
  61.     };
  62.    
  63.     public static boolean isEating(Player p, int item, int slot) {
  64.         for (int i = 0; i < FOOD.length; i++) {
  65.             for (int j = 0; j < FOOD[i].length; j++) {
  66.                 if (item == FOOD[i][j]) {
  67.                     eatFood(p, i, j, slot);
  68.                     return true;
  69.                 }
  70.             }
  71.         }
  72.         for (int i = 0; i < POTIONS.length; i++) {
  73.             for (int j = 0; j < POTIONS[i].length; j++) {
  74.                 if (item == POTIONS[i][j]) {
  75.                     drinkPotion(p, i, j, slot);
  76.                     return true;
  77.                 }
  78.             }
  79.         }
  80.         return false;
  81.     }
  82.  
  83.     private static void drinkPotion(final Player p, final int i, final int j, final int slot) {
  84.         //TODO antipoisons/antifire
  85.         int lastPotion = -1;
  86.         int delay = 500;
  87.         long lastDrink = 0;
  88.         if (p.isDead() || p.getTemporaryAttribute("willDie") != null) {
  89.             return;
  90.         }
  91.         if (p.getDuel() != null) {
  92.             if (p.getDuel().ruleEnabled(5))  {
  93.                 p.getActionSender().sendMessage("Drinks have been disabled for this duel!");
  94.                 return;
  95.             }
  96.         }
  97.         if (p.getTemporaryAttribute("lastDrankPotion") != null) {
  98.             lastPotion = (Integer) p.getTemporaryAttribute("lastDrankPotion");
  99.         }
  100.         if (p.getTemporaryAttribute("drinkPotionTimer") != null) {
  101.             lastDrink = (Long) p.getTemporaryAttribute("drinkPotionTimer");
  102.         }
  103.         int time = (j == lastPotion) ? 1000 : 500;
  104.         if (System.currentTimeMillis() - lastDrink < time) {
  105.             return;
  106.         }
  107.         p.getActionSender().closeInterfaces();
  108.         p.setTemporaryAttribute("drinkPotionTimer", System.currentTimeMillis());
  109.         p.setTemporaryAttribute("lastDrankPotion", j);
  110.         p.setTarget(null);
  111.         p.resetCombatTurns();
  112.         p.setEntityFocus(65535);
  113.         p.removeTemporaryAttribute("autoCasting");
  114.         if (j == 22) {
  115.             p.getLevels().setTempHealth(p.getLevels().getLevel(3) + statBoost(p, 3, 0.17, false));
  116.         }
  117.         World.getInstance().registerEvent(new Event(delay) {
  118.             @Override
  119.             public void execute() {
  120.                 int newLevel;          
  121.                 this.stop();
  122.                 if (p.isDead() || p.getLevels().getLevel(3) <= 0) {
  123.                     return;
  124.                 }
  125.                 int item = i != 0 && POTIONS[i - 1][j] != -1 ? POTIONS[i - 1][j] : 229;
  126.                 if (!p.getInventory().replaceItemSlot(POTIONS[i][j],  item, slot)) {
  127.                     return;
  128.                 }
  129.                 switch(j) {
  130.                     case 0:
  131.                         statBoost(p, 0, 0.125, false);
  132.                         break;
  133.                        
  134.                     case 1: // anti poison
  135.                         p.setPoisonAmount(0);
  136.                         break;
  137.                        
  138.                     case 2:
  139.                         statBoost(p, 2, 0.125, false);
  140.                         break;
  141.                        
  142.                     case 3:
  143.                         for (int k = 0; k < 25; k++) {
  144.                             p.getLevels().setLevel(k, p.getLevels().getLevelForXp(k));
  145.                         }
  146.                         break;
  147.                        
  148.                     case 4:
  149.                         p.setRunEnergy(p.getRunEnergy() + 10);
  150.                         if (p.getRunEnergy() >= 100) {
  151.                             p.setRunEnergy(100);
  152.                         }
  153.                         break;
  154.                        
  155.                     case 5:
  156.                         statBoost(p, 1, 0.125, false);
  157.                         break;
  158.                        
  159.                     case 6:
  160.                         if (p.getLevels().getLevel(16) < (p.getLevels().getLevelForXp(16) + 3)) {
  161.                             p.getLevels().setLevel(16, p.getLevels().getLevel(16) + 3);
  162.                         }
  163.                         break;
  164.                        
  165.                     case 7:
  166.                         statBoost(p, 0, 0.125, false);
  167.                         statBoost(p, 2, 0.125, false);
  168.                         break;
  169.                        
  170.                     case 8:
  171.                         newLevel = p.getLevels().getLevel(5) + (int)Math.round((double)p.getLevels().getLevelForXp(5) / 3 - 2);
  172.                         if (p.getLevels().getLevel(5) < newLevel) {
  173.                             p.getLevels().setLevel(5, newLevel);
  174.                             checkOverdose(p, 5);
  175.                         }
  176.                         break;
  177.                        
  178.                     case 9:
  179.                         newLevel = p.getLevels().getLevel(23) + (int)Math.round((double)p.getLevels().getLevelForXp(23) / 3 - 2);
  180.                         if (p.getLevels().getLevel(23) < newLevel) {
  181.                             p.getLevels().setLevel(23, newLevel);
  182.                         }
  183.                         break;
  184.                        
  185.                     case 10:
  186.                         statBoost(p, 0, 0.20, false);
  187.                         break;
  188.                        
  189.                     case 11: // super antipoison
  190.                         p.setPoisonAmount(0);
  191.                         p.getSettings().setSuperAntipoisonCycles(20);
  192.                         break;
  193.                        
  194.                     case 12:
  195.                         if (p.getLevels().getLevel(10) < (p.getLevels().getLevelForXp(10) + 3)) {
  196.                             p.getLevels().setLevel(10, p.getLevels().getLevel(10) + 3);
  197.                         }
  198.                         break;
  199.                        
  200.                     case 13:
  201.                         p.setRunEnergy(p.getRunEnergy() + 20);
  202.                         if (p.getRunEnergy() >= 100) {
  203.                             p.setRunEnergy(100);
  204.                         }
  205.                         break;
  206.                        
  207.                     case 14:
  208.                         if (p.getLevels().getLevel(21) < (p.getLevels().getLevelForXp(21) + 3)) {
  209.                             p.getLevels().setLevel(21, p.getLevels().getLevel(21) + 3);
  210.                         }
  211.                         break;
  212.                        
  213.                     case 15:
  214.                         statBoost(p, 2, 0.20, false);
  215.                         break;
  216.                        
  217.                     case 16:
  218.                         superRestore(p, 5, 0.33);
  219.                         superRestore(p, 1, 0.33);
  220.                         superRestore(p, 2, 0.33);
  221.                         superRestore(p, 0, 0.33);
  222.                         superRestore(p, 4, 0.33);
  223.                         superRestore(p, 6, 0.33);
  224.                         break;
  225.                        
  226.                     case 17:
  227.                         statBoost(p, 1, 0.20, false);
  228.                         break;
  229.                        
  230.                     case 18: // antifire
  231.                         p.getSettings().setAntifireCycles(20);
  232.                         break;
  233.                        
  234.                     case 19:
  235.                         statBoost(p, 4, 0.135, false);
  236.                         break;
  237.                        
  238.                     case 20:
  239.                         if (p.getLevels().getLevel(6) < (p.getLevels().getLevelForXp(6) + 4)) {
  240.                             p.getLevels().setLevel(6, p.getLevels().getLevel(6) + 4);
  241.                         }
  242.                         break;
  243.                        
  244.                     case 21:
  245.                         statBoost(p, 2, 0.14, false);
  246.                         statBoost(p, 0, 0.22, false);
  247.                         statBoost(p, 1, 0.106, true);
  248.                         statBoost(p, 3, 0.106, true);
  249.                         break;
  250.            
  251.                     case 22:
  252.                         statBoost(p, 3, 0.17, false);
  253.                         statBoost(p, 1, 0.22, false);
  254.                         statBoost(p, 2, 0.09, true);
  255.                         statBoost(p, 0, 0.09, true);
  256.                         statBoost(p, 4, 0.09, true);
  257.                         statBoost(p, 6, 0.09, true);
  258.                         break;
  259.                 }
  260.                 p.animate(829);
  261.                 p.getActionSender().sendSkillLevels();
  262.             }
  263.         });
  264.     }      
  265.  
  266.     private static void eatFood(final Player p, final int i, final int j, final int slot) {
  267.         int delay = 500;
  268.         if (p.isDead() || p.getLevels().getLevel(3) <= 0 || p.getTemporaryAttribute("willDie") != null) {
  269.             return;
  270.         }
  271.         if (p.getTemporaryAttribute("eatFoodTimer") != null) {
  272.             if (System.currentTimeMillis() - (Long) p.getTemporaryAttribute("eatFoodTimer") < 1200) {
  273.                 return;
  274.             }
  275.         }
  276.         if (p.getDuel() != null) {
  277.             if (p.getDuel().ruleEnabled(6))  {
  278.                 p.getActionSender().sendMessage("Food has been disabled for this duel!");
  279.                 return;
  280.             }
  281.         }
  282.         p.setTemporaryAttribute("eatFoodTimer", System.currentTimeMillis());
  283.         p.setTarget(null);
  284.         p.resetCombatTurns();
  285.         p.setEntityFocus(65535);
  286.         p.getActionSender().closeInterfaces();
  287.         p.removeTemporaryAttribute("autoCasting");
  288.         p.getLevels().setTempHealth(p.getLevels().getLevel(3) + FOOD_HEAL[j]);
  289.         World.getInstance().registerEvent(new Event(delay) {
  290.             @Override
  291.             public void execute() {
  292.                 this.stop();
  293.                 if (p.isDead() || p.getLevels().getLevel(3) <= 0) {
  294.                     return;
  295.                 }
  296.                 int newHealth = p.getLevels().getLevel(3) + FOOD_HEAL[j];
  297.                 int item = i != 2 && FOOD[i + 1][j] != -1 ? FOOD[i + 1][j] : -1;
  298.                 if (!p.getInventory().replaceItemSlot(FOOD[i][j],  item, slot)) {
  299.                     return;
  300.                 }
  301.                 p.getActionSender().sendMessage("You eat the " + ItemDefinition.forId(FOOD[i][j]).getName().toLowerCase() + ".");
  302.                 p.getLevels().setLevel(3, newHealth > p.getLevels().getLevelForXp(3) ? p.getLevels().getLevelForXp(3) : newHealth);
  303.                 p.animate(829);
  304.                 p.getActionSender().sendSkillLevel(3);
  305.             }
  306.         });
  307.     }
  308.    
  309.     public static int statBoost(Player p, int i, double j, boolean decreaseStat) {
  310.         if (!decreaseStat) {
  311.             double d = (double)p.getLevels().getLevelForXp(i) + (double)p.getLevels().getLevelForXp(i) * j;
  312.             double d1 = (double)p.getLevels().getLevel(i) + (double)p.getLevels().getLevelForXp(i) * j;
  313.             if (p.getLevels().getLevelForXp(i) == 1) {
  314.                 d1 = d = p.getLevels().getLevelForXp(i) + d;
  315.             }
  316.             if(d1 > d) {
  317.                 d1 = d;
  318.             }
  319.             p.getLevels().setLevel(i, (int)d1);
  320.             return (int) d1;
  321.         }
  322.         if (decreaseStat) {
  323.             double d2 = (double)p.getLevels().getLevelForXp(i) * j;
  324.             p.getLevels().setLevel(i, p.getLevels().getLevel(i) - (int)d2);
  325.             if (p.getLevels().getLevel(i) <= 0) {
  326.                 p.getLevels().setLevel(i, 1);
  327.             }
  328.         }
  329.         return 0;
  330.     }
  331.    
  332.     public static void superRestore(Player p, int i, double j) {
  333.         double d = (double)p.getLevels().getLevelForXp(i) * j;
  334.         if(p.getLevels().getLevel(i) == p.getLevels().getLevelForXp(i) * j) {
  335.             return;
  336.         }
  337.         if (p.getLevels().getLevel(i) >= p.getLevels().getLevelForXp(i)) {
  338.             return;
  339.         }
  340.         p.getLevels().setLevel(i, p.getLevels().getLevel(i) + (int)d);
  341.         checkOverdose(p, i);
  342.         if (p.getLevels().getLevel(i) <= 0) {
  343.             p.getLevels().setLevel(i, 1);
  344.         }
  345.     }
  346.    
  347.     public static void checkOverdose(Player p, int i) {
  348.         if (p.getLevels().getLevel(i) >=  p.getLevels().getLevelForXp(i)) {
  349.             p.getLevels().setLevel(i, p.getLevels().getLevelForXp(i));
  350.         }
  351.     }
  352.        
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement