2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.gs.npchandler;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-05-13 04:24:42 -04:00
|
|
|
import org.moparscape.msc.gs.Instance;
|
|
|
|
import org.moparscape.msc.gs.event.ShortEvent;
|
|
|
|
import org.moparscape.msc.gs.external.CerterDef;
|
|
|
|
import org.moparscape.msc.gs.external.EntityHandler;
|
|
|
|
import org.moparscape.msc.gs.model.ChatMessage;
|
|
|
|
import org.moparscape.msc.gs.model.InvItem;
|
|
|
|
import org.moparscape.msc.gs.model.MenuHandler;
|
|
|
|
import org.moparscape.msc.gs.model.Npc;
|
|
|
|
import org.moparscape.msc.gs.model.Player;
|
|
|
|
import org.moparscape.msc.gs.model.World;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
public class Certer implements NpcHandler {
|
2011-06-25 01:44:53 -04:00
|
|
|
/**
|
|
|
|
* World instance
|
|
|
|
*/
|
|
|
|
public static final World world = Instance.getWorld();
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public void handleNpc(final Npc npc, Player player) throws Exception {
|
|
|
|
final CerterDef certerDef = EntityHandler.getCerterDef(npc.getID());
|
|
|
|
if (certerDef == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final String[] names = certerDef.getCertNames();
|
|
|
|
player.informOfNpcMessage(new ChatMessage(npc, "Welcome to my "
|
|
|
|
+ certerDef.getType() + " exchange stall", player));
|
|
|
|
player.setBusy(true);
|
|
|
|
Instance.getDelayedEventHandler().add(new ShortEvent(player) {
|
|
|
|
public void action() {
|
2011-04-27 01:44:26 -04:00
|
|
|
owner.setBusy(false);
|
2011-06-25 01:44:53 -04:00
|
|
|
String[] options = new String[] {
|
|
|
|
"I have some certificates to trade in",
|
|
|
|
"I have some " + certerDef.getType() + " to trade in" };
|
|
|
|
owner.setMenuHandler(new MenuHandler(options) {
|
|
|
|
public void handleReply(final int option, final String reply) {
|
|
|
|
if (owner.isBusy()) {
|
2011-04-27 01:44:26 -04:00
|
|
|
return;
|
|
|
|
}
|
2011-06-25 01:44:53 -04:00
|
|
|
owner.informOfChatMessage(new ChatMessage(owner, reply,
|
|
|
|
npc));
|
|
|
|
owner.setBusy(true);
|
|
|
|
Instance.getDelayedEventHandler().add(
|
|
|
|
new ShortEvent(owner) {
|
|
|
|
public void action() {
|
|
|
|
owner.setBusy(false);
|
|
|
|
switch (option) {
|
|
|
|
case 0:
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"What sort of certificate do you wish to trade in?");
|
|
|
|
owner.setMenuHandler(new MenuHandler(
|
|
|
|
names) {
|
|
|
|
public void handleReply(
|
|
|
|
final int index,
|
|
|
|
String reply) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"How many certificates do you wish to trade in?");
|
|
|
|
String[] options = new String[] {
|
|
|
|
"One", "Two",
|
|
|
|
"Three", "Four",
|
|
|
|
"Five",
|
|
|
|
"All to bank" };
|
|
|
|
owner.setMenuHandler(new MenuHandler(
|
|
|
|
options) {
|
|
|
|
public void handleReply(
|
|
|
|
int certAmount,
|
|
|
|
String reply) {
|
|
|
|
owner.resetPath();
|
|
|
|
int certID = certerDef
|
|
|
|
.getCertID(index);
|
|
|
|
if (certID < 0) { // This
|
|
|
|
// shouldn't
|
|
|
|
// happen
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
int itemID = certerDef
|
|
|
|
.getItemID(index);
|
|
|
|
if (certAmount == 5) {
|
|
|
|
certAmount = owner
|
|
|
|
.getInventory()
|
|
|
|
.countId(
|
|
|
|
certID);
|
|
|
|
if (certAmount <= 0) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You don't have any "
|
|
|
|
+ names[index]
|
|
|
|
+ " certificates");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
// MIGHT
|
|
|
|
// BE
|
|
|
|
// SMART
|
|
|
|
// TO
|
|
|
|
// CHECK
|
|
|
|
// THEIR
|
|
|
|
// BANK
|
|
|
|
// ISN'T
|
|
|
|
// FULL
|
|
|
|
InvItem bankItem = new InvItem(
|
|
|
|
itemID,
|
|
|
|
certAmount * 5);
|
|
|
|
if (owner
|
|
|
|
.getInventory()
|
|
|
|
.remove(new InvItem(
|
|
|
|
certID,
|
|
|
|
certAmount)) > -1) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You exchange the certificates, "
|
|
|
|
+ bankItem
|
|
|
|
.getAmount()
|
|
|
|
+ " "
|
|
|
|
+ bankItem
|
|
|
|
.getDef()
|
|
|
|
.getName()
|
|
|
|
+ " is added to your bank");
|
|
|
|
owner.getBank()
|
|
|
|
.add(bankItem);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
certAmount += 1;
|
|
|
|
int itemAmount = certAmount * 5;
|
|
|
|
if (owner
|
|
|
|
.getInventory()
|
|
|
|
.countId(
|
|
|
|
certID) < certAmount) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You don't have that many certificates");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (owner
|
|
|
|
.getInventory()
|
|
|
|
.remove(certID,
|
|
|
|
certAmount) > -1) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You exchange the certificates for "
|
|
|
|
+ certerDef
|
|
|
|
.getType()
|
|
|
|
+ ".");
|
|
|
|
for (int x = 0; x < itemAmount; x++) {
|
|
|
|
owner.getInventory()
|
|
|
|
.add(new InvItem(
|
|
|
|
itemID,
|
|
|
|
1));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendInventory();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMenu(options);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
owner.getActionSender().sendMenu(
|
|
|
|
names);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"What sort of "
|
|
|
|
+ certerDef
|
|
|
|
.getType()
|
|
|
|
+ " do you wish to trade in?");
|
|
|
|
owner.setMenuHandler(new MenuHandler(
|
|
|
|
names) {
|
|
|
|
public void handleReply(
|
|
|
|
final int index,
|
|
|
|
String reply) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"How many "
|
|
|
|
+ certerDef
|
|
|
|
.getType()
|
|
|
|
+ " do you wish to trade in?");
|
|
|
|
String[] options = new String[] {
|
|
|
|
"Five", "Ten",
|
|
|
|
"Fifteen",
|
|
|
|
"Twenty",
|
|
|
|
"Twentyfive",
|
|
|
|
"All from bank" };
|
|
|
|
owner.setMenuHandler(new MenuHandler(
|
|
|
|
options) {
|
|
|
|
public void handleReply(
|
|
|
|
int certAmount,
|
|
|
|
String reply) {
|
|
|
|
owner.resetPath();
|
|
|
|
int certID = certerDef
|
|
|
|
.getCertID(index);
|
|
|
|
if (certID < 0) { // This
|
|
|
|
// shouldn't
|
|
|
|
// happen
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
int itemID = certerDef
|
|
|
|
.getItemID(index);
|
|
|
|
if (certAmount == 5) {
|
|
|
|
certAmount = (int) (owner
|
|
|
|
.getBank()
|
|
|
|
.countId(
|
|
|
|
itemID) / 5);
|
|
|
|
int itemAmount = certAmount * 5;
|
|
|
|
if (itemAmount <= 0) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You don't have any "
|
|
|
|
+ names[index]
|
|
|
|
+ " to cert");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (owner
|
|
|
|
.getBank()
|
|
|
|
.remove(itemID,
|
|
|
|
itemAmount) > -1) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You exchange the "
|
|
|
|
+ certerDef
|
|
|
|
.getType()
|
|
|
|
+ ", "
|
|
|
|
+ itemAmount
|
|
|
|
+ " "
|
|
|
|
+ EntityHandler
|
|
|
|
.getItemDef(
|
|
|
|
itemID)
|
|
|
|
.getName()
|
|
|
|
+ " is taken from your bank");
|
|
|
|
owner.getInventory()
|
|
|
|
.add(new InvItem(
|
|
|
|
certID,
|
|
|
|
certAmount));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
certAmount += 1;
|
|
|
|
int itemAmount = certAmount * 5;
|
|
|
|
if (owner
|
|
|
|
.getInventory()
|
|
|
|
.countId(
|
|
|
|
itemID) < itemAmount) {
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You don't have that many "
|
|
|
|
+ certerDef
|
|
|
|
.getType());
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMessage(
|
|
|
|
"You exchange the "
|
|
|
|
+ certerDef
|
|
|
|
.getType()
|
|
|
|
+ " for certificates.");
|
|
|
|
for (int x = 0; x < itemAmount; x++) {
|
|
|
|
owner.getInventory()
|
|
|
|
.remove(itemID,
|
|
|
|
1);
|
|
|
|
}
|
|
|
|
owner.getInventory()
|
|
|
|
.add(new InvItem(
|
|
|
|
certID,
|
|
|
|
certAmount));
|
|
|
|
}
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendInventory();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
owner.getActionSender()
|
|
|
|
.sendMenu(options);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
owner.getActionSender().sendMenu(
|
|
|
|
names);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
npc.unblock();
|
|
|
|
}
|
|
|
|
});
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
2011-06-25 01:44:53 -04:00
|
|
|
});
|
|
|
|
owner.getActionSender().sendMenu(options);
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
});
|
2011-06-25 01:44:53 -04:00
|
|
|
npc.blockedBy(player);
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
}
|