// player didn't get ice cream, meanie
npc.add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
new AndCondition(new GreetingMatchesNameCondition(npc.getName()),
new QuestInStateCondition(QUEST_SLOT, "start"),
new NotCondition(new PlayerHasItemWithHimCondition("icecream"))),
ConversationStates.ATTENDING,
"Hello. I'm hungry.",
null);
// player got ice cream and spoke to mummy
npc.add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
new AndCondition(new GreetingMatchesNameCondition(npc.getName()),
new QuestInStateCondition(QUEST_SLOT, "mummy"),
new PlayerHasItemWithHimCondition("icecream")),
ConversationStates.QUESTION_1,
"Yummy! Is that ice cream for me?",
null);
// player spoke to mummy and hasn't got ice cream
npc.add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
new AndCondition(new GreetingMatchesNameCondition(npc.getName()),
new QuestInStateCondition(QUEST_SLOT, "mummy"),
new NotCondition(new PlayerHasItemWithHimCondition("icecream"))),
ConversationStates.ATTENDING,
"Hello. I'm hungry.",
null);
// player is in another state like eating
npc.add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
new AndCondition(new GreetingMatchesNameCondition(npc.getName()),
new QuestStartedCondition(QUEST_SLOT),
new QuestNotInStateCondition(QUEST_SLOT, "start"),
new QuestNotInStateCondition(QUEST_SLOT, "mummy")),
ConversationStates.ATTENDING,
"Hello.",
null);
// player rejected quest
npc.add(ConversationStates.IDLE,
ConversationPhrases.GREETING_MESSAGES,
new AndCondition(new GreetingMatchesNameCondition(npc.getName()),
new QuestInStateCondition(QUEST_SLOT, "rejected")),
ConversationStates.ATTENDING,
"Hello.",
null);
// player asks about quest for first time (or rejected)
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new QuestNotStartedCondition(QUEST_SLOT),
ConversationStates.QUEST_OFFERED,
"I'm hungry! I'd like an ice cream, please. Vanilla, with a chocolate flake. Will you get me one?",
null);
// shouldn't happen
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new QuestCompletedCondition(QUEST_SLOT),
ConversationStates.ATTENDING,
"I'm full up now thank you!",
null);
// player can repeat quest
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new AndCondition(new QuestStateStartsWithCondition(QUEST_SLOT, "eating;"), new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES)),
ConversationStates.QUEST_OFFERED,
"I hope another ice cream wouldn't be greedy. Can you get me one?",
null);
// player can't repeat quest
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new AndCondition(new QuestStateStartsWithCondition(QUEST_SLOT, "eating;"), new NotCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES))),
ConversationStates.ATTENDING,
"I've had too much ice cream. I feel sick.",
null);
// player should be bringing ice cream not asking about the quest
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new AndCondition(new QuestActiveCondition(QUEST_SLOT), new NotCondition(new QuestStateStartsWithCondition(QUEST_SLOT, "eating;"))),
ConversationStates.ATTENDING,
"Waaaaaaaa! Where is my ice cream ....",
null);
// Player agrees to get the ice cream
npc.add(ConversationStates.QUEST_OFFERED,
ConversationPhrases.YES_MESSAGES,
null,
ConversationStates.ATTENDING,
"Thank you!",
new SetQuestAndModifyKarmaAction(QUEST_SLOT, "start", 10.0));
// Player says no, they've lost karma
npc.add(ConversationStates.QUEST_OFFERED,
ConversationPhrases.NO_MESSAGES,
null,
ConversationStates.IDLE,
"Ok, I'll ask my mummy instead.",
new SetQuestAndModifyKarmaAction(QUEST_SLOT, "rejected", -5.0));
// Player has got ice cream and spoken to mummy
final List<ChatAction> reward = new LinkedList<ChatAction>();
reward.add(new DropItemAction("icecream"));
reward.add(new EquipItemAction("present"));
reward.add(new IncreaseXPAction(500));
reward.add(new SetQuestAction(QUEST_SLOT, "eating;"));
reward.add(new SetQuestToTimeStampAction(QUEST_SLOT,1));
reward.add(new IncreaseKarmaAction(10.0));
npc.add(ConversationStates.QUESTION_1,
ConversationPhrases.YES_MESSAGES,
new PlayerHasItemWithHimCondition("icecream"),
ConversationStates.ATTENDING,
"Thank you EVER so much! You are very kind. Here, take this present.",
new MultipleActions(reward));
// player did have ice cream but put it on ground after question?
npc.add(ConversationStates.QUESTION_1,
ConversationPhrases.YES_MESSAGES,
new NotCondition(new PlayerHasItemWithHimCondition("icecream")),
ConversationStates.ATTENDING,
"Hey, where's my ice cream gone?!",
null);
// Player says no, they've lost karma