mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Merge branch 'roguesDenTest' into 'master'
draft:initial files for rogues den, many things still missing See merge request 2009scape/2009scape!2017
This commit is contained in:
commit
4a04d23b92
5 changed files with 848 additions and 109 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
package content.global.handlers.scenery;
|
package content.global.handlers.scenery;
|
||||||
|
|
||||||
|
import content.global.skill.agility.AgilityHandler;
|
||||||
import core.cache.def.impl.SceneryDefinition;
|
import core.cache.def.impl.SceneryDefinition;
|
||||||
import core.game.interaction.OptionHandler;
|
import core.game.interaction.OptionHandler;
|
||||||
import core.game.node.Node;
|
import core.game.node.Node;
|
||||||
|
|
@ -12,15 +13,15 @@ import core.game.node.item.Item;
|
||||||
import core.game.node.scenery.Scenery;
|
import core.game.node.scenery.Scenery;
|
||||||
import core.game.node.scenery.SceneryBuilder;
|
import core.game.node.scenery.SceneryBuilder;
|
||||||
import core.game.system.task.Pulse;
|
import core.game.system.task.Pulse;
|
||||||
|
import core.game.world.map.Direction;
|
||||||
|
import core.game.world.map.Location;
|
||||||
import core.game.world.update.flag.context.Animation;
|
import core.game.world.update.flag.context.Animation;
|
||||||
import core.plugin.Initializable;
|
import core.plugin.Initializable;
|
||||||
import core.plugin.Plugin;
|
import core.plugin.Plugin;
|
||||||
import core.tools.RandomFunction;
|
import core.tools.RandomFunction;
|
||||||
import core.game.world.GameWorld;
|
import core.game.world.GameWorld;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the thieving guide plugin.
|
* Represents the thieving guide plugin.
|
||||||
|
|
@ -33,6 +34,8 @@ public class ThievingGuidePlugin extends OptionHandler {
|
||||||
/**
|
/**
|
||||||
* The coin looots.
|
* The coin looots.
|
||||||
*/
|
*/
|
||||||
|
//private static final Map<Location, MovementHook> LOCATION_TRAPS = new HashMap<>();
|
||||||
|
|
||||||
private static final ChanceItem[] COINS = new ChanceItem[] { new ChanceItem(995, 20, 20, 90), new ChanceItem(995, 40, 40, 80) };
|
private static final ChanceItem[] COINS = new ChanceItem[] { new ChanceItem(995, 20, 20, 90), new ChanceItem(995, 40, 40, 80) };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -58,7 +61,7 @@ public class ThievingGuidePlugin extends OptionHandler {
|
||||||
/**
|
/**
|
||||||
* Represents the animations to use.
|
* Represents the animations to use.
|
||||||
*/
|
*/
|
||||||
private static final Animation[] animations = new Animation[] { new Animation(2247), new Animation(2248), new Animation(1113), new Animation(2244) };
|
private static final Animation[] animations = new Animation[] { new Animation(2247), new Animation(2248), new Animation(1113), new Animation(2244), };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the cracked safe.
|
* Represents the cracked safe.
|
||||||
|
|
@ -69,58 +72,137 @@ public class ThievingGuidePlugin extends OptionHandler {
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||||
SceneryDefinition.forId(7236).getHandlers().put("option:crack", this);// wall
|
SceneryDefinition.forId(7236).getHandlers().put("option:crack", this);// wall
|
||||||
// safe.
|
// safe.
|
||||||
SceneryDefinition.forId(7227).getHandlers().put("option:disarm", this);// trap
|
SceneryDefinition.forId(7227).getHandlers().put("option:search", this);// trap
|
||||||
|
SceneryDefinition.forId(7245).getHandlers().put("option:search", this);// trap
|
||||||
|
SceneryDefinition.forId(7230).getHandlers().put("option:search", this);// trap
|
||||||
SceneryDefinition.forId(7256).getHandlers().put("option:open", this);
|
SceneryDefinition.forId(7256).getHandlers().put("option:open", this);
|
||||||
|
SceneryDefinition.forId(7239).getHandlers().put("option:climb", this);
|
||||||
|
SceneryDefinition.forId(7240).getHandlers().put("option:climb", this);
|
||||||
|
SceneryDefinition.forId(7251).getHandlers().put("option:enter", this);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean handle(final Player player, final Node node, String option) {
|
public boolean handle(final Player player, final Node node, String option) {
|
||||||
|
final Direction dir = Direction.getLogicalDirection(player.getLocation(), node.getLocation());
|
||||||
|
final Location start = player.getLocation();
|
||||||
|
|
||||||
|
Location end = player.getLocation();
|
||||||
switch (option) {
|
switch (option) {
|
||||||
case "open":
|
case "open":
|
||||||
player.getDialogueInterpreter().sendDialogues(2266, null, "And where do you think you're going? A little too eager", "I think. Come and talk to me before you go wandering", "around in there.");
|
if(player.getAttribute("rogues-den", true)==true) {
|
||||||
break;
|
if(player.getInventory().freeSlots() == 28) {
|
||||||
case "crack":
|
if(!player.getFamiliarManager().hasFamiliar()) {
|
||||||
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
player.getPacketDispatch().sendMessage("Brian O'Richard gives you a jewel as you enter the maze");
|
||||||
player.getPacketDispatch().sendMessage("You need to be level " + level + " thief to crack this safe.");
|
player.getProperties().setTeleportLocation(Location.create(3056, 4992, 1));
|
||||||
return true;
|
player.getSkills().restore();
|
||||||
}
|
player.getSkills().setPrayerPoints(0);
|
||||||
if (player.getInventory().freeSlots() == 0) {
|
//player.getSkills().drainLevel(Skills.PRAYER);
|
||||||
player.getPacketDispatch().sendMessage("Not enough inventory space.");
|
Item gem = new Item(5561);
|
||||||
return true;
|
player.getInventory().add(gem);
|
||||||
}
|
//player.removeAttribute("rogues-den");
|
||||||
final boolean success = success(player, Skills.THIEVING);
|
player.setAttribute("rogues-den", false);
|
||||||
player.lock(4);
|
break;
|
||||||
player.getPacketDispatch().sendMessage("You start cracking the safe.");
|
}
|
||||||
player.animate(animations[success ? 1 : 0]);
|
else {
|
||||||
GameWorld.getPulser().submit(new Pulse(3, player) {
|
player.getDialogueInterpreter().sendDialogues(2266, null, "Sorry but I can't allow you to take your follower in there,", "never know what trouble they might cause.");
|
||||||
@Override
|
break;
|
||||||
public boolean pulse() {
|
}
|
||||||
if (success) {
|
|
||||||
handleSuccess(player, (Scenery) node);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
final boolean trapped = RandomFunction.random(3) == 1;
|
else {
|
||||||
if (trapped) {
|
player.getDialogueInterpreter().sendDialogues(2266, null, "Tut tut tut, now you know you're not allowed to", "take anything except that jewel in with you.");
|
||||||
player.getPacketDispatch().sendMessage("You slip and trigger a trap!");
|
break;
|
||||||
player.animate(animations[2]);
|
|
||||||
player.getImpactHandler().manualHit(player, RandomFunction.random(2, 6), HitsplatType.NORMAL);
|
|
||||||
GameWorld.getPulser().submit(new Pulse(1) {
|
|
||||||
@Override
|
|
||||||
public boolean pulse() {
|
|
||||||
player.animate(new Animation(-1, Priority.HIGH));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.getDialogueInterpreter().sendDialogues(2266, null, "And where do you think you're going? A little too eager", "I think. Come and talk to me before you go wandering", "around in there.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "crack":
|
||||||
|
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
||||||
|
player.getPacketDispatch().sendMessage("You need to be level " + level + " thief to crack this safe.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
if (player.getInventory().freeSlots() == 0) {
|
||||||
break;
|
player.getPacketDispatch().sendMessage("Not enough inventory space.");
|
||||||
case "search":
|
return true;
|
||||||
player.animate(animations[3]);
|
}
|
||||||
player.getPacketDispatch().sendMessage("You temporarily disarm the trap!");
|
final boolean success = success(player, Skills.THIEVING);
|
||||||
break;
|
player.lock(4);
|
||||||
|
player.getPacketDispatch().sendMessage("You start cracking the safe.");
|
||||||
|
player.animate(animations[success ? 1 : 0]);
|
||||||
|
GameWorld.getPulser().submit(new Pulse(3, player) {
|
||||||
|
@Override
|
||||||
|
public boolean pulse() {
|
||||||
|
if (success) {
|
||||||
|
handleSuccess(player, (Scenery) node);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
final boolean trapped = RandomFunction.random(3) == 1;
|
||||||
|
if (trapped) {
|
||||||
|
player.getPacketDispatch().sendMessage("You slip and trigger a trap!");
|
||||||
|
player.animate(animations[2]);
|
||||||
|
player.getImpactHandler().manualHit(player, RandomFunction.random(2, 6), HitsplatType.NORMAL);
|
||||||
|
GameWorld.getPulser().submit(new Pulse(1) {
|
||||||
|
@Override
|
||||||
|
public boolean pulse() {
|
||||||
|
player.animate(new Animation(-1, Priority.HIGH));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "search":
|
||||||
|
player.animate(animations[3]);
|
||||||
|
player.getPacketDispatch().sendMessage("You temporarily disarm the trap!");
|
||||||
|
String clearMsg = "/save:clear-trap" + node.getLocation().toString();
|
||||||
|
//clearMsg.concat(node.getLocation().toString());
|
||||||
|
System.out.println(clearMsg);
|
||||||
|
player.setAttribute(clearMsg, true);
|
||||||
|
player.getSkills().updateLevel(Skills.THIEVING, -1, 0);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "climb":
|
||||||
|
|
||||||
|
if(dir.ordinal()==1) {
|
||||||
|
end = new Location(player.getLocation().getX(), player.getLocation().getY() + 5, player.getLocation().getZ());
|
||||||
|
}
|
||||||
|
else if(dir.ordinal()==4){
|
||||||
|
end = new Location(player.getLocation().getX() + 5, player.getLocation().getY(), player.getLocation().getZ());
|
||||||
|
}
|
||||||
|
else if(dir.ordinal()==3){
|
||||||
|
end = new Location(player.getLocation().getX() - 5, player.getLocation().getY(), player.getLocation().getZ());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
end = new Location(player.getLocation().getX(), player.getLocation().getY() - 5, player.getLocation().getZ());
|
||||||
|
}
|
||||||
|
AgilityHandler.walk(player, -1, player.getLocation(), end, null, 0.0, null);
|
||||||
|
break;
|
||||||
|
case "enter":
|
||||||
|
if(player.getSkills().getLevel(Skills.AGILITY) < 5) {
|
||||||
|
|
||||||
|
player.lock(4);
|
||||||
|
|
||||||
|
GameWorld.getPulser().submit(new Pulse(1, player) {
|
||||||
|
@Override
|
||||||
|
public boolean pulse() {
|
||||||
|
player.getSkills().updateLevel(Skills.AGILITY, -5, 0);
|
||||||
|
|
||||||
|
AgilityHandler.forceWalk(player, -1, player.getLocation(), player.getLocation().transform(dir.getStepX() << 1, dir.getStepY() << 1, 0), Animation.create(10580), 4, 26, null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.getPacketDispatch().sendMessage("You don't have enough Agility skill left");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -167,7 +249,7 @@ public class ThievingGuidePlugin extends OptionHandler {
|
||||||
}
|
}
|
||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
player.getInventory().add(item);
|
player.getInventory().add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -186,4 +268,6 @@ public class ThievingGuidePlugin extends OptionHandler {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package content.minigame.roguesden
|
||||||
|
|
||||||
|
import core.api.*
|
||||||
|
import core.game.dialogue.DialogueFile
|
||||||
|
import core.game.dialogue.Topic
|
||||||
|
import core.game.interaction.IntType
|
||||||
|
import core.game.interaction.InteractionListener
|
||||||
|
import core.game.world.map.Location
|
||||||
|
import core.tools.END_DIALOGUE
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
|
||||||
|
class RogueGemListener : InteractionListener {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(Items.MYSTIC_JEWEL_5561, IntType.ITEM, "activate") { player, _ ->
|
||||||
|
openDialogue(player, MysticJewelDialogue())
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MysticJewelDialogue() : DialogueFile() {
|
||||||
|
var firstRun = true
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int) {
|
||||||
|
when (stage) {
|
||||||
|
|
||||||
|
0 -> npcl(
|
||||||
|
2266,
|
||||||
|
core.game.dialogue.FacialExpression.FRIENDLY,
|
||||||
|
"Want to come out then? Giving up are you? You know there's no time limit here."
|
||||||
|
).also { stage++ }
|
||||||
|
|
||||||
|
1 -> showTopics(
|
||||||
|
Topic(core.game.dialogue.FacialExpression.HALF_WORRIED, "Yes I'd like to leave!", 100),
|
||||||
|
|
||||||
|
Topic(core.game.dialogue.FacialExpression.FRIENDLY, "No I'm fine thanks.", END_DIALOGUE),
|
||||||
|
)
|
||||||
|
|
||||||
|
100 -> {
|
||||||
|
|
||||||
|
npcl(
|
||||||
|
2266,
|
||||||
|
core.game.dialogue.FacialExpression.FRIENDLY,
|
||||||
|
"Right you are then, out you come."
|
||||||
|
).also { stage++ }
|
||||||
|
stage = 200
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
200 -> {
|
||||||
|
END_DIALOGUE
|
||||||
|
player!!.properties.teleportLocation = Location.create(3056, 4981, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
Server/src/main/content/minigame/roguesden/PendulumTrap.java
Normal file
46
Server/src/main/content/minigame/roguesden/PendulumTrap.java
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
package content.minigame.roguesden;
|
||||||
|
|
||||||
|
|
||||||
|
import core.game.node.entity.skill.Skills;
|
||||||
|
import content.global.skill.agility.AgilityHandler;
|
||||||
|
import core.game.node.entity.Entity;
|
||||||
|
import core.game.node.entity.player.Player;
|
||||||
|
import core.game.system.task.MovementHook;
|
||||||
|
import core.game.system.task.Pulse;
|
||||||
|
import core.game.world.GameWorld;
|
||||||
|
import core.game.world.map.Direction;
|
||||||
|
import core.game.world.map.Location;
|
||||||
|
import core.game.world.update.flag.context.Animation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles floor spikes trap.
|
||||||
|
* @author taylorwhite18
|
||||||
|
*/
|
||||||
|
public final class PendulumTrap implements MovementHook {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handle(Entity e, final Location l) {
|
||||||
|
final Direction dir = e.getDirection();
|
||||||
|
final Player player = (Player) e;
|
||||||
|
final Location start = l.transform(-dir.getStepX(), -dir.getStepY(), 0);
|
||||||
|
if (player.getSkills().getLevel(Skills.AGILITY) < 5) {
|
||||||
|
e.lock(5);
|
||||||
|
|
||||||
|
GameWorld.getPulser().submit(new Pulse(1, e) {
|
||||||
|
@Override
|
||||||
|
public boolean pulse() {
|
||||||
|
player.getSkills().updateLevel(Skills.AGILITY, -3, 0);
|
||||||
|
|
||||||
|
AgilityHandler.forceWalk(player, -1, l, l.transform(dir.getStepX() << 2, dir.getStepY() << 2, 0), Animation.create(1115), 20, 0, null);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}else {
|
||||||
|
AgilityHandler.failWalk(player, 1, player.getLocation(), start, start, Animation.create(1114), 10, 0, "Your agility level is too low!").setDirection(dir);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
524
Server/src/main/content/minigame/roguesden/RoguesDen.java
Normal file
524
Server/src/main/content/minigame/roguesden/RoguesDen.java
Normal file
|
|
@ -0,0 +1,524 @@
|
||||||
|
package content.minigame.roguesden;
|
||||||
|
|
||||||
|
import static core.api.ContentAPIKt.*;
|
||||||
|
|
||||||
|
|
||||||
|
import core.game.node.entity.Entity;
|
||||||
|
import core.game.node.entity.combat.ImpactHandler;
|
||||||
|
import core.game.node.entity.player.Player;
|
||||||
|
|
||||||
|
import core.game.system.task.MovementHook;
|
||||||
|
import core.game.system.task.Pulse;
|
||||||
|
import core.game.world.GameWorld;
|
||||||
|
import core.game.world.map.*;
|
||||||
|
import core.game.world.map.zone.MapZone;
|
||||||
|
import core.game.world.map.zone.ZoneBorders;
|
||||||
|
import core.game.world.map.zone.ZoneBuilder;
|
||||||
|
import core.game.world.update.flag.context.Animation;
|
||||||
|
import core.plugin.Initializable;
|
||||||
|
import core.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* locationUpdate hook for Rogues Den area
|
||||||
|
* @author taylorwhite18
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Initializable
|
||||||
|
public final class RoguesDen extends MapZone implements Plugin<Object> {
|
||||||
|
|
||||||
|
public RoguesDen() { super("Isafdar", true); }
|
||||||
|
|
||||||
|
Location LOBBY = new Location(3056,4981,1);
|
||||||
|
|
||||||
|
private String STICK_FAIL_MSG = "You set off the trap as you pass.";
|
||||||
|
|
||||||
|
private static final Map<Location, MovementHook> LOCATION_TRAPS = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
List<Location> SPIKE_TRAPS = Arrays.asList(
|
||||||
|
//region 12110
|
||||||
|
new Location(3010, 5002, 1),
|
||||||
|
new Location(3010, 5003, 1),
|
||||||
|
new Location(3010, 5004, 1),
|
||||||
|
new Location(3010, 5005, 1),
|
||||||
|
new Location(3011, 5001, 1),
|
||||||
|
new Location(3011, 5002, 1),
|
||||||
|
new Location(3011, 5003, 1),
|
||||||
|
new Location(3011, 5004, 1),
|
||||||
|
new Location(3012, 5002, 1),
|
||||||
|
new Location(3012, 5003, 1),
|
||||||
|
new Location(3012, 5004, 1),
|
||||||
|
new Location(3012, 5005, 1),
|
||||||
|
new Location(3013, 5001, 1),
|
||||||
|
new Location(3013, 5002, 1),
|
||||||
|
new Location(3013, 5003, 1),
|
||||||
|
new Location(3014, 5002, 1),
|
||||||
|
new Location(3014, 5004, 1),
|
||||||
|
new Location(3019, 4995, 1),
|
||||||
|
new Location(3019, 4997, 1),
|
||||||
|
new Location(3021, 4996, 1),
|
||||||
|
new Location(3026, 4996, 1),
|
||||||
|
new Location(3026, 5000, 1),
|
||||||
|
new Location(3027, 5001, 1),
|
||||||
|
new Location(3028, 4995, 1),
|
||||||
|
new Location(3029, 4997, 1),
|
||||||
|
new Location(3029, 4998, 1),
|
||||||
|
new Location(3029, 4999, 1),
|
||||||
|
new Location(3029, 5000, 1),
|
||||||
|
new Location(3029, 5001, 1),
|
||||||
|
new Location(3030, 4997, 1),
|
||||||
|
new Location(3030, 4998, 1),
|
||||||
|
new Location(3030, 4999, 1),
|
||||||
|
new Location(3030, 5000, 1),
|
||||||
|
new Location(3030, 5001, 1),
|
||||||
|
new Location(3030, 5003, 1),
|
||||||
|
new Location(3030, 5020, 1),
|
||||||
|
new Location(3031, 4997, 1),
|
||||||
|
new Location(3031, 4998, 1),
|
||||||
|
new Location(3031, 4999, 1),
|
||||||
|
new Location(3031, 5000, 1),
|
||||||
|
new Location(3031, 5001, 1),
|
||||||
|
new Location(3031, 5023, 1),
|
||||||
|
new Location(3032, 4995, 1),
|
||||||
|
new Location(3032, 4997, 1),
|
||||||
|
new Location(3032, 4998, 1),
|
||||||
|
new Location(3032, 5000, 1),
|
||||||
|
new Location(3032, 5001, 1),
|
||||||
|
new Location(3033, 4997, 1),
|
||||||
|
new Location(3033, 4998, 1),
|
||||||
|
new Location(3033, 5000, 1),
|
||||||
|
new Location(3033, 5001, 1),
|
||||||
|
new Location(3033, 5003, 1),
|
||||||
|
new Location(3034, 4995, 1),
|
||||||
|
new Location(3034, 4997, 1),
|
||||||
|
new Location(3034, 4998, 1),
|
||||||
|
new Location(3034, 4999, 1),
|
||||||
|
new Location(3034, 5000, 1),
|
||||||
|
new Location(3034, 5001, 1),
|
||||||
|
new Location(3035, 4994, 1),
|
||||||
|
new Location(3035, 4997, 1),
|
||||||
|
new Location(3035, 4998, 1),
|
||||||
|
new Location(3035, 4999, 1),
|
||||||
|
new Location(3035, 5000, 1),
|
||||||
|
new Location(3035, 5001, 1),
|
||||||
|
new Location(3036, 4997, 1),
|
||||||
|
new Location(3036, 4998, 1),
|
||||||
|
new Location(3036, 4999, 1),
|
||||||
|
new Location(3036, 5000, 1),
|
||||||
|
new Location(3036, 5001, 1),
|
||||||
|
new Location(3037, 4995, 1),
|
||||||
|
new Location(3037, 5013, 1),
|
||||||
|
new Location(3038, 5002, 1),
|
||||||
|
new Location(3039, 5012, 1),
|
||||||
|
new Location(3040, 5014, 1),
|
||||||
|
new Location(3043, 5024, 1),
|
||||||
|
new Location(3045, 5024, 1),
|
||||||
|
new Location(3055, 4994, 1),
|
||||||
|
new Location(3056, 4994, 1),
|
||||||
|
new Location(3056, 5000, 1),
|
||||||
|
new Location(3056, 5001, 1),
|
||||||
|
new Location(3057, 4994, 1),
|
||||||
|
new Location(3057, 5000, 1),
|
||||||
|
new Location(3057, 5001, 1),
|
||||||
|
new Location(3058, 5000, 1),
|
||||||
|
new Location(3058, 5001, 1),
|
||||||
|
//region 12111
|
||||||
|
new Location(3021, 5096, 1),
|
||||||
|
new Location(3022, 5094, 1),
|
||||||
|
new Location(3022, 5097, 1),
|
||||||
|
new Location(3023, 5095, 1),
|
||||||
|
new Location(3023, 5102, 1),
|
||||||
|
new Location(3024, 5096, 1),
|
||||||
|
new Location(3025, 5102, 1),
|
||||||
|
new Location(3027, 5102, 1),
|
||||||
|
//region 11854
|
||||||
|
new Location(2963, 5051, 1),
|
||||||
|
new Location(2963, 5052, 1),
|
||||||
|
new Location(2963, 5053, 1),
|
||||||
|
new Location(2963, 5054, 1),
|
||||||
|
new Location(2992, 5046, 1),
|
||||||
|
new Location(2992, 5048, 1),
|
||||||
|
new Location(2992, 5050, 1),
|
||||||
|
new Location(2992, 5052, 1),
|
||||||
|
new Location(2998, 5039, 1),
|
||||||
|
new Location(3005, 5003, 1),
|
||||||
|
new Location(3007, 5003, 1),
|
||||||
|
//region 11855
|
||||||
|
new Location(2963, 5051, 1),
|
||||||
|
new Location(2963, 5052, 1),
|
||||||
|
new Location(2963, 5053, 1),
|
||||||
|
new Location(2963, 5054, 1),
|
||||||
|
new Location(2992, 5046, 1),
|
||||||
|
new Location(2992, 5048, 1),
|
||||||
|
new Location(2992, 5050, 1),
|
||||||
|
new Location(2992, 5052, 1),
|
||||||
|
new Location(2998, 5039, 1),
|
||||||
|
new Location(3005, 5003, 1),
|
||||||
|
new Location(3007, 5003, 1),
|
||||||
|
new Location(2971, 5081, 1),
|
||||||
|
new Location(2972, 5081, 1),
|
||||||
|
new Location(2973, 5081, 1),
|
||||||
|
new Location(2974, 5081, 1),
|
||||||
|
new Location(2975, 5081, 1),
|
||||||
|
new Location(2976, 5081, 1),
|
||||||
|
new Location(2977, 5081, 1),
|
||||||
|
new Location(2979, 5104, 1),
|
||||||
|
new Location(2980, 5103, 1),
|
||||||
|
new Location(2980, 5104, 1),
|
||||||
|
new Location(2981, 5103, 1),
|
||||||
|
new Location(2981, 5104, 1),
|
||||||
|
new Location(2982, 5103, 1),
|
||||||
|
new Location(2982, 5104, 1),
|
||||||
|
new Location(2983, 5103, 1),
|
||||||
|
new Location(2983, 5104, 1),
|
||||||
|
new Location(2984, 5103, 1),
|
||||||
|
new Location(2984, 5104, 1),
|
||||||
|
new Location(2985, 5103, 1),
|
||||||
|
new Location(2985, 5104, 1),
|
||||||
|
new Location(2986, 5103, 1),
|
||||||
|
new Location(2986, 5104, 1),
|
||||||
|
new Location(2987, 5103, 1),
|
||||||
|
new Location(2997, 5103, 1),
|
||||||
|
new Location(2998, 5104, 1),
|
||||||
|
new Location(2999, 5103, 1),
|
||||||
|
new Location(3000, 5104, 1),
|
||||||
|
//pad traps
|
||||||
|
//region 12110
|
||||||
|
new Location(3044, 5000, 1),
|
||||||
|
new Location(3045, 5000, 1),
|
||||||
|
new Location(3045, 5001, 1),
|
||||||
|
new Location(3045, 5002, 1),
|
||||||
|
new Location(3045, 5003, 1),
|
||||||
|
new Location(3046, 5002, 1),
|
||||||
|
new Location(3046, 5003, 1),
|
||||||
|
new Location(3046, 5004, 1),
|
||||||
|
new Location(3047, 5002, 1),
|
||||||
|
new Location(3047, 5003, 1),
|
||||||
|
new Location(3047, 5005, 1),
|
||||||
|
//region 11854
|
||||||
|
new Location(2965, 5000, 1),
|
||||||
|
new Location(2965, 5002, 1),
|
||||||
|
new Location(2965, 5004, 1),
|
||||||
|
new Location(2967, 5000, 1),
|
||||||
|
new Location(2967, 5002, 1),
|
||||||
|
new Location(2967, 5004, 1),
|
||||||
|
new Location(3005, 4996, 1),
|
||||||
|
new Location(3005, 5032, 1),
|
||||||
|
new Location(3005, 5034, 1),
|
||||||
|
new Location(3006, 5033, 1),
|
||||||
|
new Location(3007, 4996, 1),
|
||||||
|
new Location(3007, 5032, 1),
|
||||||
|
new Location(3007, 5034, 1),
|
||||||
|
//region 11855
|
||||||
|
new Location(2962, 5082, 1),
|
||||||
|
new Location(2962, 5083, 1),
|
||||||
|
new Location(2963, 5080, 1),
|
||||||
|
new Location(2963, 5081, 1),
|
||||||
|
new Location(2963, 5082, 1),
|
||||||
|
new Location(2963, 5083, 1),
|
||||||
|
new Location(2963, 5084, 1),
|
||||||
|
new Location(2964, 5079, 1),
|
||||||
|
new Location(2964, 5080, 1),
|
||||||
|
new Location(2964, 5081, 1),
|
||||||
|
new Location(2964, 5082, 1),
|
||||||
|
new Location(2964, 5083, 1),
|
||||||
|
new Location(2964, 5084, 1),
|
||||||
|
new Location(2965, 5079, 1),
|
||||||
|
new Location(2965, 5080, 1),
|
||||||
|
new Location(2965, 5081, 1),
|
||||||
|
new Location(2989, 5071, 1),
|
||||||
|
new Location(2991, 5071, 1),
|
||||||
|
new Location(2992, 5068, 1),
|
||||||
|
new Location(2992, 5070, 1),
|
||||||
|
//explosive traps
|
||||||
|
//region 12110
|
||||||
|
new Location(3011, 5033, 1),
|
||||||
|
new Location(3012, 5032, 1),
|
||||||
|
new Location(3012, 5033, 1),
|
||||||
|
new Location(3012, 5034, 1),
|
||||||
|
new Location(3013, 5033, 1),
|
||||||
|
new Location(3049, 5034, 1),
|
||||||
|
new Location(3049, 5035, 1),
|
||||||
|
new Location(3049, 5036, 1),
|
||||||
|
new Location(3049, 5037, 1),
|
||||||
|
new Location(3049, 5038, 1),
|
||||||
|
new Location(3049, 5039, 1),
|
||||||
|
new Location(3049, 5040, 1),
|
||||||
|
new Location(3050, 5033, 1),
|
||||||
|
new Location(3050, 5034, 1),
|
||||||
|
new Location(3050, 5035, 1),
|
||||||
|
new Location(3050, 5036, 1),
|
||||||
|
new Location(3050, 5037, 1),
|
||||||
|
new Location(3050, 5038, 1),
|
||||||
|
new Location(3050, 5039, 1),
|
||||||
|
new Location(3050, 5040, 1),
|
||||||
|
new Location(3050, 5041, 1),
|
||||||
|
new Location(3051, 5033, 1),
|
||||||
|
new Location(3051, 5034, 1),
|
||||||
|
new Location(3051, 5040, 1),
|
||||||
|
new Location(3051, 5041, 1),
|
||||||
|
new Location(3052, 5033, 1),
|
||||||
|
new Location(3052, 5034, 1),
|
||||||
|
new Location(3052, 5036, 1),
|
||||||
|
new Location(3052, 5037, 1),
|
||||||
|
new Location(3052, 5038, 1),
|
||||||
|
new Location(3052, 5040, 1),
|
||||||
|
new Location(3052, 5041, 1),
|
||||||
|
new Location(3052, 5042, 1),
|
||||||
|
new Location(3053, 5033, 1),
|
||||||
|
new Location(3053, 5034, 1),
|
||||||
|
new Location(3053, 5036, 1),
|
||||||
|
new Location(3053, 5038, 1),
|
||||||
|
new Location(3053, 5040, 1),
|
||||||
|
new Location(3053, 5041, 1),
|
||||||
|
new Location(3053, 5042, 1),
|
||||||
|
new Location(3054, 5033, 1),
|
||||||
|
new Location(3054, 5034, 1),
|
||||||
|
new Location(3054, 5036, 1),
|
||||||
|
new Location(3054, 5037, 1),
|
||||||
|
new Location(3054, 5038, 1),
|
||||||
|
new Location(3054, 5040, 1),
|
||||||
|
new Location(3054, 5041, 1),
|
||||||
|
new Location(3054, 5042, 1),
|
||||||
|
new Location(3055, 5033, 1),
|
||||||
|
new Location(3055, 5034, 1),
|
||||||
|
new Location(3055, 5040, 1),
|
||||||
|
new Location(3055, 5041, 1),
|
||||||
|
new Location(3055, 5042, 1),
|
||||||
|
new Location(3056, 5026, 1),
|
||||||
|
new Location(3056, 5027, 1),
|
||||||
|
new Location(3056, 5033, 1),
|
||||||
|
new Location(3056, 5034, 1),
|
||||||
|
new Location(3056, 5035, 1),
|
||||||
|
new Location(3056, 5036, 1),
|
||||||
|
new Location(3056, 5037, 1),
|
||||||
|
new Location(3056, 5038, 1),
|
||||||
|
new Location(3056, 5039, 1),
|
||||||
|
new Location(3056, 5040, 1),
|
||||||
|
new Location(3056, 5041, 1),
|
||||||
|
new Location(3056, 5042, 1),
|
||||||
|
new Location(3057, 5025, 1),
|
||||||
|
new Location(3057, 5026, 1),
|
||||||
|
new Location(3057, 5034, 1),
|
||||||
|
new Location(3057, 5035, 1),
|
||||||
|
new Location(3057, 5036, 1),
|
||||||
|
new Location(3057, 5037, 1),
|
||||||
|
new Location(3057, 5038, 1),
|
||||||
|
new Location(3057, 5039, 1),
|
||||||
|
new Location(3057, 5040, 1),
|
||||||
|
new Location(3057, 5041, 1),
|
||||||
|
new Location(3060, 5022, 1),
|
||||||
|
new Location(3061, 5022, 1),
|
||||||
|
new Location(3061, 5023, 1),
|
||||||
|
new Location(3062, 5022, 1),
|
||||||
|
new Location(3062, 5023, 1),
|
||||||
|
//region 11854
|
||||||
|
new Location(2979, 5023, 1),
|
||||||
|
new Location(2979, 5025, 1),
|
||||||
|
new Location(2980, 5024, 1),
|
||||||
|
new Location(2981, 5023, 1),
|
||||||
|
new Location(2981, 5025, 1),
|
||||||
|
new Location(2982, 5024, 1),
|
||||||
|
new Location(2998, 5050, 1),
|
||||||
|
new Location(2998, 5052, 1),
|
||||||
|
new Location(2998, 5054, 1),
|
||||||
|
new Location(3003, 5016, 1),
|
||||||
|
new Location(3003, 5021, 1),
|
||||||
|
new Location(3003, 5026, 1),
|
||||||
|
new Location(3005, 5016, 1),
|
||||||
|
new Location(3005, 5021, 1),
|
||||||
|
new Location(3005, 5026, 1),
|
||||||
|
new Location(3005, 5033, 1),
|
||||||
|
new Location(3006, 5032, 1),
|
||||||
|
new Location(3006, 5034, 1),
|
||||||
|
new Location(3007, 5016, 1),
|
||||||
|
new Location(3007, 5021, 1),
|
||||||
|
new Location(3007, 5026, 1),
|
||||||
|
new Location(3007, 5033, 1),
|
||||||
|
//region 11855
|
||||||
|
new Location(2973, 5066, 1),
|
||||||
|
new Location(2973, 5067, 1),
|
||||||
|
new Location(2973, 5068, 1),
|
||||||
|
new Location(2974, 5067, 1),
|
||||||
|
new Location(2974, 5068, 1)
|
||||||
|
);
|
||||||
|
List<Location> WALL_TRAPSONE = Arrays.asList(
|
||||||
|
//region 12110
|
||||||
|
new Location(3022, 5030, 1),
|
||||||
|
new Location(3022, 5036, 1),
|
||||||
|
new Location(3029, 5021, 1),
|
||||||
|
new Location(3030, 5030, 1),
|
||||||
|
new Location(3032, 5022, 1),
|
||||||
|
new Location(3037, 5011, 1),
|
||||||
|
new Location(3062, 5037, 1),
|
||||||
|
new Location(3062, 5038, 1),
|
||||||
|
new Location(3062, 5039, 1),
|
||||||
|
//region 11854
|
||||||
|
new Location(2961, 5051, 1),
|
||||||
|
new Location(2961, 5053, 1),
|
||||||
|
new Location(2961, 5055, 1),
|
||||||
|
new Location(2965, 5052, 1),
|
||||||
|
new Location(2965, 5054, 1),
|
||||||
|
new Location(2989, 4996, 1),
|
||||||
|
new Location(2989, 4999, 1),
|
||||||
|
new Location(2990, 4996, 1),
|
||||||
|
new Location(2990, 4999, 1),
|
||||||
|
new Location(2990, 5047, 1),
|
||||||
|
new Location(2990, 5049, 1),
|
||||||
|
new Location(2990, 5051, 1),
|
||||||
|
new Location(2990, 5053, 1),
|
||||||
|
new Location(2991, 4996, 1),
|
||||||
|
new Location(2991, 4999, 1),
|
||||||
|
new Location(2992, 4996, 1),
|
||||||
|
new Location(2992, 4999, 1),
|
||||||
|
new Location(2993, 4996, 1),
|
||||||
|
new Location(2993, 4999, 1),
|
||||||
|
new Location(2994, 5047, 1),
|
||||||
|
new Location(2994, 5049, 1),
|
||||||
|
new Location(2994, 5051, 1),
|
||||||
|
new Location(2994, 5053, 1)
|
||||||
|
);
|
||||||
|
List<Location> WALL_TRAPSSPIKE = Arrays.asList(
|
||||||
|
//region 12110
|
||||||
|
new Location(3030, 5013, 1),
|
||||||
|
new Location(3032, 5012, 1),
|
||||||
|
//region 11854
|
||||||
|
new Location(3004, 5014, 1),
|
||||||
|
new Location(3004, 5017, 1),
|
||||||
|
new Location(3004, 5019, 1),
|
||||||
|
new Location(3004, 5022, 1),
|
||||||
|
new Location(3004, 5024, 1),
|
||||||
|
new Location(3004, 5027, 1),
|
||||||
|
new Location(3006, 5014, 1),
|
||||||
|
new Location(3006, 5017, 1),
|
||||||
|
new Location(3006, 5019, 1),
|
||||||
|
new Location(3006, 5022, 1),
|
||||||
|
new Location(3006, 5024, 1),
|
||||||
|
new Location(3006, 5027, 1)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configure() {
|
||||||
|
register(new ZoneBorders(2945, 4990, 3066, 5117, 1));
|
||||||
|
PendulumTrap pendulumTrap = new PendulumTrap();
|
||||||
|
//region 12110
|
||||||
|
LOCATION_TRAPS.put(Location.create(3027, 5049, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3027, 5053, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5049, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5053, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5049, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5053, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3031, 5049, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3031, 5053, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(3040, 4997, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3040, 4999, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3042, 4997, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3042, 4999, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(3052, 5015, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3056, 5015, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3052, 5017, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3056, 5017, 1), pendulumTrap);
|
||||||
|
//region 12111
|
||||||
|
LOCATION_TRAPS.put(Location.create(3022, 5108, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3022, 5110, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3024, 5108, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3024, 5110, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(3027, 5108, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3027, 5110, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5108, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3029, 5110, 1), pendulumTrap);
|
||||||
|
//region 11854
|
||||||
|
LOCATION_TRAPS.put(Location.create(2953, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2953, 5027, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2955, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2955, 5027, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(2956, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2956, 5027, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2958, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2958, 5027, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(2959, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2959, 5027, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2961, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2961, 5027, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(2962, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2962, 5027, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2964, 5025, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2964, 5027, 1), pendulumTrap);
|
||||||
|
|
||||||
|
LOCATION_TRAPS.put(Location.create(3001, 5032, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3001, 5034, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3003, 5032, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(3003, 5034, 1), pendulumTrap);
|
||||||
|
//region 11855
|
||||||
|
LOCATION_TRAPS.put(Location.create(2981, 5109, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2981, 5111, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2983, 5109, 1), pendulumTrap);
|
||||||
|
LOCATION_TRAPS.put(Location.create(2983, 5111, 1), pendulumTrap);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void locationUpdate(Entity e, Location last) {
|
||||||
|
if (e instanceof Player) {
|
||||||
|
Player player = (Player) e;
|
||||||
|
String clearmsg = "clear-trap" + player.getLocation().toString();
|
||||||
|
|
||||||
|
if ((player.getAttribute(clearmsg, true)) && (SPIKE_TRAPS.contains(player.getLocation()) || WALL_TRAPSSPIKE.contains(player.getLocation().getCardinalTiles()))) {
|
||||||
|
System.out.println("hello");
|
||||||
|
sendMessage(player, STICK_FAIL_MSG);
|
||||||
|
player.animate(Animation.create(1114));
|
||||||
|
player.getPacketDispatch().sendSceneryAnimation(RegionManager.getObject(player.getLocation()), Animation.create(1111));
|
||||||
|
impact(player, 1, ImpactHandler.HitsplatType.NORMAL);
|
||||||
|
player.teleport(LOBBY);
|
||||||
|
|
||||||
|
} else if ((SPIKE_TRAPS.contains(player.getLocation()))) {
|
||||||
|
GameWorld.getPulser().submit(new Pulse(20) {
|
||||||
|
@Override
|
||||||
|
public boolean pulse() {
|
||||||
|
player.removeAttribute(clearmsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||||
|
ZoneBuilder.configure(this);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object fireEvent(String identifier, Object... args) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean move(Entity e, Location loc, Location dest) {
|
||||||
|
if (!e.getLocks().isMovementLocked() && e instanceof Player) {
|
||||||
|
MovementHook hook = LOCATION_TRAPS.get(loc);
|
||||||
|
if (hook != null) {
|
||||||
|
e.setDirection(Direction.getLogicalDirection(loc, dest));
|
||||||
|
return hook.handle(e, loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return super.move(e, loc, dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ import core.game.node.entity.player.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reprepsents the dialogue plugin used to handle the brian orichard npc.
|
* Reprepsents the dialogue plugin used to handle the brian orichard npc.
|
||||||
* @author 'Vexia
|
* @authors 'Vexia, taylorwhite18
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
@Initializable
|
@Initializable
|
||||||
|
|
@ -40,7 +40,7 @@ public final class BrianORichardDialogue extends DialoguePlugin {
|
||||||
@Override
|
@Override
|
||||||
public boolean open(Object... args) {
|
public boolean open(Object... args) {
|
||||||
npc = (NPC) args[0];
|
npc = (NPC) args[0];
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Hi there, looking for a challenge are you?");
|
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Hi there, looking for a challenge are you?");
|
||||||
stage = 1;
|
stage = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -48,75 +48,104 @@ public final class BrianORichardDialogue extends DialoguePlugin {
|
||||||
@Override
|
@Override
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
public boolean handle(int interfaceId, int buttonId) {
|
||||||
switch (stage) {
|
switch (stage) {
|
||||||
case 1:
|
|
||||||
interpreter.sendOptions("Select an Option", "Yes, actually, what've you got?", "What is this place?", "No thanks.");
|
|
||||||
stage = 2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
case 1:
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Yes actually, what've you got?");
|
interpreter.sendOptions("Select an Option", "Yes, actually, what've you got?", "What is this place?", "No thanks.");
|
||||||
stage = 10;
|
stage = 2;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "What is this place?");
|
switch (buttonId) {
|
||||||
stage = 20;
|
case 1:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.ASKING, "Yes actually, what've you got?");
|
||||||
|
stage = 10;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.ASKING, "What is this place?");
|
||||||
|
stage = 20;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.FRIENDLY, "No thanks.");
|
||||||
|
stage = 30;
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 10:
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "No thanks.");
|
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
||||||
stage = 30;
|
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Shame, I don't think I have anything for you. Train up", "your Thieving skill to at least 50 and I might be able to", "help you out.");
|
||||||
|
stage = 11;
|
||||||
|
} else if((player.getSkills().getLevel(Skills.AGILITY) < 50 && player.getSkills().getLevel(Skills.THIEVING) > 49)) {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Shame, I don't think I have anything for you. Train up your Agility skill to at least 50 and I might be able to help you out.");
|
||||||
|
stage = 11;
|
||||||
|
}
|
||||||
|
else if((player.getSkills().getLevel(Skills.AGILITY) > 49 && player.getSkills().getLevel(Skills.THIEVING) > 49)) {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Aha, I have the perfect thing for you! See if you", "can get to the centre of my maze, the further", "you get the greater the rewards. There's even some", "special prizes if you make it right to the end.");
|
||||||
|
stage = 30;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
case 11:
|
||||||
break;
|
end();
|
||||||
case 10:
|
break;
|
||||||
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
case 20:
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Shame, I don't think I have anything for you. Train up", "your Thieving skill to at least 50 and I might be able to", "help you out.");
|
interpreter.sendDialogues(npc, FacialExpression.NEUTRAL, "Ah welcome to my humble home, well actually it belongs", "to mummsie but she's getting on a bit so I look after", "the place for her.");
|
||||||
stage = 11;
|
stage = 21;
|
||||||
} else {
|
break;
|
||||||
|
case 21:
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.ASKING, "So are you interested in a challenge?");
|
||||||
|
stage = 22;
|
||||||
|
break;
|
||||||
|
case 22:
|
||||||
|
interpreter.sendOptions("Select an Option", "Yes actually, what've you got?", "No thanks.");
|
||||||
|
stage = 23;
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
switch (buttonId) {
|
||||||
|
case 1:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.ASKING, "Yes actually, what've you got?");
|
||||||
|
stage = 24;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.FRIENDLY, "No, thanks.");
|
||||||
|
stage = 25;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Shame, I don't think I have anything for you. Train up", "your Thieving skill to at least 50 and I might be able to", "help you out.");
|
||||||
|
stage = 25;
|
||||||
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Ah welcome to my humble home, well actually it belongs", "to mummsie but she's getting on a bit so I look after", "the place for her.");
|
|
||||||
stage = 21;
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "So are you interested in a challenge?");
|
|
||||||
stage = 22;
|
|
||||||
break;
|
|
||||||
case 22:
|
|
||||||
interpreter.sendOptions("Select an Option", "Yes actually, what've you got?", "No thanks.");
|
|
||||||
stage = 23;
|
|
||||||
break;
|
|
||||||
case 23:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Yes actually, what've you got?");
|
|
||||||
stage = 24;
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 25:
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "No, thanks.");
|
end();
|
||||||
stage = 25;
|
break;
|
||||||
|
case 30:
|
||||||
|
interpreter.sendOptions("Select an Option", "Ok that sounds good!", "No thanks.");
|
||||||
|
stage = 31;
|
||||||
|
break;
|
||||||
|
case 31:
|
||||||
|
switch (buttonId) {
|
||||||
|
case 1:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.HAPPY, "Ok that sounds good!");
|
||||||
|
stage = 42;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.FRIENDLY, "No thanks.");
|
||||||
|
stage = 44;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 42://dialogue for entering rogues guild, doesn
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Great! When you enter the maze, I'll give you", "a jewel - it'll allow you to get out of the maze", "at any time. However that's all you're allowed to take", "in with you, no cheating!");
|
||||||
|
stage = 43;
|
||||||
|
break;
|
||||||
|
case 43: interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Oh one last thing, if you happen to see my harmonica", "I'd really like to have it back.");
|
||||||
|
player.setAttribute("/save:rogues-den", true);
|
||||||
|
player.setAttribute("/save:delaytrap", true);
|
||||||
|
stage = 44;
|
||||||
|
break;
|
||||||
|
case 44:
|
||||||
|
end();
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
if (player.getSkills().getLevel(Skills.THIEVING) < 50) {
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Shame, I don't think I have anything for you. Train up", "your Thieving skill to at least 50 and I might be able to", "help you out.");
|
|
||||||
stage = 25;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 30:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue