RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
RoyaltyProgram.java
1package com.osroyale.content;
2
3import com.osroyale.game.world.World;
4import com.osroyale.game.world.entity.mob.player.Player;
5import com.osroyale.game.world.entity.mob.player.PlayerRight;
6import com.osroyale.game.world.items.Item;
7import com.osroyale.game.world.items.ItemDefinition;
8import com.osroyale.game.world.position.Area;
9import com.osroyale.net.packet.out.SendItemOnInterface;
10import com.osroyale.net.packet.out.SendMessage;
11import com.osroyale.net.packet.out.SendScrollbar;
12import com.osroyale.net.packet.out.SendString;
13import com.osroyale.util.MessageColor;
14import com.osroyale.util.Utility;
15
16import java.util.Arrays;
17import java.util.Optional;
18
19
20
55
56public class RoyaltyProgram {
57
59public enum RoyaltyReward {
60 /* ONE(1, new Item(4587, 1)), // LOBSTER
61 THIRTEEN(13, new Item(560, 17500)), // DEATH RUNE
62 TWENTY_FIVE(25, new Item(7158, 1)), // DRAGON 2H
63 THIRTY_EIGHT(38, new Item(4588, 5)), // DRAGON SCIMITAR
64 FIFTY(50, new Item(537, 300)), // DRAGON BONES
65 SIXTY_SEVEN(67, new Item(12934, 1500)), // ZULRAH_SCALES
66 SEVENTY_FIVE(75, new Item(11936, 500)), // DARK CRAB
67 EIGHTY_EIGHT(88, new Item(995, 999_000)), // COINS
68 ONE_HUNDRED(100, new Item(6199, 1)); // MYSTERY BOX*/
69 ;
70 private final int level;
71 private final Item reward;
72
73 RoyaltyReward(int level, Item reward) {
74 this.level = level;
75 this.reward = reward;
76 }
77
78 public int getLevel() {
79 return level;
80 }
81
82 public Item getReward() {
83 return reward;
84 }
85
86 public static Optional<RoyaltyReward> forLevel(int level) {
87 return Arrays.stream(values()).filter(a -> a.level == level).findAny();
88 }
89
90 public static Optional<RoyaltyReward> forOrdinal(int ordinal) {
91 return Arrays.stream(values()).filter(a -> a.ordinal() == ordinal).findAny();
92 }
93 }
94
96 public static void append(Player player) {
97 append(player, 1);
98 }
99
101 public static void append(Player player, int increment) {
102 player.royalty += increment;
103 String suffix = increment > 1 ? "s" : "";
104
105 int royalty = player.royalty;
106 boolean levelUp = royalty >= 100;
107
108 if (levelUp) {
109 player.royaltyLevel++;
110 player.royalty = 0;
111 World.sendMessage("<col=9E4629> RP: " + PlayerRight.getCrown(player) + "<col=9E4629>" + player.getName()
112 + "</col> has just reached prestige <col=9E4629>" + player.royaltyLevel + "</col>.");
113 }
114
115 player.send(new SendMessage("You have just received <col=9E4629>" + increment + "</col> royalty point"
116 + (suffix) + ". You now have <col=9E4629>" + player.royalty + "</col> point"
117 + (player.royalty > 1 ? "s" : "") + " and are level <col=9E4629>" + player.royaltyLevel + "</col>."));
118
119 if (!RoyaltyReward.forLevel(royalty).isPresent())
120 return;
121
122 RoyaltyReward reward = RoyaltyReward.forLevel(royalty).get();
123 int item = reward.getReward().getId();
124 int amount = reward.getReward().getAmount() * player.royaltyLevel;
125 String name = ItemDefinition.get(item).getName();
126 player.inventory.addOrDrop(new Item(item, amount));
127 player.send(
128 new SendMessage("You have been rewarded with " + amount + " " + name + ".", MessageColor.DARK_GREEN));
129 }
130
132 public static void open(Player player) {
133
134 if (Area.inWilderness(player)) {
135 player.dialogueFactory.sendStatement("You can not open a Royalty Program while in the wilderness!")
136 .execute();
137 return;
138 }
139
140 if (player.getCombat().inCombat()) {
141 player.dialogueFactory.sendStatement("You can not open a Royalty Program while in combat!").execute();
142 return;
143 }
144
145 if (player.playerAssistant.busy()) {
146 player.dialogueFactory.sendStatement("You can not open a Royalty Program right now!").execute();
147 return;
148
149 }
150
151 else {
152
153 int size = RoyaltyReward.values().length;
154 // Item[] items = new Item[size + 3];
155
156 for (int index = 0, string = 37116; index < size; index++) {
157 RoyaltyReward perk = RoyaltyReward.forOrdinal(index).get();
158 Item item = perk.getReward();
159 int amount = player.royaltyLevel == 0 ? perk.getReward().getAmount()
160 : perk.getReward().getAmount() * player.royaltyLevel;
161
162 // items[index + 3] = new Item(item.getId(), amount);
163 player.send(new SendString("<col=3c50b2>Level: " + perk.getLevel(), string++));
164 player.send(new SendString("<col=347043>" + Utility.formatDigits(amount) + "x " + item.getName(),
165 string++));
166 }
167
168 player.send(new SendString("The Program rewards players for their activity in game. Every 30", 37111));
169 player.send(
170 new SendString("minutes everyone is awarded 1 point. Points accumulate until 100 where", 37112));
171 player.send(
172 new SendString("you gain a prestige level, points will be reset and you will be eligible", 37113));
173 player.send(
174 new SendString("for the rewards again. Reward amounts are multiplied by prestige level.", 37114));
175 player.send(new SendString("", 37115));
176 player.send(new SendString("RP: " + player.royalty + "\\nLevel:" + player.royaltyLevel, 37107));
177 player.send(new SendString("Royalty Program", 37103));
178 player.send(new SendScrollbar(37110, size * 50));
179 // player.send(new SendItemOnInterface(37199, items));
180 player.interfaceManager.open(37100);
181 }
182 }
183}
static void append(Player player, int increment)
static void open(Player player)
static void append(Player player)
final DialogueFactory sendStatement(String... lines)
static void sendMessage(String... messages)
Definition World.java:433
static String formatDigits(final int amount)
Definition Utility.java:78