RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
SkillcapeStore.java
1package com.osroyale.content.store.impl;
2
3
4import com.osroyale.content.emote.Skillcape;
5import com.osroyale.content.store.*;
6import com.osroyale.content.store.currency.CurrencyType;
7import com.osroyale.game.world.entity.mob.player.Player;
8import com.osroyale.game.world.entity.skill.Skill;
9import com.osroyale.game.world.items.Item;
10import com.osroyale.game.world.items.containers.ItemContainer;
11import com.osroyale.net.packet.out.SendItemOnInterface;
12import com.osroyale.net.packet.out.SendScrollbar;
13import com.osroyale.net.packet.out.SendString;
14
15import java.util.Arrays;
16import java.util.Objects;
17
18import static com.osroyale.content.store.currency.CurrencyType.COINS;
19
54
55public class SkillcapeStore extends Store {
56
57 private final StoreItem[] items = Skillcape.getItems();
58
59 public SkillcapeStore() {
60 super("Skillcape Store", ItemContainer.StackPolicy.ALWAYS, COINS, Skill.SKILL_COUNT);
61 this.container.setItems(items, true);
62 Arrays.stream(items).filter(Objects::nonNull).forEach(item -> itemCache.put(item.getId(), item.getAmount()));
63 }
64
65 @Override
66 public void itemContainerAction(Player player, int id, int slot, int action, boolean purchase) {
67 switch (action) {
68 case 1:
69 if (purchase) {
70 this.sendPurchaseValue(player, slot);
71 }
72 break;
73 default:
74 int amount = action == 2 ? 1 : action == 3 ? 10 : action == 4 ? 100 : -100;
75 if (amount == -100) {
76 throw new IllegalArgumentException("The action given was invalid. [ACTION=" + action + "]");
77 }
78 if (purchase) {
79 this.purchase(player, new Item(id, amount), slot);
80 }
81 break;
82 }
83 }
84
85 @Override
86 public boolean purchase(Player player, Item item, int slot) {
87 Skillcape cape = Skillcape.forId(item.getId());
88
89 if (cape == null) {
90 player.message("Something went wrong with your purchase!");
91 return false;
92 }
93
94 if (player.skills.getMaxLevel(cape.getSkill()) < 99) {
95 player.message("You need a " + Skill.getName(cape.getSkill()) + " level of 99 to purchase this cape!");
96 return false;
97 }
98
99 if (super.purchase(player, item, slot)) {
100 player.inventory.addOrDrop(new Item(item.getId() + 1, 1));
101 refresh(player);
102 return true;
103 }
104
105 return false;
106 }
107
108 @Override
109 public void refresh(Player player) {
110 player.send(new SendString(CurrencyType.getValue(player, currencyType), 47508));
111 player.send(new SendItemOnInterface(3823, player.inventory.toArray()));
112 }
113
114 @Override
115 public void open(Player player) {
116 player.attributes.set("SHOP", name);
117
118 if (!STORES.containsKey(name)) {
119 STORES.put(name, this);
120 }
121
122 for (int index = 0; index < Skill.SKILL_COUNT; index++) {
123 player.send(new SendString(100000 + "," + currencyType.getId(), 47552 + index));
124 }
125
126 player.send(new SendString(name, 47502));
127 player.send(new SendString("Store size: " + Skill.SKILL_COUNT, 47507));
128 player.send(new SendString(CurrencyType.getValue(player, currencyType), 47508));
129 player.send(new SendItemOnInterface(47551, items));
130 player.send(new SendScrollbar(47550, 0));
131 player.send(new SendItemOnInterface(3823, player.inventory.toArray()));
132 player.interfaceManager.openInventory(StoreConstant.INTERFACE_ID, 3822);
133 }
134
135 @Override
136 public void close(Player player) {
137// players.remove(player);
138 player.attributes.remove("SHOP");
139 }
140
141 @Override
142 public StoreType type() {
143 return StoreType.DEFAULT;
144 }
145
146 @Override
147 public SellType sellType() {
148 return SellType.NONE;
149 }
150
151 @Override
152 public boolean decrementStock() {
153 return false;
154 }
155}
static String getName(int skill)
Definition Skill.java:502