Compare commits
38 commits
master
...
VERSION_00
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ce6f45599 | ||
|
|
1ae31efdb2 | ||
|
|
403649ef44 | ||
|
|
aa3e0ff7e1 | ||
|
|
efd6293e03 | ||
|
|
94df9fe535 | ||
|
|
5729dbf11f | ||
|
|
c3cdcee79e | ||
|
|
1687e318bf | ||
|
|
b7d829f246 | ||
|
|
487aa4f772 | ||
|
|
3e80395d91 | ||
|
|
f8a9e712d1 | ||
|
|
857c99da2c | ||
|
|
20d3c4ea6b | ||
|
|
5dfbe1a601 | ||
|
|
8b4c667163 | ||
|
|
70165c4300 | ||
|
|
79b6605ce7 | ||
|
|
61811898b5 | ||
|
|
914f709615 | ||
|
|
09e6c31c35 | ||
|
|
d9f108c91c | ||
|
|
19b3ffc6f3 | ||
|
|
4f30a9b325 | ||
|
|
773cf9577a | ||
|
|
801d53f419 | ||
|
|
ecacc1f8b6 | ||
|
|
a30aee0b96 | ||
|
|
79be91b864 | ||
|
|
424a703f5c | ||
|
|
d1bb295d40 | ||
|
|
56a33c017e | ||
|
|
f3578a9944 | ||
|
|
897acfee95 | ||
|
|
ac1a4bd70f | ||
|
|
b4abc57ae6 | ||
|
|
b217b8dd2d |
48 changed files with 476 additions and 110 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -140,7 +140,9 @@ public class ProgressBar extends JFrame {
|
|||
m_stepCounter = 20;
|
||||
m_stepSizeMultiplier = 2;
|
||||
m_sleepTime = 15;
|
||||
cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Exits quickly.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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"))) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
47
src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java
Normal file
47
src/games/stendhal/server/maps/ados/bar/ItemsOnTable.java
Normal 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
46
src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java
Normal file
46
src/games/stendhal/server/maps/ados/tavern/ItemsOnTable.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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.");
|
||||
}
|
||||
|
||||
|
|
|
|||
45
src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java
Normal file
45
src/games/stendhal/server/maps/fado/forest/ItemsOnTable.java
Normal 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();
|
||||
|
||||
}
|
||||
}
|
||||
46
src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java
Normal file
46
src/games/stendhal/server/maps/fado/tavern/ItemsOnTable.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
38
src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java
Normal file
38
src/games/stendhal/server/maps/kirdneh/inn/ItemsOnTable.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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!");
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
*/
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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!");
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue