forked from 2009Scape/Server
Fully implement Pyramid Plunder, Simon Templeton, Pharoah's Sceptre (#150)
* Added Pyramid Plunder! * Added Simon Templeton! * Implemented Pharoah's Sceptre
This commit is contained in:
parent
5e2894969e
commit
b9e12316e1
5 changed files with 844 additions and 0 deletions
|
|
@ -0,0 +1,212 @@
|
|||
package plugin.activity.pyramidplunder;
|
||||
|
||||
import org.crandor.cache.def.impl.ObjectDefinition;
|
||||
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.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;
|
||||
|
||||
/**
|
||||
* Handle pyramid plunder object interactions
|
||||
* @author ceik
|
||||
*/
|
||||
|
||||
@InitializablePlugin
|
||||
public final class PyramidPlunderOptions extends OptionHandler {
|
||||
Item[][] ARTIFACTS = { {new Item(9032),new Item(9036), new Item(9026)}, {new Item(9042), new Item(9030), new Item(9038)}, {new Item(9040), new Item(9028), new Item(9034)} };
|
||||
private static final Animation[] animations = new Animation[] { new Animation(2247), new Animation(2248), new Animation(1113), new Animation(2244) };
|
||||
int reqLevel;
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
ObjectDefinition.forId(16517).getConfigurations().put("option:pass",this);
|
||||
ObjectDefinition.forId(16503).getConfigurations().put("option:search",this);
|
||||
ObjectDefinition.forId(16502).getConfigurations().put("option:search",this);
|
||||
ObjectDefinition.forId(16501).getConfigurations().put("option:search",this);
|
||||
ObjectDefinition.forId(16473).getConfigurations().put("option:search",this);
|
||||
ObjectDefinition.forId(16495).getConfigurations().put("option:open",this);
|
||||
ObjectDefinition.forId(16475).getConfigurations().put("option:pick-lock",this);
|
||||
return this;
|
||||
}
|
||||
public void rollSceptre(Player player){
|
||||
if(RandomFunction.random(1000) == 4){
|
||||
player.getInventory().add(new Item(9050));
|
||||
}
|
||||
}
|
||||
public final boolean success(final Player player, final int skill) {
|
||||
double level = player.getSkills().getLevel(skill);
|
||||
double successChance = Math.ceil((level * 50 - reqLevel) / reqLevel / 3 * 4);
|
||||
int roll = RandomFunction.random(99);
|
||||
if (successChance >= roll) {
|
||||
return true;
|
||||
}
|
||||
player.getImpactHandler().manualHit(player,RandomFunction.random(4), ImpactHandler.HitsplatType.NORMAL);
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String option) {
|
||||
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();
|
||||
int level = player.getSkills().getLevel(Skills.THIEVING);
|
||||
int room = 0;
|
||||
int spearX = 0;
|
||||
int spearY = 0;
|
||||
double droom = 0.0;
|
||||
if(currentX >= 1923 && currentX <= 1932 && currentY <= 4477 && currentY >= 4464 ){
|
||||
room = 1;
|
||||
reqLevel = 21;
|
||||
spearX = 0;
|
||||
spearY = -2;
|
||||
|
||||
} else if(currentX >= 1925 && currentX <= 1941 && currentY <= 4458 && currentY >= 4449 ){
|
||||
room = 2;
|
||||
reqLevel = 31;
|
||||
spearX = 2;
|
||||
spearY = 0;
|
||||
} else if(currentX >= 1941 && currentX <= 1954 && currentY >=4421 && currentY <= 4432 ){
|
||||
room = 3;
|
||||
reqLevel = 41;
|
||||
spearX = 0;
|
||||
spearY = 2;
|
||||
} else if(currentX >= 1949 && currentX <= 1959 && currentY <= 4477 && currentY >= 4464){
|
||||
room = 4;
|
||||
reqLevel = 51;
|
||||
spearX = 0;
|
||||
spearY = -2;
|
||||
} else if(currentX >= 1968 && currentX <= 1978 && currentY <= 4436 && currentY >= 4420){
|
||||
room = 5;
|
||||
reqLevel = 61;
|
||||
spearX = 0;
|
||||
spearY = 2;
|
||||
} else if(currentX >= 1970 && currentX <= 1979 && currentY <= 4471 && currentY >= 4424){
|
||||
room = 6;
|
||||
reqLevel = 71;
|
||||
spearX = 0;
|
||||
spearY = -2;
|
||||
} else if(currentX >= 1923 && currentX <= 1931 && currentY <= 4439 && currentY >= 4424){
|
||||
room = 8;
|
||||
reqLevel = 81;
|
||||
spearX = 0;
|
||||
spearY = 2;
|
||||
}
|
||||
GameObject object = node.asObject();
|
||||
droom = (double) room;
|
||||
switch (object.getId()) {
|
||||
case 16517:
|
||||
if (option.equals("Pass") || option.equals("pass")) {
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
}
|
||||
boolean success = success(player, Skills.THIEVING);
|
||||
player.animate(animations[success ? 1 : 0]);
|
||||
if (success) {
|
||||
player.getPacketDispatch().sendMessage("You successfully pass the spears.");
|
||||
player.getSkills().addExperience(Skills.THIEVING, 30 + (room * 20), true);
|
||||
int moveX = player.getLocation().getX();
|
||||
int moveY = player.getLocation().getY();
|
||||
Location moveto = new Location(moveX + spearX, moveY + spearY);
|
||||
player.getProperties().setTeleportLocation(moveto);
|
||||
//player.moveStep();
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("You fail to pass the spears.");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16503:
|
||||
case 16502:
|
||||
case 16501:
|
||||
if (option.equals("search") || option.equals("Search")) {
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
}
|
||||
boolean success = success(player, Skills.THIEVING);
|
||||
player.animate(animations[success ? 1 : 0]);
|
||||
player.lock(2);
|
||||
if (success) {
|
||||
player.getPacketDispatch().sendMessage("You successfully search the urn...");
|
||||
player.getSkills().addExperience(Skills.THIEVING, 25 + (room * 20), true);
|
||||
player.getInventory().add(ARTIFACTS[((int)Math.floor(droom / 3))][RandomFunction.random(3)]);
|
||||
rollSceptre(player);
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("You failed and got bit by a snake.");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16473:
|
||||
if(option.equals("search") || option.equals("Search")) {
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
}
|
||||
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));
|
||||
}
|
||||
break;
|
||||
case 16495:
|
||||
if(option.equals("open") || option.equals("Open")) {
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
}
|
||||
boolean willSpawnMummy = (RandomFunction.random(1,5) == 3);
|
||||
player.animate(animations[1]);
|
||||
player.getPacketDispatch().sendMessage("You open the sarcophagus and....");
|
||||
if(willSpawnMummy) {
|
||||
player.getPacketDispatch().sendMessage("A mummy crawls out!");
|
||||
NPC mummy = NPC.create(1958, player.getLocation());
|
||||
mummy.setRespawn(false);
|
||||
mummy.setAggressive(true);
|
||||
mummy.init();
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("You find some loot inside.");
|
||||
player.getInventory().add(ARTIFACTS[RandomFunction.random(0,3)][RandomFunction.random(3)]);
|
||||
rollSceptre(player);
|
||||
player.getSkills().addExperience(Skills.STRENGTH,50 + (room * 20));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16475:
|
||||
if(option.equals("pick-lock") && room < 8) {
|
||||
if (reqLevel > level){
|
||||
player.getPacketDispatch().sendMessage("You need to be at least level " + reqLevel + " thieving.");
|
||||
break;
|
||||
}
|
||||
player.animate(animations[1]);
|
||||
player.lock(2);
|
||||
boolean doesOpen = success(player, Skills.THIEVING);
|
||||
if (doesOpen) {
|
||||
player.getPacketDispatch().sendMessage("The door opens!");
|
||||
player.getProperties().setTeleportLocation(room_entrance[room]);
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("You fail to unlock the door.");
|
||||
}
|
||||
} else if(room == 8) {
|
||||
ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, Location.create(3288, 2801, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
239
Server/src/plugin/dialogue/SimonTempleton.java
Normal file
239
Server/src/plugin/dialogue/SimonTempleton.java
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
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;
|
||||
import org.crandor.game.node.item.Item;
|
||||
|
||||
/**
|
||||
* Handles the dialog for Simon Templeton
|
||||
* @author ceik
|
||||
*/
|
||||
@InitializablePlugin
|
||||
public final class SimonTempleton extends DialoguePlugin{
|
||||
public final Item[][] ARTIFACTS = { {new Item(9032),new Item(9036), new Item(9026)}, {new Item(9042), new Item(9030), new Item(9038)}, {new Item(9040), new Item(9028), new Item(9034)} };
|
||||
public SimonTempleton(){
|
||||
/**
|
||||
* Empty on purpose
|
||||
*/
|
||||
}
|
||||
|
||||
public SimonTempleton(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new SimonTempleton(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
//Handles what happens when using a pharoah scepter on him (required for accuracy)
|
||||
if(args.length == 4){
|
||||
if(((int) args[3] == 9044 || (int) args[3] == 9046 || (int) args[3] == 9048 || (int) args[3] == 9050)) {
|
||||
npc("You sellin' me this gold colored", "stick thing. Looks fake to me.", "I'll give you 100 gold for it.");
|
||||
stage = 30;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
player.getPacketDispatch().sendMessage("" + args.length);
|
||||
npc("G'day, mate!. Got any new", "pyramid artefacts for me?");
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId){
|
||||
boolean hasArtefacts = false;
|
||||
switch(stage){
|
||||
case 0:
|
||||
for(int i = 0; i < ARTIFACTS.length; i++){
|
||||
for(int j = 0; j < 3; j++){
|
||||
if(player.getInventory().containsItem(ARTIFACTS[i][j])){
|
||||
hasArtefacts = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(hasArtefacts){
|
||||
player("Why, yes I do!");
|
||||
stage = 1;
|
||||
break;
|
||||
}
|
||||
player("No, I haven't.");
|
||||
stage = 3;
|
||||
break;
|
||||
case 1:
|
||||
npc("Excellent! I would like to buy them.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
interpreter.sendOptions("Sell artefacts?","Yes, I need money!!","No, I'll hang onto them.");
|
||||
stage = 10;
|
||||
break;
|
||||
case 3:
|
||||
npc("Well, keep my offer in mind", "if you do find one.");
|
||||
stage = 4;
|
||||
break;
|
||||
case 4:
|
||||
player("I will. Goodbye, Simon.");
|
||||
stage = 5;
|
||||
break;
|
||||
case 5:
|
||||
npc("Bye, mate.");
|
||||
stage = 999;
|
||||
break;
|
||||
case 10:
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
interpreter.sendOptions("Which ones do you want to sell?", "Clay and Ivory", "Stone","Gold","Sell them all!");
|
||||
stage = 20;
|
||||
break;
|
||||
case 2:
|
||||
npc("Aww, alright. Well, keep my", "offer in mind, will ya?");
|
||||
player("Sure thing, Simon.");
|
||||
npc("Thanks, mate.");
|
||||
stage = 999;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9032:
|
||||
player.getInventory().remove(new Item(9032,j));
|
||||
player.getInventory().add(new Item(995, 75));
|
||||
break;
|
||||
case 9036:
|
||||
player.getInventory().remove(new Item(9036,j));
|
||||
player.getInventory().add(new Item(995, 100));
|
||||
break;
|
||||
case 9026:
|
||||
player.getInventory().remove(new Item(9026,j));
|
||||
player.getInventory().add(new Item(995, 50));
|
||||
break;
|
||||
}
|
||||
}
|
||||
stage = 999;
|
||||
break;
|
||||
case 2:
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9042:
|
||||
player.getInventory().remove(new Item(9042,j));
|
||||
player.getInventory().add(new Item(995, 150));
|
||||
break;
|
||||
case 9030:
|
||||
player.getInventory().remove(new Item(9030,j));
|
||||
player.getInventory().add(new Item(995, 175));
|
||||
break;
|
||||
case 9038:
|
||||
player.getInventory().remove(new Item(9038,j));
|
||||
player.getInventory().add(new Item(995, 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
stage = 999;
|
||||
break;
|
||||
case 3:
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9040:
|
||||
player.getInventory().remove(new Item(9040,j));
|
||||
player.getInventory().add(new Item(995, 750));
|
||||
break;
|
||||
case 9028:
|
||||
player.getInventory().remove(new Item(9028,j));
|
||||
player.getInventory().add(new Item(995, 1000));
|
||||
break;
|
||||
case 9034:
|
||||
player.getInventory().remove(new Item(9034,j));
|
||||
player.getInventory().add(new Item(995, 1250));
|
||||
break;
|
||||
}
|
||||
}
|
||||
stage = 999;
|
||||
break;
|
||||
case 4:
|
||||
for(int j = 0; j < 28; j++){
|
||||
switch(player.getInventory().getId(j)){
|
||||
case 9040:
|
||||
player.getInventory().remove(new Item(9040,j));
|
||||
player.getInventory().add(new Item(995, 750));
|
||||
break;
|
||||
case 9028:
|
||||
player.getInventory().remove(new Item(9028,j));
|
||||
player.getInventory().add(new Item(995, 1000));
|
||||
break;
|
||||
case 9034:
|
||||
player.getInventory().remove(new Item(9034,j));
|
||||
player.getInventory().add(new Item(995, 1250));
|
||||
break;
|
||||
case 9042:
|
||||
player.getInventory().remove(new Item(9042,j));
|
||||
player.getInventory().add(new Item(995, 150));
|
||||
break;
|
||||
case 9030:
|
||||
player.getInventory().remove(new Item(9030,j));
|
||||
player.getInventory().add(new Item(995, 175));
|
||||
break;
|
||||
case 9038:
|
||||
player.getInventory().remove(new Item(9038,j));
|
||||
player.getInventory().add(new Item(995, 200));
|
||||
break;
|
||||
case 9032:
|
||||
player.getInventory().remove(new Item(9032,j));
|
||||
player.getInventory().add(new Item(995, 75));
|
||||
break;
|
||||
case 9036:
|
||||
player.getInventory().remove(new Item(9036,j));
|
||||
player.getInventory().add(new Item(995, 100));
|
||||
break;
|
||||
case 9026:
|
||||
player.getInventory().remove(new Item(9026,j));
|
||||
player.getInventory().add(new Item(995, 50));
|
||||
break;
|
||||
}
|
||||
}
|
||||
stage = 999;
|
||||
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;
|
||||
break;
|
||||
case 31:
|
||||
npc("Strewth! I can tell a pile of croc when I hear it!","You've got the patter mate, but I'm no mug.", "That's a fake.");
|
||||
stage = 32;
|
||||
break;
|
||||
case 32:
|
||||
player("It has magical powers!");
|
||||
stage = 33;
|
||||
break;
|
||||
case 33:
|
||||
npc("Oh, magical powers... yeah yeah yeah. Heard it all before"," mate. I'll give you 100 gold, or some 'magic beans'.", "Take it or leave it.");
|
||||
stage = 34;
|
||||
break;
|
||||
case 34:
|
||||
player("I don't think so! I'll find someone who'll give me", "what it's worth.");
|
||||
stage = 35;
|
||||
break;
|
||||
case 35:
|
||||
npc("Suit yerself...");
|
||||
stage = 999;
|
||||
break;
|
||||
case 999:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 3123 };
|
||||
}
|
||||
}
|
||||
139
Server/src/plugin/interaction/item/PharoahSceptre.java
Normal file
139
Server/src/plugin/interaction/item/PharoahSceptre.java
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
package plugin.interaction.item;
|
||||
|
||||
import org.crandor.cache.def.impl.ItemDefinition;
|
||||
import org.crandor.game.content.dialogue.DialoguePlugin;
|
||||
import org.crandor.game.interaction.OptionHandler;
|
||||
import org.crandor.game.node.Node;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.game.node.entity.player.info.portal.Perks;
|
||||
import org.crandor.game.node.item.Item;
|
||||
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.game.world.update.flag.context.Graphics;
|
||||
import org.crandor.plugin.InitializablePlugin;
|
||||
import org.crandor.plugin.Plugin;
|
||||
|
||||
|
||||
/**
|
||||
* Adds functionality to the pharoah's scepter
|
||||
* @author ceik
|
||||
*/
|
||||
@InitializablePlugin
|
||||
public final class PharoahSceptre extends OptionHandler {
|
||||
private static final Graphics GRAPHICS = new Graphics(308, 100, 50);
|
||||
private static final Animation ANIMATION = new Animation(714);
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
new SceptreDialog().init();
|
||||
ItemDefinition.forId(9044).getConfigurations().put("option:teleport",this);
|
||||
ItemDefinition.forId(9046).getConfigurations().put("option:teleport",this);
|
||||
ItemDefinition.forId(9048).getConfigurations().put("option:teleport",this);
|
||||
ItemDefinition.forId(9050).getConfigurations().put("option:teleport",this);
|
||||
return this;
|
||||
}
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String string){
|
||||
Item item = node.asItem();
|
||||
if(string.equals("teleport")){
|
||||
switch(item.getId()) {
|
||||
case 9044:
|
||||
case 9046:
|
||||
case 9048:
|
||||
player.getDialogueInterpreter().open(325128389);
|
||||
return true;
|
||||
case 9050:
|
||||
player.getPacketDispatch().sendMessage("You have used up all the charges on this sceptre.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public final class SceptreDialog extends DialoguePlugin {
|
||||
public SceptreDialog() {
|
||||
/**
|
||||
* empty
|
||||
*/
|
||||
}
|
||||
public SceptreDialog(Player player){super(player);}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player){ return new SceptreDialog(player);}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args){
|
||||
//Item item = (Item) args[0];
|
||||
player.getPacketDispatch().sendMessage("" + args[0]);
|
||||
interpreter.sendOptions("Teleport to:","Jalsavrah","Jaleustrophos","Jaldraocht","Nowhere");
|
||||
return true;
|
||||
}
|
||||
public void teleport(Location location, Player player){
|
||||
player.lock();
|
||||
player.visualize(ANIMATION, GRAPHICS);
|
||||
player.getImpactHandler().setDisabledTicks(4);
|
||||
GameWorld.submit(new Pulse(4, player) {
|
||||
@Override
|
||||
public boolean pulse() {
|
||||
player.unlock();
|
||||
player.getProperties().setTeleportLocation(location);
|
||||
player.getAnimator().reset();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId){
|
||||
if (player.isTeleBlocked()) {
|
||||
player.sendMessage("A magical force has stopped you from teleporting.");
|
||||
return false;
|
||||
}
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
teleport(Location.create(3289,2786,0), player);
|
||||
stage = 10;
|
||||
break;
|
||||
case 2:
|
||||
teleport(Location.create(3342,2827,0),player);
|
||||
stage = 10;
|
||||
break;
|
||||
case 3:
|
||||
teleport(Location.create(3233,2902,0),player);
|
||||
stage = 10;
|
||||
break;
|
||||
case 4:
|
||||
stage = 20;
|
||||
break;
|
||||
}
|
||||
switch(stage){
|
||||
case 10:
|
||||
if(player.getInventory().containsItem(new Item(9044))){
|
||||
player.getInventory().remove(new Item(9044));
|
||||
player.getInventory().add(new Item(9046));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Your Pharoah's Sceptre has 2 charges remaining.");
|
||||
end();
|
||||
} else if (player.getInventory().containsItem(new Item(9046))){
|
||||
player.getInventory().remove(new Item(9046));
|
||||
player.getInventory().add(new Item(9048));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Your Pharoah's Sceptre has 1 charge remaining.");
|
||||
end();
|
||||
} else if (player.getInventory().containsItem(new Item(9048))){
|
||||
player.getInventory().remove(new Item(9048));
|
||||
player.getInventory().add(new Item(9050));
|
||||
player.sendMessage("<col=7f03ff>Your Pharoah's Sceptre has used its last charge.");
|
||||
end();
|
||||
}
|
||||
stage = 20;
|
||||
break;
|
||||
case 20:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public int[] getIds() { return new int[] {325128389};}
|
||||
}
|
||||
|
||||
}
|
||||
220
Server/src/plugin/interaction/npc/RechargeSceptre.java
Normal file
220
Server/src/plugin/interaction/npc/RechargeSceptre.java
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
package plugin.interaction.npc;
|
||||
|
||||
import org.crandor.game.content.dialogue.DialoguePlugin;
|
||||
import org.crandor.game.interaction.NodeUsageEvent;
|
||||
import org.crandor.game.interaction.UseWithHandler;
|
||||
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.plugin.InitializablePlugin;
|
||||
import org.crandor.plugin.Plugin;
|
||||
|
||||
/**
|
||||
* Allows the sceptre to be recharged by using it on the Guardian Mummy
|
||||
* @author ceik
|
||||
*/
|
||||
@InitializablePlugin
|
||||
public class RechargeSceptre extends UseWithHandler {
|
||||
Item usedSceptre = new Item(4950);
|
||||
int clayRecharge[] = new int[24];
|
||||
int stoneRecharge[] = new int[12];
|
||||
int goldRecharge[] = new int[6];
|
||||
public RechargeSceptre() {
|
||||
super(9046, 9048, 9050);
|
||||
}
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
new RechargeDialogue().init();
|
||||
addHandler(4476, NPC_TYPE, this);
|
||||
return this;
|
||||
}
|
||||
@Override
|
||||
public boolean handle(NodeUsageEvent event){
|
||||
final Player player = event.getPlayer();
|
||||
player.getDialogueInterpreter().open(999876,event.getUsedItem());
|
||||
return true;
|
||||
}
|
||||
public class RechargeDialogue extends DialoguePlugin {
|
||||
public RechargeDialogue() {
|
||||
/**
|
||||
* empty
|
||||
*/
|
||||
}
|
||||
public RechargeDialogue(Player player){super(player);}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player){ return new RechargeDialogue(player);}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args){
|
||||
usedSceptre = (Item) args[0];
|
||||
player.getPacketDispatch().sendMessage("" + args[0]);
|
||||
interpreter.sendDialogue("Mrrrh, how do you have this? You shouldn't.", "Nevertheless, I can recharge this for you.");
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean handle(int dialogId, int buttonId){
|
||||
switch(stage){
|
||||
case 0:
|
||||
interpreter.sendOptions("Recharge sceptre?", "Yes, please.", "No, thanks.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
switch(buttonId){
|
||||
case 1:
|
||||
interpreter.sendOptions("Recharge with?","Clay/Ivory Artefacts(24)","Stone Artefacts(12)","Gold Artefacts(6)");
|
||||
stage = 20;
|
||||
break;
|
||||
case 2:
|
||||
stage = 100;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
switch(buttonId){
|
||||
case 1: {
|
||||
int totalCounter = 0;
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 24) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9026) {
|
||||
clayRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 24) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9032) {
|
||||
clayRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 24) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9036) {
|
||||
clayRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
if (clayRecharge[23] == 0) {
|
||||
player.getPacketDispatch().sendMessage("You do not have enough clay/ivory artifacts.");
|
||||
end();
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < 24; i++) {
|
||||
player.getInventory().remove(new Item(player.getInventory().getId(clayRecharge[i])), clayRecharge[i], true);
|
||||
}
|
||||
player.getInventory().remove(usedSceptre);
|
||||
player.getInventory().add(new Item(9044));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Your Pharoah's Sceptre has been fully recharged!");
|
||||
clayRecharge[23] = 0;
|
||||
end();
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
int totalCounter = 0;
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 12) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9042) {
|
||||
stoneRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 12) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9030) {
|
||||
stoneRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 28; i++) {
|
||||
if (totalCounter == 12) {
|
||||
break;
|
||||
}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if (thisSlot == 9038) {
|
||||
stoneRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
if (stoneRecharge[11] == 0) {
|
||||
player.getPacketDispatch().sendMessage("You do not have enough stone artifacts.");
|
||||
end();
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < 12; i++) {
|
||||
player.getInventory().remove(new Item(player.getInventory().getId(stoneRecharge[i])), stoneRecharge[i], true);
|
||||
}
|
||||
player.getInventory().remove(usedSceptre);
|
||||
player.getInventory().add(new Item(9044));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Your Pharoah's Sceptre has been fully recharged!");
|
||||
stoneRecharge[11] = 0;
|
||||
end();
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
int totalCounter = 0;
|
||||
for(int i = 0; i < 28; i++){
|
||||
if(totalCounter == 6) {break;}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if(thisSlot == 9040){
|
||||
goldRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 28; i++){
|
||||
if(totalCounter == 6) {break;}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if(thisSlot == 9028){
|
||||
goldRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 28; i++){
|
||||
if(totalCounter == 6) {break;}
|
||||
int thisSlot = player.getInventory().getId(i);
|
||||
if(thisSlot == 9034){
|
||||
goldRecharge[totalCounter] = i;
|
||||
totalCounter += 1;
|
||||
}
|
||||
}
|
||||
if(goldRecharge[5] == 0){player.getPacketDispatch().sendMessage("You do not have enough gold artifacts."); end(); break;}
|
||||
for(int i = 0; i < 6; i++){
|
||||
player.getInventory().remove( new Item (player.getInventory().getId(goldRecharge[i])), goldRecharge[i], true);
|
||||
}
|
||||
player.getInventory().remove(usedSceptre);
|
||||
player.getInventory().add(new Item(9044));
|
||||
player.getPacketDispatch().sendMessage("<col=7f03ff>Your Pharoah's Sceptre has been fully recharged!");
|
||||
goldRecharge[5] = 0;
|
||||
end();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 100:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 999876 };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package plugin.interaction.npc;
|
||||
|
||||
import org.crandor.game.interaction.NodeUsageEvent;
|
||||
import org.crandor.game.interaction.UseWithHandler;
|
||||
import org.crandor.game.node.entity.npc.NPC;
|
||||
import org.crandor.game.node.entity.player.Player;
|
||||
import org.crandor.plugin.InitializablePlugin;
|
||||
import org.crandor.plugin.Plugin;
|
||||
import org.crandor.plugin.PluginManager;
|
||||
import plugin.dialogue.SimonTempleton;
|
||||
|
||||
/**
|
||||
* Handles when a player uses a pharaoh scepter on Simon (necessary to be accurate)
|
||||
* @author ceik
|
||||
*/
|
||||
@InitializablePlugin
|
||||
public final class SimonScepterInteraction extends UseWithHandler {
|
||||
|
||||
public SimonScepterInteraction() {
|
||||
super(9044, 9046, 9048, 9050);
|
||||
}
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
addHandler(3123, NPC_TYPE, this);
|
||||
//PluginManager.definePlugin(new SimonScepterInteraction());
|
||||
return this;
|
||||
}
|
||||
@Override
|
||||
public boolean handle(NodeUsageEvent event){
|
||||
final Player player = event.getPlayer();
|
||||
player.getDialogueInterpreter().open(3123, ((NPC)event.getUsedWith()), true, false, event.getUsedItem().getId());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue