From: Katie <ky...@us...> - 2008-08-30 16:09:48
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/entity/item/scroll In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv19808/src/games/stendhal/server/entity/item/scroll Modified Files: InvitationScroll.java Log Message: use the content of a patch by hendrik to make invitation scrolls behave more like they were always intended to. the scroll stores the engaged player name if it is a wedding scroll, and the invited guest cannot use the scroll unless the engaged player is online. the scroll stores the just married player name in the case of a hotel scroll and the player cannot use it unless they were the original recipient, and they must be inside a lovers toom to use it. add appropriate description strings to reflect each case. older scrolls with their infostring in a different format will not work now. Index: InvitationScroll.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/entity/item/scroll/InvitationScroll.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** InvitationScroll.java 12 Jul 2008 14:43:56 -0000 1.16 --- InvitationScroll.java 30 Aug 2008 16:09:53 -0000 1.17 *************** *** 10,13 **** --- 10,14 ---- import games.stendhal.server.core.engine.SingletonRepository; + import games.stendhal.server.core.engine.StendhalRPRuleProcessor; import games.stendhal.server.core.engine.StendhalRPZone; import games.stendhal.server.entity.player.Player; *************** *** 23,27 **** public class InvitationScroll extends TeleportScroll { ! /** * Creates a new invitation teleport scroll. * --- 24,33 ---- public class InvitationScroll extends TeleportScroll { ! private static final String WEDDING_ZONE = "int_fado_church"; ! private static final String WEDDING_SPOT = "12 20"; ! ! private static final String HOTEL_ZONE = "int_fado_hotel_0"; ! private static final String HOTEL_SPOT = "4 40"; ! /* * Creates a new invitation teleport scroll. * *************** *** 67,71 **** return false; } ! zone = SingletonRepository.getRPWorld().getZone(st.nextToken()); --- 73,77 ---- return false; } ! // TODO: catch the NPE in case the zone is null. zone = SingletonRepository.getRPWorld().getZone(st.nextToken()); *************** *** 110,114 **** } ! return teleportTo(dest, player); } --- 116,163 ---- } ! String[] info = dest.split(","); ! if (info.length < 2) { ! player.sendPrivateText("This scroll is so old that it lost its magic."); ! return false; ! } ! ! if (info[0].equals("marriage")) { ! return handleTeleportToChurch(player, info[1]); ! } else if (info[0].equals("honeymoon")) { ! return handleTeleportToHotel(player, info[1]); ! } else { ! player.sendPrivateText("Something seems to be wrong with this invitation scroll"); ! return false; ! } ! } ! ! private boolean handleTeleportToChurch(Player player, String playerName) { ! Player engagedPlayer = StendhalRPRuleProcessor.get().getPlayer(playerName); ! if (engagedPlayer == null) { ! player.sendPrivateText("There does not seem be a marriage going on, at least " + playerName + " is not online at the moment."); ! return false; ! } ! //TODO: either activate this by finding out how to put 'marriage' in here: ! // if (marriage.isMarried(playerName)) { ! // player.sendPrivateText("It looks like you missed the wedding, because " + playerName + " is already married."); ! // return false; ! //} ! // or use sth like (engagedPlayer.isInQuestState("marriage","just_married") || engagedPlayer.isInQuestState("marriage","done")) in the ! // if statement. ! return teleportTo(WEDDING_ZONE + " " + WEDDING_SPOT, player); ! } ! ! private boolean handleTeleportToHotel(Player player, String playerName) { ! // check player was original recipient ! if (!player.getTitle().equals(playerName)) { ! player.sendPrivateText("That invitation scroll was given to " + playerName + "."); ! return false; ! } ! // check player is inside a lovers room when they try to use it ! if (!player.getZone().getName().startsWith("int_fado_lovers_room")) { ! player.sendPrivateText("That invitation scroll is only to be used to exit a Fado lovers room."); ! return false; ! } ! return teleportTo(HOTEL_ZONE + " " + HOTEL_SPOT, player); } *************** *** 126,129 **** --- 175,190 ---- return getDescription(); } else { + final String dest = getInfoString(); + String[] info = dest.split(","); + if (info.length == 2) { + // if this was set on creation in maps.quests.marriage.Engagement then both engaged players names could be added. + if (info[0].equals("marriage")) { + return "You read: You are cordially invited to the marriage of " + info[1] + ". Please confirm what time and date you should attend, and then use this scroll to get to Fado Church."; + } + if (info[0].equals("honeymoon")) { + return "You see a scroll which will transport you out of the Fado Lovers Room, and back to Fado Hotel."; + } + return "An invitation to an event."; + } return "An invitation to an event."; } |