diff --git a/AndorsTrail/res/values-de/content_itemlist.xml b/AndorsTrail/res/values-de/content_itemlist.xml index 268ff6f27..fc8c1bea5 100644 --- a/AndorsTrail/res/values-de/content_itemlist.xml +++ b/AndorsTrail/res/values-de/content_itemlist.xml @@ -2,12 +2,12 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:10|Goldmünzen|30||1|1|||||||||||||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:42|Holzknüppel|0|||7|1||||5|10|||0|1|||||||||||||||||||||||}; {club3|items_weapons:44|Eisenknüppel|0|||253|1||||6|5|||2|7|||||||||||||||||||||||}; {ironsword0|items_weapons:0|Eisenschwert|0|||12|1||||5|10|||0|1|||||||||||||||||||||||}; @@ -28,7 +28,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:0|Angriffsring +1|7|||215|1||||||||1|1|||||||||||||||||||||||}; {ring_dmg2|items_jewelry:1|Angriffsring +2|7|||398|1||||||||2|2|||||||||||||||||||||||}; {ring_dmg5|items_jewelry:2|Angriffsring +5|7|4||2014|1||||||||5|5|||||||||||||||||||||||}; @@ -42,14 +42,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:6|Juwel von Fallhaven|6|4||3125|1||||-1||||||||||||||||||||||||||||}; {necklace_shield1|items_jewelry:7|Schildkette|6|4||935|1||||||||||9||||||||||||||||||||||}; {necklace_shield2|items_jewelry:7|Schildkette|6|4||1255|1||||||||||12||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:14|Stoffhemd|3|||16|1||||||||||2||||||||||||||||||||||}; {shirt2|items_armours:14|Feines Hemd|3|||72|1||||||||||5||||||||||||||||||||||}; {shirt_dmgresist|items_armours:15|Gehärtetes Lederhemd|3|4||1633|1||||||||||5|1|||||||||||||||||||||}; @@ -78,7 +78,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:2|Grüner Apfel|21|||9||||||||||||||1|4|4|||||||||||||||||}; {apple_red|items_consumables:3|Roter Apfel|21|||15||||||||||||||1|6|6|||||||||||||||||}; {meat|items_consumables:25|Fleisch|21||1|29||||||||||||||1|12|12|||||||||||||||||}; @@ -93,7 +93,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:56|Leeres Glasröhrchen|31||1|2|||||||||||||||||||||||||||||||||}; {vial_empty2|items_consumables:57|Leere Ampulle|31||1|4|||||||||||||||||||||||||||||||||}; {vial_empty3|items_consumables:59|Leeres Fläschchen|31||1|6|||||||||||||||||||||||||||||||||}; @@ -109,7 +109,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:48|Tierhaar|31||1|2|||||||||||||||||||||||||||||||||}; {insectwing|items_misc:52|Insektenflügel|31||1|3|||||||||||||||||||||||||||||||||}; {bone|items_misc:44|Knochen|31||1|2|||||||||||||||||||||||||||||||||}; @@ -124,7 +124,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|actorconditions_1:9|Lehmklumpen|31||1|1|||||||||||||||||||||||||||||||||}; {rock|items_misc:28|Kleiner Stein|31||1|1|||||||||||||||||||||||||||||||||}; {gem1|items_misc:0|Glaskristall|31||1|2|||||||||||||||||||||||||||||||||}; @@ -137,7 +137,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:38|Schwanz einer Höhlenratte|31|1|1|0|||||||||||||||||||||||||||||||||}; {tail_trainingrat|items_misc:38|Kleiner Rattenschwanz|31|1|1|0|||||||||||||||||||||||||||||||||}; {rest|items_consumables:33|Trank der Wiederherstellung|20|1|1|0||||||||||||||1|99|99|||||||||||||||||}; @@ -159,7 +159,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:17|Rostige Kettenrüstung|3|||3629|1|||||-9|||||20||||||||||||||||||||||}; {armor_chain2|items_armours:17|Einfache Kettenrüstung|3|||4191|1|||||-10|||||22||||||||||||||||||||||}; {hat_leather1|items_armours:24|Gehärtete Lederkappe|2|||261|1|||||-2|||||7||||||||||||||||||||||}; @@ -178,7 +178,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {rapier_lifesteal|items_weapons:71|Vampirdegen|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||}; {dagger_barbed|items_weapons:17|Spitzdolch|0|3|1|0|1||||4|15|||0|0|5|||||||||1||||||{{bleeding_wound|1|5|50|}}|||||||}; {elytharan_redeemer|items_weapons:70|Elytharanischer Erlöser|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||}; diff --git a/AndorsTrail/res/values-fr/content_itemlist.xml b/AndorsTrail/res/values-fr/content_itemlist.xml index 8e19fe4cc..6c7a89722 100644 --- a/AndorsTrail/res/values-fr/content_itemlist.xml +++ b/AndorsTrail/res/values-fr/content_itemlist.xml @@ -1,12 +1,12 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:10|Pièces d\'or|30||1|1|||||||||||||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:42|Massue en bois|0|||7|1||||5|10|||0|1|||||||||||||||||||||||}; {club3|items_weapons:44|Bâton en fer|0|||253|1||||6|5|||2|7|||||||||||||||||||||||}; {ironsword0|items_weapons:0|Épée en fer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||}; @@ -27,7 +27,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:0|Anneau de dommage +1|7|||215|1||||||||1|1|||||||||||||||||||||||}; {ring_dmg2|items_jewelry:1|Anneau de dommage +2|7|||398|1||||||||2|2|||||||||||||||||||||||}; {ring_dmg5|items_jewelry:2|Anneau de dommage +5|7|4||2014|1||||||||5|5|||||||||||||||||||||||}; @@ -41,14 +41,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:6|Joyau de Fallhaven|6|4||3125|1||||-1||||||||||||||||||||||||||||}; {necklace_shield1|items_jewelry:7|Collier de protection|6|4||935|1||||||||||9||||||||||||||||||||||}; {necklace_shield2|items_jewelry:7|Collier de protection|6|4||1255|1||||||||||12||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:14|Chemise|3|||16|1||||||||||2||||||||||||||||||||||}; {shirt2|items_armours:14|Chemise fine|3|||72|1||||||||||5||||||||||||||||||||||}; {shirt_dmgresist|items_armours:15|Chemise de cuir durci|3|4||1633|1||||||||||5|1|||||||||||||||||||||}; @@ -77,7 +77,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:2|Pomme verte|21|||9||||||||||||||1|4|4|||||||||||||||||}; {apple_red|items_consumables:3|Pomme rouge|21|||15||||||||||||||1|6|6|||||||||||||||||}; {meat|items_consumables:25|Viande|21||1|29||||||||||||||1|12|12|||||||||||||||||}; @@ -92,7 +92,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:56|Petit flacon vide|31||1|2|||||||||||||||||||||||||||||||||}; {vial_empty2|items_consumables:57|Flacon vide|31||1|4|||||||||||||||||||||||||||||||||}; {vial_empty3|items_consumables:59|Flasque vide|31||1|6|||||||||||||||||||||||||||||||||}; @@ -108,7 +108,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:48|Pelage d\'animal|31||1|2|||||||||||||||||||||||||||||||||}; {insectwing|items_misc:52|Aile d\'insecte|31||1|3|||||||||||||||||||||||||||||||||}; {bone|items_misc:44|Os|31||1|2|||||||||||||||||||||||||||||||||}; @@ -123,7 +123,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|actorconditions_1:9|Motte d\'argile|31||1|1|||||||||||||||||||||||||||||||||}; {rock|items_misc:28|Petit caillou|31||1|1|||||||||||||||||||||||||||||||||}; {gem1|items_misc:0|Gemme en verre|31||1|2|||||||||||||||||||||||||||||||||}; @@ -136,7 +136,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:38|Queue de rat des caves|31|1|1|0|||||||||||||||||||||||||||||||||}; {tail_trainingrat|items_misc:38|Queue de petit rat|31|1|1|0|||||||||||||||||||||||||||||||||}; {rest|items_consumables:33|Potion de restauration|20|1|1|0||||||||||||||1|99|99|||||||||||||||||}; @@ -158,7 +158,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:17|Cotte de mailles rouillée|3|||3629|1|||||-9|||||20||||||||||||||||||||||}; {armor_chain2|items_armours:17|Cotte de mailles ordinaire|3|||4191|1|||||-10|||||22||||||||||||||||||||||}; {hat_leather1|items_armours:24|Casquette de cuir durci|2|||261|1|||||-2|||||7||||||||||||||||||||||}; @@ -177,7 +177,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {rapier_lifesteal|items_weapons:71|Rapière voleuse de vie|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||}; {dagger_barbed|items_weapons:17|Dague dentelée|0|3|1|0|1||||4|15|||0|0|5|||||||||1||||||{{bleeding_wound|1|5|50|}}|||||||}; {elytharan_redeemer|items_weapons:70|Rédempteur d\'Elytharan|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||}; @@ -207,14 +207,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {rusted_iron_sword|items_weapons:0|Épée en fer rouillée|0|||52|1||||5|10|||1|2|||||||||||||||||||||||}; {broken_buckler|items_armours:0|Bouclier de bois brisé|1|||120|1|||||-5|||||1||||||||||||||||||||||}; {used_gloves|items_armours:35|Gants tâchés de sang|4|||56|1||||||||||1||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {bwm_claws|items_misc:47|Griffe de wyrm blanche|31||1|35|||||||||||||||||||||||||||||||||}; {bwm_permit|items_books:8|Laisser-passer falsifié de Blackwater|31|1|1|0|||||||||||||||||||||||||||||||||}; {bjorgur_dagger|items_weapons:14|Dague de famille de Bjorgur|0|1|1|0|1||||5||||||||||||||||||||||||||||}; diff --git a/AndorsTrail/res/values-it/content_itemlist.xml b/AndorsTrail/res/values-it/content_itemlist.xml index 1cfafa7fb..b992dffd9 100644 --- a/AndorsTrail/res/values-it/content_itemlist.xml +++ b/AndorsTrail/res/values-it/content_itemlist.xml @@ -2,12 +2,12 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:10|Monete d\'oro|30||1|1|||||||||||||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:42|Clava|0|||7|1||||5|10|||0|1|||||||||||||||||||||||}; {club3|items_weapons:44|Mazza di ferro|0|||253|1||||6|5|||2|7|||||||||||||||||||||||}; {ironsword0|items_weapons:0|Spada di ferro|0|||12|1||||5|10|||0|1|||||||||||||||||||||||}; @@ -28,7 +28,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:0|Anello del danno +1|7|||215|1||||||||1|1|||||||||||||||||||||||}; {ring_dmg2|items_jewelry:1|Anello del danno +2|7|||398|1||||||||2|2|||||||||||||||||||||||}; {ring_dmg5|items_jewelry:2|Anello del danno +5|7|4||2014|1||||||||5|5|||||||||||||||||||||||}; @@ -42,14 +42,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:6|Gemma di Fallhaven|6|4||3125|1||||-1||||||||||||||||||||||||||||}; {necklace_shield1|items_jewelry:7|Collana protettiva|6|4||935|1||||||||||9||||||||||||||||||||||}; {necklace_shield2|items_jewelry:7|Collana protettiva|6|4||1255|1||||||||||12||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:14|Camicia di stoffa|3|||16|1||||||||||2||||||||||||||||||||||}; {shirt2|items_armours:14|Camicia pregiata|3|||72|1||||||||||5||||||||||||||||||||||}; {shirt_dmgresist|items_armours:15|Camicia di pelle indurita|3|4||1633|1||||||||||5|1|||||||||||||||||||||}; @@ -78,7 +78,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:2|Mela verde|21|||9||||||||||||||1|4|4|||||||||||||||||}; {apple_red|items_consumables:3|Mela rossa|21|||15||||||||||||||1|6|6|||||||||||||||||}; {meat|items_consumables:25|Carne|21||1|29||||||||||||||1|12|12|||||||||||||||||}; @@ -93,7 +93,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:56|Piccola fiala vuota|31||1|2|||||||||||||||||||||||||||||||||}; {vial_empty2|items_consumables:57|Fiala vuota|31||1|4|||||||||||||||||||||||||||||||||}; {vial_empty3|items_consumables:59|Fiasco vuoto|31||1|6|||||||||||||||||||||||||||||||||}; @@ -109,7 +109,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:48|Pelliccia|31||1|2|||||||||||||||||||||||||||||||||}; {insectwing|items_misc:52|Ala d\’insetto|31||1|3|||||||||||||||||||||||||||||||||}; {bone|items_misc:44|Osso|31||1|2|||||||||||||||||||||||||||||||||}; @@ -124,7 +124,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|actorconditions_1:9|Blocco di argilla|31||1|1|||||||||||||||||||||||||||||||||}; {rock|items_misc:28|Piccola pietra|31||1|1|||||||||||||||||||||||||||||||||}; {gem1|items_misc:0|Gemma di vetro|31||1|2|||||||||||||||||||||||||||||||||}; @@ -137,7 +137,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:38|Coda di ratto delle caverne|31|1|1|0|||||||||||||||||||||||||||||||||}; {tail_trainingrat|items_misc:38|Coda di ratto piccolo|31|1|1|0|||||||||||||||||||||||||||||||||}; {rest|items_consumables:33|Pozione di ripristino|20|1|1|0||||||||||||||1|99|99|||||||||||||||||}; @@ -159,7 +159,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:17|Corazza di maglia arrugginita|3|||3629|1|||||-9|||||20||||||||||||||||||||||}; {armor_chain2|items_armours:17|Corazza di maglia|3|||4191|1|||||-10|||||22||||||||||||||||||||||}; {hat_leather1|items_armours:24|Capello di pelle indurita|2|||261|1|||||-2|||||7||||||||||||||||||||||}; diff --git a/AndorsTrail/res/values-ru/content_itemlist.xml b/AndorsTrail/res/values-ru/content_itemlist.xml index c8e0f1dbb..33605f382 100644 --- a/AndorsTrail/res/values-ru/content_itemlist.xml +++ b/AndorsTrail/res/values-ru/content_itemlist.xml @@ -2,12 +2,12 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:10|Золото|30||1|1|||||||||||||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:42|Деревянная дубина|0|||7|1||||5|10|||0|1|||||||||||||||||||||||}; {club3|items_weapons:44|Палица|0|||253|1||||6|5|||2|7|||||||||||||||||||||||}; {ironsword0|items_weapons:0|Железный меч|0|||12|1||||5|10|||0|1|||||||||||||||||||||||}; @@ -28,7 +28,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:0|Кольцо урона +1|7|||215|1||||||||1|1|||||||||||||||||||||||}; {ring_dmg2|items_jewelry:1|Кольцо урона +2|7|||398|1||||||||2|2|||||||||||||||||||||||}; {ring_dmg5|items_jewelry:2|Кольцо урона +5|7|4||2014|1||||||||5|5|||||||||||||||||||||||}; @@ -42,14 +42,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:6|Жемчужина Фоллхейвена|6|4||3125|1||||-1||||||||||||||||||||||||||||}; {necklace_shield1|items_jewelry:7|Защитное ожерелье|6|4||935|1||||||||||9||||||||||||||||||||||}; {necklace_shield2|items_jewelry:7|Защитное ожерелье|6|4||1255|1||||||||||12||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:14|Рубаха|3|||16|1||||||||||2||||||||||||||||||||||}; {shirt2|items_armours:14|Красивая рубаха|3|||72|1||||||||||5||||||||||||||||||||||}; {shirt_dmgresist|items_armours:15|Кожаная рубаха|3|4||1633|1||||||||||5|1|||||||||||||||||||||}; @@ -78,7 +78,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|actorconditions_1:9|Комок глины|31||1|1|||||||||||||||||||||||||||||||||}; {rock|items_misc:28|Камушек|31||1|1|||||||||||||||||||||||||||||||||}; {gem1|items_misc:0|Сваровски|31||1|2|||||||||||||||||||||||||||||||||}; diff --git a/AndorsTrail/res/values/content_itemlist.xml b/AndorsTrail/res/values/content_itemlist.xml index d9a02cdf3..f3d291be0 100644 --- a/AndorsTrail/res/values/content_itemlist.xml +++ b/AndorsTrail/res/values/content_itemlist.xml @@ -2,12 +2,12 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:10|Gold coins|30||1|1|||||||||||||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:42|Wooden club|0|||7|1||||5|10|||0|1|||||||||||||||||||||||}; {club3|items_weapons:44|Iron club|0|||253|1||||6|5|||2|7|||||||||||||||||||||||}; {ironsword0|items_weapons:0|Crude iron sword|0|||12|1||||5|10|||0|1|||||||||||||||||||||||}; @@ -28,7 +28,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:0|Ring of damage +1|7|||215|1||||||||1|1|||||||||||||||||||||||}; {ring_dmg2|items_jewelry:1|Ring of damage +2|7|||398|1||||||||2|2|||||||||||||||||||||||}; {ring_dmg5|items_jewelry:2|Ring of damage +5|7|4||2014|1||||||||5|5|||||||||||||||||||||||}; @@ -42,14 +42,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_jewelry:6|Jewel of Fallhaven|6|4||3125|1||||-1||||||||||||||||||||||||||||}; {necklace_shield1|items_jewelry:7|Necklace of the guardian|6|4||935|1||||||||||9||||||||||||||||||||||}; {necklace_shield2|items_jewelry:7|Shielding necklace|6|4||1255|1||||||||||12||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:14|Cloth shirt|3|||16|1||||||||||2||||||||||||||||||||||}; {shirt2|items_armours:14|Fine shirt|3|||72|1||||||||||5||||||||||||||||||||||}; {shirt_dmgresist|items_armours:15|Hardened leather shirt|3|4||1633|1||||||||||5|1|||||||||||||||||||||}; @@ -78,7 +78,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:2|Green apple|21|||9||||||||||||||1|4|4|||||||||||||||||}; {apple_red|items_consumables:3|Red apple|21|||15||||||||||||||1|6|6|||||||||||||||||}; {meat|items_consumables:25|Meat|21||1|29||||||||||||||1|12|12|||||||||||||||||}; @@ -93,7 +93,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_consumables:56|Small empty vial|31||1|2|||||||||||||||||||||||||||||||||}; {vial_empty2|items_consumables:57|Empty vial|31||1|4|||||||||||||||||||||||||||||||||}; {vial_empty3|items_consumables:59|Empty flask|31||1|6|||||||||||||||||||||||||||||||||}; @@ -109,7 +109,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:48|Animal hair|31||1|2|||||||||||||||||||||||||||||||||}; {insectwing|items_misc:52|Insect wing|31||1|3|||||||||||||||||||||||||||||||||}; {bone|items_misc:44|Bone|31||1|2|||||||||||||||||||||||||||||||||}; @@ -124,7 +124,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|actorconditions_1:9|Lump of clay|31||1|1|||||||||||||||||||||||||||||||||}; {rock|items_misc:28|Small rock|31||1|1|||||||||||||||||||||||||||||||||}; {gem1|items_misc:0|Glass gem|31||1|2|||||||||||||||||||||||||||||||||}; @@ -137,7 +137,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_misc:38|Cave rat tail|31|1|1|0|||||||||||||||||||||||||||||||||}; {tail_trainingrat|items_misc:38|Small rat tail|31|1|1|0|||||||||||||||||||||||||||||||||}; {rest|items_consumables:33|Potion of restoration|20|1|1|0||||||||||||||1|99|99|||||||||||||||||}; @@ -159,7 +159,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_armours:17|Rusty chain mail|3|||3629|1|||||-9|||||20||||||||||||||||||||||}; {armor_chain2|items_armours:17|Ordinary chain mail|3|||4191|1|||||-10|||||22||||||||||||||||||||||}; {hat_leather1|items_armours:24|Ordinary leather cap|2|||261|1|||||-2|||||7||||||||||||||||||||||}; @@ -178,7 +178,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {rapier_lifesteal|items_weapons:71|Rapier of lifesteal|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||}; {dagger_barbed|items_weapons:17|Barbed dagger|0|3|1|0|1||||4|15|||0|0|5|||||||||1||||||{{bleeding_wound|1|5|50|}}|||||||}; {elytharan_redeemer|items_weapons:70|Elytharan redeemer|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||}; @@ -208,14 +208,14 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {rusted_iron_sword|items_weapons:0|Rusted iron sword|0|||52|1||||5|10|||1|2|||||||||||||||||||||||}; {broken_buckler|items_armours:0|Broken wooden buckler|1|||120|1|||||-5|||||1||||||||||||||||||||||}; {used_gloves|items_armours:35|Blood-stained gloves|4|||56|1||||||||||1||||||||||||||||||||||}; -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {bwm_claws|items_misc:47|White wyrm claw|31||1|35|||||||||||||||||||||||||||||||||}; {bwm_permit|items_books:8|Forged papers for Blackwater|31|1|1|0|||||||||||||||||||||||||||||||||}; {bjorgur_dagger|items_weapons:14|Bjorgur\'s family dagger|0|1|1|0|1||||5||||||||||||||||||||||||||||}; @@ -225,7 +225,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; {dagger_shadow_priests|items_weapons:17|Dagger of the Shadow priests|0|3|1|15|1||||4|20|20|3|1|2|||||||||||||||||||||||}; {sword_hard_iron|items_weapons:0|Hardened iron sword|0||0|369|1||||5|15|||2|4|||||||||||||||||||||||}; {club_fine_wooden|items_weapons:42|Fine wooden club|0||0|245|1||||5|12|||0|7|||||||||||||||||||||||}; diff --git a/AndorsTrail/res/values/loadresources_debug.xml b/AndorsTrail/res/values/loadresources_debug.xml index 93ff9fee1..23ab12a8a 100644 --- a/AndorsTrail/res/values/loadresources_debug.xml +++ b/AndorsTrail/res/values/loadresources_debug.xml @@ -8,7 +8,7 @@ -[searchTag|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|]; +[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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_weapons:20|Black heart dagger|0|3|1|6|1||||2|100|30|3|5|10|||||||||||||||||||||||}; {debug_ring1|items_jewelry:4|Black heart ring|7|1|1|3|1|||||50|||10|10|||||||||||||||||||||||}; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java index bd5dbea01..c64cf8bea 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java @@ -11,18 +11,15 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.R; import com.gpl.rpg.AndorsTrail.context.ViewContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; -import com.gpl.rpg.AndorsTrail.model.actor.Player; -import com.gpl.rpg.AndorsTrail.model.map.MapObject; -import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; public final class DebugInterface { - private final ViewContext viewContext; + //private final ViewContext viewContext; private final MainActivity mainActivity; private final Resources res; private final WorldContext world; public DebugInterface(ViewContext viewContext) { - this.viewContext = viewContext; + //this.viewContext = viewContext; this.mainActivity = viewContext.mainActivity; this.world = viewContext; this.res = mainActivity.getResources(); @@ -62,7 +59,7 @@ public final class DebugInterface { mainActivity.showToast("DEBUG: damagePotential=1", Toast.LENGTH_SHORT); } })*/ - ,new DebugButton("items", new OnClickListener() { + /*,new DebugButton("items", new OnClickListener() { @Override public void onClick(View arg0) { world.model.player.inventory.addItem(world.itemTypes.getItemType("elytharan_redeemer")); @@ -80,7 +77,7 @@ public final class DebugInterface { mainActivity.updateStatus(); mainActivity.showToast("DEBUG: added items", Toast.LENGTH_SHORT); } - }) + })*/ /*new DebugButton("skills++", new OnClickListener() { @Override public void onClick(View arg0) { @@ -96,7 +93,7 @@ public final class DebugInterface { showToast("DEBUG: all skills raised " + N + " levels", Toast.LENGTH_SHORT); } })*/ - ,new DebugButton("bwm", new OnClickListener() { + /*,new DebugButton("bwm", new OnClickListener() { @Override public void onClick(View arg0) { Player player = world.model.player; @@ -112,13 +109,13 @@ public final class DebugInterface { viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain45", "south", 0, 0); } - }) - ,new DebugButton("prim", new OnClickListener() { + })*/ + /*,new DebugButton("prim", new OnClickListener() { @Override public void onClick(View arg0) { viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain29", "south", 0, 0); } - }) + })*/ /*,new DebugButton("kazaul", new OnClickListener() { @Override public void onClick(View arg0) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Quests.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Quests.java index 8354043e6..788327ea1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Quests.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Quests.java @@ -89,7 +89,7 @@ public final class HeroinfoActivity_Quests extends Activity { groupList.clear(); childList.clear(); - for (Quest q : questCollection.quests) { + for (Quest q : questCollection.getAllQuests()) { if (!q.showInLog) continue; // Do not show if (player.hasAnyQuestProgress(q.questID)) { boolean isCompleted = q.isCompleted(player); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java index b1dfdf935..6f4040427 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java @@ -1,6 +1,5 @@ package com.gpl.rpg.AndorsTrail.conversation; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map.Entry; @@ -14,11 +13,7 @@ import com.gpl.rpg.AndorsTrail.model.item.ItemType; 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.ResourceFileParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectArrayTokenizer; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectFieldParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokenizer; +import com.gpl.rpg.AndorsTrail.resource.parsers.ConversationListParser; import com.gpl.rpg.AndorsTrail.util.L; public final class ConversationCollection { @@ -49,72 +44,34 @@ public final class ConversationCollection { return phrases.get(id); } - private static final ResourceObjectTokenizer conversationResourceTokenizer = new ResourceObjectTokenizer(5); - private static final ResourceObjectTokenizer replyResourceTokenizer = new ResourceObjectTokenizer(5); - public void initialize(String phraselist) { - conversationResourceTokenizer.tokenizeRows(phraselist, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - // [id|message|progressQuest|rewardDropListID|replies[text|nextPhraseID|requires_Progress|requires_itemID|requires_Quantity|]|]; - - final ArrayList replies = new ArrayList(); - ResourceObjectArrayTokenizer.tokenize(parts[4], replyResourceTokenizer, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - replies.add(new Reply( - parts[0] // text - , parts[1] // nextPhrase - , QuestProgress.parseQuestProgress(parts[2]) // requiresProgress - , ResourceFileParser.parseNullableString(parts[3]) // requiresItemType - , ResourceFileParser.parseInt(parts[4], 0) // requiresItemQuantity - )); - } - }); - - final Reply[] _replies = replies.toArray(new Reply[replies.size()]); - final String phraseID = parts[0]; - - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (phraseID.trim().length() <= 0) { - L.log("WARNING: Adding phrase with empty id."); - } else if (phrases.get(phraseID) != null) { - L.log("WARNING: Phrase \"" + phraseID + "\" may be duplicated."); - } - - boolean hasNextReply = false; - boolean hasOtherReply = false; - for (Reply r : replies) { - if (r.text.equalsIgnoreCase(REPLY_NEXT)) hasNextReply = true; - else hasOtherReply = true; - } - if (hasNextReply && hasOtherReply) { - L.log("WARNING: Phrase \"" + phraseID + "\" has both a \"" + REPLY_NEXT + "\" reply and some other reply."); - } - } - - phrases.put(phraseID, new Phrase( - ResourceFileParser.parseNullableString(parts[1]) // message - , _replies // replies - , QuestProgress.parseQuestProgress(parts[2]) // questProgress - , ResourceFileParser.parseNullableString(parts[3]) // rewardDroplist - )); - } - }); + public void initialize(ConversationListParser parser, String input) { + parser.parseRows(input, phrases); } // Selftest method. Not part of the game logic. public void verifyData() { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { for (Entry e : phrases.entrySet()) { + final String phraseID = e.getKey(); for (Reply r : e.getValue().replies) { if (!isValidPhraseID(r.nextPhrase)) { - L.log("WARNING: Phrase \"" + e.getKey() + "\" has reply to non-existing phrase \"" + r.nextPhrase + "\"."); + L.log("WARNING: Phrase \"" + phraseID + "\" has reply to non-existing phrase \"" + r.nextPhrase + "\"."); } else if (r.nextPhrase == null || r.nextPhrase.length() <= 0) { - L.log("WARNING: Phrase \"" + e.getKey() + "\" has a reply that has no nextPhrase."); + L.log("WARNING: Phrase \"" + phraseID + "\" has a reply that has no nextPhrase."); } else if (r.nextPhrase.equals(e.getKey())) { - L.log("WARNING: Phrase \"" + e.getKey() + "\" has a reply that points to itself."); + L.log("WARNING: Phrase \"" + phraseID + "\" has a reply that points to itself."); } } + + boolean hasNextReply = false; + boolean hasOtherReply = false; + for (Reply r : e.getValue().replies) { + if (r.text.equalsIgnoreCase(REPLY_NEXT)) hasNextReply = true; + else hasOtherReply = true; + } + if (hasNextReply && hasOtherReply) { + L.log("WARNING: Phrase \"" + phraseID + "\" has both a \"" + REPLY_NEXT + "\" reply and some other reply."); + } } } } @@ -148,7 +105,7 @@ public final class ConversationCollection { for (Entry e : phrases.entrySet()) { for (Reply r : e.getValue().replies) { if (r.requiresItem()) { - if (!droplists.verifyExistsDroplist(r.requiresItemTypeID)) { + if (!droplists.verifyExistsDroplistForItem(r.requiresItemTypeID)) { L.log("WARNING: Phrase \"" + e.getKey() + "\" has reply that requires an item that is not dropped by any droplist."); } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java index 083181c2d..aeb13357d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java @@ -1,58 +1,24 @@ package com.gpl.rpg.AndorsTrail.model.ability; -import java.util.ArrayList; +import java.util.HashMap; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; -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.resource.parsers.ActorConditionsTypeParser; import com.gpl.rpg.AndorsTrail.util.L; public class ActorConditionTypeCollection { - private final ArrayList conditionTypes = new ArrayList(); + private final HashMap conditionTypes = new HashMap(); public ActorConditionType getActorConditionType(String conditionTypeID) { - for (ActorConditionType t : conditionTypes) { - if (t.conditionTypeID.equals(conditionTypeID)) return t; - } if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("WARNING: Cannot find ActorConditionType \"" + conditionTypeID + "\"."); + if (!conditionTypes.containsKey(conditionTypeID)) { + L.log("WARNING: Cannot find ActorConditionType \"" + conditionTypeID + "\"."); + } } - return null; + return conditionTypes.get(conditionTypeID); } - private static final ResourceObjectTokenizer actorConditionResourceTokenizer = new ResourceObjectTokenizer(29); - public void initialize(final DynamicTileLoader tileLoader, String conditionList) { - actorConditionResourceTokenizer.tokenizeRows(conditionList, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - - 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]) - , Integer.parseInt(parts[3]) - , ResourceFileParser.parseBoolean(parts[4], false) - , ResourceFileParser.parseStatsModifierTraits(parts, 5) - , ResourceFileParser.parseStatsModifierTraits(parts, 11) - , ResourceFileParser.parseAbilityModifierTraits(parts, 17) - ); - conditionTypes.add(actorConditionType); - } - }); + public void initialize(final ActorConditionsTypeParser parser, String input) { + parser.parseRows(input, conditionTypes); } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java index bb6c74637..acf9d83a2 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/MonsterTypeCollection.java @@ -7,19 +7,10 @@ import java.util.HashSet; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.WorldContext; -import com.gpl.rpg.AndorsTrail.controller.Constants; import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; -import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; import com.gpl.rpg.AndorsTrail.model.item.DropList; -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.ResourceFileParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectFieldParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokenizer; +import com.gpl.rpg.AndorsTrail.resource.parsers.MonsterTypeParser; import com.gpl.rpg.AndorsTrail.util.L; -import com.gpl.rpg.AndorsTrail.util.Size; public final class MonsterTypeCollection { private final HashMap monsterTypes = new HashMap(); @@ -49,59 +40,9 @@ public final class MonsterTypeCollection { return null; } - private static final Size size1x1 = new Size(1, 1); - private static final ResourceObjectTokenizer monsterResourceTokenizer = new ResourceObjectTokenizer(25); - public void initialize(final DropListCollection droplists, final ActorConditionTypeCollection actorConditionTypes, final DynamicTileLoader tileLoader, String monsterlist) { - //[iconID|name|tags|size|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID| - // hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|]; - monsterResourceTokenizer.tokenizeRows(monsterlist, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - final String monsterTypeId = parts[0]; - - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (monsterTypes.containsKey(monsterTypeId)) { - L.log("WARNING: Monster " + monsterTypeId + " is duplicated."); - } - } - - final int maxHP = ResourceFileParser.parseInt(parts[5], 1); - final int maxAP = ResourceFileParser.parseInt(parts[6], 10); - final CombatTraits combatTraits = ResourceFileParser.parseCombatTraits(parts, 8); - final ItemTraits_OnUse hitEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 18, true); - final int exp = getExpectedMonsterExperience(combatTraits, hitEffect, maxHP, maxAP); - monsterTypes.put(monsterTypeId, new MonsterType( - monsterTypeId - , parts[2] // Name - , parts[3] // Tags - , ResourceFileParser.parseImageID(tileLoader, parts[1]) - , ResourceFileParser.parseSize(parts[4], size1x1) //TODO: This could be loaded from the tileset size instead. - , maxHP // HP - , maxAP // AP - , ResourceFileParser.parseInt(parts[7], 10) // MoveCost - , combatTraits - , hitEffect - , exp // Exp - , droplists.getDropList(parts[16]) // Droplist - , ResourceFileParser.parseNullableString(parts[17]) // PhraseID - )); - } - }); - } - - private static float div100(int v) { - return (float) v / 100f; - } - private static int getExpectedMonsterExperience(final CombatTraits t, ItemTraits_OnUse hitEffect, final int maxHP, final int maxAP) { - if (t == null) return 0; - final float avgAttackHP = t.getAttacksPerTurn(maxAP) * div100(t.attackChance) * t.damagePotential.averagef() * (1 + div100(t.criticalChance) * t.criticalMultiplier); - final float avgDefenseHP = maxHP * (1 + div100(t.blockChance)) + Constants.EXP_FACTOR_DAMAGERESISTANCE * t.damageResistance; - int attackConditionBonus = 0; - if (hitEffect != null && hitEffect.addedConditions_target != null && hitEffect.addedConditions_target.length > 0) { - attackConditionBonus += 50; - } - return (int) Math.ceil((avgAttackHP * 3 + avgDefenseHP) * Constants.EXP_FACTOR_SCALING) + attackConditionBonus; - } + public void initialize(MonsterTypeParser parser, String input) { + parser.parseRows(input, monsterTypes); + } // Selftest method. Not part of the game logic. public void verifyData(WorldContext world) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java index b8af38036..b08d783bc 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java @@ -1,6 +1,5 @@ package com.gpl.rpg.AndorsTrail.model.item; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map.Entry; @@ -8,12 +7,8 @@ import java.util.Map.Entry; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection; import com.gpl.rpg.AndorsTrail.model.actor.MonsterTypeCollection; -import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem; import com.gpl.rpg.AndorsTrail.model.map.MapCollection; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectArrayTokenizer; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectFieldParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokenizer; +import com.gpl.rpg.AndorsTrail.resource.parsers.DropListParser; import com.gpl.rpg.AndorsTrail.util.L; public final class DropListCollection { @@ -32,49 +27,12 @@ public final class DropListCollection { return droplists.get(droplistID); } - private static final ResourceObjectTokenizer droplistResourceTokenizer = new ResourceObjectTokenizer(2); - private static final ResourceObjectTokenizer droplistItemResourceTokenizer = new ResourceObjectTokenizer(4); - public void initialize(final ItemTypeCollection itemTypes, String droplistString) { - droplistResourceTokenizer.tokenizeRows(droplistString, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - // [id|items[itemID|quantity_Min|quantity_Max|chance|]|]; - - String droplistID = parts[0]; - - final ArrayList items = new ArrayList(); - ResourceObjectArrayTokenizer.tokenize(parts[1], droplistItemResourceTokenizer, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - items.add(new DropItem( - itemTypes.getItemType(parts[0]) // Itemtype - , ResourceFileParser.parseChance(parts[3]) // Chance - , ResourceFileParser.parseQuantity(parts[1], parts[2]) // Quantity - )); - } - }); - - DropItem[] items_ = items.toArray(new DropItem[items.size()]); - final DropList droplist = new DropList(items_); - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (droplistID.trim().length() <= 0) { - L.log("WARNING: Droplist with empty id."); - } else { - if (droplists.containsKey(droplistID)) { - L.log("OPTIMIZE: Droplist " + droplistID + " is duplicated."); - } - } - if (items.size() <= 0) { - L.log("OPTIMIZE: Droplist \"" + droplistID + "\" has no dropped items."); - } - } - droplists.put(droplistID, droplist); - } - }); + public void initialize(final DropListParser parser, String input) { + parser.parseRows(input, droplists); } // Selftest method. Not part of the game logic. - public boolean verifyExistsDroplist(String itemTypeID) { + public boolean verifyExistsDroplistForItem(String itemTypeID) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { for (DropList d : droplists.values()) { if (d.contains(itemTypeID)) return true; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java index 0a1f67424..0370f8f64 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java @@ -3,18 +3,13 @@ package com.gpl.rpg.AndorsTrail.model.item; import java.util.HashMap; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; -import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; -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.resource.parsers.ItemTypeParser; import com.gpl.rpg.AndorsTrail.util.L; public final class ItemTypeCollection { private static final String ITEMTYPE_GOLD = "gold"; private final HashMap itemTypes = new HashMap(); - public final HashMap TEST_itemTypes = itemTypes; public ItemType getItemType(String id) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { @@ -30,95 +25,53 @@ public final class ItemTypeCollection { return itemTypeID.equals(ITEMTYPE_GOLD); } - private static final ResourceObjectTokenizer itemResourceTokenizer = new ResourceObjectTokenizer(39); - public void initialize(final DynamicTileLoader tileLoader, final ActorConditionTypeCollection actorConditionTypes, String itemlist) { - itemResourceTokenizer.tokenizeRows(itemlist, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - final String itemTypeName = parts[2]; - String id = parts[0]; - if (id == null || id.length() <= 0) { - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("OPTIMIZE: ItemType \"" + itemTypeName + "\" has empty id."); - } - id = itemTypeName; - } - - final ItemTraits_OnEquip equipEffect = ResourceFileParser.parseItemTraits_OnEquip(actorConditionTypes, parts, 7); - final ItemTraits_OnUse useEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 20, false); - final ItemTraits_OnUse hitEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 26, true); - final ItemTraits_OnUse killEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 33, false); - - final int baseMarketCost = Integer.parseInt(parts[6]); - final boolean hasManualPrice = ResourceFileParser.parseBoolean(parts[5], false); - final ItemType itemType = new ItemType( - id - , ResourceFileParser.parseImageID(tileLoader, parts[1]) - , itemTypeName - , Integer.parseInt(parts[3]) // category - , ResourceFileParser.parseInt(parts[4], ItemType.DISPLAYTYPE_ORDINARY) // Displaytype - , hasManualPrice // hasManualPrice - , baseMarketCost // Base market cost - , equipEffect - , useEffect - , hitEffect - , killEffect - ); - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (!hasManualPrice) { - if (itemType.effects_hit != null || itemType.effects_kill != null) { - L.log("OPTIMIZE: Item " + id + " uses automatic pricing, but has kill- or hit effects. Should probably use manual pricing?"); - } - if (itemType.effects_equip == null && itemType.effects_use == null) { - L.log("OPTIMIZE: Item " + id + " uses automatic pricing, but has no equip- or use effects. Should probably use manual pricing?"); - } else if (!itemType.isUsable() && !itemType.isEquippable()) { - L.log("OPTIMIZE: Item " + id + " uses automatic pricing, but is neither usable nor equippable. Should probably use manual pricing?"); - } - } else { - if (baseMarketCost != 0 && itemType.isQuestItem()) { - L.log("OPTIMIZE: Item " + id + " is a quest item, but has a base market price specified."); - } else if (baseMarketCost == 0 && itemType.isOrdinaryItem()) { - L.log("OPTIMIZE: Item " + id + " does not have a base market price specified (and is an ordinary item)."); - } - } - - if (itemType.isEquippable()) { - if (itemType.effects_equip == null && itemType.effects_hit == null && itemType.effects_kill == null ) { - L.log("OPTIMIZE: Item " + id + " 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 " + id + " is not equippable, but has equip, hit or kill effect."); - } - } - if (itemType.isUsable()) { - if (itemType.effects_use == null) { - L.log("OPTIMIZE: Item " + id + " is usable, but has no use effect."); - } - } else { - if (itemType.effects_use != null) { - L.log("OPTIMIZE: Item " + id + " is not usable, but has use effect."); - } - } - } - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (itemTypes.containsKey(id)) { - L.log("OPTIMIZE: Item " + id + " may be duplicated."); - } - } - - itemTypes.put(id, itemType); - } - }); - } + public void initialize(final ItemTypeParser parser, String input) { + parser.parseRows(input, itemTypes); + } // Selftest method. Not part of the game logic. public void verifyData(DropListCollection dropLists) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { for (ItemType t : itemTypes.values()) { - if (dropLists.verifyExistsDroplist(t.id)) continue; - //if (conversations.verifyExistsReplyThatRequiresItem(t.id)) continue; - L.log("OPTIMIZE: Item " + t.id + " is not dropped by any droplist."); + if (!t.hasManualPrice) { + if (t.effects_hit != null || t.effects_kill != null) { + L.log("OPTIMIZE: Item " + t.id + " uses automatic pricing, but has kill- or hit effects. Should probably use manual pricing?"); + } + if (t.effects_equip == null && t.effects_use == null) { + L.log("OPTIMIZE: Item " + t.id + " uses automatic pricing, but has no equip- or use effects. Should probably use manual pricing?"); + } else if (!t.isUsable() && !t.isEquippable()) { + L.log("OPTIMIZE: Item " + t.id + " uses automatic pricing, but is neither usable nor equippable. Should probably use manual pricing?"); + } + } else { + if (t.baseMarketCost != 0 && t.isQuestItem()) { + L.log("OPTIMIZE: Item " + t.id + " is a quest item, but has a base market price specified."); + } else if (t.baseMarketCost == 0 && t.isOrdinaryItem()) { + L.log("OPTIMIZE: Item " + t.id + " does not have a base market price specified (and is an ordinary item)."); + } + } + + if (t.isEquippable()) { + if (t.effects_equip == null && t.effects_hit == null && t.effects_kill == null ) { + L.log("OPTIMIZE: Item " + t.id + " is equippable, but has no equip effect."); + } + } else { + if (t.effects_equip != null || t.effects_hit != null || t.effects_kill != null ) { + L.log("OPTIMIZE: Item " + t.id + " is not equippable, but has equip, hit or kill effect."); + } + } + if (t.isUsable()) { + if (t.effects_use == null) { + L.log("OPTIMIZE: Item " + t.id + " is usable, but has no use effect."); + } + } else { + if (t.effects_use != null) { + L.log("OPTIMIZE: Item " + t.id + " is not usable, but has use effect."); + } + } + + if (!dropLists.verifyExistsDroplistForItem(t.id)) { + L.log("OPTIMIZE: Item " + t.id + " is not dropped by any droplist."); + } } } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestCollection.java index 1e297bfaa..ccbec9308 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestCollection.java @@ -1,20 +1,21 @@ package com.gpl.rpg.AndorsTrail.model.quest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectArrayTokenizer; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectFieldParser; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokenizer; +import com.gpl.rpg.AndorsTrail.resource.parsers.QuestParser; import com.gpl.rpg.AndorsTrail.util.L; -public final class QuestCollection { - public final ArrayList quests = new ArrayList(); +public final class QuestCollection { + private final HashMap quests = new HashMap(); + + public Collection getAllQuests() { + return quests.values(); + } + public QuestLogEntry getQuestLogEntry(final QuestProgress stage) { Quest q = getQuest(stage.questID); if (q == null) return null; @@ -29,93 +30,51 @@ public final class QuestCollection { } public Quest getQuest(final String questID) { - for (Quest q : quests) { - if (q.questID.equals(questID)) { - return q; - } - } if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("WARNING: Cannot find quest \"" + questID + "\"."); - } - return null; - } - - private static final ResourceObjectTokenizer questResourceTokenizer = new ResourceObjectTokenizer(4); - private static final ResourceObjectTokenizer questStageResourceTokenizer = new ResourceObjectTokenizer(4); - public void initialize(String questlist) { - questResourceTokenizer.tokenizeRows(questlist, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - // [id|name|showInLog|stages[progress|logText|rewardExperience|finishesQuest|]|]; - - final ArrayList stages = new ArrayList(); - ResourceObjectArrayTokenizer.tokenize(parts[3], questStageResourceTokenizer, new ResourceObjectFieldParser() { - @Override - public void matchedRow(String[] parts) { - stages.add(new QuestLogEntry( - Integer.parseInt(parts[0]) // Progress - , parts[1] // Logtext - , ResourceFileParser.parseInt(parts[2], 0) // RewardExperience - , ResourceFileParser.parseBoolean(parts[3], false) // FinishesQuest - )); - } - }); - Collections.sort(stages, new Comparator() { - @Override - public int compare(QuestLogEntry a, QuestLogEntry b) { - return a.progress - b.progress; - } - }); - - final QuestLogEntry[] stages_ = stages.toArray(new QuestLogEntry[stages.size()]); - final Quest quest = new Quest( - parts[0] // questID - , parts[1] // name - , stages_ - , ResourceFileParser.parseBoolean(parts[2], false) // showInLog - ); - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - if (quest.questID.trim().length() <= 0) { - L.log("WARNING: Quest with empty id."); - } else { - for (Quest q : quests) { - if (q.questID.equals(quest.questID)) { - L.log("OPTIMIZE: Quest " + quest.questID + " is duplicated."); - break; - } - } - } - if (quest.name.trim().length() <= 0) { - L.log("WARNING: Quest \"" + quest.questID + "\" has empty name."); - } - if (stages.size() <= 0) { - L.log("WARNING: Quest \"" + quest.questID + "\" has no log entries."); - } - boolean hasFinishingEntry = false; - for (QuestLogEntry entry : quest.stages) { - if (entry.finishesQuest) hasFinishingEntry = true; - if (entry.rewardExperience == 1) { - L.log("WARNING: Quest \"" + quest.questID + "\" has stage " + entry.progress + " that rewards just 1 exp. Might be malformed resourcefile?"); - } - } - if (quest.showInLog) { - if (!hasFinishingEntry) { - L.log("WARNING: Quest \"" + quest.questID + "\" is shown in log, but has no progress stage that finished the quest."); - } - } - } - quests.add(quest); + if (!quests.containsKey(questID)) { + L.log("WARNING: Cannot find quest \"" + questID + "\"."); } - }); + } + return quests.get(questID); } + public void initialize(QuestParser parser, String input) { + parser.parseRows(input, quests); + } + + + // Selftest method. Not part of the game logic. + public void verifyData() { + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + for (Quest q : quests.values()) { + if (q.name.trim().length() <= 0) { + L.log("WARNING: Quest \"" + q.questID + "\" has empty name."); + } + if (q.stages.length <= 0) { + L.log("WARNING: Quest \"" + q.questID + "\" has no log entries."); + } + boolean hasFinishingEntry = false; + for (QuestLogEntry entry : q.stages) { + if (entry.finishesQuest) hasFinishingEntry = true; + if (entry.rewardExperience == 1) { + L.log("WARNING: Quest \"" + q.questID + "\" has stage " + entry.progress + " that rewards just 1 exp. Might be malformed resourcefile?"); + } + } + if (q.showInLog) { + if (!hasFinishingEntry) { + L.log("WARNING: Quest \"" + q.questID + "\" is shown in log, but has no progress stage that finished the quest."); + } + } + } + } + } // Selftest method. Not part of the game logic. public void verifyData(ConversationCollection conversations) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { final HashSet suppliedStages = new HashSet(); conversations.DEBUG_getSuppliedQuestStages(suppliedStages); - for (Quest q : quests) { + for (Quest q : quests.values()) { for (QuestLogEntry e : q.stages) { String s = q.questID + ":" + e.progress; if (!suppliedStages.contains(s)) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java index 00938e830..8f1a0737d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/quest/QuestProgress.java @@ -1,7 +1,7 @@ package com.gpl.rpg.AndorsTrail.model.quest; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.ResourceParserUtils; 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 = ResourceFileParser.parseInt(parts[1], 0); + requiresQuestProgress = ResourceParserUtils.parseInt(parts[1], 0); } else if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { L.log("WARNING: Quest progress \"" + v + "\" does not specify any progress stage."); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileTokenizer.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileTokenizer.java new file mode 100644 index 000000000..d9b3b76a9 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileTokenizer.java @@ -0,0 +1,96 @@ +package com.gpl.rpg.AndorsTrail.resource; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; +import com.gpl.rpg.AndorsTrail.util.L; + +public class ResourceFileTokenizer { + private static final Pattern rowPattern = Pattern.compile("\\{(.+?)\\};", Pattern.MULTILINE | Pattern.DOTALL); + private static final String columnSeparator = "\\|"; + private static final String fieldPattern = "([^\\|]*?|\\{\\s*\\{.*?\\}\\s*\\})" + columnSeparator; + private static String repeat(String s, int count) { + String result = s; + for(int i = 1; i < count; ++i) result += s; + return result; + } + + + private final int columns; + private final Pattern pattern; + private final String[] parts; + + public ResourceFileTokenizer(int columns) { + this.columns = columns; + this.pattern = Pattern.compile("^" + repeat(fieldPattern, columns) + "$", Pattern.MULTILINE | Pattern.DOTALL); + this.parts = new String[columns]; + } + + private void tokenizeRows(String input, ArrayList dest, ResourceObjectParser parser) { + Matcher rowMatcher = rowPattern.matcher(input); + while (rowMatcher.find()) { + tokenizeRow(rowMatcher.group(1), dest, parser); + } + } + + public void tokenizeRows(String input, HashMap dest, ResourceObjectParser> parser) { + ArrayList> objects = new ArrayList>(); + tokenizeRows(input, objects, parser); + + for (Pair o : objects) { + final String id = o.first; + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + if (id == null || id.length() <= 0) { + L.log("WARNING: Entity " + o.second.toString() + " has empty id."); + } else if (dest.containsKey(id)) { + L.log("WARNING: Entity " + id + " is duplicated."); + } + } + dest.put(id, o.second); + } + } + + private void tokenizeRow(String input, ArrayList dest, ResourceObjectParser 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); + } + T obj = parser.parseRow(parts); + if (obj != null) dest.add(obj); + } + + + private static final Pattern outerPattern = Pattern.compile("^\\{(.*)\\}$", Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern innerPattern = Pattern.compile("\\{(.*?)\\}", Pattern.MULTILINE | Pattern.DOTALL); + + public void tokenizeArray(String input, ArrayList dest, ResourceObjectParser parser) { + Matcher matcher = outerPattern.matcher(input); + if (!matcher.find()) return; + + matcher = innerPattern.matcher(matcher.group(1)); + while (matcher.find()) { + tokenizeRow(matcher.group(1), dest, parser); + } + } + + public static interface ResourceObjectParser { + T parseRow(String[] parts); + } + + public static abstract class ResourceParserFor extends ResourceFileTokenizer implements ResourceObjectParser> { + public ResourceParserFor(int columns) { + super(columns); + } + + public void parseRows(String input, HashMap dest) { + tokenizeRows(input, dest, this); + } + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java index a8ac26a4a..b82e474ba 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java @@ -4,6 +4,13 @@ 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.map.TMXMapReader; +import com.gpl.rpg.AndorsTrail.resource.parsers.ActorConditionsTypeParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.ConversationListParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.DropListParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.ItemTypeParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.MonsterTypeParser; +import com.gpl.rpg.AndorsTrail.resource.parsers.QuestParser; +import com.gpl.rpg.AndorsTrail.util.L; import com.gpl.rpg.AndorsTrail.util.Size; import android.content.res.Resources; @@ -21,6 +28,7 @@ public final class ResourceLoader { public static void loadResources(WorldContext world, Resources r) { + long start = System.currentTimeMillis(); final TileStore tiles = world.tileStore; final int mTileSize = tiles.tileSize; @@ -48,41 +56,49 @@ public final class ResourceLoader { // ======================================================================== // Load condition types + final ActorConditionsTypeParser actorConditionsTypeParser = new ActorConditionsTypeParser(loader); final TypedArray conditionsToLoad = r.obtainTypedArray(actorConditionsResourceId); for (int i = 0; i < conditionsToLoad.length(); ++i) { - world.actorConditionsTypes.initialize(loader, conditionsToLoad.getString(i)); + world.actorConditionsTypes.initialize(actorConditionsTypeParser, conditionsToLoad.getString(i)); } // ======================================================================== // Load items + final ItemTypeParser itemTypeParser = new ItemTypeParser(loader, world.actorConditionsTypes); final TypedArray itemsToLoad = r.obtainTypedArray(itemsResourceId); for (int i = 0; i < itemsToLoad.length(); ++i) { - world.itemTypes.initialize(loader, world.actorConditionsTypes, itemsToLoad.getString(i)); + world.itemTypes.initialize(itemTypeParser, itemsToLoad.getString(i)); } // ======================================================================== // Load droplists + final DropListParser dropListParser = new DropListParser(world.itemTypes); final TypedArray droplistsToLoad = r.obtainTypedArray(droplistsResourceId); for (int i = 0; i < droplistsToLoad.length(); ++i) { - world.dropLists.initialize(world.itemTypes, droplistsToLoad.getString(i)); + world.dropLists.initialize(dropListParser, droplistsToLoad.getString(i)); } // ======================================================================== // Load quests + final QuestParser questParser = new QuestParser(); final TypedArray questsToLoad = r.obtainTypedArray(questsResourceId); for (int i = 0; i < questsToLoad.length(); ++i) { - world.quests.initialize(questsToLoad.getString(i)); + world.quests.initialize(questParser, questsToLoad.getString(i)); + } + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + world.quests.verifyData(); } // ======================================================================== // Load conversations + final ConversationListParser conversationListParser = new ConversationListParser(); final TypedArray conversationsListsToLoad = r.obtainTypedArray(conversationsListsResourceId); for (int i = 0; i < conversationsListsToLoad.length(); ++i) { - world.conversations.initialize(conversationsListsToLoad.getString(i)); + world.conversations.initialize(conversationListParser, conversationsListsToLoad.getString(i)); } if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { world.conversations.verifyData(); @@ -91,9 +107,10 @@ public final class ResourceLoader { // ======================================================================== // Load monsters + final MonsterTypeParser monsterTypeParser = new MonsterTypeParser(world.dropLists, world.actorConditionsTypes, loader); final TypedArray monstersToLoad = r.obtainTypedArray(monstersResourceId); for (int i = 0; i < monstersToLoad.length(); ++i) { - world.monsterTypes.initialize(world.dropLists, world.actorConditionsTypes, loader, monstersToLoad.getString(i)); + world.monsterTypes.initialize(monsterTypeParser, monstersToLoad.getString(i)); } if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { @@ -133,9 +150,13 @@ public final class ResourceLoader { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { world.verifyData(); } + + if (AndorsTrailApplication.DEVELOPMENT_DEBUGMESSAGES) { + long duration = System.currentTimeMillis() - start; + L.log("ResourceLoader ran for " + duration + " ms."); + } } - private static void prepareTilesets(DynamicTileLoader loader, int mTileSize) { final Size dst_sz1x1 = new Size(mTileSize, mTileSize); final Size dst_sz2x2 = new Size(mTileSize*2, mTileSize*2); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ActorConditionsTypeParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ActorConditionsTypeParser.java new file mode 100644 index 000000000..4989bd138 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ActorConditionsTypeParser.java @@ -0,0 +1,32 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType; +import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor; + +public final class ActorConditionsTypeParser extends ResourceParserFor { + + private final DynamicTileLoader tileLoader; + + public ActorConditionsTypeParser(final DynamicTileLoader tileLoader) { + super(29); + this.tileLoader = tileLoader; + } + + @Override + public Pair parseRow(String[] parts) { + final String conditionTypeID = parts[0]; + return new Pair(conditionTypeID, new ActorConditionType( + conditionTypeID + , parts[1] + , ResourceParserUtils.parseImageID(tileLoader, parts[2]) + , Integer.parseInt(parts[3]) + , ResourceParserUtils.parseBoolean(parts[4], false) + , ResourceParserUtils.parseStatsModifierTraits(parts, 5) + , ResourceParserUtils.parseStatsModifierTraits(parts, 11) + , ResourceParserUtils.parseAbilityModifierTraits(parts, 17) + )); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java new file mode 100644 index 000000000..5c98f9ce6 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java @@ -0,0 +1,48 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import java.util.ArrayList; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.conversation.Phrase; +import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reply; +import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor; + +public final class ConversationListParser extends ResourceParserFor { + + public ConversationListParser() { + super(5); + } + + private final ResourceFileTokenizer replyResourceTokenizer = new ResourceFileTokenizer(5); + private final ResourceObjectParser replyParser = new ResourceObjectParser() { + @Override + public Reply parseRow(String[] parts) { + return new Reply( + parts[0] // text + , parts[1] // nextPhrase + , QuestProgress.parseQuestProgress(parts[2]) // requiresProgress + , ResourceParserUtils.parseNullableString(parts[3]) // requiresItemType + , ResourceParserUtils.parseInt(parts[4], 0) // requiresItemQuantity + ); + } + }; + + @Override + public Pair parseRow(String[] parts) { + // [id|message|progressQuest|rewardDropListID|replies[text|nextPhraseID|requires_Progress|requires_itemID|requires_Quantity|]|]; + + final ArrayList replies = new ArrayList(); + replyResourceTokenizer.tokenizeArray(parts[4], replies, replyParser); + final Reply[] _replies = replies.toArray(new Reply[replies.size()]); + + return new Pair(parts[0], new Phrase( + ResourceParserUtils.parseNullableString(parts[1]) // message + , _replies // replies + , QuestProgress.parseQuestProgress(parts[2]) // questProgress + , ResourceParserUtils.parseNullableString(parts[3]) // rewardDroplist + )); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/DropListParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/DropListParser.java new file mode 100644 index 000000000..56a0ae810 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/DropListParser.java @@ -0,0 +1,51 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import java.util.ArrayList; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; +import com.gpl.rpg.AndorsTrail.model.item.DropList; +import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection; +import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor; +import com.gpl.rpg.AndorsTrail.util.L; + +public final class DropListParser extends ResourceParserFor { + + private final ResourceFileTokenizer droplistItemResourceTokenizer = new ResourceFileTokenizer(4); + private final ResourceObjectParser dropItemParser; + + public DropListParser(final ItemTypeCollection itemTypes) { + super(2); + this.dropItemParser = new ResourceObjectParser() { + @Override + public DropItem parseRow(String[] parts) { + return new DropItem( + itemTypes.getItemType(parts[0]) // Itemtype + , ResourceParserUtils.parseChance(parts[3]) // Chance + , ResourceParserUtils.parseQuantity(parts[1], parts[2]) // Quantity + ); + } + }; + } + + @Override + public Pair parseRow(String[] parts) { + // [id|items[itemID|quantity_Min|quantity_Max|chance|]|]; + + String droplistID = parts[0]; + + final ArrayList items = new ArrayList(); + droplistItemResourceTokenizer.tokenizeArray(parts[1], items, dropItemParser); + DropItem[] items_ = items.toArray(new DropItem[items.size()]); + + if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { + if (items_.length <= 0) { + L.log("OPTIMIZE: Droplist \"" + droplistID + "\" has no dropped items."); + } + } + return new Pair(droplistID, new DropList(items_)); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTraitsParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTraitsParser.java new file mode 100644 index 000000000..66ad2ef26 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTraitsParser.java @@ -0,0 +1,116 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import java.util.ArrayList; + +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.item.ItemTraits_OnEquip; +import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceObjectParser; +import com.gpl.rpg.AndorsTrail.util.ConstRange; +import com.gpl.rpg.AndorsTrail.util.L; + +public final class ItemTraitsParser { + private final ResourceObjectParser actorConditionEffectParser_withDuration; + private final ResourceObjectParser actorConditionEffectParser_withoutDuration; + private final ResourceFileTokenizer tokenize4Fields = new ResourceFileTokenizer(4); + private final ResourceFileTokenizer tokenize2Fields = new ResourceFileTokenizer(2); + + public ItemTraitsParser(final ActorConditionTypeCollection actorConditionTypes) { + this.actorConditionEffectParser_withDuration = new ResourceObjectParser() { + @Override + public ActorConditionEffect parseRow(String[] parts) { + return new ActorConditionEffect( + actorConditionTypes.getActorConditionType(parts[0]) + , ResourceParserUtils.parseInt(parts[1], ActorCondition.MAGNITUDE_REMOVE_ALL) + , ResourceParserUtils.parseInt(parts[2], ActorCondition.DURATION_FOREVER) + , ResourceParserUtils.parseChance(parts[3]) + ); + } + }; + this.actorConditionEffectParser_withoutDuration = new ResourceObjectParser() { + @Override + public ActorConditionEffect parseRow(String[] parts) { + return new ActorConditionEffect( + actorConditionTypes.getActorConditionType(parts[0]) + , ResourceParserUtils.parseInt(parts[1], 1) + , ActorCondition.DURATION_FOREVER + , ResourceParserUtils.always + ); + } + }; + } + + public ItemTraits_OnUse parseItemTraits_OnUse(String[] parts, int startIndex, boolean parseTargetConditions) { + boolean hasEffect = ResourceParserUtils.parseBoolean(parts[startIndex], false); + if (!hasEffect) return null; + + ConstRange boostCurrentHP = ResourceParserUtils.parseRange(parts[startIndex + 1], parts[startIndex + 2]); + ConstRange boostCurrentAP = ResourceParserUtils.parseRange(parts[startIndex + 3], parts[startIndex + 4]); + final ArrayList addedConditions_source = new ArrayList(); + final ArrayList addedConditions_target = new ArrayList(); + tokenize4Fields.tokenizeArray(parts[startIndex + 5], addedConditions_source, actorConditionEffectParser_withDuration); + if (parseTargetConditions) { + tokenize4Fields.tokenizeArray(parts[startIndex + 6], addedConditions_target, actorConditionEffectParser_withDuration); + } + 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( + ItemTraits_OnUse.VISUAL_EFFECT_NONE + ,boostCurrentHP + ,boostCurrentAP + ,listToArray(addedConditions_source) + ,listToArray(addedConditions_target) + ); + } + } + + public ItemTraits_OnEquip parseItemTraits_OnEquip(String[] parts, int startIndex) { + boolean hasEffect = ResourceParserUtils.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 = ResourceParserUtils.parseCombatTraits(parts, startIndex + 4); + final ArrayList addedConditions = new ArrayList(); + tokenize2Fields.tokenizeArray(parts[startIndex + 12], addedConditions, actorConditionEffectParser_withoutDuration); + + if ( boostMaxHP.length() <= 0 + && boostMaxAP.length() <= 0 + && moveCostPenalty.length() <= 0 + && 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( + ResourceParserUtils.parseInt(boostMaxHP, 0) + ,ResourceParserUtils.parseInt(boostMaxAP, 0) + ,ResourceParserUtils.parseInt(moveCostPenalty, 0) + ,combatTraits + ,listToArray(addedConditions) + ); + } + } + + private static ActorConditionEffect[] listToArray(ArrayList list) { + if (list.isEmpty()) return null; + return list.toArray(new ActorConditionEffect[list.size()]); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java new file mode 100644 index 000000000..b834bc0de --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java @@ -0,0 +1,49 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; +import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnEquip; +import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse; +import com.gpl.rpg.AndorsTrail.model.item.ItemType; +import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor; + +public final class ItemTypeParser extends ResourceParserFor { + + private final DynamicTileLoader tileLoader; + private final ItemTraitsParser itemTraitsParser; + + public ItemTypeParser(DynamicTileLoader tileLoader, ActorConditionTypeCollection actorConditionsTypes) { + super(39); + this.tileLoader = tileLoader; + this.itemTraitsParser = new ItemTraitsParser(actorConditionsTypes); + } + + @Override + public Pair parseRow(String[] parts) { + final String itemTypeName = parts[2]; + String id = parts[0]; + final ItemTraits_OnEquip equipEffect = itemTraitsParser.parseItemTraits_OnEquip(parts, 7); + final ItemTraits_OnUse useEffect = itemTraitsParser.parseItemTraits_OnUse(parts, 20, false); + final ItemTraits_OnUse hitEffect = itemTraitsParser.parseItemTraits_OnUse(parts, 26, true); + final ItemTraits_OnUse killEffect = itemTraitsParser.parseItemTraits_OnUse(parts, 33, false); + + final int baseMarketCost = Integer.parseInt(parts[6]); + final boolean hasManualPrice = ResourceParserUtils.parseBoolean(parts[5], false); + final ItemType itemType = new ItemType( + id + , ResourceParserUtils.parseImageID(tileLoader, parts[1]) + , itemTypeName + , Integer.parseInt(parts[3]) // category + , ResourceParserUtils.parseInt(parts[4], ItemType.DISPLAYTYPE_ORDINARY) // Displaytype + , hasManualPrice // hasManualPrice + , baseMarketCost // Base market cost + , equipEffect + , useEffect + , hitEffect + , killEffect + ); + return new Pair(id, itemType); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java new file mode 100644 index 000000000..e77ee3a85 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java @@ -0,0 +1,67 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.controller.Constants; +import com.gpl.rpg.AndorsTrail.model.CombatTraits; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection; +import com.gpl.rpg.AndorsTrail.model.actor.MonsterType; +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.ResourceFileTokenizer.ResourceParserFor; +import com.gpl.rpg.AndorsTrail.util.Size; + +public final class MonsterTypeParser extends ResourceParserFor { + + private final Size size1x1 = new Size(1, 1); + private final DropListCollection droplists; + private final ItemTraitsParser itemTraitsParser; + private final DynamicTileLoader tileLoader; + + public MonsterTypeParser(final DropListCollection droplists, final ActorConditionTypeCollection actorConditionTypes, final DynamicTileLoader tileLoader) { + super(25); + this.itemTraitsParser = new ItemTraitsParser(actorConditionTypes); + this.droplists = droplists; + this.tileLoader = tileLoader; + } + + @Override + public Pair parseRow(String[] parts) { + final String monsterTypeId = parts[0]; + final int maxHP = ResourceParserUtils.parseInt(parts[5], 1); + final int maxAP = ResourceParserUtils.parseInt(parts[6], 10); + final CombatTraits combatTraits = ResourceParserUtils.parseCombatTraits(parts, 8); + final ItemTraits_OnUse hitEffect = itemTraitsParser.parseItemTraits_OnUse(parts, 18, true); + final int exp = getExpectedMonsterExperience(combatTraits, hitEffect, maxHP, maxAP); + return new Pair(monsterTypeId, new MonsterType( + monsterTypeId + , parts[2] // Name + , parts[3] // Tags + , ResourceParserUtils.parseImageID(tileLoader, parts[1]) + , ResourceParserUtils.parseSize(parts[4], size1x1) //TODO: This could be loaded from the tileset size instead. + , maxHP // HP + , maxAP // AP + , ResourceParserUtils.parseInt(parts[7], 10) // MoveCost + , combatTraits + , hitEffect + , exp // Exp + , droplists.getDropList(parts[16]) // Droplist + , ResourceParserUtils.parseNullableString(parts[17]) // PhraseID + )); + } + + private static float div100(int v) { + return (float) v / 100f; + } + private static int getExpectedMonsterExperience(final CombatTraits t, ItemTraits_OnUse hitEffect, final int maxHP, final int maxAP) { + if (t == null) return 0; + final float avgAttackHP = t.getAttacksPerTurn(maxAP) * div100(t.attackChance) * t.damagePotential.averagef() * (1 + div100(t.criticalChance) * t.criticalMultiplier); + final float avgDefenseHP = maxHP * (1 + div100(t.blockChance)) + Constants.EXP_FACTOR_DAMAGERESISTANCE * t.damageResistance; + int attackConditionBonus = 0; + if (hitEffect != null && hitEffect.addedConditions_target != null && hitEffect.addedConditions_target.length > 0) { + attackConditionBonus += 50; + } + return (int) Math.ceil((avgAttackHP * 3 + avgDefenseHP) * Constants.EXP_FACTOR_SCALING) + attackConditionBonus; + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java new file mode 100644 index 000000000..91623933c --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java @@ -0,0 +1,56 @@ +package com.gpl.rpg.AndorsTrail.resource.parsers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +import android.util.Pair; + +import com.gpl.rpg.AndorsTrail.model.quest.Quest; +import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer; +import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor; + +public final class QuestParser extends ResourceParserFor { + + private final ResourceFileTokenizer questStageResourceTokenizer = new ResourceFileTokenizer(4); + private final ResourceObjectParser questLogEntryParser = new ResourceObjectParser() { + @Override + public QuestLogEntry parseRow(String[] parts) { + return new QuestLogEntry( + Integer.parseInt(parts[0]) // Progress + , parts[1] // Logtext + , ResourceParserUtils.parseInt(parts[2], 0) // RewardExperience + , ResourceParserUtils.parseBoolean(parts[3], false) // FinishesQuest + ); + } + }; + private final Comparator sortByQuestProgress = new Comparator() { + @Override + public int compare(QuestLogEntry a, QuestLogEntry b) { + return a.progress - b.progress; + } + }; + + public QuestParser() { + super(4); + } + + @Override + public Pair parseRow(String[] parts) { + // [id|name|showInLog|stages[progress|logText|rewardExperience|finishesQuest|]|]; + + final ArrayList stages = new ArrayList(); + questStageResourceTokenizer.tokenizeArray(parts[3], stages, questLogEntryParser); + Collections.sort(stages, sortByQuestProgress); + final QuestLogEntry[] stages_ = stages.toArray(new QuestLogEntry[stages.size()]); + + final String questID = parts[0]; + return new Pair(questID, new Quest( + questID // questID + , parts[1] // name + , stages_ + , ResourceParserUtils.parseBoolean(parts[2], false) // showInLog + )); + } +} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java similarity index 50% rename from AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java rename to AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java index 483d0fdd4..cc0416b50 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceFileParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java @@ -1,30 +1,15 @@ -package com.gpl.rpg.AndorsTrail.resource; - -import java.util.ArrayList; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +package com.gpl.rpg.AndorsTrail.resource.parsers; 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.resource.DynamicTileLoader; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; import com.gpl.rpg.AndorsTrail.util.Size; -public class ResourceFileParser { - private static final Pattern rowPattern = Pattern.compile("\\{(.+?)\\};", Pattern.MULTILINE | Pattern.DOTALL); - private static final String columnSeparator = "\\|"; - private static String repeat(String s, int count) { - String result = s; - for(int i = 1; i < count; ++i) result += s; - return result; - } +public final class ResourceParserUtils { public static int parseImageID(DynamicTileLoader tileLoader, String s) { String[] parts = s.split(":"); @@ -175,7 +160,7 @@ public class ResourceFileParser { return parseRange(min, max); } - private static final ConstRange always = one; + public 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 sometimes = new ConstRange(100, 25); @@ -204,155 +189,4 @@ public class ResourceFileParser { } else return new ConstRange(100, parseInt(v, 10)); } - - private static ActorConditionEffect parseActorConditionEffect(ActorConditionTypeCollection actorConditionTypes, String[] parts, boolean includeDuration) { - if (includeDuration) { - return new ActorConditionEffect( - actorConditionTypes.getActorConditionType(parts[0]) - , parseInt(parts[1], ActorCondition.MAGNITUDE_REMOVE_ALL) - , parseInt(parts[2], ActorCondition.DURATION_FOREVER) - , parseChance(parts[3]) - ); - } else { - return new ActorConditionEffect( - actorConditionTypes.getActorConditionType(parts[0]) - , parseInt(parts[1], 1) - , ActorCondition.DURATION_FOREVER - , always - ); - } - } - - private static class ActorConditionTypeArrayAppender implements ResourceObjectFieldParser { - private final ActorConditionTypeCollection actorConditionTypes; - private final ArrayList dest; - private final boolean includeDuration; - public ActorConditionTypeArrayAppender(ActorConditionTypeCollection actorConditionTypes, ArrayList dest, boolean includeDuration) { - this.actorConditionTypes = actorConditionTypes; - this.dest = dest; - this.includeDuration = includeDuration; - } - @Override - public void matchedRow(String[] parts) { - ActorConditionEffect a = parseActorConditionEffect(actorConditionTypes, parts, includeDuration); - if (a != null) dest.add(a); - } - } - private static final ResourceObjectTokenizer tokenize4Fields = new ResourceObjectTokenizer(4); - public static ItemTraits_OnUse parseItemTraits_OnUse(final ActorConditionTypeCollection actorConditionTypes, String[] parts, int startIndex, boolean parseTargetConditions) { - boolean hasEffect = parseBoolean(parts[startIndex], false); - if (!hasEffect) return null; - - ConstRange boostCurrentHP = parseRange(parts[startIndex + 1], parts[startIndex + 2]); - ConstRange boostCurrentAP = parseRange(parts[startIndex + 3], parts[startIndex + 4]); - final ArrayList addedConditions_source = new ArrayList(); - final ArrayList addedConditions_target = new ArrayList(); - ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 5], tokenize4Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions_source, true)); - if (parseTargetConditions) { - ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 6], tokenize4Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions_target, true)); - } - if ( boostCurrentHP == null - && boostCurrentAP == null - && addedConditions_source.isEmpty() - && addedConditions_target.isEmpty() - ) { - if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("OPTIMIZE: Tried to parseItemTraits_OnUse , where hasEffect=" + parts[startIndex] + ", but all data was empty."); - } - return null; - } else { - return new ItemTraits_OnUse( - ItemTraits_OnUse.VISUAL_EFFECT_NONE - ,boostCurrentHP - ,boostCurrentAP - ,listToArray(addedConditions_source) - ,listToArray(addedConditions_target) - ); - } - } - - private static final ResourceObjectTokenizer tokenize2Fields = new ResourceObjectTokenizer(2); - public static ItemTraits_OnEquip parseItemTraits_OnEquip(final ActorConditionTypeCollection actorConditionTypes, String[] parts, int startIndex) { - boolean hasEffect = parseBoolean(parts[startIndex], false); - if (!hasEffect) return null; - - String boostMaxHP = parts[startIndex + 1]; - String boostMaxAP = parts[startIndex + 2]; - String moveCostPenalty = parts[startIndex + 3]; - CombatTraits combatTraits = parseCombatTraits(parts, startIndex + 4); - final ArrayList addedConditions = new ArrayList(); - ResourceObjectArrayTokenizer.tokenize(parts[startIndex + 12], tokenize2Fields, new ActorConditionTypeArrayAppender(actorConditionTypes, addedConditions, false)); - - if ( boostMaxHP.length() <= 0 - && boostMaxAP.length() <= 0 - && moveCostPenalty.length() <= 0 - && 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) - ); - } - } - - public static ActorConditionEffect[] listToArray(ArrayList list) { - if (list.isEmpty()) return null; - return list.toArray(new ActorConditionEffect[list.size()]); - } - - public static class ResourceObjectTokenizer { - private static final String fieldPattern = "([^\\|]*?|\\{\\s*\\{.*?\\}\\s*\\})" + columnSeparator; - - private final int columns; - private final Pattern pattern; - private final String[] parts; - public ResourceObjectTokenizer(int columns) { - this.columns = columns; - this.pattern = Pattern.compile("^" + repeat(fieldPattern, columns) + "$", Pattern.MULTILINE | Pattern.DOTALL); - this.parts = new String[columns]; - } - public void tokenizeRows(String input, ResourceObjectFieldParser parser) { - Matcher rowMatcher = rowPattern.matcher(input); - while (rowMatcher.find()) { - tokenizeRow(rowMatcher.group(1), parser); - } - } - public void tokenizeRow(String input, ResourceObjectFieldParser parser) { - Matcher groups = pattern.matcher(input); - if (!groups.find()) return; - if (groups.groupCount() < columns) return; - for(int i = 0; i < columns; ++i) { - parts[i] = groups.group(i + 1); - } - parser.matchedRow(parts); - } - } - - public static class ResourceObjectArrayTokenizer { - private static final Pattern outerPattern = Pattern.compile("^\\{(.*)\\}$", Pattern.MULTILINE | Pattern.DOTALL); - private static final Pattern innerPattern = Pattern.compile("\\{(.*?)\\}", Pattern.MULTILINE | Pattern.DOTALL); - - public static void tokenize(String input, ResourceObjectTokenizer objectTokenizer, ResourceObjectFieldParser parser) { - Matcher matcher = outerPattern.matcher(input); - if (!matcher.find()) return; - - matcher = innerPattern.matcher(matcher.group(1)); - while (matcher.find()) { - objectTokenizer.tokenizeRow(matcher.group(1), parser); - } - } - } - - public interface ResourceObjectFieldParser { - void matchedRow(String[] parts); - } } diff --git a/AndorsTrailEdit/AndorsTrailEditor.js b/AndorsTrailEdit/AndorsTrailEditor.js index e8405e455..ee02c15e3 100644 --- a/AndorsTrailEdit/AndorsTrailEditor.js +++ b/AndorsTrailEdit/AndorsTrailEditor.js @@ -82,8 +82,8 @@ function addExampleModelItems(model) { model.quests.add({id: "testQuest", name: "Test quest", stages: [ { progress: 10, logText: "Stage 10"} , { progress: 20, logText: "Stage 20", finishesQuest: 1 } ] }); - model.items.add({iconID: "items_weapons:0", name: "Test item", searchTag: "item0", category: 0, baseMarketCost: 51, hasEquipEffect: 1, equip_attackChance: 10, equip_attackDamage_Min: 2, equip_attackDamage_Max: 4, equip_attackCost: 4}); - model.items.add({iconID: "items_jewelry:0", name: "Ring of damage +1", searchTag: "dmg_ring1", category: 7, baseMarketCost: 62, hasEquipEffect: 1, equip_attackDamage_Min: 1, equip_attackDamage_Max: 1}); + model.items.add({id: "item0", iconID: "items_weapons:0", name: "Test item", category: 0, baseMarketCost: 51, hasEquipEffect: 1, equip_attackChance: 10, equip_attackDamage_Min: 2, equip_attackDamage_Max: 4, equip_attackCost: 4}); + model.items.add({id: "dmg_ring1", iconID: "items_jewelry:0", name: "Ring of damage +1", category: 7, baseMarketCost: 62, hasEquipEffect: 1, equip_attackDamage_Min: 1, equip_attackDamage_Max: 1}); model.droplists.add({id: "merchant1", items: [ { itemID: 'dmg_ring1', quantity_Min: 4, quantity_Max: 5, chance: 100 } , { itemID: 'item0', quantity_Min: 1, quantity_Max: 1, chance: 100 } ] } ); @@ -118,14 +118,14 @@ function startEditor() { }) ,items: new DataStore({ objectTypename: 'item' - ,fieldList: new FieldList("[searchTag|iconID|name|category|displaytype|hasManualPrice|baseMarketCost|" + ,fieldList: new FieldList("[id|iconID|name|category|displaytype|hasManualPrice|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|hit_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|]|" + "];" ) - ,idField: 'searchTag' + ,idField: 'id' ,nameField: 'name' }) ,droplists: new DataStore({ @@ -165,7 +165,7 @@ function startEditor() { return {name: "New Quest", id: 'new_quest' }; }); bindEditorType(model.items, $( "#tools #itemlist" ), createItemEditor, function() { - return {name: "New Item", searchTag: "new_item", category: 31 }; + return {name: "New Item", id: "new_item", category: 31 }; }); bindEditorType(model.droplists, $( "#tools #droplist" ), createDroplistEditor, function() { return {id: "new_droplist" }; diff --git a/AndorsTrailEdit/editor.html b/AndorsTrailEdit/editor.html index 5d10a031a..a0651e195 100644 --- a/AndorsTrailEdit/editor.html +++ b/AndorsTrailEdit/editor.html @@ -346,8 +346,8 @@
- - + +