Updated ResourceLoader fpr actorconditions and items to read the extended resource files (not done) from the new editor.

git-svn-id: https://andors-trail.googlecode.com/svn/trunk@69 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
oskar.wiksten
2011-04-12 22:43:44 +00:00
parent bb9447f28f
commit 7809e6f7cc
16 changed files with 1177 additions and 752 deletions

View File

@@ -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;
/** <string name="combat_endcombat">End combat</string>
<string name="combat_endcombat">End combat</string>
<string name="combat_endcombat">End combat</string>
*/
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;
/** <string name="combat_cannotexitcombat">You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat.</string>
<string name="combat_cannotexitcombat">You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat.</string>
<string name="combat_cannotexitcombat">You cannot exit combat since there are adjacent monsters. You first have to move by longclicking a place with no adjacent monster, before you may end the combat.</string>
*/
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;
/** <string name="conversation_title">%1$s says</string>
*/
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;
/** <string name="key_required">A specific key is required to pass.</string>
*/
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;
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="actorconditions_v069">
[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||||||||||||};
</string>
</resources>

View File

@@ -2,183 +2,183 @@
<resources>
<string name="itemlist_money">
[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|||||||||||||||||||||||||||||||||};
</string>
<string name="itemlist_debug">
[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|||||||||||||||||||||||};
</string>
<string name="itemlist_weapons">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{club1|items_tiles:126|Wooden club|0|7||5|10|||0-1|||};
{club3|items_tiles:128|Iron club|0|253||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||||||||||||||||||||||};
</string>
<string name="itemlist_rings">
[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|||||||||||||||||||||};
</string>
<string name="itemlist_necklaces">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{jewel_fallhaven|items_tiles:272|Jewel of Fallhaven|6|3125||-1|||||||};
{necklace_shield1|items_tiles:273|Shielding necklace|6|935|||||||9||};
{necklace_shield2|items_tiles:273|Shielding necklace|6|1255|||||||12||};
[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||||||||||||||||||||||};
</string>
<string name="itemlist_armour">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{shirt1|items_tiles:182|Cloth shirt|3|16|||||||2||};
{shirt2|items_tiles:182|Fine shirt|3|72|||||||5||};
{shirt_dmgresist|items_tiles:183|Hardened 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||};
<string name="itemlist_armour">
[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||||||||||||||||||||||};
</string>
<string name="itemlist_food">
[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||||||||};
<string name="itemlist_food">
[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|||||||||||};
</string>
<string name="itemlist_potions">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{vial_empty1|items_tiles:56|Small empty vial|31|2|||||||||};
{vial_empty2|items_tiles:57|Empty vial|31|4|||||||||};
{vial_empty3|items_tiles:59|Empty flask|31|6|||||||||};
{vial_empty4|items_tiles:58|Empty potion|31|11|||||||||};
{health_minor|items_tiles:35|Minor potion of health|20|5|5||||||||};
{health|items_tiles:49|Regular potion of health|20|40|10||||||||};
{health_major|items_tiles:28|Major potion of health|20|210|40||||||||};
{mead|items_tiles:51|Mead|20|15|1||||||||};
{milk|items_tiles:55|Milk|20|21|2||||||||};
{bonemeal_potion|items_tiles:34|Bonemeal potion|20|45|40||||||||};
[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|||||||||||};
</string>
<string name="itemlist_animal">
[Tag|Icon|Name|Category|Cost|HP|AtkCost|AtkPct|CritPct|CritMult|DMG|BlkPct|DMG_res|];
{hair|items_tiles:258|Animal hair|31|2|||||||||};
{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|||||||||||||||||||||||||||||||||};
</string>
<string name="itemlist_junk">
[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|||||||||||||||||||||||||||||||||};
</string>
<string name="itemlist_quest">
[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|||||||||||||||||||||||};
</string>
<string name="itemlist_v068">
[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|||||||||||||||||||||||};
</string>
</resources>

View File

@@ -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)
);
}

View File

@@ -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));
*/
}
}

View File

@@ -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;

View File

@@ -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))
})
};
}

View File

@@ -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<String, ArrayList<DropItem> > rows = new HashMap<String, ArrayList<DropItem> >();
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<DropItem>());
rows.get(droplistID).add(new DropItem(
itemTypes.getItemTypeByTag(parts[1])
, parseChance(parts[2])
, parseQuantity(parts[3])
, ResourceFileParser.parseChance(parts[2])
, parseQuantity_OLD(parts[3])
));
}

View File

@@ -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

View File

@@ -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<String, ArrayList<QuestLogEntry> > parsedQuestLogEntries = new HashMap<String, ArrayList<QuestLogEntry> >();
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<QuestLogEntry>());
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<Quest> parsedQuests = new ArrayList<Quest>();
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
));
}
}

View File

@@ -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.");
}

View File

@@ -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<ActorConditionEffect> dest;
private final boolean includeDuration;
public ActorConditionTypeArrayAppender(ActorConditionTypeCollection actorConditionTypes, ArrayList<ActorConditionEffect> 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<ActorConditionEffect> addedConditions_source = new ArrayList<ActorConditionEffect>();
final ArrayList<ActorConditionEffect> addedConditions_target = new ArrayList<ActorConditionEffect>();
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<ActorConditionEffect> addedConditions = new ArrayList<ActorConditionEffect>();
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<ActorConditionEffect> 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);
}
}

View File

@@ -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);
}
}

View File

@@ -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|]|"

View File

@@ -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() {

View File

@@ -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]);