User talk:Kymara: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Kymara
elfy: new section
imported>Kymara
Line 67: Line 67:
* equipment refactoring (right click equip, swapping items over existing items in slots)
* equipment refactoring (right click equip, swapping items over existing items in slots)
* [[Stendhal Quest Histories]] - can we get some smart default methods in? or use existing actions?
* [[Stendhal Quest Histories]] - can we get some smart default methods in? or use existing actions?

== npc to lend kitchen tools ==
games.stendhal.server.maps.semos.baker.ShopAssistantNPC

Idea: have erna lend out pestle and mortar or sugar mill and expect them back after a certain time. If you don't bring them back but want to borrow another thing, you have to pay for the previous.

I did this without an ide so not all functions or conditions might be right ... will check

<source lang = "java">
// define a COST int 3000 ?
// String QUEST_SLOT = "borrow_kitchen_equipment";
// List<String> ITEMS of the items;

addOffer("Our pizza delivery team can #borrow some kitchen equipment from me.");

add(ConversationStates.ATTENDING, "borrow",
new LevelLessThanCondition(6),
ConversationStates.ATTENDING,
"Oh sorry, I don't lend equipment to people with so little experience as you.",
null);

add(ConversationStates.ATTENDING, "borrow",
new AndCondition(new LevelGreaterThanCondition(5), new QuestNotCompletedCondition("pizza_delivery")),
ConversationStates.ATTENDING,
"You'll have to speak to Leander and ask if you can help with the pizza before I'm allowed to lend you anything.",
null);

add(ConversationStates.ATTENDING, "borrow",
new AndCondition(
new LevelGreaterThanCondition(5),
new QuestCompletedCondition("pizza_delivery"),
new QuestNotActiveCondition(QUEST_SLOT)),
ConversationStates.ATTENDING,
// that grammar method or one close to it
"I lend out " + Grammar.enumerateCollectionWithHash(ITEMS) + ".",
null);

// player already has borrowed something it didn't return and will pay for it
add(ConversationStates.ATTENDING, "borrow",
new AndCondition(new QuestActiveCondition(QUEST_SLOT), new NotCondition(new PlayerHasRequiredItemWithHimCondition(QUEST_SLOT))),
ConversationStates.QUESTION_1,
"You didn't #return what I last lent you! Do you want to pay for it at a cost of " + COST + " money?",
null);

// player already has borrowed something it didn't return and will return it
add(ConversationStates.ATTENDING, "borrow",
new AndCondition(new QuestActiveCondition(QUEST_SLOT), new PlayerHasRequiredItemWithHimCondition(QUEST_SLOT)),
ConversationStates.QUESTION_2,
"You didn't #return what I last lent you! Do you want to return it now?",
null);

// player wants to pay for previous item
final List<ChatAction> payment = new LinkedList<ChatAction>();
payment.add(new DropItemAction("money", COST));
payment.add(new SetQuestAction(QUEST_SLOT, "done"));
payment.add(new DecreaseKarmaAction(10));
add(ConversationStates.QUESTION_1,
ConversationPhrases.YES_MESSAGES,
new PlayerHasItemWithHimCondition("money", COST),
ConversationStates.ATTENDING,
"Thanks. Just let me know if you want to #borrow any tools again.",
new MultipleActions(payment));

// player already has borrowed something and wants to return it
final List<ChatAction> return = new LinkedList<ChatAction>();
return.add(new DropRequiredItemAction(QUEST_SLOT));
return.add(new SetQuestAction(QUEST_SLOT, "done"));
add(ConversationStates.QUESTION_2,
ConversationPhrases.YES_MESSAGES,
new PlayerHasRequiredItemWithHimCondition(QUEST_SLOT)),
ConversationStates.ATTENDING,
"Thank you! Just let me know if you want to #borrow any tools again.",
new MultipleActions(return));

// don't want to pay for it now
add(ConversationStates.QUESTION_1,
ConversationPhrases.NO_MESSAGES,
null,
ConversationStates.ATTENDING,
"No problem. Take as long as you need, but you can't borrow other tools till you return the last, or pay for it.",
new MultipleActions(payment))

// don't want to return it now
add(ConversationStates.QUESTION_2,
ConversationPhrases.NO_MESSAGES,
null,
ConversationStates.ATTENDING,
"No problem. Take as long as you need, but you can't borrow other tools till you return the last, or pay for it.",
null)


// saying the item name and storing that item name into the quest slot, and giving the item

// TODO: give the item and store it in the quest slot as item name, or itemname = 1 if you feel better about that
add(ConversationStates.ATTENDING,
new TriggerInListCondition(ITEMS),
new AndCondition(
new LevelGreaterThanCondition(5),
new QuestCompletedCondition("pizza_delivery"),
new QuestNotActiveCondition(QUEST_SLOT))
ConversationStates.ATTENDING,
"Here you are! Don't forget to #return it or you have to pay!",
null);
// TODO: say the item name when not in correct conditions should give some appropriate message - or use null condition for a generic message about the item?

// player asks about pay from attending state
add(ConversationStates.ATTENDING, "pay",
new QuestActiveCondition(QUEST_SLOT)),
ConversationStates.QUESTION_1,
"If you lost what I lent you, you can pay " + COST + " money. Do you want to pay now?",
null);

// player asks about return from attending state
add(ConversationStates.ATTENDING, "return",
new QuestActiveCondition(QUEST_SLOT)),
ConversationStates.QUESTION_2,
"Do you want to return what you borrowed now?",
null);

</source>


==stats==
==stats==