Repository reorganisation

Unified kotlin and java into just src/main
Unified the rs09 and core packages
Took all content out of the core package, and placed it into the new content package
Reorganised all source code relating to content to be easier to find and explore
This commit is contained in:
Ceikry
2023-01-26 13:59:28 +00:00
committed by Ryan
parent e4b799c44a
commit a100affda2
3156 changed files with 24205 additions and 30585 deletions
@@ -0,0 +1,301 @@
package content.global.skill.hunter;
import core.game.node.Node;
import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder;
import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import java.util.ArrayList;
import java.util.List;
/**
* Handles the net trap.
* @author Vexia
*/
public final class NetTrapSetting extends TrapSetting {
/**
* Constructs a new {@code NetTrapSetting} {@code Object}.
*/
public NetTrapSetting() {
super(new int[] { 19652, 19663, 19671, 19679, 28564 }, new Item[] { new Item(303), new Item(954) }, NetTrap.getIds(), new int[] { 10142, 10143, 10144, 10145 }, "set-trap", 29, -1, new Animation(5215), Animation.create(5207), true);
}
@Override
public boolean hasItems(Player player) {
if (!super.hasItems(player)) {
player.sendMessage("You need a net and a rope to set a net trap.");
return false;
}
return true;
}
@Override
public boolean clear(TrapWrapper wrapper, int type) {
if (super.clear(wrapper, type)) {
if (wrapper.getSecondary() != null && wrapper.getSecondary().isActive()) {
SceneryBuilder.remove(wrapper.getSecondary());
}
SceneryBuilder.add(wrapper.getObject().transform(wrapper.getNetType().getOriginal()));
return true;
}
return false;
}
@Override
public void returnItems(Scenery object, TrapWrapper wrapper, int type) {
super.returnItems(object, wrapper, type);
if (type == 0) {
for (Item i : super.getItems()) {
createGroundItem(i, object.getLocation(), wrapper.getPlayer());
}
}
}
@Override
public void reward(Player player, Node node, TrapWrapper wrapper) {
Scenery object = wrapper.getObject();
wrapper.setNetType(NetTrap.forId(node.getId()));
int rotation = 0;
int increment = 0;
boolean x = false;
Object[] netInfo = getNetInfo(player, node);
rotation = (int) netInfo[0];
increment = (int) netInfo[1];
x = (boolean) netInfo[2];
Scenery secondary = new Scenery(wrapper.getNetType().getNet(), object.getLocation().transform(x ? increment : 0, !x ? increment : 0, 0), rotation);
secondary = SceneryBuilder.add(secondary);
wrapper.setSecondary(secondary);
player.moveStep();
wrapper.addItem(getItems());
player.getInventory().remove(wrapper.getType().getSettings().getItems());
}
@Override
public void handleCatch(int counter, TrapWrapper wrapper, TrapNode node, NPC npc, boolean success) {
switch (counter) {
case 2:
SceneryBuilder.remove(wrapper.getSecondary());
break;
case 3:
npc.moveStep();
wrapper.setObject(wrapper.getNetType().getFailed());
break;
}
}
@Override
public Scenery buildObject(Player player, Node node) {
return ((Scenery) node).transform(NetTrap.forId(node.getId()).getBent());
}
@Override
public TrapHook createHook(TrapWrapper wrapper) {
return new TrapHook(wrapper, new Location[] { wrapper.getSecondary().getLocation() });
}
@Override
public int getTransformId(TrapWrapper wrapper, TrapNode node) {
return wrapper.getNetType().getCatching();
}
@Override
public int getFinalId(TrapWrapper wrapper, TrapNode node) {
return wrapper.getNetType().getCaught();
}
@Override
public int getFailId(TrapWrapper wrapper, TrapNode node) {
return wrapper.getNetType().getFailing();
}
@Override
public String getTimeUpMessage() {
return "The net trap that you constructed has collapsed.";
}
/**
* Gets the net info.
* @param player the player.
* @param node the node.
* @return the data.
*/
private Object[] getNetInfo(Player player, Node node) {
int rotation;
int increment;
boolean x = false;
if (player.getLocation().getX() < node.getLocation().getX()) {
rotation = 3;
increment = -1;
x = true;
} else if (player.getLocation().getX() > node.getLocation().getX()) {
rotation = 1;
increment = 1;
x = true;
} else if (player.getLocation().getY() < node.getLocation().getY()) {
rotation = 2;
increment = -1;
} else {
rotation = 0;
increment = 1;
}
return new Object[] { rotation, increment, x };
}
/**
* Represents a net trap.
* @author Vexia
*/
public enum NetTrap {
GREEN(19679, 19678, 19676, 19677, 19674, 19675, 19651), SQUIREL(28564, 28563, 28752, 28753, 28750, 28751, 28566), ORANGE(19652, 19650, 19657, 19656, 19655, 19654, 19665), RED(19663, 19662, 19660, 19661, 19658, 19659, 19673), BLACK(19671, 19670, 19668, 19669, 19666, 19667, 19681);
/**
* Represents the original object id.
*/
private final int original;
/**
* Represents the bend object id.
*/
private final int bent;
/**
* Represents the failing object id.
*/
private final int failing;
/**
* Represents the failed object id.
*/
private final int failed;
/**
* Represents the catching object id.
*/
private final int catching;
/**
* Represents the caught object id.
*/
private final int caught;
/**
* Represents the net.
*/
private final int net;
/**
* Constructs a new {@code StationaryCatch.java} {@code Object}.
* @param original the original.
* @param bent the bent.
* @param failing the failing.
* @param failed the failed.
* @param catching the catching.
* @param caught the caught.
* @param net the net.
*/
NetTrap(int original, int bent, int failing, int failed, int catching, int caught, int net) {
this.original = original;
this.bent = bent;
this.failing = failing;
this.failed = failed;
this.catching = catching;
this.caught = caught;
this.net = net;
}
/**
* Gets the net trap for the id.
* @param id the id.
* @return the trap.
*/
public static NetTrap forId(int id) {
for (NetTrap trap : values()) {
if (trap.getOriginal() == id) {
return trap;
}
}
return null;
}
/**
* Gets the id.
* @return the array.
*/
public static int[] getIds() {
List<Integer> ids = new ArrayList<>(10);
for (NetTrap trap : NetTrap.values()) {
ids.add(trap.getBent());
ids.add(trap.getCaught());
ids.add(trap.getNet());
ids.add(trap.getOriginal());
}
int[] array = new int[ids.size()];
for (int i = 0; i < array.length; i++) {
array[i] = ids.get(i);
}
return array;
}
/**
* Gets the original.
* @return The original.
*/
public int getOriginal() {
return original;
}
/**
* Gets the bent.
* @return The bent.
*/
public int getBent() {
return bent;
}
/**
* Gets the failed.
* @return The failed.
*/
public int getFailed() {
return failed;
}
/**
* Gets the catching.
* @return The catching.
*/
public int getCatching() {
return catching;
}
/**
* Gets the caught.
* @return The caught.
*/
public int getCaught() {
return caught;
}
/**
* Gets the failing.
* @return The failing.
*/
public int getFailing() {
return failing;
}
/**
* Gets the net.
* @return The net.
*/
public int getNet() {
return net;
}
}
}