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== |
||