mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-20 10:31:28 +01:00
Refactor: removed integer id from item types (should use the real string id instead).
Changed some ArrayList:s in the maploader into using HashMap:s (should speed up the loading process). Added graphical tiles for more weapons, armours, rings and amulets. git-svn-id: https://andors-trail.googlecode.com/svn/trunk@156 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
@@ -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;
|
||||
|
||||
BIN
AndorsTrail/res/drawable/items_armours_3.png
Normal file
BIN
AndorsTrail/res/drawable/items_armours_3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
AndorsTrail/res/drawable/items_necklaces_1.png
Normal file
BIN
AndorsTrail/res/drawable/items_necklaces_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
BIN
AndorsTrail/res/drawable/items_rings_1.png
Normal file
BIN
AndorsTrail/res/drawable/items_rings_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 28 KiB |
BIN
AndorsTrail/res/drawable/items_weapons_3.png
Normal file
BIN
AndorsTrail/res/drawable/items_weapons_3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -8,11 +8,11 @@
|
||||
|
||||
<string name="itemlist_weapons">
|
||||
[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||||||||||||||||||||||};
|
||||
</string>
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
<string name="itemlist_v069">
|
||||
[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|}}||||||||||||||};
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
<string name="dialog_newversion_title">Willkommen</string>
|
||||
<string name="dialog_newversion_message">
|
||||
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
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
<string name="itemlist_weapons">
|
||||
[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||||||||||||||||||||||};
|
||||
</string>
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
<string name="itemlist_v069">
|
||||
[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|}}||||||||||||||};
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
<string name="itemlist_weapons">
|
||||
[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||||||||||||||||||||||};
|
||||
</string>
|
||||
|
||||
@@ -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||||||||||||||||||||||||||};
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
<string name="itemlist_weapons">
|
||||
[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||||||||||||||||||||||};
|
||||
</string>
|
||||
|
||||
|
||||
@@ -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|{
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
<string name="itemlist_weapons">
|
||||
[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||||||||||||||||||||||};
|
||||
</string>
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
<string name="itemlist_v069">
|
||||
[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||||||||||||||||||||||};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -294,6 +294,7 @@ public final class ConversationActivity extends Activity {
|
||||
dest.writeInt(color);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public static final Parcelable.Creator<ConversationStatement> CREATOR = new Parcelable.Creator<ConversationStatement>() {
|
||||
public ConversationStatement createFromParcel(Parcel in) {
|
||||
ConversationStatement result = new ConversationStatement();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<ItemType> itemTypes = new ArrayList<ItemType>();
|
||||
public final ArrayList<ItemType> TEST_itemTypes = itemTypes;
|
||||
private final HashMap<String, ItemType> itemTypes = new HashMap<String, ItemType>();
|
||||
public final HashMap<String, ItemType> 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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<TilesetBitmap> preparedTilesets = new ArrayList<TilesetBitmap>();
|
||||
//private final HashMap<String, Integer> DEBUG_tilefrequency = new HashMap<String, Integer>();
|
||||
private final HashMap<Integer, TilesetBitmap> preparedTilesetsByResourceId = new HashMap<Integer, TilesetBitmap>();
|
||||
private final HashMap<String, TilesetBitmap> preparedTilesetsByResourceName = new HashMap<String, TilesetBitmap>();
|
||||
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<Entry<String, Integer>> l = new ArrayList<Entry<String,Integer>>(DEBUG_tilefrequency.entrySet());
|
||||
Collections.sort(l, new Comparator<Entry<String, Integer>>() {
|
||||
@Override
|
||||
public int compare(Entry<String, Integer> a, Entry<String, Integer> b) {
|
||||
return b.getValue() - a.getValue();
|
||||
}
|
||||
});
|
||||
for (Entry<String, Integer> e : l) {
|
||||
L.log("INFO: " + e.getValue() + " times requested " + e.getKey());
|
||||
}
|
||||
}*/
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -36,6 +36,6 @@ public final class ItemContainerAdapter extends ArrayAdapter<ItemEntry> {
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return getItem(position).itemType.id;
|
||||
return getItem(position).itemType.id.hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ public final class ShopItemContainerAdapter extends ArrayAdapter<ItemEntry> {
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return getItem(position).itemType.id;
|
||||
return getItem(position).itemType.id.hashCode();
|
||||
}
|
||||
|
||||
public static interface OnContainerItemClickedListener {
|
||||
|
||||
@@ -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' ] ));
|
||||
|
||||
@@ -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" );
|
||||
|
||||
Reference in New Issue
Block a user