57public class Cooking
extends Skill {
59 private transient final String[] objects = {
"range",
"fire",
"oven",
"stove",
"cooking range",
"fireplace" };
61 public Cooking(
int level,
double experience) {
62 super(
Skill.COOKING, level, experience);
65 private boolean cookableObject(
GameObject object) {
66 String name =
object.getDefinition().getName().toLowerCase();
67 return Arrays.stream(objects).anyMatch(name::contains);
70 private boolean success(
Player player,
int level,
int noBurn) {
77 double burn_chance = (45.0 - burn_bonus);
79 double multi_a = ((double) noBurn - (double) level);
80 double burn_dec = (burn_chance / multi_a);
81 double multi_b = (cook_level - (double) level);
82 burn_chance -= (multi_b * burn_dec);
83 double random_number =
Utility.random(100);
84 return burn_chance <= random_number;
88 protected double modifier() {
94 Item item =
event.getItem();
97 if (!cookableObject(
object)) {
101 if (!
CookData.forId(item.getId()).isPresent()) {
105 if (player.skills.
get(
Skill.COOKING).isDoingSkill()) {
112 player.dialogueFactory.
sendStatement(
"You need a cooking level of " + cook.getLevel() +
" to cook this!").
execute();
118 player.action.execute(cook(player, cook, 1),
true);
123 public void firstOption(
Player player) {
124 player.action.execute(cook(player, cook, 1),
true);
128 public void secondOption(
Player player) {
129 player.action.execute(cook(player, cook, 5),
true);
133 public void thirdOption(
Player player) {
134 player.send(
new SendInputAmount(
"Enter amount of fish you would like to cook", 10, input -> player.action.execute(cook(player, cook, Integer.parseInt(input)),
true)));
138 public void fourthOption(
Player player) {
139 player.action.execute(cook(player, cook, 28),
true);
151 protected void onSchedule() {
152 player.skills.
get(
Skill.COOKING).setDoingSkill(
true);
156 public void execute() {
157 if (!player.skills.
get(
Skill.COOKING).isDoingSkill()) {
162 if (!player.inventory.
contains(cook.getItem())) {
164 player.send(
new SendMessage(
"<col=369>You have run out of materials."));
169 player.inventory.
remove(cook.getItem(), 1);
171 if (success(player, cook.getLevel(), cook.getNoBurn())) {
172 player.inventory.
add(cook.getCooked(), 1);
174 player.send(
new SendMessage(
"You successfully cook the " + name +
".",
true));
175 player.playerAssistant.activateSkilling(1);
178 player.inventory.
add(cook.getBurnt(), 1);
179 player.send(
new SendMessage(
"You accidently burn the " + name +
".",
true));
182 if (++ticks == amount) {
188 protected void onCancel(
boolean logout) {
190 player.skills.
get(
Skill.COOKING).setDoingSkill(
false);
199 public boolean prioritized() {
final DialogueFactory sendStatement(String... lines)
final DialogueFactory execute()