From: omero <nyl...@us...> - 2012-05-02 22:54:11
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/quests In directory vz-cvs-4.sog:/tmp/cvs-serv22224/src/games/stendhal/server/maps/quests Modified Files: MealForGroongo.java Log Message: quest logic now allows required main dishes and dessert short names to be trigger words. quest still missing delivery and reward (final) stages, not ready yet. Index: MealForGroongo.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/quests/MealForGroongo.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MealForGroongo.java 2 May 2012 14:52:44 -0000 1.4 --- MealForGroongo.java 2 May 2012 22:54:08 -0000 1.5 *************** *** 56,59 **** --- 56,60 ---- import java.util.ArrayList; import java.util.HashMap; + import java.util.Iterator; import java.util.List; import java.util.Map; *************** *** 79,83 **** * <li> The player has to fetch the required items/foodstuff, * <li> The player talks again with Stefan, gives him the resources, ! * <li> Stefan tells the player how much time he requires to prepare Groongo's order, * <li> After enough time has elapsed, the player can collect Groongo's order from Stefan, * <li> The player delivers the order to Grongo's, --- 80,84 ---- * <li> The player has to fetch the required items/foodstuff, * <li> The player talks again with Stefan, gives him the resources, ! * <li> Stefan tells the player how much time (10-15mins) he requires to prepare Groongo's order, * <li> After enough time has elapsed, the player can collect Groongo's order from Stefan, * <li> The player delivers the order to Grongo's, *************** *** 132,140 **** * * NOTE: ! * In a sub slot, ingredients cannot be stored as a collection of ! * key=value token pairs. ! * ! * chicken=1:rice=1:tomato=1:garlic=1:trout=1:perch=1:onion=1: ! * chicken=1;rice=1;tomato=1;garlic=1;trout=1;perch=1;onion=1; * * We cannot use directly: --- 133,140 ---- * * NOTE: ! * In a sub slot, ingredients cannot (currently) be stored ! * as a collection of key=value token pairs, like e.g.: ! * - chicken=1;rice=1;tomato=1;garlic=1;trout=1;perch=1;onion=1; ! * - chicken=1:rice=1:tomato=1:garlic=1:trout=1:perch=1:onion=1: * * We cannot use directly: *************** *** 157,160 **** --- 157,183 ---- private static final int XP_REWARD = 1000; + private static final List<String> REQUIRED_MAIN_DISHES = + Arrays.asList( + "paella", + "ciorba", + "lasagne", + "schnitzel", + "consomme", + "paidakia", + "kuskus", + "kushari" + ); + private static final List<String> REQUIRED_DESSERTS = + Arrays.asList( + "macedonia", + "slagroomtart", + "brigadeiro", + "vatrushka" + //"tarte a la rhubarbe", + //"schwarzwalder kirschtorte", + //"ngat biang", + //"gulab jamun" + ); + @Override public void addToWorld() { *************** *** 276,292 **** // Main dishes Groongo will require for the quest // All main dishes are temporary for developing purposes, subject to change ! final List<String> requiredMainDish = ! Arrays.asList( ! "paella", ! "ciorba", ! "lasagne", ! "schnitzel", ! "consomme", ! "paidakia", ! "kuskus", ! "kushari" ! ); ! ! return requiredMainDish.get(Rand.rand(requiredMainDish.size())); } --- 299,303 ---- // Main dishes Groongo will require for the quest // All main dishes are temporary for developing purposes, subject to change ! return REQUIRED_MAIN_DISHES.get(Rand.rand(REQUIRED_MAIN_DISHES.size())); } *************** *** 294,311 **** // Desserts Groongo will ask for the quest // All desserts are temporary for developing purposes, subject to change ! final List<String> requiredDesserts = ! Arrays.asList( ! "macedonia", ! "slagroomtart", ! "brigadeiro", ! "vatrushka" ! ); ! ! //"tarte a la rhubarbe", ! //"schwarzwalder kirschtorte", ! //"ngat biang", ! //"gulab jamun" ! ! return requiredDesserts.get(Rand.rand(requiredDesserts.size())); } --- 305,309 ---- // Desserts Groongo will ask for the quest // All desserts are temporary for developing purposes, subject to change ! return REQUIRED_DESSERTS.get(Rand.rand(REQUIRED_DESSERTS.size())); } *************** *** 401,405 **** //requiredIngredients_paidakia.put("salt", 1); //requiredIngredients_paidakia.put("olive oil", 1); ! requiredIngredients_paidakia.put("potato", 1); requiredIngredients_paidakia.put("kekik", 1); //requiredIngredients_paidakia.put("lemon", 1); --- 399,403 ---- //requiredIngredients_paidakia.put("salt", 1); //requiredIngredients_paidakia.put("olive oil", 1); ! //requiredIngredients_paidakia.put("potato", 1); requiredIngredients_paidakia.put("kekik", 1); //requiredIngredients_paidakia.put("lemon", 1); *************** *** 442,445 **** --- 440,444 ---- //return requiredIngredientsForMainDish.get(requiredMainDish); return ingredients; + } *************** *** 498,503 **** class advanceQuestAction implements ChatAction { public void fire(final Player player, final Sentence sentence, final EventRaiser SpeakerNPC) { - - logger.warn("Quest state <" + player.getQuest(QUEST_SLOT) + ">"); if ("fetch_maindish".equals(player.getQuest(QUEST_SLOT, 0))) { SpeakerNPC.say("go ask dessert now"); --- 497,500 ---- *************** *** 510,513 **** --- 507,513 ---- player.setQuest(QUEST_SLOT, 0, "deliver_decentmeal"); } + + logger.warn("Quest state <" + player.getQuest(QUEST_SLOT) + ">"); + } } *************** *** 516,524 **** class chooseMainDishAction implements ChatAction { public void fire(final Player player, final Sentence sentence, final EventRaiser SpeakerNPC) { - final String requiredMainDish = getRequiredMainDish(); player.setQuest(QUEST_SLOT, 0, "fetch_maindish"); player.setQuest(QUEST_SLOT, 1, requiredMainDish); SpeakerNPC.say( "Bah! I really feel like trying " + --- 516,524 ---- class chooseMainDishAction implements ChatAction { public void fire(final Player player, final Sentence sentence, final EventRaiser SpeakerNPC) { final String requiredMainDish = getRequiredMainDish(); player.setQuest(QUEST_SLOT, 0, "fetch_maindish"); player.setQuest(QUEST_SLOT, 1, requiredMainDish); + SpeakerNPC.say( "Bah! I really feel like trying " + *************** *** 526,530 **** --- 526,532 ---- ". Now go ask Chef Stefan to prepare my #meal, at once!" ); + logger.warn("Quest state <" + player.getQuest(QUEST_SLOT) + ">"); + } } *************** *** 545,549 **** --- 547,553 ---- ". Now go ask Chef Stefan to prepare my #dessert, at once!" ); + logger.warn("Quest state <" + player.getQuest(QUEST_SLOT) + ">"); + } } *************** *** 558,562 **** --- 562,568 ---- ". Did you bring that to me?" ); + logger.warn("Quest state <" + player.getQuest(QUEST_SLOT) + ">"); + } } *************** *** 835,838 **** --- 841,857 ---- new GreetingMatchesNameCondition(npc.getName()), new QuestInStateCondition(QUEST_SLOT, 0, "fetch_maindish")), + ConversationStates.ATTENDING, + // FIXME omero: greetings line should reflect the quest has started + "Hello! MAINDISH!", + null + ); + + // Player remembers generic instructions from Groongo, + // Player says 'meal' + npc.add(ConversationStates.ATTENDING, + "meal", + new AndCondition( + new GreetingMatchesNameCondition(npc.getName()), + new QuestInStateCondition(QUEST_SLOT, 0, "fetch_maindish")), ConversationStates.QUESTION_1, null, *************** *** 840,853 **** ); ! // Player says no npc.add(ConversationStates.QUESTION_1, ConversationPhrases.NO_MESSAGES, null, ! ConversationStates.IDLE, "Be sure to bring me those ingredients all at once!", null ); ! // Player says yes npc.add(ConversationStates.QUESTION_1, ConversationPhrases.YES_MESSAGES, --- 859,889 ---- ); ! // Player remembers Groongo asked for a specific main dish ! // Player says one of the known REQUIRED_MAIN_DISHES ! // Add all the main dishes trigger words ! Iterator<String> i = REQUIRED_MAIN_DISHES.iterator(); ! while (i.hasNext()) { ! npc.add(ConversationStates.ATTENDING, ! i.next(), ! new QuestInStateCondition(QUEST_SLOT, 0, "fetch_maindish"), ! ConversationStates.QUESTION_1, ! null, ! new checkIngredientsForMainDishAction() ! ); ! } ! ! // Player has been asked if he has the ingredients for main dish, ! // Player answers negatively npc.add(ConversationStates.QUESTION_1, ConversationPhrases.NO_MESSAGES, null, ! ConversationStates.ATTENDING, "Be sure to bring me those ingredients all at once!", null ); ! // Player has been asked if he has the ingredients for main dish, ! // Player answers affirmatively, ! // the quest is possibly advanced to the next step npc.add(ConversationStates.QUESTION_1, ConversationPhrases.YES_MESSAGES, *************** *** 860,881 **** ); - // Player collected all the ingredients - /* - ChatAction completeAction = new MultipleActions( - new ChatAction() { - public void fire(final Player player, final Sentence sentence, final EventRaiser SpeakerNPC) { - logger.warn("bravo1"); - SpeakerNPC.say("bravo1"); - } - }, - new ChatAction() { - public void fire(final Player player, final Sentence sentence, final EventRaiser SpeakerNPC) { - - logger.warn("bravo2 <" + player.getQuest(QUEST_SLOT) + ">"); - SpeakerNPC.say("bravo2 <" + player.getQuest(QUEST_SLOT) + ">"); - } - } - ); - */ } --- 896,899 ---- *************** *** 889,892 **** --- 907,923 ---- new GreetingMatchesNameCondition(npc.getName()), new QuestInStateCondition(QUEST_SLOT, 0, "fetch_dessert")), + ConversationStates.ATTENDING, + // FIXME omero: greetings line should reflect the quest has advanced + "Hello! DESSERT!", + null + ); + + // Player remembers generic instructions from Groongo, + // Player says 'dessert' + npc.add(ConversationStates.ATTENDING, + "dessert", + new AndCondition( + new GreetingMatchesNameCondition(npc.getName()), + new QuestInStateCondition(QUEST_SLOT, 0, "fetch_dessert")), ConversationStates.QUESTION_1, null, *************** *** 894,906 **** ); ! // Player says no, he doesn't have any ingredients yet for main dish ! npc.add(ConversationStates.QUESTION_1, ! ConversationPhrases.NO_MESSAGES, ! null, ! ConversationStates.IDLE, ! "Be sure to bring me those ingredients all at once!", ! null ! ); ! // Player says no, he doesn't have any ingredients yet for dessert npc.add(ConversationStates.QUESTION_1, ConversationPhrases.NO_MESSAGES, --- 925,944 ---- ); ! // Player remembers Groongo asked for a specific dessert ! // Player says one of the known REQUIRED_DESSERTS ! // Add all the desserts trigger words ! Iterator<String> i = REQUIRED_DESSERTS.iterator(); ! while (i.hasNext()) { ! npc.add(ConversationStates.ATTENDING, ! i.next(), ! new QuestInStateCondition(QUEST_SLOT, 0, "fetch_dessert"), ! ConversationStates.QUESTION_1, ! null, ! new checkIngredientsForDessertAction() ! ); ! } ! ! // Player has been asked if he has the ingredients for dessert, ! // Player answers negatively npc.add(ConversationStates.QUESTION_1, ConversationPhrases.NO_MESSAGES, *************** *** 911,915 **** ); ! // Player says yes npc.add(ConversationStates.QUESTION_1, ConversationPhrases.YES_MESSAGES, --- 949,955 ---- ); ! // Player has been asked if he has the ingredients for dessert, ! // Player answers affirmatively, ! // the quest is possibly advanced to the next step npc.add(ConversationStates.QUESTION_1, ConversationPhrases.YES_MESSAGES, *************** *** 921,925 **** ConversationStates.IDLE) ); ! } --- 961,965 ---- ConversationStates.IDLE) ); ! } |