From 4fa7c1981d9eeebaa5ddb2d7d95643d73d054f78 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Tue, 7 Dec 2010 22:00:31 +0000 Subject: [PATCH 01/10] updated version number --- build.ant.properties | 2 +- runserver.bat | 2 +- runserver.sh | 2 +- src/games/stendhal/client/update/Version.java | 2 +- src/games/stendhal/common/Debug.java | 2 +- src/games/stendhal/server/core/engine/GenerateINI.java | 2 +- stendhal.jnlp | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.ant.properties b/build.ant.properties index 2823a54655..05d077a5aa 100644 --- a/build.ant.properties +++ b/build.ant.properties @@ -73,7 +73,7 @@ version_server = http://arianne.sourceforge.net/stendhal.version # current version of stendhal version.old = 0.89 -version = 0.89.5 +version = 0.89.6 # javac options javac.deprecation = true diff --git a/runserver.bat b/runserver.bat index 8b0512443d..5ba492c74b 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,3 +1,3 @@ -set STENDHAL_VERSION=0.89.5 +set STENDHAL_VERSION=0.89.6 set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l diff --git a/runserver.sh b/runserver.sh index 5fd7a7e608..6ffeb3070a 100644 --- a/runserver.sh +++ b/runserver.sh @@ -1,5 +1,5 @@ #!/bin/sh -STENDHAL_VERSION="0.89.5" +STENDHAL_VERSION="0.89.6" LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar diff --git a/src/games/stendhal/client/update/Version.java b/src/games/stendhal/client/update/Version.java index dfc3f651a4..37062e0eb5 100644 --- a/src/games/stendhal/client/update/Version.java +++ b/src/games/stendhal/client/update/Version.java @@ -10,7 +10,7 @@ package games.stendhal.client.update; public class Version { /** Version Number. */ - private static final String VERSION = "0.89.5"; + private static final String VERSION = "0.89.6"; /** * Extract the specified number of parts from a version-string. diff --git a/src/games/stendhal/common/Debug.java b/src/games/stendhal/common/Debug.java index 74f174b144..5a8211416b 100644 --- a/src/games/stendhal/common/Debug.java +++ b/src/games/stendhal/common/Debug.java @@ -26,7 +26,7 @@ public class Debug { /** version. */ // Note: This line is updated by build.xml using a regexp so be sure to adjust it in case you modify this line. - public static final String VERSION = "0.89.5"; + public static final String VERSION = "0.89.6"; public static final String PRE_RELEASE_VERSION = null; diff --git a/src/games/stendhal/server/core/engine/GenerateINI.java b/src/games/stendhal/server/core/engine/GenerateINI.java index 188f99bbfc..9b6cc7dcd3 100644 --- a/src/games/stendhal/server/core/engine/GenerateINI.java +++ b/src/games/stendhal/server/core/engine/GenerateINI.java @@ -246,7 +246,7 @@ public class GenerateINI { out.println(); out.println("server_typeGame=" + gameName); out.println("server_name=" + gameName + " Marauroa server"); - out.println("server_version=0.89.5"); + out.println("server_version=0.89.6"); out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse"); out.println(); out.println("# Extensions configured on the server. Enable at will."); diff --git a/stendhal.jnlp b/stendhal.jnlp index 4a4b5c49c5..e128cc1703 100644 --- a/stendhal.jnlp +++ b/stendhal.jnlp @@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t - + From 57bfb8bf2fa6786e6c4bf61faf3e9b9209375c55 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Wed, 8 Dec 2010 20:38:44 +0000 Subject: [PATCH 02/10] delete group management action because its still buggy --- .../server/actions/CommandCenter.java | 1 - .../server/actions/GroupManagementAction.java | 286 ------------------ 2 files changed, 287 deletions(-) delete mode 100644 src/games/stendhal/server/actions/GroupManagementAction.java diff --git a/src/games/stendhal/server/actions/CommandCenter.java b/src/games/stendhal/server/actions/CommandCenter.java index d0a2b2766b..68da4b14b9 100644 --- a/src/games/stendhal/server/actions/CommandCenter.java +++ b/src/games/stendhal/server/actions/CommandCenter.java @@ -95,7 +95,6 @@ public class CommandCenter { EquipAction.register(); FaceAction.register(); ForsakeAction.register(); - GroupManagementAction.register(); KnockAction.register(); ListProducersAction.register(); LookAction.register(); diff --git a/src/games/stendhal/server/actions/GroupManagementAction.java b/src/games/stendhal/server/actions/GroupManagementAction.java deleted file mode 100644 index 7caeac2c84..0000000000 --- a/src/games/stendhal/server/actions/GroupManagementAction.java +++ /dev/null @@ -1,286 +0,0 @@ -/* $Id$ */ -/*************************************************************************** - * (C) Copyright 2003-2010 - Stendhal * - *************************************************************************** - *************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -package games.stendhal.server.actions; - -import games.stendhal.common.NotificationType; -import games.stendhal.server.core.engine.GameEvent; -import games.stendhal.server.core.engine.SingletonRepository; -import games.stendhal.server.core.rp.group.Group; -import games.stendhal.server.entity.player.GagManager; -import games.stendhal.server.entity.player.Player; -import marauroa.common.game.RPAction; - -import org.apache.log4j.Logger; - -/** - * handles the management of player groups. - * - * @author hendrik - */ -public class GroupManagementAction implements ActionListener { - private static Logger logger = Logger.getLogger(GroupManagementAction.class); - - /** - * registers the trade action - */ - public static void register() { - CommandCenter.register("group_management", new GroupManagementAction()); - } - - /** - * processes the requested action. - * - * @param player the caller of the action - * @param action the action to be performed - */ - public void onAction(final Player player, final RPAction action) { - - // vaidate parameters - String actionStr = action.get("action"); - String params = action.get("params"); - if ((actionStr == null) || (params == null)) { - logger.warn("missing action attribute in RPAction " + action); - return; - } - - new GameEvent(player.getName(), "group", params, actionStr).raise(); - - // get target player - Player targetPlayer = null; - if (!actionStr.equals("lootmode") && !actionStr.equals("part") && !actionStr.equals("status")) { - targetPlayer = SingletonRepository.getRuleProcessor().getPlayer(params); - if (targetPlayer == null) { - player.sendPrivateText(NotificationType.ERROR, "Player " + params + " is not online"); - return; - } - } - - // dispatch sub actions - if (actionStr.equals("invite")) { - invite(player, targetPlayer); - } else if (actionStr.equals("join")) { - join(player, targetPlayer); - } else if (actionStr.equals("leader")) { - leader(player, targetPlayer); - } else if (actionStr.equals("lootmode")) { - lootmode(player, params); - } else if (actionStr.equals("kick")) { - kick(player, targetPlayer); - } else if (actionStr.equals("part")) { - part(player); - } else if (actionStr.equals("status")) { - status(player); - } else { - unknown(player, actionStr, params); - } - } - - /** - * invited a player to join a group - * - * @param player Player who invites - * @param targetPlayer player who is invited - */ - private void invite(Player player, Player targetPlayer) { - - // TODO: make checks reusable, some of these checks are used at many places - - if (!player.getChatBucket().checkAndAdd()) { - return; - } - - if (GagManager.checkIsGaggedAndInformPlayer(player)) { - return; - } - - if (targetPlayer.getIgnore(player.getName()) != null) { - return; - } - - if (targetPlayer.getAwayMessage() != null) { - player.sendPrivateText("Sorry, " + targetPlayer.getName() + " is away."); - return; - } - - if (targetPlayer.getGrumpyMessage() != null) { - player.sendPrivateText(targetPlayer.getName() + " has a closed mind, and is seeking solitude from all but close friends"); - return; - } - - // check if the target player is already in a group - Group group = SingletonRepository.getGroupManager().getGroup(targetPlayer.getName()); - if (group != null) { - player.sendPrivateText(NotificationType.ERROR, targetPlayer.getName() + " is already in a group."); - return; - } - - // get group, create it, if it does not exist - SingletonRepository.getGroupManager().createGroup(player.getName()); - group = SingletonRepository.getGroupManager().getGroup(player.getName()); - - // check leader - if (!group.hasLeader(player.getName())) { - player.sendPrivateText(NotificationType.ERROR, "Only the group leader may invite people."); - return; - } - - // check if there is space left in the group - if (group.isFull()) { - player.sendPrivateText(NotificationType.ERROR, "Your group is already full."); - return; - } - - // invite - group.invite(player, targetPlayer); - player.sendPrivateText("You have invited " + targetPlayer.getName() + " to join your group."); - } - - /** - * joins a group - * - * @param player Player who wants to join a group - * @param targetPlayer leader of the group - */ - private void join(Player player, Player targetPlayer) { - - // check if the target player is already in a group - Group group = SingletonRepository.getGroupManager().getGroup(targetPlayer.getName()); - if ((group == null) || !group.hasBeenInvited(player.getName())) { - player.sendPrivateText(NotificationType.ERROR, "You have not been invited into this group or the invite expired."); - return; - } - - // check if there is space left in the group - if (group.isFull()) { - player.sendPrivateText(NotificationType.ERROR, "The group is already full."); - return; - } - - group.addMember(player.getName()); - } - - - /** - * changes the leadership of the group - * - * @param player Player who invites - * @param targetPlayer new leader - */ - private void leader(Player player, Player targetPlayer) { - - // check if the player is already in a group - Group group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (group == null) { - player.sendPrivateText(NotificationType.ERROR, "You are not a member of a group."); - return; - } - - // check leader - group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (!group.hasLeader(player.getName())) { - player.sendPrivateText(NotificationType.ERROR, "Only the group leader may define a new leader."); - return; - } - - // check if the target player is a member of this group - if (!group.hasMember(targetPlayer.getName())) { - player.sendPrivateText(NotificationType.ERROR, targetPlayer.getName() + " is not a member of your group."); - return; - } - - // set leader - group.setLeader(targetPlayer.getName()); - } - - - - /** - * changes the lootmode - * - * @param player leader - * @param lootmode new lootmode - */ - private void lootmode(Player player, String lootmode) { - - // check if the player is already in a group - Group group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (group == null) { - player.sendPrivateText(NotificationType.ERROR, "You are not a member of a group."); - return; - } - - // check leader - group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (!group.hasLeader(player.getName())) { - player.sendPrivateText(NotificationType.ERROR, "Only the group leader may change the lootmode."); - return; - } - - // check if the loot mode is valid - if ((lootmode == null) || (!lootmode.equals("single") && !lootmode.equals("shared"))) { - player.sendPrivateText(NotificationType.ERROR, "Valid loot modes are \"single\" and \"shared\"."); - return; - } - - // set leader - group.setLootmode(lootmode); - } - - /** - * leave the group - * - * @param player player who wants to leave - */ - private void part(Player player) { - Group group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (group == null) { - player.sendPrivateText(NotificationType.ERROR, "You are not a member of a group."); - return; - } - - group.removeMember(player.getName()); - } - - - /** - * status report about the group - * - * @param player player who wants a status report - */ - private void status(Player player) { - Group group = SingletonRepository.getGroupManager().getGroup(player.getName()); - if (group == null) { - player.sendPrivateText(NotificationType.ERROR, "You are not a member of a group."); - return; - } - - group.sendGroupChangeEvent(player); - } - - - private void kick(Player player, Player targetPlayer) { - // TODO Auto-generated method stub - - } - - /** - * sends an error messages on invalid an actions - * - * @param player Player who executed the action - * @param action name of action - * @param params params for the action - */ - private void unknown(Player player, String action, String params) { - player.sendPrivateText(NotificationType.ERROR, "Unknown group action: " + action + " with parameters " + params); - } -} From 169e7a8922bf74d498b6bf12286859a281c097de Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 9 Dec 2010 21:11:13 +0000 Subject: [PATCH 03/10] set version number --- build.ant.properties | 2 +- runserver.bat | 2 +- runserver.sh | 2 +- src/games/stendhal/client/update/Version.java | 2 +- src/games/stendhal/common/Debug.java | 2 +- src/games/stendhal/server/core/engine/GenerateINI.java | 2 +- stendhal.jnlp | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.ant.properties b/build.ant.properties index 05d077a5aa..759c7da30f 100644 --- a/build.ant.properties +++ b/build.ant.properties @@ -73,7 +73,7 @@ version_server = http://arianne.sourceforge.net/stendhal.version # current version of stendhal version.old = 0.89 -version = 0.89.6 +version = 0.90 # javac options javac.deprecation = true diff --git a/runserver.bat b/runserver.bat index 5ba492c74b..ebf4c5b93d 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,3 +1,3 @@ -set STENDHAL_VERSION=0.89.6 +set STENDHAL_VERSION=0.90 set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l diff --git a/runserver.sh b/runserver.sh index 6ffeb3070a..007fca6893 100644 --- a/runserver.sh +++ b/runserver.sh @@ -1,5 +1,5 @@ #!/bin/sh -STENDHAL_VERSION="0.89.6" +STENDHAL_VERSION="0.90" LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar diff --git a/src/games/stendhal/client/update/Version.java b/src/games/stendhal/client/update/Version.java index 37062e0eb5..d14d65c6f3 100644 --- a/src/games/stendhal/client/update/Version.java +++ b/src/games/stendhal/client/update/Version.java @@ -10,7 +10,7 @@ package games.stendhal.client.update; public class Version { /** Version Number. */ - private static final String VERSION = "0.89.6"; + private static final String VERSION = "0.90"; /** * Extract the specified number of parts from a version-string. diff --git a/src/games/stendhal/common/Debug.java b/src/games/stendhal/common/Debug.java index 5a8211416b..4bb549f041 100644 --- a/src/games/stendhal/common/Debug.java +++ b/src/games/stendhal/common/Debug.java @@ -26,7 +26,7 @@ public class Debug { /** version. */ // Note: This line is updated by build.xml using a regexp so be sure to adjust it in case you modify this line. - public static final String VERSION = "0.89.6"; + public static final String VERSION = "0.90"; public static final String PRE_RELEASE_VERSION = null; diff --git a/src/games/stendhal/server/core/engine/GenerateINI.java b/src/games/stendhal/server/core/engine/GenerateINI.java index 9b6cc7dcd3..df781a0dc8 100644 --- a/src/games/stendhal/server/core/engine/GenerateINI.java +++ b/src/games/stendhal/server/core/engine/GenerateINI.java @@ -246,7 +246,7 @@ public class GenerateINI { out.println(); out.println("server_typeGame=" + gameName); out.println("server_name=" + gameName + " Marauroa server"); - out.println("server_version=0.89.6"); + out.println("server_version=0.90"); out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse"); out.println(); out.println("# Extensions configured on the server. Enable at will."); diff --git a/stendhal.jnlp b/stendhal.jnlp index e128cc1703..a6f5047104 100644 --- a/stendhal.jnlp +++ b/stendhal.jnlp @@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t - + From 547457162bda9d0f83ee5dae829fac1ec35cb65f Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 9 Dec 2010 22:09:18 +0000 Subject: [PATCH 04/10] backported fix by kymara: fixed Elisabeth does not accept chocolate bar unless yo - ID: 3133826 and make reward less generous - just one flower. also changed repeat to every 60 minutes --- .../maps/quests/ChocolateForElisabeth.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/games/stendhal/server/maps/quests/ChocolateForElisabeth.java b/src/games/stendhal/server/maps/quests/ChocolateForElisabeth.java index d2da9e7f98..9db306a1db 100644 --- a/src/games/stendhal/server/maps/quests/ChocolateForElisabeth.java +++ b/src/games/stendhal/server/maps/quests/ChocolateForElisabeth.java @@ -12,13 +12,16 @@ ***************************************************************************/ package games.stendhal.server.maps.quests; +import games.stendhal.common.Rand; +import games.stendhal.server.core.engine.SingletonRepository; +import games.stendhal.server.entity.item.StackableItem; import games.stendhal.server.entity.npc.ChatAction; import games.stendhal.server.entity.npc.ConversationPhrases; import games.stendhal.server.entity.npc.ConversationStates; +import games.stendhal.server.entity.npc.EventRaiser; import games.stendhal.server.entity.npc.SpeakerNPC; import games.stendhal.server.entity.npc.action.DecreaseKarmaAction; import games.stendhal.server.entity.npc.action.DropItemAction; -import games.stendhal.server.entity.npc.action.EquipItemAction; import games.stendhal.server.entity.npc.action.IncreaseKarmaAction; import games.stendhal.server.entity.npc.action.IncreaseXPAction; import games.stendhal.server.entity.npc.action.MultipleActions; @@ -36,9 +39,11 @@ import games.stendhal.server.entity.npc.condition.QuestNotStartedCondition; import games.stendhal.server.entity.npc.condition.QuestStartedCondition; import games.stendhal.server.entity.npc.condition.QuestStateStartsWithCondition; import games.stendhal.server.entity.npc.condition.TimePassedCondition; +import games.stendhal.server.entity.npc.parser.Sentence; import games.stendhal.server.entity.player.Player; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -56,7 +61,7 @@ public class ChocolateForElisabeth extends AbstractQuest { private static final String QUEST_SLOT = "chocolate_for_elisabeth"; /** The delay between repeating quests. */ - private static final int REQUIRED_MINUTES = 30; + private static final int REQUIRED_MINUTES = 60; @Override public String getSlotName() { return QUEST_SLOT; @@ -81,7 +86,7 @@ public class ChocolateForElisabeth extends AbstractQuest { ConversationPhrases.GREETING_MESSAGES, new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("chocolate bar")), ConversationStates.IDLE, - "My mom said, I have to wait till I can taste that lovely smell again... She said, she waits for someone to help her!", + "My mum wants to know who I was asking for chocolate from now :(", null); // player didn't get chocolate, meanie @@ -183,9 +188,17 @@ public class ChocolateForElisabeth extends AbstractQuest { // Player has got chocolate bar and spoken to mummy final List reward = new LinkedList(); reward.add(new DropItemAction("chocolate bar")); - reward.add(new EquipItemAction("daisies", 2)); - reward.add(new EquipItemAction("zantedeschia", 2)); - reward.add(new EquipItemAction("pansy",2)); + reward.add(new ChatAction() { + public void fire(final Player player, final Sentence sentence, final EventRaiser npc) { + // pick a random flower + String rewardClass = Rand.rand(Arrays.asList("daisies","zantedeschia","pansy")); + + final StackableItem reward = (StackableItem) SingletonRepository.getEntityManager().getItem(rewardClass); + reward.setQuantity(1); + player.equipOrPutOnGround(reward); + player.notifyWorldAboutChanges(); + } + }); reward.add(new IncreaseXPAction(500)); reward.add(new SetQuestAction(QUEST_SLOT, "eating;")); reward.add(new SetQuestToTimeStampAction(QUEST_SLOT,1)); @@ -195,7 +208,7 @@ public class ChocolateForElisabeth extends AbstractQuest { ConversationPhrases.YES_MESSAGES, new PlayerHasItemWithHimCondition("chocolate bar"), ConversationStates.ATTENDING, - "Thank you EVER so much! You are very kind. Here, take these fresh flowers as a present.", + "Thank you EVER so much! You are very kind. Here, take a fresh flower as a present.", new MultipleActions(reward)); @@ -231,7 +244,7 @@ public class ChocolateForElisabeth extends AbstractQuest { ConversationPhrases.GREETING_MESSAGES, new QuestInStateCondition(QUEST_SLOT, "start"), ConversationStates.ATTENDING, - "Oh you met my daughter Elisabeth already. I hope she wasn't too demanding. You seem like a nice person so it would be really kind, if you can bring her a chocolate bar because I'm not #strong enough for that.", + "Oh you met my daughter Elisabeth already. You seem like a nice person so it would be really kind, if you can bring her a chocolate bar because I'm not #strong enough for that.", new SetQuestAction(QUEST_SLOT, "mummy")); mummyNPC.addReply("strong", "I tried to get some chocolate for Elisabeth a few times, but I couldn't make my way through the assassins and bandits running around #there."); From b66b7e36e2654377715fd3d8c0f4950d83e84b30 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 9 Dec 2010 22:22:27 +0000 Subject: [PATCH 05/10] backported fix by martinfuchs: add fierywaters --- src/games/stendhal/server/entity/npc/parser/words.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/games/stendhal/server/entity/npc/parser/words.txt b/src/games/stendhal/server/entity/npc/parser/words.txt index 0f78999202..086f0c39ad 100644 --- a/src/games/stendhal/server/entity/npc/parser/words.txt +++ b/src/games/stendhal/server/entity/npc/parser/words.txt @@ -300,7 +300,7 @@ bronze OBJ bronzes buckler OBJ bucklers bug OBJ bugs building OBJ buildings -bulb OBJ-ANI bulbs +bulb OBJ bulbs bull OBJ-ANI bulls bureau OBJ bureaux bus OBJ bus @@ -425,6 +425,7 @@ ferry OBJ ferries figure OBJ figures finger OBJ fingers fire OBJ fires +fierywater OBJ fierywaters fish OBJ-FOO fishes flail OBJ flails flask OBJ flasks From a50f83d14f043540b92e85d3f7501301cdce4784 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 9 Dec 2010 22:23:36 +0000 Subject: [PATCH 06/10] backported fix bynylon0700: handle both triggers [chocolate bar/bars] explicitly --- .../stendhal/server/maps/ratcity/bakery/RatChefNPC.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java index 180f57b48c..c482fdcd5a 100644 --- a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java +++ b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java @@ -64,7 +64,11 @@ public class RatChefNPC implements ZoneConfigurator { addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); addReply("crepes", "Ah le dessert for a prince... A taste of which, I really believe, would reform a cannibal into a civilized gentleman."); - addReply(Arrays.asList("chocolate"), + /** + * chocolate bar is the item, and the parser knows nothing about bar/bars. + * Handle all possibilities explicitly. + */ + addReply(Arrays.asList("chocolate", "chocolate bar", "chocolate bars"), "A rarity. It seems only very nasty and murderous folks carry some in their pockets."); addReply("flour", "I stea.. ahem.. get all my supplies of flour from the nearby Semos city."); From 54112d45861350a3c1825405cafee75a99092a75 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 11 Dec 2010 09:23:19 +0000 Subject: [PATCH 07/10] updated marauroa to store zones asynchronously --- libs/marauroa.jar | Bin 317896 -> 318846 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libs/marauroa.jar b/libs/marauroa.jar index a15dbc2398270d8059936cea29e4b6af4a6fed3f..3f5f74ff9adc868e3a0015d4fb1fd9a4772a816c 100644 GIT binary patch delta 24335 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 delta 23828 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 bMJGswG40IT$ Date: Sat, 11 Dec 2010 15:32:18 +0000 Subject: [PATCH 08/10] fixed login not possible without at least one saved profile reported by latifundio and krugi (fixes #3134677) --- src/games/stendhal/client/gui/login/LoginDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/games/stendhal/client/gui/login/LoginDialog.java b/src/games/stendhal/client/gui/login/LoginDialog.java index 62a34b22cf..38cb87c5b2 100644 --- a/src/games/stendhal/client/gui/login/LoginDialog.java +++ b/src/games/stendhal/client/gui/login/LoginDialog.java @@ -321,7 +321,7 @@ public class LoginDialog extends JDialog { private void loginButton_actionPerformed(final ActionEvent e) { // If this window isn't enabled, we shouldn't act. - if (!isEnabled() || (profiles.profiles.size() == 0)) { + if (!isEnabled()) { return; } setEnabled(false); @@ -374,7 +374,7 @@ public class LoginDialog extends JDialog { private void removeButton_actionPerformed(final ActionEvent e) { // If this window isn't enabled, we shouldn't act. - if (!isEnabled()) { + if (!isEnabled() || (profiles.profiles.size() == 0)) { return; } setEnabled(false); From 7314f3fc8596a3fb0815da8cbe359f8c64b4f8a3 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 11 Dec 2010 15:35:41 +0000 Subject: [PATCH 09/10] updated version number --- build.ant.properties | 4 ++-- doc/CHANGES.txt | 4 ++++ runserver.bat | 2 +- runserver.sh | 2 +- src/games/stendhal/client/update/Version.java | 2 +- src/games/stendhal/common/Debug.java | 2 +- src/games/stendhal/server/core/engine/GenerateINI.java | 2 +- stendhal.jnlp | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/build.ant.properties b/build.ant.properties index 759c7da30f..5120b4f9e4 100644 --- a/build.ant.properties +++ b/build.ant.properties @@ -72,8 +72,8 @@ updates_server = http://arianne.sourceforge.net/stendhal/updates version_server = http://arianne.sourceforge.net/stendhal.version # current version of stendhal -version.old = 0.89 -version = 0.90 +version.old = 0.90 +version = 0.90.1 # javac options javac.deprecation = true diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt index f8eacf16d7..bb8a66d4ae 100644 --- a/doc/CHANGES.txt +++ b/doc/CHANGES.txt @@ -1,5 +1,9 @@ Changelog --------- + +0.90.1 +- fixed a bug which prevented logging in without at least one saved profile + 0.90 *world* diff --git a/runserver.bat b/runserver.bat index ebf4c5b93d..2933d00c02 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,3 +1,3 @@ -set STENDHAL_VERSION=0.90 +set STENDHAL_VERSION=0.90.1 set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l diff --git a/runserver.sh b/runserver.sh index 007fca6893..4915e52b5a 100644 --- a/runserver.sh +++ b/runserver.sh @@ -1,5 +1,5 @@ #!/bin/sh -STENDHAL_VERSION="0.90" +STENDHAL_VERSION="0.90.1" LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar diff --git a/src/games/stendhal/client/update/Version.java b/src/games/stendhal/client/update/Version.java index d14d65c6f3..51db3c910b 100644 --- a/src/games/stendhal/client/update/Version.java +++ b/src/games/stendhal/client/update/Version.java @@ -10,7 +10,7 @@ package games.stendhal.client.update; public class Version { /** Version Number. */ - private static final String VERSION = "0.90"; + private static final String VERSION = "0.90.1"; /** * Extract the specified number of parts from a version-string. diff --git a/src/games/stendhal/common/Debug.java b/src/games/stendhal/common/Debug.java index 4bb549f041..693e5e7598 100644 --- a/src/games/stendhal/common/Debug.java +++ b/src/games/stendhal/common/Debug.java @@ -26,7 +26,7 @@ public class Debug { /** version. */ // Note: This line is updated by build.xml using a regexp so be sure to adjust it in case you modify this line. - public static final String VERSION = "0.90"; + public static final String VERSION = "0.90.1"; public static final String PRE_RELEASE_VERSION = null; diff --git a/src/games/stendhal/server/core/engine/GenerateINI.java b/src/games/stendhal/server/core/engine/GenerateINI.java index df781a0dc8..6aa90d8a82 100644 --- a/src/games/stendhal/server/core/engine/GenerateINI.java +++ b/src/games/stendhal/server/core/engine/GenerateINI.java @@ -246,7 +246,7 @@ public class GenerateINI { out.println(); out.println("server_typeGame=" + gameName); out.println("server_name=" + gameName + " Marauroa server"); - out.println("server_version=0.90"); + out.println("server_version=0.90.1"); out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse"); out.println(); out.println("# Extensions configured on the server. Enable at will."); diff --git a/stendhal.jnlp b/stendhal.jnlp index a6f5047104..c52a108738 100644 --- a/stendhal.jnlp +++ b/stendhal.jnlp @@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t - + From bdcfeda9ceff6d60ada8cf350d28606360f5db65 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Sun, 12 Dec 2010 21:04:38 +0000 Subject: [PATCH 10/10] update year to 2011 --- src/games/stendhal/server/maps/quests/MeetSanta.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/games/stendhal/server/maps/quests/MeetSanta.java b/src/games/stendhal/server/maps/quests/MeetSanta.java index a166820b0b..44d72629dd 100644 --- a/src/games/stendhal/server/maps/quests/MeetSanta.java +++ b/src/games/stendhal/server/maps/quests/MeetSanta.java @@ -138,7 +138,7 @@ public class MeetSanta extends AbstractQuest implements LoginListener { final int hairnumber = outfit.getHair(); if ((hairnumber >= 50) && (hairnumber < 94)) { final Date now = new Date(); - final GregorianCalendar notXmas = new GregorianCalendar(2010, Calendar.JANUARY, 6); + final GregorianCalendar notXmas = new GregorianCalendar(2011, Calendar.JANUARY, 6); final Date dateNotXmas = notXmas.getTime(); if (now.after(dateNotXmas)) { final int newhair = hairnumber - 50;