Compare commits
25 commits
master
...
VERSION_00
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a9ce203d8 | ||
|
|
5f9248b02d | ||
|
|
6374a108bf | ||
|
|
fe5fdda5ff | ||
|
|
4a3c787aab | ||
|
|
bcd45b06e5 | ||
|
|
f8757a0984 | ||
|
|
f2c198ddba | ||
|
|
a775caa38f | ||
|
|
a958c895c9 | ||
|
|
c27d2477b1 | ||
|
|
800eb4a26e | ||
|
|
d86204d817 | ||
|
|
a961a2deb2 | ||
|
|
8d860e1836 | ||
|
|
ad7aa20e43 | ||
|
|
d407a34c31 | ||
|
|
b08c83fd4a | ||
|
|
52489d187a | ||
|
|
60fc31f708 | ||
|
|
276936f3f4 | ||
|
|
2314dbbec8 | ||
|
|
a88f96af7e | ||
|
|
9b3fef666d | ||
|
|
50ec5c49f0 |
28 changed files with 230 additions and 95 deletions
|
|
@ -73,7 +73,7 @@ version_server = http://arianne.sourceforge.net/stendhal.version
|
|||
|
||||
# current version of stendhal
|
||||
version.old = 0.87
|
||||
version = 0.87.5
|
||||
version = 0.88
|
||||
|
||||
# javac options
|
||||
javac.deprecation = true
|
||||
|
|
|
|||
|
|
@ -2554,6 +2554,75 @@ Mature sheep wanted: please speak to Sato
|
|||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="222" y="26">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="175" y="13">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="137" y="23">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="102" y="65">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="123" y="67">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="73" y="2">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="7" y="14">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="9" y="44">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="29" y="73">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="32" y="94">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="172" y="66">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="249" y="80">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="213" y="95">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="239" y="124">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
</zone>
|
||||
|
||||
<zone name="-1_semos_mine_n2_e" level="-1" x="500128" y="499616"
|
||||
|
|
@ -2603,6 +2672,26 @@ Mature sheep wanted: please speak to Sato
|
|||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="79" y="4">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="67" y="9">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="60" y="22">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="42" y="5">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
</zone>
|
||||
|
||||
|
|
@ -2640,20 +2729,54 @@ Mature sheep wanted: please speak to Sato
|
|||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="101" y="106">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="121" y="47">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="113" y="88">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
</zone>
|
||||
|
||||
<zone name="-1_semos_mine_n_e2" level="-1" x="500256" y="499744"
|
||||
file="Level -1/semos/mine_n_e2.tmx">
|
||||
|
||||
<entity x="56" y="49">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="64" y="48">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="102" y="21">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="90" y="48">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="101" y="50">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="116" y="72">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
|
||||
<entity x="95" y="21">
|
||||
<implementation
|
||||
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
|
||||
</entity>
|
||||
</zone>
|
||||
|
||||
<zone name="int_wofol_house1" file="interiors/wofol/house1.tmx">
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 1.5 KiB |
|
|
@ -2,32 +2,33 @@ Changelog
|
|||
---------
|
||||
|
||||
0.88
|
||||
|
||||
*features*
|
||||
- right click on a player to start trading with them using a GUI
|
||||
- don't reset to townhall on minor releases
|
||||
- new music in orril castle
|
||||
- can have a detail layer over outfits
|
||||
- new game for Semos Mine Town Revival Weeks: 9 switches
|
||||
- new NPC Andy in Ados near the church
|
||||
- new NPC Haunchy Meatoch on Ados market
|
||||
- new NPC Florence Boullabaisse on Ados market
|
||||
- new NPC Fritz on Ados market
|
||||
- new NPC Barbarus in Semos Mine
|
||||
- new NPC Ortiv Milquetoast in Kirdneh River House
|
||||
- new fish soup maker on Ados market (Florence Boullabaisse)
|
||||
- added new quest on Ados market to Haunchy Meatoch
|
||||
- added new quest in the Kirdneh River House to Ortiv Milquetoast
|
||||
- added more quest histories
|
||||
- rest of the Wt replaced with swing
|
||||
- corpse and chest windows raise themselves if one with an already open window is inspected
|
||||
- buddies are sorted first by online status, then by name
|
||||
- don't reset to townhall on minor releases
|
||||
- deathmatch assistant announces completion and player can directly claim victory
|
||||
|
||||
*world*
|
||||
- new NPC Andy in Ados near the church
|
||||
- new NPC Haunchy Meatoch on Ados market with a new quest
|
||||
- new NPC Florence Boullabaisse on Ados market who will make a tasty Fish Soup for you
|
||||
- new NPC Fritz on Ados market
|
||||
- new NPC Barbarus in Semos Mine
|
||||
- new NPC Ortiv Milquetoast in Kirdneh River House with a new quest
|
||||
- new fish soup maker on Ados market (Florence Boullabaisse)
|
||||
- new music in Orril Castle
|
||||
- new items fish soup, garlic, grilled steak, coal, pick, red lionfish
|
||||
- coal sources for extracting coal
|
||||
- added garlic to Sues sales list
|
||||
- new game for Semos Mine Town Revival Weeks: 9 switches
|
||||
|
||||
*website*
|
||||
- animated/large NPCs like tomi and vulcanus now have an image
|
||||
|
||||
|
||||
|
||||
0.87.1
|
||||
- fixed an issue causing the client to be unresponsive for some windows users
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,3 +1,3 @@
|
|||
set STENDHAL_VERSION=0.87.5
|
||||
set STENDHAL_VERSION=0.88
|
||||
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.87.5"
|
||||
STENDHAL_VERSION="0.88"
|
||||
|
||||
LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar
|
||||
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ public class j2DClient implements UserInterface {
|
|||
|
||||
// Display a hint if this is a debug client
|
||||
if (Debug.PRE_RELEASE_VERSION != null) {
|
||||
addEventLine(new HeaderLessEventLine("This is a pre release test client client: " + Debug.VERSION + " - " + Debug.PRE_RELEASE_VERSION, NotificationType.CLIENT));
|
||||
addEventLine(new HeaderLessEventLine("This is a pre release test client: " + Debug.VERSION + " - " + Debug.PRE_RELEASE_VERSION, NotificationType.CLIENT));
|
||||
}
|
||||
|
||||
// set some default window positions
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ package games.stendhal.client.update;
|
|||
public class Version {
|
||||
|
||||
/** Version Number. */
|
||||
private static final String VERSION = "0.87.5";
|
||||
private static final String VERSION = "0.88";
|
||||
|
||||
/**
|
||||
* 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.87.5";
|
||||
public static final String VERSION = "0.88";
|
||||
|
||||
public static final String PRE_RELEASE_VERSION = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ public class Grammar {
|
|||
if (result.equals("meat") || result.equals("ham")
|
||||
|| result.equals("cheese") || result.equals("wood")
|
||||
|| result.equals("paper") || result.equals("iron")
|
||||
|| result.equals("chicken")) {
|
||||
|| result.equals("chicken") || result.equals("coal")) {
|
||||
result = addPrefixIfNotAlreadyThere(lowString, "piece of ",
|
||||
"pieces of ");
|
||||
} else if (result.endsWith(" ore")) {
|
||||
|
|
|
|||
|
|
@ -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.87.5");
|
||||
out.println("server_version=0.88");
|
||||
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.");
|
||||
|
|
|
|||
|
|
@ -50,12 +50,13 @@ public class StendhalBuddyDAO {
|
|||
/**
|
||||
* saves the buddy list for the specified charname
|
||||
*
|
||||
* @param transaction DBTransaction
|
||||
* @param charname name of char
|
||||
* @param buddies buddy list
|
||||
* @throws SQLException
|
||||
* @throws SQLException in case of an database error
|
||||
*/
|
||||
private void saveBuddyList(DBTransaction transaction, String charname, Set<String> buddies) throws SQLException {
|
||||
public void saveBuddyList(DBTransaction transaction, String charname, Set<String> buddies) throws SQLException {
|
||||
Set<String> oldList = loadBuddyList(transaction, charname);
|
||||
Set<String> newList = buddies;
|
||||
newList.add(charname);
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class StendhalCharacterDAO extends CharacterDAO {
|
|||
if (player instanceof Player) {
|
||||
final Player instance = (Player) player;
|
||||
DAORegister.get().get(StendhalWebsiteDAO.class).insertIntoCharStats(transaction, instance);
|
||||
DAORegister.get().get(StendhalBuddyDAO.class).saveBuddyList(character, instance.getBuddies());
|
||||
DAORegister.get().get(StendhalBuddyDAO.class).saveBuddyList(transaction, character, instance.getBuddies());
|
||||
}
|
||||
} catch (final SQLException sqle) {
|
||||
logger.warn("error storing character", sqle);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,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;
|
||||
|
|
@ -202,7 +201,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());
|
||||
|
|
|
|||
|
|
@ -104,10 +104,13 @@ public class Dice extends Item {
|
|||
/**
|
||||
* Throw the dice.
|
||||
*/
|
||||
private void randomize() {
|
||||
void randomize() {
|
||||
topFaces = new int[NUMBER_OF_DICE];
|
||||
for (int i = 0; i < NUMBER_OF_DICE; i++) {
|
||||
final int topFace = Rand.roll1D6();
|
||||
int topFace = Rand.roll1D6();
|
||||
if (topFace == 6) {
|
||||
topFace = Rand.roll1D6();
|
||||
}
|
||||
topFaces[i] = topFace;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,8 +155,8 @@ public class CoalSource extends PlayerActivityEntity {
|
|||
private void handleRespawn() {
|
||||
if (getState() == 0) {
|
||||
final int time = Rand.randExponential(6000);
|
||||
int turn = Math.max(time, 200);
|
||||
TurnNotifier.get().notifyInSeconds(turn, new Refiller());
|
||||
int turn = Math.max(time, 6000);
|
||||
TurnNotifier.get().notifyInTurns(turn, new Refiller());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,12 +57,12 @@ public class ManWithHatNPC implements ZoneConfigurator {
|
|||
|
||||
@Override
|
||||
protected void createDialog() {
|
||||
addGreeting("Sniff!");
|
||||
addHelp("When I lived together with my beloved wife, we used to travell a lot. We loved the beach on Athor Island! *Sigh* These memories are making me even more sad...Please, leave me alone now...");
|
||||
addQuest("I am too old and too sad to think about jobs for others...*sniff-sniff*");
|
||||
addJob("*Cry* I had to stop working after my wife died...");
|
||||
addOffer("Nothing, I lost my darling!");
|
||||
addGoodbye("Buuaaahaaaahaa!");
|
||||
addGreeting("Hello.");
|
||||
addHelp("When I lived together with my beloved wife, we used to travel a lot. We loved the beach on Athor Island! But these memories make me sad now.");
|
||||
addQuest("I am too old to think about jobs for others...");
|
||||
addJob("I stopped working after my wife died.");
|
||||
addOffer("I have nothing to offer you.");
|
||||
addGoodbye("Goodbye, thank you for talking with me.");
|
||||
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@ public class BBQGrillmasterNPC implements ZoneConfigurator {
|
|||
|
||||
@Override
|
||||
protected void createDialog() {
|
||||
addGreeting("Hey! Isn't it a nice day for having a BBQ?");
|
||||
addHelp("Unfortunetly the steaks aren't ready yet... If you are hungry and can't wait, you could check some offers in the near out like the Blacksheep offers near the fisherhuts in Ados or you can take a ferry to Athor for getting some nice snacks...");
|
||||
addJob("I am a grillmaster as you can prolly see. I love the smell of fresh grilled meat!");
|
||||
addGreeting("Hey! Nice day for a BBQ!");
|
||||
addHelp("Unfortunately the steaks aren't ready yet... If you are hungry and can't wait, you could check some offers in the near out like the Blacksheep offers near the fisherhuts in Ados or you can take a ferry to Athor for getting some nice snacks...");
|
||||
addJob("I am a grillmaster as you can probably see. I love the smell of fresh grilled meat!");
|
||||
addOffer("I hope that my steaks will be ready soon. Please be a bit patient or have some other snacks first.");
|
||||
addGoodbye("A nice day to you! Always keep your fire burning!");
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class FishSoupMakerNPC implements ZoneConfigurator {
|
|||
@Override
|
||||
protected void createDialog() {
|
||||
//addGreeting();
|
||||
addHelp("I can cook a really tasty fish soup for you but if you are not into fish, I can suggest a good friend of mine to you, Old Mother Helena in Fado. She makes the best vegetable soups in whole Faiumoni!");
|
||||
addHelp("I can cook a really tasty fish soup for you but if you are not into fish, I can suggest a good friend of mine to you, Old Mother Helena in Fado. She makes the best vegetable soup in the whole of Faiumoni!");
|
||||
|
||||
addQuest("I don't have any quests for you, but I can offer you some fresh made fish soup for your travels.");
|
||||
addJob("I am a trained cook but specialized into soups. My most favourite soup is a fish soup but I also like normal ones...");
|
||||
|
|
|
|||
|
|
@ -63,11 +63,14 @@ public class OldFishermanNPC implements ZoneConfigurator {
|
|||
@Override
|
||||
protected void createDialog() {
|
||||
addGreeting("Ahoy!");
|
||||
addHelp("Harr my friend, my whole life long I was sitting in a boat, trying to catch some fish... The feeling you have when fishies hang on your rod is awesome! Did you ever try to catch some by yourself? You can ask my friend Santiago for help, he lives in a fisherhut somewhere in the city!");
|
||||
|
||||
addHelp("Harr my friend, my #whole #life long I was sitting in a boat, trying to catch some fish...");
|
||||
addReply("whole life","The feeling you have when fish hang on your rod is awesome! Did you ever try to catch some by #yourself?");
|
||||
addReply("yourself", "You can ask my friend Santiago for help, he lives in a hut somewhere in the city!");
|
||||
addQuest("Ahoy Matey! I don't have any tasks for you but others do!");
|
||||
addJob("I am a fisherman. For many, many years I went fishing every day. There have been dangerous storms I had to get over and some reeeeeally big fish which almost drown my ship, but of course I always was able to catch them! Hehe! I hope that I will be able to deliver some fish to the market one time...");
|
||||
addOffer("My fishing places on the sea are catched by some ugly storm I can't drive out at the moment. Sorry matey, I can't offer you anything at the moment...");
|
||||
addJob("I am a fisherman. For many, many years I went fishing every day. There have been dangerous storms I had to get through and some reeeeeally big fish which almost drown my ship, but of course I always was able to #catch them!");
|
||||
addReply("catch","Hehe! I hope that I will be able to deliver some fish to the market one time...");
|
||||
addOffer("My fishing places on the sea are caught in some ugly #storm so I can't venture out at the moment.");
|
||||
addReply("storm", "The huge storm nearly destroyed my boat! Sorry matey, I can't offer you anything at the moment...");
|
||||
addGoodbye("See you, matey! And be careful there on this slippy ground!");
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,17 +74,17 @@ public class RetiredTeacherNPC implements ZoneConfigurator {
|
|||
|
||||
@Override
|
||||
protected void createDialog() {
|
||||
addGreeting("Ohh a stranger found my hidden house, welcome!");
|
||||
addGreeting("Ohh, a stranger found my hidden house, welcome!");
|
||||
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 as though as I just stay in my save house the whole day long...");
|
||||
addOffer("Sorry, but I can't offer you anything... I have some mayor problems in my basement at the moment...");
|
||||
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 soon...");
|
||||
addGoodbye("Take care of you and please be fast with visiting me again, I'm scared alone!");
|
||||
addGoodbye("Take care of yourself and please return soon to visit me again, I'm scared alone!");
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
npc.setDescription("You see Ortiv Milquetoast. Although he has some kind of teacher aura around him, he seems to be quite scared and nervous.");
|
||||
npc.setDescription("You see Ortiv Milquetoast. Though he has some kind of teacher aura around him, he seems to be quite scared and nervous.");
|
||||
npc.setEntityClass("retiredteachernpc");
|
||||
npc.setPosition(15, 28);
|
||||
npc.setDirection(Direction.RIGHT);
|
||||
|
|
|
|||
|
|
@ -78,6 +78,8 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
|
||||
private void offerQuestStep() {
|
||||
final SpeakerNPC npc = npcs.get("Haunchy Meatoch");
|
||||
|
||||
// player says quest when he has not ever done the quest before (rejected or just new)
|
||||
npc.add(ConversationStates.ATTENDING,
|
||||
ConversationPhrases.QUEST_MESSAGES,
|
||||
new QuestNotStartedCondition(QUEST_SLOT),
|
||||
|
|
@ -93,7 +95,7 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
"Coal isn't easy to find. You normally can find it somewhere in the ground but perhaps you are lucky and find some in the old Semos Mine tunnels...",
|
||||
null);
|
||||
|
||||
|
||||
// player has completed the quest (doesn't happen here)
|
||||
npc.add(ConversationStates.ATTENDING,
|
||||
ConversationPhrases.QUEST_MESSAGES,
|
||||
new QuestCompletedCondition(QUEST_SLOT),
|
||||
|
|
@ -101,19 +103,21 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
"I can go on with grilling my tasty steaks now! Thank you!",
|
||||
null);
|
||||
|
||||
// player asks about quest which he has done already and he is allowed to repeat it
|
||||
npc.add(ConversationStates.ATTENDING,
|
||||
ConversationPhrases.QUEST_MESSAGES,
|
||||
new AndCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES), new QuestStateStartsWithCondition(QUEST_SLOT, "waiting;")),
|
||||
ConversationStates.QUEST_OFFERED,
|
||||
"The last coal you brought me is mostly gone again. Will you bring me some more?",
|
||||
null);
|
||||
|
||||
|
||||
// player asks about quest which he has done already but it is not time to repeat it
|
||||
npc.add(ConversationStates.ATTENDING,
|
||||
ConversationPhrases.QUEST_MESSAGES,
|
||||
new AndCondition(new NotCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES)), new QuestStateStartsWithCondition(QUEST_SLOT, "waiting;")),
|
||||
ConversationStates.ATTENDING,
|
||||
null,
|
||||
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES, "The coal amount behind my counter is still high enough. I will not need more for at least "));
|
||||
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES, "The coal amount behind my counter is still high enough. I will not need more for "));
|
||||
|
||||
// Player agrees to get the coal
|
||||
npc.add(ConversationStates.QUEST_OFFERED,
|
||||
|
|
@ -142,9 +146,10 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
triggers.add("stone coal");
|
||||
triggers.addAll(ConversationPhrases.QUEST_MESSAGES);
|
||||
|
||||
// player asks about quest or says coal when they are supposed to bring some coal and they have it
|
||||
npc.add(
|
||||
ConversationStates.ATTENDING, triggers,
|
||||
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("coal",10)),
|
||||
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("coal",25)),
|
||||
ConversationStates.ATTENDING,
|
||||
null,
|
||||
new MultipleActions(
|
||||
|
|
@ -164,17 +169,18 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
}
|
||||
}));
|
||||
|
||||
|
||||
// player asks about quest or says coal when they are supposed to bring some coal and they don't have it
|
||||
npc.add(
|
||||
ConversationStates.ATTENDING, triggers,
|
||||
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new NotCondition(new PlayerHasItemWithHimCondition("coal",10))),
|
||||
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new NotCondition(new PlayerHasItemWithHimCondition("coal",25))),
|
||||
ConversationStates.ATTENDING,
|
||||
"You don't have the coal amount which I need yet. Go and pick some more pieces up, please.",
|
||||
null);
|
||||
|
||||
|
||||
npc.add(
|
||||
ConversationStates.ATTENDING, triggers,
|
||||
new QuestNotInStateCondition(QUEST_SLOT, "start"),
|
||||
ConversationStates.ATTENDING,
|
||||
Arrays.asList("coal","stone coal"),
|
||||
new QuestNotInStateCondition(QUEST_SLOT,"start"),
|
||||
ConversationStates.ATTENDING,
|
||||
"Sometime you could do me a #favour ...", null);
|
||||
|
||||
|
|
@ -204,10 +210,10 @@ public class CoalForHaunchy extends AbstractQuest {
|
|||
res.add("He asked me to fetch him some pieces of coal but I don't have time to collect some.");
|
||||
}
|
||||
if (player.isQuestInState(QUEST_SLOT, "start") || isCompleted(player)) {
|
||||
res.add("The BBQ grill-heat is low and I promised Haunchy to help him out with 10 pieces of coal.");
|
||||
res.add("The BBQ grill-heat is low and I promised Haunchy to help him out with 25 pieces of coal.");
|
||||
}
|
||||
if (("start".equals(questState) && player.isEquipped("coal",10)) || isCompleted(player)) {
|
||||
res.add("I found 10 pieces of coal for the Haunchy and think he will be happy.");
|
||||
if (("start".equals(questState) && player.isEquipped("coal",25)) || isCompleted(player)) {
|
||||
res.add("I found 25 pieces of coal for the Haunchy and think he will be happy.");
|
||||
}
|
||||
if (isCompleted(player)) {
|
||||
if (isRepeatable(player)) {
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ public class FishSoup extends AbstractQuest {
|
|||
ConversationPhrases.GREETING_MESSAGES,
|
||||
new QuestNotStartedCondition(QUEST_SLOT),
|
||||
ConversationStates.INFORMATION_1,
|
||||
"Hello and welcome on Ados market! Are you intersted in something #tasty?",
|
||||
"Hello and welcome on Ados market! I have something really tasty and know what would #revive you.",
|
||||
null);
|
||||
|
||||
// player returns after finishing the quest (it is repeatable) after the
|
||||
|
|
@ -152,9 +152,9 @@ public class FishSoup extends AbstractQuest {
|
|||
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES , "Oh I am sorry, I have to wash my cooking pots first before making more soup for you. Please come back in")
|
||||
);
|
||||
|
||||
// player responds to word 'tasty'
|
||||
// player responds to word 'revive'
|
||||
npc.add(ConversationStates.INFORMATION_1,
|
||||
"tasty",
|
||||
"revive",
|
||||
new QuestNotStartedCondition(QUEST_SLOT),
|
||||
ConversationStates.QUEST_OFFERED,
|
||||
null,
|
||||
|
|
|
|||
|
|
@ -126,29 +126,29 @@ public class AwaitingPhase extends TPPQuest {
|
|||
|
||||
private void fillConversations() {
|
||||
//piper
|
||||
conversations.add("Hi Mayor. For what you called me here?");
|
||||
conversations.add("Good day, Mayor Chalmers. What did you call me here for?");
|
||||
//mayor
|
||||
conversations.add("Hello, very glad to see our respectable hero here. Who didnt hear about you, there is almost...");
|
||||
conversations.add("Hello, very glad to see our respectable hero here. Who hasn't heard about you, there is almost...");
|
||||
//piper
|
||||
conversations.add("Talk about your business to me, my time costs a much of moneys.");
|
||||
conversations.add("Please talk about your business to me, my time is precious.");
|
||||
//mayor
|
||||
conversations.add("... ok, what I talked about? Ah yes, our city have a little problem with #rats.");
|
||||
conversations.add("... ok, what was I saying? Ah yes, our city has a little problem with #rats.");
|
||||
//piper
|
||||
conversations.add("Again?");
|
||||
//mayor
|
||||
conversations.add("Yes, these animals are of course too stupid to remember a lesson they have a few time ago.");
|
||||
conversations.add("Yes, these animals are too stupid to remember a lesson they learnt only recently.");
|
||||
//piper
|
||||
conversations.add("No problem, if you are ready to pay.");
|
||||
conversations.add("I can help, if you are ready to pay.");
|
||||
//mayor
|
||||
conversations.add("City have no other way to eliminate this source of infections. I will pay to you.");
|
||||
conversations.add("Ados City has no other way to eliminate this nuisance. We will pay you.");
|
||||
//piper
|
||||
conversations.add("Do you know my usual price?");
|
||||
//mayor
|
||||
conversations.add("Yes, I have it written somewhere in my papers.");
|
||||
//piper
|
||||
conversations.add("Good. I will return for my reward soon, prepare it.");
|
||||
conversations.add("Good. I will return for my reward soon, please prepare it.");
|
||||
//mayor
|
||||
conversations.add("Dont worry, how can I break your trustworth to me and my city?");
|
||||
conversations.add("Don't worry, how can I break your trust in me and my city?");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -167,8 +167,8 @@ public class AwaitingPhase extends TPPQuest {
|
|||
private void setupDialog() {
|
||||
if(mayor.isTalking()) {
|
||||
mayor.say("Sorry, "+mayor.getAttending().getName()+
|
||||
" but i see that our city's saver here. I have to speak with him quickly."+
|
||||
" Please speak with me again after finish of our talking.");
|
||||
" but I see that our city's savoiur is here. I have to speak with him quickly."+
|
||||
" Please speak with me again after we finish talking.");
|
||||
mayor.setCurrentState(ConversationStates.IDLE);
|
||||
};
|
||||
mayor.setCurrentState(ConversationStates.ATTENDING);
|
||||
|
|
@ -205,7 +205,7 @@ public class AwaitingPhase extends TPPQuest {
|
|||
return;
|
||||
};
|
||||
TurnNotifier.get().dontNotify(this);
|
||||
TurnNotifier.get().notifyInSeconds(4, this);
|
||||
TurnNotifier.get().notifyInSeconds(8, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -253,8 +253,8 @@ public class AwaitingPhase extends TPPQuest {
|
|||
public String getSwitchingToNextPhaseMessage() {
|
||||
final String text =
|
||||
"Mayor Chalmers shouts: Thankfully, all the #rats are gone now, " +
|
||||
"the Pied Piper hypnotized them and led them away to dungeons. "+
|
||||
"Those of you, who helped Ados City with the rats problem, "+
|
||||
"the Pied Piper hypnotized them and led them away to the dungeons. "+
|
||||
"Those of you who helped Ados City with the rats problem "+
|
||||
"can get your #reward now.";
|
||||
return text;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ public class InvasionPhase extends TPPQuest {
|
|||
*/
|
||||
public String getSwitchingToNextPhaseMessage() {
|
||||
final String text =
|
||||
"Mayor Chalmers shouts: Suddenly, #rats have captured city, "+
|
||||
"Mayor Chalmers shouts: Suddenly, #rats have captured the city, "+
|
||||
//"Mayor Chalmers shouts: The #rats left as suddenly as they arrived. "+
|
||||
//"Perhaps they have returned to the sewers. "+
|
||||
"I now need to call the Pied Piper, a rat exterminator. "+
|
||||
|
|
@ -202,7 +202,7 @@ public class InvasionPhase extends TPPQuest {
|
|||
*/
|
||||
protected String ratsProblem() {
|
||||
final String text = "Mayor Chalmers shouts: Ados City is being invaded by #rats!"+
|
||||
" Anyone who will help to clean up city, will be rewarded!";
|
||||
" Anyone who will help to clean up the city, will be rewarded!";
|
||||
return(text);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.87.5.jar" download="eager" main="true" />
|
||||
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.88.jar" download="eager" main="true" />
|
||||
</resources>
|
||||
<application-desc/>
|
||||
</jnlp>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<?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="128" height="128" tilewidth="32" tileheight="32">
|
||||
<?xml version="1.0"?>
|
||||
<map version="0.99b" orientation="orthogonal" width="128" height="128" tilewidth="32" tileheight="32">
|
||||
<tileset name="../../tileset/ground/ground.png" firstgid="1" tilewidth="32" tileheight="32">
|
||||
<image source="../../tileset/ground/ground.png" trans="ffffff"/>
|
||||
</tileset>
|
||||
|
|
@ -141,27 +140,27 @@
|
|||
</tileset>
|
||||
<layer name="0_floor" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="1_terrain" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="2_object" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3cSW7UQAAF0KayZb4BC+4ARAIiFgEhIUCCCyTMs4QgCbAA9gwHAITEuOAuHIkq2VFaoTvpKS676z3pq4fEsuNvl2O3k16vvY4tDH6e2/EWLQsAsLOlkHsJaFp/5/oH2FtrcZxdzzzWvglVtkvHgHGPA7cdN8ayW/9P6q89iI/3Yx7FPG7pOl4N+p9E7v1/llbn6GcBmDfnphij07SDpr9l3O+cC6HKLKwE20DbrQ05xxvFvfr7HobqXCTZPA9Jva/ovvUG9T+qm3HaO3WSG/Hxrs4747muOut12Mqk9N9ev3fp5m3YCvMn9f9Lt8Vqsv8z9Xw2QnVM2BhxvrM6TySf1P1mxqX/6f0NVT5Zl8U5oXMoxp8wPG1yKlRhvi32dbzed89Ren9xzP4nuS+MvIZ1bN8vx7T77KVQhW4a1H+6FnB6xE6vhCo060vfOv9ZP5/l9cKzOoWZ+2G/Kpr+y6b/sumfYXJuG5fjvK9OeC53PlRhOl8zrcPtn+OP+7n+xVBlk+vAk5mHY4PuR5Ou33yP+Ry2Xk8qjRuzHDvc19Mtadv5pv9iTdu9vlmuf4dfti1AkS7a96lN8/8gAAAAaM71ff+/d23Ae01ZyjhvAAAAAAAAgK7biHkR8zLmVeZloXnvYt7HfIj5mHlZAAAA2Nn+hV7vQMzBmEML1euUNjrpb4b3xOHY95GYoy3tffs2Snnavo0CAAAAAAAAADTJ/TS4n4Z+XboPlL1hTAAAAACA9nva9/xZtqUgF/2XTf9l03/Z9A8AAADAOFxPKpv+y6b/sum/bPovm/7Lpv98/gFXIDJmAAABAA==
|
||||
H4sIAAAAAAAAAO3c22rUQBwH4HX21vMbeOE7qAW1eFGlICroC7SezyDaLnih3gs+gIrg8cJ38ZHMkCwb1l2750l2vg/+bDZtSJrfzKTJTtvpNNep7ujl1E436FgAgP/bDKmPgFWrZy5/gOXaK8bZ/cRj7dtQ1rB4DZj2OnDPdWMqB+X/vPra4+L1UVFPi3rW0HO8G+Q/i9T9f5F21+hnAVg3l+YYo+O2o7a/a9xvnSuhrEXYCdpA0+2NucebxMPq+56E8l4k6t+HxNx3ZN94o/Kf1J1i2/tVRbeL1wcyb41XsmqtN2FQs5J/c/06IJt3YVCsn5j/T9lma5X5X6j20wvlNaE34X4XdZ9IOjH7fk1L/vP7E8r66Fxm54zMIRu/w/hqknOhLNbbRi3j/dqco7h+Y8r8Z5kXRlrjMtb38zFvn70ayqKdRuUfnwWcnzDT66EsVutz7Zz/qJYX+bzwokxh4b7rV1mTf97knzf5M07KtnGt2PeNGe/lLoeymM+XROdw+HP8aT/X3w5l9XkOPJt1uDbIfjLx+c23oj6FwftZxXFjkWOHeT3tEtvOV/lna97s5c1W9Tv8lrYAWdrW96nM8/8gAAAAWJ1bh/5dd3PEulXZTLhvAAAAAAAAgLbr1ZZfJzsKUnlfW/6Q7CgAAACYxOFup3OkqKNFHeuW72M10Vl/M7wUx4u8TxR1sqG5D7dR8tP0NgoAAAAAAAAAsErm02A+DXVtmgfKchgTAAAAAKD5XtSWXyY7ClKRf97knzf5503+AAAAAEzD86S8yT9v8s+b/PMm/7zJP2/yT+cvx4DMrgAAAQA=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="3_roof" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3cSY7TQBQAUCfNPEggEGxgAxvGBeMZ2MMOWsAROASDxDUQ1+AIfQCWjEdght9qRe027u4k7aHsek/6SitxbKt+pVOu+k5RAMCmD9Oi+Bjxadr3mdRL/fyG7nO065eIr4m2b+rnx84uRd4uR1xpKX/HYr/Ha/Y9e3671+nG1Wj7axHX5WB0nkdOX/ac1/VzeFE5j9lz5Xit/7XqRrTvzUob1+Wh7/7C/Bb57r4V29yW21FZ5Lv7Tmxzt4P8X4hjXFzyOGfifWf1UYDBqhvzM16v9phn1yEA3Wt6/v9c7Of8kvs6Ee876f9+o3abAzb/P051872p2uv4kf/NM99bHXc3NeZ2/de/ruZ76U957OYzlx9jN1Jj/S8/xu/dW5tuPq4l2v4p1J+xs7brf0lbKmNI1y/QnZ3qsn0Gx+9t5PhNYnm2/je/Za65ulgT2sv6L+1yD0DerAmRKmPP5VXncPqaj63WE7insxupzOEA3Wn6vokm1mus/8IwNL32pw5gWIwbaVp5LDKPh7Hdo21iVb9cWAr3fdxb8PhPpvXB4szx580cP+SrrXv6AABIx/0Y4z3YZZw3zzYAAACrk42Y/U1e3leCvMh/3t5NtgZ5kf+8yX/e5D9vxn95k/+8PZtsDQCG4du0KL5H/KjEz4hfaoJG73fk+E/E30oUK0UxWen77DaU+6h+2axp5HglYl8l9kccSCT/5T6aUr8cg4PRlociDlfiSMTRjtv5VBzvdM0xy300pX5JN8p9tI9+CQAAQPseb/P7X+vx1DxgFvwGHAAAwHLU0+RNPU3e6upp1IHmo66eZgh1oLRnCHWgtCelOlAAAAAAAAAAAAAAAAAAAACA1PwDd5RNkgAAAQA=
|
||||
H4sIAAAAAAAAAO3cSW4TQRQA0LbDPEggEGxgAxvGBeMZ2MMOIuAUiAMwSBG3QFyDI+QALBmPwAw/iqw0TSfx0EO56z3pK5Fjd5fql+Pqqt8uCgDY8n5cFB8iPo77bkm91Nu37D5Fv36O+JJo/6bePnZ2IfJ2MeJSS/k7Esc9WnPsyePb/Z1uXI6+vxJxVQ4G51nk9EXPed1ow/NKOyaPlWPN+GvVtejf65U+rstD3+OF6c3y2X0jnnNTbgdlls/uW/Gc2x3k/1yc4/yc5zkVrzttjAIsrbo5P8P1csE8uw4B6F7T6/9n4jhn5zzWsXjdcf/3G7XbGrD1/2GqW+9N1aLzR/43zXpvdd7d1Jzb9V//ulrvpT/luZv3XH7M3UiN/b/8mL93b3289XM90f5Pof6MnbVd/0vaUplDun6B7uxUl+09OHxvIsevE8uz/b/pzXPN1cWe0CL7v7TLPQB5sydEqsw951ddw+lrPbZaT+Cezm6ksoYDdKfp+yaa2K+x/wvLoem9P3UAy8W8kaaV5yLTuB/Pe7BNrBqXM0vhvo87M57/0bg+mJ01/rxZ44d8tXVPHwAA6bgbc7x7u8zzpnkOAADA6mgzJr+Tl3eVIC/yn7e3o3+DvMh/3uQ/b/KfN/O/vMl/3tYinkQ8jXjVc1sAmN7XcVF8i/heiR8RP9UEDd6vyPHviD+VKFaKYrTSd+s2lceocdmsceR4JWJPJfZG7Esk/+UxmtK4HIL90ZcHIg5W4lDE4Y77+USc72TNOctjNKVxSTfKY7SPcQkAAED7Hm7z/V8b8dg6YBZ8BxwAAMB81NPkTT1N3urqadSB5qOunmYZ6kBpzzLUgdKelOpAAQAAAAAAAAAAAAAAAAAAAFLzF/cNxJoAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="4_roof_add" width="128" height="128">
|
||||
<data encoding="base64" compression="gzip">
|
||||
H4sIAAAAAAAAAO3azQnCMBgG4NbOIPTmCl3B0qu6jz9Xh9CL4BoOZ8RCfyhSL0qb54GXJLdAQvgSkiQAAAAAAAAAAAAA49wW3RYAAAAAmIf7wJvfxTsgAAAw0ibcH3YhW/cIgJ+5OnMBgIko67qlWjT9Ui0Tjaq35u19AACM9/rbM/S/BwAAAAAA2tbpO0BcVmk3AADM26MX4lKEmv9cp1D/R2cfcgg5hpz+PBcAAAAAAACmYZkN94lDnjXrntetfRCXPPs8BgAAAAAAAAAAAAAAAAAAAAAAAAAAAPjGExYgLsYAAAEA
|
||||
H4sIAAAAAAAAAO3aSwrCMBQF0H7WIHTmFroFS6fqfgSnLkIngttwcVYs9EMpcaK0OQcueZ0VEsJLSJIAAAAAAAAAAAAAhLlnwxEAAAAAWIfHxJ3f1T0gAAAQaN+cH45NDs4RAD9zs+cCAAtRtX1LnXV1pZeJRj2a8/46AADCvd/2TL3vAQAAAACAvl36CRCXbToMAADr9hyFuJRNz39pU+r/o3Pq1ee//QUAAAAAAABLssmna+JQ5N28F+1oHcSlyOe/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAL7xAixsQZcAAAEA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="objects" width="128" height="128">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue