mirror of
https://github.com/moparisthebest/MoparClassic
synced 2024-11-15 05:35:04 -05:00
298 lines
8.7 KiB
Java
298 lines
8.7 KiB
Java
|
import msc.gs.Instance; import msc.gs.event.SingleEvent;
|
||
|
import msc.gs.Instance; import msc.gs.model.InvItem;
|
||
|
import msc.gs.Instance; import msc.gs.model.MenuHandler;
|
||
|
import msc.gs.Instance; import msc.gs.model.Npc;
|
||
|
import msc.gs.Instance; import msc.gs.model.Player;
|
||
|
import msc.gs.Instance; import msc.gs.quest.Quest;
|
||
|
import msc.gs.Instance; import msc.gs.quest.QuestAction;
|
||
|
|
||
|
/**
|
||
|
* Quest: Sheep Shearer (v1.0) Status: COMPLETE Start: Fred the farmer (id 77),
|
||
|
* 159, 619 Items: 207x20 Reward: 1 quest point, 60 gold, Crafting 350 xp
|
||
|
*
|
||
|
* @author Konijn
|
||
|
*/
|
||
|
public class SheepShearer extends Quest {
|
||
|
private final int FRED_ID = 77;
|
||
|
private final int ITEM_WOOL = 207;
|
||
|
private final int REWARD_XP = 350;
|
||
|
private final int REWARD_GP = 330;
|
||
|
private final String[] FIRST_MENU = new String[] {
|
||
|
"Sure, what do I need to do?", "No thanks, I'm good." };
|
||
|
private final String[] SECOND_MENU = new String[] {
|
||
|
"Sorry, I don't like the sound of that.", "I'd be happy to help." };
|
||
|
|
||
|
public void init() {
|
||
|
associateNpc(FRED_ID);
|
||
|
}
|
||
|
|
||
|
public SheepShearer() {
|
||
|
}
|
||
|
|
||
|
public String getName() {
|
||
|
return "Sheep Shearer";
|
||
|
}
|
||
|
|
||
|
public int getUniqueID() {
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
public void handleAction(QuestAction action, Object[] args,
|
||
|
final Player player) {
|
||
|
int stage = player.getQuestStage(this);
|
||
|
|
||
|
if (stage == -1) // Quest hasn't been started
|
||
|
{
|
||
|
if (action == action.TALKED_NPC) {
|
||
|
if (!(args[0] instanceof Npc))
|
||
|
return;
|
||
|
|
||
|
final Npc npc = (Npc) args[0];
|
||
|
|
||
|
if (npc.getID() != FRED_ID)
|
||
|
return;
|
||
|
|
||
|
player.setBusy(true);
|
||
|
npc.blockedBy(player);
|
||
|
|
||
|
sendChat("Hi there, traveller. Care to make some money?", npc,
|
||
|
player);
|
||
|
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
player.setBusy(false);
|
||
|
player.setMenuHandler(new MenuHandler(FIRST_MENU) {
|
||
|
public void handleReply(final int option,
|
||
|
final String reply) {
|
||
|
player.setBusy(true);
|
||
|
switch (option) {
|
||
|
case 1:
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
sendChat("No thanks, I'm good.", player,
|
||
|
npc);
|
||
|
break;
|
||
|
case 0:
|
||
|
sendChat("Sure, what do I need to do?",
|
||
|
player, npc);
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"If you collect 20 balls of wool for me, I'll pay you 500 coins.",
|
||
|
npc, player);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player, 2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"Maybe I'll teach you a thing or two about crafting, too.",
|
||
|
npc, player);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player, 2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"I'm afraid you'll have to find your own shears, but the sheep are outside.",
|
||
|
npc, player);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player,
|
||
|
2000) {
|
||
|
public void action() {
|
||
|
player
|
||
|
.setBusy(false);
|
||
|
player
|
||
|
.setMenuHandler(new MenuHandler(
|
||
|
SECOND_MENU) {
|
||
|
public void handleReply(
|
||
|
final int option,
|
||
|
final String reply) {
|
||
|
player
|
||
|
.setBusy(true);
|
||
|
switch (option) {
|
||
|
case 1:
|
||
|
sendChat(
|
||
|
"I'd be happy to help.",
|
||
|
player,
|
||
|
npc);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player,
|
||
|
2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"Great! Come back and see me when you're done.",
|
||
|
npc,
|
||
|
player);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player,
|
||
|
2000) {
|
||
|
public void action() {
|
||
|
player
|
||
|
.setQuestStage(
|
||
|
getUniqueID(),
|
||
|
1);
|
||
|
player
|
||
|
.setBusy(false);
|
||
|
npc
|
||
|
.unblock();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
break;
|
||
|
case 0:
|
||
|
sendChat(
|
||
|
"Sorry, I don't like the sound of that.",
|
||
|
player,
|
||
|
npc);
|
||
|
addSingleEvent(new SingleEvent(
|
||
|
player,
|
||
|
2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"Suit yourself. Come and see me if you change your mind.",
|
||
|
npc,
|
||
|
player);
|
||
|
player
|
||
|
.setBusy(false);
|
||
|
npc
|
||
|
.unblock();
|
||
|
}
|
||
|
});
|
||
|
break;
|
||
|
default:
|
||
|
player
|
||
|
.setBusy(false);
|
||
|
npc
|
||
|
.unblock();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
owner
|
||
|
.getActionSender()
|
||
|
.sendMenu(
|
||
|
SECOND_MENU);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
break;
|
||
|
default:
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
owner.getActionSender().sendMenu(FIRST_MENU);
|
||
|
}
|
||
|
});
|
||
|
} else
|
||
|
return;
|
||
|
} else if (stage == 1) {
|
||
|
if (action == action.TALKED_NPC) {
|
||
|
if (!(args[0] instanceof Npc))
|
||
|
return;
|
||
|
|
||
|
final Npc npc = (Npc) args[0];
|
||
|
|
||
|
if (npc.getID() != FRED_ID)
|
||
|
return;
|
||
|
|
||
|
player.setBusy(true);
|
||
|
npc.blockedBy(player);
|
||
|
sendChat("Ahh, you've returned! Do you have my wool?", npc,
|
||
|
player);
|
||
|
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
player.setBusy(false);
|
||
|
player.setMenuHandler(new MenuHandler(new String[] {
|
||
|
"I'm afraid not.", "Yes, I do." }) {
|
||
|
public void handleReply(final int option,
|
||
|
final String reply) {
|
||
|
player.setBusy(true);
|
||
|
sendChat(reply, player, npc);
|
||
|
|
||
|
if (option == 0) {
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
sendChat(
|
||
|
"Well, come and see me when you do. The offer still stands",
|
||
|
npc, player);
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
}
|
||
|
});
|
||
|
} else if (option == 1) {
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
// check items
|
||
|
if (player.getInventory()
|
||
|
.hasItemId(ITEM_WOOL)
|
||
|
&& player.getInventory()
|
||
|
.countId(ITEM_WOOL) >= 20) {
|
||
|
finishQuest(player, npc);
|
||
|
} else {
|
||
|
sendChat(
|
||
|
"Um, no you don't. Get back to me when you do. The reward still stands!",
|
||
|
npc, player);
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
owner.getActionSender()
|
||
|
.sendMenu(
|
||
|
new String[] { "I'm afraid not.",
|
||
|
"Yes, I do." });
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
} else if (stage == 0) {
|
||
|
if (action == action.TALKED_NPC) {
|
||
|
if (!(args[0] instanceof Npc))
|
||
|
return;
|
||
|
|
||
|
final Npc npc = (Npc) args[0];
|
||
|
|
||
|
if (npc.getID() != FRED_ID)
|
||
|
return;
|
||
|
|
||
|
player.setBusy(true);
|
||
|
npc.blockedBy(player);
|
||
|
sendChat("Hello " + player.getUsername() + "!", npc, player);
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
private void finishQuest(final Player player, final Npc npc) {
|
||
|
sendChat("Thank you very much! As promised, here's your reward.", npc,
|
||
|
player);
|
||
|
|
||
|
addSingleEvent(new SingleEvent(player, 2000) {
|
||
|
public void action() {
|
||
|
player.incExp(12, REWARD_XP, false);
|
||
|
player.getActionSender().sendStat(12);
|
||
|
player.setQuestStage(getUniqueID(), Quest.COMPLETE);
|
||
|
for (int i = 0; i < 20; i++)
|
||
|
player.getInventory().remove(ITEM_WOOL, 1);
|
||
|
player.getInventory().add(new InvItem(10, REWARD_GP));
|
||
|
player.getActionSender().sendInventory();
|
||
|
player.incQuestPoints(1);
|
||
|
player.setBusy(false);
|
||
|
npc.unblock();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|