diff --git a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java index 2eda2c34d..9f9e363bc 100644 --- a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java +++ b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java @@ -293,418 +293,510 @@ public final class R { public static final int inventoryitem=0x7f090000; } public static final class string { - public static final int about_button1=0x7f0500f0; - public static final int about_button2=0x7f0500f1; - public static final int about_button3=0x7f0500f2; - public static final int about_contents1=0x7f0500f3; - public static final int about_contents2=0x7f0500f4; - public static final int about_contents3=0x7f0500f5; + public static final int about_button1=0x7f0500f1; + public static final int about_button2=0x7f0500f2; + public static final int about_button3=0x7f0500f3; + public static final int about_contents1=0x7f0500f4; + public static final int about_contents2=0x7f0500f5; + public static final int about_contents3=0x7f0500f6; /** Translated as: affliction / statuseffect / temporary effect */ - public static final int actorcondition_info_removes_all=0x7f05010e; - public static final int actorinfo_attack=0x7f0500ae; - public static final int actorinfo_attacksperturn=0x7f0500ac; - public static final int actorinfo_basetraits=0x7f0500b2; - public static final int actorinfo_class=0x7f0500a9; - public static final int actorinfo_criticalhit=0x7f0500af; + public static final int actorcondition_info_removes_all=0x7f05010f; + public static final int actorconditions_v069=0x7f050000; + public static final int actorinfo_attack=0x7f0500af; + public static final int actorinfo_attacksperturn=0x7f0500ad; + public static final int actorinfo_basetraits=0x7f0500b3; + public static final int actorinfo_class=0x7f0500aa; + public static final int actorinfo_criticalhit=0x7f0500b0; /** =========================================== Added in v0.6.9 */ - public static final int actorinfo_currentconditions=0x7f05010d; - public static final int actorinfo_currenttraits=0x7f0500b3; - public static final int actorinfo_defense=0x7f0500b0; - public static final int actorinfo_difficulty=0x7f0500aa; - public static final int actorinfo_health=0x7f0500ab; - public static final int actorinfo_movecost=0x7f0500b1; - public static final int actorinfo_movesperturn=0x7f0500ad; - public static final int app_name=0x7f050053; - public static final int combat_attack=0x7f05007f; - public static final int combat_begin_flee=0x7f050085; - public static final int combat_endturn=0x7f050083; + public static final int actorinfo_currentconditions=0x7f05010e; + public static final int actorinfo_currenttraits=0x7f0500b4; + public static final int actorinfo_defense=0x7f0500b1; + public static final int actorinfo_difficulty=0x7f0500ab; + public static final int actorinfo_health=0x7f0500ac; + public static final int actorinfo_movecost=0x7f0500b2; + public static final int actorinfo_movesperturn=0x7f0500ae; + public static final int app_name=0x7f050054; + public static final int combat_attack=0x7f050080; + public static final int combat_begin_flee=0x7f050086; + public static final int combat_endturn=0x7f050084; /** End combat End combat End combat */ - public static final int combat_flee=0x7f050084; - public static final int combat_flee_failed=0x7f050086; - public static final int combat_hero_dies=0x7f050092; - public static final int combat_monsteraction=0x7f050089; - public static final int combat_monsterhealth=0x7f050088; - public static final int combat_move=0x7f050080; - public static final int combat_not_enough_ap=0x7f050091; - public static final int combat_result_herohit=0x7f05008e; - public static final int combat_result_herohitcritical=0x7f05008f; - public static final int combat_result_herokillsmonster=0x7f050090; - public static final int combat_result_heromiss=0x7f05008d; - public static final int combat_result_monsterhit=0x7f05008b; - public static final int combat_result_monsterhitcritical=0x7f05008c; + public static final int combat_flee=0x7f050085; + public static final int combat_flee_failed=0x7f050087; + public static final int combat_hero_dies=0x7f050093; + public static final int combat_monsteraction=0x7f05008a; + public static final int combat_monsterhealth=0x7f050089; + public static final int combat_move=0x7f050081; + public static final int combat_not_enough_ap=0x7f050092; + public static final int combat_result_herohit=0x7f05008f; + public static final int combat_result_herohitcritical=0x7f050090; + public static final int combat_result_herokillsmonster=0x7f050091; + public static final int combat_result_heromiss=0x7f05008e; + public static final int combat_result_monsterhit=0x7f05008c; + public static final int combat_result_monsterhitcritical=0x7f05008d; /** You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat. You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat. You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat. */ - public static final int combat_result_monstermiss=0x7f05008a; - public static final int combat_spell=0x7f050082; - public static final int combat_status_ap=0x7f050087; - public static final int combat_use=0x7f050081; - public static final int conversation_leave=0x7f0500d9; - public static final int conversation_lostgold=0x7f0500d5; - public static final int conversation_next=0x7f0500d8; + public static final int combat_result_monstermiss=0x7f05008b; + public static final int combat_spell=0x7f050083; + public static final int combat_status_ap=0x7f050088; + public static final int combat_use=0x7f050082; + public static final int conversation_leave=0x7f0500da; + public static final int conversation_lostgold=0x7f0500d6; + public static final int conversation_next=0x7f0500d9; /** %1$s says */ - public static final int conversation_rewardexp=0x7f0500d3; - public static final int conversation_rewardgold=0x7f0500d4; - public static final int conversation_rewarditem=0x7f0500d6; - public static final int conversation_rewarditems=0x7f0500d7; - public static final int conversation_title=0x7f050124; - public static final int conversationlist_alynndir=0x7f050024; - public static final int conversationlist_ambelie=0x7f050028; - public static final int conversationlist_crossglen=0x7f050003; - public static final int conversationlist_crossglen_gruil=0x7f050005; - public static final int conversationlist_crossglen_leonid=0x7f050006; - public static final int conversationlist_crossglen_leta=0x7f050002; - public static final int conversationlist_crossglen_odair=0x7f050007; - public static final int conversationlist_crossglen_tharal=0x7f050004; - public static final int conversationlist_debug=0x7f050000; - public static final int conversationlist_fallhaven=0x7f050009; - public static final int conversationlist_fallhaven_arcir=0x7f05000f; - public static final int conversationlist_fallhaven_athamyr=0x7f050011; - public static final int conversationlist_fallhaven_bucus=0x7f05000a; - public static final int conversationlist_fallhaven_church=0x7f050010; - public static final int conversationlist_fallhaven_drunk=0x7f05000b; - public static final int conversationlist_fallhaven_gaela=0x7f050014; - public static final int conversationlist_fallhaven_larcal=0x7f050012; - public static final int conversationlist_fallhaven_nocmar=0x7f05000d; - public static final int conversationlist_fallhaven_oldman=0x7f05000c; - public static final int conversationlist_fallhaven_south=0x7f050019; - public static final int conversationlist_fallhaven_tavern=0x7f05000e; - public static final int conversationlist_fallhaven_unnmir=0x7f050013; - public static final int conversationlist_fallhaven_unzel=0x7f050016; - public static final int conversationlist_fallhaven_vacor=0x7f050015; - public static final int conversationlist_fallhaven_warden=0x7f05001d; - public static final int conversationlist_farrik=0x7f05001c; - public static final int conversationlist_flagstone=0x7f050018; - public static final int conversationlist_foamingflask=0x7f050027; - public static final int conversationlist_foamingflask_guards=0x7f050029; - public static final int conversationlist_foamingflask_outsideguard=0x7f05002a; - public static final int conversationlist_jan=0x7f050008; - public static final int conversationlist_jolnor=0x7f050023; - public static final int conversationlist_kaori=0x7f05001f; - public static final int conversationlist_maelveon=0x7f05002e; - public static final int conversationlist_mikhail=0x7f050001; - public static final int conversationlist_ogam=0x7f050026; - public static final int conversationlist_oluag=0x7f05002c; - public static final int conversationlist_shops=0x7f050025; - public static final int conversationlist_signs_pre067=0x7f05001a; - public static final int conversationlist_signs_v068=0x7f05002d; - public static final int conversationlist_thievesguild_1=0x7f05001b; - public static final int conversationlist_umar=0x7f05001e; - public static final int conversationlist_vilegard_erttu=0x7f050021; - public static final int conversationlist_vilegard_tavern=0x7f050022; - public static final int conversationlist_vilegard_villagers=0x7f050020; - public static final int conversationlist_wilderness=0x7f050017; - public static final int conversationlist_wrye=0x7f05002b; - public static final int dialog_close=0x7f050065; - public static final int dialog_confirmexit_message=0x7f050067; - public static final int dialog_confirmexit_title=0x7f050066; - public static final int dialog_groundloot_message=0x7f05009f; - public static final int dialog_groundloot_title=0x7f05009e; - public static final int dialog_loading_failed_incorrectversion=0x7f050064; - public static final int dialog_loading_failed_message=0x7f050063; - public static final int dialog_loading_failed_title=0x7f050062; - public static final int dialog_loading_message=0x7f050061; - public static final int dialog_loot_foundgold=0x7f05009c; - public static final int dialog_loot_pickall=0x7f05009b; - public static final int dialog_loot_pickedupitems=0x7f05009d; - public static final int dialog_monsterencounter_info=0x7f05006d; - public static final int dialog_monsterencounter_message=0x7f05006c; - public static final int dialog_monsterencounter_title=0x7f05006b; - public static final int dialog_monsterloot_gainedexp=0x7f0500a2; - public static final int dialog_monsterloot_message=0x7f0500a1; - public static final int dialog_monsterloot_title=0x7f0500a0; - public static final int dialog_newversion_message=0x7f0500f7; - public static final int dialog_newversion_title=0x7f0500f6; - public static final int dialog_paused_message=0x7f050069; - public static final int dialog_paused_resume=0x7f05006a; - public static final int dialog_paused_title=0x7f050068; - public static final int dialog_rest_confirm_message=0x7f0500ee; - public static final int dialog_rest_message=0x7f0500ef; - public static final int dialog_rest_title=0x7f0500ed; - public static final int droplists_crossglen=0x7f050030; - public static final int droplists_crossglen_outside=0x7f050031; - public static final int droplists_debug=0x7f05002f; - public static final int droplists_fallhaven=0x7f050032; - public static final int droplists_v068=0x7f050034; - public static final int droplists_wilderness=0x7f050033; - public static final int exit=0x7f050054; - public static final int exit_to_menu=0x7f050055; - public static final int heroinfo_actionpoints=0x7f05007d; - public static final int heroinfo_char=0x7f050072; - public static final int heroinfo_gold=0x7f05007c; - public static final int heroinfo_inv=0x7f050073; - public static final int heroinfo_inventory=0x7f05007b; - public static final int heroinfo_level=0x7f050078; - public static final int heroinfo_levelup=0x7f050077; - public static final int heroinfo_quests=0x7f05007e; - public static final int heroinfo_skill=0x7f050075; - public static final int heroinfo_spell=0x7f050076; - public static final int heroinfo_totalexperience=0x7f050079; - public static final int heroinfo_wear=0x7f050074; - public static final int heroinfo_wornequipment=0x7f05007a; - public static final int inventory_drop=0x7f050097; - public static final int inventory_equip=0x7f050094; - public static final int inventory_info=0x7f050093; - public static final int inventory_item_dropped=0x7f050099; - public static final int inventory_item_equipped=0x7f05009a; - public static final int inventory_item_used=0x7f050098; - public static final int inventory_unequip=0x7f050095; - public static final int inventory_use=0x7f050096; - public static final int itemcategory_money=0x7f0500c2; - public static final int itemcategory_other=0x7f0500cc; - public static final int itemcategory_potion=0x7f0500cb; - public static final int itemcategory_shield=0x7f0500c4; - public static final int itemcategory_weapon=0x7f0500c3; - public static final int itemcategory_wearable_body=0x7f0500c6; - public static final int itemcategory_wearable_feet=0x7f0500c8; - public static final int itemcategory_wearable_hand=0x7f0500c7; - public static final int itemcategory_wearable_head=0x7f0500c5; - public static final int itemcategory_wearable_neck=0x7f0500c9; - public static final int itemcategory_wearable_ring=0x7f0500ca; - public static final int iteminfo_action_equip=0x7f0500bd; - public static final int iteminfo_action_equip_ap=0x7f0500c0; - public static final int iteminfo_action_unequip=0x7f0500be; - public static final int iteminfo_action_unequip_ap=0x7f0500c1; - public static final int iteminfo_action_use=0x7f0500bc; - public static final int iteminfo_action_use_ap=0x7f0500bf; + public static final int conversation_rewardexp=0x7f0500d4; + public static final int conversation_rewardgold=0x7f0500d5; + public static final int conversation_rewarditem=0x7f0500d7; + public static final int conversation_rewarditems=0x7f0500d8; + public static final int conversation_title=0x7f050125; + public static final int conversationlist_alynndir=0x7f050025; + public static final int conversationlist_ambelie=0x7f050029; + public static final int conversationlist_crossglen=0x7f050004; + public static final int conversationlist_crossglen_gruil=0x7f050006; + public static final int conversationlist_crossglen_leonid=0x7f050007; + public static final int conversationlist_crossglen_leta=0x7f050003; + public static final int conversationlist_crossglen_odair=0x7f050008; + public static final int conversationlist_crossglen_tharal=0x7f050005; + public static final int conversationlist_debug=0x7f050001; + public static final int conversationlist_fallhaven=0x7f05000a; + public static final int conversationlist_fallhaven_arcir=0x7f050010; + public static final int conversationlist_fallhaven_athamyr=0x7f050012; + public static final int conversationlist_fallhaven_bucus=0x7f05000b; + public static final int conversationlist_fallhaven_church=0x7f050011; + public static final int conversationlist_fallhaven_drunk=0x7f05000c; + public static final int conversationlist_fallhaven_gaela=0x7f050015; + public static final int conversationlist_fallhaven_larcal=0x7f050013; + public static final int conversationlist_fallhaven_nocmar=0x7f05000e; + public static final int conversationlist_fallhaven_oldman=0x7f05000d; + public static final int conversationlist_fallhaven_south=0x7f05001a; + public static final int conversationlist_fallhaven_tavern=0x7f05000f; + public static final int conversationlist_fallhaven_unnmir=0x7f050014; + public static final int conversationlist_fallhaven_unzel=0x7f050017; + public static final int conversationlist_fallhaven_vacor=0x7f050016; + public static final int conversationlist_fallhaven_warden=0x7f05001e; + public static final int conversationlist_farrik=0x7f05001d; + public static final int conversationlist_flagstone=0x7f050019; + public static final int conversationlist_foamingflask=0x7f050028; + public static final int conversationlist_foamingflask_guards=0x7f05002a; + public static final int conversationlist_foamingflask_outsideguard=0x7f05002b; + public static final int conversationlist_jan=0x7f050009; + public static final int conversationlist_jolnor=0x7f050024; + public static final int conversationlist_kaori=0x7f050020; + public static final int conversationlist_maelveon=0x7f05002f; + public static final int conversationlist_mikhail=0x7f050002; + public static final int conversationlist_ogam=0x7f050027; + public static final int conversationlist_oluag=0x7f05002d; + public static final int conversationlist_shops=0x7f050026; + public static final int conversationlist_signs_pre067=0x7f05001b; + public static final int conversationlist_signs_v068=0x7f05002e; + public static final int conversationlist_thievesguild_1=0x7f05001c; + public static final int conversationlist_umar=0x7f05001f; + public static final int conversationlist_vilegard_erttu=0x7f050022; + public static final int conversationlist_vilegard_tavern=0x7f050023; + public static final int conversationlist_vilegard_villagers=0x7f050021; + public static final int conversationlist_wilderness=0x7f050018; + public static final int conversationlist_wrye=0x7f05002c; + public static final int dialog_close=0x7f050066; + public static final int dialog_confirmexit_message=0x7f050068; + public static final int dialog_confirmexit_title=0x7f050067; + public static final int dialog_groundloot_message=0x7f0500a0; + public static final int dialog_groundloot_title=0x7f05009f; + public static final int dialog_loading_failed_incorrectversion=0x7f050065; + public static final int dialog_loading_failed_message=0x7f050064; + public static final int dialog_loading_failed_title=0x7f050063; + public static final int dialog_loading_message=0x7f050062; + public static final int dialog_loot_foundgold=0x7f05009d; + public static final int dialog_loot_pickall=0x7f05009c; + public static final int dialog_loot_pickedupitems=0x7f05009e; + public static final int dialog_monsterencounter_info=0x7f05006e; + public static final int dialog_monsterencounter_message=0x7f05006d; + public static final int dialog_monsterencounter_title=0x7f05006c; + public static final int dialog_monsterloot_gainedexp=0x7f0500a3; + public static final int dialog_monsterloot_message=0x7f0500a2; + public static final int dialog_monsterloot_title=0x7f0500a1; + public static final int dialog_newversion_message=0x7f0500f8; + public static final int dialog_newversion_title=0x7f0500f7; + public static final int dialog_paused_message=0x7f05006a; + public static final int dialog_paused_resume=0x7f05006b; + public static final int dialog_paused_title=0x7f050069; + public static final int dialog_rest_confirm_message=0x7f0500ef; + public static final int dialog_rest_message=0x7f0500f0; + public static final int dialog_rest_title=0x7f0500ee; + public static final int droplists_crossglen=0x7f050031; + public static final int droplists_crossglen_outside=0x7f050032; + public static final int droplists_debug=0x7f050030; + public static final int droplists_fallhaven=0x7f050033; + public static final int droplists_v068=0x7f050035; + public static final int droplists_wilderness=0x7f050034; + public static final int exit=0x7f050055; + public static final int exit_to_menu=0x7f050056; + public static final int heroinfo_actionpoints=0x7f05007e; + public static final int heroinfo_char=0x7f050073; + public static final int heroinfo_gold=0x7f05007d; + public static final int heroinfo_inv=0x7f050074; + public static final int heroinfo_inventory=0x7f05007c; + public static final int heroinfo_level=0x7f050079; + public static final int heroinfo_levelup=0x7f050078; + public static final int heroinfo_quests=0x7f05007f; + public static final int heroinfo_skill=0x7f050076; + public static final int heroinfo_spell=0x7f050077; + public static final int heroinfo_totalexperience=0x7f05007a; + public static final int heroinfo_wear=0x7f050075; + public static final int heroinfo_wornequipment=0x7f05007b; + public static final int inventory_drop=0x7f050098; + public static final int inventory_equip=0x7f050095; + public static final int inventory_info=0x7f050094; + public static final int inventory_item_dropped=0x7f05009a; + public static final int inventory_item_equipped=0x7f05009b; + public static final int inventory_item_used=0x7f050099; + public static final int inventory_unequip=0x7f050096; + public static final int inventory_use=0x7f050097; + public static final int itemcategory_money=0x7f0500c3; + public static final int itemcategory_other=0x7f0500cd; + public static final int itemcategory_potion=0x7f0500cc; + public static final int itemcategory_shield=0x7f0500c5; + public static final int itemcategory_weapon=0x7f0500c4; + public static final int itemcategory_wearable_body=0x7f0500c7; + public static final int itemcategory_wearable_feet=0x7f0500c9; + public static final int itemcategory_wearable_hand=0x7f0500c8; + public static final int itemcategory_wearable_head=0x7f0500c6; + public static final int itemcategory_wearable_neck=0x7f0500ca; + public static final int itemcategory_wearable_ring=0x7f0500cb; + public static final int iteminfo_action_equip=0x7f0500be; + public static final int iteminfo_action_equip_ap=0x7f0500c1; + public static final int iteminfo_action_unequip=0x7f0500bf; + public static final int iteminfo_action_unequip_ap=0x7f0500c2; + public static final int iteminfo_action_use=0x7f0500bd; + public static final int iteminfo_action_use_ap=0x7f0500c0; /** A specific key is required to pass. */ - public static final int iteminfo_category=0x7f0500bb; - public static final int iteminfo_effect_chance_of=0x7f05010f; - public static final int iteminfo_effect_decrease_current_ap=0x7f050119; - public static final int iteminfo_effect_decrease_current_hp=0x7f050117; - public static final int iteminfo_effect_decrease_max_ap=0x7f05011e; - public static final int iteminfo_effect_decrease_max_hp=0x7f05011c; - public static final int iteminfo_effect_decrease_movecost=0x7f050120; - public static final int iteminfo_effect_duration=0x7f050110; - public static final int iteminfo_effect_increase_current_ap=0x7f05011a; - public static final int iteminfo_effect_increase_current_hp=0x7f050118; - public static final int iteminfo_effect_increase_max_ap=0x7f05011d; - public static final int iteminfo_effect_increase_max_hp=0x7f05011b; - public static final int iteminfo_effect_increase_movecost=0x7f05011f; - public static final int iteminfo_effect_works_on_source=0x7f050111; - public static final int iteminfo_effect_works_on_target=0x7f050112; - public static final int iteminfo_effect_works_when_equipped=0x7f050116; - public static final int iteminfo_effect_works_when_hitting_target=0x7f050113; - public static final int iteminfo_effect_works_when_killing_target=0x7f050114; - public static final int iteminfo_effect_works_when_used=0x7f050115; - public static final int itemlist_animal=0x7f05003d; - public static final int itemlist_armour=0x7f05003a; - public static final int itemlist_debug=0x7f050036; - public static final int itemlist_food=0x7f05003b; - public static final int itemlist_junk=0x7f05003e; - public static final int itemlist_money=0x7f050035; - public static final int itemlist_necklaces=0x7f050039; - public static final int itemlist_potions=0x7f05003c; - public static final int itemlist_quest=0x7f05003f; - public static final int itemlist_rings=0x7f050038; - public static final int itemlist_v068=0x7f050040; - public static final int itemlist_weapons=0x7f050037; - public static final int key_required=0x7f050123; - public static final int levelup_add_attackchance=0x7f0500e7; - public static final int levelup_add_attackchance_description=0x7f0500e8; - public static final int levelup_add_attackdamage=0x7f0500e9; - public static final int levelup_add_attackdamage_description=0x7f0500ea; - public static final int levelup_add_blockchance=0x7f0500eb; - public static final int levelup_add_blockchance_description=0x7f0500ec; - public static final int levelup_add_health=0x7f0500e5; - public static final int levelup_add_health_description=0x7f0500e6; - public static final int levelup_buttontext=0x7f0500e4; - public static final int levelup_description=0x7f0500e3; - public static final int levelup_title=0x7f0500e2; - public static final int loadsave_selectslot=0x7f05005e; - public static final int loadsave_slot_empty=0x7f05005f; - public static final int loadsave_title_load=0x7f05005d; - public static final int loadsave_title_save=0x7f05005c; - public static final int menu_load=0x7f050059; - public static final int menu_pause=0x7f050056; - public static final int menu_save=0x7f050058; - public static final int menu_save_failed=0x7f05005b; - public static final int menu_save_gamesaved=0x7f05005a; - public static final int menu_settings=0x7f050057; - public static final int monster_difficulty_easy=0x7f0500a4; - public static final int monster_difficulty_hard=0x7f0500a6; - public static final int monster_difficulty_impossible=0x7f0500a8; - public static final int monster_difficulty_normal=0x7f0500a5; - public static final int monster_difficulty_veryeasy=0x7f0500a3; - public static final int monster_difficulty_veryhard=0x7f0500a7; - public static final int monsterlist_crossglen_animals=0x7f050042; - public static final int monsterlist_crossglen_npcs=0x7f050044; - public static final int monsterlist_debug=0x7f050041; - public static final int monsterlist_fallhaven_animals=0x7f050043; - public static final int monsterlist_fallhaven_npcs=0x7f050045; - public static final int monsterlist_v068_npcs=0x7f050047; - public static final int monsterlist_wilderness=0x7f050046; - public static final int preferences_combat_category=0x7f050107; - public static final int preferences_combat_speed=0x7f050109; - public static final int preferences_combat_speed_title=0x7f050108; - public static final int preferences_dialog_category=0x7f050100; - public static final int preferences_dialog_confirmattack=0x7f050104; - public static final int preferences_dialog_confirmattack_title=0x7f050103; - public static final int preferences_dialog_confirmrest=0x7f050102; - public static final int preferences_dialog_confirmrest_title=0x7f050101; - public static final int preferences_dialog_monsterloot=0x7f050106; - public static final int preferences_dialog_monsterloot_title=0x7f050105; - public static final int preferences_display_category=0x7f0500fd; - public static final int preferences_display_fullscreen=0x7f0500ff; - public static final int preferences_display_fullscreen_title=0x7f0500fe; - public static final int preferences_display_scaling_factor=0x7f050122; - public static final int preferences_display_scaling_factor_title=0x7f050121; - public static final int preferences_movement_category=0x7f05010a; - public static final int preferences_movementmethod=0x7f05010c; - public static final int preferences_movementmethod_title=0x7f05010b; - public static final int questlist=0x7f050049; - public static final int questlist_debug=0x7f050048; - public static final int questlist_v068=0x7f05004a; - public static final int questlog_andor_v068=0x7f050051; - public static final int questlog_crossglen=0x7f05004c; - public static final int questlog_debug=0x7f05004b; - public static final int questlog_fallhaven=0x7f05004d; - public static final int questlog_farrik=0x7f050050; - public static final int questlog_flagstone=0x7f05004f; - public static final int questlog_includecompleted_prompt=0x7f0500f9; - public static final int questlog_queststatus=0x7f0500fa; - public static final int questlog_queststatus_completed=0x7f0500fc; - public static final int questlog_queststatus_inprogress=0x7f0500fb; - public static final int questlog_title=0x7f0500f8; - public static final int questlog_vacor=0x7f05004e; - public static final int questlog_vilegard=0x7f050052; - public static final int savegame_currenthero_displayinfo=0x7f050060; - public static final int shop_buy=0x7f0500da; - public static final int shop_buyitem=0x7f0500dd; - public static final int shop_infoitem=0x7f0500dc; - public static final int shop_item_bought=0x7f0500e0; - public static final int shop_item_sold=0x7f0500e1; - public static final int shop_sell=0x7f0500db; - public static final int shop_sellitem=0x7f0500de; - public static final int shop_yourgold=0x7f0500df; - public static final int startscreen_about=0x7f0500d0; - public static final int startscreen_continue=0x7f0500cd; - public static final int startscreen_enterheroname=0x7f0500d1; - public static final int startscreen_load=0x7f0500d2; - public static final int startscreen_newgame=0x7f0500ce; - public static final int startscreen_newgame_confirm=0x7f0500cf; - public static final int status_ap=0x7f050070; - public static final int status_exp=0x7f050071; - public static final int status_hp=0x7f05006e; - public static final int status_mp=0x7f05006f; - public static final int traitsinfo_attack_chance=0x7f0500b5; - public static final int traitsinfo_attack_cost=0x7f0500b4; - public static final int traitsinfo_attack_damage=0x7f0500b6; - public static final int traitsinfo_criticalhit_chance=0x7f0500b7; - public static final int traitsinfo_criticalhit_multiplier=0x7f0500b8; - public static final int traitsinfo_defense_chance=0x7f0500b9; - public static final int traitsinfo_defense_damageresist=0x7f0500ba; + public static final int iteminfo_category=0x7f0500bc; + public static final int iteminfo_effect_chance_of=0x7f050110; + public static final int iteminfo_effect_decrease_current_ap=0x7f05011a; + public static final int iteminfo_effect_decrease_current_hp=0x7f050118; + public static final int iteminfo_effect_decrease_max_ap=0x7f05011f; + public static final int iteminfo_effect_decrease_max_hp=0x7f05011d; + public static final int iteminfo_effect_decrease_movecost=0x7f050121; + public static final int iteminfo_effect_duration=0x7f050111; + public static final int iteminfo_effect_increase_current_ap=0x7f05011b; + public static final int iteminfo_effect_increase_current_hp=0x7f050119; + public static final int iteminfo_effect_increase_max_ap=0x7f05011e; + public static final int iteminfo_effect_increase_max_hp=0x7f05011c; + public static final int iteminfo_effect_increase_movecost=0x7f050120; + public static final int iteminfo_effect_works_on_source=0x7f050112; + public static final int iteminfo_effect_works_on_target=0x7f050113; + public static final int iteminfo_effect_works_when_equipped=0x7f050117; + public static final int iteminfo_effect_works_when_hitting_target=0x7f050114; + public static final int iteminfo_effect_works_when_killing_target=0x7f050115; + public static final int iteminfo_effect_works_when_used=0x7f050116; + public static final int itemlist_animal=0x7f05003e; + public static final int itemlist_armour=0x7f05003b; + public static final int itemlist_debug=0x7f050037; + public static final int itemlist_food=0x7f05003c; + public static final int itemlist_junk=0x7f05003f; + public static final int itemlist_money=0x7f050036; + public static final int itemlist_necklaces=0x7f05003a; + public static final int itemlist_potions=0x7f05003d; + public static final int itemlist_quest=0x7f050040; + public static final int itemlist_rings=0x7f050039; + public static final int itemlist_v068=0x7f050041; + public static final int itemlist_weapons=0x7f050038; + public static final int key_required=0x7f050124; + public static final int levelup_add_attackchance=0x7f0500e8; + public static final int levelup_add_attackchance_description=0x7f0500e9; + public static final int levelup_add_attackdamage=0x7f0500ea; + public static final int levelup_add_attackdamage_description=0x7f0500eb; + public static final int levelup_add_blockchance=0x7f0500ec; + public static final int levelup_add_blockchance_description=0x7f0500ed; + public static final int levelup_add_health=0x7f0500e6; + public static final int levelup_add_health_description=0x7f0500e7; + public static final int levelup_buttontext=0x7f0500e5; + public static final int levelup_description=0x7f0500e4; + public static final int levelup_title=0x7f0500e3; + public static final int loadsave_selectslot=0x7f05005f; + public static final int loadsave_slot_empty=0x7f050060; + public static final int loadsave_title_load=0x7f05005e; + public static final int loadsave_title_save=0x7f05005d; + public static final int menu_load=0x7f05005a; + public static final int menu_pause=0x7f050057; + public static final int menu_save=0x7f050059; + public static final int menu_save_failed=0x7f05005c; + public static final int menu_save_gamesaved=0x7f05005b; + public static final int menu_settings=0x7f050058; + public static final int monster_difficulty_easy=0x7f0500a5; + public static final int monster_difficulty_hard=0x7f0500a7; + public static final int monster_difficulty_impossible=0x7f0500a9; + public static final int monster_difficulty_normal=0x7f0500a6; + public static final int monster_difficulty_veryeasy=0x7f0500a4; + public static final int monster_difficulty_veryhard=0x7f0500a8; + public static final int monsterlist_crossglen_animals=0x7f050043; + public static final int monsterlist_crossglen_npcs=0x7f050045; + public static final int monsterlist_debug=0x7f050042; + public static final int monsterlist_fallhaven_animals=0x7f050044; + public static final int monsterlist_fallhaven_npcs=0x7f050046; + public static final int monsterlist_v068_npcs=0x7f050048; + public static final int monsterlist_wilderness=0x7f050047; + public static final int preferences_combat_category=0x7f050108; + public static final int preferences_combat_speed=0x7f05010a; + public static final int preferences_combat_speed_title=0x7f050109; + public static final int preferences_dialog_category=0x7f050101; + public static final int preferences_dialog_confirmattack=0x7f050105; + public static final int preferences_dialog_confirmattack_title=0x7f050104; + public static final int preferences_dialog_confirmrest=0x7f050103; + public static final int preferences_dialog_confirmrest_title=0x7f050102; + public static final int preferences_dialog_monsterloot=0x7f050107; + public static final int preferences_dialog_monsterloot_title=0x7f050106; + public static final int preferences_display_category=0x7f0500fe; + public static final int preferences_display_fullscreen=0x7f050100; + public static final int preferences_display_fullscreen_title=0x7f0500ff; + public static final int preferences_display_scaling_factor=0x7f050123; + public static final int preferences_display_scaling_factor_title=0x7f050122; + public static final int preferences_movement_category=0x7f05010b; + public static final int preferences_movementmethod=0x7f05010d; + public static final int preferences_movementmethod_title=0x7f05010c; + public static final int questlist=0x7f05004a; + public static final int questlist_debug=0x7f050049; + public static final int questlist_v068=0x7f05004b; + public static final int questlog_andor_v068=0x7f050052; + public static final int questlog_crossglen=0x7f05004d; + public static final int questlog_debug=0x7f05004c; + public static final int questlog_fallhaven=0x7f05004e; + public static final int questlog_farrik=0x7f050051; + public static final int questlog_flagstone=0x7f050050; + public static final int questlog_includecompleted_prompt=0x7f0500fa; + public static final int questlog_queststatus=0x7f0500fb; + public static final int questlog_queststatus_completed=0x7f0500fd; + public static final int questlog_queststatus_inprogress=0x7f0500fc; + public static final int questlog_title=0x7f0500f9; + public static final int questlog_vacor=0x7f05004f; + public static final int questlog_vilegard=0x7f050053; + public static final int savegame_currenthero_displayinfo=0x7f050061; + public static final int shop_buy=0x7f0500db; + public static final int shop_buyitem=0x7f0500de; + public static final int shop_infoitem=0x7f0500dd; + public static final int shop_item_bought=0x7f0500e1; + public static final int shop_item_sold=0x7f0500e2; + public static final int shop_sell=0x7f0500dc; + public static final int shop_sellitem=0x7f0500df; + public static final int shop_yourgold=0x7f0500e0; + public static final int startscreen_about=0x7f0500d1; + public static final int startscreen_continue=0x7f0500ce; + public static final int startscreen_enterheroname=0x7f0500d2; + public static final int startscreen_load=0x7f0500d3; + public static final int startscreen_newgame=0x7f0500cf; + public static final int startscreen_newgame_confirm=0x7f0500d0; + public static final int status_ap=0x7f050071; + public static final int status_exp=0x7f050072; + public static final int status_hp=0x7f05006f; + public static final int status_mp=0x7f050070; + public static final int traitsinfo_attack_chance=0x7f0500b6; + public static final int traitsinfo_attack_cost=0x7f0500b5; + public static final int traitsinfo_attack_damage=0x7f0500b7; + public static final int traitsinfo_criticalhit_chance=0x7f0500b8; + public static final int traitsinfo_criticalhit_multiplier=0x7f0500b9; + public static final int traitsinfo_defense_chance=0x7f0500ba; + public static final int traitsinfo_defense_damageresist=0x7f0500bb; } public static final class style { public static final int Theme_NoBackground=0x7f080000; } public static final class xml { - public static final int catacombs1=0x7f040000; - public static final int catacombs2=0x7f040001; - public static final int catacombs3=0x7f040002; - public static final int catacombs4=0x7f040003; - public static final int clearing_level1=0x7f040004; - public static final int clearing_level2=0x7f040005; - public static final int crossglen=0x7f040006; - public static final int crossglen_cave=0x7f040007; - public static final int crossglen_farmhouse=0x7f040008; - public static final int crossglen_farmhouse_basement=0x7f040009; - public static final int crossglen_hall=0x7f04000a; - public static final int crossglen_smith=0x7f04000b; - public static final int debugmap=0x7f04000c; - public static final int fallhaven_alaun=0x7f04000d; - public static final int fallhaven_arcir=0x7f04000e; - public static final int fallhaven_arcir_basement=0x7f04000f; - public static final int fallhaven_athamyr=0x7f040010; - public static final int fallhaven_barn=0x7f040011; - public static final int fallhaven_church=0x7f040012; - public static final int fallhaven_clothes=0x7f040013; - public static final int fallhaven_derelict=0x7f040014; - public static final int fallhaven_derelict2=0x7f040015; - public static final int fallhaven_farmer=0x7f040016; - public static final int fallhaven_gravedigger=0x7f040017; - public static final int fallhaven_lumberjack=0x7f040018; - public static final int fallhaven_ne=0x7f040019; - public static final int fallhaven_nocmar=0x7f04001a; - public static final int fallhaven_nw=0x7f04001b; - public static final int fallhaven_potions=0x7f04001c; - public static final int fallhaven_prison=0x7f04001d; - public static final int fallhaven_rigmor=0x7f04001e; - public static final int fallhaven_se=0x7f04001f; - public static final int fallhaven_storage=0x7f040020; - public static final int fallhaven_sw=0x7f040021; - public static final int fallhaven_tavern=0x7f040022; - public static final int flagstone0=0x7f040023; - public static final int flagstone1=0x7f040024; - public static final int flagstone2=0x7f040025; - public static final int flagstone3=0x7f040026; - public static final int flagstone4=0x7f040027; - public static final int flagstone_inner=0x7f040028; - public static final int flagstone_upper=0x7f040029; - public static final int foaming_flask=0x7f04002a; - public static final int gargoylecave1=0x7f04002b; - public static final int gargoylecave2=0x7f04002c; - public static final int gargoylecave3=0x7f04002d; - public static final int gargoylecave4=0x7f04002e; - public static final int hauntedhouse1=0x7f04002f; - public static final int hauntedhouse2=0x7f040030; - public static final int hauntedhouse3=0x7f040031; - public static final int hauntedhouse4=0x7f040032; - public static final int home=0x7f040033; - public static final int jan_pitcave1=0x7f040034; - public static final int jan_pitcave2=0x7f040035; - public static final int jan_pitcave3=0x7f040036; - public static final int preferences=0x7f040037; - public static final int road1=0x7f040038; - public static final int road2=0x7f040039; - public static final int road3=0x7f04003a; - public static final int road4=0x7f04003b; - public static final int road4_gargoylecave=0x7f04003c; - public static final int road5=0x7f04003d; - public static final int road5_house=0x7f04003e; - public static final int snakecave1=0x7f04003f; - public static final int snakecave2=0x7f040040; - public static final int snakecave3=0x7f040041; - public static final int template=0x7f040042; - public static final int vilegard_armorer=0x7f040043; - public static final int vilegard_chapel=0x7f040044; - public static final int vilegard_erttu=0x7f040045; - public static final int vilegard_kaori=0x7f040046; - public static final int vilegard_n=0x7f040047; - public static final int vilegard_ogam=0x7f040048; - public static final int vilegard_s=0x7f040049; - public static final int vilegard_smith=0x7f04004a; - public static final int vilegard_sw=0x7f04004b; - public static final int vilegard_tavern=0x7f04004c; - public static final int vilegard_wrye=0x7f04004d; - public static final int wild1=0x7f04004e; - public static final int wild10=0x7f04004f; - public static final int wild11=0x7f040050; - public static final int wild11_clearing=0x7f040051; - public static final int wild12=0x7f040052; - public static final int wild13=0x7f040053; - public static final int wild14=0x7f040054; - public static final int wild14_cave=0x7f040055; - public static final int wild14_clearing=0x7f040056; - public static final int wild15=0x7f040057; - public static final int wild15_house=0x7f040058; - public static final int wild2=0x7f040059; - public static final int wild3=0x7f04005a; - public static final int wild4=0x7f04005b; - public static final int wild5=0x7f04005c; - public static final int wild6=0x7f04005d; - public static final int wild6_house=0x7f04005e; - public static final int wild7=0x7f04005f; - public static final int wild8=0x7f040060; - public static final int wild9=0x7f040061; + public static final int blackwater_mountain0=0x7f040000; + public static final int blackwater_mountain1=0x7f040001; + public static final int blackwater_mountain10=0x7f040002; + public static final int blackwater_mountain11=0x7f040003; + public static final int blackwater_mountain12=0x7f040004; + public static final int blackwater_mountain13=0x7f040005; + public static final int blackwater_mountain14=0x7f040006; + public static final int blackwater_mountain15=0x7f040007; + public static final int blackwater_mountain16=0x7f040008; + public static final int blackwater_mountain17=0x7f040009; + public static final int blackwater_mountain18=0x7f04000a; + public static final int blackwater_mountain19=0x7f04000b; + public static final int blackwater_mountain2=0x7f04000c; + public static final int blackwater_mountain20=0x7f04000d; + public static final int blackwater_mountain21=0x7f04000e; + public static final int blackwater_mountain22=0x7f04000f; + public static final int blackwater_mountain23=0x7f040010; + public static final int blackwater_mountain24=0x7f040011; + public static final int blackwater_mountain25=0x7f040012; + public static final int blackwater_mountain26=0x7f040013; + public static final int blackwater_mountain27=0x7f040014; + public static final int blackwater_mountain28=0x7f040015; + public static final int blackwater_mountain29=0x7f040016; + public static final int blackwater_mountain3=0x7f040017; + public static final int blackwater_mountain30=0x7f040018; + public static final int blackwater_mountain31=0x7f040019; + public static final int blackwater_mountain32=0x7f04001a; + public static final int blackwater_mountain33=0x7f04001b; + public static final int blackwater_mountain34=0x7f04001c; + public static final int blackwater_mountain35=0x7f04001d; + public static final int blackwater_mountain36=0x7f04001e; + public static final int blackwater_mountain37=0x7f04001f; + public static final int blackwater_mountain38=0x7f040020; + public static final int blackwater_mountain39=0x7f040021; + public static final int blackwater_mountain4=0x7f040022; + public static final int blackwater_mountain40=0x7f040023; + public static final int blackwater_mountain41=0x7f040024; + public static final int blackwater_mountain42=0x7f040025; + public static final int blackwater_mountain43=0x7f040026; + public static final int blackwater_mountain44=0x7f040027; + public static final int blackwater_mountain45=0x7f040028; + public static final int blackwater_mountain46=0x7f040029; + public static final int blackwater_mountain47=0x7f04002a; + public static final int blackwater_mountain48=0x7f04002b; + public static final int blackwater_mountain49=0x7f04002c; + public static final int blackwater_mountain5=0x7f04002d; + public static final int blackwater_mountain50=0x7f04002e; + public static final int blackwater_mountain51=0x7f04002f; + public static final int blackwater_mountain52=0x7f040030; + public static final int blackwater_mountain6=0x7f040031; + public static final int blackwater_mountain7=0x7f040032; + public static final int blackwater_mountain8=0x7f040033; + public static final int blackwater_mountain9=0x7f040034; + public static final int catacombs1=0x7f040035; + public static final int catacombs2=0x7f040036; + public static final int catacombs3=0x7f040037; + public static final int catacombs4=0x7f040038; + public static final int clearing_level1=0x7f040039; + public static final int clearing_level2=0x7f04003a; + public static final int crossglen=0x7f04003b; + public static final int crossglen_cave=0x7f04003c; + public static final int crossglen_farmhouse=0x7f04003d; + public static final int crossglen_farmhouse_basement=0x7f04003e; + public static final int crossglen_hall=0x7f04003f; + public static final int crossglen_smith=0x7f040040; + public static final int crossroads=0x7f040041; + public static final int debugmap=0x7f040042; + public static final int fallhaven_alaun=0x7f040043; + public static final int fallhaven_arcir=0x7f040044; + public static final int fallhaven_arcir_basement=0x7f040045; + public static final int fallhaven_athamyr=0x7f040046; + public static final int fallhaven_barn=0x7f040047; + public static final int fallhaven_church=0x7f040048; + public static final int fallhaven_clothes=0x7f040049; + public static final int fallhaven_derelict=0x7f04004a; + public static final int fallhaven_derelict2=0x7f04004b; + public static final int fallhaven_farmer=0x7f04004c; + public static final int fallhaven_gravedigger=0x7f04004d; + public static final int fallhaven_lumberjack=0x7f04004e; + public static final int fallhaven_ne=0x7f04004f; + public static final int fallhaven_nocmar=0x7f040050; + public static final int fallhaven_nw=0x7f040051; + public static final int fallhaven_potions=0x7f040052; + public static final int fallhaven_prison=0x7f040053; + public static final int fallhaven_rigmor=0x7f040054; + public static final int fallhaven_se=0x7f040055; + public static final int fallhaven_storage=0x7f040056; + public static final int fallhaven_sw=0x7f040057; + public static final int fallhaven_tavern=0x7f040058; + public static final int fields0=0x7f040059; + public static final int fields1=0x7f04005a; + public static final int fields10=0x7f04005b; + public static final int fields11=0x7f04005c; + public static final int fields12=0x7f04005d; + public static final int fields2=0x7f04005e; + public static final int fields3=0x7f04005f; + public static final int fields4=0x7f040060; + public static final int fields5=0x7f040061; + public static final int fields6=0x7f040062; + public static final int fields7=0x7f040063; + public static final int fields8=0x7f040064; + public static final int fields9=0x7f040065; + public static final int flagstone0=0x7f040066; + public static final int flagstone1=0x7f040067; + public static final int flagstone2=0x7f040068; + public static final int flagstone3=0x7f040069; + public static final int flagstone4=0x7f04006a; + public static final int flagstone_inner=0x7f04006b; + public static final int flagstone_upper=0x7f04006c; + public static final int foaming_flask=0x7f04006d; + public static final int gargoylecave1=0x7f04006e; + public static final int gargoylecave2=0x7f04006f; + public static final int gargoylecave3=0x7f040070; + public static final int gargoylecave4=0x7f040071; + public static final int hauntedhouse1=0x7f040072; + public static final int hauntedhouse2=0x7f040073; + public static final int hauntedhouse3=0x7f040074; + public static final int hauntedhouse4=0x7f040075; + public static final int home=0x7f040076; + public static final int houseatcrossroads0=0x7f040077; + public static final int houseatcrossroads1=0x7f040078; + public static final int houseatcrossroads2=0x7f040079; + public static final int houseatcrossroads3=0x7f04007a; + public static final int houseatcrossroads4=0x7f04007b; + public static final int houseatcrossroads5=0x7f04007c; + public static final int jan_pitcave1=0x7f04007d; + public static final int jan_pitcave2=0x7f04007e; + public static final int jan_pitcave3=0x7f04007f; + public static final int loneford1=0x7f040080; + public static final int loneford10=0x7f040081; + public static final int loneford2=0x7f040082; + public static final int loneford3=0x7f040083; + public static final int loneford4=0x7f040084; + public static final int loneford5=0x7f040085; + public static final int loneford6=0x7f040086; + public static final int loneford7=0x7f040087; + public static final int loneford8=0x7f040088; + public static final int loneford9=0x7f040089; + public static final int preferences=0x7f04008a; + public static final int road1=0x7f04008b; + public static final int road2=0x7f04008c; + public static final int road3=0x7f04008d; + public static final int road4=0x7f04008e; + public static final int road4_gargoylecave=0x7f04008f; + public static final int road5=0x7f040090; + public static final int road5_house=0x7f040091; + public static final int roadbeforecrossroads=0x7f040092; + public static final int roadtocarntower0=0x7f040093; + public static final int roadtocarntower1=0x7f040094; + public static final int roadtocarntower2=0x7f040095; + public static final int snakecave1=0x7f040096; + public static final int snakecave2=0x7f040097; + public static final int snakecave3=0x7f040098; + public static final int template=0x7f040099; + public static final int test1=0x7f04009a; + public static final int vilegard_armorer=0x7f04009b; + public static final int vilegard_chapel=0x7f04009c; + public static final int vilegard_erttu=0x7f04009d; + public static final int vilegard_kaori=0x7f04009e; + public static final int vilegard_n=0x7f04009f; + public static final int vilegard_ogam=0x7f0400a0; + public static final int vilegard_s=0x7f0400a1; + public static final int vilegard_smith=0x7f0400a2; + public static final int vilegard_sw=0x7f0400a3; + public static final int vilegard_tavern=0x7f0400a4; + public static final int vilegard_wrye=0x7f0400a5; + public static final int wild0=0x7f0400a6; + public static final int wild1=0x7f0400a7; + public static final int wild10=0x7f0400a8; + public static final int wild11=0x7f0400a9; + public static final int wild11_clearing=0x7f0400aa; + public static final int wild12=0x7f0400ab; + public static final int wild13=0x7f0400ac; + public static final int wild14=0x7f0400ad; + public static final int wild14_cave=0x7f0400ae; + public static final int wild14_clearing=0x7f0400af; + public static final int wild15=0x7f0400b0; + public static final int wild15_house=0x7f0400b1; + public static final int wild2=0x7f0400b2; + public static final int wild3=0x7f0400b3; + public static final int wild4=0x7f0400b4; + public static final int wild5=0x7f0400b5; + public static final int wild6=0x7f0400b6; + public static final int wild6_house=0x7f0400b7; + public static final int wild7=0x7f0400b8; + public static final int wild8=0x7f0400b9; + public static final int wild9=0x7f0400ba; + public static final int woodcave0=0x7f0400bb; + public static final int woodcave1=0x7f0400bc; } } diff --git a/AndorsTrail/res/values/actorconditions.xml b/AndorsTrail/res/values/actorconditions.xml new file mode 100644 index 000000000..c20945213 --- /dev/null +++ b/AndorsTrail/res/values/actorconditions.xml @@ -0,0 +1,11 @@ + + + + +[id|name|iconID|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|]; +{bless|Bless|items_tiles:321||||||||||||||1|||||5|||||||}; +{poison_weak|Weak Poison|items_tiles:340||1|2|-1|-1|||||||||||||||||||||}; +{str|Strength|items_tiles:350||||||||||||||1||||||||2|2|||}; +{regen|Regeneration|items_tiles:315||1|1|1|1|||||||||0||||||||||||}; + + diff --git a/AndorsTrail/res/values/itemlist.xml b/AndorsTrail/res/values/itemlist.xml index 0e32a6250..3d73d75b2 100644 --- a/AndorsTrail/res/values/itemlist.xml +++ b/AndorsTrail/res/values/itemlist.xml @@ -2,183 +2,183 @@ -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{gold|items_tiles:220|Gold coins|30|1|||||||||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{gold|items_tiles:220|Gold coins|30|1|||||||||||||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{debug_dagger1|items_tiles:90|Black heart dagger|0|6||2|100|30|3|5-10|||}; -{debug_ring1|items_tiles:270|Black heart ring|7|3|||50|||10|||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{debug_dagger1|items_tiles:90|Black heart dagger|0|6|1||||2|100|30|3|5|10|||||||||||||||||||||||}; +{debug_ring1|items_tiles:270|Black heart ring|7|3|1|||||50|||10|10|||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{club1|items_tiles:126|Wooden club|0|7||5|10|||0-1|||}; -{club3|items_tiles:128|Iron club|0|253||6|5|||2-7|||}; -{ironsword0|items_tiles:70|Iron sword|0|12||5|10|||0-1|||}; -{hammer0|items_tiles:129|Iron hammer|0|12||5|10|||0-1|||}; -{hammer1|items_tiles:129|Giant hammer|0|121||10|5|||4-7|||}; -{dagger0|items_tiles:84|Iron dagger|0|12||5|10|||0-1|||}; -{dagger1|items_tiles:84|Sharp iron dagger|0|53||4|20|||1-2|||}; -{dagger2|items_tiles:84|Superior iron dagger|0|70||4|25|||1-2|||}; -{shortsword1|items_tiles:85|Iron shortsword|0|78||4|15|||1-2|||}; -{ironsword1|items_tiles:70|Iron sword|0|78||5|10|||1-3|||}; -{ironsword2|items_tiles:71|Iron longsword|0|121||5|10|||1-4|||}; -{broadsword1|items_tiles:75|Iron broadsword|0|251||7|2|||1-10|||}; -{broadsword2|items_tiles:76|Steel broadsword|0|582||6|15|||3-10|||}; -{steelsword1|items_tiles:77|Steel sword|0|874||4|24|||3-7|||}; -{axe1|items_tiles:140|Woodcutter axe|0|24||5|5|||1-3|||}; -{axe2|items_tiles:140|Iron axe|0|312||6|5|||2-5|||}; -{quickdagger1|items_tiles:84|Quickstrike dagger|0|512||3|20|||0|-20||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{club1|items_tiles:126|Wooden club|0|7|1||||5|10|||0|1|||||||||||||||||||||||}; +{club3|items_tiles:128|Iron club|0|253|1||||6|5|||2|7|||||||||||||||||||||||}; +{ironsword0|items_tiles:70|Iron sword|0|12|1||||5|10|||0|1|||||||||||||||||||||||}; +{hammer0|items_tiles:129|Iron hammer|0|12|1||||5|10|||0|1|||||||||||||||||||||||}; +{hammer1|items_tiles:129|Giant hammer|0|121|1||||10|5|||4|7|||||||||||||||||||||||}; +{dagger0|items_tiles:84|Iron dagger|0|12|1||||5|10|||0|1|||||||||||||||||||||||}; +{dagger1|items_tiles:84|Sharp iron dagger|0|53|1||||4|20|||1|2|||||||||||||||||||||||}; +{dagger2|items_tiles:84|Superior iron dagger|0|70|1||||4|25|||1|2|||||||||||||||||||||||}; +{shortsword1|items_tiles:85|Iron shortsword|0|78|1||||4|15|||1|2|||||||||||||||||||||||}; +{ironsword1|items_tiles:70|Iron sword|0|78|1||||5|10|||1|3|||||||||||||||||||||||}; +{ironsword2|items_tiles:71|Iron longsword|0|121|1||||5|10|||1|4|||||||||||||||||||||||}; +{broadsword1|items_tiles:75|Iron broadsword|0|251|1||||7|2|||1|10|||||||||||||||||||||||}; +{broadsword2|items_tiles:76|Steel broadsword|0|582|1||||6|15|||3|10|||||||||||||||||||||||}; +{steelsword1|items_tiles:77|Steel sword|0|874|1||||4|24|||3|7|||||||||||||||||||||||}; +{axe1|items_tiles:140|Woodcutter axe|0|24|1||||5|5|||1|3|||||||||||||||||||||||}; +{axe2|items_tiles:140|Iron axe|0|312|1||||6|5|||2|5|||||||||||||||||||||||}; +{quickdagger1|items_tiles:84|Quickstrike dagger|0|512|1||||3|20|||0|0|-20||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{ring_dmg1|items_tiles:266|Ring of damage +1|7|215||||||1|||}; -{ring_dmg2|items_tiles:267|Ring of damage +2|7|398||||||2|||}; -{ring_dmg5|items_tiles:268|Ring of damage +5|7|2014||||||5|||}; -{ring_dmg6|items_tiles:269|Ring of damage +6|7|3186||||||6|||}; -{ring_block1|items_tiles:266|Ring of block|7|1239|||||||10||}; -{ring_block2|items_tiles:266|Ring of block|7|3866|||||||15||}; -{ring_atkch1|items_tiles:266|Ring of surehit|7|215|||15||||||}; -{ring1|items_tiles:266|Mundane ring|7|13|||||||||}; -{ring2|items_tiles:266|Polished ring|7|21|||||||||}; -{ring_jinxed1|items_tiles:268|Jinxed ring of damage resistance|7|229|||||||-9|1|}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{ring_dmg1|items_tiles:266|Ring of damage +1|7|215|1||||||||1|1|||||||||||||||||||||||}; +{ring_dmg2|items_tiles:267|Ring of damage +2|7|398|1||||||||2|2|||||||||||||||||||||||}; +{ring_dmg5|items_tiles:268|Ring of damage +5|7|2014|1||||||||5|5|||||||||||||||||||||||}; +{ring_dmg6|items_tiles:269|Ring of damage +6|7|3186|1||||||||6|6|||||||||||||||||||||||}; +{ring_block1|items_tiles:266|Ring of block|7|1239|1||||||||||10||||||||||||||||||||||}; +{ring_block2|items_tiles:266|Ring of block|7|3866|1||||||||||15||||||||||||||||||||||}; +{ring_atkch1|items_tiles:266|Ring of surehit|7|215|1|||||15|||||||||||||||||||||||||||}; +{ring1|items_tiles:266|Mundane ring|7|13|||||||||||||||||||||||||||||||||}; +{ring2|items_tiles:266|Polished ring|7|21|||||||||||||||||||||||||||||||||}; +{ring_jinxed1|items_tiles:268|Jinxed ring of damage resistance|7|229|1||||||||||-9|1|||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{jewel_fallhaven|items_tiles:272|Jewel of Fallhaven|6|3125||-1|||||||}; -{necklace_shield1|items_tiles:273|Shielding necklace|6|935|||||||9||}; -{necklace_shield2|items_tiles:273|Shielding necklace|6|1255|||||||12||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{jewel_fallhaven|items_tiles:272|Jewel of Fallhaven|6|3125|1||||-1||||||||||||||||||||||||||||}; +{necklace_shield1|items_tiles:273|Shielding necklace|6|935|1||||||||||9||||||||||||||||||||||}; +{necklace_shield2|items_tiles:273|Shielding necklace|6|1255|1||||||||||12||||||||||||||||||||||}; - -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{shirt1|items_tiles:182|Cloth shirt|3|16|||||||2||}; -{shirt2|items_tiles:182|Fine shirt|3|72|||||||5||}; -{shirt_dmgresist|items_tiles:183|Hardened leather shirt|3|1633|||||||5|1|}; -{armor1|items_tiles:183|Leather armour|3|464|||||||8||}; -{armor2|items_tiles:183|Superior leather armour|3|624|||||||9||}; -{armor3|items_tiles:184|Hard leather armour|3|2407|||||||13||}; -{armor4|items_tiles:184|Superior hard leather armour|3|3866|||||||15||}; -{hat1|items_tiles:189|Green hat|2|13|||||||1||}; -{hat2|items_tiles:189|Fine green hat|2|25|||||||2||}; -{hat3|items_tiles:192|Leather cap|2|72|||||||5||}; -{hat4|items_tiles:192|Fine leather cap|2|146|||||||6||}; -{gloves1|items_tiles:203|Leather gloves|4|23|||||||3||}; -{gloves2|items_tiles:203|Fine leather gloves|4|38|||||||4||}; -{gloves3|items_tiles:204|Snakeskin gloves|4|72|||||||5||}; -{gloves4|items_tiles:204|Fine snakeskin gloves|4|146|||||||6||}; -{shield1|items_tiles:168|Wooden buckler|1|72|||-5||||5||}; -{shield3|items_tiles:169|Reinforced wooden buckler|1|226|||-5||||7||}; -{shield4|items_tiles:170|Wooden shield|1|464|||-5||||8||}; -{shield5|items_tiles:170|Superior wooden shield|1|624|||-4||||9||}; -{boots1|items_tiles:196|Leather boots|5|23|||||||3||}; -{boots2|items_tiles:196|Superior leather boots|5|38|||||||4||}; -{boots3|items_tiles:197|Snakeskin boots|5|146|||||||6||}; -{boots5|items_tiles:198|Reinforced boots|5|226|||||||7||}; -{gloves_attack1|items_tiles:203|Gloves of swift attack|4|150|||15||||-9||}; -{gloves_attack2|items_tiles:203|Fine gloves of swift attack|4|221|||17||||-9||}; + +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{shirt1|items_tiles:182|Cloth shirt|3|16|1||||||||||2||||||||||||||||||||||}; +{shirt2|items_tiles:182|Fine shirt|3|72|1||||||||||5||||||||||||||||||||||}; +{shirt_dmgresist|items_tiles:183|Hardened leather shirt|3|1633|1||||||||||5|1|||||||||||||||||||||}; +{armor1|items_tiles:183|Leather armour|3|464|1||||||||||8||||||||||||||||||||||}; +{armor2|items_tiles:183|Superior leather armour|3|624|1||||||||||9||||||||||||||||||||||}; +{armor3|items_tiles:184|Hard leather armour|3|2407|1||||||||||13||||||||||||||||||||||}; +{armor4|items_tiles:184|Superior hard leather armour|3|3866|1||||||||||15||||||||||||||||||||||}; +{hat1|items_tiles:189|Green hat|2|13|1||||||||||1||||||||||||||||||||||}; +{hat2|items_tiles:189|Fine green hat|2|25|1||||||||||2||||||||||||||||||||||}; +{hat3|items_tiles:192|Leather cap|2|72|1||||||||||5||||||||||||||||||||||}; +{hat4|items_tiles:192|Fine leather cap|2|146|1||||||||||6||||||||||||||||||||||}; +{gloves1|items_tiles:203|Leather gloves|4|23|1||||||||||3||||||||||||||||||||||}; +{gloves2|items_tiles:203|Fine leather gloves|4|38|1||||||||||4||||||||||||||||||||||}; +{gloves3|items_tiles:204|Snakeskin gloves|4|72|1||||||||||5||||||||||||||||||||||}; +{gloves4|items_tiles:204|Fine snakeskin gloves|4|146|1||||||||||6||||||||||||||||||||||}; +{shield1|items_tiles:168|Wooden buckler|1|72|1|||||-5|||||5||||||||||||||||||||||}; +{shield3|items_tiles:169|Reinforced wooden buckler|1|226|1|||||-5|||||7||||||||||||||||||||||}; +{shield4|items_tiles:170|Wooden shield|1|464|1|||||-5|||||8||||||||||||||||||||||}; +{shield5|items_tiles:170|Superior wooden shield|1|624|1|||||-4|||||9||||||||||||||||||||||}; +{boots1|items_tiles:196|Leather boots|5|23|1||||||||||3||||||||||||||||||||||}; +{boots2|items_tiles:196|Superior leather boots|5|38|1||||||||||4||||||||||||||||||||||}; +{boots3|items_tiles:197|Snakeskin boots|5|146|1||||||||||6||||||||||||||||||||||}; +{boots5|items_tiles:198|Reinforced boots|5|226|1||||||||||7||||||||||||||||||||||}; +{gloves_attack1|items_tiles:203|Gloves of swift attack|4|150|1|||||15|||||-9||||||||||||||||||||||}; +{gloves_attack2|items_tiles:203|Fine gloves of swift attack|4|221|1|||||17|||||-9||||||||||||||||||||||}; - -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{apple_green|items_tiles:2|Green apple|21|9|4||||||||}; -{apple_red|items_tiles:3|Red apple|21|15|6||||||||}; -{meat|items_tiles:25|Meat|21|29|12||||||||}; -{meat_cooked|items_tiles:27|Cooked meat|21|78|21||||||||}; -{strawberry|items_tiles:8|Strawberry|21|1|1||||||||}; -{carrot|items_tiles:15|Carrot|21|9|4||||||||}; -{bread|items_tiles:21|Bread|21|6|5||||||||}; -{mushroom|items_tiles:19|Mushroom|21|1|1||||||||}; -{pear|items_tiles:9|Pear|21|9|4||||||||}; -{eggs|items_tiles:20|Eggs|21|8|3||||||||}; -{radish|items_tiles:14|Radish|21|5|2||||||||}; + +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{apple_green|items_tiles:2|Green apple|21|9||||||||||||||1|4|4||||||4|||||||||||}; +{apple_red|items_tiles:3|Red apple|21|15||||||||||||||1|6|6||||||6|||||||||||}; +{meat|items_tiles:25|Meat|21|29||||||||||||||1|12|12||||||12|||||||||||}; +{meat_cooked|items_tiles:27|Cooked meat|21|78||||||||||||||1|21|21||||||21|||||||||||}; +{strawberry|items_tiles:8|Strawberry|21|1||||||||||||||1|1|1||||||1|||||||||||}; +{carrot|items_tiles:15|Carrot|21|9||||||||||||||1|4|4||||||4|||||||||||}; +{bread|items_tiles:21|Bread|21|6||||||||||||||1|5|5||||||5|||||||||||}; +{mushroom|items_tiles:19|Mushroom|21|1||||||||||||||1|1|1||||||1|||||||||||}; +{pear|items_tiles:9|Pear|21|9||||||||||||||1|4|4||||||4|||||||||||}; +{eggs|items_tiles:20|Eggs|21|8||||||||||||||1|3|3||||||3|||||||||||}; +{radish|items_tiles:14|Radish|21|5||||||||||||||1|2|2||||||2|||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{vial_empty1|items_tiles:56|Small empty vial|31|2|||||||||}; -{vial_empty2|items_tiles:57|Empty vial|31|4|||||||||}; -{vial_empty3|items_tiles:59|Empty flask|31|6|||||||||}; -{vial_empty4|items_tiles:58|Empty potion|31|11|||||||||}; -{health_minor|items_tiles:35|Minor potion of health|20|5|5||||||||}; -{health|items_tiles:49|Regular potion of health|20|40|10||||||||}; -{health_major|items_tiles:28|Major potion of health|20|210|40||||||||}; -{mead|items_tiles:51|Mead|20|15|1||||||||}; -{milk|items_tiles:55|Milk|20|21|2||||||||}; -{bonemeal_potion|items_tiles:34|Bonemeal potion|20|45|40||||||||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{vial_empty1|items_tiles:56|Small empty vial|31|2|||||||||||||||||||||||||||||||||}; +{vial_empty2|items_tiles:57|Empty vial|31|4|||||||||||||||||||||||||||||||||}; +{vial_empty3|items_tiles:59|Empty flask|31|6|||||||||||||||||||||||||||||||||}; +{vial_empty4|items_tiles:58|Empty potion|31|11|||||||||||||||||||||||||||||||||}; +{health_minor|items_tiles:35|Minor potion of health|20|5||||||||||||||1|5|5||||||5|||||||||||}; +{health|items_tiles:49|Regular potion of health|20|40||||||||||||||1|10|10||||||10|||||||||||}; +{health_major|items_tiles:28|Major potion of health|20|210||||||||||||||1|40|40||||||40|||||||||||}; +{mead|items_tiles:51|Mead|20|15||||||||||||||1|1|1||||||1|||||||||||}; +{milk|items_tiles:55|Milk|20|21||||||||||||||1|2|2||||||2|||||||||||}; +{bonemeal_potion|items_tiles:34|Bonemeal potion|20|45||||||||||||||1|40|40||||||40|||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{hair|items_tiles:258|Animal hair|31|2|||||||||}; -{insectwing|items_tiles:262|Insect wing|31|3|||||||||}; -{bone|items_tiles:254|Bone|31|2|||||||||}; -{eye|items_tiles:255|Eye|31|6|||||||||}; -{bat_wing|items_tiles:256|Bat wing|31|2|||||||||}; -{claws|items_tiles:257|Claws|31|2|||||||||}; -{shell|items_tiles:264|Insect shell|31|2|||||||||}; -{feather|items_tiles:226|Feather|31|6|||||||||}; -{red_feather|items_tiles:225|Red feather|31|11|||||||||}; -{gland|items_tiles:340|Poison gland|31|15|||||||||}; -{rat_tail|items_tiles:103|Rat tail|31|2|||||||||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{hair|items_tiles:258|Animal hair|31|2|||||||||||||||||||||||||||||||||}; +{insectwing|items_tiles:262|Insect wing|31|3|||||||||||||||||||||||||||||||||}; +{bone|items_tiles:254|Bone|31|2|||||||||||||||||||||||||||||||||}; +{eye|items_tiles:255|Eye|31|6|||||||||||||||||||||||||||||||||}; +{bat_wing|items_tiles:256|Bat wing|31|2|||||||||||||||||||||||||||||||||}; +{claws|items_tiles:257|Claws|31|2|||||||||||||||||||||||||||||||||}; +{shell|items_tiles:264|Insect shell|31|2|||||||||||||||||||||||||||||||||}; +{feather|items_tiles:226|Feather|31|6|||||||||||||||||||||||||||||||||}; +{red_feather|items_tiles:225|Red feather|31|11|||||||||||||||||||||||||||||||||}; +{gland|items_tiles:340|Poison gland|31|15|||||||||||||||||||||||||||||||||}; +{rat_tail|items_tiles:103|Rat tail|31|2|||||||||||||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{clay|items_tiles:289|Lump of clay|31|1|||||||||}; -{rock|items_tiles:238|Small rock|31|1|||||||||}; -{gem1|items_tiles:210|Glass gem|31|2|||||||||}; -{gem2|items_tiles:211|Ruby gem|31|6|||||||||}; -{gem3|items_tiles:212|Polished gem|31|8|||||||||}; -{gem4|items_tiles:213|Sharpened gem|31|13|||||||||}; -{gem5|items_tiles:215|Polished sparkling gem|31|15|||||||||}; -{gem6|items_tiles:214|Shimmering gem|31|26|||||||||}; -{gem8|items_tiles:330|Brilliant gem|31|68|||||||||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{clay|items_tiles:289|Lump of clay|31|1|||||||||||||||||||||||||||||||||}; +{rock|items_tiles:238|Small rock|31|1|||||||||||||||||||||||||||||||||}; +{gem1|items_tiles:210|Glass gem|31|2|||||||||||||||||||||||||||||||||}; +{gem2|items_tiles:211|Ruby gem|31|6|||||||||||||||||||||||||||||||||}; +{gem3|items_tiles:212|Polished gem|31|8|||||||||||||||||||||||||||||||||}; +{gem4|items_tiles:213|Sharpened gem|31|13|||||||||||||||||||||||||||||||||}; +{gem5|items_tiles:215|Polished sparkling gem|31|15|||||||||||||||||||||||||||||||||}; +{gem6|items_tiles:214|Shimmering gem|31|26|||||||||||||||||||||||||||||||||}; +{gem8|items_tiles:330|Brilliant gem|31|68|||||||||||||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{tail_caverat|items_tiles:103|Cave rat tail|31|0|||||||||}; -{tail_trainingrat|items_tiles:103|Small rat tail|31|0|||||||||}; -{rest|items_tiles:33|Potion of restoration|20|0|99||||||||}; -{ring_mikhail|items_tiles:266|Mikhail\'s ring|7|15|||10||||||}; -{neck_irogotu|items_tiles:273|Irogotu\'s necklace|6|30|||||||5|1|}; -{ring_gandir|items_tiles:266|Gandir\'s ring|31|0|||||||||}; -{dagger_venom|items_tiles:87|Venomous Dagger|0|15||4|20|20|3|1-2|||}; -{key_luthor|items_tiles:231|Key of Luthor|31|0|||||||||}; -{calomyran_secrets|items_tiles:406|Calomyran secrets|31|0|||||||||}; -{heartstone|items_tiles:216|Heartstone|31|40|||||||||}; -{vacor_spell|items_tiles:248|Piece of Vacor\'s spell|31|0|||||||||}; -{ring_unzel|items_tiles:266|Unzel\'s ring|31|0|||||||||}; -{ring_vacor|items_tiles:266|Vacor\'s ring|31|0|||||||||}; -{boots_unzel|items_tiles:197|Unzel\'s defensive boots|5|185|||||||8||}; -{boots_vacor|items_tiles:197|Vacor\'s boots of attack|5|185|||9||||2||}; -{necklace_flagstone|items_tiles:272|Flagstone Warden\'s necklace|31|0|||||||||}; -{packhide|items_tiles:183|Wolfpack\'s animal hide|3|121|||-15||||2|1|}; -{sword_flagstone|items_tiles:77|Flagstone\'s pride|0|169||4|21|10|2|1-6|||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{tail_caverat|items_tiles:103|Cave rat tail|31|0|||||||||||||||||||||||||||||||||}; +{tail_trainingrat|items_tiles:103|Small rat tail|31|0|||||||||||||||||||||||||||||||||}; +{rest|items_tiles:33|Potion of restoration|20|0||||||||||||||1|99|99||||||99|||||||||||}; +{ring_mikhail|items_tiles:266|Mikhail\'s ring|7|15|1|||||10|||||||||||||||||||||||||||}; +{neck_irogotu|items_tiles:273|Irogotu\'s necklace|6|30|1||||||||||5|1|||||||||||||||||||||}; +{ring_gandir|items_tiles:266|Gandir\'s ring|31|0|||||||||||||||||||||||||||||||||}; +{dagger_venom|items_tiles:87|Venomous Dagger|0|15|1||||4|20|20|3|1|2|||||||||||||||||||||||}; +{key_luthor|items_tiles:231|Key of Luthor|31|0|||||||||||||||||||||||||||||||||}; +{calomyran_secrets|items_tiles:406|Calomyran secrets|31|0|||||||||||||||||||||||||||||||||}; +{heartstone|items_tiles:216|Heartstone|31|40|||||||||||||||||||||||||||||||||}; +{vacor_spell|items_tiles:248|Piece of Vacor\'s spell|31|0|||||||||||||||||||||||||||||||||}; +{ring_unzel|items_tiles:266|Unzel\'s ring|31|0|||||||||||||||||||||||||||||||||}; +{ring_vacor|items_tiles:266|Vacor\'s ring|31|0|||||||||||||||||||||||||||||||||}; +{boots_unzel|items_tiles:197|Unzel\'s defensive boots|5|185|1||||||||||8||||||||||||||||||||||}; +{boots_vacor|items_tiles:197|Vacor\'s boots of attack|5|185|1|||||9|||||2||||||||||||||||||||||}; +{necklace_flagstone|items_tiles:272|Flagstone Warden\'s necklace|31|0|||||||||||||||||||||||||||||||||}; +{packhide|items_tiles:183|Wolfpack\'s animal hide|3|121|1|||||-15|||||2|1|||||||||||||||||||||}; +{sword_flagstone|items_tiles:77|Flagstone\'s pride|0|169|1||||4|21|10|2|1|6|||||||||||||||||||||||}; -[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|]; -{armor_chain1|items_tiles:185|Rusty chain mail|3|3629|||-10||||20||}; -{armor_chain2|items_tiles:185|Ordinary chain mail|3|4191|||-5||||22||}; -{hat_leather1|items_tiles:192|Hardened leather cap|2|261|||-2||||7||}; -{sleepingmead|items_tiles:51|Prepared sleepy mead|31|0|||||||||}; -{ffguard_qitem|items_tiles:266|Feygard patrol ring|31|0|||||||||}; -{shield6|items_tiles:171|Wooden tower shield|1|952|||-8||||12||}; -{shield7|items_tiles:171|Strong wooden tower shield|1|1538|||-8||||14||}; -{club_wood1|items_tiles:128|Heavy iron club|0|950||8|15|5|3|2-11|||}; -{club_wood2|items_tiles:128|Balanced heavy iron club|0|2194||7|10|10|3|2-11|||}; -{gloves_grip|items_tiles:203|Gloves of better grip|4|471|||9||||1||}; -{gloves_fancy|items_tiles:203|Fancy gloves|4|78|||5||||||}; -{ring_crit1|items_tiles:266|Ring of strike|7|2921||||5|||||}; -{ring_crit2|items_tiles:266|Ring of vicious strike|7|3455|||-10|7|||||}; -{armor_stone|items_tiles:185|Stone Cuirass|3|52||2|||||22|1|}; -{ring_shadow0|items_tiles:268|Ring of lesser shadows|7|612|||15|5||3|||}; +[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|]; +{armor_chain1|items_tiles:185|Rusty chain mail|3|3629|1|||||-10|||||20||||||||||||||||||||||}; +{armor_chain2|items_tiles:185|Ordinary chain mail|3|4191|1|||||-5|||||22||||||||||||||||||||||}; +{hat_leather1|items_tiles:192|Hardened leather cap|2|261|1|||||-2|||||7||||||||||||||||||||||}; +{sleepingmead|items_tiles:51|Prepared sleepy mead|31|0|||||||||||||||||||||||||||||||||}; +{ffguard_qitem|items_tiles:266|Feygard patrol ring|31|0|||||||||||||||||||||||||||||||||}; +{shield6|items_tiles:171|Wooden tower shield|1|952|1|||||-8|||||12||||||||||||||||||||||}; +{shield7|items_tiles:171|Strong wooden tower shield|1|1538|1|||||-8|||||14||||||||||||||||||||||}; +{club_wood1|items_tiles:128|Heavy iron club|0|950|1||||8|15|5|3|2|11|||||||||||||||||||||||}; +{club_wood2|items_tiles:128|Balanced heavy iron club|0|2194|1||||7|10|10|3|2|11|||||||||||||||||||||||}; +{gloves_grip|items_tiles:203|Gloves of better grip|4|471|1|||||9|||||1||||||||||||||||||||||}; +{gloves_fancy|items_tiles:203|Fancy gloves|4|78|1|||||5|||||||||||||||||||||||||||}; +{ring_crit1|items_tiles:266|Ring of strike|7|2921|1||||||5||||||||||||||||||||||||||}; +{ring_crit2|items_tiles:266|Ring of vicious strike|7|3455|1|||||-10|7||||||||||||||||||||||||||}; +{armor_stone|items_tiles:185|Stone Cuirass|3|52|1||||2||||||22|1|||||||||||||||||||||}; +{ring_shadow0|items_tiles:268|Ring of lesser shadows|7|612|1|||||15|5||3|3|||||||||||||||||||||||}; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java index 20c4d3bab..f38549544 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java @@ -15,7 +15,7 @@ import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection; import com.gpl.rpg.AndorsTrail.model.map.MapCollection; import com.gpl.rpg.AndorsTrail.model.quest.QuestCollection; import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.L; public final class ConversationCollection { @@ -47,9 +47,9 @@ public final class ConversationCollection { } public void initialize(ItemTypeCollection itemTypes, DropListCollection droplists, String phraselist) { - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(phraselist); + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(phraselist); while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); + String[] parts = rowMatcher.group(1).split(ResourceFileParser.columnSeparator, -1); if (parts.length < 19) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { if (parts.length > 2) { @@ -110,7 +110,7 @@ public final class ConversationCollection { , parts[startIndex+1] , QuestProgress.parseQuestProgress(parts[startIndex+2]) , requiresItemTypeID - , ResourceLoader.parseInt(parts[startIndex+4], 0) + , ResourceFileParser.parseInt(parts[startIndex+4], 0) ); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java index 86de06a5e..c076c6ad9 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java @@ -1,14 +1,11 @@ package com.gpl.rpg.AndorsTrail.model.ability; import java.util.ArrayList; +import java.util.regex.Matcher; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.VisualEffectCollection; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; -import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits; -import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits; import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; -import com.gpl.rpg.AndorsTrail.util.ConstRange; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.L; public class ActorConditionTypeCollection { @@ -24,7 +21,37 @@ public class ActorConditionTypeCollection { return null; } - public void initialize(DynamicTileLoader tileLoader) { + public void initialize(DynamicTileLoader tileLoader, String conditionList) { + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(conditionList); + while(rowMatcher.find()) { + String[] parts = rowMatcher.group(1).split(ResourceFileParser.columnSeparator, -1); + if (parts.length < 28) continue; + + final String conditionTypeID = parts[0]; + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + if (conditionTypeID == null || conditionTypeID.length() <= 0) { + L.log("OPTIMIZE: ActorConditionType \"" + parts[1] + "\" has empty searchtag."); + } + for (ActorConditionType t : conditionTypes) { + if (t.conditionTypeID.equals(conditionTypeID)) { + L.log("OPTIMIZE: ActorConditionType " + conditionTypeID + " is duplicated."); + break; + } + } + } + + final ActorConditionType actorConditionType = new ActorConditionType( + conditionTypeID + , parts[1] + , ResourceFileParser.parseImageID(tileLoader, parts[2]) + , ResourceFileParser.parseBoolean(parts[3], false) + , ResourceFileParser.parseStatsModifierTraits(parts, 4) + , ResourceFileParser.parseStatsModifierTraits(parts, 10) + , ResourceFileParser.parseAbilityModifierTraits(parts, 16) + ); + conditionTypes.add(actorConditionType); + } + /* CombatTraits t = new CombatTraits(); t.attackChance = 5; conditionTypes.add(new ActorConditionType("bless", "Bless", tileLoader.prepareTileID("items_tiles", 13+22*14), false, null, null, new AbilityModifierTraits(0, 0, 0, t))); @@ -35,5 +62,6 @@ public class ActorConditionTypeCollection { conditionTypes.add(new ActorConditionType("regen", "Regeneration", tileLoader.prepareTileID("items_tiles", 7+22*14), false, new StatsModifierTraits(VisualEffectCollection.EFFECT_RESTORE_HP, new ConstRange(1, 1), null), null, null)); conditionTypes.add(new ActorConditionType("poison", "Poison", tileLoader.prepareTileID("items_tiles", 4+24*14), true, new StatsModifierTraits(VisualEffectCollection.EFFECT_POISON, new ConstRange(-1, -1), null), null, null)); + */ } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/traits/StatsModifierTraits.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/traits/StatsModifierTraits.java index efc95218a..724067671 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/traits/StatsModifierTraits.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/traits/StatsModifierTraits.java @@ -3,7 +3,7 @@ package com.gpl.rpg.AndorsTrail.model.ability.traits; import com.gpl.rpg.AndorsTrail.util.ConstRange; public class StatsModifierTraits { - private static final int VISUAL_EFFECT_NONE = -1; + public static final int VISUAL_EFFECT_NONE = -1; public final int visualEffectID; public final ConstRange currentHPBoost; public final ConstRange currentAPBoost; 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 576a0bdde..00a4299af 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java @@ -14,7 +14,7 @@ import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; import com.gpl.rpg.AndorsTrail.model.item.DropListCollection; import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse; import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; import com.gpl.rpg.AndorsTrail.util.Size; @@ -48,9 +48,9 @@ public final class MonsterTypeCollection { private static final Size size1x1 = new Size(1, 1); public void initialize(DropListCollection droplists, DynamicTileLoader tileLoader, String monsterlist) { int nextId = monsterTypes.size(); - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(monsterlist); + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(monsterlist); while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); + String[] parts = rowMatcher.group(1).split(ResourceFileParser.columnSeparator, -1); if (parts.length < 17) continue; final String monsterTypeName = parts[1]; @@ -61,19 +61,19 @@ public final class MonsterTypeCollection { } } - final int maxHP = ResourceLoader.parseInt(parts[5], 1); - final int maxAP = ResourceLoader.parseInt(parts[6], 10); - final CombatTraits combatTraits = ResourceLoader.parseCombatTraits(parts, 8); + final int maxHP = ResourceFileParser.parseInt(parts[5], 1); + final int maxAP = ResourceFileParser.parseInt(parts[6], 10); + final CombatTraits combatTraits = parseCombatTraits_OLD(parts, 8); final int exp = getExpectedMonsterExperience(combatTraits, maxHP, maxAP); monsterTypes.add(new MonsterType( nextId , monsterTypeName , parts[2] - , ResourceLoader.parseImageID(tileLoader, parts[0]) - , ResourceLoader.parseSize(parts[3], size1x1) //TODO: This could be loaded from the tileset size instead. + , ResourceFileParser.parseImageID(tileLoader, parts[0]) + , ResourceFileParser.parseSize(parts[3], size1x1) //TODO: This could be loaded from the tileset size instead. , maxHP // HP , maxAP // AP - , ResourceLoader.parseInt(parts[7], 10) // MoveCost + , ResourceFileParser.parseInt(parts[7], 10) // MoveCost , combatTraits , null // onHitEffects , exp //ResourceLoader.parseInt(parts[4], 0) // Exp @@ -85,12 +85,44 @@ public final class MonsterTypeCollection { } } + public static CombatTraits parseCombatTraits_OLD(String[] parts, int startIndex) { + String AtkCost = parts[startIndex]; + String AtkPct = parts[startIndex + 1]; + String CritPct = parts[startIndex + 2]; + String CritMult = parts[startIndex + 3]; + String DMG = parts[startIndex + 4]; + String BlkPct = parts[startIndex + 5]; + String DMG_res = parts[startIndex + 6]; + if ( AtkCost.length() <= 0 + && AtkPct.length() <= 0 + && CritPct.length() <= 0 + && CritMult.length() <= 0 + && DMG.length() <= 0 + && BlkPct.length() <= 0 + && DMG_res.length() <= 0 + ) { + return null; + } else { + CombatTraits result = new CombatTraits(); + result.attackCost = ResourceFileParser.parseInt(AtkCost, 0); + result.attackChance = ResourceFileParser.parseInt(AtkPct, 0); + result.criticalChance = ResourceFileParser.parseInt(CritPct, 0); + result.criticalMultiplier = ResourceFileParser.parseInt(CritMult, 0); + ConstRange r = ResourceFileParser.parseRange_OLD(DMG); + if (r != null) result.damagePotential.set(r); + result.blockChance = ResourceFileParser.parseInt(BlkPct, 0); + result.damageResistance = ResourceFileParser.parseInt(DMG_res, 0); + return result; + } + } + + public void DEBUG_initializeTestEffectMonsters(WorldContext world) { MonsterType t = getMonsterTypeFromName("Forest Snake"); if (t == null) return; t.onHitEffects = new ItemTraits_OnUse[] { new ItemTraits_OnUse(null, null, null, new ActorConditionEffect[] { - new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison"), 1, 3, new ConstRange(1, 1)) + new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison_weak"), 1, 3, new ConstRange(1, 1)) }) }; } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java index 12a2d1635..e7f13984d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java @@ -7,7 +7,7 @@ import java.util.regex.Matcher; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; @@ -27,42 +27,21 @@ public final class DropListCollection { return droplists.get(name); } - private final ConstRange one = new ConstRange(1, 1); - private final ConstRange ten = new ConstRange(10, 10); - private final ConstRange five = new ConstRange(5, 5); - private ConstRange parseQuantity(String v) { + private static final ConstRange one = new ConstRange(1, 1); + private static final ConstRange ten = new ConstRange(10, 10); + private static final ConstRange five = new ConstRange(5, 5); + private static ConstRange parseQuantity_OLD(String v) { if (v.equals("1")) return one; else if (v.equals("5")) return five; else if (v.equals("10")) return ten; - return ResourceLoader.parseRange(v); + return ResourceFileParser.parseRange_OLD(v); } - private final ConstRange always = one; - private final ConstRange often = new ConstRange(100, 70); - private final ConstRange animalpart = new ConstRange(100, 30); - private final ConstRange seldom = new ConstRange(100, 25); - private final ConstRange very_seldom = new ConstRange(100, 5); - private final ConstRange unique = new ConstRange(100, 1); - private ConstRange parseChance(String v) { - if (v.equals("100")) return always; - else if (v.equals("70")) return often; - else if (v.equals("30")) return animalpart; - else if (v.equals("25")) return seldom; - else if (v.equals("5")) return very_seldom; - else if (v.equals("1")) return unique; - else if (v.indexOf('/') >= 0) { - int c = v.indexOf('/'); - int a = ResourceLoader.parseInt(v.substring(0, c), 1); - int b = ResourceLoader.parseInt(v.substring(c+1), 100); - return new ConstRange(b, a); - } - else return new ConstRange(100, ResourceLoader.parseInt(v, 10)); - } public void initialize(ItemTypeCollection itemTypes, String droplistString) { HashMap > rows = new HashMap >(); - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(droplistString); + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(droplistString); while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); + String[] parts = ResourceFileParser.splitColumns_OLD(rowMatcher.group(1), 4);//.split(ResourceFileParser.columnSeparator, -1); if (parts.length < 4) continue; final String droplistID = parts[0]; @@ -78,8 +57,8 @@ public final class DropListCollection { if (!rows.containsKey(droplistID)) rows.put(droplistID, new ArrayList()); rows.get(droplistID).add(new DropItem( itemTypes.getItemTypeByTag(parts[1]) - , parseChance(parts[2]) - , parseQuantity(parts[3]) + , ResourceFileParser.parseChance(parts[2]) + , parseQuantity_OLD(parts[3]) )); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java index e3c180868..191ce8878 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java @@ -1,15 +1,16 @@ package com.gpl.rpg.AndorsTrail.model.item; import java.util.ArrayList; -import java.util.regex.Matcher; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.WorldContext; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectFieldParser; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokenizer; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; @@ -32,76 +33,68 @@ public final class ItemTypeCollection { return null; } - public void initialize(DynamicTileLoader tileLoader, String itemlist) { - int nextId = itemTypes.size(); - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(itemlist); - while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); - if (parts.length < 13) continue; - - final String itemTypeName = parts[2]; - String searchTag = parts[0]; - if (searchTag == null || searchTag.length() <= 0) { - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("OPTIMIZE: ItemType \"" + itemTypeName + "\" has empty searchtag."); + + private static ResourceObjectTokenizer tokenize37Fields = new ResourceObjectTokenizer(37); + public void initialize(final DynamicTileLoader tileLoader, final ActorConditionTypeCollection actorConditionTypes, String itemlist) { + tokenize37Fields.tokenizeRows(itemlist, new ResourceObjectFieldParser() { + @Override + public void matchedRow(String[] parts) { + final String itemTypeName = parts[2]; + String searchTag = parts[0]; + if (searchTag == null || searchTag.length() <= 0) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: ItemType \"" + itemTypeName + "\" has empty searchtag."); + } + searchTag = itemTypeName; } - searchTag = itemTypeName; + + ItemTraits_OnEquip equipEffect = ResourceFileParser.parseItemTraits_OnEquip(actorConditionTypes, parts, 5); + ItemTraits_OnUse useEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 18, false); + ItemTraits_OnUse hitEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 24, true); + ItemTraits_OnUse killEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 31, false); + + int nextId = itemTypes.size(); + final ItemType itemType = new ItemType( + nextId + , ResourceFileParser.parseImageID(tileLoader, parts[1]) + , itemTypeName + , searchTag + , Integer.parseInt(parts[3]) + , Integer.parseInt(parts[4]) + , equipEffect + , useEffect + , hitEffect + , killEffect + ); + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + if (itemType.isEquippable()) { + if (itemType.effects_equip == null && itemType.effects_hit == null && itemType.effects_kill == null ) { + L.log("OPTIMIZE: Item " + searchTag + " is equippable, but has no equip effect."); + } + } else { + if (itemType.effects_equip != null || itemType.effects_hit != null || itemType.effects_kill != null ) { + L.log("OPTIMIZE: Item " + searchTag + " is not equippable, but has equip, hit or kill effect."); + } + } + if (itemType.isUsable()) { + if (itemType.effects_use == null) { + L.log("OPTIMIZE: Item " + searchTag + " is usable, but has no use effect."); + } + } else { + if (itemType.effects_use != null) { + L.log("OPTIMIZE: Item " + searchTag + " is not usable, but has use effect."); + } + } + } + itemTypes.add(itemType); + + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + if (getItemTypeByTag(searchTag).id != nextId) { + L.log("OPTIMIZE: Item " + searchTag + " may be duplicated."); + } + } } - - final ConstRange hpEffect = ResourceLoader.parseRange(parts[5]); - ItemTraits_OnUse useTraits = null; - if (hpEffect != null) { - useTraits = new ItemTraits_OnUse(hpEffect, null, null, null); - } - - final CombatTraits combatTraits = ResourceLoader.parseCombatTraits(parts, 6); - ItemTraits_OnEquip equipTraits = null; - if (combatTraits != null) { - equipTraits = new ItemTraits_OnEquip(0, 0, 0, combatTraits, null); - } - - final ItemType itemType = new ItemType( - nextId - , ResourceLoader.parseImageID(tileLoader, parts[1]) - , itemTypeName - , searchTag - , Integer.parseInt(parts[3]) - , Integer.parseInt(parts[4]) - , equipTraits - , useTraits - , null - , null - ); - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (itemType.isEquippable()) { - if (itemType.effects_equip == null && itemType.effects_hit == null && itemType.effects_kill == null ) { - L.log("OPTIMIZE: Item " + searchTag + " is equippable, but has no equip effect."); - } - } else { - if (itemType.effects_equip != null || itemType.effects_hit != null || itemType.effects_kill != null ) { - L.log("OPTIMIZE: Item " + searchTag + " is not equippable, but has equip, hit or kill effect."); - } - } - if (itemType.isUsable()) { - if (itemType.effects_use == null) { - L.log("OPTIMIZE: Item " + searchTag + " is usable, but has no use effect."); - } - } else { - if (itemType.effects_use != null) { - L.log("OPTIMIZE: Item " + searchTag + " is not usable, but has use effect."); - } - } - } - itemTypes.add(itemType); - - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (getItemTypeByTag(searchTag).id != nextId) { - L.log("OPTIMIZE: Item " + searchTag + " may be duplicated."); - } - } - - ++nextId; - } + }); } public void initialize_DEBUGITEMS(WorldContext world) { @@ -242,7 +235,7 @@ public final class ItemTypeCollection { ++nextId; effects = new ActorConditionEffect[] { - new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison"), 1, 3, new ConstRange(3, 2)) + new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison_weak"), 1, 3, new ConstRange(3, 2)) }; itemType = new ItemType( nextId @@ -262,7 +255,7 @@ public final class ItemTypeCollection { ItemType health_minor = getItemTypeByTag("health_minor"); effects = new ActorConditionEffect[] { - new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison"), 1, 4, new ConstRange(1,1)) + new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison_weak"), 1, 4, new ConstRange(1,1)) }; itemType = new ItemType( nextId @@ -280,7 +273,7 @@ public final class ItemTypeCollection { ++nextId; effects = new ActorConditionEffect[] { - new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison"), ActorCondition.MAGNITUDE_REMOVE_ALL, 0, new ConstRange(1,1)) + new ActorConditionEffect(world.actorConditionsTypes.getActorConditionType("poison_weak"), ActorCondition.MAGNITUDE_REMOVE_ALL, 0, new ConstRange(1,1)) }; itemType = new ItemType( nextId diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestLoader.java index f9246fa18..da2cb6163 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestLoader.java @@ -7,16 +7,16 @@ import java.util.HashMap; import java.util.regex.Matcher; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.L; public final class QuestLoader { private HashMap > parsedQuestLogEntries = new HashMap >(); public void parseQuestLogsFromString(String questLogEntrylist) { - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(questLogEntrylist); + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(questLogEntrylist); while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); + String[] parts = rowMatcher.group(1).split(ResourceFileParser.columnSeparator, -1); if (parts.length < 4) continue; final String questID = parts[0]; @@ -29,19 +29,19 @@ public final class QuestLoader { if (!parsedQuestLogEntries.containsKey(questID)) parsedQuestLogEntries.put(questID, new ArrayList()); parsedQuestLogEntries.get(questID).add(new QuestLogEntry( - ResourceLoader.parseInt(parts[1], 0) + ResourceFileParser.parseInt(parts[1], 0) , parts[2] - , ResourceLoader.parseInt(parts[3], 0) - , ResourceLoader.parseInt(parts[4], 0)>0 + , ResourceFileParser.parseInt(parts[3], 0) + , ResourceFileParser.parseInt(parts[4], 0)>0 )); } } private ArrayList parsedQuests = new ArrayList(); public void parseQuestsFromString(String questlist) { - Matcher rowMatcher = ResourceLoader.rowPattern.matcher(questlist); + Matcher rowMatcher = ResourceFileParser.rowPattern.matcher(questlist); while(rowMatcher.find()) { - String[] parts = rowMatcher.group(1).split(ResourceLoader.columnSeparator, -1); + String[] parts = rowMatcher.group(1).split(ResourceFileParser.columnSeparator, -1); if (parts.length < 4) continue; final String questID = parts[0]; @@ -79,7 +79,7 @@ public final class QuestLoader { questID , parts[1] , _stages - , ResourceLoader.parseInt(parts[3], 0)>0 + , ResourceFileParser.parseInt(parts[3], 0)>0 )); } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java index 84328565a..00938e830 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java @@ -1,7 +1,7 @@ package com.gpl.rpg.AndorsTrail.model.quest; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.resource.ResourceLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; import com.gpl.rpg.AndorsTrail.util.L; public final class QuestProgress { @@ -17,7 +17,7 @@ public final class QuestProgress { String[] parts = v.split(":"); int requiresQuestProgress = 0; if (parts.length >= 2) { - requiresQuestProgress = ResourceLoader.parseInt(parts[1], 0); + requiresQuestProgress = ResourceFileParser.parseInt(parts[1], 0); } else if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { L.log("WARNING: Quest progress \"" + v + "\" does not specify any progress stage."); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java new file mode 100644 index 000000000..3b78e4e44 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java @@ -0,0 +1,347 @@ +package com.gpl.rpg.AndorsTrail.resource; + +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; +import com.gpl.rpg.AndorsTrail.model.CombatTraits; +import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; +import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits; +import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits; +import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnEquip; +import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse; +import com.gpl.rpg.AndorsTrail.util.ConstRange; +import com.gpl.rpg.AndorsTrail.util.L; +import com.gpl.rpg.AndorsTrail.util.Size; + +public class ResourceFileParser { + public static final Pattern rowPattern = Pattern.compile("\\{(.+?)\\};", Pattern.MULTILINE | Pattern.DOTALL); + public static final String columnSeparator = "\\|"; + public static String repeat(String s, int count) { + String result = s; + for(int i = 1; i < count; ++i) result += s; + return result; + } + + public static int parseImageID(DynamicTileLoader tileLoader, String s) { + String[] parts = s.split(":"); + return tileLoader.prepareTileID(parts[0], Integer.parseInt(parts[1])); + } + public static ConstRange parseRange(String min, String max) { + if ( (max == null || max.length() <= 0) + && (min == null || min.length() <= 0) ) { + return null; + } + if (max == null || max.length() <= 0) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Unable to parse range with min=" + min + " because max was empty."); + } + return null; + } + if (min == null || min.length() <= 0) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Unable to parse range with max=" + max + " because min was empty."); + } + return null; + } + + return new ConstRange(Integer.parseInt(max), Integer.parseInt(min)); + } + public static Size parseSize(String s, final Size defaultSize) { + if (s == null || s.length() <= 0) return defaultSize; + String[] parts = s.split("x"); + if (parts.length < 2) return defaultSize; + return new Size(Integer.parseInt(parts[0]), Integer.parseInt(parts[1])); + } + public static CombatTraits parseCombatTraits(String[] parts, int startIndex) { + String attackCost = parts[startIndex]; + String attackChance = parts[startIndex + 1]; + String criticalChance = parts[startIndex + 2]; + String criticalMultiplier = parts[startIndex + 3]; + ConstRange attackDamage = parseRange(parts[startIndex + 4], parts[startIndex + 5]); + String blockChance = parts[startIndex + 6]; + String damageResistance = parts[startIndex + 7]; + if ( attackCost.length() <= 0 + && attackChance.length() <= 0 + && criticalChance.length() <= 0 + && criticalMultiplier.length() <= 0 + && attackDamage == null + && blockChance.length() <= 0 + && damageResistance.length() <= 0 + ) { + return null; + } else { + CombatTraits result = new CombatTraits(); + result.attackCost = parseInt(attackCost, 0); + result.attackChance = parseInt(attackChance, 0); + result.criticalChance = parseInt(criticalChance, 0); + result.criticalMultiplier = parseInt(criticalMultiplier, 0); + if (attackDamage != null) result.damagePotential.set(attackDamage); + result.blockChance = parseInt(blockChance, 0); + result.damageResistance = parseInt(damageResistance, 0); + return result; + } + } + public static int parseInt(String s, int defaultValue) { + if (s == null || s.length() <= 0) return defaultValue; + return Integer.parseInt(s); + } + public static boolean parseBoolean(String s, boolean defaultValue) { + if (s == null || s.length() <= 0) return defaultValue; + return !s.equals("0") && !s.equals("false"); + } + public static StatsModifierTraits parseStatsModifierTraits(String[] parts, int startIndex) { + boolean hasEffect = parseBoolean(parts[startIndex], false); + if (!hasEffect) return null; + + String visualEffectID = parts[startIndex + 1]; + ConstRange boostCurrentHP = parseRange(parts[startIndex + 2], parts[startIndex + 3]); + ConstRange boostCurrentAP = parseRange(parts[startIndex + 4], parts[startIndex + 5]); + if ( boostCurrentHP == null + && boostCurrentAP == null + ) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Tried to parseStatsModifierTraits , where hasEffect=" + parts[startIndex] + ", but all data was empty."); + } + return null; + } else { + return new StatsModifierTraits( + parseInt(visualEffectID, StatsModifierTraits.VISUAL_EFFECT_NONE) + ,boostCurrentHP + ,boostCurrentAP + ); + } + } + + public static AbilityModifierTraits parseAbilityModifierTraits(String[] parts, int startIndex) { + boolean hasEffect = parseBoolean(parts[startIndex], false); + if (!hasEffect) return null; + + String boostMaxHP = parts[startIndex + 1]; + String boostMaxAP = parts[startIndex + 2]; + String moveCostPenalty = parts[startIndex + 3]; + CombatTraits combatTraits = parseCombatTraits(parts, startIndex + 4); + + if ( boostMaxHP.length() <= 0 + && boostMaxAP.length() <= 0 + && moveCostPenalty.length() <= 0 + && combatTraits == null + ) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Tried to parseAbilityModifierTraits , where hasEffect=" + parts[startIndex] + ", but all data was empty."); + } + return null; + } else { + return new AbilityModifierTraits( + parseInt(boostMaxHP, 0) + ,parseInt(boostMaxAP, 0) + ,parseInt(moveCostPenalty, 0) + ,combatTraits + ); + } + } + + + public static ConstRange parseRange_OLD(String s) { + if (s == null || s.length() <= 0) return null; + String[] parts = s.split("-"); + if (parts.length < 2 || s.startsWith("-")) { + int val = Integer.parseInt(s); + return new ConstRange(val, val); + } else { + return new ConstRange(Integer.parseInt(parts[1]), Integer.parseInt(parts[0])); + } + } + + private static final ConstRange zero_or_one = new ConstRange(1, 0); + private static final ConstRange one = new ConstRange(1, 1); + private static final ConstRange five = new ConstRange(5, 5); + private static final ConstRange ten = new ConstRange(10, 10); + public static ConstRange parseQuantity(String min, String max) { + if (min.equals("0") && max.equals("1")) return zero_or_one; + else if (min.equals("1") && max.equals("1")) return one; + else if (min.equals("5") && max.equals("5")) return five; + else if (min.equals("10") && max.equals("10")) return ten; + return parseRange(min, max); + } + + private static final ConstRange always = one; + private static final ConstRange often = new ConstRange(100, 70); + private static final ConstRange animalpart = new ConstRange(100, 30); + private static final ConstRange seldom = new ConstRange(100, 25); + private static final ConstRange very_seldom = new ConstRange(100, 5); + private static final ConstRange unique = new ConstRange(100, 1); + public static ConstRange parseChance(String v) { + if (v.equals("100")) return always; + else if (v.equals("70")) return often; + else if (v.equals("30")) return animalpart; + else if (v.equals("25")) return seldom; + else if (v.equals("5")) return very_seldom; + else if (v.equals("1")) return unique; + else if (v.indexOf('/') >= 0) { + int c = v.indexOf('/'); + int a = parseInt(v.substring(0, c), 1); + int b = parseInt(v.substring(c+1), 100); + return new ConstRange(b, a); + } + else return new ConstRange(100, parseInt(v, 10)); + } + + private static ActorConditionEffect parseActorConditionEffect(ActorConditionTypeCollection actorConditionTypes, String[] parts, boolean includeDuration) { + if (includeDuration) { + return new ActorConditionEffect( + actorConditionTypes.getActorConditionType(parts[0]) + , parseInt(parts[1], ActorCondition.MAGNITUDE_REMOVE_ALL) + , parseInt(parts[2], ActorCondition.DURATION_FOREVER) + , parseChance(parts[3]) + ); + } else { + return new ActorConditionEffect( + actorConditionTypes.getActorConditionType(parts[0]) + , parseInt(parts[1], 1) + , ActorCondition.DURATION_FOREVER + , always + ); + } + } + + private static class ActorConditionTypeArrayAppender implements ResourceObjectFieldParser { + private final ActorConditionTypeCollection actorConditionTypes; + private final ArrayList dest; + private final boolean includeDuration; + public ActorConditionTypeArrayAppender(ActorConditionTypeCollection actorConditionTypes, ArrayList dest, boolean includeDuration) { + this.actorConditionTypes = actorConditionTypes; + this.dest = dest; + this.includeDuration = includeDuration; + } + @Override + public void matchedRow(String[] parts) { + ActorConditionEffect a = parseActorConditionEffect(actorConditionTypes, parts, includeDuration); + if (a != null) dest.add(a); + } + } + private static final ResourceObjectTokenizer tokenize4Fields = new ResourceObjectTokenizer(4); + public static ItemTraits_OnUse parseItemTraits_OnUse(final ActorConditionTypeCollection actorConditionTypes, String[] parts, int startIndex, boolean parseTargetConditions) { + boolean hasEffect = parseBoolean(parts[startIndex], false); + if (!hasEffect) return null; + + ConstRange boostCurrentHP = parseRange(parts[startIndex + 1], parts[startIndex + 2]); + ConstRange boostCurrentAP = parseRange(parts[startIndex + 3], parts[startIndex + 4]); + final ArrayList addedConditions_source = new ArrayList(); + final ArrayList addedConditions_target = new ArrayList(); + ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 5], tokenize4Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions_source, true)); + if (parseTargetConditions) { + ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 6], tokenize4Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions_target, true)); + } + if ( boostCurrentHP == null + && boostCurrentAP == null + && addedConditions_source.isEmpty() + && addedConditions_target.isEmpty() + ) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Tried to parseItemTraits_OnUse , where hasEffect=" + parts[startIndex] + ", but all data was empty."); + } + return null; + } else { + return new ItemTraits_OnUse( + boostCurrentHP + ,boostCurrentAP + ,listToArray(addedConditions_source) + ,listToArray(addedConditions_target) + ); + } + } + + private static final ResourceObjectTokenizer tokenize2Fields = new ResourceObjectTokenizer(2); + public static ItemTraits_OnEquip parseItemTraits_OnEquip(final ActorConditionTypeCollection actorConditionTypes, String[] parts, int startIndex) { + boolean hasEffect = parseBoolean(parts[startIndex], false); + if (!hasEffect) return null; + + String boostMaxHP = parts[startIndex + 1]; + String boostMaxAP = parts[startIndex + 2]; + String moveCostPenalty = parts[startIndex + 3]; + CombatTraits combatTraits = parseCombatTraits(parts, startIndex + 4); + final ArrayList addedConditions = new ArrayList(); + ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 12], tokenize2Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions, false)); + + if ( boostMaxHP.isEmpty() + && boostMaxAP.isEmpty() + && moveCostPenalty.isEmpty() + && combatTraits == null + && addedConditions.isEmpty() + ) { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + L.log("OPTIMIZE: Tried to parseItemTraits_OnEquip , where hasEffect=" + parts[startIndex] + ", but all data was empty."); + } + return null; + } else { + return new ItemTraits_OnEquip( + parseInt(boostMaxHP, 0) + ,parseInt(boostMaxAP, 0) + ,parseInt(moveCostPenalty, 0) + ,combatTraits + ,listToArray(addedConditions) + ); + } + } + + private static ActorConditionEffect[] listToArray(ArrayList list) { + if (list.isEmpty()) return null; + return list.toArray(new ActorConditionEffect[list.size()]); + } + + public static String[] splitColumns_OLD(String input, int numItems) { + String[] parts = input.split(columnSeparator, -1); + return parts; + } + + public static class ResourceObjectTokenizer { + private static final String fieldPattern = "([^\\|]*?|\\{\\{.*?\\}\\})" + columnSeparator; + + private final int columns; + private final Pattern pattern; + private final String[] parts; + public ResourceObjectTokenizer(int columns) { + this.columns = columns; + this.pattern = Pattern.compile("^" + repeat(fieldPattern, columns) + "$", Pattern.MULTILINE | Pattern.DOTALL); + this.parts = new String[columns]; + } + public void tokenizeRows(String input, ResourceObjectFieldParser parser) { + Matcher rowMatcher = rowPattern.matcher(input); + while (rowMatcher.find()) { + tokenizeRow(rowMatcher.group(1), parser); + } + } + public void tokenizeRow(String input, ResourceObjectFieldParser parser) { + Matcher groups = pattern.matcher(input); + if (!groups.find()) return; + if (groups.groupCount() < columns) return; + for(int i = 0; i < columns; ++i) { + parts[i] = groups.group(i + 1); + } + parser.matchedRow(parts); + } + } + + public static class ResourceObjectArrayTokenizer { + private static final Pattern outerPattern = Pattern.compile("^\\{(.*)\\}$", Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern innerPattern = Pattern.compile("\\{(.*?)\\}", Pattern.MULTILINE | Pattern.DOTALL); + + public static void tokenize(String input, ResourceObjectTokenizer objectTokenizer, ResourceObjectFieldParser parser) { + Matcher matcher = outerPattern.matcher(input); + if (!matcher.find()) return; + + matcher = innerPattern.matcher(matcher.group(1)); + while (matcher.find()) { + objectTokenizer.tokenizeRow(matcher.group(1), parser); + } + } + } + + public interface ResourceObjectFieldParser { + void matchedRow(String[] parts); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java index a8eb442dd..e04fdeda4 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java @@ -1,15 +1,11 @@ package com.gpl.rpg.AndorsTrail.resource; -import java.util.regex.Pattern; - import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.R; import com.gpl.rpg.AndorsTrail.context.WorldContext; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection; import com.gpl.rpg.AndorsTrail.model.map.TMXMapReader; import com.gpl.rpg.AndorsTrail.model.quest.QuestLoader; -import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.Size; import android.content.res.Resources; @@ -49,29 +45,29 @@ public final class ResourceLoader { // ======================================================================== // Load condition types loader.prepareTileset(R.drawable.items_tiles, "items_tiles", new Size(14, 30), defaultTileSize); - world.actorConditionsTypes.initialize(loader); + world.actorConditionsTypes.initialize(loader, r.getString(R.string.actorconditions_v069)); loader.flush(); // ======================================================================== // Load item icons loader.prepareTileset(R.drawable.items_tiles, "items_tiles", new Size(14, 30), defaultTileSize); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_money)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_money)); assert(world.itemTypes.getItemTypeByTag("gold") != null); assert(world.itemTypes.getItemTypeByTag("gold").id == ItemTypeCollection.ITEMTYPE_GOLD); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_weapons)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_armour)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_weapons)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_armour)); if (AndorsTrailApplication.DEVELOPMENT_DEBUGRESOURCES) { - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_debug)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_debug)); } else { - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_rings)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_necklaces)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_junk)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_food)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_potions)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_animal)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_quest)); - world.itemTypes.initialize(loader, r.getString(R.string.itemlist_v068)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_rings)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_necklaces)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_junk)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_food)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_potions)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_animal)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_quest)); + world.itemTypes.initialize(loader, world.actorConditionsTypes, r.getString(R.string.itemlist_v068)); } loader.flush(); world.itemTypes.initialize_DEBUGITEMS(world); @@ -460,62 +456,4 @@ public final class ResourceLoader { world.verifyData(); } } - - public static final Pattern rowPattern = Pattern.compile("\\{(.+?)\\};", Pattern.MULTILINE | Pattern.DOTALL); - public static final String columnSeparator = "\\|"; - public static int parseImageID(DynamicTileLoader tileLoader, String s) { - String[] parts = s.split(":"); - return tileLoader.prepareTileID(parts[0], Integer.parseInt(parts[1])); - } - public static ConstRange parseRange(String s) { - if (s == null || s.length() <= 0) return null; - String[] parts = s.split("-"); - if (parts.length < 2 || s.startsWith("-")) { - int val = Integer.parseInt(s); - return new ConstRange(val, val); - } else { - return new ConstRange(Integer.parseInt(parts[1]), Integer.parseInt(parts[0])); - } - } - public static Size parseSize(String s, final Size defaultSize) { - if (s == null || s.length() <= 0) return defaultSize; - String[] parts = s.split("x"); - if (parts.length < 2) return defaultSize; - return new Size(Integer.parseInt(parts[0]), Integer.parseInt(parts[1])); - } - public static CombatTraits parseCombatTraits(String[] parts, int startIndex) { - String AtkCost = parts[startIndex]; - String AtkPct = parts[startIndex + 1]; - String CritPct = parts[startIndex + 2]; - String CritMult = parts[startIndex + 3]; - String DMG = parts[startIndex + 4]; - String BlkPct = parts[startIndex + 5]; - String DMG_res = parts[startIndex + 6]; - if ( AtkCost.length() <= 0 - && AtkPct.length() <= 0 - && CritPct.length() <= 0 - && CritMult.length() <= 0 - && DMG.length() <= 0 - && BlkPct.length() <= 0 - && DMG_res.length() <= 0 - ) { - return null; - } else { - CombatTraits result = new CombatTraits(); - result.attackCost = parseInt(AtkCost, 0); - result.attackChance = parseInt(AtkPct, 0); - result.criticalChance = parseInt(CritPct, 0); - result.criticalMultiplier = parseInt(CritMult, 0); - ConstRange r = parseRange(DMG); - if (r != null) result.damagePotential.set(r); - result.blockChance = parseInt(BlkPct, 0); - result.damageResistance = parseInt(DMG_res, 0); - return result; - } - } - public static int parseInt(String s, int defaultValue) { - if (s == null || s.length() <= 0) return defaultValue; - return Integer.parseInt(s); - } - } diff --git a/AndorsTrailEdit/AndorsTrailEditor.js b/AndorsTrailEdit/AndorsTrailEditor.js index 04dee05cf..8c9e5580d 100644 --- a/AndorsTrailEdit/AndorsTrailEditor.js +++ b/AndorsTrailEdit/AndorsTrailEditor.js @@ -283,7 +283,7 @@ function startEditor() { + "hasAbilityEffect|boostMaxHP|boostMaxAP|moveCostPenalty|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|" + "];")) ,quests: new DataStore('quest', new FieldList("[id|name|showInLog|stages[progress|logText|rewardExperience|finishesQuest|]|];")) - ,items: new DataStore('item', new FieldList("[iconID|name|searchTag|category|baseMarketCost|" + ,items: new DataStore('item', new FieldList("[searchTag|iconID|name|category|baseMarketCost|" + "hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|" + "hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|" + "hasHitEffect|hit_boostHP_Min|use_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|" diff --git a/AndorsTrailEdit/DataStore.js b/AndorsTrailEdit/DataStore.js index 06b71b1a6..faac266be 100644 --- a/AndorsTrailEdit/DataStore.js +++ b/AndorsTrailEdit/DataStore.js @@ -42,7 +42,12 @@ function DataStore(objectTypename, fieldList, nameField) { this.onDeserialized = function() { } this.deserialize = function(str) { - this.items = deserializeObjectList(this.fieldList, str); + var header = findHeader(str); + if (!header) { + alert("Could not find header row, cannot deserialize"); + return; + } + this.items = deserializeObjectList(header, str); this.onDeserialized(); } this.serialize = function() { diff --git a/AndorsTrailEdit/FieldList.js b/AndorsTrailEdit/FieldList.js index f8cd32424..9c938eecc 100644 --- a/AndorsTrailEdit/FieldList.js +++ b/AndorsTrailEdit/FieldList.js @@ -54,7 +54,7 @@ function FieldList(header, name) { } } -function findHeader(str, name) { +function findHeader(str) { var match = str.match(FieldList_Header_linePattern); if (!match) return; return new FieldList(match[0]);