From: Katie <ky...@us...> - 2009-08-16 20:00:16
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/magic/house1 In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv13037/src/games/stendhal/server/maps/magic/house1 Modified Files: ChallengerNPC.java Log Message: haastaja offers that you can return to the island if the zone still exists (i.e. if you last left it less than 15 minutes ago). format a bit all the npc.add to make them easier to read, and made it that you can say 'yes' to fighting directly after he told you the fee, if wished. remove the warnings about dying in there as they don't apply now Index: ChallengerNPC.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/magic/house1/ChallengerNPC.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ChallengerNPC.java 16 Aug 2009 16:24:38 -0000 1.14 --- ChallengerNPC.java 16 Aug 2009 20:00:04 -0000 1.15 *************** *** 13,16 **** --- 13,17 ---- import games.stendhal.server.entity.mapstuff.portal.Teleporter; import games.stendhal.server.entity.npc.ChatAction; + import games.stendhal.server.entity.npc.ChatCondition; import games.stendhal.server.entity.npc.ConversationPhrases; import games.stendhal.server.entity.npc.ConversationStates; *************** *** 30,33 **** --- 31,35 ---- import java.util.Arrays; + import marauroa.common.game.IRPZone; import org.apache.log4j.Logger; *************** *** 78,90 **** public void createDialog(final SpeakerNPC npc) { npc.addGreeting("And so, the hero has come."); ! npc.addQuest("Pay the #fee and you can #fight my trained magical creatures. There will be " + NUMBER_OF_CREATURES + " in all, at a level to challenge you. Your life force is the power holding the spell - if you die, the island and your corpse and items are all lost."); ! npc.addHelp("If you are strong enough and will pay the #fee, you can #fight " + NUMBER_OF_CREATURES + " of my animals on a private adventure island. I summon it magically and it is held there by your energy; if you die, it vanishes and your corpse and items will be lost there, forever."); npc.addJob("I train magical animals for fighting and offer warriors the chance to #battle against them on a magical island."); ! npc.addOffer("To fight against " + NUMBER_OF_CREATURES + " of my trained creatures, chosen for your level, make the #challenge. Just know that if you die inside while on the island your corpse and items are lost forever."); npc.addGoodbye("Bye."); ! npc.add(ConversationStates.ANY, "fee", new LevelGreaterThanCondition(MIN_LEVEL - 1), ConversationStates.ATTENDING, null, new ChatAction() { public void fire(final Player player, final Sentence sentence, final SpeakerNPC npc) { ! npc.say("The fee is your current level, multiplied by " + COST_FACTOR + " and payable in cash. At your level of " + player.getLevel() + " the fee is " + COST_FACTOR * player.getLevel() + " money."); } }); --- 80,100 ---- public void createDialog(final SpeakerNPC npc) { npc.addGreeting("And so, the hero has come."); ! npc.addQuest("Pay the #fee and you can #fight my trained magical creatures. There will be " + NUMBER_OF_CREATURES ! + " in all, at a level to challenge you."); ! npc.addHelp("If you are strong enough and will pay the #fee, you can #fight " + NUMBER_OF_CREATURES ! + " of my animals on a private adventure island."); npc.addJob("I train magical animals for fighting and offer warriors the chance to #battle against them on a magical island."); ! npc.addOffer("To fight against " + NUMBER_OF_CREATURES + " of my trained creatures, chosen for your level, make the #challenge."); npc.addGoodbye("Bye."); ! npc.add(ConversationStates.ANY, ! "fee", ! new AndCondition(new LevelGreaterThanCondition(MIN_LEVEL - 1), ! new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), ! ConversationStates.QUEST_OFFERED, ! null, new ChatAction() { public void fire(final Player player, final Sentence sentence, final SpeakerNPC npc) { ! npc.say("The fee is your current level, multiplied by " + COST_FACTOR + " and payable in cash. At your level of " ! + player.getLevel() + " the fee is " + COST_FACTOR * player.getLevel() + " money. Do you want to fight?"); } }); *************** *** 93,112 **** npc.add(ConversationStates.ANY, Arrays.asList("challenge", "fight", "battle"), ! new AndCondition(new LevelGreaterThanCondition(MIN_LEVEL - 1), new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), ConversationStates.QUEST_OFFERED, ! "I accept your challenge. Remember if you die inside you CANNOT return to your corpse to retrieve any items you lost. Likewise if you leave and have left items on the ground, you lose them. Are you still sure you want to enter the adventure island?", null); ! // player returns within DAYS_BEFORE_REPEAT days ! npc.add(ConversationStates.ANY, Arrays.asList("challenge", "fight", "battle"), new NotCondition(new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), ConversationStates.ATTENDING, null, new StateTimeRemainingAction(QUEST_SLOT, "Your life force will not support the island so soon after you last visited. You will be ready again in", DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)); // player below MIN_LEVEL ! npc.add(ConversationStates.ANY, Arrays.asList("challenge", "fight", "battle", "fee"), new LevelLessThanCondition(MIN_LEVEL), ConversationStates.ATTENDING, "You are too weak to fight against " + NUMBER_OF_CREATURES + " at once. Come back when you are at least Level " + MIN_LEVEL + ".", null); // all conditions are met and player says yes he wants to fight ! npc.add(ConversationStates.QUEST_OFFERED, ConversationPhrases.YES_MESSAGES, new LevelGreaterThanCondition(MIN_LEVEL - 1) , ConversationStates.IDLE, null, new ChallengeChatAction()); // player was reminded of dangers and he doesn't want to fight ! npc.add(ConversationStates.QUEST_OFFERED, ConversationPhrases.NO_MESSAGES, null, ConversationStates.ATTENDING, "Fair enough.", null); } ! } --- 103,198 ---- npc.add(ConversationStates.ANY, Arrays.asList("challenge", "fight", "battle"), ! new AndCondition(new LevelGreaterThanCondition(MIN_LEVEL - 1), ! new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), ConversationStates.QUEST_OFFERED, ! "I accept your challenge. If you can pay the #fee, I will summon an island with " + NUMBER_OF_CREATURES ! + " dangerous creatures for you to face. So, are you sure you want to enter the adventure island?", null); ! // player returns within DAYS_BEFORE_REPEAT days, and his island has expired ! npc.add(ConversationStates.ANY, ! Arrays.asList("challenge", "fight", "battle", "fee"), ! new AndCondition( ! new NotCondition(new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), ! new NotCondition(new AdventureZoneExistsCondition()) ! ), ! ConversationStates.ATTENDING, ! null, new StateTimeRemainingAction(QUEST_SLOT, "Your life force will not support the island so soon after you last visited. You will be ready again in", DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)); + + // player returns within DAYS_BEFORE_REPEAT days, if the zone still exists that he was in before, send him straight up. + npc.add(ConversationStates.ANY, + Arrays.asList("challenge", "fight", "battle", "fee"), + new AndCondition( + new NotCondition(new TimePassedCondition(QUEST_SLOT, DAYS_BEFORE_REPEAT * MINUTES_IN_DAYS)), + new AdventureZoneExistsCondition() + ), + ConversationStates.QUESTION_1, + "The island which I recently summoned for you, remains for you to visit at no extra cost. Do you wish to return to it?", + null); + // player below MIN_LEVEL ! npc.add(ConversationStates.ANY, ! Arrays.asList("challenge", "fight", "battle", "fee"), ! new LevelLessThanCondition(MIN_LEVEL), ! ConversationStates.ATTENDING, ! "You are too weak to fight against " + NUMBER_OF_CREATURES + " at once. Come back when you are at least Level " + MIN_LEVEL + ".", ! null); // all conditions are met and player says yes he wants to fight ! npc.add(ConversationStates.QUEST_OFFERED, ! ConversationPhrases.YES_MESSAGES, ! new LevelGreaterThanCondition(MIN_LEVEL - 1), ! ConversationStates.IDLE, ! null, new ChallengeChatAction()); // player was reminded of dangers and he doesn't want to fight ! npc.add(ConversationStates.QUEST_OFFERED, ! ConversationPhrases.NO_MESSAGES, ! null, ! ConversationStates.ATTENDING, ! "Fair enough.", ! null); ! ! // player wishes to return to an existing adventure island ! npc.add(ConversationStates.QUESTION_1, ! ConversationPhrases.YES_MESSAGES, ! // check again it does exist ! new AdventureZoneExistsCondition(), ! ConversationStates.IDLE, ! null, ! new ChatAction() { ! public void fire(final Player player, final Sentence sentence, final SpeakerNPC npc) { ! final String zoneName = player.getName() + "_adventure_island"; ! final StendhalRPZone zone = SingletonRepository.getRPWorld().getZone(zoneName); ! player.teleport(zone, 4, 4, Direction.DOWN, null); ! player.notifyWorldAboutChanges(); ! } ! }); ! ! // player wished to return to an existing adventure island but it's now gone ! npc.add(ConversationStates.QUESTION_1, ! ConversationPhrases.YES_MESSAGES, ! // check again it does exist ! new NotCondition(new AdventureZoneExistsCondition()), ! ConversationStates.ATTENDING, ! "Sorry, but the island vanished between the offer I just made you and you saying 'yes'. You cannot visit it now.", ! null); ! ! ! // player declined to return to an existing adventure island ! npc.add(ConversationStates.QUESTION_1, ! ConversationPhrases.NO_MESSAGES, ! null, ! ConversationStates.ATTENDING, ! "Very well.", ! null); } ! // Not made as an entity.npc.condition. file because the zone name depends on player here. ! class AdventureZoneExistsCondition implements ChatCondition { ! public boolean fire(final Player player, final Sentence sentence, final SpeakerNPC engine) { ! final String zoneName = player.getName() + "_adventure_island"; ! final IRPZone.ID zoneid = new IRPZone.ID(zoneName); ! return SingletonRepository.getRPWorld().hasRPZone(zoneid); ! } ! } } |