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 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' ] )); }