diff --git a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
index 483383716..146a4d1b1 100644
--- a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
+++ b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
@@ -79,82 +79,86 @@ public final class R {
public static final int icon_coins=0x7f020011;
public static final int items_armours=0x7f020012;
public static final int items_armours_2=0x7f020013;
- public static final int items_books=0x7f020014;
- public static final int items_consumables=0x7f020015;
- public static final int items_jewelry=0x7f020016;
- public static final int items_misc=0x7f020017;
- public static final int items_weapons=0x7f020018;
- public static final int items_weapons_2=0x7f020019;
- public static final int karvis_monsters1=0x7f02001a;
- public static final int karvis_npc=0x7f02001b;
- public static final int map_tiles_1_1=0x7f02001c;
- public static final int map_tiles_1_2=0x7f02001d;
- public static final int map_tiles_1_3=0x7f02001e;
- public static final int map_tiles_1_4=0x7f02001f;
- public static final int map_tiles_1_5=0x7f020020;
- public static final int map_tiles_1_6=0x7f020021;
- public static final int map_tiles_1_7=0x7f020022;
- public static final int map_tiles_1_8=0x7f020023;
- public static final int map_tiles_2_1=0x7f020024;
- public static final int map_tiles_2_2=0x7f020025;
- public static final int map_tiles_2_3=0x7f020026;
- public static final int map_tiles_2_4=0x7f020027;
- public static final int map_tiles_2_5=0x7f020028;
- public static final int map_tiles_2_6=0x7f020029;
- public static final int map_tiles_2_7=0x7f02002a;
- public static final int map_tiles_2_8=0x7f02002b;
- public static final int monsters_armor1=0x7f02002c;
- public static final int monsters_cyclops=0x7f02002d;
- public static final int monsters_demon1=0x7f02002e;
- public static final int monsters_dogs=0x7f02002f;
- public static final int monsters_dragon1=0x7f020030;
- public static final int monsters_eye1=0x7f020031;
- public static final int monsters_eye2=0x7f020032;
- public static final int monsters_eye3=0x7f020033;
- public static final int monsters_eye4=0x7f020034;
- public static final int monsters_ghost1=0x7f020035;
- public static final int monsters_hydra1=0x7f020036;
- public static final int monsters_insects=0x7f020037;
- public static final int monsters_liches=0x7f020038;
- public static final int monsters_mage=0x7f020039;
- public static final int monsters_mage2=0x7f02003a;
- public static final int monsters_man1=0x7f02003b;
- public static final int monsters_men=0x7f02003c;
- public static final int monsters_men2=0x7f02003d;
- public static final int monsters_misc=0x7f02003e;
- public static final int monsters_rats=0x7f02003f;
- public static final int monsters_redshrike1=0x7f020040;
- public static final int monsters_rltiles1=0x7f020041;
- public static final int monsters_rltiles2=0x7f020042;
- public static final int monsters_rogue1=0x7f020043;
- public static final int monsters_skeleton1=0x7f020044;
- public static final int monsters_skeleton2=0x7f020045;
- public static final int monsters_snakes=0x7f020046;
- public static final int monsters_warrior1=0x7f020047;
- public static final int monsters_wraiths=0x7f020048;
- public static final int monsters_zombie1=0x7f020049;
- public static final int monsters_zombie2=0x7f02004a;
- public static final int ui_bar_background=0x7f02004b;
- public static final int ui_blue_foreground=0x7f02004c;
- public static final int ui_boxshape=0x7f02004d;
- public static final int ui_debug_background=0x7f02004e;
- public static final int ui_dpad=0x7f02004f;
- public static final int ui_gradientshape=0x7f020050;
- public static final int ui_gradientshape_translucent=0x7f020051;
- public static final int ui_green_foreground=0x7f020052;
- public static final int ui_icon_equipment=0x7f020053;
- public static final int ui_icon_quest=0x7f020054;
- public static final int ui_icon_skill=0x7f020055;
- public static final int ui_progress_ap=0x7f020056;
- public static final int ui_progress_exp=0x7f020057;
- public static final int ui_progress_health=0x7f020058;
- public static final int ui_purple_foreground=0x7f020059;
- public static final int ui_quickslots=0x7f02005a;
- public static final int ui_red_foreground=0x7f02005b;
- public static final int ui_selections=0x7f02005c;
- public static final int ui_startbackground=0x7f02005d;
- public static final int ui_statustext=0x7f02005e;
- public static final int ui_yellow_foreground=0x7f02005f;
+ public static final int items_armours_3=0x7f020014;
+ public static final int items_books=0x7f020015;
+ public static final int items_consumables=0x7f020016;
+ public static final int items_jewelry=0x7f020017;
+ public static final int items_misc=0x7f020018;
+ public static final int items_necklaces_1=0x7f020019;
+ public static final int items_rings_1=0x7f02001a;
+ public static final int items_weapons=0x7f02001b;
+ public static final int items_weapons_2=0x7f02001c;
+ public static final int items_weapons_3=0x7f02001d;
+ public static final int karvis_monsters1=0x7f02001e;
+ public static final int karvis_npc=0x7f02001f;
+ public static final int map_tiles_1_1=0x7f020020;
+ public static final int map_tiles_1_2=0x7f020021;
+ public static final int map_tiles_1_3=0x7f020022;
+ public static final int map_tiles_1_4=0x7f020023;
+ public static final int map_tiles_1_5=0x7f020024;
+ public static final int map_tiles_1_6=0x7f020025;
+ public static final int map_tiles_1_7=0x7f020026;
+ public static final int map_tiles_1_8=0x7f020027;
+ public static final int map_tiles_2_1=0x7f020028;
+ public static final int map_tiles_2_2=0x7f020029;
+ public static final int map_tiles_2_3=0x7f02002a;
+ public static final int map_tiles_2_4=0x7f02002b;
+ public static final int map_tiles_2_5=0x7f02002c;
+ public static final int map_tiles_2_6=0x7f02002d;
+ public static final int map_tiles_2_7=0x7f02002e;
+ public static final int map_tiles_2_8=0x7f02002f;
+ public static final int monsters_armor1=0x7f020030;
+ public static final int monsters_cyclops=0x7f020031;
+ public static final int monsters_demon1=0x7f020032;
+ public static final int monsters_dogs=0x7f020033;
+ public static final int monsters_dragon1=0x7f020034;
+ public static final int monsters_eye1=0x7f020035;
+ public static final int monsters_eye2=0x7f020036;
+ public static final int monsters_eye3=0x7f020037;
+ public static final int monsters_eye4=0x7f020038;
+ public static final int monsters_ghost1=0x7f020039;
+ public static final int monsters_hydra1=0x7f02003a;
+ public static final int monsters_insects=0x7f02003b;
+ public static final int monsters_liches=0x7f02003c;
+ public static final int monsters_mage=0x7f02003d;
+ public static final int monsters_mage2=0x7f02003e;
+ public static final int monsters_man1=0x7f02003f;
+ public static final int monsters_men=0x7f020040;
+ public static final int monsters_men2=0x7f020041;
+ public static final int monsters_misc=0x7f020042;
+ public static final int monsters_rats=0x7f020043;
+ public static final int monsters_redshrike1=0x7f020044;
+ public static final int monsters_rltiles1=0x7f020045;
+ public static final int monsters_rltiles2=0x7f020046;
+ public static final int monsters_rogue1=0x7f020047;
+ public static final int monsters_skeleton1=0x7f020048;
+ public static final int monsters_skeleton2=0x7f020049;
+ public static final int monsters_snakes=0x7f02004a;
+ public static final int monsters_warrior1=0x7f02004b;
+ public static final int monsters_wraiths=0x7f02004c;
+ public static final int monsters_zombie1=0x7f02004d;
+ public static final int monsters_zombie2=0x7f02004e;
+ public static final int ui_bar_background=0x7f02004f;
+ public static final int ui_blue_foreground=0x7f020050;
+ public static final int ui_boxshape=0x7f020051;
+ public static final int ui_debug_background=0x7f020052;
+ public static final int ui_dpad=0x7f020053;
+ public static final int ui_gradientshape=0x7f020054;
+ public static final int ui_gradientshape_translucent=0x7f020055;
+ public static final int ui_green_foreground=0x7f020056;
+ public static final int ui_icon_equipment=0x7f020057;
+ public static final int ui_icon_quest=0x7f020058;
+ public static final int ui_icon_skill=0x7f020059;
+ public static final int ui_progress_ap=0x7f02005a;
+ public static final int ui_progress_exp=0x7f02005b;
+ public static final int ui_progress_health=0x7f02005c;
+ public static final int ui_purple_foreground=0x7f02005d;
+ public static final int ui_quickslots=0x7f02005e;
+ public static final int ui_red_foreground=0x7f02005f;
+ public static final int ui_selections=0x7f020060;
+ public static final int ui_startbackground=0x7f020061;
+ public static final int ui_statustext=0x7f020062;
+ public static final int ui_yellow_foreground=0x7f020063;
}
public static final class id {
public static final int abilitymodifierinfo_change_maxap=0x7f090005;
diff --git a/AndorsTrail/res/drawable/items_armours_3.png b/AndorsTrail/res/drawable/items_armours_3.png
new file mode 100644
index 000000000..03b06fbe3
Binary files /dev/null and b/AndorsTrail/res/drawable/items_armours_3.png differ
diff --git a/AndorsTrail/res/drawable/items_necklaces_1.png b/AndorsTrail/res/drawable/items_necklaces_1.png
new file mode 100644
index 000000000..da5e08f18
Binary files /dev/null and b/AndorsTrail/res/drawable/items_necklaces_1.png differ
diff --git a/AndorsTrail/res/drawable/items_rings_1.png b/AndorsTrail/res/drawable/items_rings_1.png
new file mode 100644
index 000000000..487e03b7e
Binary files /dev/null and b/AndorsTrail/res/drawable/items_rings_1.png differ
diff --git a/AndorsTrail/res/drawable/items_weapons.png b/AndorsTrail/res/drawable/items_weapons.png
index da3c493e9..6e55bf75d 100644
Binary files a/AndorsTrail/res/drawable/items_weapons.png and b/AndorsTrail/res/drawable/items_weapons.png differ
diff --git a/AndorsTrail/res/drawable/items_weapons_3.png b/AndorsTrail/res/drawable/items_weapons_3.png
new file mode 100644
index 000000000..f5af42605
Binary files /dev/null and b/AndorsTrail/res/drawable/items_weapons_3.png differ
diff --git a/AndorsTrail/res/values-de/content_itemlist.xml b/AndorsTrail/res/values-de/content_itemlist.xml
index ffe6c1145..268ff6f27 100644
--- a/AndorsTrail/res/values-de/content_itemlist.xml
+++ b/AndorsTrail/res/values-de/content_itemlist.xml
@@ -8,11 +8,11 @@
[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|]|];
-{club1|items_weapons:56|Holzknüppel|0|||7|1||||5|10|||0|1|||||||||||||||||||||||};
-{club3|items_weapons:58|Eisenknüppel|0|||253|1||||6|5|||2|7|||||||||||||||||||||||};
+{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|||||||||||||||||||||||};
-{hammer0|items_weapons:59|Eisenhammer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
-{hammer1|items_weapons:59|Riesenhammer|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
+{hammer0|items_weapons:45|Eisenhammer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
+{hammer1|items_weapons:45|Riesenhammer|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
{dagger0|items_weapons:14|Eisendolch|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
{dagger1|items_weapons:14|Scharfer Eisendolch|0|||53|1||||4|20|||1|2|||||||||||||||||||||||};
{dagger2|items_weapons:14|Edler Eisendolch|0|||70|1||||4|25|||1|2|||||||||||||||||||||||};
@@ -22,8 +22,8 @@
{broadsword1|items_weapons:5|Eisenbreitschwert|0|||251|1||||7|2|||1|10|||||||||||||||||||||||};
{broadsword2|items_weapons:6|Stahlbreitschwert|0|||582|1||||6|15|||3|10|||||||||||||||||||||||};
{steelsword1|items_weapons:7|Stahlschwert|0|||874|1||||4|24|||3|7|||||||||||||||||||||||};
-{axe1|items_weapons:70|Holzfälleraxt|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
-{axe2|items_weapons:70|Eisenaxt|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
+{axe1|items_weapons:56|Holzfälleraxt|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
+{axe2|items_weapons:56|Eisenaxt|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
{quickdagger1|items_weapons:14|Schnellstoßdolch|0|4||512|1||||3|20|||0|0|-20||||||||||||||||||||||};
@@ -163,12 +163,12 @@
{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||||||||||||||||||||||};
-{sleepingmead|items_consumables:51|Fleisch mit Schlafmittel|31|1|1|0|||||||||||||||||||||||||||||||||};
+{sleepingmead|items_consumables:51|Schlafmet|31|1|1|0|||||||||||||||||||||||||||||||||};
{ffguard_qitem|items_jewelry:0|Ring der Feygard Patrouille|31|1|1|0|||||||||||||||||||||||||||||||||};
{shield6|items_armours:3|Turmschild aus Holz|1|||952|1|||||-6|||||12||||||||||||||||||||||};
{shield7|items_armours:3|Turmschild aus Hartholz|1|||1538|1|||||-6|||||14||||||||||||||||||||||};
-{club_wood1|items_weapons:58|Schwerer Eisenknüppel|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
-{club_wood2|items_weapons:58|Kriegseisenknüppel|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
+{club_wood1|items_weapons:44|Schwerer Eisenknüppel|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
+{club_wood2|items_weapons:44|Kriegseisenknüppel|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
{gloves_grip|items_armours:35|Handschuhe der besseren Haftung|4|||471|1|||||9|||||1||||||||||||||||||||||};
{gloves_fancy|items_armours:35|Modische Handschuhe|4|||78|1|||||5|||||||||||||||||||||||||||};
{ring_crit1|items_jewelry:0|Schlagring|7|4||2921|1||||||5||||||||||||||||||||||||||};
@@ -179,11 +179,11 @@
[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|]|];
-{rapier_lifesteal|items_weapons:99|Vampirdegen|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||};
+{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:98|Elytharanischer Erlöser|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
-{clouded_rage|items_weapons:99|Raserei der Schatten|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
-{shadow_slayer|items_weapons:74|Schatten des Mörders|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
+{elytharan_redeemer|items_weapons:70|Elytharanischer Erlöser|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
+{clouded_rage|items_weapons:71|Raserei der Schatten|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
+{shadow_slayer|items_weapons:60|Schatten des Mörders|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
{ring_shadow_embrace|items_jewelry:0|Umarmung der Schatten|7|3|1|0|1|20||||10|||2|2|||||||||||||||||||||||};
@@ -194,9 +194,9 @@
{bwm_leather_cap|items_armours:24|Blackwater Lederkappe|2|4|1|722|1|5|||||||||21||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_combat_ring|items_jewelry:2|Blackwater Kampfring|7|4|1|595|1|||||5|||0|7|||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_brew|items_consumables:51|Blackwater Bräu|20||1|57||||||||||||||1|15|15|||{{intoxicated|1|10|100|}}||||||||||||||};
-{woodcutter_hatchet|items_weapons:71|Holzfällerbeil|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
+{woodcutter_hatchet|items_weapons:57|Holzfällerbeil|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
{woodcutter_boots|items_armours:30|Holzfällerstiefel|5|||873|1|1||||3|||||8||||||||||||||||||||||};
-{heavy_club|items_weapons:58|Schwerer Knüppel|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
+{heavy_club|items_weapons:44|Schwerer Knüppel|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
{pot_speed_1|items_consumables:41|Kleiner Trank der Geschwindigkeit|20||1|261||||||||||||||1|||||{{speed_minor|1|5|100|}}||||||||||||||};
{pot_poison_weak|items_consumables:40|Schwaches Gift|20||1|125||||||||||||||1|||||{{poison_weak|1|5|100|}}||||||||||||||};
diff --git a/AndorsTrail/res/values-de/strings.xml b/AndorsTrail/res/values-de/strings.xml
index 271017849..010e4584f 100644
--- a/AndorsTrail/res/values-de/strings.xml
+++ b/AndorsTrail/res/values-de/strings.xml
@@ -203,7 +203,7 @@
Willkommen
- Viele Dank, dass Du Andor\'s Trail heruntergeladen hast!\n\n
+ Vielen Dank, dass Du Andor\'s Trail heruntergeladen hast!\n\n
Bedenke bitte, dass diese Version von Andor\'s Trail noch IN DER ENTWICKLUNG ist und somit noch nicht alle Karten komplett fertig sind.\n
Es steht dir frei, alle bestehenden Städte und Dungeons ausgiebig zu erforschen.\n
Diese Entwicklungsversion kann Fehler enthalten und das Spiel ist noch nicht gut ausbalanciert. Mit dieser Programmversion sollen Fehler aufgespürt werden, bevor weitere Inhalte hinzugefügt werden.\n
diff --git a/AndorsTrail/res/values-fr/content_itemlist.xml b/AndorsTrail/res/values-fr/content_itemlist.xml
index 8f96cc4bc..8e19fe4cc 100644
--- a/AndorsTrail/res/values-fr/content_itemlist.xml
+++ b/AndorsTrail/res/values-fr/content_itemlist.xml
@@ -7,11 +7,11 @@
[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|]|];
-{club1|items_weapons:56|Massue en bois|0|||7|1||||5|10|||0|1|||||||||||||||||||||||};
-{club3|items_weapons:58|Bâton en fer|0|||253|1||||6|5|||2|7|||||||||||||||||||||||};
+{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|||||||||||||||||||||||};
-{hammer0|items_weapons:59|Marteau en fer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
-{hammer1|items_weapons:59|Marteau géant|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
+{hammer0|items_weapons:45|Marteau en fer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
+{hammer1|items_weapons:45|Marteau géant|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
{dagger0|items_weapons:14|Dague en fer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
{dagger1|items_weapons:14|Dague en fer effilé|0|||53|1||||4|20|||1|2|||||||||||||||||||||||};
{dagger2|items_weapons:14|Dague en fer supérieure|0|||70|1||||4|25|||1|2|||||||||||||||||||||||};
@@ -21,8 +21,8 @@
{broadsword1|items_weapons:5|Glaive en fer|0|||251|1||||7|2|||1|10|||||||||||||||||||||||};
{broadsword2|items_weapons:6|Glaive en acier|0|||582|1||||6|15|||3|10|||||||||||||||||||||||};
{steelsword1|items_weapons:7|Épée en acier|0|||874|1||||4|24|||3|7|||||||||||||||||||||||};
-{axe1|items_weapons:70|Hache de bûcheron|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
-{axe2|items_weapons:70|Hache en fer|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
+{axe1|items_weapons:56|Hache de bûcheron|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
+{axe2|items_weapons:56|Hache en fer|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
{quickdagger1|items_weapons:14|Poignard d\'attaque rapide|0|4||512|1||||3|20|||0|0|-20||||||||||||||||||||||};
@@ -166,8 +166,8 @@
{ffguard_qitem|items_jewelry:0|Bague de la patrouille de Feygard|31|1|1|0|||||||||||||||||||||||||||||||||};
{shield6|items_armours:3|Pavois en bois|1|||952|1|||||-6|||||12||||||||||||||||||||||};
{shield7|items_armours:3|Pavois en bois épais|1|||1538|1|||||-6|||||14||||||||||||||||||||||};
-{club_wood1|items_weapons:58|Bâton lourd en acier|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
-{club_wood2|items_weapons:58|Bâton en acier lourd équilibré|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
+{club_wood1|items_weapons:44|Bâton lourd en acier|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
+{club_wood2|items_weapons:44|Bâton en acier lourd équilibré|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
{gloves_grip|items_armours:35|Gant de prise assurée|4|||471|1|||||9|||||1||||||||||||||||||||||};
{gloves_fancy|items_armours:35|Gants fantaisistes|4|||78|1|||||5|||||||||||||||||||||||||||};
{ring_crit1|items_jewelry:0|Anneau d\'attaque|7|4||2921|1||||||5||||||||||||||||||||||||||};
@@ -178,11 +178,11 @@
[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|]|];
-{rapier_lifesteal|items_weapons:99|Rapière voleuse de vie|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||};
+{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:98|Rédempteur d\'Elytharan|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
-{clouded_rage|items_weapons:99|Épée de la rage de l\'Ombre|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
-{shadow_slayer|items_weapons:74|Ombre du tueur|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
+{elytharan_redeemer|items_weapons:70|Rédempteur d\'Elytharan|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
+{clouded_rage|items_weapons:71|Épée de la rage de l\'Ombre|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
+{shadow_slayer|items_weapons:60|Ombre du tueur|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
{ring_shadow_embrace|items_jewelry:0|Anneau de l\'étreinte de l\'Ombre|7|3|1|0|1|20||||10|||2|2|||||||||||||||||||||||};
@@ -193,9 +193,9 @@
{bwm_leather_cap|items_armours:24|Casquette en cuir de Blackwater|2|4|1|722|1|5|||||||||21||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_combat_ring|items_jewelry:2|Anneau de combat de Blackwater|7|4|1|595|1|||||5|||0|7|||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_brew|items_consumables:51|Infusion de Blackwater|20||1|57||||||||||||||1|15|15|||{{intoxicated|1|10|100|}}||||||||||||||};
-{woodcutter_hatchet|items_weapons:71|Hachette du bûcheron|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
+{woodcutter_hatchet|items_weapons:57|Hachette du bûcheron|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
{woodcutter_boots|items_armours:30|Bottes du bûcheron|5|||873|1|1||||3|||||8||||||||||||||||||||||};
-{heavy_club|items_weapons:58|Bâton lourd|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
+{heavy_club|items_weapons:44|Bâton lourd|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
{pot_speed_1|items_consumables:41|Potion mineure de rapidité|20||1|261||||||||||||||1|||||{{speed_minor|1|5|100|}}||||||||||||||};
{pot_poison_weak|items_consumables:40|Poison faible|20||1|125||||||||||||||1|||||{{poison_weak|1|5|100|}}||||||||||||||};
diff --git a/AndorsTrail/res/values-it/content_itemlist.xml b/AndorsTrail/res/values-it/content_itemlist.xml
index 6073ab70f..1cfafa7fb 100644
--- a/AndorsTrail/res/values-it/content_itemlist.xml
+++ b/AndorsTrail/res/values-it/content_itemlist.xml
@@ -8,11 +8,11 @@
[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|]|];
-{club1|items_weapons:56|Clava|0|||7|1||||5|10|||0|1|||||||||||||||||||||||};
-{club3|items_weapons:58|Mazza di ferro|0|||253|1||||6|5|||2|7|||||||||||||||||||||||};
+{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|||||||||||||||||||||||};
-{hammer0|items_weapons:59|Martello di ferro|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
-{hammer1|items_weapons:59|Martellone|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
+{hammer0|items_weapons:45|Martello di ferro|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
+{hammer1|items_weapons:45|Martellone|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
{dagger0|items_weapons:14|Pugnale di ferro|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
{dagger1|items_weapons:14|Puganle di ferro affilato|0|||53|1||||4|20|||1|2|||||||||||||||||||||||};
{dagger2|items_weapons:14|Pugnale di ferro migliorato|0|||70|1||||4|25|||1|2|||||||||||||||||||||||};
@@ -22,8 +22,8 @@
{broadsword1|items_weapons:5|Spadone di ferro|0|||251|1||||7|2|||1|10|||||||||||||||||||||||};
{broadsword2|items_weapons:6|Spadone di acciaio|0|||582|1||||6|15|||3|10|||||||||||||||||||||||};
{steelsword1|items_weapons:7|Spada di acciaio|0|||874|1||||4|24|||3|7|||||||||||||||||||||||};
-{axe1|items_weapons:70|Accetta|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
-{axe2|items_weapons:70|Ascia di ferro|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
+{axe1|items_weapons:56|Accetta|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
+{axe2|items_weapons:56|Ascia di ferro|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
{quickdagger1|items_weapons:14|Pugnale del colpo rapido|0|4||512|1||||3|20|||0|0|-20||||||||||||||||||||||};
@@ -167,8 +167,8 @@
{ffguard_qitem|items_jewelry:0|Anello pattuglia di Feygard|31|1|1|0|||||||||||||||||||||||||||||||||};
{shield6|items_armours:3|Scudo a torre di legno|1|||952|1|||||-6|||||12||||||||||||||||||||||};
{shield7|items_armours:3|Scudo a torre di legno rinforzato|1|||1538|1|||||-6|||||14||||||||||||||||||||||};
-{club_wood1|items_weapons:58|Mazza pesante di ferro |0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
-{club_wood2|items_weapons:58|Mazza pesante di ferro bilanciata|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
+{club_wood1|items_weapons:44|Mazza pesante di ferro |0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
+{club_wood2|items_weapons:44|Mazza pesante di ferro bilanciata|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
{gloves_grip|items_armours:35|Guanti dalla presa migliorata|4|||471|1|||||9|||||1||||||||||||||||||||||};
{gloves_fancy|items_armours:35|Guanti bizzarri|4|||78|1|||||5|||||||||||||||||||||||||||};
{ring_crit1|items_jewelry:0|Anello del colpo|7|4||2921|1||||||5||||||||||||||||||||||||||};
diff --git a/AndorsTrail/res/values-ru/content_itemlist.xml b/AndorsTrail/res/values-ru/content_itemlist.xml
index aadf1ac3a..c8e0f1dbb 100644
--- a/AndorsTrail/res/values-ru/content_itemlist.xml
+++ b/AndorsTrail/res/values-ru/content_itemlist.xml
@@ -8,11 +8,11 @@
[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|]|];
-{club1|items_weapons:56|Деревянная дубина|0|||7|1||||5|10|||0|1|||||||||||||||||||||||};
-{club3|items_weapons:58|Палица|0|||253|1||||6|5|||2|7|||||||||||||||||||||||};
+{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|||||||||||||||||||||||};
-{hammer0|items_weapons:59|Железный молот|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
-{hammer1|items_weapons:59|Большой молот|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
+{hammer0|items_weapons:45|Железный молот|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
+{hammer1|items_weapons:45|Большой молот|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
{dagger0|items_weapons:14|Железный кинжал|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
{dagger1|items_weapons:14|Острый железный кинжал|0|||53|1||||4|20|||1|2|||||||||||||||||||||||};
{dagger2|items_weapons:14|Превосходный железный кинжал|0|||70|1||||4|25|||1|2|||||||||||||||||||||||};
@@ -22,8 +22,8 @@
{broadsword1|items_weapons:5|Железный палаш|0|||251|1||||7|2|||1|10|||||||||||||||||||||||};
{broadsword2|items_weapons:6|Стальной палаш|0|||582|1||||6|15|||3|10|||||||||||||||||||||||};
{steelsword1|items_weapons:7|Стальной меч|0|||874|1||||4|24|||3|7|||||||||||||||||||||||};
-{axe1|items_weapons:70|Топор дровосека|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
-{axe2|items_weapons:70|Железный топор|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
+{axe1|items_weapons:56|Топор дровосека|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
+{axe2|items_weapons:56|Железный топор|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
{quickdagger1|items_weapons:14|Шустрый кинжал|0|4||512|1||||3|20|||0|0|-20||||||||||||||||||||||};
diff --git a/AndorsTrail/res/values/content_droplist.xml b/AndorsTrail/res/values/content_droplist.xml
index 7d8592fd2..1552fed91 100644
--- a/AndorsTrail/res/values/content_droplist.xml
+++ b/AndorsTrail/res/values/content_droplist.xml
@@ -299,8 +299,8 @@
{health_major2|10|10|100|}
{milk|10|10|100|}
{rat_tail|5|5|100|}
- {Radish|5|5|100|}
- {Strawberry|5|5|100|}
+ {radish|5|5|100|}
+ {strawberry|5|5|100|}
}|};
{shop_prim_armorer|{
diff --git a/AndorsTrail/res/values/content_itemlist.xml b/AndorsTrail/res/values/content_itemlist.xml
index cbd03603d..d9a02cdf3 100644
--- a/AndorsTrail/res/values/content_itemlist.xml
+++ b/AndorsTrail/res/values/content_itemlist.xml
@@ -8,11 +8,11 @@
[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|]|];
-{club1|items_weapons:56|Wooden club|0|||7|1||||5|10|||0|1|||||||||||||||||||||||};
-{club3|items_weapons:58|Iron club|0|||253|1||||6|5|||2|7|||||||||||||||||||||||};
+{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|||||||||||||||||||||||};
-{hammer0|items_weapons:59|Iron hammer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
-{hammer1|items_weapons:59|Giant hammer|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
+{hammer0|items_weapons:45|Iron hammer|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
+{hammer1|items_weapons:45|Giant hammer|0|||121|1||||10|5|||4|7|||||||||||||||||||||||};
{dagger0|items_weapons:14|Iron dagger|0|||12|1||||5|10|||0|1|||||||||||||||||||||||};
{dagger1|items_weapons:14|Sharp iron dagger|0|||53|1||||4|20|||1|2|||||||||||||||||||||||};
{dagger2|items_weapons:14|Superior iron dagger|0|||70|1||||4|25|||1|2|||||||||||||||||||||||};
@@ -22,8 +22,8 @@
{broadsword1|items_weapons:5|Iron broadsword|0|||251|1||||7|2|||1|10|||||||||||||||||||||||};
{broadsword2|items_weapons:6|Steel broadsword|0|||582|1||||6|15|||3|10|||||||||||||||||||||||};
{steelsword1|items_weapons:7|Steel sword|0|||874|1||||4|24|||3|7|||||||||||||||||||||||};
-{axe1|items_weapons:70|Woodcutter axe|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
-{axe2|items_weapons:70|Iron axe|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
+{axe1|items_weapons:56|Woodcutter axe|0|||24|1||||5|5|||1|3|||||||||||||||||||||||};
+{axe2|items_weapons:56|Iron axe|0|||312|1||||6|5|||2|5|||||||||||||||||||||||};
{quickdagger1|items_weapons:14|Quickstrike dagger|0|4||512|1||||3|20|||0|0|-20||||||||||||||||||||||};
@@ -167,8 +167,8 @@
{ffguard_qitem|items_jewelry:0|Feygard patrol ring|31|1|1|0|||||||||||||||||||||||||||||||||};
{shield6|items_armours:3|Wooden tower shield|1|||952|1|||||-6|||||12||||||||||||||||||||||};
{shield7|items_armours:3|Strong wooden tower shield|1|||1538|1|||||-6|||||14||||||||||||||||||||||};
-{club_wood1|items_weapons:58|Heavy iron club|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
-{club_wood2|items_weapons:58|Balanced heavy iron club|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
+{club_wood1|items_weapons:44|Heavy iron club|0|||950|1||||8|15|5|3|2|11|||||||||||||||||||||||};
+{club_wood2|items_weapons:44|Balanced heavy iron club|0|||2194|1||||7|10|10|3|2|11|||||||||||||||||||||||};
{gloves_grip|items_armours:35|Gloves of better grip|4|||471|1|||||9|||||1||||||||||||||||||||||};
{gloves_fancy|items_armours:35|Fancy gloves|4|||78|1|||||5|||||||||||||||||||||||||||};
{ring_crit1|items_jewelry:0|Ring of strike|7|4||2921|1||||||5||||||||||||||||||||||||||};
@@ -179,11 +179,11 @@
[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|]|];
-{rapier_lifesteal|items_weapons:99|Rapier of lifesteal|0|2|1|0|1|5|||5|21|||1|6||||||||||1|0|3|||||1|3|3||||};
+{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:98|Elytharan redeemer|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
-{clouded_rage|items_weapons:99|Sword of Shadow\'s rage|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
-{shadow_slayer|items_weapons:74|Shadow of the slayer|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
+{elytharan_redeemer|items_weapons:70|Elytharan redeemer|0|2|1|0|1||2||5|25|||3|8|5||{{bless|1|}}|0|||||||||||||||||||};
+{clouded_rage|items_weapons:71|Sword of Shadow\'s rage|0|3|1|0|1||||5|21|||3|6|5|||0|||||||||||||1|||||{{rage_minor|1|1|50|}}|};
+{shadow_slayer|items_weapons:60|Shadow of the slayer|0|3|1|0|1||2||7|25|10|2|5|9|||||||||||||||||1|1|1||||};
{ring_shadow_embrace|items_jewelry:0|Ring of Shadow embrace|7|3|1|0|1|20||||10|||2|2|||||||||||||||||||||||};
@@ -194,9 +194,9 @@
{bwm_leather_cap|items_armours:24|Blackwater leather cap|2|4|1|722|1|5|||||||||21||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_combat_ring|items_jewelry:2|Blackwater ring of combat|7|4|1|595|1|||||5|||0|7|||{{blackwater_misery|1|}}||||||||||||||||||||};
{bwm_brew|items_consumables:51|Blackwater brew|20||1|57||||||||||||||1|15|15|||{{intoxicated|1|10|100|}}||||||||||||||};
-{woodcutter_hatchet|items_weapons:71|Woodcutter\'s hatchet|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
+{woodcutter_hatchet|items_weapons:57|Woodcutter\'s hatchet|0|||0|1||||6|9|||6|12|||||||||||||||||||||||};
{woodcutter_boots|items_armours:30|Woodcutter\'s boots|5|||873|1|1||||3|||||8||||||||||||||||||||||};
-{heavy_club|items_weapons:58|Heavy club|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
+{heavy_club|items_weapons:44|Heavy club|0|||1229|1||||7|15|5|3|2|15|||||||||||||||||||||||};
{pot_speed_1|items_consumables:41|Minor potion of speed|20||1|261||||||||||||||1|||||{{speed_minor|1|5|100|}}||||||||||||||};
{pot_poison_weak|items_consumables:40|Weak poison|20||1|125||||||||||||||1|||||{{poison_weak|1|5|100|}}||||||||||||||};
@@ -228,8 +228,8 @@
[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|]|];
{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:56|Fine wooden club|0||0|245|1||||5|12|||0|7|||||||||||||||||||||||};
-{axe_fine_iron|items_weapons:70|Fine iron axe|0||0|365|1||||6|9|||4|6|||||||||||||||||||||||};
+{club_fine_wooden|items_weapons:42|Fine wooden club|0||0|245|1||||5|12|||0|7|||||||||||||||||||||||};
+{axe_fine_iron|items_weapons:56|Fine iron axe|0||0|365|1||||6|9|||4|6|||||||||||||||||||||||};
{longsword_hard_iron|items_weapons:1|Hardened iron longsword|0||0|362|1||||5|14|||2|6|||||||||||||||||||||||};
{broadsword_fine_iron|items_weapons:5|Fine iron broadsword|0||0|422|1||||7|5|||4|10|||||||||||||||||||||||};
{dagger_sharp_steel|items_weapons:14|Sharp steel dagger|0||0|1428|1||||4|24|||2|4|||||||||||||||||||||||};
@@ -239,9 +239,9 @@
{sword_villains|items_weapons:16|Villain\'s blade|0||0|1665|1||||4|20|5|3|1|2|||||||||||||||||||||||};
{sword_challengers|items_weapons:1|Challenger\'s iron sword|0||0|785|1||||5|20|||2|6|||||||||||||||||||||||};
{sword_fencing|items_weapons:13|Fencing blade|0||0|922|1||||4|14|||2|5|5||||||||||||||||||||||};
-{club_brutal|items_weapons:58|Brutal club|0||0|2522|1||||7|20|5|3|2|21|||||||||||||||||||||||};
-{axe_gutsplitter|items_weapons:72|Gutsplitter|0||0|2733|1||||6|21|||7|17|||||||||||||||||||||||};
-{hammer_skullcrusher|items_weapons:59|Skullcrusher|0||0|3142|1||||7|20|5|3|0|26|||||||||||||||||||||||};
+{club_brutal|items_weapons:44|Brutal club|0||0|2522|1||||7|20|5|3|2|21|||||||||||||||||||||||};
+{axe_gutsplitter|items_weapons:58|Gutsplitter|0||0|2733|1||||6|21|||7|17|||||||||||||||||||||||};
+{hammer_skullcrusher|items_weapons:45|Skullcrusher|0||0|3142|1||||7|20|5|3|0|26|||||||||||||||||||||||};
{shield_crude_wooden|items_armours:0|Crude wooden buckler|1||0|31|1||||||||||1||||||||||||||||||||||};
{shield_cracked_wooden|items_armours:0|Cracked wooden buckler|1||0|34|1|||||-2|||||2||||||||||||||||||||||};
{shield_wooden_buckler|items_armours:0|Second-hand wooden buckler|1||0|92|1|||||-2|||||3||||||||||||||||||||||};
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
index 69b39de1e..810ae8d76 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java
@@ -156,7 +156,8 @@ public final class Dialogs {
itemList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- final int itemTypeID = (int) id;
+
+ final String itemTypeID = ((ItemContainerAdapter) parent.getAdapter()).getItem(position).itemType.id;
combinedLoot.items.removeItem(itemTypeID);
for (Loot l : lootBags) {
if (l.items.removeItem(itemTypeID)) break;
@@ -195,7 +196,7 @@ public final class Dialogs {
});
}
- public static void showItemInfo(final Activity currentActivity, int itemTypeID, int actionType, String buttonText, boolean buttonEnabled, int inventorySlot) {
+ public static void showItemInfo(final Activity currentActivity, String itemTypeID, int actionType, String buttonText, boolean buttonEnabled, int inventorySlot) {
Intent intent = new Intent(currentActivity, ItemInfoActivity.class);
intent.putExtra("buttonText", buttonText);
intent.putExtra("buttonEnabled", buttonEnabled);
@@ -277,19 +278,19 @@ public final class Dialogs {
context.startActivity(intent);
}
- public static void showBulkBuyingInterface(ShopActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
+ public static void showBulkBuyingInterface(ShopActivity currentActivity, String itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_BUY, MainActivity.INTENTREQUEST_BULKSELECT_BUY);
}
- public static void showBulkSellingInterface(ShopActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
+ public static void showBulkSellingInterface(ShopActivity currentActivity, String itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_SELL, MainActivity.INTENTREQUEST_BULKSELECT_SELL);
}
- public static void showBulkDroppingInterface(HeroinfoActivity_Inventory currentActivity, int itemTypeID, int totalAvailableAmount) {
+ public static void showBulkDroppingInterface(HeroinfoActivity_Inventory currentActivity, String itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_DROP, MainActivity.INTENTREQUEST_BULKSELECT_DROP);
}
- public static void showBulkSelectionInterface(Activity currentActivity, int itemTypeID, int totalAvailableAmount, int interfaceType, int requestCode) {
+ public static void showBulkSelectionInterface(Activity currentActivity, String itemTypeID, int totalAvailableAmount, int interfaceType, int requestCode) {
Intent intent = new Intent(currentActivity, BulkSelectionInterface.class);
intent.putExtra("itemTypeID", itemTypeID);
intent.putExtra("totalAvailableAmount", totalAvailableAmount);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/BulkSelectionInterface.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/BulkSelectionInterface.java
index 90a2ca6b4..7ddcf0f40 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/BulkSelectionInterface.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/BulkSelectionInterface.java
@@ -79,7 +79,7 @@ public class BulkSelectionInterface extends Activity implements TextWatcher {
final Intent intent = getIntent();
Bundle params = intent.getExtras();
- int itemTypeID = params.getInt("itemTypeID");
+ String itemTypeID = params.getString("itemTypeID");
itemType = world.itemTypes.getItemType(itemTypeID);
totalAvailableAmount = params.getInt("totalAvailableAmount");
interfaceType = params.getInt("interfaceType");
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java
index 685a6b8f0..5108654e5 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java
@@ -294,6 +294,7 @@ public final class ConversationActivity extends Activity {
dest.writeInt(color);
}
+ @SuppressWarnings("unused")
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public ConversationStatement createFromParcel(Parcel in) {
ConversationStatement result = new ConversationStatement();
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Inventory.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Inventory.java
index e95a0b7e0..d056fd45b 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Inventory.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Inventory.java
@@ -33,6 +33,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
private Player player;
private ItemContainer container;
+ private ItemContainerAdapter inventoryListAdapter;
private ListView inventoryList;
private TextView heroinfo_stats_gold;
@@ -59,10 +60,13 @@ public final class HeroinfoActivity_Inventory extends Activity {
inventoryList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- showInventoryItemInfo((int) id);
+ ItemType itemType = inventoryListAdapter.getItem(position).itemType;
+ showInventoryItemInfo(itemType.id);
}
});
container = player.inventory;
+ inventoryListAdapter = new ItemContainerAdapter(this, world.tileStore, container);
+ inventoryList.setAdapter(inventoryListAdapter);
heroinfo_stats_gold = (TextView) findViewById(R.id.heroinfo_stats_gold);
heroinfo_stats_attack = (TextView) findViewById(R.id.heroinfo_stats_attack);
@@ -77,8 +81,6 @@ public final class HeroinfoActivity_Inventory extends Activity {
setWearSlot(ItemType.CATEGORY_WEARABLE_HAND, R.id.heroinfo_worn_hand, R.drawable.equip_hand);
setWearSlot(ItemType.CATEGORY_WEARABLE_RING, R.id.heroinfo_worn_ringleft, R.drawable.equip_ring);
setWearSlot(ItemType.CATEGORY_WEARABLE_RING+1, R.id.heroinfo_worn_ringright, R.drawable.equip_ring);
-
- inventoryList.setAdapter(new ItemContainerAdapter(this, world.tileStore, container));
}
@Override
@@ -108,7 +110,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
case MainActivity.INTENTREQUEST_ITEMINFO:
if (resultCode != RESULT_OK) break;
- ItemType itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
+ ItemType itemType = world.itemTypes.getItemType(data.getExtras().getString("itemTypeID"));
int actionType = data.getExtras().getInt("actionType");
if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
@@ -122,13 +124,13 @@ public final class HeroinfoActivity_Inventory extends Activity {
if (resultCode != RESULT_OK) break;
int quantity = data.getExtras().getInt("selectedAmount");
- int itemTypeID = data.getExtras().getInt("itemTypeID");
+ String itemTypeID = data.getExtras().getString("itemTypeID");
dropItem(itemTypeID, quantity);
break;
}
}
- private void dropItem(int itemTypeID, int quantity) {
+ private void dropItem(String itemTypeID, int quantity) {
ItemType itemType = world.itemTypes.getItemType(itemTypeID);
view.itemController.dropItem(itemType, quantity);
}
@@ -161,7 +163,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
}
private void updateItemList() {
- ((ItemContainerAdapter) inventoryList.getAdapter()).notifyDataSetChanged();
+ inventoryListAdapter.notifyDataSetChanged();
}
@Override
@@ -182,11 +184,8 @@ public final class HeroinfoActivity_Inventory extends Activity {
lastSelectedItem = null;
}
- private int getSelectedID(AdapterContextMenuInfo info) {
- return (int) info.id;
- }
private ItemType getSelectedItemType(AdapterContextMenuInfo info) {
- return world.itemTypes.getItemType(getSelectedID(info));
+ return inventoryListAdapter.getItem(info.position).itemType;
}
@Override
public boolean onContextItemSelected(MenuItem item) {
@@ -197,7 +196,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
//context.controller.itemInfo(this, getSelectedItemType(info));
break;
case R.id.inv_menu_drop:
- int itemTypeID = getSelectedItemType(info).id;
+ String itemTypeID = getSelectedItemType(info).id;
int quantity = player.inventory.getItemQuantity(itemTypeID);
if (quantity > 1) {
Dialogs.showBulkDroppingInterface(this, itemTypeID, quantity);
@@ -250,7 +249,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
}
Dialogs.showItemInfo(HeroinfoActivity_Inventory.this, itemType.id, ItemInfoActivity.ITEMACTION_UNEQUIP, text, enabled, inventorySlot);
}
- private void showInventoryItemInfo(int itemTypeID) {
+ private void showInventoryItemInfo(String itemTypeID) {
showInventoryItemInfo(world.itemTypes.getItemType(itemTypeID));
}
private void showInventoryItemInfo(ItemType itemType) {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
index 829d4ea62..8bdd9afe7 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
@@ -5,7 +5,6 @@ import java.util.ArrayList;
import com.gpl.rpg.AndorsTrail.Dialogs;
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.ability.ActorCondition;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
@@ -35,8 +34,7 @@ import android.widget.TextView;
public final class HeroinfoActivity_Stats extends Activity {
private WorldContext world;
- private ViewContext view;
-
+
private Player player;
private Button levelUpButton;
@@ -57,7 +55,6 @@ public final class HeroinfoActivity_Stats extends Activity {
super.onCreate(savedInstanceState);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
this.world = app.world;
- this.view = app.currentView.get();
this.player = world.model.player;
setContentView(R.layout.heroinfo_stats);
@@ -107,21 +104,7 @@ public final class HeroinfoActivity_Stats extends Activity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- ItemType itemType;
switch (requestCode) {
- case MainActivity.INTENTREQUEST_ITEMINFO:
- if (resultCode != RESULT_OK) break;
-
- itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
- int actionType = data.getExtras().getInt("actionType");
- if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
- view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
- } else if (actionType == ItemInfoActivity.ITEMACTION_EQUIP) {
- view.itemController.equipItem(itemType);
- } else if (actionType == ItemInfoActivity.ITEMACTION_USE) {
- view.itemController.useItem(itemType);
- }
- break;
case MainActivity.INTENTREQUEST_LEVELUP:
break;
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ItemInfoActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ItemInfoActivity.java
index 8e12d58c2..8eb4f110f 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ItemInfoActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ItemInfoActivity.java
@@ -39,7 +39,7 @@ public final class ItemInfoActivity extends Activity {
final Intent intent = getIntent();
Bundle params = intent.getExtras();
- int itemTypeID = params.getInt("itemTypeID");
+ String itemTypeID = params.getString("itemTypeID");
final ItemType itemType = world.itemTypes.getItemType(itemTypeID);
final String buttonText = params.getString("buttonText");
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ShopActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ShopActivity.java
index 5e078ec3f..8952f6879 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ShopActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ShopActivity.java
@@ -127,7 +127,7 @@ public final class ShopActivity extends TabActivity implements OnContainerItemCl
case MainActivity.INTENTREQUEST_ITEMINFO:
if (resultCode != RESULT_OK) return;
- ItemType itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
+ ItemType itemType = world.itemTypes.getItemType(data.getExtras().getString("itemTypeID"));
int actionType = data.getExtras().getInt("actionType");
if (actionType == ItemInfoActivity.ITEMACTION_BUY) {
showBuyingInterface(itemType);
@@ -138,14 +138,14 @@ public final class ShopActivity extends TabActivity implements OnContainerItemCl
case MainActivity.INTENTREQUEST_BULKSELECT_BUY:
if (resultCode == Activity.RESULT_OK) {
int quantity = data.getExtras().getInt("selectedAmount");
- int itemTypeID = data.getExtras().getInt("itemTypeID");
+ String itemTypeID = data.getExtras().getString("itemTypeID");
buy(itemTypeID, quantity);
}
break;
case MainActivity.INTENTREQUEST_BULKSELECT_SELL:
if (resultCode == Activity.RESULT_OK) {
int quantity = data.getExtras().getInt("selectedAmount");
- int itemTypeID = data.getExtras().getInt("itemTypeID");
+ String itemTypeID = data.getExtras().getString("itemTypeID");
sell(itemTypeID, quantity);
}
break;
@@ -160,14 +160,14 @@ public final class ShopActivity extends TabActivity implements OnContainerItemCl
Dialogs.showBulkBuyingInterface(this, itemType.id, container_buy.getItemQuantity(itemType.id));
}
- private void buy(int itemTypeID, int quantity) {
+ private void buy(String itemTypeID, int quantity) {
ItemType itemType = world.itemTypes.getItemType(itemTypeID);
ItemController.buy(world.model, player, itemType, container_buy, quantity);
final String msg = getResources().getString(R.string.shop_item_bought, itemType.name);
displayStoreAction(msg);
}
- private void sell(int itemTypeID, int quantity) {
+ private void sell(String itemTypeID, int quantity) {
ItemType itemType = world.itemTypes.getItemType(itemTypeID);
ItemController.sell(player, itemType, container_buy, quantity);
final String msg = getResources().getString(R.string.shop_item_sold, itemType.name);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
index d96206669..ccd2b63b9 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/context/WorldContext.java
@@ -63,8 +63,7 @@ public class WorldContext {
// Selftest method. Not part of the game logic.
public void verifyData() {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- assert(itemTypes.getItemTypeByTag("gold") != null);
- assert(itemTypes.getItemTypeByTag("gold").id == ItemTypeCollection.ITEMTYPE_GOLD);
+ assert(itemTypes.getItemType("gold") != null);
//Ensure that all phrases that require an item have some droplist that contains them
conversations.verifyData(dropLists);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
index 7ce9ce5b5..8b354351f 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
@@ -35,7 +35,7 @@ public final class ConversationController {
public static void applyReplyEffect(final Player player, final Reply reply) {
if (!reply.requiresItem()) return;
- if (reply.requiresItemTypeID == ItemTypeCollection.ITEMTYPE_GOLD) {
+ if (ItemTypeCollection.isGoldItemType(reply.requiresItemTypeID)) {
player.inventory.gold -= reply.requiresItemQuantity;
} else {
player.inventory.removeItem(reply.requiresItemTypeID, reply.requiresItemQuantity);
@@ -55,8 +55,8 @@ public final class ConversationController {
return player.hasExactQuestProgress(progress);
}
- private static boolean hasRequiredItems(final Player player, int requiresItemTypeID, int requiresItemQuantity) {
- if (requiresItemTypeID == ItemTypeCollection.ITEMTYPE_GOLD) return player.inventory.gold >= requiresItemQuantity;
+ private static boolean hasRequiredItems(final Player player, String requiresItemTypeID, int requiresItemQuantity) {
+ if (ItemTypeCollection.isGoldItemType(requiresItemTypeID)) return player.inventory.gold >= requiresItemQuantity;
return player.inventory.hasItem(requiresItemTypeID, requiresItemQuantity);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java
index f50b332a7..c81f372fb 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java
@@ -41,7 +41,7 @@ public final class SkillController {
public static int getDropChanceRollBias(DropItem item, Player player) {
if (player == null) return 0;
- if (item.itemType.id == ItemTypeCollection.ITEMTYPE_GOLD) {
+ if (ItemTypeCollection.isGoldItemType(item.itemType.id)) {
return getRollBias(item, player, SkillCollection.SKILL_COINFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT);
} else if (!item.itemType.isOrdinaryItem()) {
return getRollBias(item, player, SkillCollection.SKILL_MAGICFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
@@ -52,7 +52,7 @@ public final class SkillController {
public static int getDropQuantityRollBias(DropItem item, Player player) {
if (player == null) return 0;
- if (item.itemType.id != ItemTypeCollection.ITEMTYPE_GOLD) return 0;
+ if (!ItemTypeCollection.isGoldItemType(item.itemType.id)) return 0;
return getRollBias(item, player, SkillCollection.SKILL_COINFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java
index c52feedd0..e1e5256b3 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationCollection.java
@@ -62,10 +62,9 @@ public final class ConversationCollection {
@Override
public void matchedRow(String[] parts) {
String requiresItemTypeTag = parts[3];
- int requiresItemTypeID = -1;
+ String requiresItemTypeID = null;
if (requiresItemTypeTag.length() > 0) {
- ItemType type = itemTypes.getItemTypeByTag(requiresItemTypeTag);
- if (type != null) requiresItemTypeID = type.id;
+ requiresItemTypeID = requiresItemTypeTag;
}
replies.add(new Reply(
parts[0]
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/Phrase.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/Phrase.java
index 2ef586563..fdc218f93 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/Phrase.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/Phrase.java
@@ -23,16 +23,16 @@ public final class Phrase {
public final String text;
public final String nextPhrase;
public final QuestProgress requiresProgress;
- public final int requiresItemTypeID;
+ public final String requiresItemTypeID;
public final int requiresItemQuantity;
public boolean requiresItem() {
- if (requiresItemTypeID == -1) return false;
+ if (requiresItemTypeID == null) return false;
if (requiresItemQuantity <= 0) return false;
return true;
}
- public Reply(String text, String nextPhrase, QuestProgress requiresProgress, int requiresItemTypeID, int requiresItemQuantity) {
+ public Reply(String text, String nextPhrase, QuestProgress requiresProgress, String requiresItemTypeID, int requiresItemQuantity) {
this.text = text;
this.nextPhrase = nextPhrase;
this.requiresProgress = requiresProgress;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/GameStatistics.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/GameStatistics.java
index b9624b923..7ebe555a2 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/GameStatistics.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/GameStatistics.java
@@ -30,7 +30,7 @@ public final class GameStatistics {
spentGold += amount;
}
public void addItemUsage(ItemType type) {
- final String n = type.searchTag;
+ final String n = type.id;
if (!usedItems.containsKey(n)) usedItems.put(n, 1);
else usedItems.put(n, usedItems.get(n) + 1);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropList.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropList.java
index fa32185f1..9b5052bfc 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropList.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropList.java
@@ -29,7 +29,7 @@ public final class DropList {
int quantity = Constants.rollValue(item.quantity, quantityRollBias);
if (quantity != 0) {
- if (item.itemType.id == ItemTypeCollection.ITEMTYPE_GOLD) {
+ if (ItemTypeCollection.isGoldItemType(item.itemType.id)) {
loot.gold += quantity;
} else {
loot.items.addItem(item.itemType, quantity);
@@ -40,9 +40,9 @@ public final class DropList {
}
// Selftest method. Not part of the game logic.
- public boolean contains(int itemTypeID) {
+ public boolean contains(String itemTypeID) {
for (DropItem item : items) {
- if (item.itemType.id == itemTypeID) return true;
+ if (item.itemType.id.equals(itemTypeID)) return true;
}
return false;
}
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 8bb2e504b..b1cc0ee4b 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/DropListCollection.java
@@ -47,7 +47,7 @@ public final class DropListCollection {
@Override
public void matchedRow(String[] parts) {
items.add(new DropItem(
- itemTypes.getItemTypeByTag(parts[0]) // Itemtype
+ itemTypes.getItemType(parts[0]) // Itemtype
, ResourceFileParser.parseChance(parts[3]) // Chance
, ResourceFileParser.parseQuantity(parts[1], parts[2]) // Quantity
));
@@ -74,7 +74,7 @@ public final class DropListCollection {
}
// Selftest method. Not part of the game logic.
- public boolean verifyExistsDroplist(int itemTypeID) {
+ public boolean verifyExistsDroplist(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/Inventory.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
index 67e16dfba..e1e9fb2af 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
@@ -37,7 +37,7 @@ public final class Inventory extends ItemContainer {
final int size = src.readInt();
for(int i = 0; i < size; ++i) {
if (src.readBoolean()) {
- wear[i] = world.itemTypes.getItemTypeByTag(src.readUTF());
+ wear[i] = world.itemTypes.getItemType(src.readUTF());
} else {
wear[i] = null;
}
@@ -46,7 +46,7 @@ public final class Inventory extends ItemContainer {
final int quickSlots = src.readInt();
for(int i = 0; i < quickSlots; ++i) {
if (src.readBoolean()) {
- quickitem[i] = world.itemTypes.getItemTypeByTag(src.readUTF());
+ quickitem[i] = world.itemTypes.getItemType(src.readUTF());
} else {
quickitem[i] = null;
}
@@ -60,7 +60,7 @@ public final class Inventory extends ItemContainer {
for(int i = 0; i < NUM_WORN_SLOTS; ++i) {
if (wear[i] != null) {
dest.writeBoolean(true);
- dest.writeUTF(wear[i].searchTag);
+ dest.writeUTF(wear[i].id);
} else {
dest.writeBoolean(false);
}
@@ -69,7 +69,7 @@ public final class Inventory extends ItemContainer {
for(int i = 0; i < QuickitemView.NUM_QUICK_SLOTS; ++i) {
if (quickitem[i] != null) {
dest.writeBoolean(true);
- dest.writeUTF(quickitem[i].searchTag);
+ dest.writeUTF(quickitem[i].id);
} else {
dest.writeBoolean(false);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemContainer.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemContainer.java
index 90d6fddc0..924f8f033 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemContainer.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemContainer.java
@@ -34,12 +34,12 @@ public class ItemContainer {
// ====== PARCELABLE ===================================================================
public ItemEntry(DataInputStream src, WorldContext world, int fileversion) throws IOException {
- this.itemType = world.itemTypes.getItemTypeByTag(src.readUTF());
+ this.itemType = world.itemTypes.getItemType(src.readUTF());
this.quantity = src.readInt();
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {
- dest.writeUTF(itemType.searchTag);
+ dest.writeUTF(itemType.id);
dest.writeInt(quantity);
}
}
@@ -60,13 +60,13 @@ public class ItemContainer {
}
public boolean isEmpty() { return items.isEmpty(); }
- public boolean removeItem(int itemTypeID) { return removeItem(itemTypeID, 1); }
- public boolean removeItem(int itemTypeID, int quantity) {
+ public boolean removeItem(String itemTypeID) { return removeItem(itemTypeID, 1); }
+ public boolean removeItem(String itemTypeID, int quantity) {
int index = -1;
ItemEntry e = null;
for (int i = 0; i < items.size(); ++i) {
e = items.get(i);
- if (e.itemType.id == itemTypeID) {
+ if (e.itemType.id.equals(itemTypeID)) {
index = i;
break;
}
@@ -80,18 +80,18 @@ public class ItemContainer {
return true;
}
- public ItemEntry findItem(int itemTypeID) {
+ public ItemEntry findItem(String itemTypeID) {
for (ItemEntry e : items) {
- if (e.itemType.id == itemTypeID) return e;
+ if (e.itemType.id.equals(itemTypeID)) return e;
}
return null;
}
- public boolean hasItem(int itemTypeID) { return findItem(itemTypeID) != null; }
- public boolean hasItem(int itemTypeID, int minimumQuantity) {
+ public boolean hasItem(String itemTypeID) { return findItem(itemTypeID) != null; }
+ public boolean hasItem(String itemTypeID, int minimumQuantity) {
return getItemQuantity(itemTypeID) >= minimumQuantity;
}
- public int getItemQuantity(int itemTypeID) {
+ public int getItemQuantity(String itemTypeID) {
ItemEntry e = findItem(itemTypeID);
if (e == null) return 0;
return e.quantity;
@@ -121,7 +121,7 @@ public class ItemContainer {
for (ItemEntry e : container.items) {
if (e.quantity >= 2 && isRefundableItem(e.itemType)) {
if (AndorsTrailApplication.DEVELOPMENT_DEBUGMESSAGES) {
- L.log("INFO: Refunding " + (e.quantity-1) + " items of type \"" + e.itemType.searchTag + "\" for a total of " + ((e.quantity-1) * e.itemType.fixedBaseMarketCost) + "gc.");
+ L.log("INFO: Refunding " + (e.quantity-1) + " items of type \"" + e.itemType.id + "\" for a total of " + ((e.quantity-1) * e.itemType.fixedBaseMarketCost) + "gc.");
}
removedCost += (e.quantity-1) * e.itemType.fixedBaseMarketCost;
e.quantity = 1;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemType.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemType.java
index c5d58303d..85812a69d 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemType.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemType.java
@@ -31,7 +31,7 @@ public final class ItemType {
public static final int DISPLAYTYPE_EXTRAORDINARY = 3;
public static final int DISPLAYTYPE_RARE = 4;
- public final int id;
+ public final String id;
public final int iconID;
public final String name;
public final int category;
@@ -39,7 +39,6 @@ public final class ItemType {
public final boolean hasManualPrice;
public final int baseMarketCost;
public final int fixedBaseMarketCost;
- public final String searchTag;
public final int displayType;
public final ItemTraits_OnEquip effects_equip;
@@ -47,11 +46,10 @@ public final class ItemType {
public final ItemTraits_OnUse effects_hit;
public final ItemTraits_OnUse effects_kill;
- public ItemType(int id, int iconID, String name, String searchTag, int category, int displayType, boolean hasManualPrice, int fixedBaseMarketCost, ItemTraits_OnEquip effects_equip, ItemTraits_OnUse effects_use, ItemTraits_OnUse effects_hit, ItemTraits_OnUse effects_kill) {
+ public ItemType(String id, int iconID, String name, int category, int displayType, boolean hasManualPrice, int fixedBaseMarketCost, ItemTraits_OnEquip effects_equip, ItemTraits_OnUse effects_use, ItemTraits_OnUse effects_hit, ItemTraits_OnUse effects_kill) {
this.id = id;
this.iconID = iconID;
this.name = name;
- this.searchTag = searchTag;
this.category = category;
this.actionType = getActionType(category);
this.displayType = displayType;
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 49ad89a9e..93632e4a9 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/ItemTypeCollection.java
@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.model.item;
-import java.util.ArrayList;
+import java.util.HashMap;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection;
@@ -11,37 +11,37 @@ import com.gpl.rpg.AndorsTrail.resource.ResourceFileParser.ResourceObjectTokeniz
import com.gpl.rpg.AndorsTrail.util.L;
public final class ItemTypeCollection {
- public static final int ITEMTYPE_GOLD = 0;
+ private static final String ITEMTYPE_GOLD = "gold";
- private final ArrayList itemTypes = new ArrayList();
- public final ArrayList TEST_itemTypes = itemTypes;
+ private final HashMap itemTypes = new HashMap();
+ public final HashMap TEST_itemTypes = itemTypes;
- public ItemType getItemType(int id) {
+ public ItemType getItemType(String id) {
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ if (!itemTypes.containsKey(id)) {
+ L.log("WARNING: Cannot find ItemType for id \"" + id + "\".");
+ }
+ }
return itemTypes.get(id);
}
- public ItemType getItemTypeByTag(String searchTag) {
- for(ItemType t : itemTypes) {
- if (t.searchTag.equalsIgnoreCase(searchTag)) return t;
- }
- if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("WARNING: Cannot find ItemType for searchtag \"" + searchTag + "\".");
- }
- return null;
+
+ public static boolean isGoldItemType(String requiresItemTypeID) {
+ if (requiresItemTypeID == null) return false;
+ return requiresItemTypeID.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 searchTag = parts[0];
- if (searchTag == null || searchTag.length() <= 0) {
+ String id = parts[0];
+ if (id == null || id.length() <= 0) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("OPTIMIZE: ItemType \"" + itemTypeName + "\" has empty searchtag.");
+ L.log("OPTIMIZE: ItemType \"" + itemTypeName + "\" has empty id.");
}
- searchTag = itemTypeName;
+ id = itemTypeName;
}
final ItemTraits_OnEquip equipEffect = ResourceFileParser.parseItemTraits_OnEquip(actorConditionTypes, parts, 7);
@@ -49,15 +49,13 @@ public final class ItemTypeCollection {
final ItemTraits_OnUse hitEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 26, true);
final ItemTraits_OnUse killEffect = ResourceFileParser.parseItemTraits_OnUse(actorConditionTypes, parts, 33, false);
- final int nextId = itemTypes.size();
final int baseMarketCost = Integer.parseInt(parts[6]);
final boolean hasManualPrice = ResourceFileParser.parseBoolean(parts[5], false);
final ItemType itemType = new ItemType(
- nextId
+ id
, ResourceFileParser.parseImageID(tileLoader, parts[1])
, itemTypeName
- , searchTag
- , Integer.parseInt(parts[3]) // category
+ , Integer.parseInt(parts[3]) // category
, ResourceFileParser.parseInt(parts[4], ItemType.DISPLAYTYPE_ORDINARY) // Displaytype
, hasManualPrice // hasManualPrice
, baseMarketCost // Base market cost
@@ -69,47 +67,47 @@ public final class ItemTypeCollection {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (!hasManualPrice) {
if (itemType.effects_hit != null || itemType.effects_kill != null) {
- L.log("OPTIMIZE: Item " + searchTag + " uses automatic pricing, but has kill- or hit effects. Should probably use manual pricing?");
+ 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 " + searchTag + " uses automatic pricing, but has no equip- or use effects. Should probably use manual pricing?");
+ 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 " + searchTag + " uses automatic pricing, but is neither usable nor equippable. Should probably use manual pricing?");
+ 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 " + searchTag + " is a quest item, but has a base market price specified.");
+ 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 " + searchTag + " does not have a base market price specified (and is an ordinary item).");
+ 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 " + searchTag + " is equippable, but has no equip effect.");
+ 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 " + searchTag + " is not equippable, but has equip, hit or kill effect.");
+ 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 " + searchTag + " is usable, but has no use effect.");
+ L.log("OPTIMIZE: Item " + id + " is usable, but has no use effect.");
}
} else {
if (itemType.effects_use != null) {
- L.log("OPTIMIZE: Item " + searchTag + " is not usable, but has use effect.");
+ L.log("OPTIMIZE: Item " + id + " is not usable, but has use effect.");
}
}
}
- itemTypes.add(itemType);
-
- if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- if (getItemTypeByTag(searchTag).id != nextId) {
- L.log("OPTIMIZE: Item " + searchTag + " may be duplicated.");
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ if (itemTypes.containsKey(id)) {
+ L.log("OPTIMIZE: Item " + id + " may be duplicated.");
}
}
+
+ itemTypes.put(id, itemType);
}
});
}
@@ -117,10 +115,10 @@ public final class ItemTypeCollection {
// Selftest method. Not part of the game logic.
public void verifyData(DropListCollection dropLists) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (ItemType t : itemTypes) {
+ for (ItemType t : itemTypes.values()) {
if (dropLists.verifyExistsDroplist(t.id)) continue;
//if (conversations.verifyExistsReplyThatRequiresItem(t.id)) continue;
- L.log("OPTIMIZE: Item " + t.searchTag + " is not dropped by any droplist.");
+ L.log("OPTIMIZE: Item " + t.id + " is not dropped by any droplist.");
}
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
index 1351a34ee..d3dce6722 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
@@ -1,6 +1,5 @@
package com.gpl.rpg.AndorsTrail.resource;
-import java.util.ArrayList;
import java.util.HashMap;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
@@ -17,8 +16,8 @@ public final class DynamicTileLoader {
private final TileStore store;
private final Resources r;
- private final ArrayList preparedTilesets = new ArrayList();
- //private final HashMap DEBUG_tilefrequency = new HashMap();
+ private final HashMap preparedTilesetsByResourceId = new HashMap();
+ private final HashMap preparedTilesetsByResourceName = new HashMap();
private int allocatedTiles = 0;
private int currentTileStoreIndex;
@@ -30,57 +29,47 @@ public final class DynamicTileLoader {
private void initialize() {
allocatedTiles = 0;
- preparedTilesets.clear();
+ preparedTilesetsByResourceId.clear();
+ preparedTilesetsByResourceName.clear();
currentTileStoreIndex = store.bitmaps.length;
- /*if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- DEBUG_tilefrequency.clear();
- }*/
}
public void prepareTileset(int resourceId, String tilesetName, Size numTiles, Size destinationTileSize) {
- preparedTilesets.add(new TilesetBitmap(resourceId, tilesetName, numTiles, destinationTileSize));
+ TilesetBitmap b = new TilesetBitmap(resourceId, tilesetName, numTiles, destinationTileSize);
+ preparedTilesetsByResourceId.put(resourceId, b);
+ preparedTilesetsByResourceName.put(tilesetName, b);
}
private TilesetBitmap getTilesetBitmap(int tilesetImageResourceID) {
- for (TilesetBitmap b : preparedTilesets) {
- if (b.resourceId == tilesetImageResourceID) {
- return b;
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ if (!preparedTilesetsByResourceId.containsKey(tilesetImageResourceID)) {
+ L.log("WARNING: Cannot load tileset " + tilesetImageResourceID);
+ return null;
}
}
- return null;
+ return preparedTilesetsByResourceId.get(tilesetImageResourceID);
+ }
+ private TilesetBitmap getTilesetBitmap(String tilesetName) {
+ if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
+ if (!preparedTilesetsByResourceName.containsKey(tilesetName)) {
+ L.log("WARNING: Cannot load tileset " + tilesetName);
+ return null;
+ }
+ }
+ return preparedTilesetsByResourceName.get(tilesetName);
}
public int prepareTileID(int tilesetImageResourceID, int localId) {
TilesetBitmap b = getTilesetBitmap(tilesetImageResourceID);
- if (b == null) {
- if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("WARNING: Cannot load tileset " + tilesetImageResourceID + " for localId " + localId);
- }
- return currentTileStoreIndex-1;
- }
return prepareTileID(b, localId);
}
public int prepareTileID(String tilesetName, int localId) {
- for (TilesetBitmap b : preparedTilesets) {
- if (b.tilesetName.equals(tilesetName)) {
- return prepareTileID(b, localId);
- }
- }
- if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("WARNING: Cannot load tileset " + tilesetName);
- }
- return currentTileStoreIndex-1;
+ TilesetBitmap b = getTilesetBitmap(tilesetName);
+ return prepareTileID(b, localId);
}
public Size getTilesetSize(String tilesetName) {
- for (TilesetBitmap b : preparedTilesets) {
- if (b.tilesetName.equals(tilesetName)) {
- return b.destinationTileSize;
- }
- }
- if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("WARNING: Cannot load tileset " + tilesetName);
- }
- return new Size(1, 1);
+ TilesetBitmap b = getTilesetBitmap(tilesetName);
+ return b.destinationTileSize;
}
private int prepareTileID(TilesetBitmap tileset, int localId) {
@@ -93,22 +82,13 @@ public final class DynamicTileLoader {
++allocatedTiles;
tileset.tilesToLoad.put(localId, tileStoreIndex);
}
- /*if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- final int x = localId % tileset.numTiles.width;
- final int y = (localId - x) / tileset.numTiles.width;
- final String s = tileset.tilesetName + "(" + x + "," + y + ")";
- int n = 0;
- if (DEBUG_tilefrequency.containsKey(s)) n = DEBUG_tilefrequency.get(s);
- ++n;
- DEBUG_tilefrequency.put(s, n);
- }*/
return tileStoreIndex;
}
public void flush() {
store.allocateTiles(allocatedTiles);
- for (TilesetBitmap b : preparedTilesets) {
+ for (TilesetBitmap b : preparedTilesetsByResourceId.values()) {
if (b.tilesToLoad.isEmpty()) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
L.log("OPTIMIZE: Tileset " + b.tilesetName + " does not contain any loaded tiles. The file could be removed from the project.");
@@ -128,19 +108,6 @@ public final class DynamicTileLoader {
if (recycle) tilesetImage.recycle();
}
- /*if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- ArrayList> l = new ArrayList>(DEBUG_tilefrequency.entrySet());
- Collections.sort(l, new Comparator>() {
- @Override
- public int compare(Entry a, Entry b) {
- return b.getValue() - a.getValue();
- }
- });
- for (Entry e : l) {
- L.log("INFO: " + e.getValue() + " times requested " + e.getKey());
- }
- }*/
-
initialize();
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
index c2801b0c5..bc37200f7 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
@@ -158,7 +158,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.actorconditions_2, "actorconditions_2", new Size(3, 1), defaultTileSize);
loader.prepareTileset(R.drawable.items_armours, "items_armours", new Size(14, 3), defaultTileSize);
- loader.prepareTileset(R.drawable.items_weapons, "items_weapons", new Size(14, 8), defaultTileSize);
+ loader.prepareTileset(R.drawable.items_weapons, "items_weapons", new Size(14, 6), defaultTileSize);
loader.prepareTileset(R.drawable.items_jewelry, "items_jewelry", new Size(14, 1), defaultTileSize);
loader.prepareTileset(R.drawable.items_consumables, "items_consumables", new Size(14, 5), defaultTileSize);
loader.prepareTileset(R.drawable.items_books, "items_books", new Size(11, 1), defaultTileSize);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ItemContainerAdapter.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ItemContainerAdapter.java
index 7c1bf64dc..ab774ec06 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ItemContainerAdapter.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ItemContainerAdapter.java
@@ -36,6 +36,6 @@ public final class ItemContainerAdapter extends ArrayAdapter {
@Override
public long getItemId(int position) {
- return getItem(position).itemType.id;
+ return getItem(position).itemType.id.hashCode();
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ShopItemContainerAdapter.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ShopItemContainerAdapter.java
index dbabed381..17cc09264 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ShopItemContainerAdapter.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ShopItemContainerAdapter.java
@@ -74,7 +74,7 @@ public final class ShopItemContainerAdapter extends ArrayAdapter {
@Override
public long getItemId(int position) {
- return getItem(position).itemType.id;
+ return getItem(position).itemType.id.hashCode();
}
public static interface OnContainerItemClickedListener {
diff --git a/AndorsTrailEdit/AndorsTrailEditor.js b/AndorsTrailEdit/AndorsTrailEditor.js
index 880e8ea28..b073ec906 100644
--- a/AndorsTrailEdit/AndorsTrailEditor.js
+++ b/AndorsTrailEdit/AndorsTrailEditor.js
@@ -229,10 +229,14 @@ function startEditor() {
imageSelector.add(new TilesetImage("actorconditions_1", {x:14, y:8}, undefined, [ 'conditions' ] ));
imageSelector.add(new TilesetImage("actorconditions_2", {x:3, y:1}, undefined, [ 'conditions' ] ));
imageSelector.add(new TilesetImage("items_armours", {x:14, y:3}, undefined, [ 'items' ] ));
+ imageSelector.add(new TilesetImage("items_armours_3", {x:10, y:4}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_armours_2", {x:7, y:1}, undefined, [ 'items' ] ));
- imageSelector.add(new TilesetImage("items_weapons", {x:14, y:8}, undefined, [ 'items' ] ));
+ imageSelector.add(new TilesetImage("items_weapons", {x:14, y:6}, undefined, [ 'items' ] ));
+ imageSelector.add(new TilesetImage("items_weapons_3", {x:13, y:5}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_weapons_2", {x:7, y:1}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_jewelry", {x:14, y:1}, undefined, [ 'items' ] ));
+ imageSelector.add(new TilesetImage("items_rings_1", {x:10, y:3}, undefined, [ 'items' ] ));
+ imageSelector.add(new TilesetImage("items_necklaces_1", {x:10, y:3}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_consumables", {x:14, y:5}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_books", {x:11, y:1}, undefined, [ 'items' ] ));
imageSelector.add(new TilesetImage("items_misc", {x:14, y:4}, undefined, [ 'items' ] ));
diff --git a/AndorsTrailEdit/ImageSelector.js b/AndorsTrailEdit/ImageSelector.js
index adccc0157..a4f5b0093 100644
--- a/AndorsTrailEdit/ImageSelector.js
+++ b/AndorsTrailEdit/ImageSelector.js
@@ -97,11 +97,12 @@ function ImageSelector(imagePath, dialog) {
dialog.dialog({
+ title: "Select icon",
autoOpen: false,
modal: true,
- width: 700,
+ width: 730,
height: 800,
- position: [50,50],
+ position: [30,30],
buttons: {
Cancel: function() {
$( this ).dialog( "close" );