diff --git a/AndorsTrail/res/drawable/monsters_dragon1.png b/AndorsTrail/res/drawable/monsters_dragon1.png
deleted file mode 100644
index f33e6dfa6..000000000
Binary files a/AndorsTrail/res/drawable/monsters_dragon1.png and /dev/null differ
diff --git a/AndorsTrail/res/drawable/monsters_rltiles1.png b/AndorsTrail/res/drawable/monsters_rltiles1.png
index 3cde8b73c..8670a9ccf 100644
Binary files a/AndorsTrail/res/drawable/monsters_rltiles1.png and b/AndorsTrail/res/drawable/monsters_rltiles1.png differ
diff --git a/AndorsTrail/res/drawable/monsters_rltiles2.png b/AndorsTrail/res/drawable/monsters_rltiles2.png
index b09da21ee..415f5402e 100644
Binary files a/AndorsTrail/res/drawable/monsters_rltiles2.png and b/AndorsTrail/res/drawable/monsters_rltiles2.png differ
diff --git a/AndorsTrail/res/drawable/monsters_rltiles3.png b/AndorsTrail/res/drawable/monsters_rltiles3.png
new file mode 100644
index 000000000..ac34082f2
Binary files /dev/null and b/AndorsTrail/res/drawable/monsters_rltiles3.png differ
diff --git a/AndorsTrail/res/drawable/monsters_warrior1.png b/AndorsTrail/res/drawable/monsters_warrior1.png
deleted file mode 100644
index 9d0bd5d1a..000000000
Binary files a/AndorsTrail/res/drawable/monsters_warrior1.png and /dev/null differ
diff --git a/AndorsTrail/res/values/content_actorconditions.xml b/AndorsTrail/res/values/content_actorconditions.xml
index bf4eb158e..2fa5d0239 100644
--- a/AndorsTrail/res/values/content_actorconditions.xml
+++ b/AndorsTrail/res/values/content_actorconditions.xml
@@ -20,4 +20,11 @@
{intoxicated|Intoxicated|actorconditions_2:1|1||||||||||||||1|15|||1|-30|||4|4|||};
{dazed|Dazed|actorconditions_1:65|1||||||||||||||1||||||||||-40||};
+
+
+[id|name|iconID|category|isStacking|hasRoundEffect|round_visualEffectID|round_boostHP_Min|round_boostHP_Max|round_boostAP_Min|round_boostAP_Max|hasFullRoundEffect|fullround_visualEffectID|fullround_boostHP_Min|fullround_boostHP_Max|fullround_boostAP_Min|fullround_boostAP_Max|hasAbilityEffect|boostMaxHP|boostMaxAP|moveCostPenalty|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|];
+{chaotic_grip|Chaotic grip|actorconditions_1:96|1||0||||||||||||1||||||||||-10|-1|};
+{chaotic_curse|Chaotic curse|actorconditions_1:89|1||0||||||||||||1||-1||||||-1|-1|-10|-1|};
+
+
diff --git a/AndorsTrail/res/values/content_conversationlist.xml b/AndorsTrail/res/values/content_conversationlist.xml
index bd1044eea..83e9d6de5 100644
--- a/AndorsTrail/res/values/content_conversationlist.xml
+++ b/AndorsTrail/res/values/content_conversationlist.xml
@@ -3091,4 +3091,40 @@
{loneford_tavern_patron|This is no place for a kid like you. I think you better leave now.||||};
+
+[id|message|progressQuest|rewardDropListID|replies[text|nextPhraseID|requires_Progress|requires_itemID|requires_Quantity|]|];
+{iqhan_greeter|Get away! No! Turn back while you still can!|||{{N|iqhan_greeter_1||||}}|};
+{iqhan_greeter_1|You don\'t know what they\'ll do to you!|||{{What is this place?|iqhan_greeter_2||||}}|};
+{iqhan_greeter_2|What!? No, no, no. Must get out of here!|||{{N|R||||}}|};
+{iqhan_boss|*wheeze*|||{{N|iqhan_boss_1||||}}|};
+{iqhan_boss_1|(The figure points its finger towards you, in what looks to be an order for the nearby thralls to attack you.)|||{{Fight!|F||||}}|};
+{sign_waterway1|South: Loneford\nEast: Brimhaven.\n(You also see something written on an arrow pointing to the west, but you cannot understand the words)||||};
+{sign_waterway3|(The sign contains writing in a language you cannot understand)||||};
+
+{gauward|What.. Oh, a visitor!|||{
+ {What is this place?|gauward_1||||}
+ {I have some Izthiel claws to sell you.|gauward_sell_1|nondisplay:20|||}
+ }|};
+{gauward_1|This place used to be a safe house for travellers between Loneford and Brimhaven, before they had finished the road between the villages.|||{{N|gauward_2||||}}|};
+{gauward_2|But nowadays, noone rarely comes here - because of those cursed creatures from the river.|||{{N|gauward_3||||}}|};
+{gauward_3|Izthiel, they call them.|||{{N|gauward_4||||}}|};
+{gauward_4|Ack, if it wasn\'t for those things out there, I am sure a lof of people would come by here more often.|||{
+ {Would you like me to kill the creatures for you?|gauward_5||||}
+ }|};
+{gauward_5|Oh sure. I have tried that. But they just keep coming back.|||{{N|gauward_6||||}}|};
+{gauward_6|Tell you what though. Bring me those claws of theirs, and I\'ll buy them from you for a good price.|||{{Ok, I will return with some of their claws.|gauward_7||||}}|};
+{gauward_7|Good. Please do. I like knowing that their numbers are reduced at least.|nondisplay:20|||};
+{gauward_sell_1|Great. How many would you like to sell?|||{
+ {Here\'s one.|gauward_sold_1||izthiel_claw|1|}
+ {Here\'s five.|gauward_sold_5||izthiel_claw|5|}
+ {Here\'s ten.|gauward_sold_10||izthiel_claw|10|}
+ {Here\'s twenty.|gauward_sold_20||izthiel_claw|20|}
+ {Nevermind. I will be back with more Izthiel claws to sell you.|gauward_7||||}
+ }|};
+{gauward_sold_1|Good, thank you. Here\'s some gold for your troubles.||gold5||};
+{gauward_sold_5|Excellent, thank you! Here\'s some gold for your troubles.||gold25||};
+{gauward_sold_10|Excellent, thank you! Here\'s some gold for your troubles.||gold50||};
+{gauward_sold_20|Oh wow, you managed to get twenty of those claws? That\'s excellent, thank you! Here\'s some gold and something extra for your troubles.||gauward_sold_20||};
+
+
diff --git a/AndorsTrail/res/values/content_droplist.xml b/AndorsTrail/res/values/content_droplist.xml
index 628784e5a..3b87c5072 100644
--- a/AndorsTrail/res/values/content_droplist.xml
+++ b/AndorsTrail/res/values/content_droplist.xml
@@ -419,6 +419,22 @@
{fieldcritter_3|{{gold|3|17|70|}{gland|1|1|30|}{ring1|1|1|5|}{ring2|1|1|5|}}|};
{carrioncrawler|{{gold|0|4|70|}{bone|1|3|20|}{boots_sewn|1|1|5|}}|};
{rivertroll|{{gold|0|70|70|}{bone|3|5|50|}{meat|3|5|30|}{club_fine_wooden|1|1|100|}}|};
+
+{izthiel|{{gold|3|15|70|}{izthiel_claw|1|1|30|}{ring_jinxed1|1|1|5|}{ring2|1|1|5|}}|};
+{izthiel_4|{{gold|3|40|70|}{izthiel_claw|1|1|30|}{ring_jinxed1|1|1|20|}{ring2|1|1|20|}}|};
+{frog|{{gold|0|3|70|}}|};
+{frog_3|{{gold|0|3|70|}{gland|1|1|30|}}|};
+{iqhan_lesser|{{gold|1|5|70|}{iqhan_pendant|1|1|1|}{shirt_torn|1|1|5|}{dagger0|1|1|5|}}|};
+{iqhan|{{gold|1|9|70|}{iqhan_pendant|1|1|5|}{shield1|1|1|5|}{dagger0|1|1|5|}}|};
+{iqhan_master|{{gold|1|9|70|}{iqhan_pendant|1|1|5|}{gloves_crude_cloth|1|1|5|}{dagger0|1|1|5|}{health|1|3|5|}}|};
+{iqhan_beast|{{gold|0|1|70|}{chaosreaper|1|1|1/1000|}{health|1|1|5|}}|};
+{iqhan_boss|{{gold|50|100|100|}{iqhan_pendant|1|1|100|}{health|5|7|100|}{ring_polished_combat|1|1|100|}}|};
+
+{gold5|{{gold|5|5|100|}}|};
+{gold25|{{gold|25|25|100|}}|};
+{gold50|{{gold|50|50|100|}}|};
+{gauward_sold_20|{{gold|100|100|100|}{health|2|2|100|}}|};
+
diff --git a/AndorsTrail/res/values/content_itemlist.xml b/AndorsTrail/res/values/content_itemlist.xml
index b30c8c7e8..bdb41e178 100644
--- a/AndorsTrail/res/values/content_itemlist.xml
+++ b/AndorsTrail/res/values/content_itemlist.xml
@@ -312,6 +312,9 @@
{fg_ironsword|items_weapons:0|Feygard iron sword|0|1|1|0|1||||5|10|||1|5|||||||||||||||||||||||};
{fg_ironsword_d|items_weapons:0|Degraded Feygard iron sword|0|1|1|0|1||||5|-50|||0|0|||||||||||||||||||||||};
{buceth_vial|items_consumables:47|Buceth\'s vial of green liquid|31|1|1|0|||||||||||||||||||||||||||||||||};
+{chaosreaper|items_weapons:49|Chaosreaper|0|3|1|339|1||||4|-30|||0|2||||0||||||1||||||{{chaotic_grip|5|3|50|}}|||||||};
+{izthiel_claw|items_misc:47|Izthiel claw|31||1|1||||||||||||||1|1|6|||||||||||||||||};
+{iqhan_pendant|items_necklaces_1:2|Iqhan pendant|6||1|10|1|||||6|||||||||||||||||||||||||||};
diff --git a/AndorsTrail/res/values/content_monsterlist.xml b/AndorsTrail/res/values/content_monsterlist.xml
index 8efda2b58..fe6d14fb2 100644
--- a/AndorsTrail/res/values/content_monsterlist.xml
+++ b/AndorsTrail/res/values/content_monsterlist.xml
@@ -59,7 +59,7 @@
{audir|monsters_men:0|Audir|audir|1x1|1|1|1|1|0|||0|0|||shop_audir|audir1||||||||};
{arambold|monsters_men:3|Arambold|arambold|1x1|1|1|1|1|0|||0|0|||shop_arambold|arambold1||||||||};
{tharal|monsters_men:4|Tharal|tharal|1x1|1|1|1|1|0|||0|0|||shop_tharal|tharal1||||||||};
-{drunk|monsters_warrior1:0|Drunk|drunk|1x1|1|1|1|1|0|||0|0||||drunk1||||||||};
+{drunk|monsters_rltiles3:14|Drunk|drunk|1x1|1|1|1|1|0|||0|0||||drunk1||||||||};
{mara|monsters_men:7|Mara|mara|1x1|1|1|1|1|0|||0|0|||shop_mara|mara1||||||||};
{gruil|monsters_rogue1:0|Gruil|gruil|1x1|1|1|1|1|0|||0|0|||shop_gruil|gruil1||||||||};
{leonid|monsters_men:3|Leonid|leonid|1x1|1|1|1|1|0|||0|0||||leonid1||||||||};
@@ -67,13 +67,13 @@
{tired_farmer|monsters_man1:0|Tired farmer|crossglen_farmer2|1x1|1|1|1|1|0|||0|0||||farm2||||||||};
{oromir|monsters_man1:0|Oromir|oromir|1x1|1|1|1|1|0|||0|0||||oromir1||||||||};
{odair|monsters_men:8|Odair|odair|1x1|1|1|1|1|0|||0|0||||odair1||||||||};
-{jan|monsters_warrior1:0|Jan|jan|1x1|1|1|1|1|0|||0|0||||jan_start_select||||||||};
+{jan|monsters_rltiles3:14|Jan|jan|1x1|1|1|1|1|0|||0|0||||jan_start_select||||||||};
[id|iconID|name|tags|size|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID|hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|];
{warden|monsters_men:3|Warden|fallhaven_warden|1x1|1|1|1|1|0|||0|0||||fallhaven_warden_select_1||||||||};
-{guard|monsters_warrior1:0|Guard|fallhaven_guard|1x1|1|1|1|1|0|||0|0||||fallhaven_guard||||||||};
+{guard|monsters_rltiles3:14|Guard|fallhaven_guard|1x1|1|1|1|1|0|||0|0||||fallhaven_guard||||||||};
{acolyte|monsters_men:4|Acolyte|fallhaven_priest|1x1|1|1|1|1|0|||0|0||||fallhaven_priest||||||||};
{bearded_citizen|monsters_man1:0|Bearded Citizen|fallhaven_citizen1|1x1|1|1|1|1|0|||0|0||||fallhaven_citizen1||||||||};
{old_citizen|monsters_men:2|Old Citizen|fallhaven_citizen2|1x1|1|1|1|1|0|||0|0||||fallhaven_citizen2||||||||};
@@ -169,9 +169,9 @@
{foaming_flask_cook|monsters_men:0|Foaming Flask cook|ff_cook|1x1|1|1|1|1|0|||0|0||||ff_cook_1||||||||};
{torilo|monsters_men2:9|Torilo|torilo|1x1|1|1|1|1|0|||0|0|||shop_torilo|torilo_1||||||||};
{ambelie|monsters_men:6|Ambelie|ambelie|1x1|1|1|1|1|0|||0|0||||ambelie_1||||||||};
-{feygard_patrol|monsters_warrior1:0|Feygard patrol|ff_guard|1x1|1|1|1|1|0|||0|0||||ff_guard_1||||||||};
+{feygard_patrol|monsters_rltiles3:14|Feygard patrol|ff_guard|1x1|1|1|1|1|0|||0|0||||ff_guard_1||||||||};
{feygard_patrol_captain|monsters_men:3|Feygard patrol captain|ff_captain|1x1|1|1|1|1|0|||0|0||||ff_captain_1||||||||};
-{feygard_patrol_watch|monsters_warrior1:0|Feygard patrol watch|ff_outsideguard|1x1|80|||5|70|||2|7|80|3|ff_outsideguard|ff_outsideguard_select||||||||};
+{feygard_patrol_watch|monsters_rltiles3:14|Feygard patrol watch|ff_outsideguard|1x1|80|||5|70|||2|7|80|3|ff_outsideguard|ff_outsideguard_select||||||||};
{wrye|monsters_men:6|Wrye|wrye|1x1|1|1|1|1|0|||0|0||||wrye_select_1||||||||};
{oluag|monsters_men:8|Oluag|oluag|1x1|1|1|1|1|0|||0|0||||oluag_1||||||||};
@@ -250,7 +250,7 @@
{guthbered|monsters_rltiles1:92|Guthbered|guthbered|1x1|80|10|5|5|70|||4|9|80|4|guthbered|guthbered_start||||||||};
{guthbereds_bodyguard|monsters_rltiles1:76|Guthbered\'s bodyguard|guthbered_guard|1x1||10|5|5|||||||||guthbered_guard||||||||};
{prim_weapon_guard|monsters_rltiles1:65|Prim weapon guard|prim_guard1|1x1||10|5|5|||||||||prim_guard1||||||||};
-{prim_sentry|monsters_warrior1:0|Prim sentry|prim_guard2|1x1||10|5|5|||||||||prim_guard2||||||||};
+{prim_sentry|monsters_rltiles3:14|Prim sentry|prim_guard2|1x1||10|5|5|||||||||prim_guard2||||||||};
{prim_guard|monsters_rltiles1:65|Prim guard|prim_guard4|1x1||10|5|5|||||||||prim_guard4||||||||};
{tired_prim_guard|monsters_rltiles1:76|Tired Prim guard|prim_guard3|1x1||10|5|5|||||||||prim_guard3||||||||};
{prim_treasury_guard|monsters_rltiles1:69|Prim treasury guard|prim_treasury_guard|1x1||10|5|5|||||||||prim_treasury_guard||||||||};
@@ -260,7 +260,7 @@
{reading_prim_pupil|monsters_rltiles1:74|Reading Prim pupil|prim_pupil2|1x1||10|5|5|||||||||prim_pupil2||||||||};
{prim_pupil|monsters_rltiles1:74|Prim pupil|prim_pupil3|1x1||10|5|5|||||||||prim_pupil3||||||||};
-{blackwater_entrance_guard|monsters_warrior1:0|Blackwater entrance guard|blackwater_entranceguard|1x1|30|10|||||||||||blackwater_entranceguard||||||||};
+{blackwater_entrance_guard|monsters_rltiles3:14|Blackwater entrance guard|blackwater_entranceguard|1x1|30|10|||||||||||blackwater_entranceguard||||||||};
{blackwater_dinner_guest|monsters_karvis2:2|Blackwater dinner guest|blackwater_guest1|1x1|20|10|||||||||||blackwater_guest1||||||||};
{blackwater_inhabitant|monsters_man1:0|Blackwater inhabitant|blackwater_guest2|1x1|10|10|||||||||||blackwater_guest2||||||||};
{blackwater_cook|monsters_karvis2:0|Blackwater cook|blackwater_cook|1x1||10|5|5|||||||||blackwater_cook||||||||};
@@ -290,11 +290,6 @@
{young_larval_burrower|monsters_rltiles2:164|Young larval burrower|larva_1|1x1|30|10|5|5|120|35|3|1|6|25||larva_1|||||||||};
{larval_burrower|monsters_rltiles2:164|Larval burrower|larva_2|1x1|35|10|5|5|120|35|3|1|6|25||larva_2|||||||||};
{larval_boss|monsters_rltiles2:164|Strong larval burrower|larva_boss|1x1|35|10|5|5|120|35|3|1|6|25||larva_boss|||||||||};
-{lostsheep1|monsters_karvis2:8|Sheep|tinlyn_lostsheep1|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep1||||||||};
-{lostsheep2|monsters_karvis2:8|Sheep|tinlyn_lostsheep2|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep2||||||||};
-{lostsheep3|monsters_karvis2:8|Sheep|tinlyn_lostsheep3|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep3||||||||};
-{lostsheep4|monsters_karvis2:8|Sheep|tinlyn_lostsheep4|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep4||||||||};
-{sheep1|monsters_karvis2:8|Sheep|tinlyn_sheep|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_sheep||||||||};
{rivertroll|monsters_rltiles1:104|River troll|rivertroll|1x1|210|10|5|5|120|30|4|2|9|65|7|rivertroll|||||||||};
{grass_ant|monsters_insects:0|Grasslands ant|fieldcritter_0|1x1|29|10|5|3|120|||0|4|80||fieldcritter_0|||||||||};
@@ -310,10 +305,29 @@
{carrion_crawler|monsters_rltiles2:22|Carrion crawler|carrioncrawler_2|1x1|55|10|5|5|50|||3|8|40|4|carrioncrawler||1||||||{{poison_weak|1|5|20|}}|};
{tough_carrion_crawler|monsters_rltiles2:21|Tough carrion crawler|carrioncrawler_3|1x1|59|10|5|5|59|||4|9|40|5|carrioncrawler||1||||||{{poison_weak|1|5|20|}}|};
{keknazar|monsters_misc:9|Keknazar|keknazar|1x1|90|10|5|5|50|20|3|3|9|70|8|keknazar|keknazar||||||||};
+
+{crossroads_rat|monsters_rats:0|Rat|crossroads_rat|1x1|5|10|5|5|50|||1|1|30||rat|||||||||};
+{fieldwasp_0|monsters_insects:1|Frantic forest wasp|fieldwasp_0|1x1|29|10|5|3|70|60|3|2|6|95||fieldwasp|||||||||};
+{fieldwasp_1|monsters_insects:1|Frantic forest wasp|fieldwasp_1|1x1|32|10|5|3|70|70|3|2|6|125||fieldwasp|||||||||};
+{fieldwasp_2|monsters_insects:1|Frantic forest wasp|fieldwasp_2|1x1|35|10|5|3|70|75|3|2|6|130||fieldwasp|||||||||};
+
+{izthiel_1|monsters_rltiles2:51|Young Izthiel|izthiel_1|1x1|40|10|5|3|70|||2|7|57|5|izthiel||0|||||||};
+{izthiel_2|monsters_rltiles2:49|Izthiel|izthiel_2|1x1|45|10|5|3|90|||2|7|58|6|izthiel||0|||||||};
+{izthiel_3|monsters_rltiles2:48|Strong Izthiel|izthiel_3|1x1|52|10|5|3|80|||2|7|60|8|izthiel||1||||||{{bleeding_wound|2|4|40|}}|};
+{izthiel_4|monsters_rltiles2:52|Izthiel Guardian|izthiel_4|1x1|54|10|5|3|120|||3|7|60|11|izthiel_4||1||||||{{bleeding_wound|3|5|50|}}|};
+{frog_1|monsters_rltiles1:131|River frog|frog_1|1x1|15|10|5|2|150|||0|5|45||frog||0|||||||};
+{frog_2|monsters_rltiles1:131|Tough river frog|frog_2|1x1|17|10|5|2|160|||0|5|49||frog||0|||||||};
+{frog_3|monsters_rltiles1:130|Poisonous river frog|frog_3|1x1|21|10|5|2|165|||0|5|55||frog_3||1||||||{{poison_weak|2|5|30|}}|};
[id|iconID|name|tags|size|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID|hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|];
+{lostsheep1|monsters_karvis2:8|Sheep|tinlyn_lostsheep1|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep1||||||||};
+{lostsheep2|monsters_karvis2:8|Sheep|tinlyn_lostsheep2|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep2||||||||};
+{lostsheep3|monsters_karvis2:8|Sheep|tinlyn_lostsheep3|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep3||||||||};
+{lostsheep4|monsters_karvis2:8|Sheep|tinlyn_lostsheep4|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_lostsheep4||||||||};
+{sheep1|monsters_karvis2:8|Sheep|tinlyn_sheep|1x1|5|10|5|5|10|||0|1|5||tinlyn_sheep|tinlyn_sheep||||||||};
+
{ailshara|monsters_men:8|Ailshara|ailshara|1x1||10|5|5||||||||shop_ailshara|ailshara||||||||};
{arngyr|monsters_rltiles1:65|Arngyr|arngyr|1x1||10|5|5|||||||||arngyr||||||||};
{benbyr|monsters_rltiles1:74|Benbyr|benbyr|1x1||10|5|5|||||||||benbyr||||||||};
@@ -323,24 +337,20 @@
{crossroads_guard|monsters_rltiles1:76|Guard|crossroads_guard|1x1||10|5|5|||||||||crossroads_guard||||||||};
{crossroads_sleepguard|monsters_rltiles1:76|Guard|crossroads_sleepguard|1x1||10|5|5|||||||||crossroads_sleepguard||||||||};
{crossroads_guest|monsters_rltiles1:83|Visitor|crossroads_guest|1x1||10|5|5|||||||||crossroads_guest||||||||};
-{crossroads_rat|monsters_rats:0|Rat|crossroads_rat|1x1|5|10|5|5|50|||1|1|30||rat|||||||||};
{erinith|monsters_rltiles1:82|Erinith|erinith|1x1||10|5|5|||||||||erinith||||||||};
{fanamor|monsters_men:7|Fanamor|fanamor|1x1||10|5|5|||||||||fanamor||||||||};
{feygard_bridgeguard|monsters_men2:4|Feygard bridge guard|feygard_bridgeguard|1x1||10|5|5|||||||||feygard_bridgeguard||||||||};
-{fieldwasp_0|monsters_insects:1|Frantic forest wasp|fieldwasp_0|1x1|29|10|5|3|70|60|3|2|6|95||fieldwasp|||||||||};
-{fieldwasp_1|monsters_insects:1|Frantic forest wasp|fieldwasp_1|1x1|32|10|5|3|70|70|3|2|6|125||fieldwasp|||||||||};
-{fieldwasp_2|monsters_insects:1|Frantic forest wasp|fieldwasp_2|1x1|35|10|5|3|70|75|3|2|6|130||fieldwasp|||||||||};
{fieldwasp_unique|monsters_insects:1|Frantic forest wasp|fieldwasp_unique|1x1|70|10|5|3|70|100|3|2|6|150||fieldwasp_unique|||||||||};
{gallain|monsters_man1:0|Gallain|gallain|1x1||10|5|5||||||||shop_gallain|gallain||||||||};
{gandoren|monsters_rltiles1:69|Gandoren|gandoren|1x1||10|5|5|||||||||gandoren||||||||};
{grimion|monsters_men2:2|Grimion|grimion|1x1||10|5|5||||||||shop_grimion|grimion||||||||};
{hadracor|monsters_men2:2|Hadracor|hadracor|1x1||10|5|5||||||||shop_hadracor|hadracor||||||||};
{kuldan|monsters_rltiles1:85|Kuldan|kuldan|1x1||10|5|5|||||||||kuldan||||||||};
-{kuldan_guard|monsters_warrior1:0|Kuldan\'s Guard|kuldan_guard|1x1||10|5|5|||||||||kuldan_guard||||||||};
+{kuldan_guard|monsters_rltiles3:14|Kuldan\'s Guard|kuldan_guard|1x1||10|5|5|||||||||kuldan_guard||||||||};
{landa|monsters_men:0|Landa|landa|1x1||10|5|5|||||||||landa||||||||};
{loneford_chapelguard|monsters_rltiles1:78|Chapel guard|loneford_chapelguard|1x1||10|5|5|||||||||loneford_chapelguard||||||||};
{loneford_farmer0|monsters_karvis2:1|Farmer|loneford_farmer0|1x1||10|5|5|||||||||loneford_farmer0||||||||};
-{loneford_guard0|monsters_warrior1:0|Guard|loneford_guard0|1x1||10|5|5|||||||||loneford_guard0||||||||};
+{loneford_guard0|monsters_rltiles3:14|Guard|loneford_guard0|1x1||10|5|5|||||||||loneford_guard0||||||||};
{loneford_tavern_patron|monsters_karvis2:2|Tavern patron|loneford_tavern_patron|1x1||10|5|5|||||||||loneford_tavern_patron||||||||};
{loneford_villager0|monsters_karvis2:0|Villager|loneford_villager0|1x1||10|5|5|||||||||loneford_villager0||||||||};
{loneford_villager1|monsters_karvis2:1|Villager|loneford_villager1|1x1||10|5|5|||||||||loneford_villager1||||||||};
@@ -368,6 +378,29 @@
{rogorn|monsters_rltiles1:63|Rogorn|rogorn|1x1|145|10|5|3|90|||5|9|120|5|rogorn|rogorn||||||||};
{rogorn_henchman|monsters_rogue1:0|Rogorn\'s henchman|rogorn_henchman|1x1|130|10|5|3|80|||5|8|120|4|rogorn_henchman|rogorn_henchman||||||||};
{buceth|monsters_men2:7|Buceth|buceth|1x1|75|10|5|3|80|100|2|3|9|120|4|buceth|buceth||||||||};
+{gauward|monsters_mage2:0|Gauward|gauward|1x1||10|5|5|||||||||gauward||||||||};
+
+
+
+[id|iconID|name|tags|size|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID|hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|];
+{iqhan_1a|monsters_rltiles2:96|Iqhan worker thrall|iqhan_1|1x1|55|10|5|3|110|||2|9|70||iqhan_lesser|||||||||};
+{iqhan_1b|monsters_rltiles2:96|Iqhan thrall servant|iqhan_1|1x1|57|10|5|3|120|15|2|2|9|70||iqhan_lesser|||||||||};
+{iqhan_2a|monsters_rltiles2:97|Iqhan guard thrall|iqhan_2|1x1|59|10|5|3|130|15|2|2|9|70||iqhan_lesser|||||||||};
+{iqhan_2b|monsters_rltiles2:97|Iqhan thrall|iqhan_2|1x1|62|10|5|3|130|15|2|2|10|70||iqhan_lesser|||||||||};
+{iqhan_3a|monsters_rltiles2:128|Iqhan warrior thrall|iqhan_3|1x1|65|10|5|3|140|15|2|2|11|70||iqhan_lesser|||||||||};
+{iqhan_3b|monsters_rltiles2:129|Iqhan master|iqhan_3|1x1|67|10|5|3|140|20|2|2|12|60||iqhan_lesser|||||||||};
+{iqhan_4a|monsters_rltiles2:129|Iqhan master|iqhan_4|1x1|69|10|5|3|140|20|2|2|13|60||iqhan_lesser|||||||||};
+{iqhan_4b|monsters_rltiles2:133|Iqhan master|iqhan_4|1x1|71|10|5|3|140|20|2|2|15|60||iqhan|||||||||};
+{iqhan_ch_1a|monsters_rltiles2:135|Iqhan chaos evoker|iqhan_ch_1|1x1|73|10|5|3|140|20|2|2|15|60||iqhan||1||||||{{chaotic_grip|2|5|20|}}|};
+{iqhan_ch_1b|monsters_rltiles2:135|Iqhan chaos evoker|iqhan_ch_1|1x1|75|10|5|3|150|20|2|2|14|60||iqhan||1||||||{{chaotic_grip|2|5|20|}}|};
+{iqhan_ch_2a|monsters_rltiles2:134|Iqhan chaos servant|iqhan_ch_2|1x1|78|10|5|3|150|20|2|2|14|60||iqhan||1||||||{{chaotic_grip|4|5|50|}}|};
+{iqhan_ch_2b|monsters_rltiles2:134|Iqhan chaos servant|iqhan_ch_2|1x1|79|10|5|3|150|25|2|2|13|75||iqhan||1||||||{{chaotic_grip|4|5|50|}}|};
+{iqhan_ch_3a|monsters_rltiles2:136|Iqhan chaos master|iqhan_ch_3|1x1|83|10|5|3|170|25|2|2|13|75||iqhan_master||1||||||{{chaotic_grip|4|5|50|}}|};
+{iqhan_ch_3b|monsters_rltiles2:137|Iqhan chaos master|iqhan_ch_3|1x1|85|10|5|3|170|25|2|2|13|75||iqhan_master||1||||||{{chaotic_grip|4|5|50|}}|};
+{iqhan_chb_1a|monsters_rltiles1:19|Iqhan chaos beast|iqhan_chb_1|1x1|122|10|10|10|150|10|3|0|15|45|9|iqhan_beast||1||||||{{chaotic_grip|5|5|50|}}|};
+{iqhan_chb_1b|monsters_rltiles1:19|Iqhan chaos beast|iqhan_chb_1|1x1|140|10|10|10|150|10|3|0|15|45|9|iqhan_beast||1||||||{{chaotic_grip|5|5|50|}}|};
+{iqhan_greeter|monsters_men:8|Rancent|iqhan_greeter|1x1||10|5|5|||||||||iqhan_greeter||||||||};
+{iqhan_boss|monsters_rltiles1:5|Iqhan chaos enslaver|iqhan_boss|1x1|120|10|5|3|170|30|2|2|13|75|2|iqhan_boss|iqhan_boss|1||||||{{chaotic_grip|7|5|50|}{chaotic_curse|3|5|50|}}|};
diff --git a/AndorsTrail/res/values/content_questlist.xml b/AndorsTrail/res/values/content_questlist.xml
index b74b0adf2..9817b36ff 100644
--- a/AndorsTrail/res/values/content_questlist.xml
+++ b/AndorsTrail/res/values/content_questlist.xml
@@ -10,6 +10,7 @@
{17|Sleeping quarters in Crossroads1|||}
{18|Shopping from Minarra in Crossroads tower|||}
{19|Sleeping quarters in Loneford10|||}
+ {20|Selling Izthiel claws to gauward|||}
}|};
{crossglen|TODO|0|{{1|||0|}}|};
{fallhaventavern|Room to rent|0|{{10|||1|}}|};
diff --git a/AndorsTrail/res/values/loadresources.xml b/AndorsTrail/res/values/loadresources.xml
index 056f617a6..10added10 100644
--- a/AndorsTrail/res/values/loadresources.xml
+++ b/AndorsTrail/res/values/loadresources.xml
@@ -3,6 +3,7 @@
- @string/actorconditions_v069
- @string/actorconditions_v069_bwm
+ - @string/actorconditions_v0610
@@ -135,6 +136,7 @@
- @string/conversationlist_loneford_kuldan
- @string/conversationlist_loneford_3
- @string/conversationlist_loneford_4
+ - @string/conversationlist_pwcave
@@ -148,6 +150,7 @@
- @string/monsterlist_v069_npcs
- @string/monsterlist_v0610_monsters1
- @string/monsterlist_v0610_npcs1
+ - @string/monsterlist_v0610_monsters2
diff --git a/AndorsTrail/res/values/loadresources_debug.xml b/AndorsTrail/res/values/loadresources_debug.xml
index 23ab12a8a..bd8484b76 100644
--- a/AndorsTrail/res/values/loadresources_debug.xml
+++ b/AndorsTrail/res/values/loadresources_debug.xml
@@ -73,10 +73,10 @@
[id|iconID|name|tags|size|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID|hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|];
{traveller1|monsters_man1:0|Traveller1|debugNPC1||10|10|10|10|50|||1|2|||debugshop1|debugshop||||||||};
{traveller2|monsters_man1:0|Traveller2|debugNPC2||10|10|10|10|50|||1|2|||debugshop1|debugquest||||||||};
-{black_ant|monsters_insects:0|Ant|Insect||10|10|10|10|50|||1|2|||debuglist1|||||||||};
-{small_wasp|monsters_insects:1|Pitiful debug bug with long name|Insect||10|10|10|10|50|||1|2|||debuglist1|||||||||};
-{winged_demon|monsters_demon1:0|Winged demon|Demon|2x2|10|10|10|10|50|||10|20|||debuglist1|||||||||};
-{troll|monsters_misc:5|Troll|ogre||10|10|10|2|50|||1|2|||debuglist1|||||||||};
+{black_ant|monsters_insects:0|Ant|insect||10|10|10|10|50|||1|2|||debuglist1|||||||||};
+{small_wasp|monsters_insects:1|Pitiful debug bug with long name|insect||10|10|10|10|50|||1|2|||debuglist1|||||||||};
+{winged_demon|monsters_demon1:0|Winged demon|demon|2x2|10|10|10|10|50|||10|20|||debuglist1|||||||||};
+{troll|monsters_misc:5|Troll|troll||10|10|10|2|50|||1|2|||debuglist1|||||||||};
diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml
index 75b50e6f9..911965428 100644
--- a/AndorsTrail/res/values/strings.xml
+++ b/AndorsTrail/res/values/strings.xml
@@ -472,4 +472,5 @@
Max HP:
Max AP:
+ Cannot save the game while in combat.
diff --git a/AndorsTrail/res/xml/debugmap.tmx b/AndorsTrail/res/xml/debugmap.tmx
index 2e61ff2e8..6ef76e330 100644
--- a/AndorsTrail/res/xml/debugmap.tmx
+++ b/AndorsTrail/res/xml/debugmap.tmx
@@ -51,27 +51,17 @@
-
diff --git a/AndorsTrail/res/xml/fields11.tmx b/AndorsTrail/res/xml/fields11.tmx
index 6714b9c65..1a3ad5a24 100644
--- a/AndorsTrail/res/xml/fields11.tmx
+++ b/AndorsTrail/res/xml/fields11.tmx
@@ -82,6 +82,17 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/fields12.tmx b/AndorsTrail/res/xml/fields12.tmx
index 4b0624c27..da777718f 100644
--- a/AndorsTrail/res/xml/fields12.tmx
+++ b/AndorsTrail/res/xml/fields12.tmx
@@ -82,6 +82,22 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/fields7.tmx b/AndorsTrail/res/xml/fields7.tmx
index c204a8557..c96874de7 100644
--- a/AndorsTrail/res/xml/fields7.tmx
+++ b/AndorsTrail/res/xml/fields7.tmx
@@ -94,6 +94,11 @@
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave0.tmx b/AndorsTrail/res/xml/pwcave0.tmx
index 6fe0fefb7..f02406854 100644
--- a/AndorsTrail/res/xml/pwcave0.tmx
+++ b/AndorsTrail/res/xml/pwcave0.tmx
@@ -82,6 +82,23 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave1.tmx b/AndorsTrail/res/xml/pwcave1.tmx
index 5e29c880c..51d94c5b2 100644
--- a/AndorsTrail/res/xml/pwcave1.tmx
+++ b/AndorsTrail/res/xml/pwcave1.tmx
@@ -82,6 +82,57 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave2.tmx b/AndorsTrail/res/xml/pwcave2.tmx
index 8edf919ac..57f9f724c 100644
--- a/AndorsTrail/res/xml/pwcave2.tmx
+++ b/AndorsTrail/res/xml/pwcave2.tmx
@@ -48,7 +48,7 @@
-
+
eJyllsuNwzAMRCV2YLexXee2R+WWo93BuqKsAA/C0OJPPgziILEeJXJIPWopD0X7hLS1IurvE5Vy/H/+JVXpO47jlMfsvP7+Snlm10LXOCJM8H7KvGQcFvt57vEOT5PFft7c4yzb4kbrcYatcaNMou9ni705XK8W4RXUY/8/nq19e1yrHoj5BZwlwOTc3TgbLSfc39kaA7c5dRHJiSbEjO9tcHaIwcuJVTdazBrPq23EPdNftgBT289C+TOO+oL3aC3mzBnL2tyTTM6d7eGYU5Lv+T3TDzXxORmplUj+s3yrVlq99o1IH4xI424sJrCzTCsvUa62xsj7Wx17Vr43yhf3jfRfU/oP+vxvuXLXgYdHZ8dZi+N78DCbXuV6rySWK977NK9jz2DLdXDXlfdBea9c6TMnrbxx9n7uWc5crKPNQs7la8ocWH3mqPdm7qh2PPZdziw3Kq33S99rc7EFJX3bc8J/w7P0S+e+AbfoUhQ=
@@ -63,7 +63,7 @@
eJzNll0KwjAQhCO29ApeRXoCf27hi1etbz56CsULaAMGlpikO2a2dSBQCtmvm0x317n/02v9/e7YObf9rL6z4aW4XvuRtxvXgcj1rMC7Z7hsBeZcPMmdmxm4S4jJfQCxarhyr/RmrCHxD6DcmCWfcz65VXJlTueIg3rzucK4SPwLqcZYeb/kx5JvalWKa1VfpvKxyFVTo3PcU2PHZAtlInVwiqtlMv2sjcO+Cy3X1zTm/S/Vexk5/PLtNf6U8+emxfZqe1EqJ/b8mZsN2ignhHfN9EN53qnZwKqWIb0fkT8nVo1DufKs3n5ZWOk=
-
+
eJztk1EKwDAIQ71C73/Z/UshiRr3sQnCoDUvanci4vwJMxb0lXCxVD8dZtevk4m0pu5O9uDkvtXvBvemgTRVn/m76x3VsjG9HxcX7UQJFxd5cc0ZzWGKqfbLsNn71aj8OyqXmT3ji31zjNfbmYPZ3et0fo2L9u6ur9QqUeVWNHNt1391lptvJ3MfzXEpcQ==
@@ -88,6 +88,77 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave2a.tmx b/AndorsTrail/res/xml/pwcave2a.tmx
index cae12e904..2b6a4d6f2 100644
--- a/AndorsTrail/res/xml/pwcave2a.tmx
+++ b/AndorsTrail/res/xml/pwcave2a.tmx
@@ -63,7 +63,7 @@
eJxjYKA9+M9MXXOoYR7IDJg570kw7xkrbvNIMYcQwOfHD2TYg888csITlx7kcMUlj839+MxDD9cPSOmA1HDHphY5XeEzi9hwJydd4QOkmENO2sAHYH7BZ+5HRuLNwhc2pLqdUHyRmq4t2RkYrNkhbC92THlPoJgPFnFc4BMwXLyh6rHpo1a5SKl5rDjKNGqWZ6OAMkBs3gAAiZAyKg==
-
+
eJztkzsOwDAIQ32F3P+ynYNiPo4rdWgklggeBpkFYP1xfLeMjF31APbaSmvFjHo6PJYfdTFe1q+7O5UXmdUf66XsHahZLLerWeFNOBMfTm+k4ynl5hy8zE9qvMFzzsv2eMPLPOiY3cVzzPklDz0nyxik
@@ -76,6 +76,32 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave3.tmx b/AndorsTrail/res/xml/pwcave3.tmx
index 375a0bedf..844a7e737 100644
--- a/AndorsTrail/res/xml/pwcave3.tmx
+++ b/AndorsTrail/res/xml/pwcave3.tmx
@@ -48,7 +48,7 @@
-
+
eJytVsFRxDAMtNOB6YA3NUAHUGR+PMOPp+ngUhHxEE2WnZXkG3ho7sZStLK0krzWUlZHvpwzlEyvbDysIctSyu34rct1tp9yA0G9fcOCNgoTv3s4/zc66+ST9QoXbUYMiPlB3z2VS/Csk471Q56P/y+Oj3bGjndlf0reJ2xeD39vIj6TTndl/VZ/BM8+hR+0WQUe+0BctuXaZ7FzzdgPnnUnx1x7FZuysX4wf8ZjhatyzLVXd1Y21g/mr0Ev4t2iHM7cmXlp/cA8bsvvu3n+LNahizif8XKGz0rf4M4cM+bE+36Wi55+EZhYY9X7UQ0Z16tflEMVE3Mj61GOO+vf7sQ08oA9tNZrBimuoo8sF9iHHjdwF0V7L+sj09ncNxuvBriLGB93GH5je1bNHJv7ls9sljI+4io+7WTv9XnWF4yvdinX9hH2v7cr1UzN+DjjZwt6OMJVvDH7jURxKsJU/Wg1Qt7gG4TjNG5vxHOF2SHOJrhvu8ns8Q3i2aIoTMzHTjFne0LNBfUe9GYCvk35vRi91bLdmolh7fXqEbVro1l07/7Efrw3VsT27so8/w/hOcNv0WwG/CWmaM54onZZtOfUzBq43/tiZCw=
@@ -63,7 +63,7 @@
eJztVssOgzAMoxp/vr/cT2zjxmmjB6QyxanjdI/DLHGgNLbTGug0/R4ep+P9ZbvW7TrPfI2ipXCoNW3dFXDcHG5U09Nl6tS1RFws32hddo2YedZeWGMje0B87FhGj9FYCr/GXpbbjFh8md5Q7a7p+beeeX28cqNnyrvLaiLubD5Q35bmvRw9ZYDqa/YinqKanm9vbzNQfS8lr9sDk/soPv0viuAbuiPeF1WTzV3N2u5RzURUs62rUHOjakbOL9bcniY6R7Be1e9G5hyRyarl9d29/sHhCX7Har0=
-
+
eJztksENwDAIA1kh+y/bb1URbGyafoqUTwKcTVgRsf7z6YniPjbvWbCsKpgcVK/4QHlZPjs/NPcqp2JUfhgPDjebAdPT5ape3uRWfdn3rJfDZfayCmd3kG7Fk1rP9p34P2UvFe7O7+5+isv67bKZGtRb4U9wWX4WTj9Wq8tl2IpW9BcnuG7dqdosVKbKVTTG423aayeQL5Xr6upw2fl1dn2Sreq9sy/2bCkt
@@ -82,6 +82,84 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/pwcave4.tmx b/AndorsTrail/res/xml/pwcave4.tmx
index 8f911ff79..9e7f5d178 100644
--- a/AndorsTrail/res/xml/pwcave4.tmx
+++ b/AndorsTrail/res/xml/pwcave4.tmx
@@ -48,7 +48,7 @@
-
+
eJytVstuwzAMc4z8QPYb++vec8juHdDdN2D9olbAhCos9XC6AxEkMk0rlmifptZOBF8JGIfN0Xtr722PSzD2d4qRrVHneEt0cWxV11ujzoGaAuV+FMZ6XG+NGc/qVvQsn+1dhqXvdW1snR+w76ire3e+xz7n/ZN9Z/8ZdSv/WN+/7+N/5vyJNfWqLuYTAXvI02VxrX/9bvPBcdXetbqRJ2xkf1nNovbU9zHbS6KLcesPUscS13q2+TKe1ZZ6xj3WXhLd5W9u9B9dm8RZvshjXunV1mrmQP9hfY77u/Rn7xrRFWT+49Wz513RHmR9lOVb7SHM2frVOnM/GnlGuTL/YH6EsSM+5aHyb6v56vjqXSHSr/gxcpaea2vPsbvCK0DPsIjuJ/8Bpqs5jt4BPFTOhei/VmsNOaxO0KuY5pE6Zzw7d3TuW6719sqes/MkypdxhXN1vD3THj0TLDc6gzJ4vIo/jtZqBtZDFZ7cbTbgbQZHdHEORNVbq3PcAEW9fOM=
@@ -63,9 +63,9 @@
eJzdVm0KwjAM7ZCZPyL4W2+gN/HrTt7CI+llpl5AO6SjlCRt0g/QB2OwJu8t6esWY+rjPdPFHsGY67yurosZemMW9tpbzQt8nx3sfdmn805c3vqzw2OmO8K/Qmoe4yndQVKnYC9cnjQH05XmSPOoPkt1U2q9WV/cgeaQ4tXFY1pwtMQjw1MOrtcSrhwvh7oUF+aB1Hfk4jDeNfDrsXo3QOdyvFtPV9PTHcRzS3uaO7chSvhTA833458g2aNSGHvecr/9GaDE9yhVUzsDxHAmZjSn2arG2pqcT1I0tT7juGOzKJafesak/4TwudM8CWd4ro85M3AOfm2+0uIDg25auA==
-
+
- eJy9k8ENwDAIA1mh+y/bb1U5YByDpXxK8AElT0Q8C+erDd6fu8nc5iJld7M8lN8RU5ubibgdDydXze3cR1zkkf37iqvuobKzjv1X38qN5xT3FFdm5uYyHicpM5zUFre7UxNS96XydDDd/StcF/+G3X0b0z1W9bA9nzwDxDueDFOdgcJlar/hojjDzGac5Vd1dWoO8L3yZvqo+mPmzvTKeDDH4TF5Xv6qI4g=
+ eJy9k0sOACEIQ7mC97/sbM0EaSmfJm5U+gDxmNlZWLc2eH/uJnOb6ym6G8V58RkxuXUzPW7Go5Orxmbue1zPI3p7xFXnUJ3Z6vx3cxnPKe7rXOlXN5fxeEnp4aS2uNmZmpA6LxvMbr7C7eJX2Nm/MV0j+vtszVF8lE/UA8RFuSEpb4Jiq1zvnGG+uCge5ZXJ2Zx95M3Ugepj+s7UynhU/x7rMbk+u8AjEQ==
@@ -76,6 +76,69 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/waterway0.tmx b/AndorsTrail/res/xml/waterway0.tmx
index bc2bac9e8..6dbd79018 100644
--- a/AndorsTrail/res/xml/waterway0.tmx
+++ b/AndorsTrail/res/xml/waterway0.tmx
@@ -82,6 +82,37 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/waterway1.tmx b/AndorsTrail/res/xml/waterway1.tmx
index 2927111f7..a8df87fbd 100644
--- a/AndorsTrail/res/xml/waterway1.tmx
+++ b/AndorsTrail/res/xml/waterway1.tmx
@@ -63,7 +63,7 @@
eJztlwEOwiAMRZtMTuA8w3aDeSO9pl5Ib6CQhaQ2bS1StizuJQ0LA/4+UMgAdMYAMIS5TEyxPDPPFO0dp5EZSB/rGN6MK+m28vvNzxp+S/bIFqC5UsO9A+gPc5xiHFHZo8AsNZc0RyW/yQP+5lvHt3sK9Zpmotbvy6A7MRq162vR5bSX8Evx2FMlup5nwuMHvzs7WyPfOV53j1WzBdxdoPny8kvPKOwvz20L6BnF3Tf/iPZP4Ik0Nldfkl9cW8s+zuvP5TPN80uMa/isx+NJ/SWS9ht1ABsf
-
+
eJztkksKQCEIRd2C+99sowchGuZVe0QHmvTxdC0mIp7GBzcOyQn37XktOvq0616BOq06KN4a2e9SkaPyfeV61Lnj1uYRrzerdTYjb+RcVi3EG+kZ4tWo9j5nn+8Gp5fOfBU+z326nX/wIj3XiP6xjD8T5Xltr3UX7145t/IOJj8pLQ==
@@ -87,7 +87,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/AndorsTrail/res/xml/waterway2.tmx b/AndorsTrail/res/xml/waterway2.tmx
index 367435d01..5a932742a 100644
--- a/AndorsTrail/res/xml/waterway2.tmx
+++ b/AndorsTrail/res/xml/waterway2.tmx
@@ -65,7 +65,7 @@
- eJztlF0KwDAIg71C73/ZvY7iT6K23aABYYPUT6t0iMi48ZmQ6VsAXwfTkuXx8lR4kVZzPS8zgy55eVlW1q/d8wlV+9fyIed391vZ2+w+oudWvDNd71iGv4vdfZd/Ze/kvvknuDe4Gc2q5sp4s3z2jOZl+8/Uavk1IXOKevJqtf6RGr1+rDxofREbEcNkdyjyeH1EdTwNgigM
+ eJztVFsKwDAI8wq9/2X3W4paE+1j0ICwQTRGpU1E2otrQoZvCfAqNC1YHK9ORm+G1boeF9lBFby6qBbL1+Z8Aln/Wr1I/m6/mbtl7zGat+KdqXrHGP1d2tWz/Kv2Tt1e/4TuC2xHI7K1GC6rj+ZoXNQ/06vF1xDZ08yT16v1H+nR8xPxgc4eReb2mNvJRK/7ATe+KGE=
@@ -94,6 +94,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/waterway3.tmx b/AndorsTrail/res/xml/waterway3.tmx
index deb9ed016..5b3a1e33c 100644
--- a/AndorsTrail/res/xml/waterway3.tmx
+++ b/AndorsTrail/res/xml/waterway3.tmx
@@ -63,7 +63,7 @@
eJy9UwEKgDAIXMTeUj+oH/SE/v+Cog9UQgORdFq6g5GTuFN3puSPrffj2h25NLwl79kD5uZ4v+pp5nMG9KKpV6M75JTG/L8ejKPz5aPgaq55Kgr0LWoejpg5IMJnEiJ3VUIrvah3ooA5ttQqoHO01KDZKUkLYzL0fSpmZdkDbb8az1l82eq9reDqwvkS028Nb/9yd5xfnxh8AvFynxndJe0Ld2QnjQ==
-
+
eJztkksOACEIQ7kC97+s28lEbQsdVtOExAT1lU9GRP4xFtHMd7i7v29yMVU5+oNq7Xic6sMUV31b5aJdrLLRHdY3413hOual5F3cr3nP/9/nk9zcqXpvUuplvCCp+8b6U5is164qs0C7gWrZ5RZqYBkK
@@ -87,7 +87,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/AndorsTrail/res/xml/waterwayextention.tmx b/AndorsTrail/res/xml/waterwayextention.tmx
index af2774064..82cd15422 100644
--- a/AndorsTrail/res/xml/waterwayextention.tmx
+++ b/AndorsTrail/res/xml/waterwayextention.tmx
@@ -76,6 +76,19 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/waterwayhouse.tmx b/AndorsTrail/res/xml/waterwayhouse.tmx
index 989218cbd..efb258bdb 100644
--- a/AndorsTrail/res/xml/waterwayhouse.tmx
+++ b/AndorsTrail/res/xml/waterwayhouse.tmx
@@ -76,6 +76,12 @@
-
+
+
+
+
+
+
+
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
index b2d3751c1..28dd4cc68 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
@@ -14,7 +14,7 @@ import android.view.WindowManager;
public final class AndorsTrailApplication extends Application {
public static final boolean DEVELOPMENT_DEBUGRESOURCES = false;
- public static final boolean DEVELOPMENT_FORCE_STARTNEWGAME = false;
+ public static final boolean DEVELOPMENT_FORCE_STARTNEWGAME = true;
public static final boolean DEVELOPMENT_FORCE_CONTINUEGAME = false;
public static final boolean DEVELOPMENT_DEBUGBUTTONS = true;
public static final boolean DEVELOPMENT_VALIDATEDATA = true;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
index dc78ada75..da9074a6c 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
@@ -268,11 +268,15 @@ public final class Dialogs {
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_PREFERENCES);
}
- public static void showSave(final Activity currentActivity, final ViewContext viewContext) {
+ public static void showSave(final MainActivity mainActivity, final ViewContext viewContext) {
+ if (viewContext.model.uiSelections.isInCombat) {
+ mainActivity.showToast(mainActivity.getResources().getString(R.string.menu_save_saving_not_allowed_in_combat), Toast.LENGTH_SHORT);
+ return;
+ }
viewContext.gameRoundController.pause();
- Intent intent = new Intent(currentActivity, LoadSaveActivity.class);
+ Intent intent = new Intent(mainActivity, LoadSaveActivity.class);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/save"));
- currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_SAVEGAME);
+ mainActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_SAVEGAME);
}
public static void showLoad(final Activity currentActivity) {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
index ccd2b63b9..3854e6e6c 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
@@ -92,7 +92,8 @@ public class WorldContext {
//Ensure that all droplists are used by monsters
dropLists.verifyData(monsterTypes, conversations, maps);
- //TODO: Ensure that all monsters are used in spawnareas
+ //Ensure that all monsters are used in spawnareas
+ monsterTypes.verifyData(maps);
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterType.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterType.java
index 4c836ef42..5c9b2065c 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterType.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterType.java
@@ -7,7 +7,7 @@ import com.gpl.rpg.AndorsTrail.util.Size;
public final class MonsterType extends ActorTraits {
public final String id;
- private final String searchPattern;
+ public final String spawnGroup;
public final int exp;
public final DropList dropList;
public final String phraseID;
@@ -15,7 +15,7 @@ public final class MonsterType extends ActorTraits {
public MonsterType(
String id,
String name,
- String tags,
+ String spawnGroup,
int iconID,
Size tileSize,
int maxHP,
@@ -28,7 +28,7 @@ public final class MonsterType extends ActorTraits {
String phraseID) {
super(iconID, tileSize, baseCombatTraits, moveCost, onHitEffects == null ? null : new ItemTraits_OnUse[] { onHitEffects });
this.id = id;
- this.searchPattern = ',' + tags.toLowerCase() + ',';
+ this.spawnGroup = spawnGroup;
this.exp = exp;
this.name = name;
this.maxHP = maxHP;
@@ -37,10 +37,4 @@ public final class MonsterType extends ActorTraits {
this.dropList = dropList;
this.phraseID = phraseID;
}
- public boolean matchesAny(String[] tagsAndNames) {
- for (String s : tagsAndNames) {
- if (searchPattern.contains(',' + s + ',')) return true;
- }
- return false;
- }
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java
index acf9d83a2..3f6e551ab 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java
@@ -1,7 +1,6 @@
package com.gpl.rpg.AndorsTrail.model.actor;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -9,45 +8,46 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection;
import com.gpl.rpg.AndorsTrail.model.item.DropList;
+import com.gpl.rpg.AndorsTrail.model.map.MapCollection;
import com.gpl.rpg.AndorsTrail.resource.parsers.MonsterTypeParser;
import com.gpl.rpg.AndorsTrail.util.L;
public final class MonsterTypeCollection {
- private final HashMap monsterTypes = new HashMap();
+ private final HashMap monsterTypesById = new HashMap();
public MonsterType getMonsterType(String id) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- if (!monsterTypes.containsKey(id)) {
+ if (!monsterTypesById.containsKey(id)) {
L.log("WARNING: Cannot find MonsterType for id \"" + id + "\".");
}
}
- return monsterTypes.get(id);
+ return monsterTypesById.get(id);
}
- public Collection extends MonsterType> getMonsterTypesFromTags(String tagsAndNames) {
- String[] parts = tagsAndNames.toLowerCase().split(",");
+ public ArrayList getMonsterTypesFromSpawnGroup(String spawnGroup) {
ArrayList result = new ArrayList();
- for (MonsterType t : monsterTypes.values()) {
- if (t.matchesAny(parts)) result.add(t);
+ for (MonsterType t : monsterTypesById.values()) {
+ if (t.spawnGroup.equalsIgnoreCase(spawnGroup)) result.add(t);
}
+
return result;
}
public MonsterType guessMonsterTypeFromName(String name) {
- for (MonsterType t : monsterTypes.values()) {
+ for (MonsterType t : monsterTypesById.values()) {
if (t.name.equalsIgnoreCase(name)) return t;
}
return null;
}
public void initialize(MonsterTypeParser parser, String input) {
- parser.parseRows(input, monsterTypes);
+ parser.parseRows(input, monsterTypesById);
}
// Selftest method. Not part of the game logic.
public void verifyData(WorldContext world) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (MonsterType t : monsterTypes.values()) {
+ for (MonsterType t : monsterTypesById.values()) {
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.id + "\".");
@@ -60,7 +60,7 @@ public final class MonsterTypeCollection {
// Selftest method. Not part of the game logic.
public void verifyData(ConversationCollection conversations) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (MonsterType t : monsterTypes.values()) {
+ for (MonsterType t : monsterTypesById.values()) {
if (t.phraseID != null && t.phraseID.length() > 0) {
if (conversations.DEBUG_leadsToTradeReply(t.phraseID)) {
if (t.dropList == null) {
@@ -72,11 +72,25 @@ public final class MonsterTypeCollection {
}
}
+ // Selftest method. Not part of the game logic.
+ public void verifyData(MapCollection maps) {
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ HashSet availableMonsterIDs = new HashSet(monsterTypesById.keySet());
+ HashSet usedSpawnedMonsterIDs = new HashSet();
+ maps.DEBUG_getSpawnedMonsterIDs(usedSpawnedMonsterIDs);
+
+ availableMonsterIDs.removeAll(usedSpawnedMonsterIDs);
+ for (String monsterTypeID : availableMonsterIDs) {
+ L.log("WARNING: MonsterType \"" + monsterTypeID + "\" is never used on any spawnarea.");
+ }
+ }
+ }
+
// Selftest method. Not part of the game logic.
public HashSet DEBUG_getRequiredPhrases() {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
HashSet requiredPhrases = new HashSet();
- for (MonsterType t : monsterTypes.values()) {
+ for (MonsterType t : monsterTypesById.values()) {
if (t.phraseID != null && t.phraseID.length() > 0) {
requiredPhrases.add(t.phraseID);
}
@@ -90,7 +104,7 @@ public final class MonsterTypeCollection {
// Selftest method. Not part of the game logic.
public void DEBUG_getUsedDroplists(HashSet usedDroplists) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (MonsterType t : monsterTypes.values()) {
+ for (MonsterType t : monsterTypesById.values()) {
if (t.dropList != null) usedDroplists.add(t.dropList);
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
index 5d957bca1..820a2271e 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
@@ -4,6 +4,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
@@ -155,6 +156,18 @@ public final class MapCollection {
}
}
}
+
+ // Selftest method. Not part of the game logic.
+ public void DEBUG_getSpawnedMonsterIDs(HashSet usedMonsterTypeIDs) {
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ for (PredefinedMap m : predefinedMaps) {
+ for (MonsterSpawnArea a : m.spawnAreas) {
+ usedMonsterTypeIDs.addAll(Arrays.asList(a.monsterTypeIDs));
+ }
+ }
+ }
+ }
+
// ====== PARCELABLE ===================================================================
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
index f6d4c32e9..4c683fb1d 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
@@ -334,15 +334,12 @@ public final class TMXMapReader {
}
mapObjects.add(MapObject.createNewMapEvent(position, object.name, map, place));
} else if (object.type.equalsIgnoreCase("spawn")) {
- ArrayList types = new ArrayList();
- types.addAll(monsterTypes.getMonsterTypesFromTags(object.name));
+ ArrayList types = monsterTypes.getMonsterTypesFromSpawnGroup(object.name);
int maxQuantity = 1;
int spawnChance = 10;
boolean isUnique = false;
for (TMXProperty p : object.properties) {
- if (p.name.equalsIgnoreCase("type")) {
- types.addAll(monsterTypes.getMonsterTypesFromTags(p.value));
- } else if (p.name.equalsIgnoreCase("quantity")) {
+ if (p.name.equalsIgnoreCase("quantity")) {
maxQuantity = Integer.parseInt(p.value);
} else if (p.name.equalsIgnoreCase("spawnchance")) {
spawnChance = Integer.parseInt(p.value);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
index 79c2aecf0..87608c2ee 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
@@ -228,13 +228,13 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.monsters_skeleton2, "monsters_skeleton2", src_sz1x1, defaultTileSize);
loader.prepareTileset(R.drawable.monsters_snakes, "monsters_snakes", src_sz6x1, defaultTileSize);
//loader.prepareTileset(R.drawable.monsters_cyclops, "monsters_cyclops", src_sz1x1, dst_sz2x3);
- loader.prepareTileset(R.drawable.monsters_warrior1, "monsters_warrior1", src_sz1x1, defaultTileSize);
//loader.prepareTileset(R.drawable.monsters_wraiths, "monsters_wraiths", new Size(3, 1), defaultTileSize);
loader.prepareTileset(R.drawable.monsters_zombie1, "monsters_zombie1", src_sz1x1, defaultTileSize);
//loader.prepareTileset(R.drawable.monsters_zombie2, "monsters_zombie2", src_sz1x1, defaultTileSize);
//loader.prepareTileset(R.drawable.monsters_dragon1, "monsters_dragon1", src_sz1x1, dst_sz4x3);
loader.prepareTileset(R.drawable.monsters_rltiles1, "monsters_rltiles1", new Size(20, 8), defaultTileSize);
loader.prepareTileset(R.drawable.monsters_rltiles2, "monsters_rltiles2", new Size(20, 9), defaultTileSize);
+ loader.prepareTileset(R.drawable.monsters_rltiles3, "monsters_rltiles3", new Size(10, 3), defaultTileSize);
loader.prepareTileset(R.drawable.monsters_karvis2, "monsters_karvis2", new Size(9, 1), defaultTileSize);
loader.prepareTileset(R.drawable.map_tiles_1_1, "map_tiles_1_1.png", src_mapTileSize, defaultTileSize);
diff --git a/AndorsTrailEdit/AndorsTrailEditor.js b/AndorsTrailEdit/AndorsTrailEditor.js
index ee02c15e3..c8b5537de 100644
--- a/AndorsTrailEdit/AndorsTrailEditor.js
+++ b/AndorsTrailEdit/AndorsTrailEditor.js
@@ -267,11 +267,11 @@ function startEditor() {
imageSelector.add(new TilesetImage("monsters_wraiths", {x: 3, y:1}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_zombie1", {x: 1, y:1}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_zombie2", {x: 1, y:1}, undefined, [ 'monsters' ] ));
- imageSelector.add(new TilesetImage("monsters_dragon1", {x: 1, y:1}, {x:128, y:96}, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_karvis1", {x: 2, y:1}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_karvis2", {x: 9, y:1}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_rltiles1", {x:20, y:8}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_rltiles2", {x:20, y:9}, undefined, [ 'monsters' ] ));
+ imageSelector.add(new TilesetImage("monsters_rltiles3", {x:10, y:3}, undefined, [ 'monsters' ] ));
imageSelector.add(new TilesetImage("monsters_redshrike1", {x:6, y:1}, undefined, [ 'monsters' ] ));
}