RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
SlayerOfferings.java
1package com.osroyale.content.skill.impl.slayer;
2
3import com.osroyale.Config;
4import com.osroyale.game.world.entity.mob.player.Player;
5import com.osroyale.game.world.entity.skill.Skill;
6import com.osroyale.game.world.items.Item;
7import com.osroyale.util.Utility;
8
56
57public class SlayerOfferings {
58
59 public static void offer(Player player) {
60 int points = 0;
61 double experience = 0;
62
63 for (Item item : player.inventory) {
64 if (item == null)
65 continue;
66 OfferingData offering = OfferingData.forItem(item.getId());
67 if (offering == null)
68 continue;
69 points += offering.getPoints();
70 experience += offering.getExperience();
71 }
72
73 if (points == 0 && experience == 0) {
74 player.dialogueFactory.sendNpcChat(6797, "You have no offerings for me!").execute();
75 return;
76 }
77
78 player.dialogueFactory.sendNpcChat(6797, "I will give you " + points + " slayer points &", Utility.formatDigits(experience) + " experience for your offerings.", "Do you accept?");
79 player.dialogueFactory.sendOption("Yes", () -> confirm(player),"No", () -> player.dialogueFactory.clear());
80 player.dialogueFactory.execute();
81 }
82
83 private static void confirm(Player player) {
84 int points = 0;
85 double experience = 0;
86
87 for (Item item : player.inventory) {
88 if (item == null)
89 continue;
90 OfferingData offering = OfferingData.forItem(item.getId());
91 if (offering == null)
92 continue;
93 points += offering.getPoints();
94 experience += offering.getExperience();
95 player.inventory.remove(item);
96 }
97
98 player.message("Your offerings were accepted!");
99 player.slayer.setPoints(player.slayer.getPoints() + points);
100 player.skills.addExperience(Skill.SLAYER, experience);
101 player.dialogueFactory.clear();
102 }
103
104public enum OfferingData {
105 ANCIENT_SHARD(19677, 1, 1350),
106 TOTEM_BASE(19679, 1, 1350),
107 TOTEM_MIDDLE(19681, 1, 1350),
108 TOTEM_TOP(19683, 1, 1350),
109 TOTEM(19685, 1, 1350),
110 ENSOULED_GOBLIN_HEAD(13447, 1, 1000),
111 ENSOULED_GOBLIN_HEAD_II(13448, 1, 1000),
112 ENSOULED_MONKEY_HEAD(13450, 1, 1000),
113 ENSOULED_MONKEY_HEAD_II(13451, 1, 1000),
114 ENSOULED_IMP_HEAD(13453, 1, 1000),
115 ENSOULED_IMP_HEAD_II(13454, 1, 1000),
116 ENSOULED_MINOTAUR_HEAD(13456, 1, 1000),
117 ENSOULED_MINOTAUR_HEAD_II(13457, 1, 1000),
118 ENSOULED_SCORPION_HEAD(13459, 1, 1000),
119 ENSOULED_SCORPION_HEAD_II(13460, 1, 1000),
120 ENSOULED_BEAR_HEAD(13462, 1, 1000),
121 ENSOULED_BEAR_HEAD_II(13463, 1, 1000),
122 ENSOULED_UNICORN_HEAD(13465, 1, 1000),
123 ENSOULED_UNICORN_HEAD_II(13466, 1, 1000),
124 ENSOULED_DOG_HEAD(13468, 1, 1000),
125 ENSOULED_DOG_HEAD_II(13469, 1, 1000),
126 ENSOULED_CHAOS_DRUID_HEAD(13471, 1, 1000),
127 ENSOULED_CHAOS_DRUID_HEAD_II(13472, 1, 1000),
128 ENSOULED_GIANT_HEAD(13474, 1, 1000),
129 ENSOULED_GIANT_HEAD_II(13475, 1, 1000),
130 ENSOULED_OGRE_HEAD(13477, 1, 1000),
131 ENSOULED_OGRE_HEAD_II(13478, 1, 1000),
132 ENSOULED_ELF_HEAD(13480, 1, 1000),
133 ENSOULED_ELF_HEAD_II(13481, 1, 1000),
134 ENSOULED_TROLL_HEAD(13483, 1, 1000),
135 ENSOULED_TROLL_HEAD_II(13484, 1, 1000),
136 ENSOULED_HORROR_HEAD(13486, 1, 1000),
137 ENSOULED_HORROR_HEAD_II(13487, 1, 1000),
138 ENSOULED_KALPHITE_HEAD(13489, 1, 1000),
139 ENSOULED_KALPHITE_HEAD_II(13490, 1, 1000),
140 ENSOULED_DAGANNOTH_HEAD(13492, 1, 1000),
141 ENSOULED_DAGANNOTH_HEAD_II(13493, 1, 1000),
142 ENSOULED_BLOODVELD_HEAD(13495, 1, 1000),
143 ENSOULED_BLOODVELD_HEAD_II(13496, 1, 1000),
144 ENSOULED_TZHAAR_HEAD(13498, 1, 1000),
145 ENSOULED_TZHAAR_HEAD_II(13499, 1, 1000),
146 ENSOULED_DEMON_HEAD(13501, 1, 1000),
147 ENSOULED_DEMON_HEAD_II(13502, 1, 1000),
148 ENSOULED_AVIANSIE_HEAD(13504, 1, 1000),
149 ENSOULED_AVIANSIE_HEAD_II(13505, 1, 1000),
150 ENSOULED_ABYSSAL_HEAD(13507, 1, 1000),
151 ENSOULED_ABYSSAL_HEAD_II(13508, 1, 1000),
152 ENSOULED_DRAGON_HEAD(13511, 1, 1000),
153 ENSOULED_DRAGON_HEAD_II(13510, 1, 1000);
154
155 private final int item;
156 private final int points;
157 private final int experience;
158
160 OfferingData(int item, int points, int experience) {
161 this.item = item;
162 this.points = points;
163 this.experience = experience;
164 }
165
166 public int getItem() {
167 return item;
168 }
169
170 public int getPoints() {
171 return points;
172 }
173
174 public double getExperience() {
175 return experience;
176 }
177
178 public static OfferingData forItem(int item) {
179 for (OfferingData offering : values()) {
180 if (offering.getItem() == item)
181 return offering;
182 }
183 return null;
184 }
185 }
186}
final DialogueFactory sendOption(String option1, Runnable action1, String option2, Runnable action2)
final DialogueFactory sendNpcChat(int id, String... lines)
void addExperience(int id, double experience)
static String formatDigits(final int amount)
Definition Utility.java:78