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:
The Celery Man 2020-03-09 17:21:17 -05:00 committed by GitHub
parent 5e2894969e
commit b9e12316e1
5 changed files with 844 additions and 0 deletions

View file

@ -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;
}
}

View 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 };
}
}

View 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};}
}
}

View 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 };
}
}
}

View file

@ -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;
}
}