Compare commits

...
Sign in to create a new pull request.

38 commits

Author SHA1 Message Date
Hendrik Brummermann
0ce6f45599 fixed interior flag on instantiated zones 2010-11-28 19:22:57 +00:00
Hendrik Brummermann
1ae31efdb2 updated marauroa 2010-11-27 21:15:50 +00:00
Katie Russell
403649ef44 backport corrected transactAgreedDeal() to fix #3118469
by omero
2010-11-26 22:16:35 +00:00
Katie Russell
aa3e0ff7e1 backport Fixed fish names by kiheru 2010-11-26 22:07:48 +00:00
Katie Russell
efd6293e03 add missing commit about corpses to 0.89 2010-11-23 21:57:57 +00:00
Kimmo Rundelin
94df9fe535 Backport of fix to bug [3114842] "[Stendhal] Missplaced rat" 2010-11-23 17:02:48 +00:00
Hendrik Brummermann
5729dbf11f updated version number 2010-11-22 20:21:19 +00:00
Hendrik Brummermann
c3cdcee79e updated marauroa to include fix for content transfer 2010-11-20 23:29:01 +00:00
Hendrik Brummermann
1687e318bf added rented_sign to EntityViewFactory (fixes #3111829) 2010-11-18 19:49:17 +00:00
Katie Russell
b7d829f246 correct spelling and remove extra spaces 2010-11-17 22:00:29 +00:00
Katie Russell
487aa4f772 correct spelling 2010-11-17 21:56:16 +00:00
Hendrik Brummermann
3e80395d91 dispose the progress bar on finish() 2010-11-17 21:32:11 +00:00
omero
f8a9e712d1 backporting the bottle spawners for ados bar upper floor 2010-11-17 21:10:41 +00:00
Katie Russell
857c99da2c remove mention of crepes from changes 2010-11-16 22:58:59 +00:00
Katie Russell
20d3c4ea6b punctuation/spelling/grammar and remove unused imports 2010-11-16 22:55:18 +00:00
omero
5dfbe1a601 updating to match the path change of Gaston (ratcity instead of dungeon) 2010-11-16 16:45:02 +00:00
omero
8b4c667163 fixed a missing blank in greetings sentence 2010-11-16 16:44:15 +00:00
omero
70165c4300 backported grammar and punctuation corrections (by kymara) 2010-11-16 15:16:30 +00:00
omero
79b6605ce7 activating backported bottle spawners in all zones 2010-11-16 14:31:43 +00:00
omero
61811898b5 backporting all the bottle spawners (needed by torcibud quest) 2010-11-16 13:30:22 +00:00
omero
914f709615 canged cane to sugar cane to keep the item working 2010-11-16 13:02:30 +00:00
omero
09e6c31c35 moving cane.png to sugarcane.png 2010-11-16 12:53:54 +00:00
omero
d9f108c91c cane is now sugar cane 2010-11-16 12:51:34 +00:00
omero
19b3ffc6f3 cane field is now sugar cane field 2010-11-16 12:50:04 +00:00
omero
4f30a9b325 moving cane_field.png to sugar_cane_field.png 2010-11-16 12:48:06 +00:00
omero
773cf9577a changed required ingredient cane to be sugar cane 2010-11-16 12:45:48 +00:00
omero
801d53f419 moving gaston to where it belongs (ratcity instead of dungeon 2010-11-16 10:49:40 +00:00
omero
ecacc1f8b6 moving Gaston to where it belongs (ratcity instead of dungeon) 2010-11-16 10:46:26 +00:00
omero
a30aee0b96 reworded comments to clarify deactivation of producer code 2010-11-15 23:02:20 +00:00
omero
79be91b864 backporting Gaston, the Ratman Chef in Rat City bakery with producer code disabled untill sugar is available to players 2010-11-15 22:51:59 +00:00
Hendrik Brummermann
424a703f5c organized imports 2010-11-15 22:47:16 +00:00
Katie Russell
d1bb295d40 backport grammar and punctuation fixes by kymara 2010-11-14 23:08:54 +00:00
Katie Russell
56a33c017e backport: 'fix spelling/grammar and when he answers about 'cane' make sure he says it's sugar cane.' by kymara 2010-11-14 23:08:22 +00:00
Katie Russell
f3578a9944 backport: 'Changed "task" sentence as though as the quest isn't active yet :)' by bluelads4 2010-11-14 23:07:57 +00:00
Katie Russell
897acfee95 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
2010-11-14 23:07:19 +00:00
Hendrik Brummermann
ac1a4bd70f added trigger for balloon if quest does not apply 2010-11-14 01:23:57 +00:00
Hendrik Brummermann
b4abc57ae6 deactivated quest MixtureForOrtiv 2010-11-13 22:58:38 +00:00
Hendrik Brummermann
b217b8dd2d updated version number 2010-11-13 22:30:16 +00:00
48 changed files with 476 additions and 110 deletions

View file

@ -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.89
# javac options
javac.deprecation = true

View file

@ -32,7 +32,7 @@
<item name="bottle">
<type class="container" subclass="bottle" tileid="-1"/>
<description>You see a bottle. It is empty, someone drank the contents</description>
<description>You see a bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -60,7 +60,7 @@
<item name="eared bottle">
<type class="container" subclass="bottle_eared" tileid="-1"/>
<description>You see a eared bottle. It is empty, someone drank the contents</description>
<description>You see an eared bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -74,7 +74,7 @@
<item name="fat bottle">
<type class="container" subclass="bottle_fat" tileid="-1"/>
<description>You see a fat bottle. It is empty, someone drank the contents</description>
<description>You see a fat bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -88,7 +88,7 @@
<item name="short rounded bottle">
<type class="container" subclass="bottle_short_rounded" tileid="-1"/>
<description>You see a short rounded bottle. It is empty, someone drank the contents</description>
<description>You see a short rounded bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -102,7 +102,7 @@
<item name="short triangular bottle">
<type class="container" subclass="bottle_short_triangular" tileid="-1"/>
<description>You see a short triangular bottle. It is empty, someone drank the contents</description>
<description>You see a short triangular bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -116,7 +116,7 @@
<item name="slim bottle">
<type class="container" subclass="bottle_slim" tileid="-1"/>
<description>You see a slim bottle. It is empty, someone drank the contents</description>
<description>You see a slim bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -130,7 +130,7 @@
<item name="squared bottle">
<type class="container" subclass="bottle_squared" tileid="-1"/>
<description>You see a squared bottle. It is empty, someone drank the contents</description>
<description>You see a squared bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -144,7 +144,7 @@
<item name="tall bottle">
<type class="container" subclass="bottle_tall" tileid="-1"/>
<description>You see a tall bottle. It is empty, someone drank the contents</description>
<description>You see a tall bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>
@ -158,7 +158,7 @@
<item name="triangular bottle">
<type class="container" subclass="bottle_triangular" tileid="-1"/>
<description>You see a triangular bottle. It is empty, someone drank the contents</description>
<description>You see a triangular bottle. It is empty, someone drank the contents.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>
</attributes>

View file

@ -61,7 +61,7 @@
<item name="vsop koboldish torcibud">
<type class="drink" subclass="koboldish_torcibud_vsop" tileid="-1"/>
<description>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.</description>
<description>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.</description>
<implementation class-name="games.stendhal.server.entity.item.Drink"/> <attributes>
<amount value="270"/>
<frequency value="8"/>
@ -80,7 +80,7 @@
<item name="apple juice">
<type class="drink" subclass="red_juice" tileid="-1"/>
<description>You see apple juice. On a hot summer day, it would taste great.</description>
<description>You see apple juice. On a hot summer day, it would taste great.</description>
<implementation class-name="games.stendhal.server.entity.item.Drink"/> <attributes>
<amount value="30"/>
<frequency value="12"/>
@ -99,7 +99,7 @@
<item name="beer">
<type class="drink" subclass="beer" tileid="-1"/>
<description>You see a beer. On a hot summer day, it would taste great.</description>
<description>You see a beer. On a hot summer day, it would taste great.</description>
<implementation class-name="games.stendhal.server.entity.item.Drink"/> <attributes>
<amount value="6"/>
<frequency value="5"/>
@ -137,7 +137,7 @@
<item name="pina colada">
<type class="drink" subclass="pina_colada" tileid="-1"/>
<description>You see a pina colada. It looks delicious but tastes dangerously strong!.</description>
<description>You see a pina colada. It looks delicious but tastes dangerously strong!.</description>
<implementation class-name="games.stendhal.server.entity.item.Drink"/> <attributes>
<amount value="28"/>
<frequency value="3"/>
@ -443,7 +443,7 @@
<item name="mega potion">
<type class="drink" subclass="mega_potion" tileid="-1"/>
<description>You see a mega potion. It strengthens greatly.</description>
<description>You see a mega potion. It strengthens greatly.</description>
<implementation class-name="games.stendhal.server.entity.item.Drink"/> <attributes>
<amount value="800"/>
<frequency value="1"/>

View file

@ -69,7 +69,7 @@
<item name="pansy">
<type class="flower" subclass="pansy" tileid="-1"/>
<description>You see a pansy, so colorfull and beautifull.</description>
<description>You see a pansy, so colorful and beautiful.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/>
<attributes>
<quantity value="1"/>

View file

@ -119,7 +119,7 @@
<item name="artichoke">
<type class="food" subclass="artichoke" tileid="-1"/>
<description>You see a artichoke. It can be an ingredient, or you can eat it.</description>
<description>You see an artichoke. It can be an ingredient, or you can eat it.</description>
<implementation class-name="games.stendhal.server.entity.item.Food"/> <attributes>
<amount value="40"/>
<frequency value="20"/>

View file

@ -17,8 +17,8 @@
</equipable>
</item>
<item name="cane">
<type class="resource" subclass="cane" tileid="-1"/>
<item name="sugar cane">
<type class="resource" subclass="sugarcane" tileid="-1"/>
<description>You see a sugar cane. You can grind it for raw sugar.</description>
<implementation class-name="games.stendhal.server.entity.item.StackableItem"/> <attributes>
<quantity value="1"/>

View file

@ -979,6 +979,7 @@ Under new management. Chests to the right are still held by Semos Bank Merchants
<zone name="int_ados_bakery" file="interiors/ados/bakery.tmx">
<configurator class-name="games.stendhal.server.maps.ados.bakery.BakerNPC" />
<configurator class-name="games.stendhal.server.maps.ados.bakery.ItemsOnTable" />
<portal x="26" y="14" ref="0">
<destination zone="0_ados_city_n" ref="10"/>
@ -1031,6 +1032,7 @@ in roaches.
<zone name="int_ados_tavern_0" file="interiors/ados/tavern_0.tmx">
<configurator class-name="games.stendhal.server.maps.ados.tavern.BarMaidNPC" />
<configurator class-name="games.stendhal.server.maps.ados.tavern.BarmanNPC" />
<configurator class-name="games.stendhal.server.maps.ados.tavern.ItemsOnTable" />
<portal x="12" y="17" ref="entrance_left">
<destination zone="0_ados_city_n" ref="tavern_entrance_left"/>
</portal>
@ -1307,6 +1309,7 @@ in roaches.
<zone name="int_ados_bar" file="interiors/ados/bar.tmx">
<configurator class-name="games.stendhal.server.maps.ados.bar.BarMaidNPC" />
<configurator class-name="games.stendhal.server.maps.semos.tavern.StichardRallmanNPC" />
<configurator class-name="games.stendhal.server.maps.ados.bar.ItemsOnTable" />
<portal x="15" y="30" ref="bar_entrance">
<destination zone="0_ados_city" ref="bar"/>
@ -1321,10 +1324,11 @@ in roaches.
<zone name="int_ados_bar_1" file="interiors/ados/bar_1.tmx">
<configurator class-name="games.stendhal.server.maps.ados.bar.ItemsOnTableUpstairs" />
<portal x="28" y="2" ref="downstair">
<destination zone="int_ados_bar" ref="upstair_left"/>
<destination zone="int_ados_bar" ref="upstair_left"/>
</portal>
</zone>
</zone>
<zone name="int_ados_town_hall" file="interiors/ados/buraucrazy_0.tmx">
<configurator class-name="games.stendhal.server.maps.ados.townhall.TaxmanNPC" />

View file

@ -44,13 +44,13 @@
<entity x="43" y="90">
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.FishSource">
<parameter name="species">red_lionfish</parameter>
<parameter name="species">red lionfish</parameter>
</implementation>
</entity>
<entity x="93" y="19">
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.FishSource">
<parameter name="species">red_lionfish</parameter>
<parameter name="species">red lionfish</parameter>
</implementation>
</entity>
@ -71,7 +71,7 @@
<entity x="5" y="94">
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.FishSource">
<parameter name="species">red_lionfish</parameter>
<parameter name="species">red lionfish</parameter>
</implementation>
</entity>
@ -84,7 +84,7 @@
<entity x="13" y="38">
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.FishSource">
<parameter name="species">red_lionfish</parameter>
<parameter name="species">red lionfish</parameter>
</implementation>
</entity>
@ -97,7 +97,7 @@
<entity x="62" y="109">
<implementation class-name="games.stendhal.server.entity.mapstuff.useable.FishSource">
<parameter name="species">red_lionfish</parameter>
<parameter name="species">red lionfish</parameter>
</implementation>
</entity>

View file

@ -149,6 +149,7 @@ You'll definitely need a wedding ring. Come here to get yours cast once you are
<zone name="int_fado_tavern" file="interiors/fado/tavern.tmx">
<configurator class-name="games.stendhal.server.maps.fado.tavern.MaidNPC"/>
<configurator class-name="games.stendhal.server.maps.fado.tavern.ItemsOnTable"/>
<portal x="16" y="30" ref="entrance_left">
<destination zone="0_fado_city" ref="tavern_entrance_left"/>
@ -727,6 +728,7 @@ For example say: 11 if you want the room called Water of Love.
</zone>
<zone name="0_fado_forest_s" level="0" x="499744" y="500640" file="Level 0/fado/forest_s.tmx">
<configurator class-name="games.stendhal.server.maps.fado.forest.BeeKeeperNPC" />
<configurator class-name="games.stendhal.server.maps.fado.forest.ItemsOnTable" />
</zone>
<zone name="0_fado_forest_se" level="0" x="499872" y="500640" file="Level 0/fado/forest_se.tmx">
</zone>

View file

@ -744,6 +744,7 @@
<zone name="int_kirdneh_inn" file="interiors/kirdneh/inn.tmx">
<configurator class-name="games.stendhal.server.maps.kirdneh.inn.HealerNPC"/>
<configurator class-name="games.stendhal.server.maps.kirdneh.inn.BarmanNPC"/>
<configurator class-name="games.stendhal.server.maps.kirdneh.inn.ItemsOnTable"/>
<portal x="18" y="23" ref="entrance">
<destination zone="0_kirdneh_city" ref="tavern"/>
</portal>

View file

@ -748,7 +748,7 @@
</portal>
</zone>
<zone name="int_rat_bakery" file="interiors/ratcity/bakery.tmx">
<configurator class-name="games.stendhal.server.maps.orril.dungeon.RatChefNPC" />
<configurator class-name="games.stendhal.server.maps.ratcity.bakery.RatChefNPC" />
<portal x="10" y="1" ref="entrance">
<destination zone="-3_orril_dungeon" ref="bakery_entrance" />
</portal>

View file

@ -2069,6 +2069,7 @@ Holy mackerel! These chips are tasty.
<zone name="int_semos_bakery" file="interiors/semos/bakery.tmx">
<configurator class-name="games.stendhal.server.maps.semos.bakery.ChefNPC" />
<configurator class-name="games.stendhal.server.maps.semos.bakery.ShopAssistantNPC" />
<configurator class-name="games.stendhal.server.maps.semos.bakery.ItemsOnTable" />
<portal x="26" y="14" ref="entrance">
<destination zone="0_semos_city" ref="bakery_entrance" />
</portal>
@ -2733,6 +2734,7 @@ Mature sheep wanted: please speak to Sato
</zone>
<zone name="int_wofol_bar" file="interiors/wofol/bar.tmx">
<configurator class-name="games.stendhal.server.maps.wofol.bar.KoboldBarRegularNPC" />
<configurator class-name="games.stendhal.server.maps.wofol.bar.KoboldBarmaidNPC" />
<portal x="3" y="8" ref="entrance">
<destination zone="-1_semos_mine_nw" ref="bar_entrance" />

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

View file

@ -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
@ -14,9 +15,8 @@ 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)
- 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

Binary file not shown.

View file

@ -1,3 +1,3 @@
set STENDHAL_VERSION=0.88.5
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

View file

@ -1,5 +1,5 @@
#!/bin/sh
STENDHAL_VERSION="0.88.5"
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

View file

@ -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);
}
}

View file

@ -140,7 +140,9 @@ public class ProgressBar extends JFrame {
m_stepCounter = 20;
m_stepSizeMultiplier = 2;
m_sleepTime = 15;
cancel();
}
/**
* Exits quickly.
*/

View file

@ -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);

View file

@ -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.89";
/**
* Extract the specified number of parts from a version-string.

View file

@ -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.89";
public static final String PRE_RELEASE_VERSION = null;

View file

@ -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;

View file

@ -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;

View file

@ -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.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.");

View file

@ -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;

View file

@ -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;
@ -206,7 +205,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());

View file

@ -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"))) {

View file

@ -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;

View file

@ -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();

View file

@ -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<String, String> 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();
}
}

View file

@ -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<String, String> 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();
}
}

View file

@ -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();
}

View file

@ -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,15 +48,15 @@ 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 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.");
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!");
"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<String, Integer> requiredResources = new TreeMap<String, Integer>();
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");

View file

@ -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<String, String> 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();
}
}

View file

@ -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.");
}

View file

@ -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<String, String> 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();
}
}

View file

@ -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<String, String> 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();
}
}

View file

@ -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<String, Integer> requiredResources = new TreeMap<String, Integer>();
@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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<String, String> 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();
}
}

View file

@ -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!");
}

View file

@ -9,7 +9,7 @@
* (at your option) any later version. *
* *
***************************************************************************/
package games.stendhal.server.maps.orril.dungeon;
package games.stendhal.server.maps.ratcity.bakery;
import games.stendhal.common.Direction;
import games.stendhal.server.core.config.ZoneConfigurator;
@ -17,17 +17,17 @@ 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
*/
@ -61,9 +61,12 @@ 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");
"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",
@ -73,11 +76,17 @@ 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.");
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.");
addGoodbye("Au revoire voyageur... And come back visiting me anytime you like!");
"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 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 until sugar is made available to players
*
final Map<String, Integer> requiredResources = new TreeMap<String, Integer>();
requiredResources.put("flour", 1);
requiredResources.put("egg", 1);
@ -92,6 +101,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.");
*/
}
};

View file

@ -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<String, String> 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();
}
}

View file

@ -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())
+ " when you will have enough money");
return false;
+ " if you have enough money.");
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;
}
}
}
@ -149,7 +161,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!");

View file

@ -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);

View file

@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t
</security>
<resources>
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.5+" /> <!-- max-heap-size="120" -->
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.88.5.jar" download="eager" main="true" />
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.89.jar" download="eager" main="true" />
</resources>
<application-desc/>
</jnlp>