Authenticity improvement for cooking burn rates
This commit is contained in:
@@ -6,148 +6,164 @@ import core.game.node.item.Item;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public enum CookableItems {
|
public enum CookableItems {
|
||||||
/** meats */
|
// meats
|
||||||
CHICKEN(2140,2138,2144,1,30,34,128,512),
|
CHICKEN(2140, 2138, 2144, 1, 30, 128, 512, 128, 512),
|
||||||
UGTHANKI(2140,2138,2144,1,40,100,0,512),
|
UGTHANKI(2140, 2138, 2144, 1, 40, 40, 252, 30, 253),
|
||||||
RABBIT(3228,3226,7222,1,30,34,128,512),
|
RABBIT(3228, 3226, 7222, 1, 30, 128, 512, 128, 512),
|
||||||
CRAB(7521, 7518, 7520,21, 100, 62,85,438),
|
CRAB(7521, 7518, 7520, 21, 100, 57, 377, 57, 377),
|
||||||
|
|
||||||
/** fish */
|
// fish
|
||||||
CRAYFISH(13433, 13435, 13437,1, 30, 34,128,512),
|
CRAYFISH(13433, 13435, 13437, 1, 30, 128, 512, 128, 512),
|
||||||
SHRIMP(315, 317, 7954,1, 30, 34,128,512),
|
SHRIMP(315, 317, 7954, 1, 30, 128, 512, 128, 512),
|
||||||
KARAMBWANJI(3151, 3150, 592,1, 10, 28,128,512),
|
KARAMBWANJI(3151, 3150, 592, 1, 10, 200, 400, 200, 400),
|
||||||
SARDINE(325, 327, 369,1, 40, 38,118,492),
|
SARDINE(325, 327, 369, 1, 40, 118, 492, 118, 492),
|
||||||
ANCHOVIES(319, 321, 323,1, 30, 34,128,512),
|
ANCHOVIES(319, 321, 323, 1, 30, 128, 512, 128, 512),
|
||||||
HERRING(347, 345, 357,5, 50, 41,108,472),
|
HERRING(347, 345, 357, 5, 50, 108, 472, 108, 472),
|
||||||
MACKEREL(355, 353, 357,10, 60, 45,98,452),
|
MACKEREL(355, 353, 357, 10, 60, 98, 452, 98, 452),
|
||||||
TROUT(333, 335, 343,15, 70, 50,88,432),
|
TROUT(333, 335, 343, 15, 70, 88, 432, 88, 432),
|
||||||
COD(339, 341, 343,18, 75, 52,74,420),
|
COD(339, 341, 343, 18, 75, 83, 422, 88, 432),
|
||||||
PIKE(351, 349, 343,20, 80, 53,78,412),
|
PIKE(351, 349, 343, 20, 80, 78, 412, 78, 412),
|
||||||
SALMON(329, 331, 343,25, 90, 58,68,392),
|
SALMON(329, 331, 343, 25, 90, 68, 392, 68, 392),
|
||||||
SLIMY_EEL(3381, 3379, 3383,28, 95, 58,72,406),
|
SLIMY_EEL(3381, 3379, 3383, 28, 95, 63, 382, 63, 382),
|
||||||
TUNA(361, 359, 367,30, 100, 65,58,372),
|
TUNA(361, 359, 367, 30, 100, 58, 372, 58, 372),
|
||||||
RAINBOW_FISH(10136, 10138, 10140,35, 110, 60,48,387),
|
RAINBOW_FISH(10136, 10138, 10140, 35, 110, 56, 370, 56, 370),
|
||||||
CAVE_EEL(5003, 5001, 5002,38, 115, 74,42,386),
|
CAVE_EEL(5003, 5001, 5002, 38, 115, 38, 332, 38, 332),
|
||||||
LOBSTER(379, 377, 381,40, 120, 74,38,332),
|
LOBSTER(379, 377, 381, 40, 120, 38, 332, 38, 332),
|
||||||
BASS(365, 363, 367,43, 130, 79,28,312),
|
BASS(365, 363, 367, 43, 130, 33, 312, 33, 312),
|
||||||
SWORDFISH(373, 371, 375,45, 140, 86,18,292),
|
SWORDFISH(373, 371, 375, 45, 140, 18, 292, 30, 310),
|
||||||
LAVA_EEL(2149, 2148, 3383,53, 30, 53,12,282),
|
LAVA_EEL(2149, 2148, 3383, 53, 30, 256, 256, 256, 256), // never burn
|
||||||
MONKFISH(7946, 7944, 7948,62, 150, 92,11,275),
|
MONKFISH(7946, 7944, 7948, 62, 150, 11, 275, 13, 280),
|
||||||
SHARK(385, 383, 387,80, 210, 100,0,202),
|
SHARK(385, 383, 387, 80, 210, 1, 202, 1, 232),
|
||||||
SEA_TURTLE(397, 395, 399,82, 212, 100,0,202),
|
SEA_TURTLE(397, 395, 399, 82, 212, 1, 202, 1, 222),
|
||||||
MANTA_RAY(391, 389, 393,91, 216, 100,0,202),
|
MANTA_RAY(391, 389, 393, 91, 216, 1, 202, 1, 222),
|
||||||
KARAMBWAN(3144, 3142, 3146,30, 190, 100,0,255),
|
KARAMBWAN(3144, 3142, 3146, 30, 190, 70, 255, 70, 255),
|
||||||
|
|
||||||
/** snails */
|
// snails
|
||||||
THIN_SNAIL(3369, 3363, 3375,12, 70, 47,109,502),
|
THIN_SNAIL(3369, 3363, 3375, 12, 70, 93, 444, 93, 444),
|
||||||
LEAN_SNAIL(3371, 3365, 3375,17, 80, 50,100,486),
|
LEAN_SNAIL(3371, 3365, 3375, 17, 80, 85, 428, 93, 444),
|
||||||
FAT_SNAIL(3373, 3367, 3375,22, 95, 56,95,456),
|
FAT_SNAIL(3373, 3367, 3375, 22, 95, 73, 402, 73, 402),
|
||||||
|
|
||||||
//Bread
|
// bread
|
||||||
BREAD(2309, 2307, 2311,1,40,37,118,492),
|
BREAD(2309, 2307, 2311, 1, 40, 0, 0, 118, 492),
|
||||||
|
|
||||||
//Cake
|
// cake
|
||||||
CAKE(1891, 1889, 1903, 40, 180, 74,38,332),
|
CAKE(1891, 1889, 1903, 40, 180, 0, 0, 38, 332),
|
||||||
|
|
||||||
//Beef(s) (Rat, Bear, Cow, Yak)
|
// beef(s) (rat, bear, cow, yak)
|
||||||
BEEF(2142,2132,2146,1,30,34,128,512),
|
BEEF(2142, 2132, 2146, 1, 30, 128, 512, 128, 512),
|
||||||
RAT_MEAT(2142,2134,2146,1,30,34,128,512),
|
RAT_MEAT(2142, 2134, 2146, 1, 30, 128, 512, 128, 512),
|
||||||
BEAR_MEAT(2142,2136,2146,1,30,34,128,512),
|
BEAR_MEAT(2142, 2136, 2146, 1, 30, 128, 512, 128, 512),
|
||||||
YAK_MEAT(2142,10816,2146,1,30,34,128,512),
|
YAK_MEAT(2142, 10816, 2146, 1, 30, 128, 512, 128, 512),
|
||||||
|
|
||||||
//Skewered foods
|
// skewered foods
|
||||||
SKEWER_ROAST_BEAST(9988, 9986, 9990,21, 99, 82,108,496),
|
SKEWER_ROAST_BEAST(9988, 9986, 9990, 21, 99, 180, 255, 180, 255),
|
||||||
SKEWER_CHOMPY(2878, 2876, 7226,30, 140, 99,85,476),
|
SKEWER_CHOMPY(2878, 2876, 7226, 30, 140, 200, 255, 200, 255),
|
||||||
SKEWER_JUBBLY(7568, 7566, 7570,41, 160, 140,75,456),
|
SKEWER_JUBBLY(7568, 7566, 7570, 41, 160, 195, 250, 195, 250), // Can burn at 99 cooking. Ballpark low/high.
|
||||||
SKEWER_ROAST_BIRD(9980, 9984, 9982,11, 62, 99,115,502),
|
SKEWER_ROAST_BIRD(9980, 9984, 9982, 11, 62, 155, 255, 155, 255),
|
||||||
SKEWER_ROAST_RABBIT(7223, 7224, 7222,16, 72, 99,113,499),
|
SKEWER_ROAST_RABBIT(7223, 7224, 7222, 16, 72, 160, 255, 160, 255),
|
||||||
|
|
||||||
//Pies
|
// pies
|
||||||
PIE_REDBERRY(2325, 2321, 2329, 10, 78, 50,78,412),
|
REDBERRY_PIE(2325, 2321, 2329, 10, 78, 0, 0, 98, 452),
|
||||||
PIE_MEAT(2327, 2319, 2329, 20, 110, 53,78,412),
|
MEAT_PIE(2327, 2319, 2329, 20, 110, 0, 0, 78, 412),
|
||||||
PIE_MUD(7170, 7168, 2329, 29,128,63,78,412),
|
MUD_PIE(7170, 7168, 2329, 29, 128, 0, 0, 58, 372),
|
||||||
PIE_APPLE(2323,2317,2329,30,130,63,78,412),
|
APPLE_PIE(2323, 2317, 2329, 30, 130, 0, 0, 58, 372),
|
||||||
GARDEN_PIE(7178,7176,2329,34,138, 68,78,412),
|
GARDEN_PIE(7178, 7176, 2329, 34, 138, 0, 0, 48, 352),
|
||||||
FISH_PIE(7188,7186,2329,47,164,74,78,412),
|
FISH_PIE(7188, 7186, 2329, 47, 164, 0, 0, 38, 332),
|
||||||
ADMIRAL_PIE(7198,7196,2329,70,210,94,78,412),
|
ADMIRAL_PIE(7198, 7196, 2329, 70, 210, 0, 0, 15, 270),
|
||||||
WILD_PIE(7208,7206,2329,85,240,140,78,412),
|
WILD_PIE(7208, 7206, 2329, 85, 240, 0, 0, 1, 222),
|
||||||
SUMMER_PIE(7218,7216,2329,95,260,160,78,412),
|
SUMMER_PIE(7218, 7216, 2329, 95, 260, 0, 0, 1, 212),
|
||||||
|
|
||||||
//Pizzas
|
// pizzas
|
||||||
PIZZA_PLAIN(2289, 2287,2305, 35, 143, 68,48,352),
|
PIZZA_PLAIN(2289, 2287, 2305, 35, 143, 0, 0, 48, 352),
|
||||||
|
|
||||||
//Bowl foods
|
// bowl foods
|
||||||
BOWL_STEW(2003, 2001, 2005,25, 117, 58,68,392),
|
BOWL_STEW(2003, 2001, 2005, 25, 117, 68, 392, 68, 392),
|
||||||
BOWL_NETTLE(4239, 4237, 4239,20, 52, 1,68,392),
|
BOWL_NETTLE(4239, 4237, 4239, 20, 52, 78, 412, 78, 412),
|
||||||
BOWL_EGG(7078, 7076, 7090,13, 50, 48,68,392),
|
BOWL_EGG(7078, 7076, 7090, 13, 50, 0, 0, 90, 438),
|
||||||
BOWL_ONION(7084, 1871, 7092,43, 60, 77,68,392),
|
BOWL_ONION(7084, 1871, 7092, 43, 60, 36, 322, 36, 322),
|
||||||
BOWL_MUSHROOM(7082, 7080, 7094,46, 60, 90,68,392),
|
BOWL_MUSHROOM(7082, 7080, 7094, 46, 60, 16, 282, 16, 282),
|
||||||
|
|
||||||
/* Vegetables */
|
// vegetables
|
||||||
BAKED_POTATO(6701, 1942, 6699, 7, 15, 41, 108, 472),
|
BAKED_POTATO(6701, 1942, 6699, 7, 15, 0, 0, 108, 472),
|
||||||
SWEETCORN(5988, 5986, 5990, 28, 104, 54, 90, 424),
|
SWEETCORN(5988, 5986, 5990, 28, 104, 78, 412, 78, 412),
|
||||||
|
|
||||||
|
// miscellaneous
|
||||||
|
RAW_OOMLIE(Items.RAW_OOMLIE_2337, 0, Items.BURNT_OOMLIE_2426, 50, 0, 0, 0, 0, 0), // always burns
|
||||||
|
OOMLIE_WRAP(Items.COOKED_OOMLIE_WRAP_2343, Items.WRAPPED_OOMLIE_2341, Items.BURNT_OOMLIE_WRAP_2345, 50, 30, 106, 450, 112, 476),
|
||||||
|
SEAWEED(Items.SEAWEED_401, 0, Items.SODA_ASH_1781, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
//Miscellaneous
|
|
||||||
RAW_OOMLIE(Items.RAW_OOMLIE_2337, 0, Items.BURNT_OOMLIE_2426, 50, 0, 999,0,0), // always burns
|
|
||||||
OOMLIE_WRAP(Items.COOKED_OOMLIE_WRAP_2343, Items.WRAPPED_OOMLIE_2341, Items.BURNT_OOMLIE_WRAP_2345, 50, 30, 40,112,476),
|
|
||||||
SEAWEED(Items.SEAWEED_401,0,Items.SODA_ASH_1781,0,0,999,0,0),
|
|
||||||
/**
|
/**
|
||||||
* Sinew gets overridden by BEEF in this enum, due to values being looked up by the items RAW id.
|
* Sinew gets overridden by BEEF in this enum, due to values being looked up by the items RAW id.
|
||||||
* This gets corrected in {@link SinewCookingPulse}
|
* This gets corrected in {@link SinewCookingPulse}
|
||||||
*/
|
*/
|
||||||
SINEW(Items.SINEW_9436,Items.RAW_BEEF_2132,Items.SINEW_9436,0,3,0,0,0);
|
SINEW(Items.SINEW_9436, Items.RAW_BEEF_2132, Items.SINEW_9436, 0, 3, 0, 0, 0, 0);
|
||||||
|
|
||||||
public final static HashMap<Integer,CookableItems>cookingMap = new HashMap<>();
|
public final static HashMap<Integer, CookableItems> cookingMap = new HashMap<>();
|
||||||
public final static HashMap<Integer, CookableItems>intentionalBurnMap = new HashMap<>();
|
public final static HashMap<Integer, CookableItems> intentionalBurnMap = new HashMap<>();
|
||||||
public final int raw,cooked,level,burnLevel,burnt;
|
public final static HashMap<Integer, int[]> gauntletValues = new HashMap<>();
|
||||||
|
public final static HashMap<Integer, int[]> lumbridgeRangeValues = new HashMap<>();
|
||||||
|
public final int cooked, raw, burnt, level, low, high, lowRange, highRange;
|
||||||
public final double experience;
|
public final double experience;
|
||||||
double low,high;
|
|
||||||
CookableItems(int cooked, int raw, int burnt, int level, double experience, int burnLevel, double low, double high){
|
CookableItems(int cooked, int raw, int burnt, int level, double experience, int low, int high, int lowRange, int highRange) {
|
||||||
this.raw = raw;
|
|
||||||
this.cooked = cooked;
|
this.cooked = cooked;
|
||||||
|
this.raw = raw;
|
||||||
this.burnt = burnt;
|
this.burnt = burnt;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.experience = experience;
|
this.experience = experience;
|
||||||
this.burnLevel = burnLevel;
|
|
||||||
this.low = low;
|
this.low = low;
|
||||||
this.high = high;
|
this.high = high;
|
||||||
|
this.lowRange = lowRange;
|
||||||
|
this.highRange = highRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
static{
|
static {
|
||||||
CookableItems[] cookableItems = values();
|
for (CookableItems item : values()) {
|
||||||
int cookableItemsLength = cookableItems.length;
|
cookingMap.putIfAbsent(item.raw, item);
|
||||||
for(int x = 0; x < cookableItemsLength; x++){
|
intentionalBurnMap.putIfAbsent(item.cooked, item);
|
||||||
CookableItems item = cookableItems[x];
|
|
||||||
cookingMap.putIfAbsent(item.raw,item);
|
|
||||||
intentionalBurnMap.putIfAbsent(item.cooked,item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CookableItems forId(int id){
|
gauntletValues.put(Items.RAW_LOBSTER_377, new int[]{55, 368});
|
||||||
|
gauntletValues.put(Items.RAW_SWORDFISH_371, new int[]{30, 310});
|
||||||
|
gauntletValues.put(Items.RAW_MONKFISH_7944, new int[]{24, 290});
|
||||||
|
gauntletValues.put(Items.RAW_SHARK_383, new int[]{15, 270});
|
||||||
|
|
||||||
|
lumbridgeRangeValues.put(Items.BREAD_DOUGH_2307, new int[]{128, 512});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_BEEF_2132, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_RAT_MEAT_2134, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_BEAR_MEAT_2136, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_YAK_MEAT_10816, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_CHICKEN_2138, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_SHRIMPS_317, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_ANCHOVIES_321, new int[]{138, 532});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_SARDINE_327, new int[]{128, 512});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_HERRING_345, new int[]{118, 492});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_MACKEREL_353, new int[]{108, 472});
|
||||||
|
lumbridgeRangeValues.put(Items.UNCOOKED_BERRY_PIE_2321, new int[]{108, 462});
|
||||||
|
lumbridgeRangeValues.put(Items.THIN_SNAIL_3363, new int[]{103, 464});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_TROUT_335, new int[]{98, 452});
|
||||||
|
lumbridgeRangeValues.put(Items.LEAN_SNAIL_3365, new int[]{95, 448});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_COD_341, new int[]{93, 442});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_PIKE_349, new int[]{88, 432});
|
||||||
|
lumbridgeRangeValues.put(Items.UNCOOKED_MEAT_PIE_2319, new int[]{88, 432});
|
||||||
|
lumbridgeRangeValues.put(Items.FAT_SNAIL_3367, new int[]{83, 422});
|
||||||
|
lumbridgeRangeValues.put(Items.UNCOOKED_STEW_2001, new int[]{78, 412});
|
||||||
|
lumbridgeRangeValues.put(Items.RAW_SALMON_331, new int[]{78, 402});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CookableItems forId(int id) {
|
||||||
return cookingMap.get(id);
|
return cookingMap.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Item getCooked(int id){
|
public static Item getBurnt(int id) {
|
||||||
return new Item(cookingMap.get(id).cooked);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Item getBurnt(int id){
|
|
||||||
return new Item(cookingMap.get(id).burnt);
|
return new Item(cookingMap.get(id).burnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Item getRaw(int id){
|
public static boolean intentionalBurn(int id) {
|
||||||
return new Item(cookingMap.get(id).raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean intentionalBurn(int id){
|
|
||||||
return (intentionalBurnMap.get(id) != null);
|
return (intentionalBurnMap.get(id) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Item getIntentionalBurn(int id){
|
public static Item getIntentionalBurn(int id) {
|
||||||
return new Item(intentionalBurnMap.get(id).burnt);
|
return new Item(intentionalBurnMap.get(id).burnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getBurnLevel(int id){
|
|
||||||
return cookingMap.get(id).burnLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,199 +0,0 @@
|
|||||||
/*
|
|
||||||
package core.game.node.entity.skill.cooking;
|
|
||||||
|
|
||||||
import core.game.dialogue.DialoguePlugin;
|
|
||||||
import org.crandor.game.content.global.consumable.Consumables;
|
|
||||||
import org.crandor.game.content.global.consumable.Food;
|
|
||||||
import core.game.node.entity.skill.cooking.CookableItems;
|
|
||||||
import core.game.node.entity.skill.cooking.CookingPulse;
|
|
||||||
import org.crandor.game.node.entity.player.Player;
|
|
||||||
import org.crandor.game.node.entity.player.link.RunScript;
|
|
||||||
import org.crandor.game.node.item.Item;
|
|
||||||
import org.crandor.game.node.object.GameObject;
|
|
||||||
import org.crandor.net.packet.PacketRepository;
|
|
||||||
import org.crandor.net.packet.context.ChildPositionContext;
|
|
||||||
import org.crandor.net.packet.out.RepositionChild;
|
|
||||||
import org.crandor.plugin.InitializablePlugin;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the dialogue used to handle the amount to make of a cookable item.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*//*
|
|
||||||
|
|
||||||
@InitializablePlugin
|
|
||||||
public final class CookingDialoguePlugin extends DialoguePlugin {
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the cooking dialogue id.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public static final int DIALOGUE_ID = 43989;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the sinew item.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private static final Item SINEW = new Item(9436);
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the meat item.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private static final Item MEAT = new Item(2142);
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the food we're cooking.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private int food;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the obejct we're cooking on.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private GameObject object;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingDialoguePlugin} {@code Object}.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingDialoguePlugin() {
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingDialoguePlugin} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingDialoguePlugin(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new CookingDialoguePlugin(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
food = ((int) args[0]);
|
|
||||||
object = ((GameObject) args[1]);
|
|
||||||
if (args.length == 3) {
|
|
||||||
interpreter.sendOptions("Select an Option", "Dry the meat into sinew.", "Cook the meat.");
|
|
||||||
stage = 100;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (player.getInventory().getAmount(CookableItems.forId(food).raw) == 1) {
|
|
||||||
end();
|
|
||||||
cook(player,object,food,1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
display();
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
end();
|
|
||||||
int amount = getAmount(buttonId);
|
|
||||||
if (amount == -1) {
|
|
||||||
player.setAttribute("runscript", new RunScript() {
|
|
||||||
@Override
|
|
||||||
public boolean handle() {
|
|
||||||
int amount = (int) value;
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
|
|
||||||
} else if (amount == 28) {
|
|
||||||
player.setAttribute("runscript", new RunScript() {
|
|
||||||
@Override
|
|
||||||
public boolean handle() {
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
/*case 100:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
food = Consumables.forFood(SINEW);
|
|
||||||
display();
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
food = Consumables.forFood(MEAT);
|
|
||||||
display();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;*//*
|
|
||||||
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { DIALOGUE_ID };
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Method used to display the content food.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public void display() {
|
|
||||||
player.getInterfaceManager().openChatbox(307);
|
|
||||||
PacketRepository.send(RepositionChild.class, new ChildPositionContext(player, 307, 3, 60, 79));
|
|
||||||
player.getPacketDispatch().sendItemZoomOnInterface(CookableItems.getRaw(food).getId(), 160, 307, 2);
|
|
||||||
player.getPacketDispatch().sendString(CookableItems.getRaw(food).getName(), 307, 3);
|
|
||||||
stage = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cook(Player player, GameObject object, int food, int amount){
|
|
||||||
player.getPulseManager().run(new CookingPulse(player,object,food,amount));
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Method used to get the amount to make based off the button id.
|
|
||||||
* @param buttonId the button id.
|
|
||||||
* @return the amount to make.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private final int getAmount(final int buttonId) {
|
|
||||||
switch (buttonId) {
|
|
||||||
case 5:
|
|
||||||
return 1;
|
|
||||||
case 4:
|
|
||||||
return 5;
|
|
||||||
case 3:
|
|
||||||
return -1;
|
|
||||||
case 2:
|
|
||||||
return 28;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
/*
|
|
||||||
package core.game.node.entity.skill.cooking;
|
|
||||||
|
|
||||||
import org.crandor.cache.def.impl.ItemDefinition;
|
|
||||||
import core.game.dialogue.DialoguePlugin;
|
|
||||||
import org.crandor.game.content.global.consumable.Consumables;
|
|
||||||
import org.crandor.game.content.global.consumable.Food;
|
|
||||||
import core.game.node.entity.skill.cooking.CookableItems;
|
|
||||||
import core.game.node.entity.skill.cooking.CookingPulse;
|
|
||||||
import org.crandor.game.interaction.NodeUsageEvent;
|
|
||||||
import org.crandor.game.interaction.UseWithHandler;
|
|
||||||
import org.crandor.game.node.Node;
|
|
||||||
import org.crandor.game.node.entity.player.Player;
|
|
||||||
import org.crandor.game.node.entity.player.link.RunScript;
|
|
||||||
import org.crandor.game.node.item.Item;
|
|
||||||
import org.crandor.game.node.object.GameObject;
|
|
||||||
import org.crandor.game.world.map.Direction;
|
|
||||||
import org.crandor.game.world.map.Location;
|
|
||||||
import org.crandor.net.packet.PacketRepository;
|
|
||||||
import org.crandor.net.packet.context.ChildPositionContext;
|
|
||||||
import org.crandor.net.packet.out.RepositionChild;
|
|
||||||
import org.crandor.plugin.InitializablePlugin;
|
|
||||||
import org.crandor.plugin.Plugin;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Handles the interaction of a raw food (or if intentionally burning cooked food)
|
|
||||||
* with a range/fire.
|
|
||||||
* @author ceik
|
|
||||||
*//*
|
|
||||||
|
|
||||||
@InitializablePlugin
|
|
||||||
public class CookingPlugin extends UseWithHandler {
|
|
||||||
|
|
||||||
public static int DIALOGUE_ID = 43989;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the objects allowed to cook {@code Food} on.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public static final int[] OBJECTS = new int[] { 21302, 13528, 13529, 13533, 13531, 13536, 13539, 13542, 2728, 2729, 2730, 2731, 2732, 2859, 3038, 3039, 3769, 3775, 4265, 4266, 5249, 5499, 5631, 5632, 5981, 9682, 10433, 11404, 11405, 11406, 12102, 12796, 13337, 13881, 14169, 14919, 15156, 20000, 20001, 21620, 21792, 22713, 22714, 23046, 24283, 24284, 25155, 25156, 25465, 25730, 27297, 29139, 30017, 32099, 33500, 34495, 34546, 36973, 37597, 37629, 37726, 114, 4172, 5275, 8750, 16893, 22154, 34410, 34565, 114, 9085, 9086, 9087, 12269, 15398, 25440, 25441, 2724, 2725, 2726, 4618, 4650, 5165, 6093, 6094, 6095, 6096, 8712, 9439, 9440, 9441, 10824, 17640, 17641, 17642, 17643, 18039, 21795, 24285, 24329, 27251, 33498, 35449, 36815, 36816, 37426, 40110 };
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingPlugin} {@code Object}.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingPlugin() {
|
|
||||||
super(2140, 1861, 3228, 7521, 3151, 325, 319, 347, 355, 333, 339, 351, 329, 3381, 361, 10136, 5003, 379, 365, 373, 2149, 7946, 385, 397, 391, 3369, 3371, 3373, 1893, 1895, 1897, 1899, 1901, 1963, 2102, 2120, 2108, 5972, 5504, 1982, 1965, 1957, 5988, 1781, 6701, 6703, 6705, 7056, 7058, 7060, 1933, 1783, 1927, 1929, 6032, 6034, 2011, 227, 1921, 1937, 7934, 7086, 4239, 7068, 7086, 2003, 7078, 7072, 4239, 7062, 7064, 7084, 1871, 7082, 2309, 1891, 1967, 1971, 2142, 9436, 2142, 2142, 2325, 2333, 2327, 2331, 7170, 2323, 2335, 7178, 7180, 7188, 7190, 7198, 7200, 7208, 7210, 7218, 7220, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 315, 9988, 2878, 7568, 9980, 7223, 5982, 598, 4293, 10816, 2138, 2134, 3142, 2136, 1859, 3226, 7518, 3150, 327, 321, 345, 353, 335, 341, 349, 331, 3379, 359, 10138, 5001, 377, 363, 371, 2148, 7944, 383, 395, 389, 3363, 3365, 3367, 5986, 401, 1942, 4237, 2001, 7076, 1871, 7080, 2307, 1889, 2132, 2132, 2132, 2132, 2321, 2319, 7168, 2317, 7176, 7186, 7196, 7206, 7216, 2287, 317, 9986, 2876, 7566, 9984, 7224);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
|
||||||
new CookingDialoguePlugin().init();
|
|
||||||
for (int object : OBJECTS) {
|
|
||||||
addHandler(object, OBJECT_TYPE, this);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(NodeUsageEvent event) {
|
|
||||||
final GameObject object = (GameObject) event.getUsedWith();
|
|
||||||
final int food = event.getUsedItem().getId();
|
|
||||||
//handles intentional burning (deprecates BurnMeatPlugin)
|
|
||||||
if(CookableItems.intentionalBurn(food)){
|
|
||||||
event.getPlayer().getPulseManager().run(new CookingPulse(event.getPlayer(),object,event.getUsedItem().getId(),true));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
event.getPlayer().getDialogueInterpreter().open(DIALOGUE_ID, food, event.getUsedWith());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Location getDestination(final Player player, final Node node) {
|
|
||||||
if (node.getName().toLowerCase().equals("fire")) {
|
|
||||||
return player.getLocation().getY() > node.getLocation().getY() ? node.getLocation().transform(0, 1, 0) : player.getLocation().getX() < node.getLocation().getX() ? node.getLocation().transform(-1, 0, 0) : player.getLocation().getX() > node.getLocation().getX() ? node.getLocation().transform(1, 0, 0) : node.getLocation().transform(0, -1, 0);
|
|
||||||
} else {
|
|
||||||
Direction direction = node.getDirection();
|
|
||||||
if (direction == Direction.NORTH) {
|
|
||||||
return node.getLocation().transform(1, 1, 0);
|
|
||||||
} else if (direction == Direction.SOUTH) {
|
|
||||||
return node.getLocation().transform(-1, 0, 0);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class CookingDialoguePlugin extends DialoguePlugin {
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the sinew item.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private final Item SINEW = new Item(9436);
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the meat item.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private final Item MEAT = new Item(2142);
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the food we're cooking.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private int food;
|
|
||||||
|
|
||||||
private int product;
|
|
||||||
|
|
||||||
private boolean nonFood = false;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Represents the obejct we're cooking on.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private GameObject object;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingDialoguePlugin} {@code Object}.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingDialoguePlugin() {
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingDialoguePlugin} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingDialoguePlugin(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new CookingDialoguePlugin(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
food = ((int) args[0]);
|
|
||||||
if (args.length == 3){
|
|
||||||
nonFood = true;
|
|
||||||
stage = 0;
|
|
||||||
product = (int)args[1];
|
|
||||||
display();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (player.getInventory().getAmount(CookableItems.forId(food).raw) == 1) {
|
|
||||||
end();
|
|
||||||
cook(player,object,food,1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
display();
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
end();
|
|
||||||
int amount = getAmount(buttonId);
|
|
||||||
if (amount == -1) {
|
|
||||||
player.setAttribute("runscript", new RunScript() {
|
|
||||||
@Override
|
|
||||||
public boolean handle() {
|
|
||||||
int amount = (int) value;
|
|
||||||
if(nonFood){
|
|
||||||
cookNonFood(player,food,product,amount);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
|
|
||||||
} else if (amount == 28) {
|
|
||||||
player.setAttribute("runscript", new RunScript() {
|
|
||||||
@Override
|
|
||||||
public boolean handle() {
|
|
||||||
if(nonFood){
|
|
||||||
cookNonFood(player,food,product,amount);
|
|
||||||
}
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(nonFood){
|
|
||||||
cookNonFood(player,food,product,amount);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
cook(player, object, food, amount);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { DIALOGUE_ID };
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Method used to display the content food.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public void display() {
|
|
||||||
player.getInterfaceManager().openChatbox(307);
|
|
||||||
PacketRepository.send(RepositionChild.class, new ChildPositionContext(player, 307, 3, 60, 79));
|
|
||||||
player.getPacketDispatch().sendItemZoomOnInterface(nonFood ? product : CookableItems.getCooked(food).getId(), 160, 307, 2);
|
|
||||||
player.getPacketDispatch().sendString(nonFood ? ItemDefinition.forId(product).getName() : CookableItems.getCooked(food).getName(), 307, 3);
|
|
||||||
stage = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cookNonFood(Player player, int food, int product, int amount){
|
|
||||||
player.getPulseManager().run(new CookingPulse(player,food,amount,product,false));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cook(Player player, GameObject object, int food, int amount){
|
|
||||||
player.getPulseManager().run(new CookingPulse(player,object,food,amount));
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Method used to get the amount to make based off the button id.
|
|
||||||
* @param buttonId the button id.
|
|
||||||
* @return the amount to make.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private final int getAmount(final int buttonId) {
|
|
||||||
switch (buttonId) {
|
|
||||||
case 5:
|
|
||||||
return 1;
|
|
||||||
case 4:
|
|
||||||
return 5;
|
|
||||||
case 3:
|
|
||||||
return -1;
|
|
||||||
case 2:
|
|
||||||
return 28;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -1,244 +0,0 @@
|
|||||||
/*
|
|
||||||
package core.game.node.entity.skill.cooking;
|
|
||||||
|
|
||||||
import org.crandor.game.content.global.SkillcapePerks;
|
|
||||||
import plugin.tutorial.TutorialSession;
|
|
||||||
import plugin.tutorial.TutorialStage;
|
|
||||||
import core.game.node.entity.skill.SkillPulse;
|
|
||||||
import core.game.node.entity.skill.Skills;
|
|
||||||
import org.crandor.game.node.entity.impl.Animator;
|
|
||||||
import org.crandor.game.node.entity.player.Player;
|
|
||||||
import org.crandor.game.node.entity.player.link.audio.Audio;
|
|
||||||
import org.crandor.game.node.entity.player.link.diary.DiaryType;
|
|
||||||
import org.crandor.game.node.item.Item;
|
|
||||||
import org.crandor.game.node.object.GameObject;
|
|
||||||
import org.crandor.game.system.task.Pulse;
|
|
||||||
import org.crandor.game.world.update.flag.context.Animation;
|
|
||||||
|
|
||||||
import static org.crandor.tools.RandomFunction.RANDOM;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Pulse for cooking
|
|
||||||
* @author ceik
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public final class CookingPulse extends Pulse {
|
|
||||||
private static Player player;
|
|
||||||
|
|
||||||
private static GameObject node;
|
|
||||||
|
|
||||||
private static boolean intentionalBurn = false;
|
|
||||||
|
|
||||||
//range animation
|
|
||||||
private static final Animation RANGE_ANIMATION = new Animation(883, Animator.Priority.HIGH);
|
|
||||||
|
|
||||||
//fire animation
|
|
||||||
private static final Animation FIRE_ANIMATION = new Animation(897, Animator.Priority.HIGH);
|
|
||||||
|
|
||||||
//Cooking sound
|
|
||||||
public static final Audio SOUND = new Audio(2393, 1, 1);
|
|
||||||
|
|
||||||
//food's ID
|
|
||||||
private final int food;
|
|
||||||
|
|
||||||
//amount to cook
|
|
||||||
private int amount;
|
|
||||||
|
|
||||||
//whether or not we are cooking food
|
|
||||||
private boolean isFood = true;
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CookingPulse} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
* @param node the object node (fire/range)
|
|
||||||
* @param food the food to cook.
|
|
||||||
* @param amount the amount to cook
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingPulse(Player player, GameObject node, final int food, final int amount) {
|
|
||||||
this.player = player;
|
|
||||||
this.node = node;
|
|
||||||
this.food = food;
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Another constructor for the Cooking Pulse, this time flags it as an intentional burn
|
|
||||||
* @param player the player cooking
|
|
||||||
* @param node the object being used to cook (range/fire)
|
|
||||||
* @param food the item being cooked
|
|
||||||
* @param intentionalBurn whether or not it's an intentional burn
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingPulse(Player player, GameObject node, final int food, final boolean intentionalBurn) {
|
|
||||||
this.player = player;
|
|
||||||
this.food = food;
|
|
||||||
this.amount = 1;
|
|
||||||
this.intentionalBurn = intentionalBurn;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* handler for cooking non-food items
|
|
||||||
* @param player the player cooking
|
|
||||||
* @param item the item being cooked
|
|
||||||
* @param amount the amount the player has
|
|
||||||
* @param isFood whether we are cooking food
|
|
||||||
*//*
|
|
||||||
|
|
||||||
public CookingPulse(Player player, final int item, int amount, int product, final boolean isFood){
|
|
||||||
this.player = player;
|
|
||||||
this.food = item;
|
|
||||||
this.amount = amount;
|
|
||||||
this.isFood = isFood;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start() {
|
|
||||||
if (intentionalBurn || checkRequirements()) {
|
|
||||||
super.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean pulse() {
|
|
||||||
if(intentionallyBurn(food) || !checkRequirements()){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return reward();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean checkRequirements() { //check if the player has the requirements
|
|
||||||
if (!node.isActive()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//handle cook's assistant range
|
|
||||||
if(node.getId() == 114 && !player.getQuestRepository().isComplete("Cook's Assistant")){
|
|
||||||
player.getPacketDispatch().sendMessage("You need to have completed the Cook's Assistant quest in order to use that range.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (player.getSkills().getLevel(Skills.COOKING) < CookableItems.forId(food).level) {
|
|
||||||
player.getDialogueInterpreter().sendDialogue("You need a cooking level of " + CookableItems.forId(food).level + " to cook this.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int inventoryAmount = player.getInventory().getAmount(CookableItems.forId(food).raw);
|
|
||||||
if (amount > inventoryAmount) {
|
|
||||||
amount = inventoryAmount;
|
|
||||||
}
|
|
||||||
if (amount < 1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void animate() {
|
|
||||||
player.animate(getAnimation(node));
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean reward() {
|
|
||||||
if (getDelay() == 1) {
|
|
||||||
setDelay(node.getName().toLowerCase().equals("range") ? 5 : 4);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//handle tutorial stuff
|
|
||||||
if(!TutorialSession.getExtension(player).finished()){
|
|
||||||
updateTutorial(player);
|
|
||||||
amount --;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cook(player,node,isBurned(player,node,food),food)) {
|
|
||||||
amount--;
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return amount < 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean cook(final Player player, final GameObject object, final boolean burned, final int food) {
|
|
||||||
Item item = CookableItems.getRaw(food);
|
|
||||||
if(intentionalBurn){ //stops the cook function from being ran if we burning on purpose
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//lumbridge diary
|
|
||||||
if (CookableItems.forId(food) != null && player.getInventory().remove(item)) {
|
|
||||||
if (!burned) {
|
|
||||||
player.getInventory().add(CookableItems.getCooked(food));
|
|
||||||
} else {
|
|
||||||
player.getInventory().add(CookableItems.getBurnt(food));
|
|
||||||
}
|
|
||||||
player.getSkills().addExperience(Skills.COOKING, burned ? 0 : CookableItems.forId(food).experience, true);
|
|
||||||
player.getPacketDispatch().sendMessage(getMessage(item, burned));
|
|
||||||
player.getAudioManager().send(SOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean intentionallyBurn(int food){
|
|
||||||
if(intentionalBurn && player.getInventory().remove(new Item(food))){ //only runs if it's flagged as intentional burning
|
|
||||||
player.getInventory().add(CookableItems.getIntentionalBurn(food));
|
|
||||||
player.getPacketDispatch().sendMessage("You deliberately burn the perfectly good piece of meat.");
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage(Item food, boolean burned){
|
|
||||||
if(!burned) {
|
|
||||||
return "You manage to cook some " + food.getName().replace("Raw ", "");
|
|
||||||
} else {
|
|
||||||
return "You accidentally burn some " + food.getName().replace("Raw ","");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isBurned(final Player player, final GameObject object, int food) {
|
|
||||||
double burn_stop = (double)CookableItems.getBurnLevel(food);
|
|
||||||
if (SkillcapePerks.hasSkillcapePerk(player, SkillcapePerks.COOKING)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (player.getSkills().getLevel(Skills.COOKING) > burn_stop) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
double burn_chance = 60.0 + (object.getName().equals("fire") ? 1.00 : 0) - (object.getId() == 114 ? 1.00 : 0);
|
|
||||||
double cook_level = (double) player.getSkills().getLevel(Skills.COOKING);
|
|
||||||
double lev_needed = (double) CookableItems.forId(food).level;
|
|
||||||
double multi_a = (burn_stop - lev_needed);
|
|
||||||
double burn_dec = (burn_chance / multi_a);
|
|
||||||
double multi_b = (cook_level - lev_needed);
|
|
||||||
burn_chance -= (multi_b * burn_dec);
|
|
||||||
double randNum = RANDOM.nextDouble() * 100.0;
|
|
||||||
return !(burn_chance <= randNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateTutorial(Player player){
|
|
||||||
if (TutorialSession.getExtension(player).getStage() == 14) {
|
|
||||||
TutorialStage.load(player, 15, false);
|
|
||||||
return cook(player, node,true, food);
|
|
||||||
} else if (TutorialSession.getExtension(player).getStage() == 15) {
|
|
||||||
TutorialStage.load(player, 16, false);
|
|
||||||
return cook(player, node, false, food);
|
|
||||||
}
|
|
||||||
if (TutorialSession.getExtension(player).getStage() == 20) {
|
|
||||||
TutorialStage.load(player, 21, false);
|
|
||||||
return cook(player, node, false, food);
|
|
||||||
}
|
|
||||||
return cook(player, node, isBurned(player,node,food),food);
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Gets the animation to use based on the interacting object.
|
|
||||||
* @param object the object.
|
|
||||||
* @return the animation.
|
|
||||||
*//*
|
|
||||||
|
|
||||||
private final Animation getAnimation(final GameObject object) {
|
|
||||||
return !object.getName().toLowerCase().equals("fire") ? RANGE_ANIMATION : FIRE_ANIMATION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -24,6 +24,8 @@ public class StandardCookingPulse extends Pulse {
|
|||||||
//Cooking sound
|
//Cooking sound
|
||||||
public static final Audio SOUND = new Audio(2577, 1, 1);
|
public static final Audio SOUND = new Audio(2577, 1, 1);
|
||||||
|
|
||||||
|
private static final int LUMBRIDGE_RANGE = 114;
|
||||||
|
|
||||||
private final int initial;
|
private final int initial;
|
||||||
private final int product;
|
private final int product;
|
||||||
private int amount;
|
private int amount;
|
||||||
@@ -46,7 +48,7 @@ public class StandardCookingPulse extends Pulse {
|
|||||||
properties = CookableItems.forId(initial);
|
properties = CookableItems.forId(initial);
|
||||||
if (checkRequirements()) {
|
if (checkRequirements()) {
|
||||||
super.start();
|
super.start();
|
||||||
cook(player, object, CookableItems.cookingMap.get(initial) != null && isBurned(player, object, initial), initial, product);
|
cook(player, object, properties != null && burned, initial, product);
|
||||||
amount--;
|
amount--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,7 +69,7 @@ public class StandardCookingPulse extends Pulse {
|
|||||||
this.experience = 0;
|
this.experience = 0;
|
||||||
if (properties != null) {
|
if (properties != null) {
|
||||||
// Handle Cook's Assistant range
|
// Handle Cook's Assistant range
|
||||||
if (object.getId() == 114 && !player.getQuestRepository().isComplete("Cook's Assistant")) {
|
if (object.getId() == LUMBRIDGE_RANGE && !player.getQuestRepository().isComplete("Cook's Assistant")) {
|
||||||
player.getPacketDispatch().sendMessage("You need to have completed the Cook's Assistant quest in order to use that range.");
|
player.getPacketDispatch().sendMessage("You need to have completed the Cook's Assistant quest in order to use that range.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -90,7 +92,7 @@ public class StandardCookingPulse extends Pulse {
|
|||||||
|
|
||||||
public boolean reward() {
|
public boolean reward() {
|
||||||
if (getDelay() == 1) {
|
if (getDelay() == 1) {
|
||||||
int delay = object.getName().toLowerCase().equals("range") ? 5 : 4;
|
int delay = object.getName().toLowerCase().contains("range") ? 5 : 4;
|
||||||
if(SkillcapePerks.isActive(SkillcapePerks.HASTY_COOKING, player)) {
|
if(SkillcapePerks.isActive(SkillcapePerks.HASTY_COOKING, player)) {
|
||||||
delay -= 1;
|
delay -= 1;
|
||||||
}
|
}
|
||||||
@@ -108,25 +110,27 @@ public class StandardCookingPulse extends Pulse {
|
|||||||
|
|
||||||
public boolean isBurned(final Player player, final Scenery object, int food) {
|
public boolean isBurned(final Player player, final Scenery object, int food) {
|
||||||
boolean hasGauntlets = player.getEquipment().containsItem(new Item(Items.COOKING_GAUNTLETS_775));
|
boolean hasGauntlets = player.getEquipment().containsItem(new Item(Items.COOKING_GAUNTLETS_775));
|
||||||
double burn_stop = (double) CookableItems.getBurnLevel(food);
|
|
||||||
int effectiveCookingLevel = player.getSkills().getLevel(Skills.COOKING);
|
int effectiveCookingLevel = player.getSkills().getLevel(Skills.COOKING);
|
||||||
if(SkillcapePerks.isActive(SkillcapePerks.HASTY_COOKING, player)) {
|
if (SkillcapePerks.isActive(SkillcapePerks.HASTY_COOKING, player)) {
|
||||||
effectiveCookingLevel -= 5;
|
effectiveCookingLevel -= 5;
|
||||||
}
|
}
|
||||||
int gauntlets_boost = 0;
|
|
||||||
CookableItems item = CookableItems.forId(food);
|
CookableItems item = CookableItems.forId(food);
|
||||||
if (hasGauntlets && (food == Items.RAW_SWORDFISH_371 || food == Items.RAW_LOBSTER_377 || food == Items.RAW_MONKFISH_7944 || food == Items.RAW_SHARK_383)) {
|
int low, high;
|
||||||
burn_stop -= 6;
|
if (hasGauntlets && CookableItems.gauntletValues.containsKey(food)) {
|
||||||
gauntlets_boost += 6;
|
int[] successValues = CookableItems.gauntletValues.get(food);
|
||||||
|
low = successValues[0];
|
||||||
|
high = successValues[1];
|
||||||
|
} else if (object.getId() == LUMBRIDGE_RANGE) {
|
||||||
|
int[] successValues = CookableItems.lumbridgeRangeValues.getOrDefault(food, new int[]{item.lowRange, item.highRange});
|
||||||
|
low = successValues[0];
|
||||||
|
high = successValues[1];
|
||||||
|
} else {
|
||||||
|
boolean isFire = object.getName().toLowerCase().contains("fire");
|
||||||
|
low = isFire ? item.low : item.lowRange;
|
||||||
|
high = isFire ? item.high : item.highRange;
|
||||||
}
|
}
|
||||||
if (effectiveCookingLevel >= burn_stop) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int cook_level = effectiveCookingLevel + gauntlets_boost;
|
|
||||||
double host_ratio = RandomFunction.randomDouble(100.0);
|
double host_ratio = RandomFunction.randomDouble(100.0);
|
||||||
double low = item.low + (object.getName().contains("fire") ? 0 : (0.1 * item.low));
|
double client_ratio = RandomFunction.getSkillSuccessChance(low, high, effectiveCookingLevel);
|
||||||
double high = item.high + (object.getName().contains("fire") ? 0 : (0.1 * item.high));
|
|
||||||
double client_ratio = RandomFunction.getSkillSuccessChance(low,high,cook_level);
|
|
||||||
return host_ratio > client_ratio;
|
return host_ratio > client_ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user