mirror of
https://github.com/moparisthebest/MoparClassic
synced 2024-11-15 05:35:04 -05:00
333 lines
9.7 KiB
Java
333 lines
9.7 KiB
Java
import msc.gs.Instance; import msc.gs.event.SingleEvent;
|
|
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: Cook's Assistant (v1.0) Status: COMPLETE Start: Lumbridge cook (id 7)
|
|
* Items: 19, 136, 22 Reward: 1 quest point, 350 cooking xp
|
|
*
|
|
* @author youKnowWho
|
|
*/
|
|
public class CooksAssistant extends Quest {
|
|
private static final int COOK_ID = 7;
|
|
private static final int ITEM_EGG = 19;
|
|
private static final int ITEM_FLOUR = 136;
|
|
private static final int ITEM_MILK = 22;
|
|
private static final int REWARD_XP = 350;
|
|
private static final String[] FIRST_MENU = new String[] { "Oh, ok, sorry.",
|
|
"Well maybe I can help?" };
|
|
private static final String[] SECOND_MENU = new String[] {
|
|
"Sure, what do you need?", "No, sorry" };
|
|
private static final int QUEST_POINTS = 1;
|
|
|
|
public void init() {
|
|
associateNpc(COOK_ID);
|
|
}
|
|
|
|
public CooksAssistant() {
|
|
}
|
|
|
|
public String getName() {
|
|
return "Cook's Assistant";
|
|
}
|
|
|
|
public int getUniqueID() {
|
|
return 0;
|
|
}
|
|
|
|
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() != COOK_ID)
|
|
return;
|
|
|
|
player.setBusy(true);
|
|
npc.blockedBy(player);
|
|
|
|
sendChat("Sorry, I can't talk right now, I'm very busy!", 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 0:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
sendChat("Oh, ok, sorry.", player, npc);
|
|
break;
|
|
case 1:
|
|
sendChat("Well maybe I can help?", player,
|
|
npc);
|
|
addSingleEvent(new SingleEvent(player, 2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"Perhaps you can... You see, it's the duke's birthday tomorrow",
|
|
npc, player);
|
|
addSingleEvent(new SingleEvent(
|
|
player, 2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"And I haven't got the ingredients for his cake yet!",
|
|
npc, player);
|
|
addSingleEvent(new SingleEvent(
|
|
player, 2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"Do you think you could collect them for me?",
|
|
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 0:
|
|
sendChat(
|
|
"Sure, what do you need?",
|
|
player,
|
|
npc);
|
|
addSingleEvent(new SingleEvent(
|
|
player,
|
|
2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"Oh thank you so much! I'm going to need an egg, some milk and a pot of flour.",
|
|
npc,
|
|
player);
|
|
addSingleEvent(new SingleEvent(
|
|
player,
|
|
2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"Please, hurry!",
|
|
npc,
|
|
player);
|
|
player
|
|
.setQuestStage(
|
|
getUniqueID(),
|
|
1);
|
|
player
|
|
.setBusy(false);
|
|
npc
|
|
.unblock();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
case 1:
|
|
sendChat(
|
|
"No, sorry",
|
|
player,
|
|
npc);
|
|
addSingleEvent(new SingleEvent(
|
|
player,
|
|
2000) {
|
|
public void action() {
|
|
sendChat(
|
|
"Fine. I didn't want your help anyway.",
|
|
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() != COOK_ID)
|
|
return;
|
|
|
|
player.setBusy(true);
|
|
npc.blockedBy(player);
|
|
sendChat(
|
|
"Sorry, I can't - oh, it's you! Do you have the ingredients?",
|
|
npc, player);
|
|
|
|
addSingleEvent(new SingleEvent(player, 2000) {
|
|
public void action() {
|
|
player.setBusy(false);
|
|
player.setMenuHandler(new MenuHandler(new String[] {
|
|
"I forgot what to get!", "Yes, i have them",
|
|
"No, not yet" }) {
|
|
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(
|
|
"I need an egg, a pot flour and some milk! And quickly!",
|
|
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_EGG)
|
|
&& player.getInventory()
|
|
.hasItemId(
|
|
ITEM_FLOUR)
|
|
&& player.getInventory()
|
|
.hasItemId(
|
|
ITEM_MILK)) {
|
|
finishQuest(player, npc);
|
|
} else {
|
|
sendChat(
|
|
"No you don't! Oh please, don't get my hopes up like that!",
|
|
npc, player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
addSingleEvent(new SingleEvent(player, 2000) {
|
|
public void action() {
|
|
sendChat("Oh, please hurry!", npc,
|
|
player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
owner.getActionSender().sendMenu(
|
|
new String[] { "I forgot what to get!",
|
|
"Yes, i have them", "No, not yet" });
|
|
}
|
|
});
|
|
}
|
|
} else if (stage == 0) {
|
|
if (action == action.TALKED_NPC) {
|
|
if (!(args[0] instanceof Npc))
|
|
return;
|
|
|
|
final Npc npc = (Npc) args[0];
|
|
|
|
if (npc.getID() != COOK_ID)
|
|
return;
|
|
|
|
player.setBusy(true);
|
|
npc.blockedBy(player);
|
|
sendChat(
|
|
"Oh hi "
|
|
+ player.getUsername()
|
|
+ ". Thanks for your help! I can't talk at the moment though.",
|
|
npc, player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void finishQuest(final Player player, final Npc npc) {
|
|
sendChat("Oh, thank you so much " + player.getUsername() + "!", npc,
|
|
player);
|
|
|
|
addSingleEvent(new SingleEvent(player, 2000) {
|
|
public void action() {
|
|
sendChat("I'm afraid don't have any money to reward you with",
|
|
npc, player);
|
|
addSingleEvent(new SingleEvent(player, 3000) {
|
|
public void action() {
|
|
sendChat("But I can give you some cooking tips!", npc,
|
|
player);
|
|
addSingleEvent(new SingleEvent(player, 2000) {
|
|
public void action() {
|
|
player.incExp(7, REWARD_XP, false);
|
|
player.getActionSender().sendStat(7);
|
|
player.setQuestStage(getUniqueID(),
|
|
Quest.COMPLETE);
|
|
player.getInventory().remove(ITEM_EGG, 1);
|
|
player.getInventory().remove(ITEM_MILK, 1);
|
|
player.getInventory().remove(ITEM_FLOUR, 1);
|
|
player.getActionSender().sendInventory();
|
|
player.incQuestPoints(QUEST_POINTS);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|