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:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user