Compare commits

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

25 commits

Author SHA1 Message Date
Hendrik Brummermann
851b2b7e4c increased version number to 0.82.2 2010-03-30 18:33:28 +00:00
Hendrik Brummermann
b27c1c34e7 request retransmition of content if it cannot be loaded from cache (for example because the file got corrupted because the disk was full) 2010-03-30 18:08:01 +00:00
Hendrik Brummermann
a605d1146b don't kill the client just because some zone data cannot be read 2010-03-30 17:44:51 +00:00
Hendrik Brummermann
aba5190b50 changes 2010-03-28 19:01:44 +00:00
Hendrik Brummermann
4c8dcbe678 added /clicmode to /help 2010-03-28 09:47:11 +00:00
Hendrik Brummermann
ec0bd70627 updated marauroa to obtain read lock before counting the number of unique ip-addresses for the statistics (fixes #2977800) 2010-03-27 22:14:57 +00:00
Hendrik Brummermann
4e8c30f7f2 increased version number 2010-03-27 16:37:14 +00:00
Hendrik Brummermann
8f6cf92c09 removed the hint about having to change zone in the mute message since it is no longer true 2010-03-27 16:34:59 +00:00
Hendrik Brummermann
635e237d07 new command /clickmode to switch between single and double click for walking (fixes #2977326) 2010-03-27 16:32:05 +00:00
Hendrik Brummermann
1b724101f9 backported fix for owning animals by kiheru (fixes #2977315) 2010-03-27 13:29:51 +00:00
Hendrik Brummermann
85464ebd21 ignore bogus mouse click event after drag&drop on MS Windows (fixes #2976895) 2010-03-27 13:28:57 +00:00
Hendrik Brummermann
de3f9eaabe read mute state on initialisation of the sound system (fixes #2977329) 2010-03-27 13:28:27 +00:00
Hendrik Brummermann
bfd2a354e0 revert because it was committed to the wrong branch 2010-03-27 12:57:22 +00:00
Hendrik Brummermann
84f054a3ff ignore bogus mouse click event after drag&drop on MS Windows (fixes #2976895) 2010-03-27 12:55:10 +00:00
Hendrik Brummermann
368846ed5a backported fix to stop the player walking animation on collision by kiheru (this fix is part of the released version but was not in CVS because of a CVS sever downtime) 2010-03-27 12:20:22 +00:00
Hendrik Brummermann
577133f920 backported fix of warning about Easter Bunny already in the NPCList (this fix is part of the released version but was not in CVS because of a CVS sever downtime) 2010-03-27 12:19:51 +00:00
Hendrik Brummermann
397029e4b2 backporting clicking on portals 2010-03-24 23:13:42 +00:00
Hendrik Brummermann
38f14edc5e don't move on single click unless the Stendhal window was focused 2010-03-24 21:07:23 +00:00
Hendrik Brummermann
8129768f69 backporting fixed error in speech by kymara 2010-03-24 20:34:41 +00:00
Hendrik Brummermann
08cb38d40c fixed price of roach to 10 in hard coded shop signs (fixes #2971215) 2010-03-24 20:28:18 +00:00
Hendrik Brummermann
ca1bd904be fixed help about /volume 2010-03-24 20:18:43 +00:00
Hendrik Brummermann
217d82fe0b changed manual hint pointing to F1 instead of the first screen. 2010-03-24 20:14:34 +00:00
Hendrik Brummermann
536cff582d updated version number 2010-03-24 20:09:05 +00:00
Hendrik Brummermann
b2bdf4ac55 backporting fixed typos and capitalised proper nouns by kymara 2010-03-24 20:08:44 +00:00
Hendrik Brummermann
18c8f3b2dc fixed Harold telling players about about expiring earnings every minute 2010-03-24 19:50:09 +00:00
24 changed files with 144 additions and 32 deletions

View file

@ -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.81.5
version.old = 0.82
version = 0.82.2
# javac options
javac.deprecation = true

View file

@ -49,7 +49,7 @@ Whut I be buyin:
cod 10
char 30
trout 45
roach 30
roach 10
perch 22
mackerel 20
clownfish 30

View file

@ -1,15 +1,28 @@
Changelog
---------
0.82.2
*bugfixes*
- recover automatically from corrupted cache files
0.82.1
*bugfixes*
- new command /clickmode to toggle between single click walking and double click walking
- fixed movement to drop target (only Microsoft Windows was affected)
- fixed /mute not being stored accross restarts
- fixed pets not ownable
0.82
*features
- single click movement
- easter bunny
- pied piper quest
- Easter Bunny
- Pied Piper quest
- open manual on key F1
- added /volume support for sound
- asynchronous database access
- kalavan orb
- sad scientist quest
- Kalavan orb
- Sad Scientist quest
*admins*
- new /script AdminPortal.class
@ -24,7 +37,10 @@ Changelog
- Carmen only asks for her quest if the player is at least level 2.
- improved stability of the client in uncommon situations
- stat changes that occurred during zone change (like losing xp on death) did not update the stats window.
- click walking is now a lot smother
- click walking is now a lot smoother
- fixed Harold telling players about expiring earnings every minute
0.81.3
- prevent crash on "No line matching interface" (fixes #2970406)

Binary file not shown.

View file

@ -1,3 +1,3 @@
set STENDHAL_VERSION=0.81.5
set STENDHAL_VERSION=0.82.1
set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar
java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l

View file

@ -1,5 +1,5 @@
#!/bin/sh
STENDHAL_VERSION="0.81.5"
STENDHAL_VERSION="0.82.1"
LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar

View file

@ -249,7 +249,6 @@ public class StendhalClient extends ClientFramework {
handler.apply(message, world_objects);
} catch (final Exception e) {
logger.error("error processing message " + message, e);
System.exit(1);
}
}
@ -301,7 +300,9 @@ public class StendhalClient extends ClientFramework {
} catch (final Exception e) {
e.printStackTrace();
logger.error(e, e);
System.exit(1);
// request retransmission
item.ack = true;
}
} else {
logger.debug("Content " + item.name
@ -349,7 +350,6 @@ public class StendhalClient extends ClientFramework {
contentHandling(item.name, new ByteArrayInputStream(item.data));
} catch (final Exception e) {
logger.error("onTransfer", e);
System.exit(2);
}
}

View file

@ -0,0 +1,34 @@
package games.stendhal.client.actions;
import games.stendhal.client.ClientSingletonRepository;
import games.stendhal.client.gui.chatlog.StandardEventLine;
import games.stendhal.client.gui.wt.core.WtWindowManager;
/**
* switches between single click and double click
*
* @author hendrik
*/
public class ClickModeAction implements SlashAction {
public boolean execute(String[] params, String remainder) {
boolean doubleClick = Boolean.parseBoolean(WtWindowManager.getInstance().getProperty("ui.doubleclick", "false"));
doubleClick = !doubleClick;
WtWindowManager.getInstance().setProperty("ui.doubleclick", Boolean.toString(doubleClick));
if (doubleClick) {
ClientSingletonRepository.getUserInterface().addEventLine(new StandardEventLine("Click mode is now set to double click."));
} else {
ClientSingletonRepository.getUserInterface().addEventLine(new StandardEventLine("Click mode is now set to single click."));
}
return true;
}
public int getMaximumParameters() {
return 0;
}
public int getMinimumParameters() {
return 0;
}
}

View file

@ -47,11 +47,11 @@ class HelpAction implements SlashAction {
"- /grumpy \t\tRemove status grumpy",
"- /name <pet> <name> \tGive a name to your pet",
"* Misc: ",
"- /clickmode \t\t switches between single click mode and double click mode",
"- /info \t\tFind out what the current server time is",
"- /mute\t\tMute or unmute the sounds",
"- /volume show\t\tShow the current volume of sounds and music",
"- /volume <group> <vol>\t\tSets the volume for the specified group"
};
"- /volume\t\tLists or sets the volume for sound and music"
};
for (final String line : lines) {
ClientSingletonRepository.getUserInterface().addEventLine(new HeaderLessEventLine(line, NotificationType.CLIENT));

View file

@ -29,7 +29,7 @@ class MuteAction implements SlashAction {
if (play) {
ClientSingletonRepository.getUserInterface().addEventLine(new StandardEventLine("Sounds are now on."));
} else {
ClientSingletonRepository.getUserInterface().addEventLine(new StandardEventLine("Sounds are now off. (You may need to change the zone to stop the background music)."));
ClientSingletonRepository.getUserInterface().addEventLine(new StandardEventLine("Sounds are now off."));
}
return true;
}

View file

@ -30,8 +30,9 @@ public class SlashActionRepository {
actions.put("ban", new BanAction());
actions.put("clear", new ClearChatLogAction());
actions.put("clickmode", new ClickModeAction());
actions.put("crash", new CrashClientAction());
actions.put("drop", new DropAction());
actions.put("faq", new FAQAction());

View file

@ -73,4 +73,10 @@ class Portal2DView extends InvisibleEntity2DView {
break;
}
}
@Override
public boolean isInteractive() {
return false;
}
}

View file

@ -24,8 +24,10 @@ import games.stendhal.client.gui.j2d.entity.EntityView;
import games.stendhal.client.gui.wt.core.WtBaseframe;
import games.stendhal.client.gui.wt.core.WtDraggable;
import games.stendhal.client.gui.wt.core.WtDropTarget;
import games.stendhal.client.gui.wt.core.WtWindowManager;
import java.awt.Cursor;
import java.awt.KeyboardFocusManager;
import java.awt.Point;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
@ -46,6 +48,10 @@ public class GroundContainer extends WtBaseframe implements WtDropTarget,
/** the game client. */
private final StendhalClient client;
private boolean windowWasActiveOnMousePressed = true;
private int xOnMousePressed;
private int yOnMousePressed;
/**
* The UI.
*/
@ -94,17 +100,38 @@ public class GroundContainer extends WtBaseframe implements WtDropTarget,
}
/**
* remembers whether the client was active on last mouse down
*/
@Override
public synchronized void mousePressed(MouseEvent e) {
windowWasActiveOnMousePressed = (KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow() != null);
xOnMousePressed = e.getX();
yOnMousePressed = e.getY();
super.mousePressed(e);
}
/**
* Handles mouse click events
*
*
*
* @param p point of click
*/
@Override
public synchronized boolean onMouseClick(final Point p) {
// on MS Windows releasing the mouse after a drag&drop action is
// counted as mouse click: https://sourceforge.net/support/tracker.php?aid=2976895
if ((Math.abs(p.getX() - xOnMousePressed) > 10)
|| (Math.abs(p.getY() - yOnMousePressed) > 10)) {
return false;
}
// base class checks if the click is within a child
if (super.onMouseClick(p)) {
// yes, click already processed
return true;
}
// get clicked entity
final Point2D point = screen.convertScreenViewToWorld(p);
@ -127,8 +154,13 @@ public class GroundContainer extends WtBaseframe implements WtDropTarget,
return true;
}
} else if (getWtPanelAt(p) == null) {
createAndSendMoveToAction(point);
return true;
if (windowWasActiveOnMousePressed) {
boolean doubleClick = Boolean.parseBoolean(WtWindowManager.getInstance().getProperty("ui.doubleclick", "false"));
if (!doubleClick) {
createAndSendMoveToAction(point);
}
}
return false;
}
return false;

View file

@ -133,6 +133,7 @@ public class ExtendedSoundManager extends SoundManagerNG implements WorldListene
ExtendedSoundManager() {
super(!Boolean.parseBoolean(WtWindowManager.getInstance().getProperty("sound.play", "true")),
mDeviceEvaluator.createDeviceList(mAudioFormat), mAudioFormat);
initMute();
initVolumes();
}
@ -149,6 +150,12 @@ public class ExtendedSoundManager extends SoundManagerNG implements WorldListene
this.getGroup("music").changeVolume(Numeric.intToFloat(config.getPropertyInt("sound.volume.music", 60), 100.0f));
}
private void initMute() {
WtWindowManager config = WtWindowManager.getInstance();
boolean play = Boolean.parseBoolean(config.getProperty("sound.play", "true"));
mute(!play, false, new Time(0, Time.Unit.SEC));
}
public void playerMoved() {
float[] position = Algebra.vecf((float) User.get().getX(), (float) User.get().getY());
super.setHearerPosition(position);

View file

@ -10,7 +10,7 @@ package games.stendhal.client.update;
public class Version {
/** Version Number. */
public static final String VERSION = "0.81.5";
public static final String VERSION = "0.82.1";
/**
* Extract the specified number of parts from a version-string.

View file

@ -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.81.5";
String VERSION = "0.82.1";
/**

View file

@ -55,7 +55,7 @@ public class OwnAction implements ActionListener {
final Entity entity = EntityHelper.entityFromTargetName(action.get(TARGET), player);
if (entity != null) {
if (checkEntityIsDomesticAnimal(player, entity)) {
if (!checkEntityIsDomesticAnimal(player, entity)) {
return;
}

View file

@ -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.81.5");
out.println("server_version=0.82.1");
out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse");
out.println();
out.println("# Extensions configured on the server. Enable at will.");

View file

@ -16,7 +16,7 @@ public enum TutorialEventType {
VISIT_SEMOS_CITY(
"You can get a map of Semos from Monogenes. Start by saying \"hi\". Or you can go down the steps to the dungeons and fight some creatures."),
VISIT_SEMOS_DUNGEON(
"You can attack creatures by right clicking on them and choosing \"Attack\""),
"You can attack creatures by right clicking on them and choosing \"Attack\". Alternatively you can use double click."),
VISIT_SEMOS_DUNGEON_2(
"Be careful. If you walk deeper and deeper, the creatures will get more powerful."),
VISIT_SEMOS_TAVERN(
@ -34,7 +34,7 @@ public enum TutorialEventType {
FIRST_DEATH(
"Oh, you have just died. But fortunately death is not permanent in this world."),
TIMED_HELP(
"There is a manual with many pictures on the first screen before you login."),
"Press F1 to read the manual with many pictures."),
TIMED_NAKED(
"Oh, aren't you feeling cold? Right click on yourself and choose \"Set Outfit\" to get dressed."),
TIMED_PASSWORD(

View file

@ -24,7 +24,10 @@ package games.stendhal.server.core.pathfinder;
import games.stendhal.common.CollisionDetection;
import games.stendhal.server.core.engine.StendhalRPZone;
import games.stendhal.server.entity.Entity;
import games.stendhal.server.entity.mapstuff.portal.Portal;
import games.stendhal.server.entity.player.Player;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import java.util.Comparator;
import java.util.HashMap;
@ -264,6 +267,7 @@ class Pathfinder {
* have stopped
*/
private void createEntityCollisionMap() {
Point targetPoint = new Point(nodeGoal.getX(), nodeGoal.getY());
collisionMap = new CollisionDetection();
collisionMap.init(zone.getWidth(), zone.getHeight());
for (final RPObject obj : zone) {
@ -275,6 +279,11 @@ class Pathfinder {
final Rectangle2D area = otherEntity.getArea(otherEntity.getX(),
otherEntity.getY());
// Hack: Allow players to move onto portals as destination
if ((entity instanceof Player) && (otherEntity instanceof Portal) && area.contains(targetPoint)) {
continue;
}
collisionMap.setCollide(area, true);
}
}

View file

@ -1817,7 +1817,15 @@ public class Player extends RPEntity {
}
@Override
protected void handleObjectCollision() {
clearPath();
if (hasPath()) {
/*
* Stop a player only if he is following a path.
* Otherwise running behind archers becomes almost
* impossible.
*/
stop();
clearPath();
}
}

View file

@ -81,7 +81,6 @@ public class MeetBunny extends AbstractQuest {
addGoodbye("Don't eat too much this Easter! Bye!");
}
};
npcs.add(bunny);
bunny.setEntityClass("easterbunnynpc");
bunny.initHP(100);
// times out twice as fast as normal NPCs

View file

@ -469,7 +469,7 @@ import org.apache.log4j.Logger;
*/
private void tellAllAboutNoRatsInCity() {
final String text = "Mayor Chalmers shouts: No #rats in Ados survived, "+
"excluded those who always lived in the "+
"only those who always lived in the "+
"haunted house. "+
"Rat hunters are welcome to get their #reward.";
SingletonRepository.getRuleProcessor().tellAllPlayers(text);

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.81.5.jar" download="eager" main="true" />
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.82.1.jar" download="eager" main="true" />
</resources>
<application-desc/>
</jnlp>