From b217b8dd2df6c3138bfdbafc03a6263184c973ed Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 13 Nov 2010 22:30:16 +0000 Subject: [PATCH 01/38] 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 943f1c3356..4910db141e 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.88 -version = 0.88.5 +version = 0.88.6 # javac options javac.deprecation = true diff --git a/runserver.bat b/runserver.bat index 441481e724..fa4cd1cadb 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,3 +1,3 @@ -set STENDHAL_VERSION=0.88.5 +set STENDHAL_VERSION=0.88.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 cb2125a4ab..32fd0cc8ed 100644 --- a/runserver.sh +++ b/runserver.sh @@ -1,5 +1,5 @@ #!/bin/sh -STENDHAL_VERSION="0.88.5" +STENDHAL_VERSION="0.88.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 0a3df7c7b5..4ca172d4bb 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.88.5"; + private static final String VERSION = "0.88.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 98be3fb759..28fd738e9e 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.88.5"; + public static final String VERSION = "0.88.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 bdef4323af..9682e0b034 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.88.5"); + out.println("server_version=0.88.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 b019ecdea3..a2b5220ccb 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 b4abc57ae6904a142b67201d99229d38b1b4b1e5 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 13 Nov 2010 22:58:38 +0000 Subject: [PATCH 02/38] deactivated quest MixtureForOrtiv --- doc/CHANGES.txt | 1 - src/games/stendhal/server/core/rp/StendhalQuestSystem.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt index 28d4f05682..689f56f402 100644 --- a/doc/CHANGES.txt +++ b/doc/CHANGES.txt @@ -16,7 +16,6 @@ Changelog - Uncle Dag in Ados market, he runs a distillery stand there and produces fierywater - Gaston, a Rat chef in Rat City bakery that will prepare the best crepes suzette au chocolate in town - quest in Wo'fol (the reward is V.S.O.P. koboldish torcibud) -- quest for Ortiv Milquetoast in Kirdneh River House - artichoke, garlic, mandragora (a magical herb) and zantedeschia (a flower) and cane fields are growing in Faiumoni - hen nests spawn eggs - new types of empty bottles diff --git a/src/games/stendhal/server/core/rp/StendhalQuestSystem.java b/src/games/stendhal/server/core/rp/StendhalQuestSystem.java index 29d2348d4c..316ddb1810 100644 --- a/src/games/stendhal/server/core/rp/StendhalQuestSystem.java +++ b/src/games/stendhal/server/core/rp/StendhalQuestSystem.java @@ -206,7 +206,7 @@ public class StendhalQuestSystem { loadQuest(new MeetSanta()); loadQuest(new MeetZynn()); loadQuest(new MithrilCloak()); - loadQuest(new MixtureForOrtiv()); +// loadQuest(new MixtureForOrtiv()); loadQuest(new NewsFromHackim()); loadQuest(new ObsidianKnife()); loadQuest(new PizzaDelivery()); From ac1a4bd70fb1a0b3bc61ff7eea128572fb973e84 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sun, 14 Nov 2010 01:23:57 +0000 Subject: [PATCH 03/38] added trigger for balloon if quest does not apply --- src/games/stendhal/server/maps/fado/city/SmallBoyNPC.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/games/stendhal/server/maps/fado/city/SmallBoyNPC.java b/src/games/stendhal/server/maps/fado/city/SmallBoyNPC.java index ab5e8c866e..bfebe9fe43 100644 --- a/src/games/stendhal/server/maps/fado/city/SmallBoyNPC.java +++ b/src/games/stendhal/server/maps/fado/city/SmallBoyNPC.java @@ -22,6 +22,7 @@ import games.stendhal.server.entity.npc.SpeakerNPC; import games.stendhal.server.entity.player.Player; import games.stendhal.server.entity.Outfit; +import java.util.Arrays; import java.util.Map; @@ -64,6 +65,9 @@ public class SmallBoyNPC implements ZoneConfigurator { + " then I can get my own :)"); addHelp("I wonder if a #balloon could fly high enough to touch the clouds"); addJob("A Job? Is that something you can eat?"); + addReply("balloon", "One day, i will have enough balloons to fly away!"); + addReply(Arrays.asList("xkcd", "tables", "sql", "student", "drop", "table"), + "Oh, yes, my full name is Robert'); DROP TABLE students;-- but I'm called Bobby Tables."); addGoodbye("Good bye."); } From 897acfee956e832cb602e28890ab149754f8e2ac Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Sun, 14 Nov 2010 23:07:19 +0000 Subject: [PATCH 04/38] Backporting 'fixed grammar and description [closes #3109050]' by omero and 'fix grammar and make the teaser for the future quest sound less like a current quest' by kymara --- .../cottage_2/ConfectionerApplePieNPC.java | 16 ++++++++-------- .../cottage_2/ConfectionerCherryPieNPC.java | 9 ++++----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerApplePieNPC.java b/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerApplePieNPC.java index 24782501d6..5c115e116a 100644 --- a/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerApplePieNPC.java +++ b/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerApplePieNPC.java @@ -58,7 +58,7 @@ public class ConfectionerApplePieNPC implements ZoneConfigurator { addReply("gertha", "She's my twin sister and we live here together... Like me, she also likes to #bake fruit pies!"); addReply("honey", - "You should look for the local beekeper somewhat north and then west of here..."); + "You should look for the local beekeeper a little north and then west of here..."); addReply("milk", "Perhaps you should visit some farm where you see they have cows..."); addReply("flour", @@ -66,16 +66,17 @@ public class ConfectionerApplePieNPC implements ZoneConfigurator { addReply("egg", "Find some hens and you'll easily find some eggs too!"); addReply("apple", - "Mmm... When once in a while I travel from Semos to Ados, I always stop at the orchard near one farm along the road..."); + "Mmm... When once in a while I travel from Semos to Ados, I always stop at the orchard near a farm along the road..."); - addHelp("If that can help, I could #bake an apple pie for you!"); + addHelp("If it would help, I could #bake an apple pie for you!"); addOffer("I'd love to #bake a delicious apple pie for you. Just ask me!"); - addQuest("You can bring me all the recipes you can find on baking pies with exotic fruits!"); + /** this is a teaser for a quest not yet available */ + addQuest("Right now I'm perfecting my apple pie recipe. But in future I might want to try something new - I'll let you know."); - addGoodbye("Be carefull out there!"); + addGoodbye("Be careful out there!"); // (uses sorted TreeMap instead of HashMap) final Map requiredResources = new TreeMap(); @@ -89,7 +90,7 @@ public class ConfectionerApplePieNPC implements ZoneConfigurator { requiredResources, 15 * 60); new ProducerAdder().addProducer(this, behaviour, - "Hello! Did you come for tasting one my delicious apple pies? I could #bake one right away!"); + "Hello! Did you come to taste one my delicious apple pies? I could #bake one for you right away!"); } }; @@ -97,8 +98,7 @@ public class ConfectionerApplePieNPC implements ZoneConfigurator { npc.setDirection(Direction.DOWN); npc.setPosition(4, 3); npc.initHP(100); - npc.setDescription("You see Martha"); + npc.setDescription("You see Martha. She loves to bake apple pies for her guests."); zone.add(npc); } - } diff --git a/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerCherryPieNPC.java b/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerCherryPieNPC.java index 2f8b5d4869..75c47132e9 100644 --- a/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerCherryPieNPC.java +++ b/src/games/stendhal/server/maps/kalavan/cottage_2/ConfectionerCherryPieNPC.java @@ -65,10 +65,10 @@ public class ConfectionerCherryPieNPC implements ZoneConfigurator { addReply("cherry", "Mmm... Those are sometimes hard to get. Did you already ask in some tavern if they can offer any?"); - addHelp("If that can help, I could #bake a cherry pie for you!"); + addHelp("If it would help, I could #bake a cherry pie for you!"); addOffer("I'd be happy to #bake a cherry pie for you. Why don't you just ask me?!"); - addQuest("I'd love to try and bake a strawberry pie once in a while... But Alas! Strawberries are nowhere to be found..."); + addQuest("I'd love to try and bake a strawberry pie once in a while... But alas! Strawberries are nowhere to be found..."); addGoodbye("Take care!"); @@ -84,7 +84,7 @@ public class ConfectionerCherryPieNPC implements ZoneConfigurator { requiredResources, 15 * 60); new ProducerAdder().addProducer(this, behaviour, - "Hello! Did you come for tasting one my fabulous cherry pies? I could #bake one for you happily!"); + "Hello! Did you come to taste one of my fabulous cherry pies? I could #bake one for you happily!"); } }; @@ -92,8 +92,7 @@ public class ConfectionerCherryPieNPC implements ZoneConfigurator { npc.setDirection(Direction.DOWN); npc.setPosition(10, 6); npc.initHP(100); - npc.setDescription("You see Gertha"); + npc.setDescription("You see Gertha. She loves baking cherry pies for her guests."); zone.add(npc); } - } From f3578a99447e5bc3fff79837de661ddb3aa0db99 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Sun, 14 Nov 2010 23:07:57 +0000 Subject: [PATCH 05/38] backport: 'Changed "task" sentence as though as the quest isn't active yet :)' by bluelads4 --- .../stendhal/server/maps/kirdneh/river/RetiredTeacherNPC.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/games/stendhal/server/maps/kirdneh/river/RetiredTeacherNPC.java b/src/games/stendhal/server/maps/kirdneh/river/RetiredTeacherNPC.java index ee1e1b2bd3..56380e470f 100644 --- a/src/games/stendhal/server/maps/kirdneh/river/RetiredTeacherNPC.java +++ b/src/games/stendhal/server/maps/kirdneh/river/RetiredTeacherNPC.java @@ -78,7 +78,7 @@ public class RetiredTeacherNPC implements ZoneConfigurator { addHelp("Never ever get into trouble with assassins when they are stronger than you! They will come to get you otherwise! And some of them are waiting downstairs under my basement!"); addJob("I was a teacher for alchemy once but some of my students turned into ugly bandits and assassins... I don't know what happens in Faiumoni at the moment, though, as I just stay in my safe house the whole day long..."); addOffer("Sorry, but I can't offer you anything... I have some major problems in my basement at the moment..."); - addQuest("I want to prepare a mixture for keeping the assassins and bandits in my cellar. I could need some #ingredients for that..."); + addQuest("I want to prepare a mixture for keeping the assassins and bandits in my cellar. I currently try to find the recipe in one of my books and maybe I will need your help soon with that..."); addGoodbye("Take care of yourself and please return soon to visit me again, I'm scared alone!"); } From 56a33c017eb5b11f6066559f1d36e576d217d044 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Sun, 14 Nov 2010 23:08:22 +0000 Subject: [PATCH 06/38] backport: 'fix spelling/grammar and when he answers about 'cane' make sure he says it's sugar cane.' by kymara --- .../server/maps/ados/market/FierywaterDistillerNPC.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java b/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java index 76f56c69ac..9b943608c5 100644 --- a/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java +++ b/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java @@ -51,12 +51,12 @@ public class FierywaterDistillerNPC implements ZoneConfigurator { addJob("I can #brew #fierywater for you, if you bring to me enough #canes and #wood!"); addOffer("If you need #fierywater, just ask me to #brew some for you!"); addReply("fierywater", - "That's my specialty! Mix that with other ingredients and you'll have an execellent beverage." + "That's my speciality! Mix that with other ingredients and you'll have an excellent beverage." + " Gulp that down 100% pure and most likely you will not survive to tell the experience!"); addReply(Arrays.asList("cane", "canes"), - "I get all my canes imported directly from Athor island."); + "I get all my sugar cane imported directly from Athor island."); addReply("wood", - "You find plenty of wood logs near trees and forests are the best place to look for those!"); + "You find plenty of wood logs near trees, and forests are the best place to look for those!"); addGoodbye("Enjoy the market!"); } From d1bb295d402cdad49195dad8c9286fe496b71679 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Sun, 14 Nov 2010 23:08:54 +0000 Subject: [PATCH 07/38] backport grammar and punctuation fixes by kymara --- data/conf/items/containers.xml | 18 +++++++++--------- data/conf/items/food.xml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/conf/items/containers.xml b/data/conf/items/containers.xml index 6ac8f3a919..452620266b 100644 --- a/data/conf/items/containers.xml +++ b/data/conf/items/containers.xml @@ -32,7 +32,7 @@ - You see a bottle. It is empty, someone drank the contents + You see a bottle. It is empty, someone drank the contents. @@ -60,7 +60,7 @@ - You see a eared bottle. It is empty, someone drank the contents + You see an eared bottle. It is empty, someone drank the contents. @@ -74,7 +74,7 @@ - You see a fat bottle. It is empty, someone drank the contents + You see a fat bottle. It is empty, someone drank the contents. @@ -88,7 +88,7 @@ - You see a short rounded bottle. It is empty, someone drank the contents + You see a short rounded bottle. It is empty, someone drank the contents. @@ -102,7 +102,7 @@ - You see a short triangular bottle. It is empty, someone drank the contents + You see a short triangular bottle. It is empty, someone drank the contents. @@ -116,7 +116,7 @@ - You see a slim bottle. It is empty, someone drank the contents + You see a slim bottle. It is empty, someone drank the contents. @@ -130,7 +130,7 @@ - You see a squared bottle. It is empty, someone drank the contents + You see a squared bottle. It is empty, someone drank the contents. @@ -144,7 +144,7 @@ - You see a tall bottle. It is empty, someone drank the contents + You see a tall bottle. It is empty, someone drank the contents. @@ -158,7 +158,7 @@ - You see a triangular bottle. It is empty, someone drank the contents + You see a triangular bottle. It is empty, someone drank the contents. diff --git a/data/conf/items/food.xml b/data/conf/items/food.xml index 32b3b0146b..cc522b3195 100644 --- a/data/conf/items/food.xml +++ b/data/conf/items/food.xml @@ -119,7 +119,7 @@ - You see a artichoke. It can be an ingredient, or you can eat it. + You see an artichoke. It can be an ingredient, or you can eat it. From 424a703f5c09fec26d2c07aaadebb22fe437b615 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Mon, 15 Nov 2010 22:47:16 +0000 Subject: [PATCH 08/38] organized imports --- src/games/stendhal/server/actions/UseAction.java | 1 - src/games/stendhal/server/actions/equip/SourceObject.java | 1 - src/games/stendhal/server/core/rp/StendhalQuestSystem.java | 1 - src/games/stendhal/server/script/DeepInspect.java | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/games/stendhal/server/actions/UseAction.java b/src/games/stendhal/server/actions/UseAction.java index 72fb17e1b7..d1f7a891a9 100644 --- a/src/games/stendhal/server/actions/UseAction.java +++ b/src/games/stendhal/server/actions/UseAction.java @@ -22,7 +22,6 @@ import games.stendhal.server.core.events.UseListener; import games.stendhal.server.entity.Entity; import games.stendhal.server.entity.item.Corpse; import games.stendhal.server.entity.item.Item; -import games.stendhal.server.entity.item.RaidCreatureCorpse; import games.stendhal.server.entity.mapstuff.chest.Chest; import games.stendhal.server.entity.player.Player; import games.stendhal.server.entity.slot.EntitySlot; diff --git a/src/games/stendhal/server/actions/equip/SourceObject.java b/src/games/stendhal/server/actions/equip/SourceObject.java index 018585c451..32a6bc8887 100644 --- a/src/games/stendhal/server/actions/equip/SourceObject.java +++ b/src/games/stendhal/server/actions/equip/SourceObject.java @@ -19,7 +19,6 @@ import games.stendhal.server.core.events.EquipListener; import games.stendhal.server.entity.Entity; import games.stendhal.server.entity.item.Corpse; import games.stendhal.server.entity.item.Item; -import games.stendhal.server.entity.item.RaidCreatureCorpse; import games.stendhal.server.entity.item.Stackable; import games.stendhal.server.entity.item.StackableItem; import games.stendhal.server.entity.player.Player; diff --git a/src/games/stendhal/server/core/rp/StendhalQuestSystem.java b/src/games/stendhal/server/core/rp/StendhalQuestSystem.java index 316ddb1810..f90a913a1e 100644 --- a/src/games/stendhal/server/core/rp/StendhalQuestSystem.java +++ b/src/games/stendhal/server/core/rp/StendhalQuestSystem.java @@ -77,7 +77,6 @@ import games.stendhal.server.maps.quests.MeetMonogenes; import games.stendhal.server.maps.quests.MeetSanta; import games.stendhal.server.maps.quests.MeetZynn; import games.stendhal.server.maps.quests.MithrilCloak; -import games.stendhal.server.maps.quests.MixtureForOrtiv; import games.stendhal.server.maps.quests.NewsFromHackim; import games.stendhal.server.maps.quests.ObsidianKnife; import games.stendhal.server.maps.quests.PaperChase; diff --git a/src/games/stendhal/server/script/DeepInspect.java b/src/games/stendhal/server/script/DeepInspect.java index 2e12edaf06..5ad9c53b07 100644 --- a/src/games/stendhal/server/script/DeepInspect.java +++ b/src/games/stendhal/server/script/DeepInspect.java @@ -54,7 +54,7 @@ public class DeepInspect extends ScriptImpl { * inspect an online character * * @param admin Inspector - * @param character name of online character to inspect + * @param charname name of online character to inspect */ private void inspectOnline(final Player admin, final String charname) { Player player = SingletonRepository.getRuleProcessor().getPlayer(charname); From 79be91b864691b20387bd8fa62795abb794638e0 Mon Sep 17 00:00:00 2001 From: omero Date: Mon, 15 Nov 2010 22:51:59 +0000 Subject: [PATCH 09/38] backporting Gaston, the Ratman Chef in Rat City bakery with producer code disabled untill sugar is available to players --- .../server/maps/orril/dungeon/RatChefNPC.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java b/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java index fcb8ffd6cf..bea72514ab 100644 --- a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java +++ b/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java @@ -28,6 +28,9 @@ import java.util.TreeMap; /** * Provides a Ratman chef running the Rat City bakery. + * NOTE: this revision has the producing code inhibited because + * one required ingredient for crepes suzette au chocolate + * is 'sugar' which is not available unless summoned. * * @author omero */ @@ -61,7 +64,10 @@ public class RatChefNPC implements ZoneConfigurator { @Override protected void createDialog() { - addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); + addGreeting("Hi there. I hope you haven't come to taste my #crepes suzette au chocolate because I'm still setting up my bakery for that!"); + //addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); + addJob("I'm busy with the preparations for opening this bakery." + + "Soon you may taste the finest #crepes suzette au chocolate in town!"); 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"), @@ -74,10 +80,16 @@ public class RatChefNPC implements ZoneConfigurator { "A farm would be a good place where one could find that ingredient."); addReply("sugar", "That comes by grinding sugar canes, wich you could harvest yourself in cane fields."); - addOffer("I will serve you crepes suzette au chocolate if you ask me to #bake one!"); - addHelp("Ask me to #bake you my special #chocolate #crepes suzette, that's what I offer."); + //addOffer("I will serve you crepes suzette au chocolate if you ask me to #bake one!"); + addOffer("Alas, this bakery shop still needs some finishing touches before I can offer you my #crepes suzette au chocolate!"); + //addHelp("Ask me to #bake you my special #chocolate #crepes suzette, that's what I offer."); + addHelp("My apologies but I'm rather busy making this bakery shop ready, so I cannot be very helpfull to you at the moment."); addGoodbye("Au revoire voyageur... And come back visiting me anytime you like!"); + /* + * the sugar ingredient cannot be obtained at the moment + * the producer code is therefore disabled untill sugar is made available to players + * final Map requiredResources = new TreeMap(); requiredResources.put("flour", 1); requiredResources.put("egg", 1); @@ -92,6 +104,7 @@ public class RatChefNPC implements ZoneConfigurator { new ProducerAdder().addProducer(this, behaviour, "Hi there. I bet you've come to taste my #crepes suzette au chocolate! I can #bake some for you if you like."); + */ } }; From a30aee0b9648efd477c34e3dce0d3896a02563c5 Mon Sep 17 00:00:00 2001 From: omero Date: Mon, 15 Nov 2010 23:02:20 +0000 Subject: [PATCH 10/38] reworded comments to clarify deactivation of producer code --- src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java b/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java index bea72514ab..705f9dbc35 100644 --- a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java +++ b/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java @@ -28,7 +28,7 @@ import java.util.TreeMap; /** * Provides a Ratman chef running the Rat City bakery. - * NOTE: this revision has the producing code inhibited because + * NOTE: the producing code inhibited because * one required ingredient for crepes suzette au chocolate * is 'sugar' which is not available unless summoned. * From ecacc1f8b6b0768b0bb6e5eb9a20649cc5d455af Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 10:46:26 +0000 Subject: [PATCH 11/38] moving Gaston to where it belongs (ratcity instead of dungeon) --- .../server/maps/orril/dungeon/RatChefNPC.java | 118 ------------------ 1 file changed, 118 deletions(-) delete mode 100644 src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java diff --git a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java b/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java deleted file mode 100644 index 705f9dbc35..0000000000 --- a/src/games/stendhal/server/maps/orril/dungeon/RatChefNPC.java +++ /dev/null @@ -1,118 +0,0 @@ -/*************************************************************************** - * (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.maps.orril.dungeon; - -import games.stendhal.common.Direction; -import games.stendhal.server.core.config.ZoneConfigurator; -import games.stendhal.server.core.engine.StendhalRPZone; -import games.stendhal.server.core.pathfinder.FixedPath; -import games.stendhal.server.core.pathfinder.Node; -import games.stendhal.server.entity.npc.SpeakerNPC; -import games.stendhal.server.entity.npc.behaviour.adder.ProducerAdder; -import games.stendhal.server.entity.npc.behaviour.impl.ProducerBehaviour; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -/** - * Provides a Ratman chef running the Rat City bakery. - * NOTE: the producing code inhibited because - * one required ingredient for crepes suzette au chocolate - * is 'sugar' which is not available unless summoned. - * - * @author omero - */ -public class RatChefNPC implements ZoneConfigurator { - /** - * Configure a zone. - * - * @param zone The zone to be configured. - * @param attributes Configuration attributes. - */ - public void configureZone(final StendhalRPZone zone, final Map attributes) { - buildNPC(zone, attributes); - } - - private void buildNPC(final StendhalRPZone zone, final Map attributes) { - final SpeakerNPC npc = new SpeakerNPC("Gaston") { - - @Override - protected void createPath() { - final List nodes = new LinkedList(); - nodes.add(new Node(12, 3)); - nodes.add(new Node(3, 3)); - nodes.add(new Node(7, 3)); - nodes.add(new Node(7, 6)); - nodes.add(new Node(9, 6)); - nodes.add(new Node(9, 12)); - nodes.add(new Node(16, 12)); - nodes.add(new Node(16, 3)); - setPath(new FixedPath(nodes, true)); - } - - @Override - protected void createDialog() { - addGreeting("Hi there. I hope you haven't come to taste my #crepes suzette au chocolate because I'm still setting up my bakery for that!"); - //addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); - addJob("I'm busy with the preparations for opening this bakery." - + "Soon you may taste the finest #crepes suzette au chocolate in town!"); - 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"), - "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."); - addReply("egg", - "I'd look for one where hens scratch about."); - addReply(Arrays.asList("butter","milk"), - "A farm would be a good place where one could find that ingredient."); - addReply("sugar", - "That comes by grinding sugar canes, wich you could harvest yourself in cane fields."); - //addOffer("I will serve you crepes suzette au chocolate if you ask me to #bake one!"); - addOffer("Alas, this bakery shop still needs some finishing touches before I can offer you my #crepes suzette au chocolate!"); - //addHelp("Ask me to #bake you my special #chocolate #crepes suzette, that's what I offer."); - addHelp("My apologies but I'm rather busy making this bakery shop ready, so I cannot be very helpfull to you at the moment."); - addGoodbye("Au revoire voyageur... And come back visiting me anytime you like!"); - - /* - * the sugar ingredient cannot be obtained at the moment - * the producer code is therefore disabled untill sugar is made available to players - * - final Map requiredResources = new TreeMap(); - requiredResources.put("flour", 1); - requiredResources.put("egg", 1); - requiredResources.put("butter", 1); - requiredResources.put("milk", 1); - requiredResources.put("sugar", 1); - requiredResources.put("chocolate bar", 1); - requiredResources.put("fierywater", 1); - - final ProducerBehaviour behaviour = new ProducerBehaviour("gaston_bake_crepesuzette", "bake", "crepes suzette", - requiredResources, 5 * 60); - - new ProducerAdder().addProducer(this, behaviour, - "Hi there. I bet you've come to taste my #crepes suzette au chocolate! I can #bake some for you if you like."); - */ - } - }; - - npc.setEntityClass("ratchefnpc"); - npc.setDirection(Direction.DOWN); - npc.setPosition(16, 3); - npc.initHP(100); - npc.setDescription("You see Gaston. He is the best crepes suzette au chocolate chef in all Rat City."); - zone.add(npc); - } -} From 801d53f41958d9b463af6fcfe1d4ef6a16c4ddf8 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 10:49:40 +0000 Subject: [PATCH 12/38] moving gaston to where it belongs (ratcity instead of dungeon --- .../maps/ratcity/bakery/RatChefNPC.java | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java diff --git a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java new file mode 100644 index 0000000000..3a9207a49f --- /dev/null +++ b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java @@ -0,0 +1,118 @@ +/*************************************************************************** + * (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.maps.ratcity.bakery; + +import games.stendhal.common.Direction; +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.core.pathfinder.FixedPath; +import games.stendhal.server.core.pathfinder.Node; +import games.stendhal.server.entity.npc.SpeakerNPC; +import games.stendhal.server.entity.npc.behaviour.adder.ProducerAdder; +import games.stendhal.server.entity.npc.behaviour.impl.ProducerBehaviour; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Provides a Ratman chef running the Rat City bakery. + * NOTE: the producing code inhibited because + * one required ingredient for crepes suzette au chocolate + * is 'sugar' which is not available unless summoned. + * + * @author omero + */ +public class RatChefNPC implements ZoneConfigurator { + /** + * Configure a zone. + * + * @param zone The zone to be configured. + * @param attributes Configuration attributes. + */ + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildNPC(zone, attributes); + } + + private void buildNPC(final StendhalRPZone zone, final Map attributes) { + final SpeakerNPC npc = new SpeakerNPC("Gaston") { + + @Override + protected void createPath() { + final List nodes = new LinkedList(); + nodes.add(new Node(12, 3)); + nodes.add(new Node(3, 3)); + nodes.add(new Node(7, 3)); + nodes.add(new Node(7, 6)); + nodes.add(new Node(9, 6)); + nodes.add(new Node(9, 12)); + nodes.add(new Node(16, 12)); + nodes.add(new Node(16, 3)); + setPath(new FixedPath(nodes, true)); + } + + @Override + protected void createDialog() { + addGreeting("Hi there. I hope you haven't come to taste my #crepes suzette au chocolate because I'm still setting up my bakery for that!"); + //addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); + addJob("I'm busy with the preparations for opening this bakery." + + "Soon you may taste the finest #crepes suzette au chocolate in town!"); + 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"), + "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."); + addReply("egg", + "I'd look for one where hens scratch about."); + addReply(Arrays.asList("butter","milk"), + "A farm would be a good place where one could find that ingredient."); + addReply("sugar", + "That comes by grinding sugar canes, wich you could harvest yourself in cane fields."); + //addOffer("I will serve you crepes suzette au chocolate if you ask me to #bake one!"); + addOffer("Alas, this bakery shop still needs some finishing touches before I can offer you my #crepes suzette au chocolate!"); + //addHelp("Ask me to #bake you my special #chocolate #crepes suzette, that's what I offer."); + addHelp("My apologies but I'm rather busy making this bakery shop ready, so I cannot be very helpfull to you at the moment."); + addGoodbye("Au revoire voyageur... And come back visiting me anytime you like!"); + + /* + * the sugar ingredient cannot be obtained at the moment + * the producer code is therefore disabled untill sugar is made available to players + * + final Map requiredResources = new TreeMap(); + requiredResources.put("flour", 1); + requiredResources.put("egg", 1); + requiredResources.put("butter", 1); + requiredResources.put("milk", 1); + requiredResources.put("sugar", 1); + requiredResources.put("chocolate bar", 1); + requiredResources.put("fierywater", 1); + + final ProducerBehaviour behaviour = new ProducerBehaviour("gaston_bake_crepesuzette", "bake", "crepes suzette", + requiredResources, 5 * 60); + + new ProducerAdder().addProducer(this, behaviour, + "Hi there. I bet you've come to taste my #crepes suzette au chocolate! I can #bake some for you if you like."); + */ + } + }; + + npc.setEntityClass("ratchefnpc"); + npc.setDirection(Direction.DOWN); + npc.setPosition(16, 3); + npc.initHP(100); + npc.setDescription("You see Gaston. He is the best crepes suzette au chocolate chef in all Rat City."); + zone.add(npc); + } +} From 773cf9577a517f2b566de3131fcbd517df53a318 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 12:45:48 +0000 Subject: [PATCH 13/38] changed required ingredient cane to be sugar cane --- .../maps/ados/market/FierywaterDistillerNPC.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java b/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java index 9b943608c5..42f0215c6d 100644 --- a/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java +++ b/src/games/stendhal/server/maps/ados/market/FierywaterDistillerNPC.java @@ -25,7 +25,7 @@ import java.util.TreeMap; /** * Provides Uncle Dag NPC, in Ados Market. - * He will produce fierywater bottles if he is given canes (from cane fields) + * He will produce fierywater bottles if he is given sugar canes (from cane fields) * * @author omero */ @@ -48,13 +48,13 @@ public class FierywaterDistillerNPC implements ZoneConfigurator { addGreeting("Yo!"); addHelp("I'm quite new to this area myself. I cannot help you much, sorry!"); addQuest("Oh, well... I'm not much into those kind of things... I'm a simple man with simple needs, but thank you for asking."); - addJob("I can #brew #fierywater for you, if you bring to me enough #canes and #wood!"); + addJob("I can #brew #fierywater for you, if you bring to me enough #sugar #canes and #wood!"); addOffer("If you need #fierywater, just ask me to #brew some for you!"); addReply("fierywater", "That's my speciality! Mix that with other ingredients and you'll have an excellent beverage." + " Gulp that down 100% pure and most likely you will not survive to tell the experience!"); - addReply(Arrays.asList("cane", "canes"), - "I get all my sugar cane imported directly from Athor island."); + addReply(Arrays.asList("sugar", "cane", "canes", "sugar cane"), + "I get all my sugar canes imported directly from Athor island."); addReply("wood", "You find plenty of wood logs near trees, and forests are the best place to look for those!"); addGoodbye("Enjoy the market!"); @@ -67,13 +67,13 @@ public class FierywaterDistillerNPC implements ZoneConfigurator { }; final Map requiredResources = new TreeMap(); - requiredResources.put("cane", 5); + requiredResources.put("sugar cane", 5); requiredResources.put("wood", 1); final ProducerBehaviour behaviour = new ProducerBehaviour("uncle_dag_brew_fierywater", "brew", "fierywater", requiredResources, 20 * 60); new ProducerAdder().addProducer(npc, behaviour, - "Yo! I'm Uncle Dag, the distillery man! If you bring me #canes, I could #brew #fierywater for you."); + "Yo! I'm Uncle Dag, the distillery man! If you bring me #sugar #canes, I could #brew #fierywater for you."); npc.setDescription("You see Uncle Dag. He runs the distillery stand in Ados market."); npc.setEntityClass("fierywaterdistillernpc"); From 4f30a9b3259aa34f7520de3031b8706792c59eb0 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 12:48:06 +0000 Subject: [PATCH 14/38] moving cane_field.png to sugar_cane_field.png --- .../{cane_field.png => sugar_cane_field.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename data/sprites/{cane_field.png => sugar_cane_field.png} (100%) diff --git a/data/sprites/cane_field.png b/data/sprites/sugar_cane_field.png similarity index 100% rename from data/sprites/cane_field.png rename to data/sprites/sugar_cane_field.png From 19b3ffc6f3aff7a148d25b41bb5969c7e0e41732 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 12:50:04 +0000 Subject: [PATCH 15/38] cane field is now sugar cane field --- .../mapstuff/spawner/PassiveEntityRespawnPointFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/games/stendhal/server/entity/mapstuff/spawner/PassiveEntityRespawnPointFactory.java b/src/games/stendhal/server/entity/mapstuff/spawner/PassiveEntityRespawnPointFactory.java index 018cf692cc..1f91ae05c9 100644 --- a/src/games/stendhal/server/entity/mapstuff/spawner/PassiveEntityRespawnPointFactory.java +++ b/src/games/stendhal/server/entity/mapstuff/spawner/PassiveEntityRespawnPointFactory.java @@ -308,7 +308,7 @@ public class PassiveEntityRespawnPointFactory { break; case 1: - passiveEntityrespawnPoint = new GrainField("cane", Arrays.asList("sickle")); + passiveEntityrespawnPoint = new GrainField("sugar cane", Arrays.asList("sickle")); break; default: passiveEntityrespawnPoint = null; From d9f108c91c2c281ece6ebe1c715ec01b9d3a8f9f Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 12:51:34 +0000 Subject: [PATCH 16/38] cane is now sugar cane --- data/conf/items/resources.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/conf/items/resources.xml b/data/conf/items/resources.xml index b9fd61995d..2d852411af 100644 --- a/data/conf/items/resources.xml +++ b/data/conf/items/resources.xml @@ -17,8 +17,8 @@ - - + + You see a sugar cane. You can grind it for raw sugar. From 09e6c31c35c856ee17a7a5206fa1a8c39c125ad2 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 12:53:54 +0000 Subject: [PATCH 17/38] moving cane.png to sugarcane.png --- .../items/resource/{cane.png => sugarcane.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename data/sprites/items/resource/{cane.png => sugarcane.png} (100%) diff --git a/data/sprites/items/resource/cane.png b/data/sprites/items/resource/sugarcane.png similarity index 100% rename from data/sprites/items/resource/cane.png rename to data/sprites/items/resource/sugarcane.png From 914f7096150e5e3a4461d76fdb7c2c5adf6fef7a Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 13:02:30 +0000 Subject: [PATCH 18/38] canged cane to sugar cane to keep the item working --- src/games/stendhal/server/entity/item/FoodMill.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/games/stendhal/server/entity/item/FoodMill.java b/src/games/stendhal/server/entity/item/FoodMill.java index bb18988304..918e4847bc 100644 --- a/src/games/stendhal/server/entity/item/FoodMill.java +++ b/src/games/stendhal/server/entity/item/FoodMill.java @@ -48,10 +48,10 @@ public class FoodMill extends Item implements UseListener { * the player needs to equip at least a sugar cane in his other hand * and have an empty sack in his inventory */ - if ("cane".equals(first.get("name"))) { + if ("sugar cane".equals(first.get("name"))) { if (user.isEquipped("empty sack")) { final Item item = SingletonRepository.getEntityManager().getItem("sugar"); - user.drop("cane"); + user.drop("sugar cane"); user.drop("empty sack"); user.equipOrPutOnGround(item); } else { @@ -62,7 +62,7 @@ public class FoodMill extends Item implements UseListener { } } else { /** - * the player needs to equip at least a sugar cane in his other hand + * the player needs to equip at least an apple in his other hand * and have an empty flask in his inventory */ if ("apple".equals(first.get("name"))) { From 61811898b5a568564138098cb889783a9280b6e6 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 13:30:22 +0000 Subject: [PATCH 19/38] backporting all the bottle spawners (needed by torcibud quest) --- .../server/maps/ados/bakery/ItemsOnTable.java | 2 +- .../server/maps/ados/bar/ItemsOnTable.java | 47 +++++++++++++++++++ .../ados/magician_house/ItemsOnTable.java | 10 ++-- .../server/maps/ados/tavern/ItemsOnTable.java | 46 ++++++++++++++++++ .../server/maps/fado/forest/ItemsOnTable.java | 45 ++++++++++++++++++ .../server/maps/fado/tavern/ItemsOnTable.java | 46 ++++++++++++++++++ .../server/maps/kirdneh/inn/ItemsOnTable.java | 38 +++++++++++++++ .../maps/semos/bakery/ItemsOnTable.java | 47 +++++++++++++++++++ 8 files changed, 275 insertions(+), 6 deletions(-) create mode 100644 src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java create mode 100644 src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java create mode 100644 src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java create mode 100644 src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java create mode 100644 src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java create mode 100644 src/games/stendhal/server/maps/semos/bakery/ItemsOnTable.java diff --git a/src/games/stendhal/server/maps/ados/bakery/ItemsOnTable.java b/src/games/stendhal/server/maps/ados/bakery/ItemsOnTable.java index 87545f1a57..f3524322c1 100644 --- a/src/games/stendhal/server/maps/ados/bakery/ItemsOnTable.java +++ b/src/games/stendhal/server/maps/ados/bakery/ItemsOnTable.java @@ -31,7 +31,7 @@ public class ItemsOnTable implements ZoneConfigurator { // grower for an empty eared bottle (24h) final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("eared bottle", 288000); bottleGrower1.setPosition(8, 13); - bottleGrower1.setDescription("This seems a good spot were a bottle could stand."); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); zone.add(bottleGrower1); bottleGrower1.setToFullGrowth(); diff --git a/src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java b/src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java new file mode 100644 index 0000000000..96c4a57be1 --- /dev/null +++ b/src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java @@ -0,0 +1,47 @@ +/*************************************************************************** + * (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.maps.ados.bar; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Ados bar + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildBarArea(zone); + } + + private void buildBarArea(final StendhalRPZone zone) { + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower1.setPosition(5, 15); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + // grower for an empty eared bottle (24h) + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("eared bottle", 288000); + bottleGrower2.setPosition(22, 4); + bottleGrower2.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + } + +} diff --git a/src/games/stendhal/server/maps/ados/magician_house/ItemsOnTable.java b/src/games/stendhal/server/maps/ados/magician_house/ItemsOnTable.java index 4a8a69de93..9361e27cc1 100644 --- a/src/games/stendhal/server/maps/ados/magician_house/ItemsOnTable.java +++ b/src/games/stendhal/server/maps/ados/magician_house/ItemsOnTable.java @@ -43,12 +43,12 @@ public class ItemsOnTable implements ZoneConfigurator { plantGrower.setToFullGrowth(); // grower for an empty slim bottle (see Koboldish Torcibud quest) - final PassiveEntityRespawnPoint bottleGrower = new PassiveEntityRespawnPoint("slim bottle", 1500); - bottleGrower.setPosition(10, 5); - bottleGrower.setDescription("A spot where a bottle could be standing."); - zone.add(bottleGrower); + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 1500); + bottleGrower1.setPosition(10, 5); + bottleGrower1.setDescription("This is a likely spot where a bottle could be found."); + zone.add(bottleGrower1); - bottleGrower.setToFullGrowth(); + bottleGrower1.setToFullGrowth(); } diff --git a/src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java b/src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java new file mode 100644 index 0000000000..29bbe343ba --- /dev/null +++ b/src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java @@ -0,0 +1,46 @@ +/*************************************************************************** + * (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.maps.ados.tavern; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Ados tavern + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildTavernArea(zone); + } + + private void buildTavernArea(final StendhalRPZone zone) { + + // grower for an empty eared bottle (24h) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("eared bottle", 288000); + bottleGrower1.setPosition(9, 10); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + // grower for another empty eared bottle (24h) + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("eared bottle", 288000); + bottleGrower2.setPosition(28, 3); + bottleGrower2.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + } +} diff --git a/src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java b/src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java new file mode 100644 index 0000000000..87baa2032f --- /dev/null +++ b/src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java @@ -0,0 +1,45 @@ +/*************************************************************************** + * (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.maps.fado.forest; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates a slim and an eared bottle on the counter in front of the small hut. + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildOutsideHutArea(zone); + } + + private void buildOutsideHutArea(final StendhalRPZone zone) { + + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 100); + bottleGrower1.setPosition(48, 28); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("eared bottle", 100); + bottleGrower2.setPosition(49, 31); + bottleGrower2.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + + } +} diff --git a/src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java b/src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java new file mode 100644 index 0000000000..a921e183cf --- /dev/null +++ b/src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java @@ -0,0 +1,46 @@ +/*************************************************************************** + * (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.maps.fado.tavern; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Fado tavern + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildInnArea(zone); + } + + private void buildInnArea(final StendhalRPZone zone) { + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower1.setPosition(3, 7); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + // grower for an empty eared bottle (24h) + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("eared bottle", 288000); + bottleGrower2.setPosition(30, 5); + bottleGrower2.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + } +} diff --git a/src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java b/src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java new file mode 100644 index 0000000000..02f9a827e6 --- /dev/null +++ b/src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java @@ -0,0 +1,38 @@ +/*************************************************************************** + * (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.maps.kirdneh.inn; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Kirdneh inn + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildInnArea(zone); + } + + private void buildInnArea(final StendhalRPZone zone) { + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower1.setPosition(31, 6); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + } +} diff --git a/src/games/stendhal/server/maps/semos/bakery/ItemsOnTable.java b/src/games/stendhal/server/maps/semos/bakery/ItemsOnTable.java new file mode 100644 index 0000000000..e9acd83263 --- /dev/null +++ b/src/games/stendhal/server/maps/semos/bakery/ItemsOnTable.java @@ -0,0 +1,47 @@ +/*************************************************************************** + * (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.maps.semos.bakery; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Semos bakery + */ +public class ItemsOnTable implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildBakeryArea(zone); + } + + private void buildBakeryArea(final StendhalRPZone zone) { + + // grower for an empty slim bottle that cannot be taken (out of reach) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower1.setPosition(4, 1); + bottleGrower1.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower2.setPosition(22, 2); + bottleGrower2.setDescription("This seems a likely spot where a bottle could be found."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + + } +} From 79b6605ce7387b2acd73982b4ba09e68f2f8ee9d Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 14:31:43 +0000 Subject: [PATCH 20/38] activating backported bottle spawners in all zones --- data/conf/zones/ados.xml | 8 ++++++-- data/conf/zones/fado.xml | 2 ++ data/conf/zones/kirdneh.xml | 1 + data/conf/zones/semos.xml | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/data/conf/zones/ados.xml b/data/conf/zones/ados.xml index 6b549ee3cf..42a39c2b3f 100644 --- a/data/conf/zones/ados.xml +++ b/data/conf/zones/ados.xml @@ -979,6 +979,7 @@ Under new management. Chests to the right are still held by Semos Bank Merchants + @@ -1031,6 +1032,7 @@ in roaches. + @@ -1307,6 +1309,7 @@ in roaches. + @@ -1321,10 +1324,11 @@ in roaches. + - + - + diff --git a/data/conf/zones/fado.xml b/data/conf/zones/fado.xml index 33be230cde..c0e747d3cc 100644 --- a/data/conf/zones/fado.xml +++ b/data/conf/zones/fado.xml @@ -149,6 +149,7 @@ You'll definitely need a wedding ring. Come here to get yours cast once you are + @@ -727,6 +728,7 @@ For example say: 11 if you want the room called Water of Love. + diff --git a/data/conf/zones/kirdneh.xml b/data/conf/zones/kirdneh.xml index 26285de334..bfeea2a1ad 100644 --- a/data/conf/zones/kirdneh.xml +++ b/data/conf/zones/kirdneh.xml @@ -744,6 +744,7 @@ + diff --git a/data/conf/zones/semos.xml b/data/conf/zones/semos.xml index 3d07796dd8..3a7006540f 100644 --- a/data/conf/zones/semos.xml +++ b/data/conf/zones/semos.xml @@ -2069,6 +2069,7 @@ Holy mackerel! These chips are tasty. + @@ -2733,6 +2734,7 @@ Mature sheep wanted: please speak to Sato + From 70165c4300a25ebafcc480acf3780bb89099fdbd Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 15:16:30 +0000 Subject: [PATCH 21/38] backported grammar and punctuation corrections (by kymara) --- .../stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java b/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java index e4ff3208ec..2bbf06b1e7 100644 --- a/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java +++ b/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java @@ -102,13 +102,13 @@ public class KoboldBarmaidNPC implements ZoneConfigurator { seller.say("Wrauff! I can only sell you " + Grammar.plnoun(getAmount(), getChosenItemName()) + " if you meet the price of " + price + " and have " + amount + " empty " - + Grammar.plnoun(getAmount(), requiredContainer)); + + Grammar.plnoun(getAmount(), requiredContainer) + "."); return false; } } else if (!player.isEquipped("money", price)) { seller.say("Wruff! I can only sell you " + Grammar.plnoun(getAmount(), getChosenItemName()) - + " when you will have enough money"); + + " if you have enough money."); return false; } @@ -149,7 +149,7 @@ public class KoboldBarmaidNPC implements ZoneConfigurator { "Wroff! Welcome into the Kobold's Den bar wanderer!" + " I'm Wrviliza, wife of #Wrvil." + " If you want me to #offer you some beverages, just say so!"); - addJob("Wroff! I offer wine, beer and my famous #mild or #strong koboldish #torcibud"); + addJob("Wroff! I offer wine, beer and my famous #mild or #strong koboldish #torcibud."); addHelp("Wruff... If you are thirsty I can #offer you some beverage. If you didn't notice, this is a bar!"); addGoodbye("Wroff... Goodbye and good luck!"); From 8b4c667163605791efb0ee4f21f7b184944115bc Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 16:44:15 +0000 Subject: [PATCH 22/38] fixed a missing blank in greetings sentence --- src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java | 2 +- 1 file changed, 1 insertion(+), 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 3a9207a49f..8d92c0a1e0 100644 --- a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java +++ b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java @@ -67,7 +67,7 @@ public class RatChefNPC implements ZoneConfigurator { addGreeting("Hi there. I hope you haven't come to taste my #crepes suzette au chocolate because I'm still setting up my bakery for that!"); //addJob("I'm the best #crepes suzette au chocolate chef in town. Ask me to #bake one for you!"); addJob("I'm busy with the preparations for opening this bakery." - + "Soon you may taste the finest #crepes suzette au chocolate in town!"); + + " Soon you may taste the finest #crepes suzette au chocolate in town!"); 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"), From 5dfbe1a601fa8787f7a120da15940d977d594639 Mon Sep 17 00:00:00 2001 From: omero Date: Tue, 16 Nov 2010 16:45:02 +0000 Subject: [PATCH 23/38] updating to match the path change of Gaston (ratcity instead of dungeon) --- data/conf/zones/orril.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/conf/zones/orril.xml b/data/conf/zones/orril.xml index 6e2c18acca..01fbc655ab 100644 --- a/data/conf/zones/orril.xml +++ b/data/conf/zones/orril.xml @@ -748,7 +748,7 @@ - + From 20d3c4ea6b0cb20de813cca67442543767ed2df1 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Tue, 16 Nov 2010 22:55:18 +0000 Subject: [PATCH 24/38] punctuation/spelling/grammar and remove unused imports --- .../server/maps/ratcity/bakery/RatChefNPC.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java index 8d92c0a1e0..dc64638a83 100644 --- a/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java +++ b/src/games/stendhal/server/maps/ratcity/bakery/RatChefNPC.java @@ -17,14 +17,11 @@ import games.stendhal.server.core.engine.StendhalRPZone; import games.stendhal.server.core.pathfinder.FixedPath; import games.stendhal.server.core.pathfinder.Node; import games.stendhal.server.entity.npc.SpeakerNPC; -import games.stendhal.server.entity.npc.behaviour.adder.ProducerAdder; -import games.stendhal.server.entity.npc.behaviour.impl.ProducerBehaviour; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.TreeMap; /** * Provides a Ratman chef running the Rat City bakery. @@ -69,7 +66,7 @@ public class RatChefNPC implements ZoneConfigurator { addJob("I'm busy with the preparations for opening this bakery." + " Soon you may taste the finest #crepes suzette au chocolate in town!"); addReply("crepes", - "Ah le dessert for a prince... A taste of which, I really believe, would reform a cannibal into a civilized gentleman"); + "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"), "A rarity. It seems only very nasty and murderous folks carry some in their pockets."); addReply("flour", @@ -79,16 +76,16 @@ public class RatChefNPC implements ZoneConfigurator { addReply(Arrays.asList("butter","milk"), "A farm would be a good place where one could find that ingredient."); addReply("sugar", - "That comes by grinding sugar canes, wich you could harvest yourself in cane fields."); + "That comes from grinding sugar canes, which you could harvest yourself in cane fields."); //addOffer("I will serve you crepes suzette au chocolate if you ask me to #bake one!"); addOffer("Alas, this bakery shop still needs some finishing touches before I can offer you my #crepes suzette au chocolate!"); //addHelp("Ask me to #bake you my special #chocolate #crepes suzette, that's what I offer."); - addHelp("My apologies but I'm rather busy making this bakery shop ready, so I cannot be very helpfull to you at the moment."); - addGoodbye("Au revoire voyageur... And come back visiting me anytime you like!"); + addHelp("My apologies but I'm rather busy making this bakery shop ready, so I cannot be very helpful to you at the moment."); + addGoodbye("Au revoire voyageur... And come back to visit me anytime you like!"); /* * the sugar ingredient cannot be obtained at the moment - * the producer code is therefore disabled untill sugar is made available to players + * the producer code is therefore disabled until sugar is made available to players * final Map requiredResources = new TreeMap(); requiredResources.put("flour", 1); From 857c99da2c3ad3e3b929f099768cc23b82899157 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Tue, 16 Nov 2010 22:58:59 +0000 Subject: [PATCH 25/38] remove mention of crepes from changes --- doc/CHANGES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt index 689f56f402..e554aef568 100644 --- a/doc/CHANGES.txt +++ b/doc/CHANGES.txt @@ -14,7 +14,7 @@ Changelog - Wrviliza, a kobold barmaid in Wo'fol bar, she also provide new drinks (mild and strong koboldish torcibud) - Kormic, a kobold regular in Wo'fol bar - Uncle Dag in Ados market, he runs a distillery stand there and produces fierywater -- Gaston, a Rat chef in Rat City bakery that will prepare the best crepes suzette au chocolate in town +- Gaston, a Rat chef in Rat City bakery - quest in Wo'fol (the reward is V.S.O.P. koboldish torcibud) - artichoke, garlic, mandragora (a magical herb) and zantedeschia (a flower) and cane fields are growing in Faiumoni - hen nests spawn eggs From f8a9e712d1ef6effeda4977f67c4c92ae963c5c3 Mon Sep 17 00:00:00 2001 From: omero Date: Wed, 17 Nov 2010 21:10:41 +0000 Subject: [PATCH 26/38] backporting the bottle spawners for ados bar upper floor --- .../maps/ados/bar/ItemsOnTableUpstairs.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/games/stendhal/server/maps/ados/bar/ItemsOnTableUpstairs.java diff --git a/src/games/stendhal/server/maps/ados/bar/ItemsOnTableUpstairs.java b/src/games/stendhal/server/maps/ados/bar/ItemsOnTableUpstairs.java new file mode 100644 index 0000000000..d4c054aa61 --- /dev/null +++ b/src/games/stendhal/server/maps/ados/bar/ItemsOnTableUpstairs.java @@ -0,0 +1,54 @@ +/*************************************************************************** + * (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.maps.ados.bar; + +import games.stendhal.server.core.config.ZoneConfigurator; +import games.stendhal.server.core.engine.StendhalRPZone; +import games.stendhal.server.entity.mapstuff.spawner.PassiveEntityRespawnPoint; + +import java.util.Map; + +/** + * Creates bottles in Ados bar 1st floor (Upstairs) + */ +public class ItemsOnTableUpstairs implements ZoneConfigurator { + public void configureZone(final StendhalRPZone zone, final Map attributes) { + buildBarUpstairsArea(zone); + } + + private void buildBarUpstairsArea(final StendhalRPZone zone) { + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower1 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower1.setPosition(7, 4); + bottleGrower1.setDescription("This seems a good spot were a bottle could be standing."); + zone.add(bottleGrower1); + + bottleGrower1.setToFullGrowth(); + + // grower for an empty slim bottle (24h) + final PassiveEntityRespawnPoint bottleGrower2 = new PassiveEntityRespawnPoint("slim bottle", 288000); + bottleGrower2.setPosition(8, 25); + bottleGrower2.setDescription("This seems a good spot were a bottle could be standing."); + zone.add(bottleGrower2); + + bottleGrower2.setToFullGrowth(); + + // grower for an empty eared bottle (24h) + final PassiveEntityRespawnPoint bottleGrower3 = new PassiveEntityRespawnPoint("eared bottle", 288000); + bottleGrower3.setPosition(19, 9); + bottleGrower3.setDescription("This seems a good spot were a bottle could be standing."); + zone.add(bottleGrower3); + + bottleGrower3.setToFullGrowth(); + } +} From 3e80395d91305fe7d2c749ec474c837bb7e668fa Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Wed, 17 Nov 2010 21:32:11 +0000 Subject: [PATCH 27/38] dispose the progress bar on finish() --- src/games/stendhal/client/gui/ProgressBar.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/games/stendhal/client/gui/ProgressBar.java b/src/games/stendhal/client/gui/ProgressBar.java index f09deabb72..61ae4cb5fe 100644 --- a/src/games/stendhal/client/gui/ProgressBar.java +++ b/src/games/stendhal/client/gui/ProgressBar.java @@ -140,7 +140,9 @@ public class ProgressBar extends JFrame { m_stepCounter = 20; m_stepSizeMultiplier = 2; m_sleepTime = 15; + cancel(); } + /** * Exits quickly. */ From 487aa4f7725119b531198cf736d5d63f59bc9e8a Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Wed, 17 Nov 2010 21:56:16 +0000 Subject: [PATCH 28/38] correct spelling --- data/conf/items/flowers.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/conf/items/flowers.xml b/data/conf/items/flowers.xml index 68190120cf..8e622d34fb 100644 --- a/data/conf/items/flowers.xml +++ b/data/conf/items/flowers.xml @@ -69,7 +69,7 @@ - You see a pansy, so colorfull and beautifull. + You see a pansy, so colorful and beautiful. From b7d829f24682be54d7ee7f7aa34944a556b16291 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Wed, 17 Nov 2010 22:00:29 +0000 Subject: [PATCH 29/38] correct spelling and remove extra spaces --- data/conf/items/drinks.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/conf/items/drinks.xml b/data/conf/items/drinks.xml index d50562bb1a..3cc0ae5510 100644 --- a/data/conf/items/drinks.xml +++ b/data/conf/items/drinks.xml @@ -61,7 +61,7 @@ - You see a bottle of VSOP koboldish torcibud, expecially aged in oak kegs wrapped by the darkness of a dungeon cellar. It will help you recover when you're all bruised and battered. + You see a bottle of VSOP koboldish torcibud, specially aged in oak casks wrapped by the darkness of a dungeon cellar. It will help you recover when you're all bruised and battered. @@ -80,7 +80,7 @@ - You see apple juice. On a hot summer day, it would taste great. + You see apple juice. On a hot summer day, it would taste great. @@ -99,7 +99,7 @@ - You see a beer. On a hot summer day, it would taste great. + You see a beer. On a hot summer day, it would taste great. @@ -137,7 +137,7 @@ - You see a pina colada. It looks delicious but tastes dangerously strong!. + You see a pina colada. It looks delicious but tastes dangerously strong!. @@ -443,7 +443,7 @@ - You see a mega potion. It strengthens greatly. + You see a mega potion. It strengthens greatly. From 1687e318bf41d307defcd9727c388f17c156a10f Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 18 Nov 2010 19:49:17 +0000 Subject: [PATCH 30/38] added rented_sign to EntityViewFactory (fixes #3111829) --- src/games/stendhal/client/gui/j2d/entity/EntityViewFactory.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/games/stendhal/client/gui/j2d/entity/EntityViewFactory.java b/src/games/stendhal/client/gui/j2d/entity/EntityViewFactory.java index ff457dbeda..02a6f27a93 100644 --- a/src/games/stendhal/client/gui/j2d/entity/EntityViewFactory.java +++ b/src/games/stendhal/client/gui/j2d/entity/EntityViewFactory.java @@ -201,6 +201,7 @@ public class EntityViewFactory { register("sign", null, null, Sign2DView.class); register("blackboard", null, null, Sign2DView.class); register("shop_sign", null, null, ShopSign2DView.class); + register("rented_sign", null, null, Sign2DView.class); register("tradecentersign", null, null, TradeCenterSign2DView.class); register("item", "jewellery", null, StackableItem2DView.class); From c3cdcee79edf5054cb1d44fddb3f9272a15c41e9 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 20 Nov 2010 23:29:01 +0000 Subject: [PATCH 31/38] updated marauroa to include fix for content transfer --- libs/marauroa.jar | Bin 317511 -> 311715 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libs/marauroa.jar b/libs/marauroa.jar index 480b923194df76bfcfd0931d395bebd26a023f6b..405d47a991e6564eddffe58f0d4928fa4dd4a624 100644 GIT binary patch delta 27027 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 delta 31905 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 From 5729dbf11f0bd7fdbb30da751f505e473cdd476a Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Mon, 22 Nov 2010 20:21:19 +0000 Subject: [PATCH 32/38] 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 4910db141e..4a22ff62fb 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.88 -version = 0.88.6 +version = 0.89 # javac options javac.deprecation = true diff --git a/runserver.bat b/runserver.bat index fa4cd1cadb..6f914b0ec8 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,3 +1,3 @@ -set STENDHAL_VERSION=0.88.6 +set STENDHAL_VERSION=0.89 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 32fd0cc8ed..a3d6efdc47 100644 --- a/runserver.sh +++ b/runserver.sh @@ -1,5 +1,5 @@ #!/bin/sh -STENDHAL_VERSION="0.88.6" +STENDHAL_VERSION="0.89" 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 4ca172d4bb..1b07865923 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.88.6"; + private static final String VERSION = "0.89"; /** * 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 28fd738e9e..22d575ac01 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.88.6"; + public static final String VERSION = "0.89"; 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 9682e0b034..626fe1efc6 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.88.6"); + out.println("server_version=0.89"); 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 a2b5220ccb..079d4c9fa7 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 94df9fe53579ce2d627d251cbd62220574d7461b Mon Sep 17 00:00:00 2001 From: Kimmo Rundelin Date: Tue, 23 Nov 2010 17:02:48 +0000 Subject: [PATCH 33/38] Backport of fix to bug [3114842] "[Stendhal] Missplaced rat" --- src/games/stendhal/client/entity/ActiveEntity.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/games/stendhal/client/entity/ActiveEntity.java b/src/games/stendhal/client/entity/ActiveEntity.java index 5f793fbacf..fe1926fd24 100644 --- a/src/games/stendhal/client/entity/ActiveEntity.java +++ b/src/games/stendhal/client/entity/ActiveEntity.java @@ -20,6 +20,8 @@ import marauroa.common.game.RPObject; * An entity that has movement and direction. */ public abstract class ActiveEntity extends Entity { + /** Epsilon value used for coordinate change checks. */ + private static final double EPSILON = 0.001; /** * Direction property. */ @@ -163,8 +165,15 @@ public abstract class ActiveEntity extends Entity { this.y = y; } - // Call onPosition only if the entity actually moved - if (!compareDouble(this.x, oldx, 0.001) || !compareDouble(this.y, oldy, 0.001)) { + // Call onPosition only if the entity actually moved. Also always call + // on partial coordinates - those are always predicted rather than real + // and thus should always be a result of prediction. However, the + // client collision detection does not always agree with that of the + // server, so relying on just the coordinate change checks can miss + // entities stopping when they collide with each other. + if (!compareDouble(this.x, oldx, EPSILON) || !compareDouble(this.y, oldy, EPSILON) + || !compareDouble(oldx, (int) oldx, EPSILON) + || !compareDouble(oldy, (int) oldy, EPSILON)) { onPosition(x, y); } } From efd6293e030edc71b70506ebc7afbf9a9d0371ae Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Tue, 23 Nov 2010 21:57:57 +0000 Subject: [PATCH 34/38] add missing commit about corpses to 0.89 --- doc/CHANGES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt index e554aef568..bc946f5591 100644 --- a/doc/CHANGES.txt +++ b/doc/CHANGES.txt @@ -7,6 +7,7 @@ Changelog - corpses have resistance - scrolls can be labelled with /markscroll command - cancel client download if the user closes the progress bar window and confirms the dialog +- corpses have loot protection to anyone but the defender of the hits for a short time after death *world* - Eheneumniranin, a half-elf that lost his memories. He harvests the grain field in ados forest farm area From aa3e0ff7e16dc459fb2ddbcd335914a3a3e42fe1 Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Fri, 26 Nov 2010 22:07:48 +0000 Subject: [PATCH 35/38] backport Fixed fish names by kiheru --- data/conf/zones/amazon.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/conf/zones/amazon.xml b/data/conf/zones/amazon.xml index 0c507c7930..97bc91644a 100644 --- a/data/conf/zones/amazon.xml +++ b/data/conf/zones/amazon.xml @@ -44,13 +44,13 @@ - red_lionfish + red lionfish - red_lionfish + red lionfish @@ -71,7 +71,7 @@ - red_lionfish + red lionfish @@ -84,7 +84,7 @@ - red_lionfish + red lionfish @@ -97,7 +97,7 @@ - red_lionfish + red lionfish From 403649ef44cd7c1e48f2ad0cefe339fb0b7efddc Mon Sep 17 00:00:00 2001 From: Katie Russell Date: Fri, 26 Nov 2010 22:16:35 +0000 Subject: [PATCH 36/38] backport corrected transactAgreedDeal() to fix #3118469 by omero --- .../maps/wofol/bar/KoboldBarmaidNPC.java | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java b/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java index 2bbf06b1e7..f184a35f6b 100644 --- a/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java +++ b/src/games/stendhal/server/maps/wofol/bar/KoboldBarmaidNPC.java @@ -17,6 +17,7 @@ import games.stendhal.server.core.engine.StendhalRPZone; import games.stendhal.server.core.pathfinder.FixedPath; import games.stendhal.server.core.pathfinder.Node; import games.stendhal.server.entity.item.Item; +import games.stendhal.server.entity.item.StackableItem; import games.stendhal.server.entity.npc.EventRaiser; import games.stendhal.server.entity.npc.SpeakerNPC; import games.stendhal.server.entity.npc.behaviour.adder.SellerAdder; @@ -76,10 +77,10 @@ public class KoboldBarmaidNPC implements ZoneConfigurator { } /** - * Wrviliza will sell her mild or strong koboldish torcibud - * only when the player can afford the price and carries as many empty bottles - * as the requested amount in his inventory. - */ + * Wrviliza will sell her mild or strong koboldish torcibud + * only when the player can afford the price and carries as many empty bottles + * as the requested amount in his inventory. + */ @Override public boolean transactAgreedDeal(final EventRaiser seller, final Player player) { final Item item = getAskedItem(chosenItemName); @@ -92,43 +93,54 @@ public class KoboldBarmaidNPC implements ZoneConfigurator { } int price = getCharge(player); - + if (player.isBadBoy()) { - price = (int) (BAD_BOY_BUYING_PENALTY * price); + price = (int) (BAD_BOY_BUYING_PENALTY * price); } - + if ("slim bottle".equals(requiredContainer) || "eared bottle".equals(requiredContainer)) { - if (!player.isEquipped(requiredContainer, amount) || !player.isEquipped("money", price)) { + if (!player.isEquipped(requiredContainer, getAmount()) || !player.isEquipped("money", price)) { seller.say("Wrauff! I can only sell you " - + Grammar.plnoun(getAmount(), getChosenItemName()) - + " if you meet the price of " + price + " and have " + amount + " empty " - + Grammar.plnoun(getAmount(), requiredContainer) + "."); - return false; + + Grammar.plnoun(getAmount(), getChosenItemName()) + + " if you meet the price of " + price + " and have " + getAmount() + " empty " + + Grammar.plnoun(getAmount(), requiredContainer) + "."); + return false; } } else if (!player.isEquipped("money", price)) { - seller.say("Wruff! I can only sell you " + seller.say("Wruff! I can only sell you " + Grammar.plnoun(getAmount(), getChosenItemName()) + " if you have enough money."); - return false; + return false; } - + + /** + * If the user tries to buy several of a non-stackable item, + * he is forced to buy only one. + */ + if (item instanceof StackableItem) { + ((StackableItem) item).setQuantity(getAmount()); + } else { + setAmount(1); + } + if (player.equipToInventoryOnly(item)) { player.drop("money", price); - if (requiredContainer != "") { - player.drop(requiredContainer, amount); + if (!"".equals(requiredContainer)) { + player.drop(requiredContainer, amount); } - + + seller.say("Wroff! Here " + Grammar.isare(getAmount()) + " your " + Grammar.plnoun(getAmount(), getChosenItemName()) + "!"); return true; - } else { - seller.say("Wruff.. You cannot carry any " - + Grammar.plnoun(getAmount(), getChosenItemName()) + } else { + seller.say("Wruff.. You cannot carry any " + + Grammar.plnoun(getAmount(), getChosenItemName()) + " in your bag now."); - return false; - } + return false; + } } } From 1ae31efdb22d6411230ba555610bc8fc7ba0e4ab Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sat, 27 Nov 2010 21:15:50 +0000 Subject: [PATCH 37/38] updated marauroa --- libs/marauroa.jar | Bin 311715 -> 317896 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libs/marauroa.jar b/libs/marauroa.jar index 405d47a991e6564eddffe58f0d4928fa4dd4a624..a15dbc2398270d8059936cea29e4b6af4a6fed3f 100644 GIT binary patch delta 31457 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%0Dci9VE+$Vc5r;=O=L5Otb22-l*%K_Q?140 z3mX5r9^t!)ANj`SSUcXc3W@kIj0H-)4CRXUcBnnu_E=(zr>K(V>?&vuk7IoBWIO>0 znT+M<5H6{34Z&U=^>E)P<}J0M5R>q%@T^-oOk~JU`9+DlUG&TuM_Hg6Qt8!GDMPQt z>v-ykD-B}lQCMl|sxaYkVl0z)0LZ{TWvl<@4&$ccCqh!zGr`K&{Fum9l9+G|5|?+k zA`Lq*Po8~LEchhNY4qM<=OJYPq_vWyMZCr$x=~v!$0pCA04fAwKmun4; z$F*BP_iDiF#%gd|@&)DOklV9jV^O;Xq8`i7QS&BhAH49PwC%yhDS==B?$MZX0 zY>{5glq8+aV%lEXR Ifxiv^2e1B@6#xJL delta 25686 zcmaHT1z43$^EW5x?(XhR0g*-o1f)BpQ##}z-3^Cs2|+@-q@^1b1nF)R2{FEdJ{%w4 z=ezz~*U{abncvLp&b{}&Iar5Z6pWAgP#FY9L%8`90eK{1G7=!5AP9pzBseKlJUn5g zv9KQj6!H{IoM?mvc_I)U>eP@d!_@u#ff~kK#o}}61vE|0PUw?^*#7M9NtSmVPNJe1cVEfp~o%=85WL_XSG$$O4 zo@@+2`WJKZQy}ucoV|fa2XNmqIDyD+7@#MN0K~t!l7Q^DOuRsj+oT0h;5L~9WceqV z1SEqV1_IHNkAcXy)NerkKS>5Cbv+p6Z~SB@5a%sN0Z8~Zxdh_5O%{NdpvSr(wEvM) z2aDfwB!l7BEP1rhmflS?34XqV)FY$`$&y5(3#WWG&eAc-LT zj*hzfNM?ZBbS-it=r-+$&O~sV&Y)HT-llhGVXg6x>;w8@SoQphvbu9N2Y9&+haWt> z%c+J&_)jFhZBZLCMMXd;$3sB4j{r>!2NR`5fQ2AAIzIjcUkHD`wiM={r=&qf1*334 zKU(4w0U45{&_w$}RYdS2q(qt8k}b{Z$gQnu?>*C=ih5*AXi#h3t*?2Ah@$)uT>rB1 zY*Js}4!geee0C|ET6x*oGns?7Ag=~8di;Iq_41w9$LY)2KacCI5k`ADr_H*v#7~Ew&8K*hT+Mknbl7tzH0RL+5SgHhp^)OU7cpw6^(u1c?+D$Kxq~;D$J!E5%WZutu{@@?8L6x5r)!V2GF=@;_j$WJPxZrb zQNl%r6Dd+VUyMwyoz^m1cek=hzo5cAow0>b*`O$RA$pWq+aTlX z4uuhL^b#}pCqCrI0GD7skL$e%k_f^y?D8TXsRouH zIfKuFs@LUuNM;^A#B69KotG+WU?W5MDriJg6DDCxWT3ECIkU4jNyOrf%FTX>G>*P! z050#EDhywsM0*{3jI!jFv27EH6ddOP)~{Y6Y=5!h=dIFnL1@^8P4EqenD84)wen?c zP~J)@_`RvBpR~bS)2>ea8Ty!e)FfyDkT7MmrLL@yAjv8VgDj#a?mK4GZ6gIDV)Y5j zhFa=IG1n7>-=v!_mA^&t)ZTSh8=Q2P_+V!9gMqyBjWa=es50J?_KCqa)$Zd{=ExSN7S%w-THvt6$eTYEE zBJCkarQy~%5E0UCLRcxE9Mrjbj7B!8IQRm~&GqU5 zIP=R15vPF6Wq0Z)Y{2wgSEc%Rkz>EnHi%eTNu1+&%oDQ?EoH}2=U^n*!an0F-m{N60YwiE0OLr=p2wtH+q=UNAaRsW%E9oJYLtMfhKc`fyagNG&|==bin>ZohOiHebA!J z3tFB*4<_mphD(2zeLJrBC?P?OY7eq45|fc+2}>vW3pOSBq(dY+L4CLS1|f!r8?RI} z@5ttT_H(NF+7XqS?p&#~Rw?{Rihd5CpZ9gvAqB+;0LWc`x*!Vh4u8pbq&4T|0RCP% zFa5>Iosr#^cewK?1A3rtCGZGDZijdh!)DXix_N1_HzwKy0h949dB+Hm-=470?7R1~ z+!fVTjH9hsfxh+~mR6|jB*riOz+xR}R?$|r%~hhN+PT~mpX5A@D9X{E6!5#V7wSK{ z6xsZ#>{|8cXP50f`ss%N?rlSbbo*q&Q9`tH47KijThcX3u|5RS`(jtxkR)-onG8~t zH{3q&6d%rr^?h`R^dXJu)TvaZqEWhHCw#`(0U>Lp3$wDD_GlO(KH4GkkMcz_^9jir zl`SL#9qJp=kPtMPJFx`pDmr|yAc}vS_2RRf>u6Vkj%yVN$$(-tzR@cJeT!~2G~Mi} z#qluJK4#H_lvS7NL8Yq>bx5{}@5k!83g@x!FSb!buD^3U3+@zjB3fn|#Pd=u(dcWy z9~{IHHd``~@?SR?pCD|HuCZjRu0uCsmI~ElWlq#j$5h6yWKPglWTqi(^`#j|7`GIb zpCzPH&{tQ-I4`O+rzq(~CD&xv8^TmXX2H}>G99=cq)p3rf542W`U+AIc)(JCn@(57 ze?W3aO3y(ub|TlTV-^&u`z7M*8nmYRl0Y7BnA0aslSED=kTPhPCR@g;MXMQC<{f|o zXVz`d*bT3!?uq%}Slt^Qrm$K)pUAOhk~h{WiVknAHu(vA`$(8Fk_J}1@ko1GSr>wb zR9tmRHuTiY?9eh>xsM@xVMWF+q|n{1<$j6gdpNdw)GVr|0E#}^2g;`EafuWky<_tI zEvIFhZP~V_1Z2x_?hJ)?2!N1nxv-`I+hFCE@>Sk19(qG^O2`xU=sscP zL)~qp-TH&)ttrDP8t8sB{VOR{10ho^JI^YvKizS4_*6+p;dikK5e|uA4_i~<<-_fX zVG>)rpOX_ga>t0sZ7AW6a7(2tU+_@9h-jmm=Hnl>E#s;BDQsW5J_ctz)-In-(r2q} z;S+6`O|uwE6zZpB9j@Kj*8Rpi%9i@1n0@SYXo_X($;)eMnUctbY?7@wdE1O^cJ$6f zbtmEPjob6{#~+3G1R>khul)xJIuk!@xie51I5%#)GPQ_|_~DBQUrnHGZAFhxSkn#k z%)aGAzpO5_MD%%A7xRRR$rLZ@(qaq9^~p{Fb7|dS_LD-EZv6V)EwYKT8J3O8N8QqI z6^qCQAEDpjl;`r{dDfmTtIU&;Rv2L`%qb(vsUY}Lic^qIR%H^hOXN`cWloOV1=+FB zs2=qqDe8JK{QJfLe(@@+T{o}YrrMh^?`MrG;)thcp{~!|4U4hbRhvGAtAd>qpLyA` z|4_;Cj&D7YbS!msC)b)jtdH|#&>~tTs#L;wR<{_;+U_KfSY=tfPI=M|N;mPwL+_}9 znu+R@SaUtek=43@YzlXjxCrWK$6nGmAUCL>t}!`fxIG;b-X!90R+v{5k}>Gp`mAnR z<%+`28%4Vq>)uK}?~eUunkvkR`_pa!6&W_K`}M;I*!eM3ebOJWu|Kz;@n}y09P$-( zkM-TAUj`4`6KN7T^!b(?%QC%g;W>uferW&tc0-i#%gHWD#+24W-u1%QBKRqh>?lnI z*`=q<91YQ9X;8x`ekat9=+peMoo<*UkJ+`Vfmq zx;hqz1Dj2Q}Y-1-}Ve_bNA^ZXi9>EtaEoM%bHobalvoQv(G7zntwD_8g z^+pwW^NyuXe(^yZ#f+-dEd!5&~iOP+NRHANZe78Nm?r+#2!VqEJS;(V)#9Y zH*;Z6eCv?4fcM7IGBFufURIu9SBBwB2c|U8$}p z>v&irB0=Gn;xP)A;!#C>RK56kxhbv~1CO)2H1TrNPBGj`C)Py65aqJ;#s>S!wp$Z- zpL{upAjv2(yT|%G^Tl|g_%h47PdkkyH=m-}#2InADgAST8u zBv)MWGWzz!Ty%@33q&;fMt{JRgHNs%R zmxZMmpV>^Uz6gc2Vt6Gnn##T1fG}G3%X@}Z$2A0|scK5doQlxexutfUP@pEJus&h( z!_=vXkf}|TNzbnit42DyN(C`y6WWjAuuhD#Kei^dHl5`gK;(-q%en6qt5~H!i?6Xz z1(=>S$hu?vDpEamGWjt|YM}s2Z~Z{M1$4-e$YkJ4-}~N&YPk|l6GUP~vk)q?M}@xF zI080p1cgod&sC{|(XK*e7?N5ORJ^H2CvUd@YyT>3vvqDr`OHpx^zVzzdKVz*^D$&9{J#BCR#ZqS!h zt0}E0^JnYOv}cRkMb_IU{PY~cnyd6$Qgg}XiRzehf#*d2n%9H)ejc41E=4>+dOAk2 zM{I~P!H-Prr2S4E6tx#Z?;9NpO_vZat&ujC*R(70hE$*GQ|=WCu;;L*l!(o0wf77N zjx-DC@2^n`WW8k+B%unCu4YeNGLZ!Lzf_#%aODNY#;!GTRiO$+%rxadv_+H7A}{nA ze33Yw5Y^GCoaFQ#@Rvo_@R!BPPTXVbQrj3vpCP{@6C8mO<6I_T2ozx|t1CQ0&aerk zHqFbAdm6}ePMbN;@L_IScUZEY@0@h)0G*>C%b{UAvmwP0qAWBoI;*x~lR`+N(D5Z3 z=oCRTc|u5bS2}p0?UWo0*-dy(f@YK1<$KSlYf-|Qms_MW5K;Pd;MR(Cyz!&1HPdJX zVPt2z!oV!_=FnL?iD0xt4%U2+^I{%C2X-0;p)!P~qjQz>v;`Bf$JQCv3IyH4N}J#~ zi=Y=S(u?nYYFXfuu?(Q2)ErNCahc;@Q_-G-v{sobt?#bWTq6$5DOZbh2lOhP-%+i- z%hUa%&-R>nysmTT$g$t*V;trgHr{4YlO6L^$JyXh|Ia-Tz+YXeM6|?%VK&%M*P0js zffqj1C9bBBZ##R$8u>wj(WtGo-Tp#lC>Jm2QR)E+CZNl%6Nn4 zcjFEM2qa^J@LBBGGsOd0nL*#vKZM(c^Sp%sXBKw81OY}BX*!AVZ7r<~OcCmKQr$mO zem4&|J1YvgE=0fPT{u?i>b2iI(MN;R@DSQU-eoSwpc zG$2m)>GYu-ko?D)&_X2XitmT}cRraWg`20x>5fzLf8)bQIHoR5^B;gLWh8u^Jal?X${KG!HX4 z&QN}r9`I7WkU2~E`HGtK-bO`oJAqyr`t}vQXr4l$D_ZwdVN#Y2wkM;UHM1AXSL=qE zdla@n^y891%GiC6-i}1NWlSCS-lxcviHSV`ym1ei03Dw^EAla^ z@`JjaG13QvPkKLQ-J5$GVQ^whOmCRu%KnkONG??UTtm0h`Q$50-M~&jZp`C>nr|#X z1^L12p}va+Y`Io?d2P;p+RPQJN0YM#zfIy0X zP?xW92%o=6el!T5<1sTdfzJcIG42N6&i%w%KoM`#Y_>V@IixWM33wXE1rshy{{#&# z%kR01cso;>kQiU)frx-m3!BEIPrm0#2E~d6W7KK;`@`Yqo~eLu*`u9vsz1TZUIZZ^ zuq3+z@qbPFLDA#D_;uvrS8x}|B6IL>&Fjc+hL`*0ro&AlEeL|A3yK=xX~Pl`xC@!( zg_yUxkBZx@QDD_I1Jlg}*Ij4RL<1L%YgvP*J=73Wga2Gz7Ml?0RJnlqCKw$g> zQ`S2Q_t?R#?fHdfq5z(E0I38A=%&@xP`o)Nu4yI~Klmeu|P2-dS_}+Tc z^im$+bQ?oWw8{Whc;=xR02Q9WdIWHT1B7b>D&Q0m1ArQAR{7Tla8s-qAO_AxZ3%$D zy)L!~B*GoN;|PGF-^$E+1K`o!MD7oWy@f8V3IqUf|C#bUUzyY5f_XoP0mZEcur}>H z11P}N3Pu3*;hEGp00izHS<=6J%}fP+2HgVYzD(e3hE*vi3e>arC9DZ=>w}^eumM+rR1Y|UXTCN9#^EyK zZGdO+j8+$52A<*S2dp68y4kI<^rQjigef94aS`T)(KrCBNq+>;4@YGj2cW@~3r+z( z!zo;||Ej#I_kd}*im*ih0G^3m0qnsuPd5Ppa5TU!pcPK(J_Jm{DbQ2E3_RoV1-346 z>%RXrfEzAT`x9^%&UOw29>8teK?I({Gs`HzOn3%@4xEGoXyE|m;E!QGH4p#~$WkWY z2e{I3PN47Y!`_6<4@`lh6$k)dl`Q4mfn;GaxP;x-1x| z4wv~E0<#+9pP-h!^COKM>JkA|hRD@BHp>z?V$KfJ8sieI0W=PiDr*uB){c7 zjjHTo2p1$v=V+Wg2!2RIc$RL3C0IWoFyI3K5tmFpPjlf(&!YC?OjyLj;*T`e_m46R zx_{lO^7M^d@Xz6%><5Xaknee(_&E&;F9gD7T*Ub026{~ASv$0Q;&yVvSTY~G?c3Mk zRGH%&o6T<+rm{5_C`p@6o%e}RzAbXgOo`Gt%?$Z;fP%_^%S>8=hHk-T_i#jBU_bVx z=B0hTx%IejgKgpz?ZW-^Dbf$IFUJx2`5X*NQeD{Orm^kfjOWR4F(Ea4p^TNH6+J{u zZ#xvfm$|Huv?4t z{UgHxOhRE-<^F9O4fXgjH^WH@kwS&^hJCAh*D5+qhkfZ43j8^Njt=h{4z)St>85A~ z?ceyXn-71)djb56?vV%?emSl>k{erlx#hI(mjE;h?K(WCr(+EVV^-Mz82w2hqXpXX(XZGkYRyOT7&H^)H(r+5w)U zC@NX$J~yARpRW_lN@j6LZlr2@C_6+>j=J~dd3 zy76dea}RJ0YI8^yYUzurvI!brY*`P^uGi~5r<$8Sc|eLwF}qcwW0V> zI$OF9=JgiDQHcK>G~*UMC^Ei-yWwUrjY(yW@H{B^2{wC4&2+E=OV$^taHI=(YzRfk zX7#I;25vWvlzdRbeI&UCP2Glwxqyg@&XA^>JDlfUN1=;j^(Jj#50lByx(Avk$|yva z=p{A!J&yGeGh`4Y8^W`%9r(KBDfZt#f!Ua9j)b()C%?8HtLt+IrVb!}MMCw;mHgzF zyLeB1a^T~!pDqNd0hN|XNh;z=^1DAl`7I0(b~VN;9iv`(FUE(Yw2CRmu>fQt5>kia z#+4%rEag#+aohEGV1x?QmpWdjw#B!l)t9r6FvKq>3$a32RBe-O%6Nth*bfvl>hA}J zC@})#8!tP)s2wf&d~MD>XSvt%Bhn;bFlF5OTbpZ857xTPle^EJZRGOVvv>9cj`X$m zIKQaSjkbSuC8oTE)a#RM^|9yPcx&$^UdLtB?oW>o#aK_~l3AnKq-F8E?Zq$D1@E>m zpWvSwFv&50re_Z|={8y+o;-g+z4dt7%kY9R^x!A?Un82PsW_k}{I$fE0_26iVkV%# zS@!XIyv1gE_R&6$}zG4x#U^y1X@KHw}o8ysg^V^JlL zCT|L@6;ESMw9cMliBuM5nXGZ?ERY`_|%(j#D zCK?XJwd6}<%ukEg<5*EB`AZ2a%iAQkRn>e{KbZafg| zdGSgu&1FiUoOdl#eyUb0yJYsBXlY6=q!BhM=QuG>9(n0OjP^A7k>$qN#%r{(B{4;A zT~8*#=BAnVeSUP`(;R)g*mmL}NC%0}5}%pY8-+)DO_Jgtk-u`_*UY34{3!Fr=Gh(G z)&;Us1L@N$dbIkS(kELf)=GD(il`aNa+r7A5D!mR(BmS=-)&|m9b$?JNHA}DwLr!# z(_EFXOSeAyD8%BXDl&iG$iLTUjgyf@!9_At(l&FxxZ8a-_PVM*C|!$!MWn@|XTP?6 z_pwATyZUC7w~p!Tbp{LJ#1v1@%q!KQv5Ynjv$I#3_D)38Vn@>Q1H`9{gz>xH6lyz_ zZN+g}{WXYQW!@SCn%?@|U!~CB$R|U}v(LKXW&^sfV&d+JSFDLrPOKv$DzhzKpqg(! zpuF3Kjkp|*5e3;$QOjt1OxL6s&B2_pWD*-5H@2gGniL1+Ei&y*HRS+5plcy)+MQzy zGZHCUBc!Ze6C}JleJbX;;|;p2ozVO>f5#i&x!l`eK#iw(jgqp?Tcc7_TywrqMw8<8K-Ip$dgnnk+G7 zqM0}rf$XBaD-kqbr7#zqb8&42r$CWTa6brbkHgqwreF+0k9^_*Zy<1@sMXC)Z z3*F+<2z9@rm?e@Oi7=8DP!IELe8EOXDt@p*vgHr@>1Ebbz2cLLZbQn*A6~NLV$iI| zz1~X7Q9hbxX*JciJ3Z`f3vs>_Pisni8Dr&R9o=5Xc#5m-e&J#`uP(nYx-=E2>d?bS zEf>Uv)VV``!jkj(DVaMNmF;6VE^O9 z&nh226G5UnVy~}g1)h2F^kWwwpKwvFUfH&*sd(x1UgJ4pC0lLRG{$(ytU5MGPMo=; zH$iKEU}SE#n|G^#adIJYBCtv-#&Z+S064p>I>mV)&V0(T> z#hQAxpH|=i9 zx5tXauKl)HD7O2Y^;(IXC&saOEc*+u$#qi`ufoEqMBfkWzuwsrNWKt%{f zf&&&Xh+|dpm6GnGdPSh4E>UYbx=GgE$iD=Sc~wx2=uy9(|4hNjsfPCC7y zM{>3e(+hTv73Woshfi(Q4lk^%gtNxvPjmu0{g214m%L1zMX&aPu|Xoyh;j}+l+SnG zD2QH?AbUMIIo0q7=54g8xt`c!N%lgztwo!ogFzJjs$C!Htk$q_FIJ2Lp5#SLtfTv1 z$YEhcHB*PniU;;)Z|d?MK*~4A!z7+A&ZoSi=9VE-5E*L@ETRK8_l6^1`NjluyPhOO zgr7!WpMO*sIU!MXIe82)VU@$DB0dGb-s?@4%qBPy#2q>Hz+LVV7QIZ1a9)Sp0p_ml zd&y--mm-R<_g=_W_SJp6z6J)+6k^_WPxZGAkJvtG4DqLW*E6LS63f2byS&#(|f+Q0O{2L@6i&x0g| zjf9dt+KW+){xH{W$R+5`me@UAZX7c9wfKu z1t^3TS7L^lrxn-*hj24GVu(7qVyEtWZ%b+JuQ83Pa45*~Ydu6a)S`o}JK3lB#TW_- zjPg_qe<0m`UE}3fZ+{(jK0bIpZlj|3!zizC_VGltYw*u zV9T55ydDpeIX_|dW__M?)I4}gz%Cn>@hKl~xCZmi6aDu%O?tgyPP?uWEpogMrW4H0 z^PPhlJhTixQ&DH;`r45|8;6k8pkQ*O<%F>wr4#E6RQ{Yd6F^{(0atbqu0cVtYE8y&|R; zSFf_&H?}wn-491%R^EzxN3)W1ZDuh(s(tG8-bf|6WrFIYLiC=M?6iWOi6_;xj!zyx zE(rB;U}kNvE33@O8N~Wk*B;}$F0#n^5ZsK$sjrYxPdhas88cM=OlfbJ4MM z8?W)*a`$nc0UY$qZlgpO=lV8#KR*$Q-QC#A5tRB0flB6N%b?Hltit8$hXU>@9i!!j zZJ_Nhoj^?90s2~XvOO99^iquA_e7Z4s)8AhRQy<`f*rb9lQp^n!YX4OB0OI&hYnfqvcn>Oi2w7CydPv;6$|kAka}JcpMP6 zy1!V>`Yq}CkJmav^|k~XPfeb;rXiG8#}s;A5Bg#7d{I;C;0J>gKXo}$<`+O zQ)X^jL?tePW4z4roQr-)qj7Y}zRT=;A@<;u`{Ej35Zzf_66>L-K z;$BCC0(yW{kfW-z`d9A(Spi%~wvXqO{IKnI4aTl=721rrOnf8e*(DlL_Jjh`f1J;G zV?#bp>C1`W6Lk|jrIf`r3seqL=nC3IA6P*piY;K76F_pF;b+!{<|*^3%t z7<^{RRExGuwRKSyYEin?4Y%+Pg5NXk&;nO+td>Iw>)AiV>uY3qYTYNab8f*8xnV))%!M-s}J(JFwD2Bne99is2vXdW4INjx+dQ~AvoLl5HI!tOd3~Y zo9Y#J!IPS<(;KQA%60~ZHyU9%1~?3-(2;SUi1T}TfM;sHm=JfOYsH!+FZNT ztoLTskdG1b6-9mtd&CF&pDsO8a^5Gucb4L8!`-gUs!9786MLZjRqqKoM`Iq#QuIY) zw1%e@v0H^J6LiM>ZqemrWOTkwM#_h{kA;>zb zAoqPc!}U*2t{`=ZIKosB;n>e{>xSd7Wq8d149I|^kT_>mVW&OoHU*P)o2ZTjzn(3> z-cZKngqp?M5OX@>{9?@^F zdQ2c3G!)IO3*vMk>tVuH`)^r)H1a!bJ8c>jB(?Tr0*$(-jvuGg>FjK51#RvOp+65V za_SEMSnBDvb{}UdUN?Ma-oj>i&%_VB8dvh*S!Gcx zO>Mue?6-Y>!B?w=96w%S<%%~n(@5^Egzla|$SM6LnV%U`D4eG zE~a-fBTOm%HxM#kQ{4^9z3*`L$P8La_TJmhCEi*n_tR(rdDA8XUfoY-gG$*85nrmV zplfD7>g|N}^94PZJHC#@{0@z6a=Skf{{D2#&g)Q3_}5Efh35ksbe3Ajeom3tE64j$_`r=6obLCCKrH7 znl66;<>5;>vLKK-e6p<)1+)pLKruml@U^B191thwt-cl7(sF#*Vs8}MFMZH1Ob}ud z4;6?R4rD|R(uOa#ws3*W;29b*kPBRe+FcMcd~(nK9_SFBah3(C!Iw=3EwrVMVe5%l z$WU4z5IOX?3yjrtsQ|)(n}?+g(t&5}RYBo!pv#9K4S43ECddtLW1WwU30R34p z6EOuL!57wK?LfZp)vrDm&;yiz+5k%A1Nw2>9%Q~CA-G%G0iY;&W-ACJ12>I3>|d15 zC{XV0jAWBV5=aa_fjMd+uICF|cs{~{ngxK^pg#t{$W6=XphUPKo_U}%xC)nI5GPzk zQ7P!pTIO5@NCNBDM)FqBI^1D!2S^2urqc_89};TPdjlGTqcIQvO9p2QDD=cO@bz$?o*9+eJ7(z zICS=g9l#kGmZ5sIZU#X9iftjGsAYm>%M+gh`UA#r=?RDnM@*28J z(g3a%VzOMwX+EmoM{n&n+u&~+U7rhk(R(iBgabC;DEF+sCkvo2Ha^cM>>OL)V#k_V zHk%DzUf1gW8hqld68E}fHJ++HPFSFwb?alrsv6mk$^>$h^Rsl?P|}wj@`F3rh_PWu zrq0fjb~X)OWRY$@lYHMLLo3q=(R`yHXB2D&;$mf)K|(*#kAETQu#y>RJy#LentBxk zt~Y&8RCh=EVCbbmjHA2^q>tLhhW~3b^!@5_ZHyvh@R2UGwT**+*W=LM@rm^H4oPfj z^0PMKozEtF!cWT=?~I}d6F;w_2rg2Yn6VCP9eW*d*G8r6sUI*Dx#S{rv?>77)zpI_ z8*}bjS_pFi1CgC^?A^w$ z@A*16y~*J)c0!7eL047TdN@6kO-L z`pqJ}sI-up0wZk_xsoaSwl|I$cj)%7WeEB@D(|fHWtY;=sjXRGG3G{npg5|n(PJrg zHw>c`Yc!9J3k)<)ke=u5QBe(bHw5Qm7pfJ|*hebpvi z9ecnm);jr;N3eyHy#0$9giCHhmXE=ak?)&UxJk%siaP@BMeF+QBMb>5BtkL^qYn@A zt1D=kengct1YHVKLI(Tw{7 z4DS_Ns1e#1g)e^54Pz*mPnGuAlposcfPGg_`i8Ercqs``mhc$ zWzP=Fr<`w-&}1esx)l>Lf+pWSDvQ-BjCb~iJyclg{t}yYFSYSrM_`YME~n}|(M3Mx zJ(Yrl+Pc&^F(;x9F3ru>%!)1B7t)%aJ+xRUE+#GQ0G=$5tYT6gn#k-|ndBYn-5fM9+n_d;PAWPv-dCQ4k?b0h_j=qy8W?lZT4K%a^UKgGjS6Zh z@R2pW3UFg-HX1Ha8N){*do6Mu6*;_iIh_B{fq9lGZ{kc)PvdMXLf2p8zH_ha!h5y% zIlk_;YtMO-9T$I`utDy&=z30D-5cf&VGb?nTo`qk+bNjr*Lthq31FReS3Kt)q6wd@ z9Iek)%FK4D^b)DsYoTS@X!Tt9GD?SUAVfsbhaKOW$AYuA(<2q_fl;pz;58XV62RX6 zVUZQsNTD;ht=VPyxHQzDxQyC%gy^1ef*HNr=hTtKMef+oF)0wqd{GjV1g%O2VrzZt zCNIkcDZ%-=N;Af-)W!qax2vc>H^`noEjf$%lF`~jpO!7KkRFyt3!Favm}u${iRUO> zEHOx8FdeQv-#Aj&tDVG>Y_Na1MoH9-uA#HGE8IX|KzR_yDCH^o5ipbg_&%RyQ2&AB zr=2-(jk2+na3*gENf$_6?8nstF9!hHF@eW+g+w0=!Og|4;@s_i$td~tE zn#3%+NaugLoGBXg)}~v}?cs!7c_1&x>QM;KVgzrRqUZr%*}n>3c|j_tYJJG_Bs^aN znLvFHU7qv!+vtqCJSUjoY_xc zJA#>{Y>CEzri9Ng=WG|$PkF0~yPtU1(=NPWl?d6DOULaW9pDX?wZfEkeo9hjZ(qdn zbg)DsR61`32a+p41MqTnq}DkuF+1*dz;L-JLe1C{9d0SNE#593@!}p@gwib&&TZoC zmio_AKp)1v5(09^^0riYf;Z>q29H}ngWDRYrJs>_pF0u|=6I-&Qp;~z@V2nm(9n7@ zQX+^;?NVcGcQjDr5EhL?ZBUrh9^ zwwlW!YZcWSOYxzOQcdpzE0#WrHF|F1f&M~fpGS{ZT^}{Qm3Zb;RAyEAwz8bL`W1`a z=0^St~*IE5i;HBak=X*;?{oYw6{^5J=$}#qM8_R&Llv&R9OJwM zH{y>BRw7;m%wF%@sX|6PhM0!H=ds3%+A?3D2Qs@5@ItUf^(;|9gh;8ZtDWPj?JKJO zX%@1X2PMNiMn38#!>*Yxr0O!`J++iD8n;!mIbEDSTP8jQj}XY8n1#BB5{q3OBL#en z$TIgW%bAs#+Zdzjl3+;iAn~*7+e%s{X`)||d7|fLPO*C{WMi)~0if8ysQ486i z3P_HjMwVS~qnJWMQfo7fyXR;x}s`mZk@yt_7kx=-4CC+NdL`G&|gERCbSJuCHxb#eG`NO-xxW! zYhdUK8?I2nK0{fdwR0fyrt4i$Bzzzcbqrb~yB*t>COCJRDv=`TxQJWw2B zaNW%ZI4s>XL<}y0e=>WJga2$!#h?VkHwQNB)|{g@_CZrcz6{E$bwPe8-HKzY=mNCAs~FC zLO>8q#ziDQ!pRh?<*?)Tw4Ll!y5LVKOBU^do$4Pr(nW=?p1&u zL%`&Kuh7el5XCRDp0)U!H0SIBsX@3)MR0C+C-4HM_`~T4X z@`&QrA%q)`G;aiMFT(h3Wh@ju@Q;ag27m*PJ z&3^{`5Am0S#vthG4NFTYiSp27_t-e?dw1 zmpzQo(_mP%QNi|BLj!~VG|(>{M!$&MPPWdlyG8y|@>fv69^8NaZh|8DMu_b;bZJ9i zwoX7LVE^3~8N<@RZ?K)>USN7?ZpclT|Jqs)t-RqCgARs(Md<(8%bWN$&BF`U-;KkB znQyhg{x5!3fSlZg%nE%FdSml%d4o_Gun{_}oEDl93Wj%TRj_hEBy>0wEOd+eK@B`f z1M5p&U_Yk6aOY@~FKAhyT`7NX^}}Ge;`F~RA%Vt*foX106riG16flH&*iYmylr6Sj z+{xtZ4F3x6-)54A!{Br|elx^!kp3$UelbX(W#i0a!1^3itR~N)W)WbWThPBxqy1qlepaDy z3rY+{iTqQ&-H|YV7}S&VG|2z;ME-V#1+~#X7PdD|2M2ac=MNZ6E3;;@iy<{sF6ZXj=JUQEf>OYF#6z3GG!2+in7C1tGDSmAY zHH`+}yY;sR`A#i5jPWKs|2!Hu5oTteyy!pyU5Wk^3CGbejm1vM)GqW;?wCL2k}tEoy+0cS`Fc}mZ_RlQ}cRUQ`Jokn`2X%@Ed=Asi0MpI*mwecOMPcO-&oZ%zB_4A)>&<{y48wZDPiE!K5l40es zi@(Z^lfm$E-c&5X$kJFwO-a{mY!#8>$M|Z)zG302?}) z_9q;dZ>VG2%tFWV1`?V z#nNFE9jSjP4(WfMzL*=zdzoJp9_WYkKRxR44Mkb;7e$=&&pZ5g=iE^4wbT!bmt
6ZJD{Y}qf*i*j& z1LyjS8>o51Eqd!$S0*e*>U3_(D4}07{}_**1tXvs|Av;%`V)!9H-t>n-vn7p0O5b0 zXbcn%IYrphunGJ9Z7Q|RZ?PeJ0OhaNy|wqpkdKNE?A>Tj4m%_)fW zF>RL()2`|98zv_k47;4}H=*^0kmmiHAmtAr`j1(9As-HUVA!HCv;O|-V14>qOfCmZ zerwU6^ML=`cX9_ny9>dL&@veJt@a^U8dwwZn}DACry6N;VFaA$8v+Y-G!B6AtKYa4 z3%sGG#{H)D=Ypwj3A;B0!ld5>uDqLX`rmFo%!3iI(%=LnDC|h#|7+vQgQ7ap_%QP{ zA|enBhkyep5CiA{QM?^CxQRtntSFYpf|MGwtf&!VR+lxBSWzKCD0gkmDxzG1AcK%q zE6Oe?856O*5SNc zrNUj)0oWg90A3k1&)(!^-*20O(y1GvQq31q(Uz{T4ZLZ1Fw+9x-%ID?u#bw5%^FIF zHxhm1z`p0yRoja~?!tUOOOU@PPvo;RbL;kTh$jV%%=-kNR6!Rw#faDbL`6y-v~G3#2Fq zi5{29Gp5f3u)mH0t6DH|mrnF$j+6&9tBj%^RPatgDG0}?(*h>XQ`MqPQ+!igBN zxm{J+P(R`u1+^i6!AqWk>3%sN`Rz6%DY2b9pC=uh&{tUd|Ful6z^5C4(#*GPefPZ*H@4EAbsxl5CBf&Tg{ zDaw@sNPI32rs_f7s2f*}KF0I;@Jg(=>O!9-e;AHgUtE`9S#dADm(UDt_B`4=m#O}ww z2+cKYnZ$9WeuGjg<7#;Ulzuvy{^m`N;6Jjhl@xFdq`)}RG6iQ9)~6*)c>&jN+P*3P z5s85gzAdM%Rm4;^NuQ;5Bk6@a%!P#zc40d4Fi5WvtzJEbtUMxF%G} z+lfm+4@oG*nch2ZsU3vQF5=J8KYxq`VJ%_r%%$_`wnQD1_ndkMAj{wl`y z02*bptj<7tXS4}8;I0`#W_*CKRiEKu`;byh-N-49Y(*XhQ?ybF-DXZ02tyK@JR{Z-nV(T7+sL~MwDWp;NmMg6>2;3 zV~OM_2h;TKG05X_8aY{D*^)4b<=9@emD%XKv9ipw53|u#l*e3w_r@NPcNnqSk1DDD znuo9TYd8_~C8MJsoF$h3=B-5XrR5T3-!MpVrXHZdL(H*D>=*A@1^MIV}nq?b9^ocIR|t? zj)D$8on&*#VM_74iNb@V7}R!Vv719*q=U(kHY!z!5WD0&D%g+cOL<~VuMeQ)y;1Ty zf!g5=qb@Av^NV;(ij!w1oT#MKp|YEaWiT_MjyZC^jE}wVDB%4q1Ge2$+nd?X?^F%l z{>FUI*ka0gZ-7~7 z`squCZmr-)0a48r_wS%^QXx+~N{N+-$9WtD;6~Os(o@09p^wVS!u_cM)SBokc|iGv zuA$C$k5O2L5nS=ICTW#iYC$EW292d8u4M0cjd_dJld)UliNv19?CK-9z2A$n;SUdendqw|KY37OPK@>cfyfsz^4l-gUwK zU>F#NDMUPs+#9O!S&_7bctAoG%Y1?MXNxSrHx7K$g_ymD^@WB3j(L*rE^u3ax&Uip z=PRfc(be#lU||i=9~LU;2=YaZG(lFU`)ulp6sU4DTdg-QCeaO8nV;A2bhy+)*3t+D zMAk}5K=x4}dNl)@YNheA{5N~Ar#;0?Z~!+H^@2OM-ye{_S>sC1@8JxCdxU^6R+3@;V4S@K1%rP1fX558%tM7?72T zG8=5iK8jW!WvF#N;(4o{x6Cgo`s}!ZIt#opSAb44Ff_ajBW!RQZcx;tn4xYB{Iu=I zL#aVOW7Vs{8ZK@tww6-r`EoYy)!VGx4WcU4jkw^|mXjwd^L+|guc`&2Fz~O zj0l{xWsKRq zj;Kq3)wIaT?p-g<$~k4 z5QZAu^+(DQC=)g{G#)(xuO?uugb1>?EF~dbQV@B#Ml#=>=h$kW{sS}AHT1aRJ~wU| zWmERK`?}!Wswn!KJGtD&kD|X>_Ii*%l&-+4BTBfrMk00}<3Wlc4h7WP&6ED$Zq#Jt bdJ`P%5FUn09Qf0Vzs4mhRpkauaH{_SQy^_r From 0ce6f4559922f6a64468ccff7fa63cb6c1b007a7 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Sun, 28 Nov 2010 19:22:57 +0000 Subject: [PATCH 38/38] fixed interior flag on instantiated zones --- src/games/stendhal/server/core/engine/StendhalRPZone.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/games/stendhal/server/core/engine/StendhalRPZone.java b/src/games/stendhal/server/core/engine/StendhalRPZone.java index 9dacad088b..fadb60d935 100644 --- a/src/games/stendhal/server/core/engine/StendhalRPZone.java +++ b/src/games/stendhal/server/core/engine/StendhalRPZone.java @@ -123,7 +123,7 @@ public class StendhalRPZone extends MarauroaRPZone { public CollisionDetection protectionMap; /** Position of this zone in the world map. */ - private boolean interior; + private boolean interior = true; private int level;