forked from 2009Scape/Server
commit
5b01018315
12 changed files with 2686 additions and 2176 deletions
4297
Server/server.sql
4297
Server/server.sql
File diff suppressed because one or more lines are too long
|
|
@ -121,7 +121,7 @@ public enum Tasks {
|
|||
return true;
|
||||
}
|
||||
}),*/
|
||||
SHADE(new Task(new int[] { 3617, 1250, 1241, 1246, 1248, 1250, 428 }, new String[] { "Shades are dark and mysterious, they hide in the shadows so be wary of ambushes." }, 1, new Master[] { Master.VANNAKA }, true)),
|
||||
SHADE(new Task(new int[] { 3617, 1250, 1241, 1246, 1248, 1250, 428, 1240 }, new String[] { "Shades are dark and mysterious, they hide in the shadows so be wary of ambushes." }, 1, new Master[] { Master.VANNAKA }, true)),
|
||||
/*SHADOW_WARRIORS(new Task(new int[] { 158 }, new String[] { "Shadow warriors are dark and mysterious, they hide in the shadows so be wary of ambushes." }, 1, new Master[] { Master.VANNAKA, Master.CHAELDAR }, false) {
|
||||
@Override
|
||||
public boolean isDisabled() {
|
||||
|
|
|
|||
|
|
@ -96,6 +96,10 @@ public final class ScriptManager {
|
|||
if (file.getName().equals(".DS_Store")) {
|
||||
continue;
|
||||
}
|
||||
//Files to EXCLUDE from loading
|
||||
if (file.getName().equals("simon_templeton.asc") || file.getName().equals("ardougne_baker.asc") || file.getName().equals("anna_isaakson.asc")){
|
||||
continue;
|
||||
}
|
||||
if (file.isDirectory()) {
|
||||
load(file);
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -7,26 +7,22 @@ import org.crandor.game.node.entity.player.Player;
|
|||
|
||||
/**
|
||||
* Handles Guardian mummy dialogue.
|
||||
* @author Emperor
|
||||
* @author Originally Emperor, completely redone by Ceikry.
|
||||
*/
|
||||
public final class GuardMummyDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* If the player successfully caught the evil twin.
|
||||
* Will remain unused until the quest is implemented. (if ever)
|
||||
*/
|
||||
private int type;
|
||||
//private int type;
|
||||
|
||||
/**
|
||||
* Constructs a new {@code GuardMummyDialogue} {@code Object}.
|
||||
*/
|
||||
public GuardMummyDialogue() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code GuardMummyDialogue} {@code Object}.
|
||||
* @param player The player.
|
||||
*/
|
||||
public GuardMummyDialogue() {super();}
|
||||
public GuardMummyDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
|
@ -39,18 +35,78 @@ public final class GuardMummyDialogue extends DialoguePlugin {
|
|||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
type = args.length == 1 ? 0 : (Integer) args[1];
|
||||
if(args.length > 1){
|
||||
switch((int) args[1]){
|
||||
case 0:
|
||||
npc("You! How did you get into this place?");
|
||||
stage = 50;
|
||||
break;
|
||||
case 1:
|
||||
player("I know what I'm doing - let's get on with it.");
|
||||
stage = 10;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
npc("Errr");
|
||||
}
|
||||
/*type = args.length == 1 ? 0 : (Integer) args[1];
|
||||
if (type == 1) {
|
||||
player("I know what I'm doing - let's get on with it.");
|
||||
} else {
|
||||
System.out.println("TODO:1");
|
||||
}
|
||||
npc("You! How did you get in?");
|
||||
}*/
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage++) {
|
||||
switch(stage){
|
||||
case 10:
|
||||
npc("Fine, I'll take you to the first room now...");
|
||||
stage = 60;
|
||||
break;
|
||||
case 50:
|
||||
player("I could ask you the same thing.");
|
||||
stage = 51;
|
||||
break;
|
||||
case 51:
|
||||
npc("Nevermind that. I suppose since you're here I can tell", "you how to play.");
|
||||
stage = 52;
|
||||
break;
|
||||
case 52:
|
||||
npc("In each room there are urns, a chest, and a sarcophagus.");
|
||||
stage = 53;
|
||||
break;
|
||||
case 53:
|
||||
npc("The urns contain artifacts based on the room that you are","currently in. The chest contains valuable artifacts but is","sometimes trapped. The sarcophagus has one of my","brothers in it. And lots of artifacts.");
|
||||
stage = 54;
|
||||
break;
|
||||
case 54:
|
||||
player("Anything else I should know?");
|
||||
stage = 55;
|
||||
break;
|
||||
case 55:
|
||||
npc("Yes, each room requires more thieving knowledge than the"," last. And be careful not to die.");
|
||||
stage = 56;
|
||||
break;
|
||||
case 56:
|
||||
player("Oh, yes, dying. Not good. Well I suppose that covers it?");
|
||||
stage = 57;
|
||||
break;
|
||||
case 57:
|
||||
npc("Yep.");
|
||||
stage = 58;
|
||||
break;
|
||||
case 58:
|
||||
end();
|
||||
break;
|
||||
case 60:
|
||||
end();
|
||||
ActivityManager.start(player, "Pyramid plunder", false);
|
||||
break;
|
||||
|
||||
}
|
||||
/*switch (stage++) {
|
||||
case 0:
|
||||
if (type == 1) {
|
||||
npc("Fine, I'll take you to the first room now...");
|
||||
|
|
@ -66,7 +122,7 @@ public final class GuardMummyDialogue extends DialoguePlugin {
|
|||
System.out.println("TODO:3");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@ import org.crandor.game.node.Node;
|
|||
import org.crandor.game.node.entity.npc.NPC;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.node.object.GameObject;
|
||||
import org.crandor.game.system.task.Pulse;
|
||||
import org.crandor.game.world.GameWorld;
|
||||
import org.crandor.game.world.map.Location;
|
||||
import org.crandor.game.world.update.flag.context.Animation;
|
||||
import org.crandor.plugin.Plugin;
|
||||
import org.crandor.tools.RandomFunction;
|
||||
|
||||
|
|
@ -51,6 +54,7 @@ public final class PyramidOptionHandler extends OptionHandler {
|
|||
ObjectDefinition.forId(16458).getConfigurations().put("option:leave tomb", this);
|
||||
ObjectDefinition.forId(16459).getConfigurations().put("option:leave tomb", this);
|
||||
NPCDefinition.forId(4476).getConfigurations().put("option:start-minigame", this);
|
||||
NPCDefinition.forId(4476).getConfigurations().put("option:talk-to",this);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -59,6 +63,7 @@ public final class PyramidOptionHandler extends OptionHandler {
|
|||
if (node instanceof GameObject) {
|
||||
Location destination = EMPTY_ROOM;
|
||||
GameObject object = (GameObject) node;
|
||||
boolean willBePushed = (RandomFunction.random(10) > 3);
|
||||
if (object.getId() == 16458 || object.getId() == 16459) {
|
||||
ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, Location.create(3288, 2801, 0));
|
||||
return true;
|
||||
|
|
@ -75,9 +80,28 @@ public final class PyramidOptionHandler extends OptionHandler {
|
|||
}
|
||||
player.getConfigManager().set(704, value);
|
||||
player.getPacketDispatch().sendMessage("You use your thieving skills to search the stone panel.");
|
||||
ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, destination, "You find a door! You open it.");
|
||||
if(entrance == currentEntrance && willBePushed){
|
||||
player.lock();
|
||||
player.animate(new Animation(7299));
|
||||
player.getImpactHandler().setDisabledTicks(4);
|
||||
GameWorld.submit(new Pulse(4, player) {
|
||||
@Override
|
||||
public boolean pulse() {
|
||||
player.unlock();
|
||||
player.getAnimator().reset();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, destination, "You find a door! You open it.");
|
||||
}
|
||||
//ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, destination, "You find a door! You open it.");
|
||||
} else if (node instanceof NPC) {
|
||||
player.getDialogueInterpreter().open(node.getId(), node, 1);
|
||||
if (option.equals("talk-to")) {
|
||||
player.getDialogueInterpreter().open(node.getId(), node, 0);
|
||||
} else {
|
||||
player.getDialogueInterpreter().open(node.getId(), node, 1);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
package plugin.activity.pyramidplunder;
|
||||
import org.crandor.game.node.entity.Entity;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.world.map.Location;
|
||||
import org.crandor.tools.RandomFunction;
|
||||
|
||||
/**
|
||||
* Handles the mummy NPC in pyramid plunder
|
||||
* @author ceik
|
||||
*/
|
||||
public final class PyramidPlunderMummyNPC extends PyramidPlunderNPC {
|
||||
|
||||
/**
|
||||
* The swarm id.
|
||||
*/
|
||||
private static final int[] IDS = new int[] { 1958 };
|
||||
|
||||
public PyramidPlunderMummyNPC(int id, Location location, Player player) {
|
||||
super(id, location, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
setRespawn(false);
|
||||
getProperties().getCombatPulse().attack(player);
|
||||
sendChat("How dare you disturb my rest!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleTickActions() {
|
||||
super.handleTickActions();
|
||||
if (!getProperties().getCombatPulse().isAttacking()) {
|
||||
getProperties().getCombatPulse().attack(player);
|
||||
}
|
||||
if (getProperties().getCombatPulse().isAttacking()) {
|
||||
if (RandomFunction.random(40) < 2) {
|
||||
sendChat("Leave this place!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIgnoreMultiBoundaries(Entity victim) {
|
||||
return victim == player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return IDS;
|
||||
}
|
||||
|
||||
}
|
||||
188
Server/src/plugin/activity/pyramidplunder/PyramidPlunderNPC.java
Normal file
188
Server/src/plugin/activity/pyramidplunder/PyramidPlunderNPC.java
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
package plugin.activity.pyramidplunder;
|
||||
|
||||
import org.crandor.game.interaction.MovementPulse;
|
||||
import org.crandor.game.node.entity.Entity;
|
||||
import org.crandor.game.node.entity.combat.CombatStyle;
|
||||
import org.crandor.game.node.entity.npc.AbstractNPC;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.world.GameWorld;
|
||||
import org.crandor.game.world.map.Location;
|
||||
import org.crandor.game.world.map.RegionManager;
|
||||
import org.crandor.game.world.map.path.Pathfinder;
|
||||
import org.crandor.plugin.Plugin;
|
||||
|
||||
/**
|
||||
* Handles a Pyramid Plunder enemy, adapted from AntiMacroNPC.java by ceikry
|
||||
* @author Vexia
|
||||
*/
|
||||
public abstract class PyramidPlunderNPC extends AbstractNPC {
|
||||
|
||||
/**
|
||||
* The player.
|
||||
*/
|
||||
protected final Player player;
|
||||
|
||||
/**
|
||||
* The quotes the npc will say(null if none)
|
||||
*/
|
||||
private String[] quotes;
|
||||
|
||||
/**
|
||||
* The counter representing speech cycles.
|
||||
*/
|
||||
private int count;
|
||||
|
||||
/**
|
||||
* The time until the next speech.
|
||||
*/
|
||||
private int nextSpeech;
|
||||
|
||||
/**
|
||||
* If the players time is up.
|
||||
*/
|
||||
protected boolean timeUp;
|
||||
|
||||
/**
|
||||
* The end time.
|
||||
*/
|
||||
private int endTime;
|
||||
|
||||
/**
|
||||
* Constructs a new {@code AntiMacroNPC} {@code Object}.
|
||||
* @param id the id.
|
||||
* @param location the location.
|
||||
* @param player the player.
|
||||
*/
|
||||
public PyramidPlunderNPC(int id, Location location, Player player) {
|
||||
super(id, location);
|
||||
this.player = player;
|
||||
this.quotes = quotes;
|
||||
this.endTime = (int) (GameWorld.getTicks() + (1000 / 0.6));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
location = RegionManager.getSpawnLocation(player, this);
|
||||
if (location == null) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
super.init();
|
||||
startFollowing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleTickActions() {
|
||||
if (GameWorld.getTicks() > endTime) {
|
||||
clear();
|
||||
}
|
||||
if (!getLocks().isMovementLocked()) {
|
||||
if (dialoguePlayer == null || !dialoguePlayer.isActive() || !dialoguePlayer.getInterfaceManager().hasChatbox()) {
|
||||
dialoguePlayer = null;
|
||||
}
|
||||
}
|
||||
if (!player.isActive() || !getLocation().withinDistance(player.getLocation(), 10)) {
|
||||
handlePlayerLeave();
|
||||
}
|
||||
if (!getPulseManager().hasPulseRunning()) {
|
||||
startFollowing();
|
||||
}
|
||||
if (quotes != null) {
|
||||
if (nextSpeech < GameWorld.getTicks() && this.getDialoguePlayer() == null && !this.getLocks().isMovementLocked()) {
|
||||
if (count > quotes.length - 1) {
|
||||
return;
|
||||
}
|
||||
nextSpeech = (int) (GameWorld.getTicks() + (20 / 0.5));
|
||||
if (++count >= quotes.length) {
|
||||
setTimeUp(true);
|
||||
handleTimeUp();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the player is gone.
|
||||
*/
|
||||
public void handlePlayerLeave() {
|
||||
clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the quotes are finished.
|
||||
*/
|
||||
public void handleTimeUp() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAttackable(Entity entity, CombatStyle style) {
|
||||
if (entity instanceof Player && entity != player) {
|
||||
((Player) entity).getPacketDispatch().sendMessage("It's not after you.");
|
||||
return false;
|
||||
}
|
||||
return super.isAttackable(entity, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRegionInactivity() {
|
||||
super.onRegionInactivity();
|
||||
clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
super.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractNPC construct(int id, Location location, Object... objects) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Starts following the player.
|
||||
*/
|
||||
public void startFollowing() {
|
||||
getPulseManager().run(new MovementPulse(this, player, Pathfinder.DUMB) {
|
||||
@Override
|
||||
public boolean pulse() {
|
||||
return false;
|
||||
}
|
||||
}, "movement");
|
||||
face(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
return super.newInstance(arg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player.
|
||||
* @return The player.
|
||||
*/
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the timeUp.
|
||||
* @return The timeUp.
|
||||
*/
|
||||
public boolean isTimeUp() {
|
||||
return timeUp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the timeUp.
|
||||
* @param timeUp The timeUp to set.
|
||||
*/
|
||||
public void setTimeUp(boolean timeUp) {
|
||||
this.timeUp = timeUp;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -5,18 +5,16 @@ import org.crandor.game.content.global.action.ClimbActionHandler;
|
|||
import org.crandor.game.content.skill.Skills;
|
||||
import org.crandor.game.interaction.OptionHandler;
|
||||
import org.crandor.game.node.Node;
|
||||
import org.crandor.game.node.entity.Entity;
|
||||
import org.crandor.game.node.entity.combat.ImpactHandler;
|
||||
import org.crandor.game.node.entity.npc.NPC;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.node.item.Item;
|
||||
import org.crandor.game.node.object.GameObject;
|
||||
import org.crandor.game.world.map.Direction;
|
||||
import org.crandor.game.world.GameWorld;
|
||||
import org.crandor.game.world.map.Location;
|
||||
import org.crandor.game.world.update.flag.context.Animation;
|
||||
import org.crandor.plugin.InitializablePlugin;
|
||||
import org.crandor.plugin.Plugin;
|
||||
import org.crandor.plugin.PluginManager;
|
||||
import org.crandor.tools.RandomFunction;
|
||||
|
||||
import java.util.Random;
|
||||
|
|
@ -43,8 +41,14 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
return this;
|
||||
}
|
||||
public void rollSceptre(Player player){
|
||||
if(RandomFunction.random(1000) == 4){
|
||||
player.getInventory().add(new Item(9050));
|
||||
if(RandomFunction.random(1000) == 451){
|
||||
if(!player.getInventory().isFull()) {
|
||||
player.getInventory().add(new Item(9044));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>You find a strange object.");
|
||||
} else {
|
||||
player.getBank().add(new Item(9044));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>You sense that something has appeared in your bank.");
|
||||
}
|
||||
}
|
||||
}
|
||||
public final boolean success(final Player player, final int skill) {
|
||||
|
|
@ -59,6 +63,7 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
}
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String option) {
|
||||
int NPCDeathTime = GameWorld.getTicks() + (1000 / 6);
|
||||
Location room_entrance[] = {new Location(1927,4477), new Location(1927,4453), new Location(1943,4421), new Location(1954,4477), new Location(1974,4420), new Location(1977,4471), new Location(1927, 4424)};
|
||||
int currentX = player.getLocation().getX();
|
||||
int currentY = player.getLocation().getY();
|
||||
|
|
@ -151,6 +156,7 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
break;
|
||||
case 16473:
|
||||
if(option.equals("search") || option.equals("Search")) {
|
||||
boolean willSpawnSwarm = (RandomFunction.random(1,20) == 10);
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
|
|
@ -158,10 +164,18 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
player.getPacketDispatch().sendMessage("You search the chest...");
|
||||
player.animate(animations[1]);
|
||||
player.lock(2);
|
||||
player.getInventory().add(ARTIFACTS[RandomFunction.random(1,3)][RandomFunction.random(3)]);
|
||||
rollSceptre(player);
|
||||
player.getPacketDispatch().sendMessage("And you find an artifact!");
|
||||
player.getSkills().addExperience(Skills.THIEVING,40 + (room * 20));
|
||||
if(willSpawnSwarm) {
|
||||
player.getPacketDispatch().sendMessage("A swarm flies out!");
|
||||
PyramidPlunderSwarmNPC swarm = new PyramidPlunderSwarmNPC(2001,player.getLocation(),player);
|
||||
swarm.setRespawn(false);
|
||||
swarm.setAggressive(true);
|
||||
swarm.init();
|
||||
} else {
|
||||
player.getInventory().add(ARTIFACTS[RandomFunction.random(1, 3)][RandomFunction.random(3)]);
|
||||
rollSceptre(player);
|
||||
player.getPacketDispatch().sendMessage("And you find an artifact!");
|
||||
player.getSkills().addExperience(Skills.THIEVING, 40 + (room * 20));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16495:
|
||||
|
|
@ -175,7 +189,7 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
player.getPacketDispatch().sendMessage("You open the sarcophagus and....");
|
||||
if(willSpawnMummy) {
|
||||
player.getPacketDispatch().sendMessage("A mummy crawls out!");
|
||||
NPC mummy = NPC.create(1958, player.getLocation());
|
||||
PyramidPlunderMummyNPC mummy = new PyramidPlunderMummyNPC(1958, player.getLocation(),player);
|
||||
mummy.setRespawn(false);
|
||||
mummy.setAggressive(true);
|
||||
mummy.init();
|
||||
|
|
@ -199,6 +213,7 @@ public final class PyramidPlunderOptions extends OptionHandler {
|
|||
if (doesOpen) {
|
||||
player.getPacketDispatch().sendMessage("The door opens!");
|
||||
player.getProperties().setTeleportLocation(room_entrance[room]);
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Room: " + (room + 1) + " Level required: " + (reqLevel + 10));
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("You fail to unlock the door.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
package plugin.activity.pyramidplunder;
|
||||
import org.crandor.game.node.entity.Entity;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.world.map.Location;
|
||||
import org.crandor.tools.RandomFunction;
|
||||
|
||||
/**
|
||||
* Handles the swarm NPC in pyramid plunder
|
||||
* @author ceik
|
||||
*/
|
||||
public final class PyramidPlunderSwarmNPC extends PyramidPlunderNPC {
|
||||
|
||||
/**
|
||||
* The swarm id.
|
||||
*/
|
||||
private static final int[] IDS = new int[] { 2001 };
|
||||
|
||||
public PyramidPlunderSwarmNPC(int id, Location location, Player player) {
|
||||
super(id, location, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
setRespawn(false);
|
||||
getProperties().getCombatPulse().attack(player);
|
||||
sendChat("bzzzzz");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleTickActions() {
|
||||
super.handleTickActions();
|
||||
if (!getProperties().getCombatPulse().isAttacking()) {
|
||||
getProperties().getCombatPulse().attack(player);
|
||||
}
|
||||
if (getProperties().getCombatPulse().isAttacking()) {
|
||||
if (RandomFunction.random(40) < 2) {
|
||||
sendChat("bzzzzz");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIgnoreMultiBoundaries(Entity victim) {
|
||||
return victim == player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return IDS;
|
||||
}
|
||||
|
||||
}
|
||||
56
Server/src/plugin/dialogue/AnnaIsaakson.java
Normal file
56
Server/src/plugin/dialogue/AnnaIsaakson.java
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package plugin.dialogue;
|
||||
|
||||
import org.crandor.game.content.dialogue.DialoguePlugin;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.plugin.InitializablePlugin;
|
||||
|
||||
/**
|
||||
* Replacement for the Anna Isaakson .asc file
|
||||
* @author ceik
|
||||
*/
|
||||
|
||||
@InitializablePlugin
|
||||
public class AnnaIsaakson extends DialoguePlugin {
|
||||
public AnnaIsaakson(){
|
||||
/**
|
||||
* Empty on purpose
|
||||
*/
|
||||
}
|
||||
public AnnaIsaakson(Player player){super(player);}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player){return new AnnaIsaakson(player);}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc("Hello visitor, how are you?");
|
||||
stage = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean handle(int interfaceId, int buttonId){
|
||||
switch(stage){
|
||||
case 1:
|
||||
player("Better than expected. Its a lot...nicer...here than I was", "expecting. Everyone seems pretty happy.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
npc("Of course, the Burgher is strong and wise, and looks", "after us well");
|
||||
stage = 3;
|
||||
break;
|
||||
case 3:
|
||||
player("I think some of those Jatizso citizens have got", "the wrong idea about this place.");
|
||||
stage = 10;
|
||||
break;
|
||||
case 10:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 5512 };
|
||||
}
|
||||
}
|
||||
59
Server/src/plugin/dialogue/ArdougneBaker.java
Normal file
59
Server/src/plugin/dialogue/ArdougneBaker.java
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package plugin.dialogue;
|
||||
|
||||
import org.crandor.game.content.dialogue.DialoguePlugin;
|
||||
import org.crandor.game.node.entity.npc.NPC;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.plugin.InitializablePlugin;
|
||||
|
||||
/**
|
||||
* Replacement for ArdougneBaker.asc
|
||||
* @author ceik
|
||||
*/
|
||||
|
||||
@InitializablePlugin
|
||||
public class ArdougneBaker extends DialoguePlugin {
|
||||
public ArdougneBaker(){
|
||||
/**
|
||||
* Empty on purpose
|
||||
*/
|
||||
}
|
||||
public ArdougneBaker(Player player){super(player);}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player){return new ArdougneBaker(player);}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC)args[0];
|
||||
npc("Good day, monsieur. Would you like ze nice", "freshly-baked bread? Or perhaps a nice piece of cake?");
|
||||
stage = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean handle(int interfaceId, int buttonId){
|
||||
switch(stage){
|
||||
case 1:
|
||||
interpreter.sendOptions("Choose an option.", "Let's see what you have.", "No thank you.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
end();
|
||||
npc.openShop(player);
|
||||
stage = 20;
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 571 };
|
||||
}
|
||||
}
|
||||
|
|
@ -102,6 +102,7 @@ public final class SimonTempleton extends DialoguePlugin{
|
|||
case 20:
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
end();
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9032:
|
||||
|
|
@ -121,6 +122,7 @@ public final class SimonTempleton extends DialoguePlugin{
|
|||
stage = 999;
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9042:
|
||||
|
|
@ -140,6 +142,7 @@ public final class SimonTempleton extends DialoguePlugin{
|
|||
stage = 999;
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9040:
|
||||
|
|
@ -159,6 +162,7 @@ public final class SimonTempleton extends DialoguePlugin{
|
|||
stage = 999;
|
||||
break;
|
||||
case 4:
|
||||
end();
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9040:
|
||||
|
|
@ -202,6 +206,7 @@ public final class SimonTempleton extends DialoguePlugin{
|
|||
stage = 999;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 30:
|
||||
player("What! This is a genuine pharaoh's scepter - made out of"," solid gold and finely jewelled with precious gems"," by the finest craftsmen in the area.");
|
||||
stage = 31;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue