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,148 @@
package content.global.skill.slayer;
import core.game.interaction.NodeUsageEvent;
import core.game.interaction.UseWithHandler;
import core.game.node.entity.combat.BattleState;
import core.game.node.entity.combat.ImpactHandler.HitsplatType;
import core.game.node.entity.npc.AbstractNPC;
import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.game.world.map.Location;
import core.game.world.map.path.Pathfinder;
import core.plugin.Initializable;
import core.plugin.Plugin;
import core.plugin.ClassScanner;
/**
* Handles the interactions of a rock slug.
* @author Vexia
*/
@Initializable
public final class RockSlugPlugin implements Plugin<Object> {
/**
* The bag of salt item.
*/
private static final Item SALT = new Item(4161, 1);
/**
* The rockslug npc ids.
*/
private static final int[] IDS = new int[] { 1631, 1632 };
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ClassScanner.definePlugin(new RockSlugNPC());
ClassScanner.definePlugin(new SaltBagHandler());
return this;
}
@Override
public Object fireEvent(String identifier, Object... args) {
return null;
}
/**
* The use with handler for the bag of salt on a rock slug.
* @author Vexia
*/
public final class SaltBagHandler extends UseWithHandler {
/**
* Constructs a new {@code SaltBagHandler} {@code Object}.
*/
public SaltBagHandler() {
super(SALT.getId());
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int id : IDS) {
addHandler(id, NPC_TYPE, this);
}
return this;
}
@Override
public boolean handle(NodeUsageEvent event) {
final Player player = event.getPlayer();
final NPC npc = (NPC) event.getUsedWith();
player.getInventory().remove(SALT);
if (npc.getSkills().getLifepoints() < 10) {
npc.getImpactHandler().manualHit(player, npc.getSkills().getLifepoints(), HitsplatType.NORMAL);
player.getPacketDispatch().sendMessage("The rockslug shrivels up and dies.");
} else {
player.sendMessage("Your bag of salt is ineffective. The Rockslug is not weak enough.");
}
return true;
}
}
/**
* The rock slug npc.
* @author Vexia
*/
public final class RockSlugNPC extends AbstractNPC {
/**
* Constructs a new {@code RockSlugNPC} {@code Object}.
*/
public RockSlugNPC() {
super(-1, null);
}
/**
* Constructs a new {@code RockSlugNPC} {@code Object}.
* @param id the id.
* @param location the location.
*/
public RockSlugNPC(int id, Location location) {
super(id, location, true);
}
@Override
public AbstractNPC construct(int id, Location location, Object... objects) {
return new RockSlugNPC(id, location);
}
@Override
public void checkImpact(BattleState state) {
super.checkImpact(state);
int lifepoints = getSkills().getLifepoints();
boolean run = false;
if (state.getEstimatedHit() > -1) {
lifepoints -= state.getEstimatedHit();
if (lifepoints < 1) {
run = true;
state.setEstimatedHit(lifepoints - 1);
}
if (state.getEstimatedHit() < 0) {
state.setEstimatedHit(0);
}
}
if (state.getSecondaryHit() > -1) {
lifepoints -= state.getSecondaryHit();
if (lifepoints < 1) {
run = true;
state.setSecondaryHit(lifepoints - 1);
}
if (state.getSecondaryHit() < 0) {
state.setSecondaryHit(0);
}
}
if (run) {
getProperties().getCombatPulse().stop();
Pathfinder.find(getLocation(), getProperties().getSpawnLocation());
}
}
@Override
public int[] getIds() {
return IDS;
}
}
}