Version 0.6.6 . Merged from local r48 .

git-svn-id: https://andors-trail.googlecode.com/svn/trunk@20 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
oskar.wiksten
2010-11-29 21:48:07 +00:00
parent b4ef49df1e
commit a600d523a6
105 changed files with 4436 additions and 654 deletions

View File

@@ -3,8 +3,8 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gpl.rpg.AndorsTrail"
android:versionCode="10"
android:versionName="0.6.4"
android:versionCode="13"
android:versionName="0.6.6"
android:installLocation="auto"
>
<uses-sdk
@@ -34,6 +34,7 @@
<activity android:name=".activity.ShopActivity" />
<activity android:name=".activity.AboutActivity" />
<activity android:name=".activity.LoadingActivity" />
<activity android:name=".activity.Preferences" />
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -34,32 +34,39 @@
/>
</LinearLayout>
<TextView
android:id="@+id/conversation_text"
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/conversation_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
/>
</ScrollView>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
style="@android:style/ButtonBar"
>
<Button
android:id="@+id/conversation_reply1"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="Reply 1"
android:text="Reply with very long text that does not fit on the button"
/>
<Button
android:id="@+id/conversation_reply2"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_height="wrap_content"
android:text="Reply 2"
/>
@@ -67,7 +74,7 @@
android:id="@+id/conversation_reply3"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_height="wrap_content"
android:text="Reply 3"
/>
</LinearLayout>

View File

@@ -75,7 +75,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="right|center_vertical"
android:gravity="right|center_vertical"
>
<ImageView

View File

@@ -39,6 +39,15 @@
android:maxLines="1"
/>
</LinearLayout>
<TextView
android:id="@+id/startscreen_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:text="v0.0.1"
/>
</RelativeLayout>
<Button
@@ -52,6 +61,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<Button
android:id="@+id/startscreen_newgame"

View File

@@ -2,18 +2,16 @@
<resources>
<string name="conversationlist_debug">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{debug||||||debug2|dialog2||||debug1|||||||||};
{debug1|Welcome adventurer!|dialog2|||Trade|S||||Bye|X||||Debug|debug3||||};
{debug2|Welcome back!||||Trade|S||||Bye|X||||Debug|debug3||||};
{debug3|Debug 3\nTest||5|5|Iron sword*2|debug||sword1|2|Iron sword*1|debug||sword1|1|Iron longsword*1|debug||sword2|1|};
{debug1|Welcome adventurer!|dialog2|||Trade items long text|S||||Bye|X||||Debug|debug3||||};
{debug2|Welcome back!||||Trade items very very long text|S||||Bye|X||||Debug|debug3||||};
{debug3|Debug 3\nTest||5|5|Iron sword*2|debug||sword1|2|Iron sword*1|debug||sword1|1|Fight|F||||};
{test1|Hello, test message||||Bye|X||||Shop|S||||Keytest|testmain||||};
{testmain|Keytest main||||Back|test1||||Add key|test2||||I have it!|test3|testkey|||};
{test2|Key added!|testkey|||Ok|testmain||||||||||||||};
{test3|This is only reachable if you have testkey||||Back|testmain||||||||||||||};
</string>
@@ -23,21 +21,24 @@
{mikhail_gamestart|Oh good, you are awake.||||Next|mikhail_visited||||||||||||||};
{mikhail_visited|I can\'t seem to find your brother anywhere. He hasn\'t been back since he left yesterday.|mikhail_visited|||Next|mikhail3||||||||||||||};
{mikhail3|Nevermind, he will probably be back soon.||||Next|mikhail_default||||||||||||||};
{mikhail_default|Anything else I can help you with?||||Bread|mikhail_bread_select||||Rats|mikhail_rats_select||||Bye|X||||};
{mikhail_default|Anything else I can help you with?||||Tasks|mikhail_tasks||||Brother|mikhail_andor1||||Bye|X||||};
{mikhail_tasks|Oh yes, there were some things I need help with.||||Bread|mikhail_bread_select||||Rats|mikhail_rats_select||||Back|mikhail_default||||};
{mikhail_andor1|As I said, Andor went out yesterday and hasn\'t been back since. I\'m starting to worry about him. Please go look for your brother, he said he would only be out a short while.||||Next|mikhail_andor2||||||||||||||};
{mikhail_andor2|Maybe he went into that supply cave again and got stuck. Or maybe he\'s in Leta\'s basement training with that wooden sword again. Please go look for him in town.||||Back|mikhail_default||||||||||||||};
{mikhail_bread_select||||||mikhail_bread_complete2|qmikhail_bread_complete||||mikhail_bread_continue|qmikhail_bread||||mikhail_bread_start||||};
{mikhail_bread_start|Oh, I almost forgot. If you have time, please stop by Mara at the town hall and buy me some more bread.|qmikhail_bread|||I already have some bread|mikhail_bread_complete||bread|1|Sure|mikhail_default|||||||||};
{mikhail_bread_continue|Did you get the bread from Mara at the town hall that I asked for?||||Yes, I got it|mikhail_bread_complete||bread|1|No, not yet|mikhail_default|||||||||};
{mikhail_bread_complete|Thanks a lot, now I can get my breakfast. Here, take these coins for your help.|qmikhail_bread_complete||20|Back|mikhail_default||||Bye|X|||||||||};
{mikhail_bread_complete2|Thanks for the bread earlier.||||You\'re welcome|mikhail_default||||Bye|X|||||||||};
{mikhail_bread_start|Oh, I almost forgot. If you have time, please stop by Mara at the town hall and buy me some more bread.|qmikhail_bread|||Ok|mikhail_default||||||||||||||};
{mikhail_bread_continue|Did you get the bread from Mara at the town hall that I asked for?||||Done|mikhail_bread_complete||bread|1|Not yet|mikhail_default|||||||||};
{mikhail_bread_complete|Thanks a lot, now I can get my breakfast. Here, take these coins for your help.|qmikhail_bread_complete||20|Back|mikhail_default||||||||||||||};
{mikhail_bread_complete2|Thanks for the bread earlier.||||You\'re welcome|mikhail_default||||||||||||||};
{mikhail_rats_select||||||mikhail_rats_complete2|qmikhail_rats_complete||||mikhail_rats_continue|qmikhail_rats||||mikhail_rats_start||||};
{mikhail_rats_start|I saw some rats out back in our garden earlier. Could you please go check our garden if they are still there? Please kill any rats that you see.|qmikhail_rats|||I already killed them|mikhail_rats_complete||tail_trainingrat|2|Sure|mikhail_rats_start2|||||||||};
{mikhail_rats_start|I saw some rats out back in our garden earlier. Could you please go check our garden if they are still there? Please kill any rats that you see.|qmikhail_rats|||Done|mikhail_rats_complete||tail_trainingrat|2|Sure|mikhail_rats_start2|||||||||};
{mikhail_rats_start2|If you get hurt by the rats, come back here and rest in your bed. That way you can regain your strength.||||Next|mikhail_rats_start3||||||||||||||};
{mikhail_rats_start3|Also, don\'t forget to check your inventory. You probably still have that old ring i gave you. Make sure you wear it.||||Ok|mikhail_default||||||||||||||};
{mikhail_rats_continue|Did you kill those rats in our garden?||||Yes|mikhail_rats_complete||tail_trainingrat|2|No, not yet|mikhail_default|||||||||};
{mikhail_rats_complete|Oh you did? Wow, thanks a lot for your help!\n\nIf you got hurt, use your bed over there to rest. That way you can regain your strength.|qmikhail_rats_complete|20||Back|mikhail_default||||Bye|X|||||||||};
{mikhail_rats_complete2|Thanks for your help with the rats earlier.\n\nIf you got hurt, use your bed over there to rest. That way you can regain your strength.||||You\'re welcome|mikhail_default||||Bye|X|||||||||};
{mikhail_rats_start3|Also, don\'t forget to check your inventory. You probably still have that old ring I gave you. Make sure you wear it.||||Ok|mikhail_default||||||||||||||};
{mikhail_rats_continue|Did you kill those two rats in our garden?||||Yes|mikhail_rats_complete||tail_trainingrat|2|Not yet|mikhail_default|||||||||};
{mikhail_rats_complete|Oh you did? Wow, thanks a lot for your help!\n\nIf you got hurt, use your bed over there to rest. That way you can regain your strength.|qmikhail_rats_complete|20||Back|mikhail_default||||||||||||||};
{mikhail_rats_complete2|Thanks for your help with the rats earlier.\n\nIf you got hurt, use your bed over there to rest. That way you can regain your strength.||||You\'re welcome|mikhail_default||||||||||||||};
</string>
<string name="conversationlist_crossglen_leta">
@@ -50,25 +51,74 @@
{leta_oromir_complete|Hiding is he? That\'s not really the way forward. I\'ll go let him know who\'s the boss around here.\nThanks for letting me know though.|qleta_complete|30||Bye|X||||||||||||||};
{leta_oromir_complete2|Thanks for telling me about Oromir earlier. I will go get him in just a minute.||||Bye|X||||||||||||||};
{oromir1|Oh you startled me.\nHello.||||Hello|oromir2||||||||||||||};
{oromir2|I\'m hiding here from my wife Leta. She is always getting angry at me for not helping out on the farm. Please don\'t tell her that i\'m here.|oromir|||Sure|X||||||||||||||};
{oromir2|I\'m hiding here from my wife Leta. She is always getting angry at me for not helping out on the farm. Please don\'t tell her that I\'m here.|oromir|||Sure|X||||||||||||||};
</string>
<string name="conversationlist_crossglen">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{audir1|Welcome to my shop!\n\nPlease browse my selection of fine wares.||||Shop|S||||Bye|X|||||||||};
{arambold1|Oh my, will I ever get any sleep with those drunkards singing like that?\n\nSomeone should do something about them.||||Can I rest here?|arambold2||||Trade|S||||Bye|X||||};
{arambold1|Oh my, will I ever get any sleep with those drunkards singing like that?\n\nSomeone should do something about them.||||Rest|arambold2||||Trade|S||||Bye|X||||};
{arambold2|Sure kid, you may rest here.\n\nPick any bed you want.||||Thanks, bye|X||||||||||||||};
{tharal1|Embrace the one true god||||Trade|S||||Bye|X|||||||||};
{drunk1|Drink drink drink, drink some more.\nDrink drink drink \'til you\'re on the floor.\n\nHey kid, wanna join us in our drinking game?||||No thanks|X||||||||||||||};
{mara1|Never mind those drunken fellas, they\'re always causing trouble.\n\nWant something to eat?||||Trade|S||||Bye|X|||||||||};
{gruil1|Psst, hey.\n\nWanna trade?||||Trade|S||||Bye|X|||||||||};
{leonid1|Begone, peasant.||||Bye|X||||||||||||||};
{farm1|Please do not disturb me, I have work to do.||||Bye|X||||||||||||||};
{farm2|What?! Can\'t you see i\'m busy? Go bother someone else.||||Bye|X||||||||||||||};
{mara_default|Never mind those drunken fellas, they\'re always causing trouble.\n\nWant something to eat?||||Trade|S||||Bye|X|||||||||};
{mara1||||||mara_thanks|qodair_complete||||mara_default|||||||||};
{mara_thanks|I heard you helped Odair clean out that old supply cave. Thanks a lot, we\'ll start using it soon.||||My pleasure|mara_default||||||||||||||};
{farm1|Please do not disturb me, I have work to do.||||Brother|farm_andor||||Bye|X|||||||||};
{farm2|What?! Can\'t you see I\'m busy? Go bother someone else.||||Brother|farm_andor||||Bye|X|||||||||};
{farm_andor|Andor? No, I haven\'t seen him around lately.||||Bye|X||||||||||||||};
{snakemaster|Well well, what have we here? A visitor, how nice. I\'m impressed you got this far through all my minions.\n\nNow prepare to die, puny creature.||||Fight!|F||||||||||||||};
{haunt|Oh mortal, free me from this cursed world!||||Leave|F||||||||||||||};
</string>
<string name="conversationlist_crossglen_tharal">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{tharal1|Walk in the glow of the shadow, my child.||||Trade|S||||Bonemeal|tharal_bonemeal_select|qleonid_bonemeal|||Bye|X||||};
{tharal_bonemeal_select||||||tharal_bonemeal4|qtharal_complete||||tharal_bonemeal1|||||||||};
{tharal_bonemeal1|Bonemeal? We shouldn\'t talk about that. It\'s not allowed anymore. Issued by Lord Geomyr.||||Please?|tharal_bonemeal2_1||||Bye|X|||||||||};
{tharal_bonemeal2_1|No, we really shouldn\'t talk about that.||||Oh come on|tharal_bonemeal2||||Bye|X|||||||||};
{tharal_bonemeal2|Well if you really are that persistent. Bring me 5 insect wings that I can use for making potions and maybe we can talk more.||||I have it|tharal_bonemeal3||insectwing|5|Ok|X|||||||||};
{tharal_bonemeal3|Thanks kid. I knew I could count on you.|qtharal_complete|||Next|tharal_bonemeal4||||||||||||||};
{tharal_bonemeal4|Oh yes, bonemeal. Mixed with the right components it can be one of the most effective healing agents around.||||Next|tharal_bonemeal5||||||||||||||};
{tharal_bonemeal5|We used to use it extensively before. But now that bastard Lord Geomyr has banned all use of it.||||Next|tharal_bonemeal6||||||||||||||};
{tharal_bonemeal6|How am I supposed to heal people now? Using regular healing potions? Bah, they\'re so ineffective.||||Next|tharal_bonemeal7||||||||||||||};
{tharal_bonemeal7|I know someone that still has a supply of Bonemeal if you are interested. Go talk to Thoronir, a fellow priest in Fallhaven. Tell him my password \'Glow of the shadow\'.||||Thanks, bye|X||||||||||||||};
</string>
<string name="conversationlist_crossglen_gruil">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{gruil1|Psst, hey.\n\nWanna trade?||||Trade|S||||Brother|gruil_select|qleonid_andor|||Bye|X||||};
{gruil_select||||||gruil_return|qgruil_andor_complete||||gruil2|||||||||};
{gruil2|Your brother? Oh you mean Andor? I might know something, but that information will cost you. Bring me a poison gland from one of those poisonous snakes and maybe I\'ll tell you.|qgruil_andor|||I have it|gruil_complete||gland|1|Ok, bye|X|||||||||};
{gruil_complete|Thanks a lot kid. This will do just fine. |qgruil_andor_complete|||Next|gruil_andor1||||||||||||||};
{gruil_return|Look kid, I already told you.||||Next|gruil_andor1||||||||||||||};
{gruil_andor1|I talked to him yesterday. He asked if I knew someone called Umar or something like that. I have no idea who he was talking about.||||Next|gruil_andor2||||||||||||||};
{gruil_andor2|He seemed really upset about something and left in a hurry. Something about the Thieves Guild in Fallhaven.||||Next|gruil_andor3||||||||||||||};
{gruil_andor3|That\'s all I know. Maybe you should ask around in Fallhaven. Look for my friend Gaela, he probably knows more.||||Bye|X||||||||||||||};
</string>
<string name="conversationlist_crossglen_leonid">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{leonid1|Hello kid. You\'re Mikhail\'s son aren\'t you? With that brother of yours.\n\nI\'m Leonid, steward of Crossglen village.||||Brother|leonid_andor||||Crossglen|leonid_crossglen||||Bye|leonid_bye||||};
{leonid_andor|Your brother? No, I haven\'t seen him here today. I think I saw him in here yesterday talking to Gruil. Maybe he knows more?|qleonid_andor|||Thanks|leonid_continue||||Bye|leonid_bye|||||||||};
{leonid_continue|Anything else I can help you with?||||Brother|leonid_andor||||Crossglen|leonid_crossglen||||Bye|leonid_bye||||};
{leonid_crossglen|As you know, this is Crossglen village. Mostly a farming community. ||||Next|leonid_crossglen1||||||||||||||};
{leonid_crossglen1|We have Audir with his smithy to the southwest, Leta and her husband\'s cabin to the west, this town hall here and your father\'s cabin to the northwest.||||Next|leonid_crossglen2||||||||||||||};
{leonid_crossglen2|That\'s pretty much it. We try to live a peaceful life.||||Recent activity|leonid_crossglen3||||Back|leonid_continue|||||||||};
{leonid_crossglen3|There were some recent disturbances some weeks ago that you may have noticed. Some villagers got into a fight over the new decree from Lord Geomyr.||||Next|leonid_crossglen4||||||||||||||};
{leonid_crossglen4|Lord Geomyr issued a statement regarding the unlawful use of Bonemeal as healing substance. Some villagers argued that we should oppose Lord Geomyr\'s word and still use it ourselves.|qleonid_bonemeal|||Next|leonid_crossglen4_1||||||||||||||};
{leonid_crossglen4_1|Tharal, our priest, was particularly upset and suggested we do something about Lord Geomyr.||||Next|leonid_crossglen5||||||||||||||};
{leonid_crossglen5|Other villagers argued that we should follow Lord Geomyr\'s wish.\n\nPersonally, I haven\'t decided what my thoughts are.||||Next|leonid_crossglen6||||||||||||||};
{leonid_crossglen6|On one hand, Lord Geomyr supports Crossglen with a lot of protection. *points to the soldiers in the hall*||||Next|leonid_crossglen7||||||||||||||};
{leonid_crossglen7|But on the other hand, the tax and the recent changes of what\'s allowed and not are really hitting hard on Crossglen.||||Next|leonid_crossglen8||||||||||||||};
{leonid_crossglen8|Someone should go to castle Geomyr and talk to the steward about our situation here in Crossglen.|qleonid_crossglen|||Next|leonid_crossglen9||||||||||||||};
{leonid_crossglen9|In the meantime, we\'ve banned all use of Bonemeal as healing substance.||||Back|leonid_continue||||Bye|leonid_bye|||||||||};
{leonid_bye|Shadow be with you.||||Exit|X||||||||||||||};
</string>
<string name="conversationlist_crossglen_odair">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{odair1|Oh, it\'s you. You with that brother of yours. Always causing trouble.||||Next|odair_select||||||||||||||};
{odair_select||||||odair_complete2|qodair_complete||||odair_continue|qodair||||odair2||||};
@@ -80,11 +130,249 @@
{odair_continue|Did you kill that large rat in the cave west of here?||||Yes|odair_complete||tail_caverat|1|What?|odair5||||Not yet|odair_cowards||||};
{odair_complete|Thanks a lot for you help kid! Maybe you and that brother of yours aren\'t as cowardly as I thought. Here, take these coins for your help.|qodair_complete|30|20|Thanks|X||||||||||||||};
{odair_complete2|Thanks a lot for your help earlier. Now we might start using that cave as our old supply cave again.||||Bye|X||||||||||||||};
</string>
<string name="conversationlist_jan">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{jan1|TODO||||Bye|X||||||||||||||};
{jan_start_select||||||jan_complete2|qjan_complete||||jan_return|qjan||||jan_default||||};
{jan_default|Hello kid. Please leave me to my mourning.||||Mourning|jan_default2||||Ok, bye|X|||||||||};
{jan_default2|Oh, it\'s so sad. I really don\'t want to talk about it.||||Please do|jan_default3||||Ok, bye|X|||||||||};
{jan_default3|Well, I guess it\'s ok to tell you. You seem to be a nice enough kid.||||Next|jan_default4||||||||||||||};
{jan_default4|Me, my friend Gandir and his friend Irogotu were down here digging this hole. We had heard there was a hidden treasure down here.||||Next|jan_default5||||||||||||||};
{jan_default5|We started digging and finally broke through to the cave system below. That\'s when we discovered them. The critters and bugs.||||Next|jan_default6||||||||||||||};
{jan_default6|Oh those critters. Damn bastards. Nearly killed me they did.\n\nMe and Gandir told Irogotu that we should abort the digging and leave while we still could.||||Next|jan_default7||||||||||||||};
{jan_default7|But Irogotu wanted to continue deeper into the dungeon. He and Gandir got into an argument and started fighting.||||Next|jan_default8||||||||||||||};
{jan_default8|That\'s when it happened.\n\n*sob*\n\nOh what have we done?||||Next|jan_default9||||||||||||||};
{jan_default9|Irogotu killed Gandir with his bare hands. You could see the fire in his eyes. He almost seemed to enjoy it.||||Next|jan_default10||||||||||||||};
{jan_default10|I fled and haven\'t dared go back down there because of the critters and Irogotu himself.||||Next|jan_default11||||||||||||||};
{jan_default11|Oh that damn Irogotu. If only I could get to him. I\'d show him one thing and another.||||Next|jan_default11_1|!qjan|||Next|jan_default13|qjan||||||||};
{jan_default11_1|Do you think you could help me?||||I could help|jan_default12||||Bye|X|||||||||};
{jan_default12|Really? You think you could help? Hm, maybe you could. Beware of those bugs though, they\'re really tough bastards.|qjan|||Next|jan_default13||||||||||||||};
{jan_default13|If you really want to help, go find Irogotu down in the cave, and get me back Gandir\'s ring.||||Sure|jan_default14||||Background|jan_background||||Bye|X||||};
{jan_default14|Return to me when you are done. Bring me Gandir\'s ring from Irogotu down in the cave.||||Ok, bye|X||||||||||||||};
{jan_return|Hello again kid. Did you find Irogotu down in the cave?||||Not yet|jan_default14||||Background|jan_background||||Yes|jan_complete||ring_gandir|1|};
{jan_background|Didn\'t you listen the first time I told you the story? Do I really have to tell you the story one more time?||||Yes|jan_default3||||No|jan_default14|||||||||};
{jan_complete2|Thanks for dealing with Irogotu earlier! I am forever in debt to you.||||Bye|X||||||||||||||};
{jan_complete|Wait, what? You actually went down there and returned alive? How did you manage that? Wow, I almost died going into that cave.\n\nOh thank you so much for bringing me back Gandir\'s ring! Now I can have something to remember him by.|qjan_complete|150||Bye|X||||||||||||||};
{irogotu|Well hello there. Another adventurer. This is MY CAVE. The treasure will be MINE!||||Gandir|irogotu1|qjan|||Bye|X|||||||||};
{irogotu1|That whelp Gandir? He was in my way. I merely used him as a tool to dig deeper into the cave.||||Next|irogotu2||||||||||||||};
{irogotu2|Besides, I never really liked him anyway.||||Ring|irogotu3||||||||||||||};
{irogotu3|NO! You cannot have it. It\'s mine! And what are you anyway kid, coming down here to disturb me?!||||Ring|irogotu4||||||||||||||};
{irogotu4|No. If you want it you would have to take if from me by force, and I should tell you that my powers are great. Besides, you probably wouldn\'t dare fight me anyway.||||Fight!|F||||Leave|X|||||||||};
</string>
<string name="conversationlist_fallhaven">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{fallhaven_citizen1|Hello there. Nice weather ain\'t it?||||Brother|fallhaven_andor_1||||Bye|X|||||||||};
{fallhaven_citizen2|Hello. Anything you want from me?||||Brother|fallhaven_andor_2||||Bye|X|||||||||};
{fallhaven_citizen3|Hi. Can I help you?||||Brother|fallhaven_andor_3||||Bye|X|||||||||};
{fallhaven_citizen4|You\'re that kid from Crossglen village right?||||Brother|fallhaven_andor_4||||Bye|X|||||||||};
{fallhaven_citizen5|Out of the way, peasant.||||Bye|X||||||||||||||};
{fallhaven_citizen6|Good day to you.||||Brother|fallhaven_andor_6||||Bye|X|||||||||};
{fallhaven_andor_1|No, sorry. I haven\'t seen anyone by that description.||||Bye|X||||||||||||||};
{fallhaven_andor_2|Some other kid you say? Hm, let me think.||||Next|fallhaven_andor_1||||||||||||||};
{fallhaven_andor_3|Hm, I might have seen someone matching that description a few days ago. Can\'t remember where though.||||Bye|X||||||||||||||};
{fallhaven_andor_4|Oh yes, there was another kid from Crossglen village here a few days ago. Not sure he matched your description though.||||Next|fallhaven_andor_4_1||||Bye|X|||||||||};
{fallhaven_andor_4_1|There were some shady looking people following him around. Didn\'t see any more than that.||||Bye|X||||||||||||||};
{fallhaven_andor_6|Nope. Haven\'t seen him.||||Bye|X||||||||||||||};
{fallhaven_guard|Keep out of trouble.||||Bye|X||||||||||||||};
{fallhaven_priest|Shadow be with you.||||Shadow|priest_shadow_1||||Bye|X|||||||||};
{priest_shadow_1|The shadow protects us. It keeps us safe and comforts us when we sleep.||||Next|priest_shadow_2||||||||||||||};
{priest_shadow_2|It follows us wherever we go. Go with the shadow my child.||||Bye|X||||||||||||||};
{fallhaven_warden|State your business.||||Prisoner|warden_prisoner_1||||Bye|X|||||||||};
{warden_prisoner_1|That thief? He was caught in the act. Trespassing he was. Trying to get down into the catacombs of Fallhaven church.||||Next|warden_prisoner_2||||||||||||||};
{warden_prisoner_2|Luckily, we caught him before he could get down there. Now he\'ll serve as an example to all other thieves.||||Next|warden_prisoner_3||||||||||||||};
{warden_prisoner_3|Damn thieves. There must be a nest of them around here somewhere. If only I could find where they hide.||||Bye|X||||||||||||||};
{rigmor|Well hello there! Aren\'t you a cute little fellow.||||Brother|rigmor_1||||Bye|rigmor_leave_select|||||||||};
{rigmor_1|Your brother you say? His name is Andor? No. I can\'t recall meeting anyone like that.||||Bye|rigmor_leave_select||||||||||||||};
{rigmor_leave_select||||||rigmor_thanks|qfallhaven_oldman_complete||||X|||||||||};
{rigmor_thanks|I heard you helped my old man find his book, thank you. He had been talking about that book for weeks. Poor thing, he tends to forget things.||||Bye|X||||||||||||||};
{fallhaven_clothes|Welcome to my shop. Please browse my selection of fine clothing and jewelry.||||Trade|S||||Bye|X|||||||||};
{fallhaven_potions|Welcome to my shop. Please browse my fine selection of everyday potions.||||Trade|S||||Bye|X|||||||||};
</string>
<string name="conversationlist_fallhaven_bucus">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{bucus_welcome|Hi again, welcome to the .. Oh wait, I thought you were someone else.||||Brother|bucus_andor_select||||Thieves Guild|bucus_thieves_select|!qbucus_complete|||Bye|X||||};
{bucus_andor_select||||||bucus_umar_1|qbucus_complete||||bucus_andor_no_1|||||||||};
{bucus_andor_no_1|How interesting that you should ask. What if I had seen him? Why would I tell you?||||Next|bucus_andor_no_2||||||||||||||};
{bucus_andor_no_2|No, I can\'t tell you. Now please leave.||||Bye|X||||||||||||||};
{bucus_thieves_select||||||bucus_thieves_continue|qbucus||||bucus_thieves_1|qbucus_thieves||||bucus_thieves_no||||};
{bucus_thieves_no|Wh, what? No, I don\'t know anything about that.||||Bye|X||||||||||||||};
{bucus_umar_1|Ok kid. You\'ve proven yourself to me. Yes, I saw some other kid by that description running around here a few days ago.||||Next|bucus_umar_2||||||||||||||};
{bucus_umar_2|I don\'t know what he was up to though. Kept asking lots of questions. Kind of like you do. *snicker*||||Next|bucus_umar_3||||||||||||||};
{bucus_umar_3|Anyway, that\'s all I know. You should go talk to Umar, he probably knows more. Down that hatch over there.|qfallhaven_derelict|||Ok, bye|X||||||||||||||};
{bucus_thieves_1|Who told you that? Argh.\n\nOk so you found us. Now what?||||Join|bucus_thieves_2||||Bye|X|||||||||};
{bucus_thieves_2|Hah! Join the thieves guild?! You?!\n\nYou\'re one funny kid.||||I\'m serious|bucus_thieves_3||||Bye|X|||||||||};
{bucus_thieves_3|Ok, tell you what kid. Do a task for me and maybe I\'ll consider giving you more info.||||Task|bucus_thieves_4||||Bye|X|||||||||};
{bucus_thieves_4|Bring me the key of Luthor and we can talk more. I don\'t know anything about the key itself, but rumor has it that it is located somewhere in the catacombs beneath Fallhaven Church.|qbucus|||Ok|X||||||||||||||};
{bucus_thieves_continue|How is the search for the key of Luthor going?||||Background|bucus_thieves_4||||I have it|bucus_thieves_complete_1||key_luthor|1|Bye|X||||};
{bucus_thieves_complete_1|Wow, you actually got the key of Luthor? I didn\'t think you would make it out of there.|qbucus_complete|215||Next|bucus_thieves_complete_2||||||||||||||};
{bucus_thieves_complete_2|Well done kid.||||Next|bucus_thieves_complete_3||||||||||||||};
{bucus_thieves_complete_3|So, let\'s talk. What do you want to know?||||Brother|bucus_umar_1||||Bye|X|||||||||};
</string>
<string name="conversationlist_fallhaven_drunk">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{fallhaven_drunk|No problem. No sireee! Not causing any more trouble now. I sits here outside now.||||Next|fallhaven_drunk_2||||Bye|X|||||||||};
{fallhaven_drunk_2|Wait, who are you again? Are you that guard?||||Yes|fallhaven_drunk_3_1||||No|fallhaven_drunk_3_2|||||||||};
{fallhaven_drunk_3_1|Oh, sir. I\'m not causing any trouble anymore, see? Sits outside now as you says, ok?||||Next|fallhaven_drunk_4||||||||||||||};
{fallhaven_drunk_3_2|Oh good. That guard threw me out of the tavern. If I see him again I\'ll show him one thing or another.||||Next|fallhaven_drunk_4||||||||||||||};
{fallhaven_drunk_4|Drink drink drink, drink some more. Drink, drink .. Uh how did it go again?||||Next|fallhaven_drunk_5||||||||||||||};
{fallhaven_drunk_5|Were you saying something? Where was I? Yes, so we were in this dungeon.||||Next|fallhaven_drunk_6||||||||||||||};
{fallhaven_drunk_6|Or was it a house? I can\'t remember.||||Next|fallhaven_drunk_7||||||||||||||};
{fallhaven_drunk_7|No no, it was outside! Now I remember.||||Next|fallhaven_drunk_8|!qfallhaven_drunk|||Next|fallhaven_drunk_11|qfallhaven_drunk||||||||};
{fallhaven_drunk_8|That\'s where we..\n\nHey, where did my mead go? Did you take it from me? ||||Yes|fallhaven_drunk_9_1||||No|fallhaven_drunk_9_2|||||||||};
{fallhaven_drunk_9_1|Well then give it back! Or go buy me another mead.||||Here, have it|fallhaven_drunk_10||mead|1|Bye|X|||||||||};
{fallhaven_drunk_9_2|I must have drunk it then. Could you get me a new mead do you think? ||||Here, have it|fallhaven_drunk_10||mead|1|Bye|X|||||||||};
{fallhaven_drunk_10|Oh sweet drinks of joy. May the sssshadow be with you kid. *makes big eyes*|qfallhaven_drunk|||Next|fallhaven_drunk_11||||||||||||||};
{fallhaven_drunk_11|*takes a gulp of the mead*\n\nThat\'s good stuff!||||Next|fallhaven_drunk_12||||||||||||||};
{fallhaven_drunk_12|Yeah, me and Unnmir had good times. Go ask him yourself, he is usually in the barn to the east of here. I wonder where that treasure went.|qfallhaven_drunk_complete|||Bye|X||||||||||||||};
</string>
<string name="conversationlist_fallhaven_oldman">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{fallhaven_oldman||||||fallhaven_oldman_complete_2|qfallhaven_oldman_complete||||fallhaven_oldman_continue|qfallhaven_oldman||||fallhaven_oldman_1||||};
{fallhaven_oldman_1|Would you help an old man please?||||Sure|fallhaven_oldman_2||||Bye|X|||||||||};
{fallhaven_oldman_2|I recently lost a very valuable book ok mine.||||Next|fallhaven_oldman_3||||||||||||||};
{fallhaven_oldman_3|I know I had it with me yesterday. Now I can\'t seem to find it.||||Next|fallhaven_oldman_4||||||||||||||};
{fallhaven_oldman_4|I never lose things! Someone must have stolen it, that\'s my guess.||||Next|fallhaven_oldman_5||||||||||||||};
{fallhaven_oldman_5|Would you please go look for my book? It\'s called \'Calomyran secrets\'.|qfallhaven_oldman|||Next|fallhaven_oldman_6||||||||||||||};
{fallhaven_oldman_6|I have no idea where it might be. You could go ask Arcir, he seems very fond of his books. *points at the house to the south*||||Bye|X||||||||||||||};
{fallhaven_oldman_continue|How is the search for my book going? It\'s called \'Calomyran secrets\'. Have you found my book?||||Yes|fallhaven_oldman_complete||calomyran_secrets|1|No|fallhaven_oldman_6||||Background|fallhaven_oldman_2||||};
{fallhaven_oldman_complete|My book! Thank you, thank you! Where was it? No, don\'t tell me. Here, have these coins as help for your trouble.|qfallhaven_oldman_complete|60|51|Bye|X||||||||||||||};
{fallhaven_oldman_complete_2|Thank you so much for finding my book!||||Bye|X||||||||||||||};
</string>
<string name="conversationlist_fallhaven_nocmar">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{nocmar|Hello. I\'m Nocmar.||||Trade|nocmar_trade_select||||Unnmir|nocmar_quest_select|qnocmar_unnmir|||Bye|X||||};
{nocmar_quest_select||||||nocmar_complete_5|qnocmar_complete||||nocmar_continue|qnocmar||||nocmar_quest||||};
{nocmar_trade_select||||||S|qnocmar_complete||||nocmar_trade_1|||||||||};
{nocmar_trade_1|I don\'t have any items for sale. I used to have a lot of things for sale, but nowadays I\'m not allowed to sell anything.||||Next|nocmar_trade_2||||||||||||||};
{nocmar_trade_2|I was once one of the greatest smiths in Fallhaven. Then that bastard Lord Geomyr banned my use of heartsteel.||||Next|nocmar_trade_3||||||||||||||};
{nocmar_trade_3|By decree of Lord Geomyr, noone in Fallhaven is allowed to even use heartsteel weapons. Much less sell any.||||Next|nocmar_trade_4||||||||||||||};
{nocmar_trade_4|So now I have to hide the few weapons I have left. And I won\'t dare sell any of them anymore.||||Next|nocmar_trade_4_1||||||||||||||};
{nocmar_trade_4_1|I haven\'t seen the heartsteel glow in several years now that Lord Geomyr has banned them.||||Next|nocmar_trade_5||||||||||||||};
{nocmar_trade_5|So, unfortunately I can\'t sell you any of my weapons.||||Bye|X||||||||||||||};
{nocmar_quest|Unnmir sent you huh? I guess it must be important then.|qnocmar|||Next|nocmar_quest_1||||||||||||||};
{nocmar_quest_1|Ok, these old weapons have lost their inner glow now that they haven\'t been used in a while.||||Next|nocmar_quest_2||||||||||||||};
{nocmar_quest_2|To make the heartsteel glow again, we will need a heartstone. ||||Next|nocmar_quest_3||||||||||||||};
{nocmar_quest_3|Years ago, we used to fight the liches of Undertell. I have no idea if they still haunt that place.||||Undertell|nocmar_quest_4||||||||||||||};
{nocmar_quest_4|Undertell; the pits of the lost souls. Travel south and enter the caverns of the Dwarves. Follow the horrid smell from there.||||Next|nocmar_quest_5||||||||||||||};
{nocmar_continue|Have you found a heartstone yet?||||Yes|nocmar_complete||heartstone|1|Background|nocmar_quest_1||||Not yet|nocmar_continue_2||||};
{nocmar_continue_2|Please keep looking. Unnmir must have something important planned for you.||||Bye|X||||||||||||||};
{nocmar_quest_5|Beware the liches of Undertell, if they still are around. Those things can kill you by their gaze alone.||||Bye|X||||||||||||||};
{nocmar_complete|By the shadow. You actually found a heartstone. I thought I wouldn\'t live to see the day.|qnocmar_complete|120||Next|nocmar_complete_2||||||||||||||};
{nocmar_complete_2|Can you see the glow? It\'s literally pulsating.||||Next|nocmar_complete_3||||||||||||||};
{nocmar_complete_3|Quick. Let\'s get these old heartsteel weapons glow again.||||Next|nocmar_complete_4||||||||||||||};
{nocmar_complete_4|*Nocmar places the heartstone among the heartsteel weapons*||||Next|nocmar_complete_5||||||||||||||};
{nocmar_complete_5|Can you feel it? The heartsteel is glowing again.||||Trade|S||||Bye|X|||||||||};
</string>
<string name="conversationlist_fallhaven_tavern">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{bela|Welcome to Fallhaven Tavern. Have a seat anywhere.||||Trade|S||||Room|bela_room_select||||Bye|X||||};
{bela_room_1|A room for the night will cost you 10 gold.||||Buy [10 gold]|bela_room_2||||Back|bela|||||||||};
{bela_room_2|Thanks. Take the last room down at the end of the hall.|qfallhaven_tavern_room2||-10|Back|bela||||Bye|X|||||||||};
{bela_room_3|I hope the room suits your needs. It\'s the last room down at the end of the hall.||||Back|bela||||Bye|X|||||||||};
{bela_room_select||||||bela_room_3|qfallhaven_tavern_room2||||bela_room_1|||||||||};
{ganos|You seem familiar somehow.||||Trade|S||||Thieves guild|ganos_1|qgruil_andor_complete|||Bye|X||||};
{ganos_1|Thieves guild? How would I know? Do I look like a thief to you?! Hrmpf.||||Leave|X||||||||||||||};
</string>
<string name="conversationlist_fallhaven_arcir">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{arcir_start|Hello. I\'m Arcir.||||Elythara|arcir_elythara_1|qarcir|||Books|arcir_books_1||||Bye|X||||};
{arcir_anythingelse|Anything else you wanted to ask?||||Elythara|arcir_elythara_1|qarcir|||Books|arcir_books_1||||Bye|X||||};
{arcir_elythara_1|You found my statue in the basement I guess?\n\nYes, Elythara is my protector.||||Back|arcir_anythingelse||||||||||||||};
{arcir_books_1|I find great pleasure in my books. They contain past generations\' accumulated knowledge.||||Calomyran secrets|arcir_calomyran_select|qfallhaven_oldman|||Back|arcir_anythingelse|||||||||};
{arcir_calomyran_1|\'Calomyran Secrets\'? Hm, yes I think I have one of those in my basement.||||Next|arcir_calomyran_2||||||||||||||};
{arcir_calomyran_2|Old man Benradas came by last week, wanting to sell me that book. Since it\'s not really my kind of book, I declined.||||Next|arcir_calomyran_3||||||||||||||};
{arcir_calomyran_3|He seemed upset that I didn\'t like his book, and threw it at me while storming out of the house.||||Next|arcir_calomyran_4||||||||||||||};
{arcir_calomyran_4|Poor old man Benradas, he probably forgot that he left it here. He tends to forget things.||||Back|arcir_anythingelse||||||||||||||};
{arcir_calomyran_5|You looked downstairs but didn\'t find it? And a note you say? I guess there must have been someone in my house.||||Next|arcir_calomyran_6||||||||||||||};
{arcir_calomyran_select||||||arcir_calomyran_complete|qfallhaven_oldman_complete||||arcir_calomyran_5|qcalomyran_tornpage||||arcir_calomyran_1||||};
{arcir_calomyran_complete|I heard you found it and gave it back to old man Benradas. Thank you. He tends to forget things.||||Back|arcir_anythingelse||||Bye|X|||||||||};
{arcir_calomyran_6|What did the note say?\n\nLarcal.. I know of him. Always causing trouble. He is usually in the barn to the east of here.||||Thanks, bye|X||||||||||||||};
</string>
<string name="conversationlist_fallhaven_church">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{chapelgoer|Shadow, embrace me.||||Bye|X||||||||||||||};
{thoronir_default|Bask in the shadow, my child.||||Shadow|thoronir_shadow_1||||Church|thoronir_church_1||||Trade|thoronir_trade_bonemeal|qthoronir_complete|||};
{thoronir_shadow_1|Shadows protect us from the dangers of the night. It keeps us safe and comforts us when we sleep.||||Glow of the shadow|thoronir_tharal_select|qtharal_complete|||Back|thoronir_default||||Bye|X||||};
{thoronir_church_1|This is our chapel of worship in Fallhaven. Our community turns to us for support.||||Next|thoronir_church_2||||||||||||||};
{thoronir_church_2|This church has withstood hundreds of years, and has been kept safe from graverobbers.||||Next|thoronir_church_3||||||||||||||};
{thoronir_tharal_select||||||thoronir_trade_bonemeal|qthoronir_complete||||thoronir_tharal_1|||||||||};
{thoronir_tharal_1|Glow of the shadow indeed my child. So my old friend Tharal in Crossglen village sent you?||||Next|thoronir_tharal_2||||||||||||||};
{thoronir_church_3|The catacombs beneath the church houses great leaders of the past. Our great Luthor is rumored to be buried there.||||Enter|thoronir_church_4|qbucus|||Back|thoronir_default||||Bye|X||||};
{thoronir_church_4|Noone is allowed down in the catacombs, except for Athamyr, my apprentice. He is the only one that has been down there for years.|qthoronir_catacombs|||Back|thoronir_default||||||||||||||};
{thoronir_tharal_2|Shhh, we shouldn\'t talk so loud about using Bonemeal. As you know, Lord Geomyr issued a ban on all use of Bonemeal.||||Next|thoronir_tharal_3||||||||||||||};
{thoronir_tharal_3|When the ban came, I did not dare keep any, so I threw away my whole supply. Quite foolish now that I look back at it.||||Next|thoronir_tharal_4||||||||||||||};
{thoronir_tharal_4|Do you think you could find me 5 skeletal bones that I can use for mixing a bonemeal potion? The bonemeal is very potent in healing old wounds.||||Sure|thoronir_tharal_5||||Done|thoronir_tharal_complete||bone|5|Bye|X||||};
{thoronir_tharal_5|Thank you, please be back soon. I heard there were some undead near an old abandoned house just north of Fallhaven. Maybe you can check for bones there?||||Back|thoronir_default||||Bye|X|||||||||};
{thoronir_tharal_complete|Thank you, these bones will do fine. Now I can start creating a bonemeal healing potion for you.|qthoronir_complete|90||Next|thoronir_complete_2||||||||||||||};
{thoronir_complete_2|Give me some time to mix the bonemeal potion. It is a very potent healing potion.||||Bye|X||||||||||||||};
{thoronir_trade_bonemeal|The bonemeal potions are ready. Please use them with care, and don\'t let the guards see you. We are not actually allowed to use them anymore.||||Trade|S||||Back|thoronir_default||||Bye|X||||};
{catacombguard|Turn back while you still can, mortal. This is no place for you. Only death awaits you here.||||Turn back|X||||Proceed|catacombguard1|||||||||};
{catacombguard1|Nooo, you shall not pass!||||Fight|F||||||||||||||};
{luthor|*hissss* What mortal distubs my sleep?||||Fight|F||||||||||||||};
</string>
<string name="conversationlist_fallhaven_athamyr">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{athamyr|Walk with the shadow.||||Catacombs|athamyr_select|qthoronir_catacombs|||Bye|X|||||||||};
{athamyr_1|Yes, I have been down in the catacombs beneath Fallhaven Church. ||||Next|athamyr_2||||||||||||||};
{athamyr_2|But I\'m the only one that both has the permission and the bravery to go down there.||||Permission|athamyr_3||||||||||||||};
{athamyr_3|You want to go down in the catacombs? Hm, maybe we can make a deal.||||Next|athamyr_4||||||||||||||};
{athamyr_4|Bring me some of that fine cooked meat from the tavern and you can have my permission to go down in the catacombs beneath Fallhaven Church.||||Done|athamyr_complete||meat_cooked|1|Bye|X|||||||||};
{athamyr_complete_2|Thanks for helping me. You have my permission to go down in the catacombs beneath Fallhaven Church.|qfallhaven_church|||Bye|X||||||||||||||};
{athamyr_select||||||athamyr_complete_2|qathamyr_complete||||athamyr_1|||||||||};
{athamyr_complete|Thanks, this will do nicely.|qathamyr_complete|70||Next|athamyr_complete_2||||||||||||||};
</string>
<string name="conversationlist_fallhaven_larcal">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{larcal|I don\'t have time for you kid. Get lost.||||Calomyran Secrets|larcal_1|qcalomyran_tornpage|||Bye|X|||||||||};
{larcal_1|Now now, what have we here? Are you implying that I have been down in Arcir\'s basement?||||Next|larcal_2||||||||||||||};
{larcal_2|So, maybe I was. The book is mine anyway.||||Next|larcal_3||||||||||||||};
{larcal_3|Look, let\'s solve this peacefully. You walk away and forget about that book, and you might still live.||||Leave|larcal_4||||No|larcal_5|||||||||};
{larcal_4|Good boy. Now run away.||||Bye|X||||||||||||||};
{larcal_5|Ok, now you\'re starting to annoy me kid. Get lost while you still can.||||Leave|X||||No|larcal_6|||||||||};
{larcal_6|Still here? Ok then, if you want the book that bad you will have to take it from me!||||Fight|F||||Leave|X|||||||||};
</string>
<string name="conversationlist_fallhaven_unnmir">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{unnmir|Hi there.||||Drunken story|unnmir_1|qfallhaven_drunk_complete|||Bye|X|||||||||};
{unnmir_1|That old drunk over at the tavern told you his story did he?||||Next|unnmir_2||||||||||||||};
{unnmir_2|Same old story. We used to travel together a few years back.||||Next|unnmir_3||||||||||||||};
{unnmir_3|Real adventuring you know, swords and spells.||||Next|unnmir_4||||||||||||||};
{unnmir_4|But then we stopped. Can\'t really say why, I guess we got tired of life on the road. We settled down here in Fallhaven.||||Next|unnmir_5||||||||||||||};
{unnmir_5|Nice little town here. Many thieves around though, but they don\'t bother me.||||Next|unnmir_6||||||||||||||};
{unnmir_6|So what\'s your story kid? How did you end up here in Fallhaven?||||Brother|unnmir_7||||Bye|X|||||||||};
{unnmir_7|Yeah yeah, I get it. Your brother has probably run off to some dungeon wanting to do adventuring. *rolls eyes*||||Next|unnmir_8||||||||||||||};
{unnmir_8|Or maybe he has gone to the one of the bigger cities to the north.||||Next|unnmir_9||||||||||||||};
{unnmir_9|Can\'t say I blame him for wanting to see the world.||||Next|unnmir_10||||||||||||||};
{unnmir_10|Hey by the way, are you also looking to be an adventurer?||||Yes|unnmir_11||||Not really|unnmir_12|||||||||};
{unnmir_11|Nice. I\'ll give you a hint kid. *snickering*. Go see Nocmar over by the west side of town. Tell him I sent you.|qnocmar_unnmir|||Next|unnmir_13||||||||||||||};
{unnmir_12|Smart move. Adventuring leads to a lot of scars. If you know what I mean.||||Bye|X||||||||||||||};
{unnmir_13|His house is just southwest of the tavern.||||Thanks|X||||||||||||||};
</string>
<string name="conversationlist_fallhaven_gaela">
[ID|Text|EnableKey|RwdExp|RwdGold|Rep_text0|Rep_id0|Rep_reqKey0|Rep_itemTag0|Rep_itemQty0|Rep_text1|Rep_id1|Rep_reqKey1|Rep_itemTag1|Rep_itemQty1|Rep_text2|Rep_id2|Rep_reqKey2|Rep_itemTag2|Rep_itemQty2|];
{gaela|Swift is my blade. Poisoned is my tongue. Or was it the other way around?||||Thieves|gaela_1||||Bye|X|||||||||};
{gaela_1|Yes, we thieves have a strong presence here in Fallhaven.||||Next|gaela_2|qgruil_andor_complete|||Bye|X|||||||||};
{gaela_2|I heard that you helped Gruil, a fellow thief in Crossglen village.||||Next|gaela_3||||||||||||||};
{gaela_3|Word has also reached me that you are looking for someone. I might be able to help you.||||Next|gaela_4||||||||||||||};
{gaela_4|You should go talk to Bucus in the derelict house a bit southwest of here. Tell him you want to know more about the Thieves guild.|qbucus_thieves|||Thanks|gaela_5||||||||||||||};
{gaela_5|Consider it a favor done in return for you helping Gruil.||||Bye|X||||||||||||||};
</string>
</resources>

View File

@@ -15,12 +15,13 @@
<string name="itemlist_weapons">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{club1|items_tiles:126|Wooden club|0|7||5|10|||0-1|||};
{club3|items_tiles:128|Iron club|0|253||5|5|||2-7|||};
{club3|items_tiles:128|Iron club|0|253||6|5|||2-7|||};
{ironsword0|items_tiles:70|Iron sword|0|12||5|10|||0-1|||};
{hammer0|items_tiles:129|Iron hammer|0|12||5|10|||0-1|||};
{hammer1|items_tiles:129|Giant hammer|0|121||10|5|||4-7|||};
{dagger0|items_tiles:84|Iron dagger|0|12||5|10|||0-1|||};
{dagger1|items_tiles:84|Sharp iron dagger|0|53||3|20|||1-2|||};
{dagger2|items_tiles:84|Superior iron dagger|0|70||3|20|||2-3|||};
{dagger1|items_tiles:84|Sharp iron dagger|0|53||4|20|||1-2|||};
{dagger2|items_tiles:84|Superior iron dagger|0|70||4|25|||1-2|||};
{shortsword1|items_tiles:85|Iron shortsword|0|78||4|15|||1-2|||};
{ironsword1|items_tiles:70|Iron sword|0|78||5|10|||1-3|||};
{ironsword2|items_tiles:71|Iron longsword|0|121||5|10|||1-4|||};
@@ -29,6 +30,7 @@
{steelsword1|items_tiles:77|Steel sword|0|874||4|25|||3-8|||};
{axe1|items_tiles:140|Woodcutter axe|0|24||5|5|||1-3|||};
{axe2|items_tiles:140|Iron axe|0|312||6|5|||2-5|||};
{quickdagger1|items_tiles:84|Quickstrike dagger|0|512||3|20|||0|-20||};
</string>
@@ -42,13 +44,22 @@
{ring_block1|items_tiles:266|Ring of block|7|1239|||||||10||};
{ring_block2|items_tiles:266|Ring of block|7|3866|||||||15||};
{ring_atkch1|items_tiles:266|Ring of surehit|7|215|||15||||||};
{ring1|items_tiles:266|Mundane ring|7|13|||||||||};
{ring2|items_tiles:266|Polished ring|7|21|||||||||};
</string>
<string name="itemlist_necklaces">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{jewel_fallhaven|items_tiles:272|Jewel of Fallhaven|6|3125||-1|||||||};
{necklace_shield1|items_tiles:273|Shielding necklace|6|935|||||||9||};
{necklace_shield2|items_tiles:273|Shielding necklace|6|1255|||||||12||};
</string>
<string name="itemlist_armour">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{shirt1|items_tiles:182|Cloth shirt|3|16|||||||2||};
{shirt2|items_tiles:182|Fine shirt|3|72|||||||5||};
{shirt_dmgresist|items_tiles:183|Hardened shirt|3|1633|||||||5|1|};
{armor1|items_tiles:183|Leather armour|3|464|||||||8||};
{armor2|items_tiles:183|Superior leather armour|3|624|||||||9||};
{armor3|items_tiles:184|Hard leather armour|3|2407|||||||13||};
@@ -69,17 +80,16 @@
{boots2|items_tiles:196|Superior leather boots|5|38|||||||4||};
{boots3|items_tiles:197|Snakeskin boots|5|146|||||||6||};
{boots5|items_tiles:198|Reinforced boots|5|226|||||||7||};
{gloves_attack1|items_tiles:203|Gloves of swift attack|4|150|||15||||-9||};
{gloves_attack2|items_tiles:203|Fine gloves of swift attack|4|221|||17||||-9||};
</string>
<string name="itemlist_food">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{health_minor|items_tiles:35|Minor potion of health|20|5|5||||||||};
{health|items_tiles:49|Regular potion of health|20|40|10||||||||};
{health_major|items_tiles:28|Major potion of health|20|210|40||||||||};
{apple_green|items_tiles:2|Green apple|21|9|4||||||||};
{apple_red|items_tiles:3|Red apple|21|15|6||||||||};
{meat|items_tiles:25|Meat|21|45|12||||||||};
{meat_cooked|items_tiles:27|Cooked meat|21|105|21||||||||};
{meat_cooked|items_tiles:27|Cooked meat|21|78|21||||||||};
{|items_tiles:8|Strawberry|21|1|1||||||||};
{|items_tiles:15|Carrot|21|9|4||||||||};
{|items_tiles:21|Bread|21|6|5||||||||};
@@ -88,15 +98,29 @@
{|items_tiles:20|Eggs|21|8|3||||||||};
{|items_tiles:14|Radish|21|5|2||||||||};
</string>
<string name="itemlist_potions">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{vial_empty1|items_tiles:56|Small empty vial|31|2|||||||||};
{vial_empty2|items_tiles:57|Empty vial|31|4|||||||||};
{vial_empty3|items_tiles:59|Empty flask|31|6|||||||||};
{vial_empty4|items_tiles:58|Empty potion|31|11|||||||||};
{health_minor|items_tiles:35|Minor potion of health|20|5|5||||||||};
{health|items_tiles:49|Regular potion of health|20|40|10||||||||};
{health_major|items_tiles:28|Major potion of health|20|210|40||||||||};
{mead|items_tiles:51|Mead|20|15|1||||||||};
{milk|items_tiles:55|Milk|20|21|2||||||||};
{bonemeal_potion|items_tiles:34|Bonemeal potion|20|45|40||||||||};
</string>
<string name="itemlist_animal">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{hair|items_tiles:258|Animal hair|31|2|||||||||};
{|items_tiles:262|Insect wing|31|3|||||||||};
{|items_tiles:254|Bone|31|2|||||||||};
{insectwing|items_tiles:262|Insect wing|31|3|||||||||};
{bone|items_tiles:254|Bone|31|2|||||||||};
{|items_tiles:255|Eye|31|6|||||||||};
{|items_tiles:256|Bat wing|31|2|||||||||};
{|items_tiles:257|Claws|31|2|||||||||};
{claws|items_tiles:257|Claws|31|2|||||||||};
{shell|items_tiles:264|Insect shell|31|2|||||||||};
{|items_tiles:226|Feather|31|6|||||||||};
{|items_tiles:225|Red feather|31|11|||||||||};
@@ -108,17 +132,12 @@
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{clay|items_tiles:289|Lump of clay|31|1|||||||||};
{rock|items_tiles:238|Small rock|31|1|||||||||};
{vial_empty1|items_tiles:56|Small empty vial|31|2|||||||||};
{vial_empty2|items_tiles:57|Empty vial|31|4|||||||||};
{vial_empty3|items_tiles:59|Empty flask|31|6|||||||||};
{vial_empty4|items_tiles:58|Empty potion|31|11|||||||||};
{gem1|items_tiles:210|Glass gem|31|2|||||||||};
{gem2|items_tiles:211|Ruby gem|31|6|||||||||};
{gem3|items_tiles:212|Polished gem|31|8|||||||||};
{gem4|items_tiles:213|Sharpened gem|31|13|||||||||};
{gem5|items_tiles:215|Polished sparkling gem|31|15|||||||||};
{gem6|items_tiles:214|Shimmering gem|31|26|||||||||};
{gem7|items_tiles:216|Heartstone|31|40|||||||||};
{gem8|items_tiles:330|Brilliant gem|31|68|||||||||};
</string>
@@ -128,5 +147,11 @@
{tail_trainingrat|items_tiles:103|Small rat tail|31|0|||||||||};
{rest|items_tiles:33|Potion of restoration|20|0|99||||||||};
{ring_mikhail|items_tiles:266|Mikhail\'s ring|7|15|||10||||||};
{neck_irogotu|items_tiles:273|Irogotu\'s necklace|6|30|||||||5|1|};
{ring_gandir|items_tiles:266|Gandir\'s ring|31|0|||||||||};
{dagger_venom|items_tiles:87|Venomous Dagger|0|15||4|20|20|3|1-2|||};
{key_luthor|items_tiles:231|Key of Luthor|31|0|||||||||};
{calomyran_secrets|items_tiles:406|Calomyran secrets|31|0|||||||||};
{heartstone|items_tiles:216|Heartstone|31|40|||||||||};
</string>
</resources>

View File

@@ -20,7 +20,7 @@
{monsters_rogue1:0|Rogue|Human|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_warrior1:0|Warrior|Human|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_misc:4|Dwarf miner|Dwarf|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_misc:5|Troll|Dwarf|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_misc:5|Troll|Dwarf|1x1|11|10|10|10|2|50|||1-2|||list1||};
{monsters_misc:6|Dwarf warrior|Dwarf|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_misc:7|Dwarf knight|Dwarf|1x1|11|10|10|10|10|50|||1-2|||list1||};
{monsters_dogs:0|Puppy dog|Animal|1x1|3|1|10|10|10|50|||0-1|||list1||};
@@ -90,23 +90,54 @@
<string name="monsterlist_crossglen_animals">
[Icon|Name|Tags|Size|Exp|HP_max|AP_max|AP_move|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|Drop|Phrase|];
{monsters_rats:0|Tiny rat|trainingrat||4|2|||10|50|||1|||trainingrat||};
{monsters_rats:1|Cave rat|crossglen_caverat||11|5|||10|90|||2|||rat||};
{monsters_rats:1|Tough cave rat|crossglen_caverat2||14|5|||5|90|||3|||rat||};
{monsters_rats:3|Strong cave rat|crossglen_caveboss||25|20|||5|100|||2-4|10||caveratboss||};
{monsters_insects:0|Black ant|crossglen_ant||5|3|||10|70|||1-2|||insect||};
{monsters_insects:1|Small wasp|crossglen_wasp||5|4|||10|70|||1-2|||wasp||};
{monsters_insects:4|Beetle|crossglen_beetle||8|4|||10|70|||3|||insect||};
{monsters_insects:1|Forest wasp|forestwasp||11|6|||10|70|||1-2|||wasp||};
{monsters_insects:0|Forest ant|forestant||9|4|||10|90|||1-2|10||insect||};
{monsters_insects:2|Yellow forest ant|forestant||12|5|||10|100|||2|15||insect||};
{monsters_dogs:1|Small rabid dog|forestdog||11|6|||10|90|||2|||canine||};
{monsters_snakes:1|Forest Snake|forestsnake||15|7|||10|110|||1-2|10||snake||};
{monsters_dogs:6|Rabid Boar|forestboar||25|20|||5|110|||3|30||canineboss||};
{monsters_dogs:3|Rabid Fox|fox1||15|25|||5|100|||3|50||canine||};
{monsters_insects:2|Yellow cave ant|pitcave1||15|20|||3|30|||1|80||insect||};
{monsters_rats:0|Tiny rat|trainingrat||2|2|||10|50|||1|||trainingrat||};
{monsters_rats:1|Cave rat|crossglen_caverat||6|5|||10|90|||2|||rat||};
{monsters_rats:1|Tough cave rat|crossglen_caverat2||11|5|||5|90|||3|||rat||};
{monsters_rats:3|Strong cave rat|crossglen_caveboss||20|20|||5|100|||2-4|10||caveratboss||};
{monsters_insects:0|Black ant|crossglen_ant||4|3|||10|70|||1-2|||insect||};
{monsters_insects:1|Small wasp|crossglen_wasp||4|4|||10|70|||1-2|||wasp||};
{monsters_insects:4|Beetle|crossglen_beetle||6|4|||10|70|||3|||insect||};
{monsters_insects:1|Forest wasp|forestwasp||5|6|||10|70|||1-2|||wasp||};
{monsters_insects:0|Forest ant|forestant||5|4|||10|90|||1-2|10||insect||};
{monsters_insects:2|Yellow forest ant|forestant||6|5|||10|100|||2|15||insect||};
{monsters_dogs:1|Small rabid dog|forestdog||6|6|||10|90|||2|||canine||};
{monsters_snakes:1|Forest Snake|forestsnake||7|7|||10|110|||1-2|10||snake||};
{monsters_snakes:3|Young Cave Snake|cavesnake1||13|8|||5|110|10|2|2|10||snake||};
{monsters_snakes:3|Cave Snake|cavesnake1||17|12|||5|110|20|2|2|15||snake||};
{monsters_snakes:3|Venomous Cave Snake|cavesnake2||21|15|||5|110|40|2|2|10||snake||};
{monsters_snakes:3|Tough Cave Snake|cavesnake2||22|21|||5|110|20|2|2|15||snake||};
{monsters_rats:4|Basilisk|cavesnake2_boss||43|40|||7|40|||3-9|50|2|cavecritter||};
{monsters_liches:0|Snake servant|cavesnake3||37|35|||5|80|40|3|2-3|10|1|lich1||};
{monsters_liches:1|Snake master|cavesnake3_boss||67|55|||5|60|100|3|1-4|10|4|snakemaster|snakemaster|};
{monsters_dogs:6|Rabid Boar|forestboar||23|20|||5|110|||3|30||canineboss||};
{monsters_dogs:3|Rabid Fox|fox1||28|25|||5|100|||3|50||canine||};
{monsters_insects:2|Yellow cave ant|pitcave1||20|20|||3|30|||1|80||insect||};
{monsters_misc:0|Young teeth critter|pitcave2||17|15|||2|50|||1|70||cavecritter||};
{monsters_misc:0|Teeth critter|pitcave2||28|25|||2|60|10|3|1|70||cavecritter||};
{monsters_misc:5|Young minotaur|pitcave2||46|45|||6|20|40|3|4|50|2|cavemonster||};
{monsters_misc:5|Strong minotaur|pitcave2_boss||57|53|||6|40|50|3|5|50|2|cavemonster||};
{monsters_liches:0|Irogotu|pitcave_boss||88|61|||3|50|40|3|2-5|70|4|irogotu|irogotu|};
</string>
<string name="monsterlist_fallhaven_animals">
[Icon|Name|Tags|Size|Exp|HP_max|AP_max|AP_move|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|Drop|Phrase|];
{monsters_ghost2:0|Lost spirit|minorhaunt1||23|15|||10|50|||1-2|10|3|haunt|haunt|};
{monsters_ghost2:0|Lost soul|minorhaunt2||28|15|||10|50|||1-2|10|4|haunt||};
{monsters_ghost1:0|Haunting|haunt3|1x1|40|31|10|10|5|120|20|2|1-5|30|1|haunt||};
{monsters_skeleton1:0|Skeletal warrior|skeleton1|1x1|45|52|10|10|5|60|||1-3|40|1|skeleton||};
{monsters_skeleton2:0|Skeletal master|skeletonmaster|1x1|47|52|10|10|5|70|||1-3|30|2|skeleton||};
{monsters_skeleton1:0|Skeleton|skeleton1|1x1|27|35|10|10|10|60|||1-4|40||skeleton||};
{monsters_ghost2:0|Guardian of the catacombs|catacombguard1|1x1|18|6|10|10|10|10|||1-6|10|3|catacombguard|catacombguard|};
{monsters_rats:0|Catacomb rat|catacombrat1|1x1|14|15|10|10|3|60|||1|40||catacombrat||};
{monsters_rats:3|Large catacomb rat|catacombrat1|1x1|20|21|10|10|3|60|10|2|1-2|40||catacombrat||};
{monsters_ghost1:0|Ghostly visage|catacombguard2|1x1|21|16|10|10|5|20|||1-4|20|2|catacombguard||};
{monsters_ghost2:0|Spectre|catacombguard2|1x1|28|15|10|10|3|50|||1-5|60|2|catacombguard||};
{monsters_ghost2:0|Apparition|catacombguard3|1x1|24|17|10|10|3||||1-5|70|2|catacombguard||};
{monsters_ghost1:0|Shade|catacombguard3|1x1|25|16|10|10|5|20|||1-4|20|3|catacombguard||};
{monsters_misc:2|Young gargoyle|catacombguard3|1x1|42|35|10|10|10|110|10|2|2-5|70|1|catacombguard||};
{monsters_liches:2|Ghost of Luthor|luthor|1x1|95|86|10|10|5|120|15|2|2-5|50|3|luthor|luthor|};
</string>
<string name="monsterlist_crossglen_npcs">
[Icon|Name|Tags|Size|Exp|HP_max|AP_max|AP_move|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|Drop|Phrase|];
@@ -123,6 +154,37 @@
{monsters_man1:0|Tired farmer|crossglen_farmer2|1x1|0|1|1|1|1|0|||0||||farm2|};
{monsters_man1:0|Oromir|oromir|1x1|0|1|1|1|1|0|||0||||oromir1|};
{monsters_men:8|Odair|odair|1x1|0|1|1|1|1|0|||0||||odair1|};
{monsters_warrior1:0|Jan|jan|1x1|0|1|1|1|1|0|||0||||jan1|};
{monsters_warrior1:0|Jan|jan|1x1|0|1|1|1|1|0|||0||||jan_start_select|};
</string>
<string name="monsterlist_fallhaven_npcs">
[Icon|Name|Tags|Size|Exp|HP_max|AP_max|AP_move|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|Drop|Phrase|];
{monsters_men:3|Warden|fallhaven_warden|1x1|0|1|1|1|1|0|||0||||fallhaven_warden|};
{monsters_warrior1:0|Guard|fallhaven_guard|1x1|0|1|1|1|1|0|||0||||fallhaven_guard|};
{monsters_men:4|Acolyte|fallhaven_priest|1x1|0|1|1|1|1|0|||0||||fallhaven_priest|};
{monsters_man1:0|Bearded Citizen|fallhaven_citizen1|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen1|};
{monsters_men:2|Old Citizen|fallhaven_citizen2|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen2|};
{monsters_men:7|Tired Citizen|fallhaven_citizen4|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen4|};
{monsters_man1:0|Citizen|fallhaven_citizen3|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen3|};
{monsters_men:2|Grumpy Citizen|fallhaven_citizen5|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen5|};
{monsters_men:7|Blond Citizen|fallhaven_citizen6|1x1|0|1|1|1|1|0|||0||||fallhaven_citizen6|};
{monsters_rogue1:0|Bucus|bucus|1x1|0|1|1|1|1|0|||0||||bucus_welcome|};
{monsters_men:0|Drunkard|fallhaven_drunk|1x1|0|1|1|1|1|0|||0||||fallhaven_drunk|};
{monsters_men:5|Old man|fallhaven_oldman|1x1|0|1|1|1|1|0|||0||||fallhaven_oldman|};
{monsters_men:8|Nocmar|nocmar|1x1|0|1|1|1|1|0|||0|||nocmar|nocmar|};
{monsters_rogue1:0|Prisoner|fallhaven_prisoner|1x1|0|1|1|1|1|0|||0|||||};
{monsters_rogue1:0|Ganos|ganos|1x1|0|1|1|1|1|0|||0|||ganos|ganos|};
{monsters_mage2:0|Arcir|arcir|1x1|0|1|1|1|1|0|||0||||arcir_start|};
{monsters_men:4|Athamyr|athamyr|1x1|0|1|1|1|1|0|||0||||athamyr|};
{monsters_men2:8|Thoronir|thoronir|1x1|0|1|1|1|1|0|||0|||thoronir|thoronir_default|};
{monsters_men:6|Chapelgoer|chapelgoer|1x1|0|1|1|1|1|0|||0||||chapelgoer|};
{monsters_mage2:0|Potion merchant|fallhaven_potions|1x1|0|1|1|1|1|0|||0|||fallhaven_potions|fallhaven_potions|};
{monsters_men2:0|Tailor|fallhaven_clothes|1x1|0|1|1|1|1|0|||0|||fallhaven_clothes|fallhaven_clothes|};
{monsters_men:7|Bela|bela|1x1|0|1|1|1|1|0|||0|||shop_food|bela|};
{monsters_men2:2|Larcal|larcal|1x1|1|51|10|10|10|25|||1-2|50||larcal|larcal|};
{monsters_men2:9|Gaela|gaela|1x1|0|1|1|1|1|0|||0||||gaela|};
{monsters_mage2:0|Unnmir|unnmir|1x1|0|1|1|1|1|0|||0||||unnmir|};
{monsters_men:1|Rigmor|rigmor|1x1|0|1|1|1|1|0|||0||||rigmor|};
</string>
</resources>

View File

@@ -6,6 +6,18 @@
<string name="exit">Exit</string>
<string name="exit_to_menu">Exit to menu</string>
<string name="menu_pause">Pause</string>
<string name="menu_settings">Preferences</string>
<string-array name="display_loot">
<item>Show loot dialog box</item>
<item>Show short notification</item>
<item>Do not display</item>
</string-array>
<string-array name="display_loot_values">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string name="dialog_loading_message">Loading resources...</string>
@@ -49,7 +61,7 @@
<string name="combat_status_ap">AP: %d</string>
<string name="combat_monsterhealth">HP:</string>
<string name="combat_monsteraction">%s is attacking.</string>
<string name="combat_cannotexitcombat">You cannot exit combat since there are adjacent monsters.</string>
<string name="combat_cannotexitcombat">You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat.</string>
<string name="combat_result_monstermiss">%s misses!</string>
<string name="combat_result_monsterhit">%s hits you for %d hp!</string>
<string name="combat_result_monsterhitcritical">%s gets a critical hit for %d hp!</string>
@@ -71,6 +83,7 @@
<string name="dialog_loot_pickall">Pick up all</string>
<string name="dialog_loot_foundgold">You found %d gold. </string>
<string name="dialog_loot_pickedupitems">You picked up %d items.</string>
<string name="dialog_groundloot_title">Items</string>
<string name="dialog_groundloot_message">You found some items. </string>
<string name="dialog_monsterloot_title">Victory</string>
@@ -82,6 +95,7 @@
<string name="monster_difficulty_normal">Normal</string>
<string name="monster_difficulty_hard">Hard</string>
<string name="monster_difficulty_veryhard">Very hard</string>
<string name="monster_difficulty_impossible">Impossible</string>
<string name="actorinfo_class">Class:</string>
<string name="actorinfo_difficulty">Difficulty:</string>
@@ -128,7 +142,7 @@
<string name="startscreen_continue">Continue current game</string>
<string name="startscreen_newgame">New game</string>
<string name="startscreen_newgame_confirm">This will destroy the current game and your current character, are you sure you want to start a new game?</string>
<string name="startscreen_newgame_confirm">You will lose your current game and your current character, are you sure you want to start a new game?</string>
<string name="startscreen_about">About/help</string>
<string name="startscreen_currenthero">%s, level %d</string>
<string name="startscreen_enterheroname">Enter hero name</string>
@@ -136,6 +150,7 @@
<string name="conversation_title">%s says</string>
<string name="conversation_rewardexp"> [You gained %d experience]</string>
<string name="conversation_rewardgold"> [You gained %d gold]</string>
<string name="conversation_lostgold"> [You lost %d gold]</string>
<string name="shop_buy">Buy</string>
<string name="shop_sell">Sell</string>
@@ -149,13 +164,13 @@
<string name="levelup_title">Level up</string>
<string name="levelup_description">Welcome to level %d!</string>
<string name="levelup_buttontext">Level up</string>
<string name="levelup_add_health">Increase health</string>
<string name="levelup_add_health">Increase health (+%d HP)</string>
<string name="levelup_add_health_description">Adds %d to your maximum health.</string>
<string name="levelup_add_attackchance">Increase attack chance</string>
<string name="levelup_add_attackchance">Increase attack chance (+%d \%)</string>
<string name="levelup_add_attackchance_description">Adds %d\% to your base attack chance.</string>
<string name="levelup_add_attackdamage">Increase attack damage</string>
<string name="levelup_add_attackdamage">Increase attack damage (+%d)</string>
<string name="levelup_add_attackdamage_description">Adds %d\% to your base attack damage.</string>
<string name="levelup_add_blockchance">Increase block chance</string>
<string name="levelup_add_blockchance">Increase block chance (+%d \%)</string>
<string name="levelup_add_blockchance_description">Adds %d\% to your base block chance.</string>
<string name="dialog_rest_title">Rest</string>
@@ -198,12 +213,12 @@
<string name="dialog_newversion_title">Welcome</string>
<string name="dialog_newversion_message">
Thank you for downloading Andor\'s Trail!\n\n
Please note that this version is the INITIAL RELEASE of Andor\'s Trail, which means that the maps are not yet complete.\n
Please note that this version of Andor\'s Trail is a WORK IN PROGRESS, which means that all maps are not yet complete.\n
You are however of course free to explore Crossglen village as much as you like.\n
This inital release is intended as a bug-hunt before we start adding content.\n
Please visit the homepage to get more info or to contribute to the project (see "about").\n
Since this is a work in progress, it may contain bugs and gameplay that is not balanced well. This release is intended as a bug-hunt before we start adding even more content.\n
Please visit the project page to get more info or to contribute to the project (see "about").\n
\n
Thanks for all the feedback! This version should hopefully solve the FCs, fix the health issue when leveling up and have better support for landscape devices.\n
Thanks for all the feedback!
</string>
</resources>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="19" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="19" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA8tiYGDIoiJOYWJgSGaijIaZVQJkFzNRRsPMMqACRjbrLQsDwzsWhBw6n5AaZLP+AsX+IalD5xNSk8xEPT8WQ+MggZk65oHigBrmgLAhFTEAsQVNvvgCAAA=
</data>
</layer>
<layer name="Objects" width="19" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoD7IYGdg2MyO4KOzjVhQxdHVEwM4WMlzWwULgr2XHZUPk+djR+X3A/mRzITN5ofqWwmkk1nwq8UF7NHCoY7EcFmCxd5+HGZgU0tN4I8WZvOA7lgPxQuA+AkbJKyR3QESQ1dHbljiAwDtX1vq+AIAAA==
</data>
</layer>
<layer name="Above" width="19" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoC74zzw0zZrJTj2zSAEjwaz3eMxKZqGePaQAAO+fA1f4AgAA
</data>
</layer>
<layer name="Walkable" width="19" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHAEYBtDZyHxsYrjMwqWOgQQ1tDALG8Anh00tKeqJMQ/dbFxxg0sNIf3kYAC3Wh01+AIAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="19" height="10">
<object name="up" type="mapchange" x="576" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_church"/>
<property name="place" value="down"/>
</properties>
</object>
<object name="down" type="mapchange" x="32" y="224" width="32" height="32">
<properties>
<property name="map" value="catacombs2"/>
<property name="place" value="up"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="19" height="10"/>
<objectgroup name="Spawn" width="19" height="10">
<object name="catacombguard1" type="spawn" x="224" y="224" width="32" height="32">
<properties>
<property name="respawn" value="false"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn_rats" width="19" height="10" visible="0">
<object name="catacombrat1" type="spawn" x="64" y="128" width="512" height="160">
<properties>
<property name="quantity" value="4"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA62U0Q2AIAxEL4TEZfjAqRzBSRzB8XQDjfLRpMEKBfpxH9TwyB0nEUA01uJsRLzV2Yh42wQEjIt4uzFPmtXE9xweOL38TZs733O9rPuHp81d61ebU4lH/qVMpHWNR/6lTKR1y330+M3vo7UfNb+ajrTwNB0p8Xh++dmj+fGzSx3R+tV2JP8n81l6o3q8BnzzTEpvVJrPsNUDygDSZEAGAAA=
</data>
</layer>
<layer name="Objects" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoC3YzE4cn4MVuzwyYGNFVQsCIkhsCSj7I5SeyQ6RZ0NSAwNybJhi84Dq10PxAiR3CAHVPgHilUCxZBaI2BIWVL3JSPwdaHLoarGBCiLUUAoimRFsbPGQgSfssQE+aPjORNMHix9QfIhgCXt0gO53UDj3s2OKg/gwP6CHMTYAC3d7PP7iwyKHzW5SwW521DSBDJDjgV6AmPBCBrD0gZwm8OVNZMCHJ/wk0PIwLH3AwgQWZ+hpChsA2QGLP1D+xBdnsLwLUoceL4TCpp+EfBGAJW6Jyf/IQJuI9IEvTYPAPKRyjNS4JwUAANVrQNNABgAA
</data>
</layer>
<layer name="Above" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoD74zzxq3lA3D58eepiXzEJd8wiBoWweOYBS96GrodS891QwD1+awWceut3EgMGQR/EBZD8RykuUAACnuhvrQAYAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="20" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+VSsQ0AMAjyBf9/trsRBNNONXHBFtCQEZGfdi02Z1jH5dak6+yCZtvb3OZzdlbwyWc0mLOvw6douXnZZoJ5Rzo3+Db+0C07vu6dkgvkTdGtfEgH6TKPCNtkpf593QdUgJXEQAYAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="20">
<object name="down" type="mapchange" x="544" y="544" width="32" height="32">
<properties>
<property name="map" value="catacombs3"/>
<property name="place" value="up"/>
</properties>
</object>
<object name="up" type="mapchange" x="0" y="544" width="32" height="32">
<properties>
<property name="map" value="catacombs1"/>
<property name="place" value="down"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn rats" width="20" height="20" visible="0">
<object name="catacombrat1" type="spawn" x="64" y="96" width="480" height="512">
<properties>
<property name="quantity" value="4"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn guards" width="20" height="20" visible="0">
<object name="catacombguard2" type="spawn" x="224" y="128" width="128" height="32"/>
<object name="catacombguard2" type="spawn" x="32" y="96" width="160" height="288"/>
<object name="catacombguard2" type="spawn" x="416" y="96" width="192" height="448">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="catacombguard2" type="spawn" x="256" y="256" width="160" height="352"/>
</objectgroup>
<objectgroup name="Keys" width="20" height="20"/>
</map>

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA62U0Q0CIRBEl5MO7sqwbDqADrADS/BbO9AIISTDZNlwxo+Jl2PvLQOzBicSQLciv4ncXdNlG9e5tktb65yj/D5c016es1KPPbkvc64yinmJemLfpHCeXuTlRx56q/25Z69Lyn7ehfUhHvo7TvJY7G9Wt8LLhr8zvOiaKmvmjxUUXqRMrLDwG+RhhpJx7n3vUck08jC7s3PAueBMa+eXwSvviRmcaY1XPfO59XfMWLnfXbmD/s7KHnpbyQKK55F5KzOC4nnEu/qFZ3n9F4//H63crs4GC3Nvrc1qqr5s47HDQAYAAA==
</data>
</layer>
<layer name="Objects" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA71TuxHCMAxVEgd3uSOXInvAAExAQUdDASPQUFFnBUbIBgzEAlwyANY5ughHCuaO4zWJ9Xl6tiSA/6DKAZ55XOxuMbVtM/+tHcc6BbgYgNLFrVKd52Z9zaPAd8g8TywwtrW+JoLX/YaHUDiuuxnPG/vu5z6OLhn/qzyu/sNpPgl8BaupcTRm5NDANRH2Q7+WSp6UI9nmtM3lFFa2I1fD3kLLD9EI7xfqiuUiSLOLff/EgzNdRe6ShHrIJ/2l0KOwb1oPaBc5wtnt2X3wzpjDZ5JsWs8wtlV8Z+N9fL6lXoWQ3ph0X+10X7Q51uyxkPZc0tYnekzom+P5NV6yAhC+QAYAAA==
</data>
</layer>
<layer name="Above" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGLogmWXg7DRgp7/do2AUDBUwE0/+wCeHCwxEXh8FhAEAUT0kW0AGAAA=
</data>
</layer>
<layer name="Walkable" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA92SwQ4AIAhC+QX//2e7OwlwnXLzwuJFaQGozxsXDU2bzrq87le8ydP1Xg7LZboMxUoy3bKpP3fewObDeNv9UTPc3J1y3D1KvRveVMrLtOQ+lnnKwbIpv1PJ7qesNL/ivOwD/7qeRUAGAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="20">
<object name="north" type="mapchange" x="544" y="64" width="32" height="32">
<properties>
<property name="map" value="catacombs4"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="up" type="mapchange" x="64" y="96" width="32" height="32">
<properties>
<property name="map" value="catacombs2"/>
<property name="place" value="down"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn rats" width="20" height="20" visible="0">
<object name="catacombrat1" type="spawn" x="64" y="128" width="544" height="480">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn guards" width="20" height="20" visible="0">
<object name="Young gargoyle" type="spawn" x="288" y="320" width="32" height="32"/>
<object name="catacombguard2" type="spawn" x="32" y="288" width="32" height="64"/>
<object name="catacombguard2" type="spawn" x="64" y="128" width="224" height="128"/>
<object name="catacombguard3" type="spawn" x="64" y="384" width="224" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="catacombguard3" type="spawn" x="320" y="96" width="288" height="224">
<properties>
<property name="quantity" value="3"/>
</properties>
</object>
<object name="catacombguard2" type="spawn" x="320" y="384" width="288" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="20" height="20"/>
</map>

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="15" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA7WU2w2AIAxFi5I4gI7hum6AE+AGuIEj+K0baITEJlivrwQ/zk+5nrYkYhSR2ekF5oannM6IBnUkz849epANudjVeSpfG9WREvQYQDbknJitJozsEUA5J2bjelNcuyVxlnfuRL8W+CZNNOtzPc7yztKHWLxrBT608xvfW/7wmR98qWZM7Yv/kZQuxn702v2bu3eDvVbchQNniA11rr40sAQAAA==
</data>
</layer>
<layer name="Objects" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGDrgIysDgwgQl7EjxDZD2RnsqHyQGpBaXMCEiYFBiA3CboPqMWZCyIP0fmRFqG1DshNZHQwUs+C2qwIqB7MPHfCxo/JN0MxPhupfyY5gwwC6GLo8NvNB4AnQLXVo4jtYIGIgOXRzsPl5Bx4/EwLY3EQMiGTGrrccKa7/M2PqQfZPKQXuRrYfn/8pCRtiwGdGVD7Iz9jiDQQI+RfdLGTwhRFVHYyPzAbZi88MagIA3LtMb7AEAAA=
</data>
</layer>
<layer name="Above" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoB34z0w9tSD59ySYR6l9pJqFzW0z2YkTw2YeNQEu85JZqGseuYBU8wi5+wsj+W6hhv3EgA9UDkNa+3mwAAAvQOAZsAQAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHKEYBgSRaGLV45JHVoduPi5xYtyGTT0ueWxmYrMbl3n41OPyC6mAXPOIcR+6PLluxhf31DKPXEAojVLDLHx+x8amJB8SqxYAcKEtzrAEAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="15">
<object name="south" type="mapchange" x="288" y="448" width="32" height="32">
<properties>
<property name="map" value="catacombs3"/>
<property name="place" value="north"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="15">
<object name="catacombguard3" type="spawn" x="96" y="256" width="480" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="Luthor" type="spawn" x="288" y="224" width="32" height="32">
<properties>
<property name="respawn" value="false"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="20" height="15"/>
</map>

View File

@@ -50,7 +50,7 @@
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA6WUOw7DIBBEF+wbOMdwmxu7SgtV2uQGyQ18EWcVo0xGwGJcPMmSl7d8BhYnshBPA66vjR+9yMvVGXzZHan28qldXZ3J/7vZh7WztIFudMYDjhLqfMAcA9HjRF8O7mH14n20zp17WWtmB+cGM5Kw1owOzs2UyaX2KPnUhY5aRrAH5iP54j6fnnPN+cZOl3Kj9Z6Zm3LP+KwxobHO8gU6f8uXq0v34Oi9Sf81R+/dab17Lazgs969Fq7yZZbf9xk28EKKkUAGAAA=
H4sIAAAAAAAAA6WUTQ7CIBCFB+wN6jG69cZduYWVW3sDj+BFdKITny/AULr4kiYdvuHnwRpEVmJz4PrW+CmKPEKbU6y7M9We37XP0GaO/272Ye0ifaAbnXmHo4Y67zDHRIw40VeCe3i9eB+9c+de3prZwbnBjBjemtHBuZkLudQeNZ+60NHKCPbAfJgvf+czcq4l3zToUq603iNzU24FnzcmddZ5vkTn7/lKdXYP9t4b+29ZUpf37vWAefPevR4u8mGR3/cRXkPRUeNABgAA
</data>
</layer>
<layer name="Objects" width="20" height="20">

View File

@@ -50,22 +50,22 @@
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA1NjYGCwZMSP1Rgg2JMRP4ap0yaASVEHsp8YdZ5EqCPGLG2oWaYMxGEAt0rhZEABAAA=
H4sIAAAAAAAAC1NjYGCwZMSP1Rgg2JMRP4ap0yaASVEHsp8YdZ5EqCPGLG2oWaYMxGEAt0rhZEABAAA=
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB64M0MwCHhA6VQgzcrKwMDGilAXzgzBkUAcAcRLWBgYSoF0GRAnsyDUwcxAB0tYUPkRWPRiAx2s+OVBwIAZ1fxyIL8CyWx0uwkBAPxAghxAAQAA
H4sIAAAAAAAAC2NgIB64M0MwCHhA6VQgzcrKwMDGilAXzgzBkUAcAcRLWBgYSoF0GRAnsyDUwcxAB0tYUPkRWPSCgD07Kr+DlYEgMGBGNb8cyK9AMhvdbkIAAG5QCwhAAQAA
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgYGD4z8xAFEBX9wGHPpA6EVYE/z0edeTYiwsg25MOZGcQqQ8E/rARrxYZAACKLL/NQAEAAA==
H4sIAAAAAAAAC2NgYGD4z8xAFEBX9wGHPpA6EVYE/z0edeTYiwsg25MOZGcQqQ8E/rARrxYZAACKLL/NQAEAAA==
</data>
</layer>
<layer name="Walkable" width="10" height="8" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQpDFmwMGG8XEBbOYQUkfIPGL0kuI3APcR0NJAAQAA
H4sIAAAAAAAACxNkYGAQpDFmwMGG8XEBbOYQUkfIPGL0kuI3APcR0NJAAQAA
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
@@ -75,8 +75,13 @@
<property name="place" value="stairs_down"/>
</properties>
</object>
<object name="Note" type="sign" x="224" y="128" width="32" height="32">
<properties>
<property name="text" value="On the ground, you find a piece of paper with a lot of strange symbols. You can barely make out the words &quot;meet me at Lodars hideaway&quot;, but you are not sure what it means."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8">
<objectgroup name="Spawn" width="10" height="8" visible="0">
<object name="crossglen_beetle" type="spawn" x="64" y="64" width="224" height="160">
<properties>
<property name="quantity" value="3"/>

View File

@@ -5,25 +5,25 @@
</tileset>
<layer name="Ground" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA9NkYGDQHOTYg4pm6SDhwagOANz3PuSQAQAA
H4sIAAAAAAAAC9NkYGDQHOTYg4pm6SBhWqpTI9M8AEESfViQAQAA
</data>
</layer>
<layer name="Objects" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGFwghopmJVPRLHoBAJdDj86QAQAA
H4sIAAAAAAAAC2NgGFwghopmJVPRLHoBAJdDj86QAQAA
</data>
</layer>
<layer name="Above" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGAWDCQAADA0iRpABAAA=
H4sIAAAAAAAAC2NgGAWDCQAADA0iRpABAAA=
</data>
</layer>
<layer name="Walkable" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGL5AcKAdQAYAAGnI7B6QAQAA
H4sIAAAAAAAAC2NgGL5AcKAdQAYAAGnI7B6QAQAA
</data>
</layer>
<objectgroup name="Object Layer 1" width="10" height="10" visible="0">
<objectgroup name="Object Layer 1" width="10" height="10">
<object name="Sign 1" type="sign" x="192" y="96" width="32" height="32">
<properties>
<property name="Text" value="Item text"/>
@@ -31,6 +31,26 @@
</properties>
</object>
<object name="start" type="mapchange" x="96" y="64" width="32" height="32"/>
<object name="key1" type="key" x="32" y="128" width="32" height="32"/>
<object name="key2" type="key" x="0" y="128" width="32" height="32">
<properties>
<property name="message" value="A strange force prevents you from entering."/>
</properties>
</object>
<object name="place2" type="mapchange" x="192" y="256" width="32" height="32">
<properties>
<property name="map" value="debugmap"/>
<property name="place" value="place1"/>
</properties>
</object>
<object name="place1" type="mapchange" x="0" y="0" width="32" height="32">
<properties>
<property name="map" value="debugmap"/>
<property name="place" value="place2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="10" visible="0">
<object name="ant" type="spawn" x="96" y="128" width="192" height="160">
<properties>
<property name="quantity" value="2"/>
@@ -48,11 +68,5 @@
<property name="type" value="traveller"/>
</properties>
</object>
<object name="key1" type="key" x="32" y="128" width="32" height="32"/>
<object name="key2" type="key" x="0" y="128" width="32" height="32">
<properties>
<property name="message" value="A strange force prevents you from entering."/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -1,122 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="30" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="385" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="513" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="641" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="769" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="897" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1009" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="1137" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="1265" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="1393" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="1521" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA81WyRHAIAi0pDRiCfTfRl75MCzKsZoHnwxH9hCdY4z5w3g2A9VLw1wvh4G3I6d7boTzLNfef4nxrSsE4GPh7dQl6u9dHFW8up7F4dcXaajzTumq+2r/MjyMdPOwZvfjStsTZ+bGTMTpid2IZq28X9WSzTHqJ8WZnreRdzL8Rc6QtZN0PctHlfwsP4y53W+zqH47b6VMD3TOq/9mcWb5zvPeDkfozo3UZXyP7lZvP6MZt955WeyseAE+3Ya4EA4AAA==
</data>
</layer>
<layer name="Objects nonwalk" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA82WvU7DMBDHQ/PhB4C3YeuWRwCeANgLdGQA2hFFBSRgCROwhZmlvEF3qBTeoDwAZ7WnXk93tpMWib90Suyc/bNzd06KJIoKwZ7Ammovi6L9zO9XKkzkThdz7MI1Z/OdmCg6BTszy75D8DnycCeZn4vKGbcHrEuwK7CBmbdDVTfgcl0Yd9snFxftu0Wca884yx07rGyZX5UyzsYW4ztx2Ka5NrYY325HHnvekbnvSixpP3IPlNwu2ZyvZOw14WrjNSEX65lfkfsMvHvgPIA9gr2Y5brs+GPwnW2FMa0fcrGe+ZXvl0vLd56rdUBdcNPUJe+Z53mSrvrGqbsuqNXC2gcsx5DL83yHcbdTd11QQ66rTqR8vlHyn+rW4SNx75T9ovrx8n4Yy/32ftTRfdru16eR53205Wpnr+9M1ri9ePV5nsncGbR/hPl5v6+2tP1qXJu7PJ+l/qoll663zbfQct+EOqo83DJgbSFcqb9QYmU1I1wet5C88nH5mYeiZx/1Cc0rzp2YVa6UI1b07KM+oXll1/0hrG+cuL8L6wrX8Qn7/FrY1Mz7Je4wdrf7DZ9L+sv9/icu/mdLXP6e1m1Lavpvskn7BYOuLN8QDgAA
</data>
</layer>
<layer name="Objects walk" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIA6EMhGpkAZgIO0mF/izkadPZQj6FQQmMdPXPmF22phLbPjz08h+XAAUvv/JTFO4zBssgBy3DKT71wxAHoXZOZB2UwsQE3fk+BefuaSkF5CdEwcofQ3V8p9U8JVx1F5C4BMj5elhKPl3MNubT8BcdHtp3WZ1YMNuLzqgdj0Jsg+GyQW43DRQaQYZPKFiG4tUMBjKfgC4RonZEA4AAA==
</data>
</layer>
<layer name="Above" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgwA3qGfFI0hCM2jv0QQERfkJWM4+dgWE+FryAnTSz0cOykBm/mnVYzMclji+ekOXm4DCT3HgmZO8soH09TAwMvUDcB8Sz2THV0MJeSvTT0l5aAGLsxZYuLYFxMR0oboUjTVADILsNlt49ofZ5EbAXW/6AAUJ5GGZvFg4zkMWJUYNuLiF7qQ1G7SUsjytNEFPeU2JvPg49uMTJsZcSAPI/rrxEbtlBDBjoMvoKifUkLjXEpit8ZuNLC7C4QVdDbLo6B/TneSi+QEFZjqscJFZ+JIEyPOGMHk6U8kcBBAAArZCpHxAOAAA=
</data>
</layer>
<layer name="walkable" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA82UXQ7AIAiDvYL3v6zvpsVWRCUxmRv48VPXW2udLNfUOMab2eg8lJ/CVZnovExvHC6KjfYn2BVzvs1VedXcKFadJdPdyjeKrdAN89tln5idGufqJaP1LHee6a16lZrndytT+8j8o+/Rcw98dutdmaNVh8ti1BzRXVXyUrm7uvqB6874B250rsN1+/yaq97f6nqrzNUUujeZPcvphd3msn8jelfV51drAIev7x4QDgAA
</data>
</layer>
<objectgroup name="mapevent" width="30" height="30" visible="0">
<object name="exit" type="mapchange" x="832" y="64" width="32" height="32">
<properties>
<property name="map" value="startmap"/>
<property name="place" value="well"/>
</properties>
</object>
<object name="Sign1" type="sign" x="480" y="640" width="32" height="32">
<properties>
<property name="Text" value="North: To the great hall."/>
<property name="Title" value="The sign says"/>
</properties>
</object>
<object name="Sign2" type="sign" x="480" y="384" width="32" height="32">
<properties>
<property name="Text" value="You feel a cold breeze sweeping over you."/>
<property name="Title" value="Chilling wind"/>
</properties>
</object>
<object name="entrance" type="mapchange" x="0" y="800" width="32" height="32">
<properties>
<property name="map" value="wilderness"/>
<property name="place" value="cave_entrance"/>
</properties>
</object>
</objectgroup>
<objectgroup name="spawn" width="30" height="30" visible="0">
<object name="boss" type="spawn" x="224" y="0" width="448" height="320">
<properties>
<property name="quantity" value="1"/>
<property name="type" value="magic"/>
</properties>
</object>
<object name="prison" type="spawn" x="768" y="640" width="128" height="128">
<properties>
<property name="quantity" value="2"/>
<property name="type" value="Abomination"/>
</properties>
</object>
<object name="" type="spawn" x="288" y="416" width="480" height="512">
<properties>
<property name="quantity" value="2"/>
<property name="type" value="undead"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIogDnM+HGuORheuuZcGNc8jC9jgwMDFlI2BEJg+xwZMDEyHpx4XoK9OLCxOhFl9/NwsCwhwURhvj04pLPh4aZKjN2eXtmiHwpkC5DUwMSD2QgHjui8QGUgaGmWAIAAA==
</data>
</layer>
<layer name="Objects" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgQAAldgayQA5QnxFULycLA0Mukjnm7BAxZShtgSQ3kQ1CO0HFJIHymqwMDFqsEH4yMwNDCjNCzgNJ70Kg3g5WBP8vkG/FCsEgUAzUVwLEySwQ/iM2hNoeJDYtgQ4rKv8u0N4LbAg3KTFDsDIzpr7vaG58i8QH+cWIGYKNoXpTkcw4DTT/DAuq/mQ0PjZAjBpiAQBdYTIIWAIAAA==
</data>
</layer>
<layer name="Above" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoAz8ZyZfnlS9l9hQ5ZJZaGPvewr04gPIepH9QqpeUuXx+YcYeXIAAL3It9VYAgAA
</data>
</layer>
<layer name="Walkable" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMIYBkiVxwVwyRHShw+Q4yZq+pWQf4m1n1A8IPMB6O0ElFgCAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="15" height="10">
<object name="down" type="mapchange" x="224" y="256" width="32" height="32">
<properties>
<property name="map" value="fallhaven_arcir_basement"/>
<property name="place" value="up"/>
</properties>
</object>
<object name="entrance" type="mapchange" x="352" y="288" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="arcir"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="15" height="10">
<object name="Arcir" type="spawn" x="64" y="96" width="384" height="128"/>
</objectgroup>
<objectgroup name="Keys" width="15" height="10"/>
</map>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="12" height="9" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="12" height="9">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA1NlYGBQJRFbMhKHYeo9GYnDMPW+RGJaq4f5g1j1MH8Qqx6ETUnEAJXb3aOwAQAA
</data>
</layer>
<layer name="Objects" width="12" height="9">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB2Es5Om/gpUfTIzA0MKECcxo/JhNAxchqovBoqVAHEREIuyI/gwGhuwJ8JtTlC9SWh243JPEEiMBeIOmN0gPjHuUURzD7L79HHowQcAKoLzT7ABAAA=
</data>
</layer>
<layer name="Above" width="12" height="9">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB38Z6a/+mSWweUefOA9iepJAQBdhNW7sAEAAA==
</data>
</layer>
<layer name="Walkable" width="12" height="9">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHISYgUS1xAB85hOyjxT1pABSwwUAMSyoI7ABAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="12" height="9">
<object name="up" type="mapchange" x="352" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_arcir"/>
<property name="place" value="down"/>
</properties>
</object>
<object name="Statue" type="sign" x="32" y="96" width="64" height="64">
<properties>
<property name="enablekey" value="qarcir"/>
<property name="text" value="Elythara, mother of the light. Protect us from the curse of the shadow."/>
</properties>
</object>
<object name="Torn page" type="sign" x="128" y="224" width="32" height="32">
<properties>
<property name="enablekey" value="qcalomyran_tornpage"/>
<property name="text" value="You see a torn page from a book titled 'Calomyran secrets'. Blood stains its edges, and someone has scribbled the words 'Larcal' with the blood."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="12" height="9"/>
<objectgroup name="Keys" width="12" height="9"/>
</map>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIIhLnM+HHMHX1TPgxTJ0uA35MijqQ/TD+VHbs6vKh9sP4S3GoA6kJZIBgXQYEGxsGAArJQMRAAQAA
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIA2osyDYmeyYYiCgwszAYA4Um8CGKm6Ops4EqC4ZKLYAqO43EPcCsSQrA8MjIP0QTS8yWIsk143E3o9Hz0ZWBPs8krpkqJtEoH65iKSOGAAAgGHpuUABAAA=
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB78Z6ZM3SU2BoaLbNjVJbPQzl508J5IdcQAAFOlOl5AAQAA
</data>
</layer>
<layer name="Walkable" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHEDMgIONrgYXwGUetdXhwgBRRV8oQAEAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
<object name="entrance" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="athamyr"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8">
<object name="Athamyr" type="spawn" x="160" y="160" width="96" height="64"/>
</objectgroup>
<objectgroup name="Keys" width="10" height="8"/>
</map>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="17" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="17" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIogLOZyIfw8zwYEbgeibSMLIZEVAcDsXmQGwBxN4MEKwGZJsi8WEYZkYEmhyyuzyw6MNmBro4TC/MbeSYAdOL7h9cZoDCllh3Y8P50LCNQHK3KhZzVKHhiS6nBo3HQAbSMEw/shgAAqtc5agCAAA=
</data>
</layer>
<layer name="Objects" width="17" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoB5wY8HOX8mGXx4bcGeG4DA0NSA+Kysqn1iQzILJ7wWatQaI17JiV7uEBPOJAepAP2kwo7oFlx2CbPjNQvcPNn/QAiDbG8aMXQ5dnFIAAJPbwWSoAgAA
</data>
</layer>
<layer name="Above" width="17" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoA74z0wbM9SBYhp4zJ7DysAwl5X27qC1Gej+GCh3YAPvqWAGpQAAZgSVd6gCAAA=
</data>
</layer>
<layer name="Walkable" width="17" height="10" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHCEYBpD5hNRiU4MP4FJDDzMI+YtUQEnYUDOeQBgAbOFrk6gCAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="17" height="10">
<object name="entrance" type="mapchange" x="384" y="288" width="64" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="barn"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="17" height="10">
<object name="Gaela" type="spawn" x="32" y="160" width="32" height="32"/>
<object name="Larcal" type="spawn" x="288" y="160" width="96" height="64">
<properties>
<property name="respawn" value="false"/>
</properties>
</object>
<object name="Unnmir" type="spawn" x="384" y="96" width="32" height="32"/>
</objectgroup>
<objectgroup name="Keys" width="17" height="10"/>
</map>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="15" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+NkYGDgBGJVIE5mYmBIYSKdVoWagYxBYsVAuRIm0mlVNHNgWA0HlmWFYFzyqmgY5m5c6glhZH8j+5Nc85D9jc+fpOAEZuqahxyOg9k8SuIVWzxTEq/Y4jmQAYHV0Nj4MDY9IIyc55D5hMzDpgcfJtY8YnEgAYxLHwAX3FJ5sAQAAA==
</data>
</layer>
<layer name="Objects" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgwAQuLKSx8YGZ7AwMIVC1BkhsEACxQWIw9kx2wuatBKrZyAphOwDZMqwIOTlWiFgyC0TNSigbHYDcvhnJroOsmGrQAboaFzR/4FNLjHnIZsizorr7IpB/kpmB4RQQXwXio1B8DCp2mhmiBhfoYibsHlLALGbsmFrqkcE8YDyth+IFOOITHSCH3zwi9aGrk0cKz2Ic6RLZbYTciMsMWgJS3DdUAADi1JZHsAQAAA==
</data>
</layer>
<layer name="Above" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgQID/zAxUBcjmrYSyeVgZGHihmI8VIraaSHth5iWzIMwDsdEByDx8foHJYXMfNkCsee+R1OwEsncB8W0ksW1Qsd1EmocO9rDiFntPwLwuLBgXwKYWWT0t08lgNA9f2I4C+gIA1uw8t7AEAAA=
</data>
</layer>
<layer name="Walkable" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHCKYAQebEnUMaGxcAF09rc1DV4vLHlx60OWpAYiJH2rqw6aXWLXoYoQAqWGLTQ2pasl1H6l5hRQ5cuKIHPPIxQBVn97EsAQAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="15">
<object name="southeast" type="mapchange" x="512" y="352" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="church"/>
</properties>
</object>
<object name="southwest" type="mapchange" x="96" y="352" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="church"/>
</properties>
</object>
<object name="down" type="mapchange" x="576" y="160" width="32" height="32">
<properties>
<property name="map" value="catacombs1"/>
<property name="place" value="up"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="15">
<object name="thoronir" type="spawn" x="288" y="96" width="32" height="32"/>
<object name="chapelgoer" type="spawn" x="64" y="256" width="512" height="96">
<properties>
<property name="quantity" value="3"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="20" height="15">
<object name="qfallhaven_church" type="key" x="416" y="192" width="32" height="32">
<properties>
<property name="message" value="You are not allowed to enter these parts of Fallhaven Church without permission."/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="12" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="12">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA5WQzQ3CMAxGTRJZ6kycemABJNagbJATCwATAMvBBnDCVmTlh7hJDk9Kvziv8jcBwKSw34yjucS3mJxalt61fN7kcHbB+M3nK3HDPt8MkZ0N2R1jxucH8cS+PlIfw3uVmSBvtD4Y2UXe+A5f2VGK7LK1uqf01WbPqL9p+Vr/XfO9HPVCvF3sbsRXzh/J421gMev91ijnP+Q7EV8X7g6QM8N/NsIPFURebcADAAA=
</data>
</layer>
<layer name="Objects" width="20" height="12">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGBiwjhk/n1igxQrBe9H0o/OJBZZAs6xYITQymMLOwBDARrp5PayE1ehgUQMKj1x2BJsUsJuFgWEPC6oYcnjgCptkFkwxkNtOA8XPoMm9h4bFFHb8+nEBZD9vJCKMkEE3WjzkMUMwDBzEYh7MjgQk98Lc0MKOqR4ZXISqY2ZH+BEkBnJHAZJeH6g65DAB6aljg2BaAAD4BnpfwAMAAA==
</data>
</layer>
<layer name="Above" width="20" height="12">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoC/4z0ycGCnmebEyMGixooq1sJNvHjaxZBbqmkeqHhh4j0UOmxgu88gNl2Vo4UtueGAD+PwbgMW95ISfAB5/EzKPUPhSqp4SAADY4MOGwAMAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="12" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMU0xcgAnY8uR6qZ2MyjhjuJMY8BC41NLzHmEgtwhSkhv+ByJynmoYc7trjAJ4bPXHIxALHjO9TAAwAA
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="12">
<object name="entrance" type="mapchange" x="128" y="352" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="clothes"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="12">
<object name="fallhaven_clothes" type="spawn" x="160" y="96" width="384" height="224"/>
</objectgroup>
<objectgroup name="Keys" width="20" height="12"/>
</map>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="12" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAACwtiZGAIIhHnMxGHYerrmYjDMPVRDAwMXkRgmHoQ24MZgpHlsKkHuQubepg4Ms6HugvEjmCGYDWonnos6kFigQy4sRcWMQBgdd8/gAEAAA==
</data>
</layer>
<layer name="Objects" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgIA9EsCPY/cwMDBOAeCUbgm3Fjl2fBCsDw3yg/AJmCB/G9sKhHh0IAu3gZMWvJpIZlS+CZrYtmrwwFrs78NjxhA3Btofq7SbgJlwAAOZBWceAAQAA
</data>
</layer>
<layer name="Above" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgIB38Z0awRVmJVy+CRS02MWTzSXUPqepxsZHBe2bCbHIBAGJabQyAAQAA
</data>
</layer>
<layer name="Walkable" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAACxNkYGAQHGSYEBBEogmx0fURq55UdxKrHl0MALHe5aOAAQAA
</data>
</layer>
<objectgroup name="Mapevents" width="12" height="8">
<object name="entrance" type="mapchange" x="224" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="derelict"/>
</properties>
</object>
<object name="Map not complete" type="sign" x="32" y="160" width="32" height="32">
<properties>
<property name="text" value="This map is not yet done. Please come back in a later version of the game."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="12" height="8">
<object name="Bucus" type="spawn" x="256" y="96" width="96" height="64"/>
</objectgroup>
<objectgroup name="Keys" width="12" height="8">
<object name="qfallhaven_derelict" type="key" x="96" y="96" width="32" height="32">
<properties>
<property name="message" value="Bucus shouts: Hey you, get away from there!"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIIhLnMuHHMHXFbAwMhUBcAsS1TJgYpq4ZKN8CxV4MmBimDl38JQsDQz4Qv2JBqAPZj6xmN1BuDxAXAPEvIJ7KDlFTi6buNFDuDAuCv5QdoiaQAYK9GBBsbBgAva2AkEABAAA=
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIA84sqCyc9mxqwsEyomwIti4QDJQbhlQnSjQHGYgvstGnDveIqnbCLVHBKifDYi5WSFsEPBDUncRqk4WSayHlTj70AEARNZMWEABAAA=
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB78Z6ZMnQgrdc0jV917ItURAwD9BtUCQAEAAA==
</data>
</layer>
<layer name="Walkable" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHAQYBvDJYQOEzMGnjlwxZAwAxlfuAUABAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
<object name="entrance" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="gravedigger"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8"/>
<objectgroup name="Keys" width="10" height="8"/>
</map>

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="30" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+2XsQ6CMBCGm4M+jCNPUY0zEeOojsZBV+PiyENLUy+U2uvRFkw0Dl+uQOnP/9N4shBCLCLYyOFYyeE5zRpocM4K4gg9j3rp74AG528hjjGZnIAm1a/rW8l33RvQpPp1fbvvdiy5flPJ9ZsK52vfcfDUuf1eOq5aqzQVj3N1KT9YK2FoRT+uMjU1+PxUxXntBFo2FcOUWn++C67Xpdw7Zj2u14UI9UpuvTP4mdvvHfxw6+b6Tc0xlFVMfjGZoV8qK43uBcdymF/uHkG/dceyMBXHyEMY8BqlG5OZnVtT9GPUbCxd7l2GMqP2nY3tNWYP1Ratc+zDvb8pelJ/w7h+qaT/P+ic4LfFp3Wp75pf9Gtr6voE80F1EhAOAAA=
</data>
</layer>
<layer name="Objects" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC7VXO0oEQRCdZXv0AnsBE91URJ3ATBERsxExU1DETAMXzHSzDcT/CcxM/GSbiHoE8QQmZrKRsXYxVcybsno/oz4ouvr7uqqrp3qiKMN0HEVJHBWg26ZZr8e5LqC2sTgr/wO4F9FxD3rvGr/ZG84VXftmeSgrZ12xtPw6CBL2q+gtV+zf9Lw1355yu5SdanlOgT7jfsb/xtbQWouVYl+D21eAS/ulDHb8eussC17mPe8qtIVkdwCbt3mfc7DfNZ6/z23zlbwufpC+psv1tRK+XjZ4XxUv4hXGXyjeOcMW1GtqfxTHFJc0vwnjZjzvVBfZqxR5xQa0RfSG4RPxYTc/Cyxd5ml7dJ2gYxXnXwAv2X8JXFegnwHviZdTL8fAJfW2y+u05jH4ldoOAvEs8doM3Bni7XYeKDMBHSVR5yd+vR7OdCo3XNYvtqEdlu1Yx7iVeW0jzpd43LnL9HPws/X9cMDTNvqt+4LodT/L3N9+ePHcLTkckLdlfB8o3737u3zr5U7lGn0HXUk7BcQra2xynn30nE/M+xe5LsQraLAPJnw56vkmq3ZMWBh3P/UPP3/LZTIB/Wmc36O9Huf8VyB76P6hvW8l8mkvf3ypc2pCXKV8vvdc3vixn9X8XSVxhvGG+obLSx1vHYiTOp9dqr4bzzzngcfqOMN4E93KNYIjfDf7sQnYjrwvRm4hP8k7M5RDk2pucwhOvVPRzwS51+IvWle/4UbUG9v6TnY7d+3nMqgPkI9CuSn0phCE/il0nrVyEeZRzMWhcVb+xje+BYq1kUAfQfycxvZ5WHMtzm89NfzLEA4AAA==
</data>
</layer>
<layer name="Above" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC9VWUQrCMAytaPEo3ffwBE68iAfat6f0CJMihTiavjZJiz4Y6xaat/cWkjpni8uhHJ9BXLrvBuJXIa90X8J21O2X+BW8c5PX8VLdKNddyUUhrQ8t0H/Wesrp0tYHAqerNy/NT9faumzhfXXWSDGCa/Wfi3vm3iE8z9/3XwDSKtHZA6V5Z93LaL7SvNPOLGk+655S65/1mSPqXSpqy/rMkfMPacuhVS/lTbqRthxa6yT2zBqfa/OhWCDrx8mGd2K499+0Pz9odJdmKDeHNHxhYJ9NPo3kRKidRfFKPi/+f2YYxRvJS7o3EA4AAA==
</data>
</layer>
<layer name="Walkable" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+2TUQ7AIAhDewXvf9n9GlJRKMN9jMTMbIxHsQ4A41/phUtMoI9/Gl3sYZ5vsrt95M2T6Ve1ZOLrXO8/kBw223mf9SmrGcmp9ipQ128m7Pyr7top1/uuaFZ8oejMzkud8Q0mpnfdXNbHW9yOc2Z1O3TaupalMOcaK23eOa/qRbwS0atyT8+R5bL9rtedV1YRza9gqqwKn1ffnS7uA22xU3oQDgAA
</data>
</layer>
<objectgroup name="Mapevents" width="30" height="30">
<object name="west1" type="mapchange" x="0" y="416" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="east1"/>
</properties>
</object>
<object name="west2" type="mapchange" x="0" y="864" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="east2"/>
</properties>
</object>
<object name="clothes" type="mapchange" x="640" y="736" width="32" height="32">
<properties>
<property name="map" value="fallhaven_clothes"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="barn" type="mapchange" x="224" y="672" width="64" height="32">
<properties>
<property name="map" value="fallhaven_barn"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="potions" type="mapchange" x="512" y="576" width="32" height="32">
<properties>
<property name="map" value="fallhaven_potions"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="church" type="mapchange" x="320" y="256" width="32" height="32">
<properties>
<property name="map" value="fallhaven_church"/>
<property name="place" value="southeast"/>
</properties>
</object>
<object name="gravedigger" type="mapchange" x="704" y="96" width="32" height="32">
<properties>
<property name="map" value="fallhaven_gravedigger"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="Map not complete" type="sign" x="416" y="928" width="32" height="32">
<properties>
<property name="text" value="This map is not yet done. Please come back in a later version of the game."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Citizens" width="30" height="30">
<object name="fallhaven_citizen3" type="spawn" x="672" y="224" width="256" height="288"/>
<object name="fallhaven_citizen6" type="spawn" x="32" y="736" width="608" height="160"/>
<object name="fallhaven_citizen5" type="spawn" x="352" y="448" width="160" height="448"/>
</objectgroup>
<objectgroup name="Keys" width="30" height="30"/>
<objectgroup name="NPCs" width="30" height="30">
<object name="fallhaven_priest" type="spawn" x="352" y="320" width="128" height="64"/>
</objectgroup>
</map>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="12" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIIhHnMxGHYerrmYjDMPXeDKjYkxlCZyFhb2bc6nFhmNs9mIlTnw91VwSR6kFqAxlwY28sYgBy9P+2gAEAAA==
</data>
</layer>
<layer name="Objects" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgwA+U2LGLc7Ig2PzsEP5KNgYGIyDbFoseSST1E9gQfCcsanuB8n1AzAmUWwJUtwDIToaqFwKyO1hR1a9lg9AHkNTBQB3QjHp2THF0YI/DnzBQBtRfDDVDBIvaJQTMxwUAmDmytIABAAA=
</data>
</layer>
<layer name="Above" width="12" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB38Zx5Z6t8D1SezkKaHWAAAEkkyeoABAAA=
</data>
</layer>
<layer name="Walkable" width="12" height="8" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHIQYGWDjY1OPro4Bizw283EBQu4iRj02NyJjAJ5xdIeAAQAA
</data>
</layer>
<objectgroup name="Mapevents" width="12" height="8">
<object name="entrance" type="mapchange" x="224" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="nocmar"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="12" height="8">
<object name="Nocmar" type="spawn" x="64" y="96" width="288" height="96"/>
</objectgroup>
<objectgroup name="Keys" width="12" height="8"/>
</map>

View File

@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="30" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+2WTQrCMBCFw0APk6WLnkHEtYi41L0L3XuBXkRvoKczQgtDOr9NAi5cfIxJ04Y3My8xhhDiyL4LYd3xMYZ21NxzAzzS3nhuCzzcvgfgodZPOvHcEXg8Or16L8Dj0SnppbgDTy29pdTU6+GUvnuGeWyt95q+e4N5bK13hRjQb6yfek/yqse/cdyXykPu0y+SVy3+teSBOgMlr3r1epC8WqK3BE1vq3xoelvlQzuftedLc6Cdz9rzPAdLvFnSH5N/S73p7Q+pLtTdWqs/pLrg2tS6T7k7m8N6n2rn+G7E2lOPNH4CH/P6WXrFsu6Vxm/go9YnVK9Y1vWIIRv3RP0s/8Os6yYGZv7P7/EBww+lixAOAAA=
</data>
</layer>
<layer name="Objects" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC6VWvU7DMBAmisMT9AW68QQ0AwMSVVV1pYrITAfECGok2LpApUqFiacozB1gZ2HkATIiITEisUCO3MmXy9lN1E+yktiX+3y/dhrt/KOHTx9iJgPysfIPn3fJAFKhS0NTXW0AvFIvIY78PKtwu73cb/hn6lh/DutzTeIF2A/sGAZ1eznGu+XzMaw+XfvyITfW3kFg9wycr6YqO0Hel4KvE5VPgGG8puEeeF4Rb+r4d4TrXVxfKHJ7LXkvjOVd4hz4Ad5n6BNYXzK9tE7vPL/66Ksz4TMNB0E13nL41iE3uJ/GyDfx8HZFfAFzIS9jLTFA3hzlOmwP/L2v6OG8TbBidTQQ9rr2OXbwzhrEg0D1Ozd1XsLIY0us+JlqE2r2J7TfGjJTzzkAz0XKTZIBTqPwUm3ymj13cEM9uXLONc9BvBn6GnKE/HRVcF57bPblRhLV60/7l9ck15d5Yg9ygwY9Y23KfIBB9X7o8BOgy3TK/pxjfBOUoT7+jfKyJglaf7qLrL2JsEP2Z7KXQDlx64mLC1SbpE+rR15znHdq6vLaeaH1cqrNTb2TRtyy5/Bezmv2g9nrOl/J/7kjfpknz96N9ZesWeJtg3WLfgeAnLvEf6aOuPkg++tKyalhWA6A7z40w/ogG55YHD7x/Y3p5/Wi3b2A86Rhjvt6pwuyvqmegfNU+OXIVGUAC9Gv+Dn6G+rzfH9yn+C3XjEX4/xN8X1srAzXo91tAF/sDJR9R8pOhY0Uj4fimdDeWtxtthkEbc++u1ymyK/FGSvP3Cyy37Le+HcaVe8R2l1E63+uPsJ1/AEQQaAnEA4AAA==
</data>
</layer>
<layer name="Above" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC8WWzQ3CMAyFg9JuwA7puWKCCrEIJxbhVIlRO0LBhwjLcvKcn8InVWrkJLWf7TTOlRFG56axcFHnvVafXn85tfuF9piZPfpwBWtews/AxjEGtMfC7D3itLL77zvyMSLjrWFj3/1lvJFgyCuC6yA1oXHOrvEPHYhWHTirx3OIXZnXo99nsGZL+Me/XaPHcnDuUlrweGPNabWovSMePq0FivfWeEageJFd6qD9TzQtULy1eqRAOml9YrXLvFt7k0j1Sc5O+uZ6FvVmC7mezeWmtU5zoNwdBeXGcnbKfMT6SGliudNZzk7KR8k9rFdN7ZnzjPtG3If6mtK+a5kTPs/U0O8SrUfPI56D9tL+MRx57vS4Lx5N6V2uZcx5DvU+l/IGyDNzbxAOAAA=
</data>
</layer>
<layer name="Walkable" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+WTUQ6AMAhDe4Xd/7J+mRgdoyV0xkjih5PxoNQBYPz0wUvMM+5nbt6M4WRn8+Ly7p6ZCbfWDt91xqy3qNesxk5uVbOs1+p+M7bKjf6jClfx4qovto+OULVn8xRfMTXZ71EeExUum7PyKaPzPS/r2+WXr3FX/uvkAs95u3RR77NcVkd2BnYfTu6M0TlvVE/lYnFP8VSkA+uXqic7Yqdf1P066h64+UhYEA4AAA==
</data>
</layer>
<objectgroup name="Mapevents" width="30" height="30">
<object name="east2" type="mapchange" x="928" y="864" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="west2"/>
</properties>
</object>
<object name="east1" type="mapchange" x="928" y="416" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="west1"/>
</properties>
</object>
<object name="west" type="mapchange" x="0" y="128" width="32" height="32">
<properties>
<property name="map" value="wild3"/>
<property name="place" value="east"/>
</properties>
</object>
<object name="Signpost" type="sign" x="64" y="224" width="32" height="32">
<properties>
<property name="text" value="Welcome to Fallhaven. Watch out for pickpockets!"/>
</properties>
</object>
<object name="rigmor" type="mapchange" x="352" y="160" width="32" height="32">
<properties>
<property name="map" value="fallhaven_rigmor"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="church" type="mapchange" x="768" y="256" width="32" height="32">
<properties>
<property name="map" value="fallhaven_church"/>
<property name="place" value="southwest"/>
</properties>
</object>
<object name="tavern" type="mapchange" x="256" y="416" width="32" height="32">
<properties>
<property name="map" value="fallhaven_tavern"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="prison" type="mapchange" x="416" y="768" width="32" height="32">
<properties>
<property name="map" value="fallhaven_prison"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="derelict" type="mapchange" x="128" y="832" width="32" height="32">
<properties>
<property name="map" value="fallhaven_derelict"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="arcir" type="mapchange" x="800" y="800" width="32" height="32">
<properties>
<property name="map" value="fallhaven_arcir"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="athamyr" type="mapchange" x="672" y="544" width="32" height="32">
<properties>
<property name="map" value="fallhaven_athamyr"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="nocmar" type="mapchange" x="160" y="672" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nocmar"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="Map not completed" type="sign" x="256" y="928" width="32" height="32">
<properties>
<property name="text" value="This map is not yet done. Please come back in a later version of the game."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="30" height="30"/>
<objectgroup name="Citizens" width="30" height="30" visible="0">
<object name="fallhaven_citizen1" type="spawn" x="32" y="256" width="737" height="317"/>
<object name="fallhaven_citizen2" type="spawn" x="160" y="256" width="480" height="448"/>
<object name="fallhaven_citizen4" type="spawn" x="544" y="320" width="352" height="384"/>
</objectgroup>
<objectgroup name="NPCs" width="30" height="30">
<object name="fallhaven_oldman" type="spawn" x="864" y="608" width="32" height="32"/>
<object name="fallhaven_guard" type="spawn" x="448" y="832" width="32" height="32"/>
<object name="fallhaven_drunk" type="spawn" x="320" y="480" width="32" height="32"/>
<object name="fallhaven_priest" type="spawn" x="672" y="320" width="96" height="64"/>
</objectgroup>
</map>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIIhLnM+HHMHX1TPgxTJ0jA3b8koWB4RULYXV5QDW5LAi3EVKXD7Ufl7qfQDW/WCBqAhkg2JEBwcaGAX/psXRAAQAA
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB14sWDSuewI+URmCI6CyoPoFqC8DysDgy8rQl0hMwQnA+XVoPQUqDlhzMS55Tcbgh0GNQMGEoBmabEiMAyYIakTAaopAGIrVgQmBQAAQKioOUABAAA=
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB78Z6ZMXRQLdcwLYCfNXhBgR9Lznkh7iQEAIW5BEkABAAA=
</data>
</layer>
<layer name="Walkable" width="10" height="8" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHGDMgINGlscFsJmFSw6bOmLdhgsDAKh5qvpAAQAA
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
<object name="entrance" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_ne"/>
<property name="place" value="potions"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8">
<object name="fallhaven_potions" type="spawn" x="64" y="96" width="192" height="64"/>
</objectgroup>
<objectgroup name="Keys" width="10" height="8"/>
</map>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA1NjYGBQowCnM+HGuORhesuZcGNc8jC9AUjYkhmCYXx0eWRxXHLU0AvyG7l6y/HoxWUuIZzOhNtcfNiTGaLPlAETB2ARw4YB0qlcUFgCAAA=
</data>
</layer>
<layer name="Objects" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoA5Yx8zAcIQdwV7JhpDzZkGl0cFeZuxsEIgG6mFlhdDIQAcoJsWK4K8G6hME2r+fDVXdVaC+HqC6XjRxVXYEuwyo5j9Q/3kkNUJI7LlI7F1o7gOZ/R9J7D+aPDI4BZS7CsRHofg0EL9HUg9i32dH4AfsuM0iBcwDmrMeiBcAcTKOOAABVSrZBwIAe8d6l1gCAAA=
</data>
</layer>
<layer name="Above" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoAz8ZyZfHl1uNTN+eUJyyGK0tPc2kvxuNLXn2BkYziPhC+zEmQsC99hxyxHSiw+8p0AvuQAACG4FRVgCAAA=
</data>
</layer>
<layer name="Walkable" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMKYAY84A5I8NnW45LEBQnrx6SdFLz5/kgpINQdfeBIKb3QMANMM0CxYAgAA
</data>
</layer>
<objectgroup name="Mapevents" width="15" height="10">
<object name="entrance" type="mapchange" x="160" y="288" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="prison"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="15" height="10">
<object name="fallhaven_prisoner" type="spawn" x="288" y="96" width="160" height="96"/>
<object name="fallhaven_guard" type="spawn" x="416" y="224" width="32" height="32"/>
<object name="fallhaven_guard" type="spawn" x="32" y="224" width="32" height="32"/>
<object name="fallhaven_warden" type="spawn" x="96" y="128" width="32" height="32"/>
</objectgroup>
<objectgroup name="Keys" width="15" height="10"/>
</map>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIogDnM2HHhORAuJ4JFZewMTAUs0HUoMvBMEyvIwMqbgHqa2aDqMliQGBkNTC9b9kw9RPCML2TgXqnYNEPkpsIFJ+EJmfGjNC7GCi3BIfehUDxRUD8kgXofyh+xYIIR1zuQpbLA6rfDcR7gDiXBRGOIDcg61GD8uuR9P4Eqi+A4l8sELlABgh2ZECwicUAeNJCPVgCAAA=
</data>
</layer>
<layer name="Objects" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIAyU2PHLc7IwMMSyQ2h0YAQUz2VHqEMHkiyoNDJwgurTZoXIe7Ei5O6yMTBcAOJkoPhDNlR9HVB1PUDaGoitgNiSlWHQgClI4bkRzV3J0HAQIRDmIHARTS9Mzw82TP3JaOH7Gy3MQOA0UM0ZLPFADgAAe3X9BVgCAAA=
</data>
</layer>
<layer name="Above" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoAz8ZyZPDl3+Iht+vVqsxJv9ngR7SQUwvS3s5OtNZiHdTZSEM7bwgLkBXW4ZK6ZacgAAUTneEVgCAAA=
</data>
</layer>
<layer name="Walkable" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMKYgURxZHlSACH9uOQI2U+sufjchEuMGDcRq5fUeAEAwdhY6VgCAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="15" height="10">
<object name="entrance" type="mapchange" x="64" y="288" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="rigmor"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="15" height="10">
<object name="Rigmor" type="spawn" x="64" y="96" width="384" height="160"/>
</objectgroup>
<objectgroup name="Keys" width="15" height="10"/>
</map>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="19" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA62SzQ2DMAyFX/mTOhCHXqgYAcbg0hEyQ0dgDroSO1RWahGZhNqBw1N+7HxS3vN4A8aL9SquEfPejZcr8kXvmTc3Xj30aktgwqY54Fk4R9Ly2A/Z29XAs/arhcd+hL1H+VJ9qYBPtfXLMzN4n8qXVos/vI9lTHWn5FGe/7yh+oC9+sjdgL1/IWv9+XuHXpo8cnmpPHJ5qTxyeak8zvh3No9wVuXcPkp/Z+GRR/SO/ZP/dUZebCalvkJVcnfwBQAA
</data>
</layer>
<layer name="Objects" width="20" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoAwoseOX52RhYNgMVBPAimDnsCPYyGpAwIiAeZJAtS3sCHYmMwNDFjOEjawGBpzwmCcKlZsCpKuZIexKIF0FZWczo6pPhprbwYoq/o0Nv5sHAvxGc5MoO34+qUAIql8ESguD4hTJzD84wgQU95vR7AaZcRoYtmdYMPkiZLgT5BZVLPpgYmHMmHLI4ALQ7XepEKdTKAxjGNjISlgNKeAgknmguMil0J0Xqew+dEBJfLRQKQ5gADlOH7JBcDILbvXEAGz6qZV20AEAnGJDhPAFAAA=
</data>
</layer>
<layer name="Above" width="20" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoD74z4xd3IeVuuaRC2DmJbNQ1zxqAWqYh+w3UswjRu1gN+89mea1sBOvjxjzqAFA5rFRwV3I5lETDCXzLrJBMLXMo0baQU6rpKRbcgEA5Xi8NfAFAAA=
</data>
</layer>
<layer name="Walkable" width="20" height="19">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMGYgQCbAQcbmzmUAmLNwmUvPj+Sah4pYUYKn1zzGHDIk+NnQupISTO47CUlfsi1a7iahw6o5UZqmYuul1I3YnMfNcMUGQMAKrZNJfAFAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="19">
<object name="entrance" type="mapchange" x="160" y="320" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="tavern"/>
</properties>
</object>
<object name="rest" type="rest" x="576" y="320" width="32" height="32"/>
<object name="rest" type="rest" x="576" y="480" width="32" height="32"/>
</objectgroup>
<objectgroup name="Spawn" width="20" height="19">
<object name="drunk" type="spawn" x="64" y="128" width="224" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="Bela" type="spawn" x="416" y="128" width="64" height="64"/>
<object name="Ganos" type="spawn" x="32" y="224" width="32" height="32"/>
</objectgroup>
<objectgroup name="Keys" width="20" height="19">
<object name="qfallhaven_tavern_room1" type="key" x="448" y="288" width="32" height="32">
<properties>
<property name="message" value="You are not allowed into the room unless you have rented it."/>
</properties>
</object>
<object name="qfallhaven_tavern_room2" type="key" x="448" y="448" width="32" height="32">
<properties>
<property name="message" value="You are not allowed into the room unless you have rented it."/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIIhI3EsAwdRMJYJi6CGYEdmTAxMjqsMkjqwPZj0+NPTNEzUQc6pDtAKkJZIBgRwYEGxsGADh+4J1AAQAA
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB/0MzMwTGBG0DDgwYzAIqwMDPOB9AJmBI2sDgaSWVDNfsKGYF9mQ5UXYWdguIKmHgQeQ9VthKrhZEW1AxksQTMPBDaiiRMDAKswOiNAAQAA
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB58YIbQYqwIMSZWTHX/mTHFhKDqRFjxq8MG6KUumYU4/cgAAENYDURAAQAA
</data>
</layer>
<layer name="Walkable" width="10" height="8" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHAQYHRAjj00tNjNw8Yk1D5+7AVilDm5AAQAA
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
<object name="entrance" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="wild4"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="down" type="mapchange" x="256" y="160" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse2"/>
<property name="place" value="up"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8">
<object name="minorhaunt1" type="spawn" x="32" y="96" width="256" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="10" height="8"/>
</map>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtiZGAIogBbkoFhej2YEdiTETdGVoesNwKKtRlw4wgkdTC7selBtgObOZ5QvYTswOUOXHoJYVMGiLuJVY/sD06ou4nVi+wPTqjd5GCQXgCYw64vWAIAAA==
</data>
</layer>
<layer name="Objects" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoB4QY2Vg2MwOYTOxQmgYX4wVv14RqDwrkBZiRRXDB0Dqi1mwyz1hwzQfBpKBegTZGPCCJTjMhYHLQP0qzBAMY0cyQ8xGBvrMmGY+Bqo3YYZgGBtdHzpIYMYvTwzwZIaEC7JdIDfxsRMX3sQCAOlgEFhYAgAA
</data>
</layer>
<layer name="Above" width="15" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoAz8Zx54vcksA2PvUNH7ngK95AIAHF9zMVgCAAA=
</data>
</layer>
<layer name="Walkable" width="15" height="10" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHAYYGyBFPbFmEWM+Lv2E9BJrLz5AyFxi/E8NDADjdHOrWAIAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="15" height="10">
<object name="up" type="mapchange" x="448" y="160" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse1"/>
<property name="place" value="down"/>
</properties>
</object>
<object name="down" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse3"/>
<property name="place" value="up"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="15" height="10" visible="0">
<object name="minorhaunt1" type="spawn" x="288" y="96" width="160" height="192">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="crossglen_beetle" type="spawn" x="96" y="96" width="256" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="minorhaunt2" type="spawn" x="32" y="96" width="192" height="192">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="15" height="10"/>
</map>

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="25" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="25" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA51V0RWCQAw7DjeAMRzEERyQDXADbgNGcBG9B33G2rR9fuTxQXK5phHbUEo7sSTQDESaHTBWX3up33zBFng8T9zGUqb66ym8xxtz/fARlkcD/bUcuI/HE7XdU/R9BuFqaA+cdxu4DvUyA+N484r/CkBtz088vHvgvJrLdoX5ZTzwrKwHZm95WGdJXpFHO8+fHQ92X8yLeUgX9G61B7sv80cP6QLrlb6v56GzjrpvvbcyYT2Pur+Q92wnbOfWzCtkmM3E6xXrIPYsk0nfU9dauaKHfBeFa/XMm3+qcS/luyhcq2eeh7fTDPcfHf42smdjFzI6/Y1aA7D/uAz/BReuG8vQBwAA
</data>
</layer>
<layer name="Objects" width="25" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA81Uuw3CMBB1nF9HEbFJ0rMCoksLI1CwAoMwRAZgg4xAFkDQB5/QKZfjzg4BJJ5kybKfn+3n5zPmv2HT32kvnfbVtcK1Ngvz1/HQL60xWTpocFR26BdOu3PtouyxcePn/NnvY5kDGqUdj9WOu0vC5wZsM/mcgHskj9M7nAL7ILfw+Kjtg7hFYw6/737iXX36U9Hm/nnu/VE420LRwDdeefaorD6ngfulAbKO+vxdNY+RVwv55BqgDVmn/kje0/PS3Gu+UXQT9CU0yStf8pqOSdp0/jCzRoXyjBlrPsz9HND70XdqlBxgBigXaiP3lr4t/zOwNuQ750reSOtC9Qug1d6Qtm/dOzXnG3gAsSZcXtAHAAA=
</data>
</layer>
<layer name="Above" width="25" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA82UsRKAIAxD8Rz8/3/zP3Rg12Nw4Zo2KeLZEZI8WjhKmV/XOlevepr2+ICR0daF97A9/K3fUca++bqzy7QYvUY5jzVPy4eyvDt+PNZ9KYxWVo/RW1AZSK8y0EzQrKN8tI9mwqyx+2xeloH6UxjeO/N8LNfLjnyj2qyP/Xvf8s2oGypTPXHQBwAA
</data>
</layer>
<layer name="Walkable" width="25" height="20" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+2QOw4AIQhEuYL3v6zVNhuZ4RHsJKHR+bIiYr0t7TcUTzh/ntMguE63Thbn42404eH0si4VfdWF3vVWj4qHusGEh9InWu6d/BEP1a2r1fWo8E5Yok88JjqQzFnO0yiewnbwjpfhb+0GbgA/XtAHAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="25" height="20">
<object name="north" type="mapchange" x="704" y="128" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse4"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="up" type="mapchange" x="0" y="96" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse2"/>
<property name="place" value="down"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="25" height="20" visible="0">
<object name="catacombguard3" type="spawn" x="352" y="256" width="32" height="32"/>
<object name="catacombguard2" type="spawn" x="288" y="352" width="128" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="minorhaunt2" type="spawn" x="224" y="256" width="32" height="32"/>
<object name="minorhaunt2" type="spawn" x="32" y="352" width="224" height="256">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="haunt3" type="spawn" x="352" y="96" width="192" height="96">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="haunt3" type="spawn" x="512" y="256" width="64" height="256">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="skeleton1" type="spawn" x="672" y="192" width="96" height="352">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="25" height="20"/>
</map>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="8" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC1vCyMCwBYgvQzEzEwPDEkYIPgLFMD4LUO4xIwQLM0HUgsRgeg9DzRIBiukwIDBIrQiSXpg6ZDXYMDHqprITp24pVN0SNHWbseiD+Rdm5mGkMNgMxTA+AA+VUetAAQAA
</data>
</layer>
<layer name="Objects" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgIA2IsDIwfGQlTq0QGwODMROqXmRgApTbwQJht7EzMFxmg4g9AdIr2RHqQPxkFgT/MRofH9iBRd1/Zgj9mRFCf2FEyH1mxFSPDwAAeLjQdEABAAA=
</data>
</layer>
<layer name="Above" width="10" height="8">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NggID/zAxEAWzq0MVA/PdQsTJ2hDhIbCY7bn3IIJmFOHWE3IYNfGEkTh0xAACc2nRdQAEAAA==
</data>
</layer>
<layer name="Walkable" width="10" height="8" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAACxNkYGAQpAGGAWqrY8CjDx/AZh4x7iDkNgAS/qKtQAEAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="8">
<object name="south" type="mapchange" x="64" y="224" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse3"/>
<property name="place" value="north"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="8" visible="0">
<object name="skeletonmaster" type="spawn" x="192" y="96" width="96" height="128"/>
<object name="skeleton1" type="spawn" x="32" y="64" width="160" height="128"/>
</objectgroup>
<objectgroup name="Keys" width="10" height="8"/>
</map>

View File

@@ -50,22 +50,22 @@
</tileset>
<layer name="Ground" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA32OwQ2AQAgEgQ60DbumA+0AO7AEO5HNSUSCPuaxexNulYnU2QsiRAcP7HZyF8zenTyAt5UuWOghvNx1aONp2Rs5e5P/z/Leixxuvgc370W25maHcX/zzwPrB3i7AMA2ea2QAQAA
H4sIAAAAAAAAC32OwQ2AQAgEgQ60DbumA+0AO7AEO5HNSUSCPuaxexNulYnU2QsiRAcP7HZyF8zenTyAt5UuWOghvNx1aONp2Rs5e5P/z/Leixxuvgc370W25maHcX/zzwPrB3i7AMA2ea2QAQAA
</data>
</layer>
<layer name="Objects" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIA34MGMXf8iKyo8BqmNDEjNigtCCbJhiS1gwzfvIiMovBaq5SZpTcYL/UD8YMqGKs7Fiqt3BglALci8fOwODDTOm3v9o4QLzE7J/iQEAxGswVZABAAA=
H4sIAAAAAAAAC2NgIA34MGMXf8iKyo8BqmNDEjNigtCCbJhiS1gwzfvIiMovBaq5SZpTcYL/UD8YMqGKs7Fiqt3BglALci8fOwODDTOm3v9o4QLzE7J/iQEAxGswVZABAAA=
</data>
</layer>
<layer name="Above" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgwA3+MxMn9h5N7AMzphix5lNbHTaxT4yYYrjc+4FIu7GZSQ4AAD4LQA+QAQAA
H4sIAAAAAAAAC2NgwA3+MxMn9h5N7AMzphix5lNbHTaxT4yYYrjc+4FIu7GZSQ4AAD4LQA+QAQAA
</data>
</layer>
<layer name="Walkable" width="10" height="10" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQpAFmwCGGLo4LENKHy05i1OFyH7Fm4tJLjF8IYQAWouACkAEAAA==
H4sIAAAAAAAACxNkYGAQpAFmwCGGLo4LENKHy05i1OFyH7Fm4tJLjF8IYQAWouACkAEAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="10">
@@ -83,12 +83,8 @@
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="10">
<object name="pitcave1" type="spawn" x="128" y="224" width="160" height="64">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="pitcave1" type="spawn" x="128" y="64" width="160" height="64"/>
<object name="pitcave1" type="spawn" x="128" y="256" width="96" height="32"/>
<object name="pitcave1" type="spawn" x="128" y="96" width="160" height="32"/>
</objectgroup>
<objectgroup name="Keys" width="10" height="10"/>
</map>

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="30" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC92WyxGDMAxEjTsgbaRrOiAdQAfpKPFBE2WzEmvMKQcdGBk9fby2l6mUxVmtpTynj03126/aHhiuM94NuPP7e+uIu5Pcozoejncvv4bcLC7LPaqjxWE8xm1rs7hR7hjPas3WWV+NeRRX5WZr2jz87EeZKneu+ewtt9aTFWyEq1jLrbGZXhTulqxV2KiXPYi3BFzWM6V/qBfPt3+9dhk3Ohuy/rE8kL8TrvdFZ4PvX1Z7xG+G8/W+6Gzw+WPeCp9xvU/Jf+us+yod4X7o/e8qrlJDtKdHuF5/yFrJWtTrGS7T2+p8yhtB7b1pimkOfV5/OJtsnzOba6w59Nl39obo2W+Z5tCHXLz71XfI6F7Entpdf3TP9+5D5GJds8DEOan8LeixapEmergjM2K6+DdudvYcxTtzj0RnrDJj5XxmpvCieMz/AoOJDxAQDgAA
</data>
</layer>
<layer name="Objects" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC7VXwU0DQQzcy5HLB53EA4kvJZAfUhpAooFI/KgBUQt15JN2KAEaCGflLCwzttfkdr7n9Xhtj71XCsbt2vjQEJ8Lcn4M5zs897bNMH3frkq5mWyfJrvXq1IeVrZ9lBMZ/4vBuzX8UwweBsDNvuTZt+kO48a/B6Gbz3x12C/5uN78/Ub+ESdjFGfkXaUNAsoLxfYN4svCyi2Kr3PqoGOx/KK4qR5W7Qn3Qf0zeSDbY5BvCe4Vq7+Zm3yifsnEZXFLtJg9Xv6Oge4ziHJoIeKP9IPmA0P3FvLF/MiPjI16mHuL/B6CebOEfmuA+C1uS7enPrZZAhkNca0e5/1UC757hgvla9//7saW8PqkZS3+g+id4s0vqa+amXC3xnue+5316M0P0ukIdnktotmDgHad9x6QfYryUtsDBxCrt3cRLp1ZaNfLd4WnSc0t8/Su+kpzaJ220s0+MQ8y7xDGbp7DupaSN+rJmrmnY6P3LulEnz05/xAZPu2PdXnJm2pp/ABwvxFtEA4AAA==
</data>
</layer>
<layer name="Above" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+2WSw6AIBBDMd7/rBovoHHhSmRabIFEuySkbzIfhpTu2ufMoVEXbxFw0djPewwv8kW9WGbLnCiZKFdZe4ar5DFch35uX647nid/tIfXyvhGy7Nb26TzYnNeW6OvqtQjUf+86a/SzEXz6Ng5kUaa4Rax5BjuvCv/TCxXKfQNUnOZP3sPrnIvOPyUOgCuKRBmEA4AAA==
</data>
</layer>
<layer name="Walkable" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC+WUXQrAMAiDvULvf9k9DUbxJ4nSMSaUgVU/28YtM1s/X7Z9J2tGe56pHKSOF4MwWeucNYph2Z3+Oved9THx9iiXfTeGXfnUMyg1Jmalewcn+F0uogeG+/QjfaGmaDfqkamlzk3Gnoy/c5A6e82uTjx/R4fTGv0yl9FJtTd9ZtYyBsJV+8vyFK6qCW9v91VMVhMZA8md4lb2BleZgZP/CCXnxLoANjM6KhAOAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="30" height="30">
<object name="up" type="mapchange" x="832" y="64" width="32" height="32">
<properties>
<property name="map" value="jan_pitcave1"/>
<property name="place" value="down"/>
</properties>
</object>
<object name="down" type="mapchange" x="800" y="832" width="32" height="32">
<properties>
<property name="map" value="jan_pitcave3"/>
<property name="place" value="up"/>
</properties>
</object>
<object name="Grave cross" type="sign" x="864" y="768" width="32" height="32">
<properties>
<property name="text" value="Gandir lies here, slain by the hand of his former friend Irogotu."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="30" height="30">
<object name="pitcave1" type="spawn" x="544" y="96" width="256" height="96">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="pitcave2" type="spawn" x="288" y="256" width="32" height="32"/>
<object name="pitcave2" type="spawn" x="544" y="320" width="384" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="pitcave2" type="spawn" x="32" y="256" width="128" height="288"/>
<object name="pitcave2" type="spawn" x="480" y="672" width="96" height="32"/>
<object name="pitcave2" type="spawn" x="224" y="416" width="224" height="512">
<properties>
<property name="quantity" value="5"/>
</properties>
</object>
<object name="pitcave2_boss" type="spawn" x="736" y="736" width="128" height="64"/>
<object name="pitcave1" type="spawn" x="64" y="736" width="128" height="128"/>
<object name="pitcave2" type="spawn" x="64" y="96" width="192" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="pitcave2" type="spawn" x="384" y="192" width="160" height="96"/>
<object name="pitcave2" type="spawn" x="672" y="672" width="128" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="30" height="30"/>
</map>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="10" height="10" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC1vEyMBwCA9eBMWbgPgiHnyQSHWMTAh12gy4sSATwkx86kAY2W5qqiNkN7I6bGZuZITgRWh4IyNuOQDcrH/okAEAAA==
</data>
</layer>
<layer name="Objects" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgIA34MBOnLgZJ3UNWBgY2Vkw1kUA1ySwMDKUsEL4gG4TmY0dV94kRlf8eySxDJlS5HVCzQGb+Z4WYj81MmH1LWDD1IoP/RPoX2UwQ+MiIXx0uAACdmNbckAEAAA==
</data>
</layer>
<layer name="Above" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgIB78Zx4YdaSAD1S2+xMj9e3GBwDCZbrgkAEAAA==
</data>
</layer>
<layer name="Walkable" width="10" height="10">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAACxNkYGAQpAFmIEEdOiCkThCPWnLUEbKfHHXkhhsAXyTZFJABAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="10" height="10">
<object name="up" type="mapchange" x="64" y="64" width="32" height="32">
<properties>
<property name="map" value="jan_pitcave2"/>
<property name="place" value="down"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="10" height="10" visible="0">
<object name="pitcave_boss" type="spawn" x="128" y="128" width="160" height="160">
<properties>
<property name="respawn" value="false"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="10" height="10"/>
</map>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Display">
<CheckBoxPreference
android:title="Fullscreen"
android:defaultValue="true"
android:summary="Displays the game in fullscreen mode. (Requires restart)"
android:key="fullscreen" />
</PreferenceCategory>
<PreferenceCategory
android:title="Dialog confirmation">
<CheckBoxPreference
android:title="Confirm rest"
android:defaultValue="true"
android:summary="Gives a question about whether you want to rest when entering a bed. Otherwise, you will always automatically rest."
android:key="confirm_rest" />
<CheckBoxPreference
android:title="Confirm attack"
android:defaultValue="true"
android:summary="Enables the 'Do you want to attack..?' dialog box when attacking a monster."
android:key="confirm_attack" />
<ListPreference
android:title="Display monster loot"
android:summary="Choose how you want to show the results of a fight to be shown (gold, experience, items)."
android:key="display_lootdialog"
android:defaultValue="0"
android:entries="@array/display_loot"
android:entryValues="@array/display_loot_values" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA82UwQ3DMAhFwfUGzRi5dmNv4GyQbNARskhrqajkB2wi9dDDuyD4seAphYnKgA0Y9fdmciJ68pF1kLWwPdPq0ztv5yO31M/Lzkyrz3Tmnvw3yhusGasu9PK8mR7/mCe7juZV/qJvUY1d95yp4F5O57kNvuHlSZ92b4K5xag3nyz/pU+7h3sXP9En/QZxHPsQz8+GfoM4PnLiyv3Xzy1+mSd79Hy76id6IxTnW5Vt9H0jtKxIH/6nPPCeHg+KMQf7XlShBGhABgAA
</data>
</layer>
<layer name="Objects" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+VTMQ6AIAwsKBgT42D4iXzNhxOdXNQOJgSLUHTSG9ve9dJcAb4Fo/JnnbrOWwnQNWW7Bw3QHtw+wR/lfd8SfeRgfar5vnI5swBYBF8fsRJaHMTmuTpcULd+ysu9N2ZPK1rLROoxL5i5cK9/uzCTmKdzv/N+IMd7yhf+gZ/x0kz5CH2Fmm/ljcJWle34A3bTLF7KQAYAAA==
</data>
</layer>
<layer name="Above" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoD/4wEw9PSDx92SY9x+HHlzi+AA+N1DTbeSCgTaPUHzjMg+bPnLjG5c+Yv2C7hZ0s2DyxLqNkDpqxhm5YYYLDHR6ord5Xxipa95wAgCYCJZ9QAYAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQHMUYGBmQoh6fOeSYh64HFyDFLEJmkGMevjAjxjxqiBMTprQ2D5v/qZF+KEkzpKRpfICUNEVKPiAWEOsfcswiN+2Qi4eLeQCPBCx/QAYAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="20">
<object name="south" type="mapchange" x="320" y="608" width="32" height="32">
<properties>
<property name="map" value="wild2"/>
<property name="place" value="cave"/>
</properties>
</object>
<object name="west" type="mapchange" x="0" y="416" width="32" height="32">
<properties>
<property name="map" value="snakecave2"/>
<property name="place" value="east"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="20">
<object name="cavesnake1" type="spawn" x="288" y="384" width="288" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake1" type="spawn" x="32" y="128" width="160" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake1" type="spawn" x="416" y="192" width="32" height="128">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="cavesnake1" type="spawn" x="224" y="256" width="32" height="96">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="cavesnake1" type="spawn" x="64" y="384" width="160" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="20" height="20"/>
</map>

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA62UwQ3DMAhFIc0G7Ri9dmNvYG+QbJARvEiDKtQvGgyWeniKlDgPhL/dmOixED2J6H4+byc75ymGxh+XIs6D82h9zyd0zqP1xev5ZlHvlvBV/hJ5I98Gc5EZrUvsKwPfDp4DcpCpb7+tsM/i6RdrcBbV5GaH9w0cVx5B//EyiHnKzAn716ygD/MUzcn2j+eqJPYN8frXXGutrG/Uf3fyl8muh83KKEMRlX/PsN37qFebPc1QDe45m11v/cxdl2Hmrsvwov/yBqlRU2lABgAA
</data>
</layer>
<layer name="Objects" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgoD4wYSJOHSsr8WaWsqDyRZD0foSyRVlR5dkImL+EBb88OuBjxy4eyczAkEyiWfjAZjLNQg4jkJuGOgDFH3I8l5GQXtABKE2SG64ggJ6eiInzj2juRwa40hIIYEuXsDyFrA9b/kHPJ6QAWP7Bln+/MJJuHswt/3GkRVLM/EyCWlzmkmLGKCAOAABoShJkQAYAAA==
</data>
</layer>
<layer name="Above" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+2T0QqAIAxFp31S/v8vJdS7FSSs26YT99gFH4R5tl2uRERlIdqu46XysNboy/Niloldpf4abw/v+xHkOuSOzJcNtVJfnK1yrDngzMris9ycFL81VmWWyQSeW1joi8XTlpf4XvOJe9Hykv8R3K/XHzPY6yUJ67X89by2zN/K/YxGM/XLXyd8k/mDQAYAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="20" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQZIAAQSpiapqHDKhtHimAVDNJsZtUNaSqJcYsQmGDSy0x4TIY0gCx/qLEPFL1k5ouKE3TxKYHXPYTax4ueUrdTUxYUCNuRjFxGACBG6M8QAYAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="20">
<object name="east" type="mapchange" x="608" y="416" width="32" height="32">
<properties>
<property name="map" value="snakecave1"/>
<property name="place" value="west"/>
</properties>
</object>
<object name="north" type="mapchange" x="64" y="0" width="32" height="32">
<properties>
<property name="map" value="snakecave3"/>
<property name="place" value="south"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="20" visible="0">
<object name="cavesnake2" type="spawn" x="32" y="96" width="192" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake2" type="spawn" x="224" y="96" width="160" height="32">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="cavesnake2" type="spawn" x="384" y="96" width="224" height="128">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake1" type="spawn" x="416" y="352" width="160" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake2" type="spawn" x="192" y="288" width="192" height="192">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake2_boss" type="spawn" x="320" y="192" width="128" height="128"/>
</objectgroup>
<objectgroup name="Keys" width="20" height="20"/>
</map>

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="15" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA5VVwRHDIAwzbTdIx8i3G7NBsgHZoCNkkcIdXHyqbJyHLsFGRBYO5CTyeoh804VnHR8krvO5PveKd30/04WlczCu86VzV/nHacQHPO4MjZuD3C1x7ozf5h0dW0dWaJ5a3J14PDC89jxBjyPfZHncX/RlU+ti3trfcrMW1BipBblR/5CrtWaiB33TXNw31FtAi+bqfWN6sT42tvQW0HKHi1pwXpnUyvrK8sPqS9ZXbb2Zv9a/v5DeRY8i3lgeRbneeTY7c7x1vf71+hp7PxvnGGrSeXZnMDQextidwdC4GPtIDCuJ/QDrte8oCAcAAA==
</data>
</layer>
<layer name="Objects" width="15" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA8VT2w3CMAxMHwl//UBMwAp0Gb6ZoWIF1kXlH4isCGOdk7hB4qQqShz77LvUuXYcPK3B49jdf99LmHvnpt1nf+rpLH7LSGf7QOvVU3wrOM9zyN9dO1ofHY7z8/O71mXc1tON5a0KlwVRf6lxwgy0Q5xSY55X6pFrrHHm4shfxFmqq+UlpLcV70iPF8VLiw4SUpdWoPlzvnFo82mQs/L9MdTVqPErgvtiQak+10b++8ibmnot7wGhxCn7znFaY9Y3IXv6xfz/xgsnOPpeCAcAAA==
</data>
</layer>
<layer name="Above" width="15" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA+VUywrAIAzr8P+/dTt4d4chiDRpJgqCOTZNH0Fr9uFJ5gLFW/4GOSheUQJ+lTZf49oZYJ5GHPOUeRL5hfioJ+NZzx13YVpWc0Tbz6LkoFxPq86iar1ZVK0SU3f1Yn+86/++2rOty7hVb5rdrFPv6Ey8ywoblAgHAAA=
</data>
</layer>
<layer name="Walkable" width="15" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA82TQQoAMQgD/UL//9k99VLUSdotu4KHRoZEoSMixsc9K9OyWTancnjKtuqdD+3rcFXuXVbZU8n4BuvkoTu4fi67ajfZLO8JS2/Vs9JUtvO9qblZuj2Io5nDKn+l4ugWxHa9w/yRfQBPnoPCCAcAAA==
</data>
</layer>
<objectgroup name="Mapevents" width="15" height="30">
<object name="south" type="mapchange" x="320" y="928" width="32" height="32">
<properties>
<property name="map" value="snakecave2"/>
<property name="place" value="north"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="15" height="30">
<object name="cavesnake2" type="spawn" x="288" y="640" width="160" height="224">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="cavesnake2_boss" type="spawn" x="352" y="416" width="96" height="224">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="cavesnake3" type="spawn" x="288" y="256" width="160" height="128">
<properties>
<property name="quantity" value="1"/>
</properties>
</object>
<object name="cavesnake3" type="spawn" x="160" y="416" width="160" height="320">
<properties>
<property name="quantity" value="3"/>
</properties>
</object>
<object name="cavesnake3" type="spawn" x="32" y="384" width="128" height="448">
<properties>
<property name="quantity" value="3"/>
</properties>
</object>
<object name="cavesnake3_boss" type="spawn" x="32" y="64" width="416" height="128">
<properties>
<property name="respawn" value="false"/>
</properties>
</object>
<object name="cavesnake3" type="spawn" x="96" y="96" width="192" height="192">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="15" height="30"/>
</map>

View File

@@ -1,105 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="385" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="513" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="641" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="769" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="897" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<layer name="Ground" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA9NkYGDQBGJFKE0tPBLNIwarDQF/jJo3vM3DhweD+0bNGzrmAQCC4maaQAYAAA==
</data>
</layer>
<layer name="Objects nonwalk" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA7vOxMCwA4hBYDuQPo6Er5NJI5sHYpNLw8ykBtiOxX2UAkrd9xSo9xlSWA0m97EzQTAMYHMfBxMEEwPEmCCYHUpjcx/IrC5mBgZRLGZmMeM2dwsTaeH3hZGBoQqLeeJQfVtxuI8SQMh93xiJNwuWbrbjcd9nEsxDBoTC7zJS/sQHYG6DuU8LGN5hWMIcn1liaOLHkcLPCkd6IAQc0fIbteIX3X2UAlq4D1a+k1OOY1MDEgcA0rZTYUAGAAA=
</data>
</layer>
<layer name="Objects walk" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGHqAhYmBgYkJv5oWAvLIZjESqZbeYBMd3EVsOOEDFjR253dG6pizcJDFswqR7tlIpDpjoDqTQeZHYgF63BDK39j0EALkhg2l6YbYPMY6BOMOAF0hIu9ABgAA
</data>
</layer>
<layer name="Above" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgYGBYwcQABsuh9GAAyG5ZMYjcBQODzX1sTBAMA9RyH7q51AKDLfzQwWB3HzLA577DTBC/EPIDMWoIqcOVTigJP0M6lE3UiF9auw8W7oRomFtwqaG2uwDwHF/KQAYAAA==
</data>
</layer>
<layer name="walkable" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAxNkYGAQZIAAQSpiappHDUBLM6mhf7C5D10vvvglxTx8+vH5H5c95KQZQnaQ4z9CgJD7SLGHGL9SK97x2U2MOYTCkhQ/UCOPYMtv1ALUNJPW7qNWOQ4AVynfhkAGAAA=
</data>
</layer>
<objectgroup name="mapevents" width="20" height="20">
<object name="Sign1" type="sign" x="94" y="160" width="32" height="32">
<properties>
<property name="Text" value="Beware of bugs!"/>
<property name="Title" value="The sign says"/>
</properties>
</object>
<object name="Sign2" type="sign" x="288" y="256" width="32" height="32">
<properties>
<property name="Text" value="Here lies the last explorer."/>
<property name="Title" value="An inscription on the cross reads"/>
</properties>
</object>
<object name="Sign3" type="sign" x="416" y="352" width="32" height="32">
<properties>
<property name="Text" value="North: old map.\nEast: New map.\nSouth: current map."/>
<property name="Title" value="Crossroad"/>
</properties>
</object>
<object name="well" type="mapchange" x="256" y="288" width="32" height="32"/>
<object name="east" type="mapchange" x="608" y="384" width="32" height="32">
<properties>
<property name="map" value="wilderness"/>
<property name="place" value="west"/>
</properties>
</object>
<object name="south" type="mapchange" x="384" y="608" width="32" height="32">
<properties>
<property name="map" value="wilderness"/>
<property name="place" value="north"/>
</properties>
</object>
<object name="north" type="mapchange" x="64" y="0" width="32" height="32">
<properties>
<property name="map" value="wilderness"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="start" type="mapchange" x="192" y="128" width="32" height="32"/>
</objectgroup>
<objectgroup name="spawn" width="20" height="20">
<object name="ants" type="spawn" x="448" y="64" width="160" height="160">
<properties>
<property name="quantity" value="1"/>
<property name="type" value="insect"/>
</properties>
</object>
<object name="shop1" type="spawn" x="160" y="448" width="32" height="32">
<properties>
<property name="type" value="traveller"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -55,12 +55,12 @@
</layer>
<layer name="Objects" width="21" height="21">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC4VU2w3CMBBrpXSWdoIGMUAr8U9ZgBHoAO0HYh9+WIQB2ISc1FMOx1csRZWS2Ofco2NTVZe0RvM9pBWd/aGuqta5jzy7H9ISRNgXiCbyFNd01tc5XmfOEBJj2s6PibOGrGvRbjosHoPemUPmWx7Lh2INpV6Etyyh3MN8LESH6drY6JPFRnhx9O2M/yR5xnePTVkH9M7OPZ7Xn9Yrvl85lvdPl/nB+kbwwfisv+dQ1kzROXpMV/gfyLfMwdmJ78078zEb3Rk0bT5wrtEPainuIc+s9fkwd7WXfryA1mpqLnovc67z1dd53erSC8O0kxsPJ6Pt9ak3ZyOJI3cH8Iu63jx7dRegpt7f6wfNs9dHqmn75L3z7xLf+P/Ed6nmtNVW/9/sy3S+rZJQreQGAAA=
H4sIAAAAAAAAC4VU2w3CMBBrpXSWdgKCGKCV+KcswAJIdID2A7EPPyzCAGxCTuoph+MrlqJKSexz7tGhqapzWoP57tOKzn5fV1Xr3Eee3Q9pCSLsC0QTeYpLOtvVOV5nzhASY1zPD4mzhKxr0a46LB6D3plC5lsey4diCaVehLfModzDfMxEh+na2OiTxUZ4cfTtjP8kecZ3D01ZB/TOzj2e15/WK75fOZb3T5f5wfpG8MH4rL+nUNZM0Tl6TFf4H8i3zMHJie/NO/MxGd0JNG0+cK7RD2op7iHPrPX5MHe1l368gNZiai56L3Ou87Wr87rVpReGcSM3DNcU62i0vT715mwgceRuD35R15tnr+4C1NT7W/2gefb6SDVtn7w3/l3iG/+f+C7VHNfa6v+bfZnOF8CeSGTkBgAA
</data>
</layer>
<layer name="Above" width="21" height="21">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAC2NgGDjgxkp9M9WBZmpgMRebGLHmjTSAKwyJAdj0IYchSB6f+TBxdDXkuocQINY9MDeRYz4hAMoHbiTaQ6vwIAVQI29QswyAmUVJXkdOD4TyAbXLBnW0tE9JPiQEkM0lNQ6w+RubOwmZS2r4kRseAGIKVj3kBgAA
H4sIAAAAAAAAC2NgGDjgxkp9M9WBZmpgMRebGLHmjTSAKwyJAdj0IYchSB6f+TBxdDXkuocQINY9MDeRYz4hAMoHbiTaQ6vwIAVQI29QswyAmUVJXkdOD4TyAbXLBnW0tE9JPiQEkM0lNQ6I9Tchc0kNP3LDAwCSEKc95AYAAA==
</data>
</layer>
<layer name="Walkable" width="21" height="21">
@@ -81,8 +81,22 @@
<property name="place" value="north"/>
</properties>
</object>
<object name="north" type="mapchange" x="384" y="0" width="32" height="32"/>
<object name="east" type="mapchange" x="640" y="32" width="32" height="32"/>
<object name="east" type="mapchange" x="640" y="32" width="32" height="32">
<properties>
<property name="map" value="wild4"/>
<property name="place" value="west"/>
</properties>
</object>
<object name="Signpost" type="sign" x="128" y="512" width="32" height="32">
<properties>
<property name="text" value="West: Crossglen\nSouth: Fallhaven"/>
</properties>
</object>
<object name="Map not complete" type="sign" x="384" y="0" width="32" height="32">
<properties>
<property name="text" value="This map is not yet done. Please come back in a later version of the game."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="21" height="21">
<object name="forestdog" type="spawn" x="96" y="64" width="224" height="224">

View File

@@ -75,14 +75,23 @@
<property name="place" value="west"/>
</properties>
</object>
<object name="south" type="mapchange" x="480" y="448" width="32" height="32"/>
<object name="north" type="mapchange" x="128" y="0" width="32" height="32">
<properties>
<property name="map" value="crossglen"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="cave" type="mapchange" x="64" y="288" width="32" height="32"/>
<object name="cave" type="mapchange" x="64" y="288" width="32" height="32">
<properties>
<property name="map" value="snakecave1"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="Map not complete" type="sign" x="480" y="448" width="32" height="32">
<properties>
<property name="text" value="This map is not yet done. Please come back in a later version of the game."/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="15">
<object name="forestant" type="spawn" x="32" y="320" width="320" height="128">
@@ -91,7 +100,7 @@
</properties>
</object>
<object name="forestant" type="spawn" x="576" y="288" width="64" height="160"/>
<object name="forestsnake" type="spawn" x="416" y="0" width="192" height="96"/>
<object name="forestsnake" type="spawn" x="416" y="32" width="192" height="96"/>
<object name="forestsnake" type="spawn" x="384" y="224" width="160" height="160"/>
</objectgroup>
<objectgroup name="Keys" width="20" height="15"/>

View File

@@ -55,7 +55,7 @@
</layer>
<layer name="Objects" width="20" height="20">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA51UOw7CMAxtaMo92GCEgVaIudwAxM4FkPjMMDF14CwdOAj34AiQkFh9MUna8qQocW2/PMdJV1mSbNRYeeZCjVIkX+T2+zhr1hq1NHZh7RAXxRPfKHPzcI0gHXlA30L85vgwAn2EnHH1xRZquEi3joey9/I3h8dzvrkw49ChrokdaBP/xPJx7ESzh2+E9q2s5n/OKbYnItaP0P3Q0L2trI/nxvIQoX5Qrs/PNXDgOyE+jqN049u0/ntXfXrwrlJ9+FbXmdG3juzXphn7eWX9vnV8uwhf/cOe/cYYjJ0NzPxKlTZV91TZpwCX70zoDjzsmb3TxrdU66c0vCHEzlmjVP67cDXp//EZOEMcFxajuWgmxP5NeL9r8H8AFk9r+UAGAAA=
H4sIAAAAAAAAA51UOxLCIBANBryHnZZaGMexjjfQsfcCzviptbJK4VlSeBDv4REUhJ08ViDRN8PAht3HW3bJUmXZWo9lYJ7pUYrsg8J9H6pmbVBLa8+cHeMif+IbKD8O1wjSUUT0zcV3TAgD0EcoGNev2EAOZ+nncdf2Tn7HcH/ONxV27DvkNXIDbeIfOT6OrWjOCI3YuZXT/M89pc5EpOoR6w8DU9vK7fHYVBwiVg+KDe1zDRz4ToiP4yB9/zat//ZqSA/2KuWHb3WlrL5V4rw2zVjPC6v3tePbRYTy7/9Yb/RB30nPzs9ca9N5j7V9jHCF7oR64O7u7JU3ewu9fkjLG0Pqng1KvX8TvibzPz6BHePA/jU+hotmQurfhP1dw/4blUBDTkAGAAA=
</data>
</layer>
<layer name="Above" width="20" height="20">
@@ -63,7 +63,7 @@
H4sIAAAAAAAAA2NgIB9osNJWPa0AKe5QZ6Wtu2ltPjXN7kczC+Z2bH4g1l/U9D+6+0gFpLqFWPXk+g/dfHUs5iCrcUOjKXEPrdLkf2YIhgFiwhCXGpA579HMwwUIhQlInhhzSDFzEiNx9pJiTxiB9EBvAABrtsfWQAYAAA==
</data>
</layer>
<layer name="Walkable" width="20" height="20">
<layer name="Walkable" width="20" height="20" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA61UMRIAIAjyC/7/s00tXgKh3LWUoqKZEZHgXChvnV21R36djcrJgGpyuJAWyIfl5qJquoWJTk6MGkfV9bcfSj4uXrlM423Ww3RW5sjpy9afQztH4ej4lBzR/WSGGR/jVGvf2qkHOTGxsEAGAAA=
</data>
@@ -86,7 +86,12 @@
<property name="place" value="east"/>
</properties>
</object>
<object name="east" type="mapchange" x="608" y="224" width="32" height="32"/>
<object name="east" type="mapchange" x="608" y="224" width="32" height="32">
<properties>
<property name="map" value="fallhaven_nw"/>
<property name="place" value="west"/>
</properties>
</object>
<object name="jan_pitcave" type="mapchange" x="192" y="544" width="32" height="32">
<properties>
<property name="map" value="jan_pitcave1"/>
@@ -94,7 +99,7 @@
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="20">
<objectgroup name="Spawn" width="20" height="20" visible="0">
<object name="Jan" type="spawn" x="192" y="416" width="32" height="32"/>
<object name="forestwasp" type="spawn" x="352" y="512" width="288" height="128">
<properties>
@@ -106,7 +111,7 @@
<property name="quantity" value="2"/>
</properties>
</object>
<object name="forestant" type="spawn" x="480" y="0" width="160" height="96">
<object name="forestant" type="spawn" x="448" y="64" width="160" height="96">
<properties>
<property name="quantity" value="2"/>
</properties>

View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="20" height="15" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_4.png"/>
</tileset>
<tileset firstgid="769" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1409" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1537" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1905" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAwtnZWBwB+JwNFqTAYLR+egYm15Cekgxi1QzsGFqmkUu9mbCjrG5lRjzopmwY2xhSox5jYzYMbn+nciIHdMjrKkZ19RON9jil9g4x+Y2WF6hltuIze/Ucl84kX6AqQEAoJH8EbAEAAA=
</data>
</layer>
<layer name="Objects" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA5VT2w2CUAwtgcsEOoBLCBOY+G9I/PSxgcK/E+gGugM/jOAAuo+9gSa1OUU8CSn0cdrTeyHCKANREb6/I6KvDLjG49D5/9RbjjYjWoBa5JMaq2GZ9M85wfkRzQ+t4m9MrM6m69J4OroQbzXkBZWfq/cOzIDOQfcWbHKiOedcU6Jb2vu2bA9DjnB488qcJ7Yzjh+Zb8X2zhyPge+l+rXOvkSjaKmVjbE401rNheDdsR379yom+vVZVmZf0aK9opk9vJ36AsziYeyOWE6k/5KN32kNnTO171jvCPu/2J6Iw+7tA27a0P+wBAAA
</data>
</layer>
<layer name="Above" width="20" height="15">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgIB+os1KgmUKzQOo1WAmLUQu44TCXkH0gfSaMuOWNsMiBzMTnFxc85jkhyVEjfv4zE1aDK2xggAkoLwJV8x6Lefj8GggUDyIijGFmEOtnQm7GBShJYzC3YdOPy0xc9qH7k1T9xMrjshNZD668SIz7iFGDbBYAg35cKbAEAAA=
</data>
</layer>
<layer name="Walkable" width="20" height="15" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA7WSUQoAIAhDdwXvf9m++pGpm1QQRHNPSwNAiBvpDNPL/CDaxFCWy2B65flZz8TNfVB4zvu3vWOsiqv4lTqV/I7GcryouYvbzFL2Okx1Trb/V/W+i1Xm7N4dnwuNk7AEAAA=
</data>
</layer>
<objectgroup name="Mapevents" width="20" height="15">
<object name="west" type="mapchange" x="0" y="96" width="32" height="64">
<properties>
<property name="map" value="wild1"/>
<property name="place" value="east"/>
</properties>
</object>
<object name="entrance" type="mapchange" x="352" y="224" width="32" height="32">
<properties>
<property name="map" value="hauntedhouse1"/>
<property name="place" value="entrance"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn" width="20" height="15">
<object name="fox1" type="spawn" x="64" y="96" width="192" height="160">
<properties>
<property name="quantity" value="2"/>
</properties>
</object>
<object name="minorhaunt1" type="spawn" x="192" y="192" width="256" height="160"/>
<object name="forestwasp" type="spawn" x="192" y="32" width="416" height="192">
<properties>
<property name="quantity" value="4"/>
</properties>
</object>
<object name="forestwasp" type="spawn" x="128" y="320" width="480" height="160">
<properties>
<property name="quantity" value="4"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Keys" width="20" height="15"/>
</map>

View File

@@ -1,131 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="30" height="30" tilewidth="32" tileheight="32">
<tileset firstgid="1" name="tiles_1_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_1.png"/>
</tileset>
<tileset firstgid="129" name="tiles_1_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_2.png"/>
</tileset>
<tileset firstgid="257" name="tiles_1_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_3.png"/>
</tileset>
<tileset firstgid="385" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_1.png"/>
</tileset>
<tileset firstgid="513" name="tiles_2_2" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_2.png"/>
</tileset>
<tileset firstgid="641" name="tiles_2_3" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_3.png"/>
</tileset>
<tileset firstgid="769" name="tiles_1_4" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_4.png"/>
</tileset>
<tileset firstgid="897" name="tiles_1_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_5.png"/>
</tileset>
<tileset firstgid="1025" name="tiles_1_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_6.png"/>
</tileset>
<tileset firstgid="1153" name="tiles_1_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_7.png"/>
</tileset>
<tileset firstgid="1281" name="tiles_2_1" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_1_8.png"/>
</tileset>
<tileset firstgid="1393" name="tiles_2_5" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_5.png"/>
</tileset>
<tileset firstgid="1521" name="tiles_2_6" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_6.png"/>
</tileset>
<tileset firstgid="1649" name="tiles_2_7" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_7.png"/>
</tileset>
<tileset firstgid="1777" name="tiles_2_8" tilewidth="32" tileheight="32">
<image source="../drawable/map_tiles_2_8.png"/>
</tileset>
<layer name="Ground" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA9NkYGDQHMU0wcFMA2Nv8gDZe2iAwnmg7B3Fo3gk4bdMmJge9v5lguAUVgSbnv5WHQRhP4qHPg4ZoHp5FI/iUTyKicEAXcLxeRAOAAA=
</data>
</layer>
<layer name="Objects nonwalk" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA7VXO08DMQxOe0f5A8wMiBUViUplgRFGEFCYoeKxHyDWAyQY2MqzG7Aj0fIHKkb2LvwZbC5WTepL3Aef9Mlp75QvdmI7VykasxMbsxrr7SIQsQL2PTKmDXPUgZuMF8BZDyvAqp2LW0mL/ifUYNyJsjFpExsBbdSVUBX8o//pd83aOtgkzux53FtHw4nBxkRvTLpnkazNNV1sw7PUaqVMk9bhxuD3mR1zf0M6Gki+SyDda8FfLbp2/pRpJh5NjK20v6E1dD1zpo6/u8A94X08W8cen++HiEPIX9K9FHz2+aTR5Pt7CPaIzdexcb7NyaVBod1fBOp+KHU1MXf316fr4qvYTy1a0d9c1uhOTWb2u9hPLXDvWoq4kO4zrO/FrnGukHEL6loZ7HxBr4toKbRRdxrmv7GapyVjlkBn2WqtgV0HPg5wvrW6iHIp/52HgKabc5pY5/WjURHKJdR9G7EXIHiOafIY61XTZKR6+TSGdeT1JdoTfgfAenk3Ql8KaXJwXfT3VambV7vcGM8odKX+EKqN0nNNreT3H7c/DNoD23FGROg88/uPtj8QeN5ewfjTUtsb/gMhf5umP49GhXTHdKG5Sw979/DBvcePy2cfMLekbwjSxhqSCPUsUawztL953y+kJe3DQs67tDa3dtC53gceAE+AP2cbjbEQDgAA
</data>
</layer>
<layer name="Objects walk" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA8VW3Q2CQAwmAR3Fd6Mu5A7gAOIAxhUMC8CDb76yAAOwiWlyTZrS3vUOkC8xEu7a7/r158iyNJR5ouFMbMW7FbR4z4Vuc93ZfNfE99ugayvsGdy7YxHOzdPAkZJfsLkJdp+VawV4h5U4tPxCDnwa1coa1x59WHLCbf4N4NXimgOpnhF3pzPfY60p7CeumWTfu3drxBjjd4n8aj76jWpHQkV6qyPneu2nexs31xqhH3160bqhsXee/tV61MoZQszcKMk5uZ10V3wF7VJA+2NuPVaeOxLwMPrHvFh633KPAi/+KELxjoH1kL3ESWtO86/FdCL6Fh6ta4EX4Dtv5+G8BPLKweOaU1ej64uDOwPcE/d8uo480rMGLWYE2FvmqJRHsI25660I1TufIVQDacbgv+V7smW6S7x8nwVL31Wx/KG5JWGpb7MfouiuhRAOAAA=
</data>
</layer>
<layer name="Above" width="30" height="30" visible="0">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA2NgGDpAgwWVXwjkF7EgaHqAQiz2YLOfCcpnxKJenQXTL5S4A9luIShbkAbhgc3vAwFA/g0E4iAy3NPGTH330ALgil9ksJHKfqFV/JIa5uTkZR5G0vWAADlhyMLOwKANtU8HzV5NEtxBit0TgWEyCYhZoebboNkTQ6L/qZ12RgF2QK+6CTmPEVN20AoMhN20rJdwlV3UspNQ2YhNntIwpqQOHIg2wGBJzwNhJ739O9IAPfsOyHbCAL37L4QAAAXwtV0QDgAA
</data>
</layer>
<layer name="walkable" width="30" height="30">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAA8WVSw6AQAhDuYL3v6wrNxM+r8DEJpMYrS2fCTxm9jSONf+bnA/TGDxQr4ir1CzyjqDW//xGfQhILc3yfBUv1TOqL/HJNKsYSI9VkH51c670vLvkcTZA++vFUnG3vLOed+qh5Hs+b/gS3smf+FLvao7dypnMK3WOqP3dRHdWdnxOzUyb7sROHNHO877f9Mw409lF9ci+Uv2nvpN5Qe9zdy5FOtu7TonpVr4TTcrZxh/9qO4CfZ9pd7yVeNTzAia0ZC0QDgAA
</data>
</layer>
<objectgroup name="mapevents" width="30" height="30" visible="0">
<object name="cave_entrance" type="mapchange" x="864" y="96" width="32" height="32">
<properties>
<property name="map" value="dungeon"/>
<property name="place" value="entrance"/>
</properties>
</object>
<object name="west" type="mapchange" x="0" y="768" width="32" height="32">
<properties>
<property name="map" value="startmap"/>
<property name="place" value="east"/>
</properties>
</object>
<object name="north" type="mapchange" x="448" y="0" width="32" height="32">
<properties>
<property name="map" value="startmap"/>
<property name="place" value="south"/>
</properties>
</object>
<object name="south" type="mapchange" x="384" y="928" width="32" height="32">
<properties>
<property name="map" value="startmap"/>
<property name="place" value="north"/>
</properties>
</object>
<object name="Sign2" type="sign" x="224" y="448" width="32" height="32">
<properties>
<property name="Text" value="Map not implemented yet."/>
<property name="Title" value="Not implemented"/>
</properties>
</object>
<object name="Do not enter" type="sign" x="832" y="128" width="32" height="32">
<properties>
<property name="Text" value="Do not enter!"/>
<property name="Title" value="Sign"/>
</properties>
</object>
<object name="Warning" type="sign" x="832" y="832" width="32" height="32">
<properties>
<property name="Text" value="Do not proceed north!"/>
<property name="Title" value="Warning sign"/>
</properties>
</object>
</objectgroup>
<objectgroup name="spawn" width="30" height="30" visible="0">
<object name="wildlife" type="spawn" x="32" y="64" width="672" height="864">
<properties>
<property name="quantity" value="2"/>
<property name="type" value="animal"/>
</properties>
</object>
<object name="spawn2" type="spawn" x="736" y="128" width="224" height="224">
<properties>
<property name="quantity" value="1"/>
<property name="type" value="insect"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -2,12 +2,15 @@ package com.gpl.rpg.AndorsTrail;
import java.lang.ref.WeakReference;
import com.gpl.rpg.AndorsTrail.activity.Preferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.view.Window;
import android.view.WindowManager;
public final class AndorsTrailApplication extends Application {
@@ -16,7 +19,8 @@ public final class AndorsTrailApplication extends Application {
public static final boolean DEVELOPMENT_DEBUGBUTTONS = false;
public static final boolean DEVELOPMENT_VALIDATEDATA = false;
public static final boolean DEVELOPMENT_DEBUGMESSAGES = false;
public static final int CURRENT_VERSION = 10;
public static final int CURRENT_VERSION = 13;
public static final String CURRENT_VERSION_DISPLAY = "0.6.6";
public final WorldContext world = new WorldContext();
public WorldSetup setup = new WorldSetup(world, this);
@@ -31,4 +35,16 @@ public final class AndorsTrailApplication extends Application {
public static Activity getActivityFromActivityContext(Context context) {
return (Activity) context;
}
public static void setWindowParameters(Activity activity, boolean fullscreen) {
activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
if (fullscreen) {
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
activity.getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
public static void setWindowParameters(Activity activity) {
setWindowParameters(activity, Preferences.shouldUseFullscreen(activity));
}
}

View File

@@ -13,6 +13,7 @@ import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.gpl.rpg.AndorsTrail.R;
@@ -23,14 +24,16 @@ import com.gpl.rpg.AndorsTrail.activity.ItemInfoActivity;
import com.gpl.rpg.AndorsTrail.activity.LevelUpActivity;
import com.gpl.rpg.AndorsTrail.activity.MonsterEncounterActivity;
import com.gpl.rpg.AndorsTrail.activity.MonsterInfoActivity;
import com.gpl.rpg.AndorsTrail.activity.Preferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.controller.Controller;
import com.gpl.rpg.AndorsTrail.controller.ItemController;
import com.gpl.rpg.AndorsTrail.model.InterfaceData;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
import com.gpl.rpg.AndorsTrail.resource.TileStore;
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
import com.gpl.rpg.AndorsTrail.view.MainView;
public final class Dialogs {
@@ -95,7 +98,8 @@ public final class Dialogs {
showDialogAndPause(d, context);
}
public static void showConversation(final MainActivity currentActivity, final String phraseID, final Monster npc) {
public static void showConversation(final MainActivity currentActivity, final ViewContext context, final String phraseID, final Monster npc) {
context.controller.pause();
Intent intent = new Intent(currentActivity, ConversationActivity.class);
Uri.Builder b = Uri.parse("content://com.gpl.rpg.AndorsTrail/conversation/" + phraseID).buildUpon();
b.appendQueryParameter("monsterTypeID", Integer.toString(npc.monsterType.id));
@@ -103,7 +107,8 @@ public final class Dialogs {
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_CONVERSATION);
}
public static void showMonsterEncounter(final MainActivity currentActivity, final Monster m) {
public static void showMonsterEncounter(final MainActivity currentActivity, final ViewContext context, final Monster m) {
context.controller.pause();
Intent intent = new Intent(currentActivity, MonsterEncounterActivity.class);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/monsterencounter/" + m.monsterType.id));
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_MONSTERENCOUNTER);
@@ -124,8 +129,8 @@ public final class Dialogs {
}
private static void showLoot(final Context androidContext, final ViewContext context, final Loot loot, final int title, final int message) {
if (loot.isEmpty()) return;
if (ItemController.removeEmptyLoot(context, loot)) return;
String msg = androidContext.getString(message);
if (loot.exp > 0) {
msg += androidContext.getString(R.string.dialog_monsterloot_gainedexp, loot.exp);
@@ -134,6 +139,19 @@ public final class Dialogs {
msg += androidContext.getString(R.string.dialog_loot_foundgold, loot.gold);
}
if (context.model.uiSelections.displayLoot != InterfaceData.DISPLAYLOOT_DIALOG) {
if (context.model.uiSelections.displayLoot == InterfaceData.DISPLAYLOOT_TOAST) {
if (!loot.items.items.isEmpty()) {
msg += androidContext.getString(R.string.dialog_loot_pickedupitems, loot.items.items.size());
}
Toast.makeText(androidContext, msg, Toast.LENGTH_LONG).show();
}
ItemController.pickupAll(loot, context.model);
ItemController.removeEmptyLoot(context, loot);
context.controller.resume();
return;
}
final ListView itemList = new ListView(androidContext);
itemList.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
itemList.setPadding(20, 0, 20, 20);
@@ -149,29 +167,28 @@ public final class Dialogs {
});
itemList.setAdapter(new ItemContainerAdapter(androidContext, context.tileStore, loot.items));
Dialog d = new AlertDialog.Builder(androidContext)
AlertDialog.Builder db = new AlertDialog.Builder(androidContext)
.setTitle(title)
.setMessage(msg)
.setIcon(new BitmapDrawable(context.tileStore.bitmaps[TileStore.iconID_groundbag]))
.setPositiveButton(R.string.dialog_loot_pickall, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
context.model.player.inventory.add(loot.items);
loot.clear();
}
})
.setNegativeButton(R.string.dialog_close, null)
.setView(itemList)
.create();
.setView(itemList);
if (!loot.items.isEmpty()) {
db.setPositiveButton(R.string.dialog_loot_pickall, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ItemController.pickupAll(loot, context.model);
}
});
}
final Dialog d = db.create();
showDialogAndPause(d, context, new OnDismissListener() {
@Override
public void onDismiss(DialogInterface arg0) {
if (loot.isEmpty()) {
context.model.currentMap.removeGroundLoot(loot);
context.mainActivity.redrawTile(loot.position, MainView.REDRAW_TILE_BAG_REMOVED);
}
context.mainActivity.statusview.update();
ItemController.removeEmptyLoot(context, loot);
context.controller.resume();
}
});
@@ -192,16 +209,19 @@ public final class Dialogs {
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/levelup"));
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_LEVELUP);
}
public static void showRest(final Activity currentActivity, final ViewContext viewContext) {
if (!viewContext.model.uiSelections.confirmRest) {
Controller.ui_playerRested(currentActivity, viewContext);
return;
}
Dialog d = new AlertDialog.Builder(currentActivity)
.setTitle(R.string.dialog_rest_title)
.setMessage(R.string.dialog_rest_confirm_message)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Controller.playerRested(viewContext, false);
viewContext.mainActivity.statusview.update();
Dialogs.showRested(currentActivity, viewContext);
Controller.ui_playerRested(currentActivity, viewContext);
}
})
.setNegativeButton(android.R.string.no, null)
@@ -226,5 +246,9 @@ public final class Dialogs {
.setNeutralButton(android.R.string.ok, null)
.show();
}
public static void showPreferences(final Activity currentActivity) {
Intent intent = new Intent(currentActivity, Preferences.class);
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_PREFERENCES);
}
}

View File

@@ -11,6 +11,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import com.gpl.rpg.AndorsTrail.activity.Preferences;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Controller;
import com.gpl.rpg.AndorsTrail.controller.MovementController;
@@ -81,6 +82,7 @@ public final class WorldSetup {
} else {
continueWorld();
}
Preferences.read(androidContext.get(), world.model.uiSelections);
return null;
}
@@ -105,7 +107,7 @@ public final class WorldSetup {
if (world.model != null) world.reset();
world.model = new ModelContainer();
world.model.player.initializeNewPlayer(world.itemTypes, world.dropLists, newHeroName);
Controller.playerRested(world, true);
Controller.playerRested(world);
MovementController.respawnPlayer(world);
}

View File

@@ -6,11 +6,11 @@ import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
public class AboutActivity extends Activity {
@@ -20,7 +20,7 @@ public class AboutActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication.setWindowParameters(this);
setContentView(R.layout.about);
final Resources res = getResources();

View File

@@ -18,10 +18,13 @@ import com.gpl.rpg.AndorsTrail.controller.ConversationController;
import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection;
import com.gpl.rpg.AndorsTrail.conversation.Phrase;
import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reply;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterType;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
public final class ConversationActivity extends Activity {
public static final int RESULT_ATTACK = Activity.RESULT_FIRST_USER + 1;
private WorldContext world;
private Player player;
@@ -42,6 +45,7 @@ public final class ConversationActivity extends Activity {
Uri uri = getIntent().getData();
final int monsterTypeID = Integer.parseInt(uri.getQueryParameter("monsterTypeID"));
final String phraseID = uri.getLastPathSegment().toString();
monsterType = world.monsterTypes.getMonsterType(monsterTypeID);
@@ -57,10 +61,17 @@ public final class ConversationActivity extends Activity {
reply2 = (Button) findViewById(R.id.conversation_reply2);
reply3 = (Button) findViewById(R.id.conversation_reply3);
setPhrase(uri.getLastPathSegment().toString());
setPhrase(phraseID);
}
private void markMonsterAsAgressive() {
Monster m = world.model.currentMap.getMonsterAt(world.model.player.nextPosition);
assert (m != null);
assert (m.monsterType.id == monsterType.id);
m.forceAggressive = true;
}
public void setPhrase(String phraseID) {
public void setPhrase(String phraseID) {
if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_CLOSE)) {
ConversationActivity.this.finish();
return;
@@ -70,6 +81,11 @@ public final class ConversationActivity extends Activity {
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/shop/" + monsterType.id));
startActivityForResult(intent, MainActivity.INTENTREQUEST_SHOP);
return;
} else if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_ATTACK)) {
markMonsterAsAgressive();
ConversationActivity.this.setResult(RESULT_ATTACK);
ConversationActivity.this.finish();
return;
}
final Phrase phrase = world.conversations.getPhrase(phraseID);
@@ -84,7 +100,7 @@ public final class ConversationActivity extends Activity {
}
String message = phrase.message;
if (phrase.rewardGold > 0 || phrase.rewardExperience > 0) {
if (phrase.rewardGold != 0 || phrase.rewardExperience > 0) {
message += "\n";
if (phrase.rewardExperience > 0) {
message += "\n" + getResources().getString(R.string.conversation_rewardexp, phrase.rewardExperience);
@@ -92,6 +108,9 @@ public final class ConversationActivity extends Activity {
if (phrase.rewardGold > 0) {
message += "\n" + getResources().getString(R.string.conversation_rewardgold, phrase.rewardGold);
}
if (phrase.rewardGold < 0) {
message += "\n" + getResources().getString(R.string.conversation_lostgold, -phrase.rewardGold);
}
}
text.setText(message);

View File

@@ -21,7 +21,6 @@ import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
@@ -65,7 +64,7 @@ public class HeroinfoActivity extends TabActivity {
this.world = app.world;
this.view = app.currentView.get();
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication.setWindowParameters(this, world.model.uiSelections.fullscreen);
this.player = world.model.player;

View File

@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
@@ -34,7 +33,7 @@ public final class ItemInfoActivity extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
this.world = app.world;
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication.setWindowParameters(this, world.model.uiSelections.fullscreen);
final Intent intent = getIntent();
Bundle params = intent.getExtras();

View File

@@ -73,30 +73,43 @@ public final class LevelUpActivity extends Activity {
lv.setAdapter(new LevelUpSelectionAdapter(this, items));
*/
((Button) findViewById(R.id.levelup_add_health)).setOnClickListener(new OnClickListener() {
Button b;
b = (Button) findViewById(R.id.levelup_add_health);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
levelup(SELECT_HEALTH);
}
});
((Button) findViewById(R.id.levelup_add_attackchance)).setOnClickListener(new OnClickListener() {
b.setText(getString(R.string.levelup_add_health, Controller.LEVELUP_EFFECT_HEALTH));
b = (Button) findViewById(R.id.levelup_add_attackchance);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
levelup(SELECT_ATK_CH);
}
});
((Button) findViewById(R.id.levelup_add_attackdamage)).setOnClickListener(new OnClickListener() {
b.setText(getString(R.string.levelup_add_attackchance, Controller.LEVELUP_EFFECT_ATK_CH));
b = (Button) findViewById(R.id.levelup_add_attackdamage);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
levelup(SELECT_ATK_DMG);
}
});
((Button) findViewById(R.id.levelup_add_blockchance)).setOnClickListener(new OnClickListener() {
b.setText(getString(R.string.levelup_add_attackdamage, Controller.LEVELUP_EFFECT_ATK_DMG));
b = (Button) findViewById(R.id.levelup_add_blockchance);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
levelup(SELECT_DEF_CH);
}
});
b.setText(getString(R.string.levelup_add_blockchance, Controller.LEVELUP_EFFECT_DEF_CH));
}
private static final int SELECT_HEALTH = 0;

View File

@@ -5,7 +5,6 @@ import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
@@ -19,7 +18,8 @@ public class LoadingActivity extends Activity implements OnSceneLoadedListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication.setWindowParameters(this, Preferences.shouldUseFullscreen(this));
L.log("LoadingActivity::onCreate");
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);

View File

@@ -9,6 +9,7 @@ import com.gpl.rpg.AndorsTrail.WorldSetup;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterType;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.L;
@@ -23,7 +24,6 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View.OnClickListener;
import android.widget.Button;
@@ -38,7 +38,8 @@ public class MainActivity extends Activity {
public static final int INTENTREQUEST_ITEMINFO = 3;
public static final int INTENTREQUEST_CONVERSATION = 4;
public static final int INTENTREQUEST_SHOP = 5;
public static final int INTENTREQUEST_LEVELUP = 6;
public static final int INTENTREQUEST_LEVELUP = 6;
public static final int INTENTREQUEST_PREFERENCES = 7;
private ViewContext view;
private WorldContext world;
@@ -57,13 +58,12 @@ public class MainActivity extends Activity {
L.log("onCreate");
//Debug.startMethodTracing(ICICLE_KEY);
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
this.world = app.world;
this.view = new ViewContext(app, this);
app.currentView = new WeakReference<ViewContext>(this.view);
AndorsTrailApplication.setWindowParameters(this, world.model.uiSelections.fullscreen);
setContentView(R.layout.main);
mainview = (MainView) findViewById(R.id.main_mainview);
statusview = (StatusView) findViewById(R.id.main_statusview);
@@ -90,8 +90,13 @@ public class MainActivity extends Activity {
new DebugButton("Add monster", new OnClickListener() {
@Override
public void onClick(View arg0) {
MonsterType type = world.monsterTypes.getMonsterType("Winged demon");
world.model.currentMap.TEST_spawnInArea(world.model.currentMap.spawnAreas[0], type);
final String name = "Winged demon";
MonsterType type = world.monsterTypes.getMonsterType(name);
if (type == null) {
Toast.makeText(MainActivity.this, "Cannot find monster type \"" + name + "\", unable to spawn.", Toast.LENGTH_LONG).show();
} else {
world.model.currentMap.TEST_spawnInArea(world.model.currentMap.spawnAreas[0], type);
}
}
})
,new DebugButton("dmg=99", new OnClickListener() {
@@ -133,7 +138,6 @@ public class MainActivity extends Activity {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case INTENTREQUEST_HEROINFO:
statusview.update();
combatview.updatePlayerAP(world.model.player.ap);
break;
case INTENTREQUEST_MONSTERENCOUNTER:
@@ -144,9 +148,22 @@ public class MainActivity extends Activity {
}
break;
case INTENTREQUEST_CONVERSATION:
statusview.update();
if (resultCode == ConversationActivity.RESULT_ATTACK) {
final Coord p = world.model.player.nextPosition;
Monster m = world.model.currentMap.getMonsterAt(p);
if (m != null) {
view.combatController.setCombatSelection(m, p);
view.combatController.enterCombat();
} else {
//Shouldn't happen.
}
}
break;
case INTENTREQUEST_PREFERENCES:
Preferences.read(this, world.model.uiSelections);
break;
}
mainview.inhibitClicks = false;
}
private class DebugButton {
@@ -239,6 +256,15 @@ public class MainActivity extends Activity {
return true;
}
}).setEnabled(false);
menu.add(R.string.menu_settings)
.setIcon(android.R.drawable.ic_menu_preferences)
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem arg0) {
Dialogs.showPreferences(MainActivity.this);
return true;
}
});
return true;
}

View File

@@ -69,6 +69,7 @@ public final class MonsterInfoActivity extends Activity {
else if (difficulty >= 60) return R.string.monster_difficulty_easy;
else if (difficulty >= 40) return R.string.monster_difficulty_normal;
else if (difficulty >= 20) return R.string.monster_difficulty_hard;
else if (difficulty == 0) return R.string.monster_difficulty_impossible;
else return R.string.monster_difficulty_veryhard;
}
}

View File

@@ -0,0 +1,42 @@
package com.gpl.rpg.AndorsTrail.activity;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.model.InterfaceData;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
public static void read(final Context androidContext, InterfaceData dest) {
try {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(androidContext);
dest.confirmRest = prefs.getBoolean("confirm_rest", true);
dest.confirmAttack = prefs.getBoolean("confirm_attack", true);
dest.displayLoot = Integer.parseInt(prefs.getString("display_lootdialog", Integer.toString(InterfaceData.DISPLAYLOOT_DIALOG)));
dest.fullscreen = prefs.getBoolean("fullscreen", true);
} catch (Exception e) {
dest.confirmRest = true;
dest.confirmAttack = true;
dest.displayLoot = InterfaceData.DISPLAYLOOT_DIALOG;
dest.fullscreen = true;
}
}
public static boolean shouldUseFullscreen(final Context androidContext) {
try {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(androidContext);
return prefs.getBoolean("fullscreen", true);
} catch (Exception e) {
}
return true;
}
}

View File

@@ -5,7 +5,6 @@ import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
@@ -39,17 +38,17 @@ public class ShopActivity extends TabActivity implements OnContainerItemClickedL
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
this.world = app.world;
this.player = world.model.player;
AndorsTrailApplication.setWindowParameters(this, world.model.uiSelections.fullscreen);
Uri uri = getIntent().getData();
String monsterTypeID = uri.getLastPathSegment().toString();
final MonsterType npcType = world.monsterTypes.getMonsterType(Integer.parseInt(monsterTypeID));
requestWindowFeature(Window.FEATURE_NO_TITLE);
final Player player = world.model.player;
setContentView(R.layout.shop);
@@ -164,17 +163,33 @@ public class ShopActivity extends TabActivity implements OnContainerItemClickedL
}
}
private void sell(ItemType itemType) {
private void sell(ItemType itemType) {
ItemController.sell(player, itemType, container_buy);
Toast.makeText(this, getResources().getString(R.string.shop_item_sold, itemType.name), Toast.LENGTH_SHORT).show();
update();
final String msg = getResources().getString(R.string.shop_item_sold, itemType.name);
displayStoreAction(msg);
}
private void buy(ItemType itemType) {
ItemController.buy(player, itemType, container_buy);
Toast.makeText(this, getResources().getString(R.string.shop_item_bought, itemType.name), Toast.LENGTH_SHORT).show();
final String msg = getResources().getString(R.string.shop_item_bought, itemType.name);
displayStoreAction(msg);
}
private Toast lastToast = null;
private void displayStoreAction(final String msg) {
if (lastToast != null) {
lastToast.setText(msg);
} else {
lastToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
}
lastToast.show();
update();
}
@Override
protected void onPause() {
super.onPause();
lastToast = null;
}
private void update() {
updateBuyItemList();

View File

@@ -15,7 +15,6 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
@@ -34,9 +33,12 @@ public class StartScreenActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
AndorsTrailApplication.setWindowParameters(this);
setContentView(R.layout.startscreen);
TextView tv = (TextView) findViewById(R.id.startscreen_version);
tv.setText("v" + AndorsTrailApplication.CURRENT_VERSION_DISPLAY);
startscreen_currenthero = (TextView) findViewById(R.id.startscreen_currenthero);
startscreen_enterheroname = (EditText) findViewById(R.id.startscreen_enterheroname);
startscreen_enterheroname.setImeOptions(EditorInfo.IME_ACTION_DONE);
@@ -82,7 +84,8 @@ public class StartScreenActivity extends Activity {
app.setup.startResourceLoader(getResources());
if (AndorsTrailApplication.DEVELOPMENT_QUICKSTART) {
continueGame(true, "Debug player");
final boolean startNewGame = false;
continueGame(startNewGame, "Debug player");
}
}

View File

@@ -1,5 +1,6 @@
package com.gpl.rpg.AndorsTrail.context;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.EffectCollection;
import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
@@ -47,4 +48,19 @@ public class WorldContext {
public void reset() {
maps.reset();
}
// Selftest method. Not part of the game logic.
public void verifyData() {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
//Ensure that all phrases that require an item have some droplist that contains them
conversations.verifyData(dropLists);
//Ensure that all phrases are requested at least once, either by NPCs or by other phrases.
conversations.verifyData(monsterTypes);
//TODO: Ensure that all items have at least one corresponding droplist
//TODO: Ensure that all droplists are used by monsters
//TODO: Ensure that all monsters are used in spawnareas
}
}
}

View File

@@ -67,7 +67,7 @@ public final class CombatController {
}
if (loot.isEmpty()) return;
if (displayLootDialog) Dialogs.showMonsterLoot(context.mainActivity, context, loot);
ItemController.consumeLoot(loot, model.player, model.currentMap);
ItemController.consumeNonItemLoot(loot, model);
context.mainActivity.statusview.update();
}
@@ -77,7 +77,7 @@ public final class CombatController {
public void setCombatSelection(Monster selectedMonster, Coord selectedPosition) {
if (selectedMonster != null) {
if (!selectedMonster.monsterType.isAgressive()) return;
if (!selectedMonster.isAgressive()) return;
}
Coord previousSelection = model.uiSelections.selectedPosition;
if (model.uiSelections.selectedPosition != null) {
@@ -119,7 +119,7 @@ public final class CombatController {
private Monster getAdjacentMonster() {
for (MonsterSpawnArea a : model.currentMap.spawnAreas) {
for (Monster m : a.monsters) {
if (!m.monsterType.isAgressive()) continue;
if (!m.isAgressive()) continue;
if (m.rectPosition.isAdjacentTo(model.player.position)) {
return m;
}
@@ -129,7 +129,9 @@ public final class CombatController {
}
public void executeMoveAttack() {
if (world.model.uiSelections.selectedMonster != null) {
if (isMonsterTurn()) {
forceFinishMonsterAction();
} else if (world.model.uiSelections.selectedMonster != null) {
executeAttack();
} else if (world.model.uiSelections.selectedPosition != null) {
executeMove();
@@ -172,6 +174,7 @@ public final class CombatController {
Monster nextMonster = getAdjacentMonster();
if (nextMonster == null) {
exitCombat(true);
return;
} else {
setCombatSelection(nextMonster, nextMonster.position);
}
@@ -180,9 +183,7 @@ public final class CombatController {
message(r.getString(R.string.combat_result_heromiss));
}
if (!attack.isHit || !attack.targetDied) {
maybeAutoEndTurn();
}
maybeAutoEndTurn();
}
private void maybeAutoEndTurn() {
@@ -206,6 +207,7 @@ public final class CombatController {
private final Handler monsterTurnHandler = new Handler() {
public void handleMessage(Message msg) {
monsterTurnHandler.removeMessages(0);
CombatController.this.handleNextMonsterAction();
}
};
@@ -220,6 +222,13 @@ public final class CombatController {
handleNextMonsterAction();
}
private void forceFinishMonsterAction() {
//TODO:
return;
//waitForEffect = false;
//monsterTurnHandler.removeMessages(0);
//monsterTurnHandler.sendEmptyMessage(0);
}
private Monster determineNextMonster(Monster previousMonster) {
if (previousMonster != null) {
@@ -228,7 +237,7 @@ public final class CombatController {
for (MonsterSpawnArea a : model.currentMap.spawnAreas) {
for (Monster m : a.monsters) {
if (!m.monsterType.isAgressive()) continue;
if (!m.isAgressive()) continue;
if (m.rectPosition.isAdjacentTo(model.player.position)) {
if (m.useAPs(m.traits.attackCost)) return m;
@@ -285,7 +294,7 @@ public final class CombatController {
}
private static float getAverageDamagePerHit(ActorTraits attacker, ActorTraits target) {
float result = (float) (attacker.attackChance - target.blockChance) * attacker.damagePotential.average() / 100;
float result = (float) (getAttackHitChance(attacker, target)) * attacker.damagePotential.average() / 100;
result += (float) attacker.criticalChance * result * attacker.criticalMultiplier / 100;
result -= target.damageResistance;
return result;
@@ -294,6 +303,10 @@ public final class CombatController {
return getAverageDamagePerHit(attacker, target) * attacker.getAttacksPerTurn();
}
private static int getTurnsToKillTarget(ActorTraits attacker, ActorTraits target) {
if (attacker.damagePotential.max <= target.damageResistance) return 999;
if (attacker.hasCriticalEffect()) {
if (attacker.damagePotential.max * attacker.criticalMultiplier <= target.damageResistance) return 999;
}
float averageDamagePerTurn = getAverageDamagePerTurn(attacker, target);
if (averageDamagePerTurn == 0) return 100;
return (int) Math.ceil(target.maxHP / averageDamagePerTurn);
@@ -301,10 +314,11 @@ public final class CombatController {
public static int getMonsterDifficulty(WorldContext world, MonsterType monsterType) {
// returns [0..100) . 100 == easy.
int turnsToKillMonster = getTurnsToKillTarget(world.model.player.traits, monsterType);
if (turnsToKillMonster >= 999) return 0;
int turnsToKillPlayer = getTurnsToKillTarget(monsterType, world.model.player.traits);
int result = 50 + (turnsToKillPlayer - turnsToKillMonster) * 2;
if (result < 0) result = 0;
else if (result > 100) result = 100;
if (result <= 1) return 1;
else if (result > 100) return 100;
return result;
}
@@ -323,8 +337,17 @@ public final class CombatController {
}
private static final int n = 50;
private static final int F = 40;
private static final float two_divided_by_PI = (float) (2f / Math.PI);
private static int getAttackHitChance(final ActorTraits attacker, final ActorTraits target) {
final int c = attacker.attackChance - target.blockChance;
// (2/pi)*atan(..) will vary from -1 to +1 .
return (int) (50 * (1 + two_divided_by_PI * (float)Math.atan((float)(c-n) / F)));
}
private static AttackResult attack(final Actor attacker, final Actor target) {
int hitChance = attacker.traits.attackChance - target.traits.blockChance;
int hitChance = getAttackHitChance(attacker.traits, target.traits);
if (!ModelContainer.roll100(hitChance)) return AttackResult.MISS;
int damage = ModelContainer.rollValue(attacker.traits.damagePotential);
@@ -336,6 +359,7 @@ public final class CombatController {
}
}
damage -= target.traits.damageResistance;
if (damage < 0) damage = 0;
target.health.subtract(damage, false);
return new AttackResult(true, isCriticalHit, damage, target.health.current <= 0);

View File

@@ -1,5 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
@@ -77,24 +78,30 @@ public final class Controller {
public void resume() {
//L.log(id + " : Controller::resume()");
model.uiSelections.isTicking = true;
view.mainActivity.statusview.update();
model.uiSelections.isTicking = true;
view.mainActivity.mainview.inhibitClicks = false;
queueAnotherTick();
}
public void pause() {
//L.log(id + " : Controller::pause()");
hasQueuedTick = false;
model.uiSelections.isTicking = false;
view.mainActivity.mainview.inhibitClicks = true;
}
public void handleMapEvent(MapObject o) {
switch (o.type) {
case MapObject.MAPEVENT_SIGN:
if (o.place_or_key != null && o.place_or_key.length() > 0) {
model.player.addKey(o.place_or_key);
}
if (o.text == null) return;
Dialogs.showMapSign(view.mainActivity, view, o.title, o.text);
break;
case MapObject.MAPEVENT_NEWMAP:
if (o.map == null || o.place == null) return;
view.movementController.placePlayerAt(o.map, o.place);
if (o.map == null || o.place_or_key == null) return;
view.movementController.placePlayerAt(o.map, o.place_or_key);
break;
case MapObject.MAPEVENT_REST:
Dialogs.showRest(view.mainActivity, view);
@@ -103,11 +110,15 @@ public final class Controller {
}
public void steppedOnMonster(Monster m, Coord p) {
if (m.monsterType.isAgressive()) {
if (m.isAgressive()) {
view.combatController.setCombatSelection(m, p);
Dialogs.showMonsterEncounter(view.mainActivity, m);
if (!model.uiSelections.confirmAttack) {
view.combatController.enterCombat();
} else {
Dialogs.showMonsterEncounter(view.mainActivity, view, m);
}
} else {
Dialogs.showConversation(view.mainActivity, m.monsterType.phraseID, m);
Dialogs.showConversation(view.mainActivity, view, m.monsterType.phraseID, m);
}
}
@@ -117,22 +128,28 @@ public final class Controller {
int lostExp = player.levelExperience.current / (100 / PERCENT_EXP_LOST_WHEN_DIED);
player.addExperience(-lostExp);
model.statistics.addPlayerDeath(lostExp);
playerRested(world, false);
playerRested(world);
MovementController.respawnPlayer(world);
final MainActivity act = view.mainActivity;
act.statusview.update();
act.mainview.notifyMapChanged();
act.message(act.getResources().getString(R.string.combat_hero_dies, lostExp));
act.statusview.update();
}
public static void playerRested(final WorldContext world, boolean respawnUniqueMonsters) {
public static void playerRested(final WorldContext world) {
final Player player = world.model.player;
player.setMaxAP();
player.setMaxHP();
for (LayeredWorldMap m : world.maps.predefinedMaps) {
m.spawnAll(world, respawnUniqueMonsters);
if (m.visited) m.spawnAll(world);
}
}
public static void ui_playerRested(final Activity currentActivity, final ViewContext viewContext) {
playerRested(viewContext);
viewContext.mainActivity.statusview.update();
Dialogs.showRested(currentActivity, viewContext);
}
public boolean handleKeyArea(KeyArea area) {
if (view.model.player.hasKey(area.requiredKey)) return true;

View File

@@ -9,7 +9,7 @@ public class ConversationController {
public static void applyPhraseEffect(final Player player, final Phrase phrase) {
if (phrase.enablesKey != null) player.addKey(phrase.enablesKey);
if (phrase.rewardExperience > 0) player.addExperience(phrase.rewardExperience);
if (phrase.rewardGold > 0) player.inventory.gold += phrase.rewardGold;
if (phrase.rewardGold != 0) player.inventory.gold += phrase.rewardGold;
}
public static void applyReplyEffect(final Player player, final Reply reply) {

View File

@@ -108,4 +108,10 @@ public final class EffectController {
e.safejoin();
}
}
public void killCurrentEffect() {
EffectAnimation e = currentEffect;
if (e != null) {
e.killjoin();
}
}
}

View File

@@ -10,7 +10,7 @@ import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
import com.gpl.rpg.AndorsTrail.view.MainView;
public final class ItemController {
private static final int MARKET_PRICEFACTOR_PERCENT = 15;
@@ -88,7 +88,7 @@ public final class ItemController {
public void handleLootBag(Loot loot) {
Dialogs.showGroundLoot(view.mainActivity, view, loot);
consumeLoot(loot, model.player, model.currentMap);
consumeNonItemLoot(loot, model);
}
private void applyUseEffect(Actor actor, ItemType t) {
@@ -112,15 +112,30 @@ public final class ItemController {
}
}
public static void consumeLoot(Loot loot, Player player, LayeredWorldMap currentMap) {
player.addExperience(loot.exp);
public static void consumeNonItemLoot(Loot loot, ModelContainer model) {
model.player.addExperience(loot.exp);
loot.exp = 0;
player.inventory.gold += loot.gold;
model.player.inventory.gold += loot.gold;
loot.gold = 0;
if (loot.isEmpty()) {
currentMap.removeGroundLoot(loot);
model.currentMap.removeGroundLoot(loot);
}
}
public static void pickupAll(Loot loot, ModelContainer model) {
model.player.inventory.add(loot.items);
consumeNonItemLoot(loot, model);
loot.clear();
}
public static boolean removeEmptyLoot(final ViewContext context, final Loot loot) {
if (loot.isEmpty()) {
context.model.currentMap.removeGroundLoot(loot);
context.mainActivity.redrawTile(loot.position, MainView.REDRAW_TILE_BAG_REMOVED);
return true;
}
return false;
}
public static int getBuyingPrice(Player player, ItemType itemType) {
return itemType.baseMarketCost * (100 + MARKET_PRICEFACTOR_PERCENT) / 100;

View File

@@ -57,12 +57,12 @@ public final class MonsterMovementController {
,m.monsterType.tileSize
);
if (!monsterCanMoveTo(p)) {
if (!model.currentMap.monsterCanMoveTo(p)) {
cancelCurrentMonsterMovement(m);
return false;
}
if (p.contains(model.player.position)) {
if (!m.monsterType.isAgressive()) {
if (!m.isAgressive()) {
cancelCurrentMonsterMovement(m);
return false;
}
@@ -80,12 +80,6 @@ public final class MonsterMovementController {
m.nextActionTime += m.millisecondsPerMove * ModelContainer.rollValue(ModelContainer.monsterWaitTurns);
}
private boolean monsterCanMoveTo(final CoordRect p) {
if (!model.currentMap.isWalkable(p)) return false;
if (model.currentMap.getMonsterAt(p) != null) return false;
return true;
}
private static int sgn(int i) {
if (i <= -1) return -1;
else if (i >= 1) return 1;

View File

@@ -25,6 +25,7 @@ public final class MovementController {
public void placePlayerAt(String mapName, String placeName) {
placePlayerAt(world, mapName, placeName);
view.mainActivity.clearMessages();
view.mainActivity.mainview.notifyMapChanged();
}
public static void placePlayerAt(final WorldContext world, String mapName, String placeName) {
@@ -43,6 +44,8 @@ public final class MovementController {
model.currentMap = newMap;
model.player.position.set(place.position.topLeft);
model.player.lastPosition.set(model.player.position);
if (!newMap.visited) newMap.spawnAll(world);
newMap.visited = true;
}
public boolean mayMovePlayer() {
@@ -54,25 +57,44 @@ public final class MovementController {
if (!mayMovePlayer()) return;
//if (isInCombat) return;
final Player player = model.player;
player.nextPosition.set(
player.position.x + dx
,player.position.y + dy
);
final Coord newPosition = player.nextPosition;
if (!model.currentMap.isWalkable(newPosition)) {
return;
}
if (!findWalkablePosition(dx, dy)) return;
Monster m = model.currentMap.getMonsterAt(newPosition);
Monster m = model.currentMap.getMonsterAt(model.player.nextPosition);
if (m != null) {
view.controller.steppedOnMonster(m, newPosition);
view.controller.steppedOnMonster(m, model.player.nextPosition);
return;
}
moveToNextIfPossible(true);
}
private boolean findWalkablePosition(int dx, int dy) {
if (tryWalkablePosition(sgn(dx), sgn(dy))) return true;
if (dx == 0 || dy == 0) return false;
if (abs(dx) > abs(dy)) return tryWalkablePosition(sgn(dx), 0);
return tryWalkablePosition(0, sgn(dy));
}
private boolean tryWalkablePosition(int dx, int dy) {
final Player player = model.player;
player.nextPosition.set(
player.position.x + dx
,player.position.y + dy
);
if (model.currentMap.isWalkable(player.nextPosition)) return true;
return false;
}
private static int sgn(final int v) {
if (v == 0) return 0;
else if (v > 0) return 1;
else return -1;
}
private static int abs(final int v) {
if (v == 0) return 0;
else if (v > 0) return v;
else return -v;
}
public void moveToNextIfPossible(boolean handleEvents) {
final Player player = model.player;
final LayeredWorldMap currentMap = model.currentMap;
@@ -90,16 +112,11 @@ public final class MovementController {
view.mainActivity.mainview.notifyPlayerMoved();
if (handleEvents) {
for (MapObject o : currentMap.eventObjects) {
if (o.position.contains(newPosition)) {
view.controller.handleMapEvent(o);
}
}
MapObject o = currentMap.getEventObjectAt(newPosition);
if (o != null) view.controller.handleMapEvent(o);
Loot loot = currentMap.getBagAt(newPosition);
if (loot != null) {
view.itemController.handleLootBag(loot);
}
if (loot != null) view.itemController.handleLootBag(loot);
}
}

View File

@@ -2,20 +2,41 @@ package com.gpl.rpg.AndorsTrail.conversation;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reply;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterTypeCollection;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection;
import com.gpl.rpg.AndorsTrail.resource.ResourceLoader;
import com.gpl.rpg.AndorsTrail.util.L;
public class ConversationCollection {
public static final String PHRASE_CLOSE = "X";
public static final String PHRASE_SHOP = "S";
public static final String PHRASE_ATTACK = "F";
private final HashMap<String, Phrase> phrases = new HashMap<String, Phrase>();
public boolean isValidPhraseID(String id) {
if (id.equals(PHRASE_CLOSE)) return true;
else if (id.equals(PHRASE_SHOP)) return true;
else if (id.equals(PHRASE_ATTACK)) return true;
else if (phrases.containsKey(id)) return true;
else return false;
}
public Phrase getPhrase(String id) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (!phrases.containsKey(id)) {
L.log("WARNING: Cannot find requested conversation phrase id \"" + id + "\".");
return null;
}
}
return phrases.get(id);
}
@@ -35,15 +56,25 @@ public class ConversationCollection {
Reply[] _replies = new Reply[replies.size()];
_replies = replies.toArray(_replies);
phrases.put(parts[0], new Phrase(
final String phraseID = parts[0];
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (phraseID.trim().length() <= 0) {
L.log("WARNING: Adding phrase with empty id.");
} else if (phrases.get(phraseID) != null) {
L.log("WARNING: Phrase \"" + phraseID + "\" may be duplicated.");
}
}
phrases.put(phraseID, new Phrase(
parts[1]
, _replies
, parts[2]
, ResourceLoader.parseInt(parts[3], -1)
, ResourceLoader.parseInt(parts[4], -1)
, ResourceLoader.parseInt(parts[3], 0)
, ResourceLoader.parseInt(parts[4], 0)
));
}
}
}
private static Reply parseReply(String[] parts, int startIndex, ItemTypeCollection itemTypes) {
String requiresItemTypeTag = parts[startIndex+3];
@@ -60,4 +91,78 @@ public class ConversationCollection {
,ResourceLoader.parseInt(parts[startIndex+4], 0)
);
}
// Selftest method. Not part of the game logic.
public void verifyData() {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
HashSet<String> requiredKeys = new HashSet<String>();
HashSet<String> suppliedKeys = new HashSet<String>();
for (Entry<String, Phrase> e : phrases.entrySet()) {
Phrase p = e.getValue();
if (p.enablesKey != null && p.enablesKey.length() > 0) {
suppliedKeys.add(p.enablesKey);
}
if (e.getValue().replies.length <= 0) {
L.log("WARNING: Phrase \"" + e.getKey() + "\" has no replies.");
}
for (Reply r : e.getValue().replies) {
if (!isValidPhraseID(r.nextPhrase)) {
L.log("WARNING: Phrase \"" + e.getKey() + "\" has reply to non-existing phrase \"" + r.nextPhrase + "\".");
}
if (r.requiresKey != null && r.requiresKey.length() > 0) {
String s = r.requiresKey;
if (s.startsWith("!")) s = s.substring(1);
requiredKeys.add(s);
}
}
}
for(String s : requiredKeys) {
if (!suppliedKeys.contains(s)) {
L.log("WARNING: Key \"" + s + "\" is required but never supplied by any phrases.");
}
}
for(String s : suppliedKeys) {
if (!requiredKeys.contains(s)) {
L.log("OPTIMIZE: Key \"" + s + "\" is supplied but never required by any phrases.");
}
}
}
}
// Selftest method. Not part of the game logic.
public void verifyData(DropListCollection droplists) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
for (Entry<String, Phrase> e : phrases.entrySet()) {
for (Reply r : e.getValue().replies) {
if (r.requiresItemTypeID > 0) {
if (!droplists.verifyExistsDroplist(r.requiresItemTypeID)) {
L.log("WARNING: Phrase \"" + e.getKey() + "\" has reply that requires an item that is not dropped by any droplist.");
}
}
}
}
}
}
// Selftest method. Not part of the game logic.
public void verifyData(MonsterTypeCollection monsterTypes) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
HashSet<String> requiredPhrases = monsterTypes.DEBUG_getRequiredPhrases();
for (Entry<String, Phrase> e : phrases.entrySet()) {
for (Reply r : e.getValue().replies) {
requiredPhrases.add(r.nextPhrase);
}
}
requiredPhrases.remove(PHRASE_ATTACK);
requiredPhrases.remove(PHRASE_CLOSE);
requiredPhrases.remove(PHRASE_SHOP);
for (Entry<String, Phrase> e : phrases.entrySet()) {
if (!requiredPhrases.contains(e.getKey())) {
L.log("OPTIMIZE: Phrase \"" + e.getKey() + "\" cannot be reached by any monster or other phrase reply.");
}
}
}
}
}

View File

@@ -38,7 +38,10 @@ public class CombatTraits {
public boolean hasAttackDamageEffect() { return damagePotential.max > 0; }
public boolean hasBlockEffect() { return blockChance != 0; }
public boolean hasCriticalEffect() { return criticalChance > 0 && criticalMultiplier > 1; }
public int getAttacksPerTurn(final int maxAP) {
return (int) Math.floor(maxAP / attackCost);
}
// ====== PARCELABLE ===================================================================

View File

@@ -15,6 +15,16 @@ public final class InterfaceData {
public Coord selectedPosition;
public String selectedTabHeroInfo = "";
//Loaded from shared preferences, should not be parceled.
public boolean confirmRest = true;
public boolean confirmAttack = true;
public int displayLoot = DISPLAYLOOT_DIALOG;
public static final int DISPLAYLOOT_DIALOG = 0;
public static final int DISPLAYLOOT_TOAST = 1;
public static final int DISPLAYLOOT_NONE = 2;
public boolean fullscreen = true;
public InterfaceData() { }

View File

@@ -30,9 +30,7 @@ public class ActorTraits extends CombatTraits {
this.tileSize = tileSize;
this.baseCombatTraits = baseCombatTraits;
}
public int getAttacksPerTurn() {
return (int) Math.floor(maxAP / attackCost);
}
public int getAttacksPerTurn() { return getAttacksPerTurn(maxAP); }
public int getMovesPerTurn() {
return (int) Math.floor(maxAP / moveCost);
}

View File

@@ -15,6 +15,7 @@ public final class Monster extends Actor {
public final int millisecondsPerMove;
public Coord movementDestination = null;
public long nextActionTime = 0;
public boolean forceAggressive = false;
public Monster(MonsterType monsterType, Coord position) {
super(monsterType);
@@ -29,6 +30,10 @@ public final class Monster extends Actor {
monsterType.dropList.createRandomLoot(container);
}
public boolean isAgressive() {
return monsterType.phraseID == null || forceAggressive;
}
// ====== PARCELABLE ===================================================================
@@ -38,6 +43,9 @@ public final class Monster extends Actor {
Monster m = new Monster(monsterType, position);
m.ap.current = src.readInt();
m.health.current = src.readInt();
if (fileversion >= 12) {
m.forceAggressive = src.readBoolean();
}
return m;
}
@@ -46,5 +54,6 @@ public final class Monster extends Actor {
position.writeToParcel(dest, flags);
dest.writeInt(ap.current);
dest.writeInt(health.current);
dest.writeBoolean(forceAggressive);
}
}

View File

@@ -31,8 +31,4 @@ public final class MonsterType extends ActorTraits {
}
return false;
}
public boolean isAgressive() {
return phraseID == null;
}
}

View File

@@ -2,9 +2,12 @@ package com.gpl.rpg.AndorsTrail.model.actor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.regex.Matcher;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader;
import com.gpl.rpg.AndorsTrail.resource.ResourceLoader;
@@ -47,25 +50,83 @@ public final class MonsterTypeCollection {
final String monsterTypeName = parts[1];
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA && getMonsterTypesFromTags(monsterTypeName).size() > 0) {
L.log("OPTIMIZE: Monster " + monsterTypeName + " may be duplicated.");
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (getMonsterTypesFromTags(monsterTypeName).size() > 0) {
L.log("OPTIMIZE: Monster " + monsterTypeName + " may be duplicated.");
}
}
final int maxHP = ResourceLoader.parseInt(parts[5], 1);
final int maxAP = ResourceLoader.parseInt(parts[6], 10);
final CombatTraits combatTraits = ResourceLoader.parseCombatTraits(parts, 8);
final int exp = getExpectedMonsterExperience(combatTraits, maxHP, maxAP);
monsterTypes.add(new MonsterType(
nextId
, monsterTypeName
, parts[2]
, ResourceLoader.parseImage(tileLoader, parts[0])
, ResourceLoader.parseSize(parts[3], size1x1)
, ResourceLoader.parseInt(parts[5], 1) // HP
, ResourceLoader.parseInt(parts[6], 10) // AP
, ResourceLoader.parseInt(parts[7], 10) // MoveCost
, ResourceLoader.parseCombatTraits(parts, 8)
, ResourceLoader.parseInt(parts[4], 0) // Exp
, droplists.getDropList(parts[15])
, parts[16]
));
nextId
, monsterTypeName
, parts[2]
, ResourceLoader.parseImage(tileLoader, parts[0])
, ResourceLoader.parseSize(parts[3], size1x1)
, maxHP // HP
, maxAP // AP
, ResourceLoader.parseInt(parts[7], 10) // MoveCost
, combatTraits
, exp //ResourceLoader.parseInt(parts[4], 0) // Exp
, droplists.getDropList(parts[15])
, parts[16]
));
++nextId;
}
}
private static final int factor_damageresistance = 9;
private static final float factor_expscaling = 0.7f;
private static float div100(int v) {
return (float) v / 100f;
}
private static int getExpectedMonsterExperience(final MonsterType t) {
return getExpectedMonsterExperience(t, t.maxHP, t.maxAP);
}
private static int getExpectedMonsterExperience(final CombatTraits t, final int maxHP, final int maxAP) {
final float avgAttackHP = t.getAttacksPerTurn(maxAP) * div100(t.attackChance) * t.damagePotential.averagef() * (1 + div100(t.criticalChance) * t.criticalMultiplier);
final float avgDefenseHP = maxHP * (1 + div100(t.blockChance)) + factor_damageresistance * t.damageResistance;
return (int) Math.ceil((avgAttackHP * 3 + avgDefenseHP) * factor_expscaling);
}
// Selftest method. Not part of the game logic.
public void verifyData(WorldContext world) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
for (MonsterType t : monsterTypes) {
if (t.phraseID != null && t.phraseID.length() > 0) {
if (!world.conversations.isValidPhraseID(t.phraseID)) {
L.log("WARNING: Cannot find phrase \"" + t.phraseID + "\" for MonsterType \"" + t.name + "\".");
}
}
if (t.exp > 0) {
int expected_exp = getExpectedMonsterExperience(t);
if (t.exp != expected_exp) {
L.log("WARNING: MonsterType \"" + t.name + "\" has exp=" + t.exp + ", which is different from the suggested exp=" + expected_exp);
}
}
}
}
}
// Selftest method. Not part of the game logic.
public HashSet<String> DEBUG_getRequiredPhrases() {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
HashSet<String> requiredPhrases = new HashSet<String>();
for (MonsterType t : monsterTypes) {
if (t.phraseID != null && t.phraseID.length() > 0) {
requiredPhrases.add(t.phraseID);
}
}
return requiredPhrases;
} else {
return null;
}
}
}

View File

@@ -52,11 +52,11 @@ public final class Player extends Actor {
traits.baseCombatTraits.set(combat);
traits.maxAP = 10;
traits.maxHP = 20;
traits.maxHP = 25;
traits.name = name;
traits.moveCost = 6;
useItemCost = 2;
useItemCost = 5;
reequipCost = 5;
level = 1;
@@ -140,6 +140,13 @@ public final class Player extends Actor {
}
this.spawnMap = src.readUTF();
this.spawnPlace = src.readUTF();
if (fileversion <= 12) {
this.useItemCost = 5;
this.health.max += 5;
this.health.current += 5;
this.traits.maxHP += 5;
}
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {

View File

@@ -27,6 +27,15 @@ public final class DropList {
}
}
}
// Selftest metohd. Not part of the game logic.
public boolean contains(int itemTypeID) {
for (DropItem item : items) {
if (item.itemType.id == itemTypeID) return true;
}
return false;
}
public static class DropItem {
public final ItemType itemType;
public final ConstRange chance;

View File

@@ -16,8 +16,10 @@ public final class DropListCollection {
public DropList getDropList(String name) {
if (name == null || name.length() <= 0) return null;
if (!droplists.containsKey(name)) {
L.log("WARNING: Cannot find droplist \"" + name + "\".");
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (!droplists.containsKey(name)) {
L.log("WARNING: Cannot find droplist \"" + name + "\".");
}
}
return droplists.get(name);
}
@@ -70,7 +72,8 @@ public final class DropListCollection {
items.add(new DropItem(itemTypes.getItemTypeByTag("Bread"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("Mushroom"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("Eggs"), always, five));
droplists.put("shop_food", new DropList(items));
items.add(new DropItem(itemTypes.getItemTypeByTag("Mead"), always, five));
droplists.put("shop_food", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt1"), always, one));
@@ -91,6 +94,7 @@ public final class DropListCollection {
items.add(new DropItem(itemTypes.getItemTypeByTag("club3"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ironsword0"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("hammer0"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("hammer1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("dagger0"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("dagger1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("dagger2"), always, one));
@@ -149,7 +153,7 @@ public final class DropListCollection {
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(4, 2)));
items.add(new DropItem(itemTypes.getItemTypeByTag("Insect wing"), animalpart, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("insectwing"), animalpart, one));
droplists.put("wasp", new DropList(items));
items.clear();
@@ -169,6 +173,19 @@ public final class DropListCollection {
items.add(new DropItem(itemTypes.getItemTypeByTag("gland"), very_seldom, one));
droplists.put("snake", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(15, 5)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem2"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health_minor"), seldom, one));
droplists.put("lich1", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(9, 9)));
items.add(new DropItem(itemTypes.getItemTypeByTag("dagger_venom"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem3"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), always, one));
droplists.put("snakemaster", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(10, 7)));
items.add(new DropItem(itemTypes.getItemTypeByTag("hair"), animalpart, one));
@@ -176,6 +193,133 @@ public final class DropListCollection {
items.add(new DropItem(itemTypes.getItemTypeByTag("meat"), animalpart, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("boots1"), seldom, one));
droplists.put("canineboss", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(8, 4)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem1"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("claws"), animalpart, one));
droplists.put("cavecritter", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(12, 4)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem2"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("hammer0"), very_seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health_minor"), seldom, one));
droplists.put("cavemonster", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("neck_irogotu"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring_gandir"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), always, one));
droplists.put("irogotu", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty1"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem1"), seldom, one));
droplists.put("haunt", new DropList(items));
items.clear();
//TODO: Fill with heartsteel items.
droplists.put("nocmar", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("ring1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem1"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem2"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem3"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("quickdagger1"), always, one));
droplists.put("ganos", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("shirt_dmgresist"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("boots3"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gloves_attack1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gloves_attack2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("jewel_fallhaven"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring_dmg1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring_dmg2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring_block1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("ring_atkch1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("necklace_shield1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("necklace_shield2"), always, one));
droplists.put("fallhaven_clothes", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty2"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty3"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty4"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health_minor"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health_major"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("milk"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("rat_tail"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("Radish"), always, five));
items.add(new DropItem(itemTypes.getItemTypeByTag("Strawberry"), always, five));
droplists.put("fallhaven_potions", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemTypeByTag("bonemeal_potion"), always, ten));
droplists.put("thoronir", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(12, 4)));
items.add(new DropItem(itemTypes.getItemTypeByTag("club1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("calomyran_secrets"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("milk"), always, one));
droplists.put("larcal", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(12, 4)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem2"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty2"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("gloves1"), very_seldom, one));
droplists.put("catacombguard", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(5, 1)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem1"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("vial_empty1"), seldom, one));
droplists.put("catacombrat", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(5, 1)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem1"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("key_luthor"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health_major"), always, one));
droplists.put("luthor", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(23, 16)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem2"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("bone"), animalpart, one));
droplists.put("skeleton", new DropList(items));
items.clear();
items.add(new DropItem(itemTypes.getItemType(ItemTypeCollection.ITEMTYPE_GOLD), often, new ConstRange(30, 16)));
items.add(new DropItem(itemTypes.getItemTypeByTag("gem3"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("health"), seldom, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("bone"), always, one));
items.add(new DropItem(itemTypes.getItemTypeByTag("shield1"), seldom, one));
droplists.put("skeletonmaster", new DropList(items));
}
// Selftest method. Not part of the game logic.
public boolean verifyExistsDroplist(int itemTypeID) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
for (DropList d : droplists.values()) {
if (d.contains(itemTypeID)) return true;
}
}
return false;
}
}

View File

@@ -20,6 +20,7 @@ public final class ItemTypeCollection {
public ItemType getItemTypeByTag(String searchTag) {
for(ItemType t : itemTypes) {
if (t.searchTag.equalsIgnoreCase(searchTag)) return t;
if (t.name.equalsIgnoreCase(searchTag)) return t;
}
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
L.log("WARNING: Cannot find ItemType for searchtag \"" + searchTag + "\".");
@@ -50,8 +51,10 @@ public final class ItemTypeCollection {
, ResourceLoader.parseCombatTraits(parts, 6)
));
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA && getItemTypeByTag(searchTag).id != nextId) {
L.log("OPTIMIZE: Item " + searchTag + " may be duplicated.");
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (getItemTypeByTag(searchTag).id != nextId) {
L.log("OPTIMIZE: Item " + searchTag + " may be duplicated.");
}
}
++nextId;

View File

@@ -32,6 +32,7 @@ public final class LayeredWorldMap {
//public final boolean hasFOW;
//public final boolean[][] isVisible;
public final boolean[][] isWalkable;
public boolean visited = false;
public LayeredWorldMap(String name, Size size, MapLayer[] layers, boolean[][] isWalkable, MapObject[] eventObjects, KeyArea[] keyAreas, MonsterSpawnArea[] spawnAreas, boolean hasFOW) {
this.name = name;
@@ -85,6 +86,14 @@ public final class LayeredWorldMap {
}
return null;
}
public MapObject getEventObjectAt(final Coord p) {
for (MapObject o : eventObjects) {
if (o.position.contains(p)) {
return o;
}
}
return null;
}
public Monster getMonsterAt(final CoordRect p) {
for (MonsterSpawnArea a : spawnAreas) {
@@ -119,14 +128,22 @@ public final class LayeredWorldMap {
p.topLeft.set(
area.topLeft.x + ModelContainer.rnd.nextInt(area.size.width)
,area.topLeft.y + ModelContainer.rnd.nextInt(area.size.height));
if (!isWalkable(p)) continue;
if (getMonsterAt(p) != null) continue;
if (!monsterCanMoveTo(p)) continue;
return p.topLeft;
}
return null; // Couldn't find a free spot.
}
public void spawnAll(WorldContext context, boolean respawnUniqueMonsters) {
public boolean monsterCanMoveTo(final CoordRect p) {
if (!isWalkable(p)) return false;
if (getMonsterAt(p) != null) return false;
if (getEventObjectAt(p.topLeft) != null) return false;
return true;
}
public void spawnAll(WorldContext context) {
boolean respawnUniqueMonsters = false;
if (!visited) respawnUniqueMonsters = true;
for (MonsterSpawnArea a : spawnAreas) {
while (a.isSpawnable(respawnUniqueMonsters)) {
spawnInArea(a, context);
@@ -180,6 +197,7 @@ public final class LayeredWorldMap {
for(MonsterSpawnArea a : spawnAreas) {
a.reset();
}
visited = false;
}
@@ -199,6 +217,9 @@ public final class LayeredWorldMap {
for(int i = 0; i < size2; ++i) {
groundBags.add(new Loot(src, world, fileversion));
}
if (fileversion <= 11) return;
visited = src.readBoolean();
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {
@@ -206,10 +227,10 @@ public final class LayeredWorldMap {
for(MonsterSpawnArea a : spawnAreas) {
a.writeToParcel(dest, flags);
}
dest.writeInt(groundBags.size());
for(Loot l : groundBags) {
l.writeToParcel(dest, flags);
}
dest.writeBoolean(visited);
}
}

View File

@@ -30,6 +30,44 @@ public final class MapCollection {
}
}
// Selftest method. Not part of the game logic.
public void verifyData(WorldContext world) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
for (LayeredWorldMap m : predefinedMaps) {
for (MapObject o : m.eventObjects) {
if (o.type == MapObject.MAPEVENT_NEWMAP) {
final String desc = "Map \"" + m.name + "\", place \"" + o.title + "\"";
if (o.map == null || o.map.length() <= 0) {
L.log("OPTIMIZE: " + desc + " has no destination map.");
} else if (o.place_or_key == null || o.place_or_key.length() <= 0) {
L.log("OPTIMIZE: " + desc + " has no destination place.");
} else {
LayeredWorldMap destination = findPredefinedMap(o.map);
if (destination == null) {
L.log("WARNING: " + desc + " references non-existing destination map \"" + o.map + "\".");
continue;
}
MapObject place = destination.findEventObject(MapObject.MAPEVENT_NEWMAP, o.place_or_key);
if (place == null) {
L.log("WARNING: " + desc + " references non-existing destination place \"" + o.place_or_key + "\" on map \"" + o.map + "\".");
continue;
}
if (!m.name.equalsIgnoreCase(place.map)) {
L.log("WARNING: " + desc + " references destination place \"" + o.place_or_key + "\" on map \"" + o.map + "\", but that place does not reference back to this map.");
continue;
}
if (!o.title.equalsIgnoreCase(place.place_or_key)) {
L.log("WARNING: " + desc + " references destination place \"" + o.place_or_key + "\" on map \"" + o.map + "\", but that place does not reference back to this place.");
continue;
}
}
}
}
}
}
}
// ====== PARCELABLE ===================================================================

View File

@@ -12,7 +12,7 @@ public final class MapObject {
public final String text;
public final String title;
public final String map;
public final String place;
public final String place_or_key;
private MapObject(final CoordRect position, final int type, final String title, final String text, final String map, final String place) {
this.position = new CoordRect(position);
@@ -20,11 +20,11 @@ public final class MapObject {
this.title = title;
this.text = text;
this.map = map;
this.place = place;
this.place_or_key = place;
}
public static MapObject createMapSignEvent(final CoordRect position, final String title, final String text) {
return new MapObject(position, MAPEVENT_SIGN, title, text, null, null);
public static MapObject createMapSignEvent(final CoordRect position, final String title, final String text, final String enableKey) {
return new MapObject(position, MAPEVENT_SIGN, title, text, null, enableKey);
}
public static MapObject createNewMapEvent(final CoordRect position, final String thisMapTitle, final String destinationMap, final String destinationPlace) {
return new MapObject(position, MAPEVENT_NEWMAP, thisMapTitle, null, destinationMap, destinationPlace);

Some files were not shown because too many files have changed in this diff Show More