diff --git a/build.ant.properties b/build.ant.properties
index 50a7debb4c..374505b198 100644
--- a/build.ant.properties
+++ b/build.ant.properties
@@ -75,8 +75,8 @@ updates_server = http://arianne.sourceforge.net/stendhal/updates
version_server = http://arianne.sourceforge.net/stendhal.version
# current version of stendhal
-version.old = 0.81
-version = 0.82.5
+version.old = 0.82
+version = 0.83
# javac options
javac.deprecation = true
diff --git a/data/conf/zones/kalavan.xml b/data/conf/zones/kalavan.xml
index c924e6df61..29f9a660e7 100644
--- a/data/conf/zones/kalavan.xml
+++ b/data/conf/zones/kalavan.xml
@@ -335,6 +335,7 @@
2
2
+
-
@@ -67,6 +67,14 @@
+
+
+
+
+
+
+
+
diff --git a/runserver.bat b/runserver.bat
index 61ae7283f7..073a374953 100644
--- a/runserver.bat
+++ b/runserver.bat
@@ -1,3 +1,3 @@
-set STENDHAL_VERSION=0.82.5
+set STENDHAL_VERSION=0.83
set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar
java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l
diff --git a/runserver.sh b/runserver.sh
index df2c13de2e..b91366c503 100644
--- a/runserver.sh
+++ b/runserver.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-STENDHAL_VERSION="0.82.5"
+STENDHAL_VERSION="0.83"
LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar
diff --git a/src/games/stendhal/client/entity/Door.java b/src/games/stendhal/client/entity/Door.java
index d6e73fcdc2..eb439b465a 100644
--- a/src/games/stendhal/client/entity/Door.java
+++ b/src/games/stendhal/client/entity/Door.java
@@ -32,6 +32,7 @@ public class Door extends Entity {
* Create a door entity.
*/
public Door() {
+ // default constructor
}
//
@@ -114,4 +115,13 @@ public class Door extends Entity {
fireChange(PROP_OPEN);
}
}
+
+ /**
+ * Is this entity useable?
+ *
+ * @return true if it is useable, false otherwise
+ */
+ public boolean isUseable() {
+ return rpObject.has("use");
+ }
}
diff --git a/src/games/stendhal/client/entity/Portal.java b/src/games/stendhal/client/entity/Portal.java
index 1dcdb68fb7..8ceb529825 100644
--- a/src/games/stendhal/client/entity/Portal.java
+++ b/src/games/stendhal/client/entity/Portal.java
@@ -93,4 +93,14 @@ public class Portal extends InvisibleEntity {
hidden = false;
}
}
+
+
+ /**
+ * Is this entity useable?
+ *
+ * @return true if it is useable, false otherwise
+ */
+ public boolean isUseable() {
+ return rpObject.has("use");
+ }
}
diff --git a/src/games/stendhal/client/gui/j2d/entity/Door2DView.java b/src/games/stendhal/client/gui/j2d/entity/Door2DView.java
index 9b63464522..0819343ea5 100644
--- a/src/games/stendhal/client/gui/j2d/entity/Door2DView.java
+++ b/src/games/stendhal/client/gui/j2d/entity/Door2DView.java
@@ -231,12 +231,16 @@ class Door2DView extends StateEntity2DView {
@Override
public boolean isInteractive() {
- return false;
+ return ((Door) entity).isUseable();
}
@Override
public StendhalCursor getCursor() {
- return StendhalCursor.PORTAL;
+ if (isInteractive()) {
+ return StendhalCursor.ACTIVITY;
+ } else {
+ return StendhalCursor.PORTAL;
+ }
}
}
diff --git a/src/games/stendhal/client/gui/j2d/entity/Portal2DView.java b/src/games/stendhal/client/gui/j2d/entity/Portal2DView.java
index 1103424a37..9bd31231e2 100644
--- a/src/games/stendhal/client/gui/j2d/entity/Portal2DView.java
+++ b/src/games/stendhal/client/gui/j2d/entity/Portal2DView.java
@@ -75,14 +75,19 @@ class Portal2DView extends InvisibleEntity2DView {
}
}
+
@Override
public boolean isInteractive() {
- return false;
+ return ((Portal) entity).isUseable();
}
@Override
public StendhalCursor getCursor() {
- return StendhalCursor.PORTAL;
+ if (isInteractive()) {
+ return StendhalCursor.ACTIVITY;
+ } else {
+ return StendhalCursor.PORTAL;
+ }
}
}
diff --git a/src/games/stendhal/client/gui/j2d/entity/UseableItem2DView.java b/src/games/stendhal/client/gui/j2d/entity/UseableItem2DView.java
index d15b66c6ac..7d25df545d 100644
--- a/src/games/stendhal/client/gui/j2d/entity/UseableItem2DView.java
+++ b/src/games/stendhal/client/gui/j2d/entity/UseableItem2DView.java
@@ -5,6 +5,7 @@ package games.stendhal.client.gui.j2d.entity;
import games.stendhal.client.entity.ActionType;
import games.stendhal.client.gui.styled.cursor.StendhalCursor;
+import games.stendhal.client.gui.wt.core.WtWindowManager;
import java.util.List;
@@ -33,6 +34,11 @@ class UseableItem2DView extends StackableItem2DView {
@Override
public StendhalCursor getCursor() {
- return StendhalCursor.ITEM_USE;
+ boolean doubleClick = Boolean.parseBoolean(WtWindowManager.getInstance().getProperty("ui.doubleclick", "false"));
+ if (doubleClick) {
+ return StendhalCursor.ACTIVITY;
+ } else {
+ return StendhalCursor.ITEM_USE;
+ }
}
}
diff --git a/src/games/stendhal/client/gui/j2d/entity/UseableRing2DView.java b/src/games/stendhal/client/gui/j2d/entity/UseableRing2DView.java
index 2218d49152..f95705fbee 100644
--- a/src/games/stendhal/client/gui/j2d/entity/UseableRing2DView.java
+++ b/src/games/stendhal/client/gui/j2d/entity/UseableRing2DView.java
@@ -2,6 +2,7 @@ package games.stendhal.client.gui.j2d.entity;
import games.stendhal.client.entity.ActionType;
import games.stendhal.client.gui.styled.cursor.StendhalCursor;
+import games.stendhal.client.gui.wt.core.WtWindowManager;
import java.util.List;
@@ -23,6 +24,11 @@ public class UseableRing2DView extends Ring2DView {
@Override
public StendhalCursor getCursor() {
- return StendhalCursor.ITEM_USE;
+ boolean doubleClick = Boolean.parseBoolean(WtWindowManager.getInstance().getProperty("ui.doubleclick", "false"));
+ if (doubleClick) {
+ return StendhalCursor.ACTIVITY;
+ } else {
+ return StendhalCursor.ITEM_USE;
+ }
}
}
diff --git a/src/games/stendhal/client/update/Version.java b/src/games/stendhal/client/update/Version.java
index 1c6b91fdd5..2d8c019ce7 100644
--- a/src/games/stendhal/client/update/Version.java
+++ b/src/games/stendhal/client/update/Version.java
@@ -10,7 +10,7 @@ package games.stendhal.client.update;
public class Version {
/** Version Number. */
- public static final String VERSION = "0.82.5";
+ public static final String VERSION = "0.83";
/**
* Extract the specified number of parts from a version-string.
diff --git a/src/games/stendhal/common/Debug.java b/src/games/stendhal/common/Debug.java
index 92d22db980..f337a75ebf 100644
--- a/src/games/stendhal/common/Debug.java
+++ b/src/games/stendhal/common/Debug.java
@@ -25,7 +25,7 @@ public interface Debug {
/** server version. */
// Note: This line is updated by build.xml using a regexp so be sure to adjust it in case you modify this line.
- String VERSION = "0.82.5";
+ String VERSION = "0.83";
/**
diff --git a/src/games/stendhal/server/actions/equip/SourceObject.java b/src/games/stendhal/server/actions/equip/SourceObject.java
index 9bea562196..7ba573794c 100644
--- a/src/games/stendhal/server/actions/equip/SourceObject.java
+++ b/src/games/stendhal/server/actions/equip/SourceObject.java
@@ -89,8 +89,9 @@ class SourceObject extends MoveableObject {
if (!baseSlot.has(baseItemId)) {
logger.debug("Base item(" + parent + ") doesn't contain item(" + baseItemId + ") on given slot(" + slotName
+ ")");
- player.sendPrivateText("There is no such item in the " + slotName + " of "
- + parent.getDescriptionName(true));
+ // Remove message as discussed on #arianne 2010-04-25
+ // player.sendPrivateText("There is no such item in the " + slotName + " of "
+ // + parent.getDescriptionName(true));
return invalidSource;
}
diff --git a/src/games/stendhal/server/core/engine/GenerateINI.java b/src/games/stendhal/server/core/engine/GenerateINI.java
index 03762b5d27..a158cdcf54 100644
--- a/src/games/stendhal/server/core/engine/GenerateINI.java
+++ b/src/games/stendhal/server/core/engine/GenerateINI.java
@@ -233,7 +233,7 @@ public class GenerateINI {
out.println();
out.println("server_typeGame=" + gameName);
out.println("server_name=" + gameName + " Marauroa server");
- out.println("server_version=0.82.5");
+ out.println("server_version=0.83");
out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse");
out.println();
out.println("# Extensions configured on the server. Enable at will.");
diff --git a/src/games/stendhal/server/entity/item/Item.java b/src/games/stendhal/server/entity/item/Item.java
index 0242e15a0e..420b466875 100644
--- a/src/games/stendhal/server/entity/item/Item.java
+++ b/src/games/stendhal/server/entity/item/Item.java
@@ -574,7 +574,8 @@ public class Item extends PassiveEntity implements TurnListener, EquipListener {
stats.append(" ");
stats.append(entry.getKey());
stats.append(": ");
- stats.append(entry.getValue());
+ stats.append(Math.round(100/entry.getValue()));
+ stats.append("%");
}
}
String statString = "";
diff --git a/src/games/stendhal/server/entity/mapstuff/portal/AccessCheckingPortal.java b/src/games/stendhal/server/entity/mapstuff/portal/AccessCheckingPortal.java
index ca70b69440..e384f7acb1 100644
--- a/src/games/stendhal/server/entity/mapstuff/portal/AccessCheckingPortal.java
+++ b/src/games/stendhal/server/entity/mapstuff/portal/AccessCheckingPortal.java
@@ -55,6 +55,8 @@ abstract class AccessCheckingPortal extends Portal {
protected void rejected(final RPEntity user) {
if (rejectMessage != null) {
sendMessage(user, rejectMessage);
+ user.stop();
+ user.clearPath();
}
}
diff --git a/src/games/stendhal/server/entity/mapstuff/portal/Portal.java b/src/games/stendhal/server/entity/mapstuff/portal/Portal.java
index e68db21bbf..bb6fab7afc 100644
--- a/src/games/stendhal/server/entity/mapstuff/portal/Portal.java
+++ b/src/games/stendhal/server/entity/mapstuff/portal/Portal.java
@@ -41,6 +41,7 @@ public class Portal extends Entity implements UseListener {
* The hidden flags attribute name.
*/
protected static final String ATTR_HIDDEN = "hidden";
+ protected static final String ATTR_USE = "use";
/** the logger instance. */
private static final Logger logger = Logger.getLogger(Portal.class);
@@ -58,6 +59,7 @@ public class Portal extends Entity implements UseListener {
if (!RPClass.hasRPClass(RPCLASS_NAME)){
final RPClass portal = new RPClass(RPCLASS_NAME);
portal.isA("entity");
+ portal.addAttribute(ATTR_USE, Type.FLAG);
portal.addAttribute(ATTR_HIDDEN, Type.FLAG);
}
} catch (final SyntaxException e) {
@@ -179,7 +181,12 @@ public class Portal extends Entity implements UseListener {
player.sendPrivateText("For some reason you cannot get through right now.");
return false;
}
-
+
+ if (!nextTo(player) && has("use")) {
+ player.sendPrivateText("You must come closer before you can use this orb.");
+ return false;
+ }
+
if (!nextTo(player)) {
// Too far to use the portal from here, but walk to it
// The pathfinder will do the rest of the work and make the player pass through the portal
diff --git a/src/games/stendhal/server/entity/player/Player.java b/src/games/stendhal/server/entity/player/Player.java
index 821d71b7a1..c902db876a 100644
--- a/src/games/stendhal/server/entity/player/Player.java
+++ b/src/games/stendhal/server/entity/player/Player.java
@@ -155,9 +155,9 @@ public class Player extends RPEntity {
player.put("atk_xp", 0);
player.put("def", 10);
player.put("def_xp", 0);
+ player.put("level", 0);
player.setXP(0);
-
final Outfit randomoutfit = Outfit.getRandomOutfit();
player.setOutfit(randomoutfit);
diff --git a/src/games/stendhal/server/maps/quests/ThePiedPiper.java b/src/games/stendhal/server/maps/quests/ThePiedPiper.java
index 8e48793d59..5aecca7cf7 100644
--- a/src/games/stendhal/server/maps/quests/ThePiedPiper.java
+++ b/src/games/stendhal/server/maps/quests/ThePiedPiper.java
@@ -21,10 +21,7 @@ import games.stendhal.server.entity.npc.SpeakerNPC;
import games.stendhal.server.entity.npc.parser.Sentence;
import games.stendhal.server.entity.player.Player;
-import java.lang.Math;
-
import java.util.Arrays;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Observable;
@@ -560,6 +557,7 @@ import org.apache.log4j.Logger;
}
// spawn creature
rat.registerObjectsForNotification(ratsObserver);
+ /* -- commented because of these noises reflects on all archrats in game --
// add unique noises to humanoids
if (tc==RAT_TYPES.indexOf("archrat")) {
final LinkedList ll = new LinkedList(
@@ -573,6 +571,7 @@ import org.apache.log4j.Logger;
lhm.put("follow", ll);
rat.setNoises(lhm);
};
+ */
StendhalRPAction.placeat(zone, rat, x, y);
rats.add(rat);
};
diff --git a/stendhal.jnlp b/stendhal.jnlp
index f209acb901..3982275e51 100644
--- a/stendhal.jnlp
+++ b/stendhal.jnlp
@@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t
-
+
diff --git a/tests/games/stendhal/server/actions/equip/EquipmentActionTest.java b/tests/games/stendhal/server/actions/equip/EquipmentActionTest.java
index 1624481900..1a75450859 100644
--- a/tests/games/stendhal/server/actions/equip/EquipmentActionTest.java
+++ b/tests/games/stendhal/server/actions/equip/EquipmentActionTest.java
@@ -60,23 +60,6 @@ public class EquipmentActionTest extends ZoneAndPlayerTestImpl {
return player;
}
- /**
- * Tests for dropInvalidSourceSlot.
- */
- @Test
- public void testDropInvalidSourceSlot() {
- final Player player = createTestPlayer("george");
-
- final RPAction drop = new RPAction();
- drop.put("type", "drop");
- drop.put("baseobject", player.getID().getObjectID());
- drop.put("baseslot", "nonExistingSlotXXXXXX");
- drop.put("baseitem", -1);
-
- final EquipmentAction action = new DropAction();
- action.onAction(player, drop);
- Assert.assertEquals("Source nonExistingSlotXXXXXX does not exist", player.events().get(0).get("text"));
- }
/**
* Tests for dropNonExistingItem.
diff --git a/tiled/interiors/ados/tavern_0.tmx b/tiled/interiors/ados/tavern_0.tmx
index 40c44c2238..b060b3b459 100644
--- a/tiled/interiors/ados/tavern_0.tmx
+++ b/tiled/interiors/ados/tavern_0.tmx
@@ -1,112 +1,113 @@
-
-