RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CelestialRing.java
1package com.osroyale.content.itemaction.impl;
2
3import com.osroyale.content.itemaction.ItemAction;
4import com.osroyale.game.world.entity.mob.player.Player;
5import com.osroyale.game.world.items.Item;
6import com.osroyale.net.packet.out.SendInputAmount;
7import com.osroyale.util.Utility;
8
37
38public class CelestialRing extends ItemAction {
39
40 public static final short UNCHARGED_RING = 25539;
41 public static final short CHARGED_RING = 25541;
42 public static final short STARDUST = 25527;
43
44 @Override
45 public String name() {
46 return "Celestial ring";
47 }
48
49 @Override
50 public boolean itemOnItem(Player player, Item first, Item second) {
51 if ((first.getId() != UNCHARGED_RING && second.getId() != UNCHARGED_RING) && (first.getId() != CHARGED_RING && second.getId() != CHARGED_RING)) {
52 return false;
53 }
54
55 if(first.getId() == STARDUST || second.getId() == STARDUST) {
56 if (first.getId() == UNCHARGED_RING || second.getId() == UNCHARGED_RING) {
57 player.send(new SendInputAmount("How many charges would you like add? (0-"+player.inventory.computeAmountForId(STARDUST)+")", 10, input -> charge(player, Integer.parseInt(input), UNCHARGED_RING)));
58 } else {
59 player.send(new SendInputAmount("How many charges would you like add? (0-"+player.inventory.computeAmountForId(STARDUST)+")", 10, input -> charge(player, Integer.parseInt(input), CHARGED_RING)));
60 }
61 return true;
62 }
63
64 return false;
65 }
66
67 @Override
68 public boolean inventory(Player player, Item item, int opcode) {
69 if (item.getId() != UNCHARGED_RING && item.getId() != CHARGED_RING) {
70 return false;
71 }
72
73 if (opcode == 1 && item.getId() == CHARGED_RING) {
74 player.equipment.equip(new Item(CHARGED_RING));
75 return true;
76 }
77 if (opcode == 2) {
78 player.send(new SendInputAmount("How many charges would you like add? (0-"+player.inventory.computeAmountForId(STARDUST)+")", 10, input -> charge(player, Integer.parseInt(input), item.getId())));
79 return true;
80 }
81
82 return false;
83 }
84
85 @Override
86 public boolean equipment(Player player, Item item, int opcode) {
87 if (item.getId() != CHARGED_RING) {
88 return false;
89 }
90 if (opcode == 1) {
91 check(player);
92 return true;
93 }
94 return true;
95 }
96
97 @Override
98 public boolean drop(Player player, Item item) {
99 if (item.getId() != CHARGED_RING) {
100 return false;
101 }
102 if (player.celestialRingCharges > 0) {
103 player.inventory.remove(CHARGED_RING);
104 player.inventory.add(UNCHARGED_RING, 1);
105 player.inventory.add(STARDUST, player.celestialRingCharges);
106 player.celestialRingCharges = 0;
107 player.message("You uncharge your "+name()+".");
108 }
109
110 return true;
111 }
112
113 public static void check(Player player) {
114 player.message("You have " + Utility.formatDigits(player.celestialRingCharges) + " charges in your Celestial ring.");
115 }
116
117 private void charge(Player player, int amount, int itemId) {
118 if (amount > player.inventory.computeAmountForId(STARDUST)) {
119 amount = player.inventory.computeAmountForId(STARDUST);
120 }
121 if (amount > 0) {
122 if (itemId == UNCHARGED_RING) {
123 player.inventory.remove(UNCHARGED_RING, 1);
124 player.inventory.add(CHARGED_RING, 1);
125 }
126 player.inventory.remove(STARDUST, amount);
127 player.inventory.refresh();
128 player.celestialRingCharges += amount;
129 player.message("You added " + amount + " charges to your "+name()+"");
130 }
131 }
132
133}
boolean inventory(Player player, Item item, int opcode)