Compare commits

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

15 commits

Author SHA1 Message Date
Hendrik Brummermann
eb809b11f7 fixed spamming of portal reject message by clearing the path (fixes #2996056) 2010-05-03 18:35:49 +00:00
Hendrik Brummermann
c56d6e7bba backported fix by madmetzger: make damage types more understandable by using percentlike notation 2010-04-29 23:56:02 +00:00
Kimmo Rundelin
4dc66fe9e5 Fixed sparkles that ended up in wrong frames 2010-04-29 22:45:47 +00:00
Hendrik Brummermann
662c4cea56 diff music .jar 2010-04-29 20:46:05 +00:00
Hendrik Brummermann
e6f1094d93 backported fix by kymara: Explicitly set the level to 0 for a brand new player so that they get the first level up message to Level 1 2010-04-29 20:20:16 +00:00
Hendrik Brummermann
ab31435c41 updated version number 2010-04-29 20:05:23 +00:00
Hendrik Brummermann
ce576856a6 only show the 2x in the cog cursor in single click mode (fixes #2994329) 2010-04-29 19:51:55 +00:00
Katie Russell
289f392a4b backported use attribute for orbs 2010-04-27 19:09:13 +00:00
Hendrik Brummermann
3d6fc09232 backported fix for walking into orbs 2010-04-27 19:06:54 +00:00
Hendrik Brummermann
4e4bb78a41 deleted test for deleted error message 2010-04-27 05:59:14 +00:00
Kimmo Rundelin
e68f8dd3bf minor transparency fix 2010-04-26 22:05:49 +00:00
Hendrik Brummermann
27d06d3300 backported "commented code for making unique noises for archrats due to problems with casting - these noises would implement to all archrats in game" by yoriy 2010-04-26 22:01:35 +00:00
Hendrik Brummermann
15b608f86e backported "Suppress warning to player that an item taken from a slot doesn't exist there any more (usually this is just going to happen in error - or that someone else looted an item from a corpse first). Also drop to debug. level the warning that someone tried to take an item from a raid corpse belonging to another." by kymara 2010-04-26 22:01:11 +00:00
Hendrik Brummermann
33bd3668b3 backported Put a small x2 next to the cog to show you have to double click to use by kymara 2010-04-26 22:00:52 +00:00
Hendrik Brummermann
5b22022681 increased version numbers 2010-04-26 19:27:39 +00:00
28 changed files with 122 additions and 73 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.82.5
version.old = 0.82
version = 0.83
# javac options
javac.deprecation = true

View file

@ -335,6 +335,7 @@
<implementation class-name="games.stendhal.server.entity.mapstuff.portal.RandomDestinationPortal"/>
<attribute name="width">2</attribute>
<attribute name="height">2</attribute>
<attribute name = "use"/>
</entity>
</zone>
<!-- These are the houses which players can own. Comment out the common chests

View file

@ -214,6 +214,7 @@
<parameter name="rejected">You must learn to use orb first.
</parameter>
</implementation>
<attribute name = "use"/>
</portal>
<portal x="13" y="8" ref="orb_right">
<destination zone="-1_fado_great_cave_e3" ref="jynath_orb" />
@ -223,6 +224,7 @@
<parameter name="rejected">You must learn to use orb first.
</parameter>
</implementation>
<attribute name = "use"/>
</portal>
</zone>
@ -465,6 +467,7 @@
<parameter name="rejected">You do not know how to use the orb.
</parameter>
</implementation>
<attribute name = "use"/>
</portal>
<portal x="77" y="117" ref="2nd_room_in">

View file

@ -1296,6 +1296,7 @@ Shepherds please note: keep watch for the wolves while searching for berries her
<parameter name="quest">learn_scrying</parameter>
<parameter name="rejected">If Ilisa asks, say #yes you have a message from the ball.</parameter>
</implementation>
<attribute name = "use"/>
</portal>
<portal x="12" y="8" ref="orb_right">
<destination zone="0_orril_mountain_w" ref="orb_destination" />
@ -1305,6 +1306,7 @@ Shepherds please note: keep watch for the wolves while searching for berries her
<parameter name="quest">learn_scrying</parameter>
<parameter name="rejected">If Ilisa asks, say #yes you have a message from the ball.</parameter>
</implementation>
<attribute name = "use"/>
</portal>
<portal x="10" y="23" ref="entrance_left">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 476 B

Before After
Before After

View file

@ -46,7 +46,7 @@
<!-- TODO
* unless build-archive/stendhal-${version.old}.zip exists
download http://arianne.sf.net/jws/stendhal-${version.old}.zip to build-archiv -->
<unzip src="${build-archive}/stendhal-${version.old}.zip"
<unzip src="${build-archive}/stendhal-FULL-${version.old}.zip"
dest="${build-archive}" />
</target>
@ -67,6 +67,14 @@
<arg value="${build-archive}/lib/stendhal-data-${version.old}.jar" />
<arg value="${build}/lib/stendhal-data-${version}.jar" />
</java>
<java jar="libs/jardiff.jar" fork="true">
<arg value="-nonminimal" />
<arg value="-creatediff" />
<arg value="-output" />
<arg value="${build}/lib/stendhal-music-data-diff-${version.old}-${version}.jar" />
<arg value="${build-archive}/lib/stendhal-music-data-${version.old}.jar" />
<arg value="${build}/lib/stendhal-music-data-${version}.jar" />
</java>
<!-- TODO maraurora.jar-->
</target>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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.82.5";
String VERSION = "0.83";
/**

View file

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

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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<String> ll = new LinkedList<String>(
@ -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);
};

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

View file

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

View file

@ -1,112 +1,113 @@
<?xml version="1.0"?>
<map version="0.99b" orientation="orthogonal" width="32" height="19" tilewidth="32" tileheight="32">
<tileset name="../../tileset/ground/indoor/grey_skull.png" firstgid="1" tilewidth="32" tileheight="32">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
<map version="1.0" orientation="orthogonal" width="32" height="19" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="../../tileset/ground/indoor/grey_skull.png" tilewidth="32" tileheight="32">
<image source="../../tileset/ground/indoor/grey_skull.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/item/pot/barrel.png" firstgid="9" tilewidth="32" tileheight="32">
<tileset firstgid="9" name="../../tileset/item/pot/barrel.png" tilewidth="32" tileheight="32">
<image source="../../tileset/item/pot/barrel.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/furniture/table/table_with_beer_dark.png" firstgid="11" tilewidth="32" tileheight="32">
<tileset firstgid="11" name="../../tileset/furniture/table/table_with_beer_dark.png" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/table/table_with_beer_dark.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/furniture/chair/wooden.png" firstgid="21" tilewidth="32" tileheight="32">
<tileset firstgid="21" name="../../tileset/furniture/chair/wooden.png" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/chair/wooden.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/furniture/table/table_with_beer.png" firstgid="26" tilewidth="32" tileheight="32">
<tileset firstgid="26" name="../../tileset/furniture/table/table_with_beer.png" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/table/table_with_beer.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/item/pot/pot_purple.png" firstgid="34" tilewidth="32" tileheight="32">
<tileset firstgid="34" name="../../tileset/item/pot/pot_purple.png" tilewidth="32" tileheight="32">
<image source="../../tileset/item/pot/pot_purple.png" trans="ff00ff"/>
</tileset>
<tileset name="../../tileset/plant/indoor/pot_plant.png" firstgid="35" tilewidth="32" tileheight="32">
<tileset firstgid="35" name="../../tileset/plant/indoor/pot_plant.png" tilewidth="32" tileheight="32">
<image source="../../tileset/plant/indoor/pot_plant.png"/>
</tileset>
<tileset name="../../tileset/plant/indoor/flower_vase.png" firstgid="38" tilewidth="32" tileheight="32">
<tileset firstgid="38" name="../../tileset/plant/indoor/flower_vase.png" tilewidth="32" tileheight="32">
<image source="../../tileset/plant/indoor/flower_vase.png"/>
</tileset>
<tileset name="../../tileset/furniture/picture/small.png" firstgid="41" tilewidth="32" tileheight="32">
<tileset firstgid="41" name="../../tileset/furniture/picture/small.png" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/picture/small.png"/>
</tileset>
<tileset name="../../tileset/logic/portal.png" firstgid="44" tilewidth="32" tileheight="32">
<tileset firstgid="44" name="../../tileset/logic/portal.png" tilewidth="32" tileheight="32">
<image source="../../tileset/logic/portal.png"/>
</tileset>
<tileset name="../../tileset/logic/collision.png" firstgid="51" tilewidth="32" tileheight="32">
<tileset firstgid="51" name="../../tileset/logic/collision.png" tilewidth="32" tileheight="32">
<image source="../../tileset/logic/collision.png"/>
</tileset>
<tileset name="tiles" firstgid="52" tilewidth="32" tileheight="32">
<tileset firstgid="52" name="tiles" tilewidth="32" tileheight="32">
<image source="../../tileset/ground/indoor/floor_tiles2.png"/>
</tileset>
<tileset name="centred entrance" firstgid="58" tilewidth="32" tileheight="32">
<tileset firstgid="58" name="centred entrance" tilewidth="32" tileheight="32">
<image source="../../tileset/building/entrance/grey_centred.png"/>
</tileset>
<tileset name="table" firstgid="86" tilewidth="32" tileheight="32">
<tileset firstgid="86" name="table" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/table/vendors_table.png"/>
</tileset>
<tileset name="beers" firstgid="107" tilewidth="32" tileheight="32">
<tileset firstgid="107" name="beers" tilewidth="32" tileheight="32">
<image source="../../tileset/item/drink/beers_and_flasks.png"/>
</tileset>
<tileset name="bottle" firstgid="119" tilewidth="32" tileheight="32">
<tileset firstgid="119" name="bottle" tilewidth="32" tileheight="32">
<image source="../../tileset/item/drink/bottle_and_glass.png"/>
</tileset>
<tileset name="wine" firstgid="120" tilewidth="32" tileheight="32">
<tileset firstgid="120" name="wine" tilewidth="32" tileheight="32">
<image source="../../tileset/item/drink/white_wine.png"/>
</tileset>
<tileset name="rug" firstgid="123" tilewidth="32" tileheight="32">
<tileset firstgid="123" name="rug" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/carpet/purple.png"/>
</tileset>
<tileset name="rack" firstgid="132" tilewidth="32" tileheight="32">
<tileset firstgid="132" name="rack" tilewidth="32" tileheight="32">
<image source="../../tileset/furniture/other/clothes_rack.png"/>
</tileset>
<tileset name="hat" firstgid="134" tilewidth="32" tileheight="32">
<tileset firstgid="134" name="hat" tilewidth="32" tileheight="32">
<image source="../../tileset/item/textile/red_hat.png"/>
</tileset>
<tileset name="bottles" firstgid="135" tilewidth="32" tileheight="32">
<tileset firstgid="135" name="bottles" tilewidth="32" tileheight="32">
<image source="../../tileset/item/drink/bottles_and_cups.png"/>
</tileset>
<tileset name="lace" firstgid="151" tilewidth="32" tileheight="32">
<tileset firstgid="151" name="lace" tilewidth="32" tileheight="32">
<image source="../../tileset/item/textile/lace.png"/>
</tileset>
<tileset name="wall/int_grey" firstgid="153" tilewidth="32" tileheight="32">
<tileset firstgid="153" name="wall/int_grey" tilewidth="32" tileheight="32">
<image source="../../tileset/building/wall/int_grey.png"/>
</tileset>
<layer name="0_floor" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAADNjYGAwG2DMSiUMMouBRPVmaHxq0Mhm4/MzOptSO9HFQVgKiOXQsCyN/I8tbOvRML39T2z408r/Ax3/9UTaP1zTP73i/yYS/+II9P9gTf/09P9ITv+U+p9YTEg9PnlS0ykhe6iBAQeYFR+ACQAA
H4sIAAAAAAAAAzNjYGAwG2DMSiUMMouBRPVmaHxq0Mhm4/MzOptSO9HFQVgKiOXQsCyN/I8tbOvRML39T2z408r/Ax3/9UTaP1zTPz3jf6T7fzCm/9H4Hxr+JxYTUo9PntR0SsgeamAAz3Seg4AJAAA=
</data>
</layer>
<layer name="1_terrain" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAL2TTQrCMBCFE90pdSfYlbryTq6rC68gaFU8g5uC7vw7jcueRl8kgTA0cZK2DnwU2sm894a0EEKcG+ICisD+K7iBe00eoCv580z/G8+XqF8leOo8nHml5bcpfZpnDU4OjN8282/AGEwscjAV/8mv9LeEnPhtO79Pv+n8tn6m9RcefZo/0/3LSP3Q/XPyp2DO1A/dP/d/VfpDhgdanPz2vlxZVwytpvLHZo29/778IV7ovJShX5Xf7Jp772z9uvlpGS9Hpj7NvwN7wsHjN6aUx5Fjnuvezohfgadk8m2veN+Rv+fZZ01/D/QZJBpViaxmoOe5vtOzqv8D8mte4oAJAAA=
H4sIAAAAAAAAA72TTQrCMBCFE90puhPsSl15J9fVhVcQtCqewU1Bd/6dxmVPoy+SQBiadJo2DnwE2sm899I0F0JcWuIK8pr9N3AHj4Y8QVfy55n+D9a3aF4FeOk8nHmF5bctfZpnA84OjN+Y+bdgAqYWGZiJ/+RX+jtCRvzGzu/Tj5k/1fpLjz7Nn+r+VaB+jPwJWETS5/6vSn/E0DdVJ799/q6s6wpt17yQ/JysLv2Q7+/LX8cLnZcw9Mvym7Pm3jtbv2l+WsbLialP8+/BgXD0+A0p5XHsmOe6t3PiV2CVTH7tJc87snqevdf090CfwUCjaiDLGep5rvd0r+r/ArngtJ6ACQAA
</data>
</layer>
<layer name="2_object" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAMWVOQ7CMBBF00LFnnTsEmdg39cb0ENDRcMdoACOzEdyJMvyPlbypSfHk/n5mShRoih7dXPI5NWT1DoMHxUltYGmv6/I55Vo/LpzMr3Bi9s/Nb0lUAVljoqkltZrhuwmaDEStrYNHtV8rnPnrYaw2vaH0gXE4Oroi4V96Pty1d2iZwhGYAwmhCzfWRdgCVZgTch/ePr24ACO4ETIvxG8ony+1y93/CHmn4l+6rP459eJ1zBJ9766zF9Q1GX/Nhv5+nSaghmYZ+xNtQFbsAvo/QFHkI4pgAkAAA==
H4sIAAAAAAAAA8WVOQ7CMBBF00LFnnTsEmdg39cb0ENDRcMdoACOzEdyJMvyPlbypSfHk/n5mShRoih7dXPI5NWT1DoMHxUltYGmv6/I55Vo/LpzMr3Bi9s/Nb0lUAVljoqkltZrhuwmaDEStrYNHtV8rnPnrYaw2vaH0gXE4Oroi4V96Pty1d2iZwhGYAwmhCzfWRdgCVZgTch/ePr24ACO4ETIvxG8ony+1y93/CHmn4l+6rP459eJ1zBJ9766zF9Q1GX/Nhv5+nSaghmYZ+xNtQFbsAvo/QFHkI4pgAkAAA==
</data>
</layer>
<layer name="3_roof" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAGNgwASaWMTIAdpUMmckAW4g5gNiHiTMi0UMJs4/MM4cBQRAGBCHQ3EEiXqIVU8vEDnQDqAjoMSv/kAcQC2HDAJAabwPdLpRo5I5LWTq66KS/fgAvjAup4P9o4AyAAC+EsVYgAkAAA==
H4sIAAAAAAAAA2NgwASaWMTIAdpUMmckAW4g5gNiHiTMi0UMJs4/MM4cBQRAGBCHQ3EEiXqIVU8vEDnQDqAjoMSv/kAcQC2HDAJAabwPdLpRo5I5LWTq66KS/fgAvjAup4P9o4AyAAC+EsVYgAkAAA==
</data>
</layer>
<layer name="4_roof_add" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAGNgGAWDCeQjsXOAeAKafC+U7qGPc0YBhaCCRPXFNHEFZSCfsJJBAfyBOGCgHTEKhh1oG2gHjIJhCwBO2VhvgAkAAA==
H4sIAAAAAAAAA2NgGAWDCeQjsXOAeAKafC+U7qGPc0YBhaCCRPXFNHEFZSCfsJJBAfyBOGCgHTEKhh1oG2gHjIJhCwBO2VhvgAkAAA==
</data>
</layer>
<layer name="objects" width="32" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAGNgGAWjYBSMglEwCkbBKBjcwGCA9NIKAAAnhrUUgAkAAA==
H4sIAAAAAAAAA2NgGAWjYBSMglEwCkbBKBjcwGCA9NIKAAAnhrUUgAkAAA==
</data>
</layer>
<layer name="collision" width="32" height="19" visible="0" opacity="0.36">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAADNmYGAwHsVwTA4g1Sxq2o3LTEJ2UaoeXS+pfqGm30ftJz1dE4pDSu2npnpahCe17ScV4Mt/1DRvKNtPiltwpWdS7UdXM5D2k+IOWtlPrNuILXfwqSUGU6KfUrtpgQFxdyhtgAkAAA==
H4sIAAAAAAAAAzNmYGAwHsVwTA4g1Sxq2o3LTEJ2UaoeXS+pfqGm30ftJz1dE4pDSu2npnpahCe17ScV4Mt/1DRvKNtPiltwpWdS7UdXM5D2k+IOWtlPrNuILXfwqSUGU6KfUrtpgQFxdyhtgAkAAA==
</data>
</layer>
<layer name="protection" width="32" height="19" opacity="0.18">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO3BMQEAAADCoPVPbQsvoAAAeBoUK4qJgAkAAA==
H4sIAAAAAAAAA+3BMQEAAADCoPVPbQsvoAAAeBoUK4qJgAkAAA==
</data>
</layer>
</map>