Display list of skills that the player has.

Leveling up gives a new skillpoint to distribute.
GUI for selecting what skill to increase.

git-svn-id: https://andors-trail.googlecode.com/svn/trunk@135 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
oskar.wiksten
2011-07-17 16:53:20 +00:00
parent 2b961c391c
commit 585025f8d3
37 changed files with 1131 additions and 355 deletions

View File

@@ -47,6 +47,7 @@
<activity android:name=".activity.QuestLogActivity" />
<activity android:name=".activity.ActorConditionInfoActivity" android:theme="@android:style/Theme.Dialog" />
<activity android:name=".activity.BulkSelectionInterface" android:theme="@android:style/Theme.Dialog" />
<activity android:name=".activity.SkillInfoActivity" android:theme="@android:style/Theme.Dialog" />
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

View File

@@ -130,15 +130,18 @@ public final class R {
public static final int ui_gradientshape=0x7f020046;
public static final int ui_gradientshape_translucent=0x7f020047;
public static final int ui_green_foreground=0x7f020048;
public static final int ui_progress_ap=0x7f020049;
public static final int ui_progress_exp=0x7f02004a;
public static final int ui_progress_health=0x7f02004b;
public static final int ui_purple_foreground=0x7f02004c;
public static final int ui_red_foreground=0x7f02004d;
public static final int ui_selections=0x7f02004e;
public static final int ui_startbackground=0x7f02004f;
public static final int ui_statustext=0x7f020050;
public static final int ui_yellow_foreground=0x7f020051;
public static final int ui_icon_equipment=0x7f020049;
public static final int ui_icon_quest=0x7f02004a;
public static final int ui_icon_skill=0x7f02004b;
public static final int ui_progress_ap=0x7f02004c;
public static final int ui_progress_exp=0x7f02004d;
public static final int ui_progress_health=0x7f02004e;
public static final int ui_purple_foreground=0x7f02004f;
public static final int ui_red_foreground=0x7f020050;
public static final int ui_selections=0x7f020051;
public static final int ui_startbackground=0x7f020052;
public static final int ui_statustext=0x7f020053;
public static final int ui_yellow_foreground=0x7f020054;
}
public static final class id {
public static final int abilitymodifierinfo_change_maxap=0x7f090005;
@@ -182,151 +185,164 @@ public final class R {
public static final int conversation_next=0x7f090028;
public static final int conversation_statements=0x7f090027;
public static final int conversation_text=0x7f09002b;
public static final int heroinfo_ap=0x7f09003d;
public static final int heroinfo_currentconditions=0x7f090044;
public static final int heroinfo_currentconditions_title=0x7f090043;
public static final int heroinfo_currenttraits=0x7f090041;
public static final int heroinfo_expbar=0x7f090040;
public static final int heroinfo_healthbar=0x7f09003f;
public static final int heroinfo_image=0x7f090039;
public static final int heroinfo_itemeffects=0x7f090042;
public static final int heroinfo_level=0x7f09003b;
public static final int heroinfo_levelup=0x7f090045;
public static final int heroinfo_movecost=0x7f09003e;
public static final int heroinfo_quests=0x7f090046;
public static final int heroinfo_stats_attack=0x7f090048;
public static final int heroinfo_stats_defense=0x7f090049;
public static final int heroinfo_stats_gold=0x7f090047;
public static final int heroinfo_ap=0x7f090040;
public static final int heroinfo_currentconditions=0x7f090047;
public static final int heroinfo_currentconditions_title=0x7f090046;
public static final int heroinfo_currenttraits=0x7f090044;
public static final int heroinfo_expbar=0x7f090043;
public static final int heroinfo_healthbar=0x7f090042;
public static final int heroinfo_image=0x7f09003c;
public static final int heroinfo_itemeffects=0x7f090045;
public static final int heroinfo_level=0x7f09003e;
public static final int heroinfo_levelup=0x7f090048;
public static final int heroinfo_listskills_list=0x7f09003b;
public static final int heroinfo_listskills_number_of_increases=0x7f09003a;
public static final int heroinfo_movecost=0x7f090041;
public static final int heroinfo_quests=0x7f090049;
public static final int heroinfo_stats_attack=0x7f09004b;
public static final int heroinfo_stats_defense=0x7f09004c;
public static final int heroinfo_stats_gold=0x7f09004a;
public static final int heroinfo_tab1=0x7f09002c;
public static final int heroinfo_tab2=0x7f09002d;
public static final int heroinfo_title=0x7f09003a;
public static final int heroinfo_totalexperience=0x7f09003c;
public static final int heroinfo_worn_body=0x7f090030;
public static final int heroinfo_worn_center=0x7f09002e;
public static final int heroinfo_worn_feet=0x7f090033;
public static final int heroinfo_worn_hand=0x7f090032;
public static final int heroinfo_worn_head=0x7f09002f;
public static final int heroinfo_worn_neck=0x7f090031;
public static final int heroinfo_worn_ringleft=0x7f090035;
public static final int heroinfo_worn_ringright=0x7f090037;
public static final int heroinfo_worn_shield=0x7f090036;
public static final int heroinfo_worn_weapon=0x7f090034;
public static final int inv_assign_slot1=0x7f0900b7;
public static final int inv_assign_slot2=0x7f0900b8;
public static final int inv_assign_slot3=0x7f0900b9;
public static final int inv_image=0x7f09004a;
public static final int inv_menu_assign=0x7f0900b6;
public static final int inv_menu_drop=0x7f0900b5;
public static final int inv_menu_equip=0x7f0900b2;
public static final int inv_menu_info=0x7f0900b1;
public static final int inv_menu_unequip=0x7f0900b3;
public static final int inv_menu_use=0x7f0900b4;
public static final int inv_text=0x7f09004b;
public static final int inventorylist_root=0x7f090038;
public static final int itemeffect_onequip_abilitymodifierinfo=0x7f09004d;
public static final int itemeffect_onequip_conditions=0x7f09004e;
public static final int itemeffect_onequip_title=0x7f09004c;
public static final int itemeffect_onhit=0x7f090052;
public static final int itemeffect_onhit_title=0x7f090051;
public static final int itemeffect_onkill=0x7f090054;
public static final int itemeffect_onkill_title=0x7f090053;
public static final int itemeffect_onuse=0x7f090050;
public static final int itemeffect_onuse_conditions_source=0x7f090057;
public static final int itemeffect_onuse_conditions_source_title=0x7f090056;
public static final int itemeffect_onuse_conditions_target=0x7f090059;
public static final int itemeffect_onuse_conditions_target_title=0x7f090058;
public static final int itemeffect_onuse_list=0x7f090055;
public static final int itemeffect_onuse_title=0x7f09004f;
public static final int iteminfo_action=0x7f09005e;
public static final int iteminfo_category=0x7f09005c;
public static final int iteminfo_close=0x7f09005f;
public static final int iteminfo_effects=0x7f09005d;
public static final int iteminfo_image=0x7f09005a;
public static final int iteminfo_title=0x7f09005b;
public static final int levelup_add_attackchance=0x7f090064;
public static final int levelup_add_attackdamage=0x7f090065;
public static final int levelup_add_blockchance=0x7f090066;
public static final int levelup_add_health=0x7f090063;
public static final int levelup_description=0x7f090062;
public static final int levelup_image=0x7f090061;
public static final int levelup_titlelayout=0x7f090060;
public static final int loadsave_description=0x7f09006a;
public static final int loadsave_image=0x7f090068;
public static final int loadsave_slot_1=0x7f09006b;
public static final int loadsave_slot_2=0x7f09006c;
public static final int loadsave_slot_3=0x7f09006d;
public static final int loadsave_slot_4=0x7f09006e;
public static final int loadsave_title=0x7f090069;
public static final int loadsave_titlelayout=0x7f090067;
public static final int main_combatview=0x7f090072;
public static final int main_container=0x7f09006f;
public static final int main_mainview=0x7f090073;
public static final int main_quickitemview=0x7f090071;
public static final int main_statusview=0x7f090070;
public static final int main_virtual_dpad=0x7f090076;
public static final int monsterencounter_attack=0x7f09007a;
public static final int monsterencounter_cancel=0x7f09007c;
public static final int monsterencounter_description=0x7f090079;
public static final int monsterencounter_image=0x7f090077;
public static final int monsterencounter_info=0x7f09007b;
public static final int monsterencounter_title=0x7f090078;
public static final int monsterinfo_close=0x7f090083;
public static final int monsterinfo_currenttraits=0x7f090081;
public static final int monsterinfo_difficulty=0x7f09007f;
public static final int monsterinfo_healthbar=0x7f090080;
public static final int monsterinfo_image=0x7f09007d;
public static final int monsterinfo_onhiteffects=0x7f090082;
public static final int monsterinfo_title=0x7f09007e;
public static final int questlog_contents=0x7f090085;
public static final int questlog_entrytext=0x7f090086;
public static final int questlog_includecompleted=0x7f090084;
public static final int heroinfo_tab3=0x7f09002e;
public static final int heroinfo_title=0x7f09003d;
public static final int heroinfo_totalexperience=0x7f09003f;
public static final int heroinfo_worn_body=0x7f090031;
public static final int heroinfo_worn_center=0x7f09002f;
public static final int heroinfo_worn_feet=0x7f090034;
public static final int heroinfo_worn_hand=0x7f090033;
public static final int heroinfo_worn_head=0x7f090030;
public static final int heroinfo_worn_neck=0x7f090032;
public static final int heroinfo_worn_ringleft=0x7f090036;
public static final int heroinfo_worn_ringright=0x7f090038;
public static final int heroinfo_worn_shield=0x7f090037;
public static final int heroinfo_worn_weapon=0x7f090035;
public static final int inv_assign_slot1=0x7f0900c4;
public static final int inv_assign_slot2=0x7f0900c5;
public static final int inv_assign_slot3=0x7f0900c6;
public static final int inv_image=0x7f09004d;
public static final int inv_menu_assign=0x7f0900c3;
public static final int inv_menu_drop=0x7f0900c2;
public static final int inv_menu_equip=0x7f0900bf;
public static final int inv_menu_info=0x7f0900be;
public static final int inv_menu_unequip=0x7f0900c0;
public static final int inv_menu_use=0x7f0900c1;
public static final int inv_text=0x7f09004e;
public static final int inventorylist_root=0x7f090039;
public static final int itemeffect_onequip_abilitymodifierinfo=0x7f090050;
public static final int itemeffect_onequip_conditions=0x7f090051;
public static final int itemeffect_onequip_title=0x7f09004f;
public static final int itemeffect_onhit=0x7f090055;
public static final int itemeffect_onhit_title=0x7f090054;
public static final int itemeffect_onkill=0x7f090057;
public static final int itemeffect_onkill_title=0x7f090056;
public static final int itemeffect_onuse=0x7f090053;
public static final int itemeffect_onuse_conditions_source=0x7f09005a;
public static final int itemeffect_onuse_conditions_source_title=0x7f090059;
public static final int itemeffect_onuse_conditions_target=0x7f09005c;
public static final int itemeffect_onuse_conditions_target_title=0x7f09005b;
public static final int itemeffect_onuse_list=0x7f090058;
public static final int itemeffect_onuse_title=0x7f090052;
public static final int iteminfo_action=0x7f090061;
public static final int iteminfo_category=0x7f09005f;
public static final int iteminfo_close=0x7f090062;
public static final int iteminfo_effects=0x7f090060;
public static final int iteminfo_image=0x7f09005d;
public static final int iteminfo_title=0x7f09005e;
public static final int levelup_add_attackchance=0x7f090066;
public static final int levelup_add_attackdamage=0x7f090067;
public static final int levelup_add_blockchance=0x7f090068;
public static final int levelup_add_health=0x7f090065;
public static final int levelup_adds_new_skillpoint=0x7f090069;
public static final int levelup_description=0x7f090064;
public static final int levelup_image=0x7f090063;
public static final int loadsave_description=0x7f09006d;
public static final int loadsave_image=0x7f09006b;
public static final int loadsave_slot_1=0x7f09006e;
public static final int loadsave_slot_2=0x7f09006f;
public static final int loadsave_slot_3=0x7f090070;
public static final int loadsave_slot_4=0x7f090071;
public static final int loadsave_title=0x7f09006c;
public static final int loadsave_titlelayout=0x7f09006a;
public static final int main_combatview=0x7f090075;
public static final int main_container=0x7f090072;
public static final int main_mainview=0x7f090076;
public static final int main_quickitemview=0x7f090074;
public static final int main_statusview=0x7f090073;
public static final int main_virtual_dpad=0x7f090079;
public static final int monsterencounter_attack=0x7f09007d;
public static final int monsterencounter_cancel=0x7f09007f;
public static final int monsterencounter_description=0x7f09007c;
public static final int monsterencounter_image=0x7f09007a;
public static final int monsterencounter_info=0x7f09007e;
public static final int monsterencounter_title=0x7f09007b;
public static final int monsterinfo_close=0x7f090086;
public static final int monsterinfo_currenttraits=0x7f090084;
public static final int monsterinfo_difficulty=0x7f090082;
public static final int monsterinfo_healthbar=0x7f090083;
public static final int monsterinfo_image=0x7f090080;
public static final int monsterinfo_onhiteffects=0x7f090085;
public static final int monsterinfo_title=0x7f090081;
public static final int questlog_contents=0x7f090088;
public static final int questlog_entrytext=0x7f090089;
public static final int questlog_includecompleted=0x7f090087;
public static final int quick_menu_assign=0x7f090000;
public static final int quick_menu_assign_group=0x7f090001;
public static final int quick_menu_unassign=0x7f090002;
public static final int quickitem_toggle=0x7f0900a0;
public static final int quickitemview_item1=0x7f090087;
public static final int quickitemview_item2=0x7f090088;
public static final int quickitemview_item3=0x7f090089;
public static final int rangebar_label=0x7f09008a;
public static final int rangebar_progress=0x7f09008b;
public static final int rangebar_text=0x7f09008c;
public static final int shop_buy_gc=0x7f09008e;
public static final int shop_buy_list=0x7f09008f;
public static final int shop_sell_gc=0x7f090091;
public static final int shop_sell_list=0x7f090092;
public static final int shop_tab1=0x7f09008d;
public static final int shop_tab2=0x7f090090;
public static final int shopitem_image=0x7f090093;
public static final int shopitem_infobutton=0x7f090095;
public static final int shopitem_shopbutton=0x7f090094;
public static final int shopitem_text=0x7f090096;
public static final int startscreen_about=0x7f09009d;
public static final int startscreen_continue=0x7f09009a;
public static final int startscreen_currenthero=0x7f090097;
public static final int startscreen_enterheroname=0x7f090098;
public static final int startscreen_load=0x7f09009c;
public static final int startscreen_newgame=0x7f09009b;
public static final int startscreen_quit=0x7f09009e;
public static final int startscreen_version=0x7f090099;
public static final int status_image=0x7f09009f;
public static final int statusview_activeconditions=0x7f090075;
public static final int statusview_exp=0x7f0900a2;
public static final int statusview_health=0x7f0900a1;
public static final int statusview_statustext=0x7f090074;
public static final int traitsinfo_attack_chance=0x7f0900a6;
public static final int traitsinfo_attack_cost=0x7f0900a4;
public static final int traitsinfo_attack_damage=0x7f0900a8;
public static final int traitsinfo_attack_row1=0x7f0900a3;
public static final int traitsinfo_attack_row2=0x7f0900a5;
public static final int traitsinfo_attack_row3=0x7f0900a7;
public static final int traitsinfo_critical_row1=0x7f0900a9;
public static final int traitsinfo_critical_row2=0x7f0900ab;
public static final int traitsinfo_criticalhit_chance=0x7f0900aa;
public static final int traitsinfo_criticalhit_multiplier=0x7f0900ac;
public static final int traitsinfo_defense_chance=0x7f0900ae;
public static final int traitsinfo_defense_damageresist=0x7f0900b0;
public static final int traitsinfo_defense_row1=0x7f0900ad;
public static final int traitsinfo_defense_row2=0x7f0900af;
public static final int quickitem_toggle=0x7f0900ad;
public static final int quickitemview_item1=0x7f09008a;
public static final int quickitemview_item2=0x7f09008b;
public static final int quickitemview_item3=0x7f09008c;
public static final int rangebar_label=0x7f09008d;
public static final int rangebar_progress=0x7f09008e;
public static final int rangebar_text=0x7f09008f;
public static final int shop_buy_gc=0x7f090091;
public static final int shop_buy_list=0x7f090092;
public static final int shop_sell_gc=0x7f090094;
public static final int shop_sell_list=0x7f090095;
public static final int shop_tab1=0x7f090090;
public static final int shop_tab2=0x7f090093;
public static final int shopitem_image=0x7f090096;
public static final int shopitem_infobutton=0x7f090098;
public static final int shopitem_shopbutton=0x7f090097;
public static final int shopitem_text=0x7f090099;
public static final int skillentry_description=0x7f0900a3;
public static final int skillentry_icon=0x7f0900a1;
public static final int skillentry_title=0x7f0900a2;
public static final int skillinfo_currentlevel=0x7f09009c;
public static final int skillinfo_image=0x7f09009a;
public static final int skillinfo_longdescription=0x7f09009d;
public static final int skillinfo_prerequisites=0x7f09009e;
public static final int skillinfo_title=0x7f09009b;
public static final int skillinfoinfo_action=0x7f09009f;
public static final int skillinfoinfo_close=0x7f0900a0;
public static final int startscreen_about=0x7f0900aa;
public static final int startscreen_continue=0x7f0900a7;
public static final int startscreen_currenthero=0x7f0900a4;
public static final int startscreen_enterheroname=0x7f0900a5;
public static final int startscreen_load=0x7f0900a9;
public static final int startscreen_newgame=0x7f0900a8;
public static final int startscreen_quit=0x7f0900ab;
public static final int startscreen_version=0x7f0900a6;
public static final int status_image=0x7f0900ac;
public static final int statusview_activeconditions=0x7f090078;
public static final int statusview_exp=0x7f0900af;
public static final int statusview_health=0x7f0900ae;
public static final int statusview_statustext=0x7f090077;
public static final int traitsinfo_attack_chance=0x7f0900b3;
public static final int traitsinfo_attack_cost=0x7f0900b1;
public static final int traitsinfo_attack_damage=0x7f0900b5;
public static final int traitsinfo_attack_row1=0x7f0900b0;
public static final int traitsinfo_attack_row2=0x7f0900b2;
public static final int traitsinfo_attack_row3=0x7f0900b4;
public static final int traitsinfo_critical_row1=0x7f0900b6;
public static final int traitsinfo_critical_row2=0x7f0900b8;
public static final int traitsinfo_criticalhit_chance=0x7f0900b7;
public static final int traitsinfo_criticalhit_multiplier=0x7f0900b9;
public static final int traitsinfo_defense_chance=0x7f0900bb;
public static final int traitsinfo_defense_damageresist=0x7f0900bd;
public static final int traitsinfo_defense_row1=0x7f0900ba;
public static final int traitsinfo_defense_row2=0x7f0900bc;
}
public static final class layout {
public static final int abilitymodifierview=0x7f030000;
@@ -339,26 +355,29 @@ public final class R {
public static final int heroinfo=0x7f030007;
public static final int heroinfo_equipped=0x7f030008;
public static final int heroinfo_inventory=0x7f030009;
public static final int heroinfo_stats=0x7f03000a;
public static final int heroinfo_statsicons=0x7f03000b;
public static final int inventoryitemview=0x7f03000c;
public static final int itemeffectview=0x7f03000d;
public static final int itemeffectview_onuse=0x7f03000e;
public static final int iteminfo=0x7f03000f;
public static final int levelup=0x7f030010;
public static final int loadsave=0x7f030011;
public static final int main=0x7f030012;
public static final int monsterencounter=0x7f030013;
public static final int monsterinfo=0x7f030014;
public static final int questlog=0x7f030015;
public static final int questlogentry=0x7f030016;
public static final int quickitemview=0x7f030017;
public static final int rangebar=0x7f030018;
public static final int shop=0x7f030019;
public static final int shopitemview=0x7f03001a;
public static final int startscreen=0x7f03001b;
public static final int statusview=0x7f03001c;
public static final int traitsinfoview=0x7f03001d;
public static final int heroinfo_skill_list=0x7f03000a;
public static final int heroinfo_stats=0x7f03000b;
public static final int heroinfo_statsicons=0x7f03000c;
public static final int inventoryitemview=0x7f03000d;
public static final int itemeffectview=0x7f03000e;
public static final int itemeffectview_onuse=0x7f03000f;
public static final int iteminfo=0x7f030010;
public static final int levelup=0x7f030011;
public static final int loadsave=0x7f030012;
public static final int main=0x7f030013;
public static final int monsterencounter=0x7f030014;
public static final int monsterinfo=0x7f030015;
public static final int questlog=0x7f030016;
public static final int questlogentry=0x7f030017;
public static final int quickitemview=0x7f030018;
public static final int rangebar=0x7f030019;
public static final int shop=0x7f03001a;
public static final int shopitemview=0x7f03001b;
public static final int skill_info_view=0x7f03001c;
public static final int skill_listentry_view=0x7f03001d;
public static final int startscreen=0x7f03001e;
public static final int statusview=0x7f03001f;
public static final int traitsinfoview=0x7f030020;
}
public static final class menu {
public static final int inventoryitem=0x7f0b0000;
@@ -457,7 +476,7 @@ public final class R {
public static final int conversation_rewardgold=0x7f0500ee;
public static final int conversation_rewarditem=0x7f0500f0;
public static final int conversation_rewarditems=0x7f0500f1;
public static final int conversation_title=0x7f050149;
public static final int conversation_title=0x7f050184;
public static final int conversationlist_alynndir=0x7f050026;
public static final int conversationlist_ambelie=0x7f05002a;
public static final int conversationlist_blackwater_harlenn=0x7f05003d;
@@ -643,7 +662,7 @@ public final class R {
public static final int itemlist_v069_2=0x7f050059;
public static final int itemlist_v069_questitems=0x7f05005a;
public static final int itemlist_weapons=0x7f05004e;
public static final int key_required=0x7f050148;
public static final int key_required=0x7f050183;
public static final int levelup_add_attackchance=0x7f050101;
public static final int levelup_add_attackchance_description=0x7f050102;
public static final int levelup_add_attackdamage=0x7f050103;
@@ -652,6 +671,7 @@ public final class R {
public static final int levelup_add_blockchance_description=0x7f050106;
public static final int levelup_add_health=0x7f0500ff;
public static final int levelup_add_health_description=0x7f050100;
public static final int levelup_adds_new_skillpoint=0x7f050182;
public static final int levelup_buttontext=0x7f0500fe;
public static final int levelup_description=0x7f0500fd;
public static final int levelup_title=0x7f0500fc;
@@ -725,6 +745,64 @@ public final class R {
public static final int shop_sell=0x7f0500f5;
public static final int shop_sellitem=0x7f0500f8;
public static final int shop_yourgold=0x7f0500f9;
public static final int skill_current_level=0x7f05017c;
public static final int skill_current_level_with_maximum=0x7f05017d;
public static final int skill_longdescription_barkskin=0x7f05016e;
public static final int skill_longdescription_barter=0x7f05016c;
public static final int skill_longdescription_better_criticals=0x7f050170;
public static final int skill_longdescription_cleave=0x7f050174;
public static final int skill_longdescription_coinfinder=0x7f050172;
public static final int skill_longdescription_dodge=0x7f05016d;
public static final int skill_longdescription_eater=0x7f050175;
public static final int skill_longdescription_evasion=0x7f050177;
public static final int skill_longdescription_fortitude=0x7f050176;
public static final int skill_longdescription_lower_exploss=0x7f050179;
public static final int skill_longdescription_magicfinder=0x7f05017a;
public static final int skill_longdescription_more_criticals=0x7f05016f;
public static final int skill_longdescription_more_exp=0x7f050173;
public static final int skill_longdescription_regeneration=0x7f050178;
public static final int skill_longdescription_speed=0x7f050171;
public static final int skill_longdescription_weapon_chance=0x7f05016a;
public static final int skill_longdescription_weapon_dmg=0x7f05016b;
public static final int skill_number_of_increases_one=0x7f050180;
public static final int skill_number_of_increases_several=0x7f050181;
public static final int skill_prerequisite_other_skill=0x7f05017e;
public static final int skill_prerequisite_stat=0x7f05017f;
public static final int skill_shortdescription_barkskin=0x7f05015d;
public static final int skill_shortdescription_barter=0x7f05015b;
public static final int skill_shortdescription_better_criticals=0x7f05015f;
public static final int skill_shortdescription_cleave=0x7f050163;
public static final int skill_shortdescription_coinfinder=0x7f050161;
public static final int skill_shortdescription_dodge=0x7f05015c;
public static final int skill_shortdescription_eater=0x7f050164;
public static final int skill_shortdescription_evasion=0x7f050166;
public static final int skill_shortdescription_fortitude=0x7f050165;
public static final int skill_shortdescription_lower_exploss=0x7f050168;
public static final int skill_shortdescription_magicfinder=0x7f050169;
public static final int skill_shortdescription_more_criticals=0x7f05015e;
public static final int skill_shortdescription_more_exp=0x7f050162;
public static final int skill_shortdescription_regeneration=0x7f050167;
public static final int skill_shortdescription_speed=0x7f050160;
public static final int skill_shortdescription_weapon_chance=0x7f050159;
public static final int skill_shortdescription_weapon_dmg=0x7f05015a;
public static final int skill_title_barkskin=0x7f05014c;
public static final int skill_title_barter=0x7f05014a;
public static final int skill_title_better_criticals=0x7f05014e;
public static final int skill_title_cleave=0x7f050152;
public static final int skill_title_coinfinder=0x7f050150;
public static final int skill_title_dodge=0x7f05014b;
public static final int skill_title_eater=0x7f050153;
public static final int skill_title_evasion=0x7f050155;
public static final int skill_title_fortitude=0x7f050154;
public static final int skill_title_lower_exploss=0x7f050157;
public static final int skill_title_magicfinder=0x7f050158;
public static final int skill_title_more_criticals=0x7f05014d;
public static final int skill_title_more_exp=0x7f050151;
public static final int skill_title_regeneration=0x7f050156;
public static final int skill_title_speed=0x7f05014f;
public static final int skill_title_weapon_chance=0x7f050148;
public static final int skill_title_weapon_dmg=0x7f050149;
public static final int skillinfo_action_levelup=0x7f05017b;
public static final int startscreen_about=0x7f0500ea;
public static final int startscreen_continue=0x7f0500e7;
public static final int startscreen_enterheroname=0x7f0500eb;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -29,9 +29,16 @@
<!-- TAB 2 -->
<include
layout="@layout/heroinfo_inventory"
layout="@layout/heroinfo_skill_list"
android:id="@+id/heroinfo_tab2"
/>
<!-- TAB 3 -->
<include
layout="@layout/heroinfo_inventory"
android:id="@+id/heroinfo_tab3"
/>
</FrameLayout>
</LinearLayout>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="You have N skill increases left"
android:id="@+id/heroinfo_listskills_number_of_increases"
android:layout_marginBottom="@dimen/section_margin"
android:layout_marginTop="@dimen/section_margin"
android:layout_gravity="center_horizontal"
/>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/heroinfo_listskills_list"
>
</ListView>
</LinearLayout>

View File

@@ -1,81 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dialog_margin"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="horizontal"
android:gravity="center_vertical"
android:id="@+id/levelup_titlelayout"
>
<ImageView
android:id="@+id/levelup_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/char_hero"
android:paddingRight="@dimen/dialog_iconpadding_right"
android:paddingBottom="@dimen/dialog_iconpadding_bottom"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_title"
android:textSize="@dimen/titletext"
/>
</LinearLayout>
<TextView
android:id="@+id/levelup_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/levelup_titlelayout"
android:layout_alignParentLeft="true"
android:text="Welcome to level N!"
/>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/levelup_description"
android:layout_alignParentLeft="true"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<Button
android:id="@+id/levelup_add_health"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_health"
<ImageView
android:id="@+id/levelup_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/char_hero"
android:paddingRight="@dimen/dialog_iconpadding_right"
android:paddingBottom="@dimen/dialog_iconpadding_bottom"
/>
<Button
android:id="@+id/levelup_add_attackchance"
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_attackchance"
/>
<Button
android:id="@+id/levelup_add_attackdamage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_attackdamage"
/>
<Button
android:id="@+id/levelup_add_blockchance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_blockchance"
android:text="@string/levelup_title"
android:textSize="@dimen/titletext"
/>
</LinearLayout>
</ScrollView>
</RelativeLayout>
<TextView
android:id="@+id/levelup_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Welcome to level N!"
/>
<Button
android:id="@+id/levelup_add_health"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_health"
/>
<Button
android:id="@+id/levelup_add_attackchance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_attackchance"
/>
<Button
android:id="@+id/levelup_add_attackdamage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_attackdamage"
/>
<Button
android:id="@+id/levelup_add_blockchance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_add_blockchance"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="@dimen/section_margin"
android:id="@+id/levelup_adds_new_skillpoint"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ui_icon_skill"
android:paddingRight="@dimen/dialog_iconpadding_right"
android:paddingBottom="@dimen/dialog_iconpadding_bottom"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/levelup_adds_new_skillpoint"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dialog_margin"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<ImageView
android:id="@+id/skillinfo_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:paddingRight="@dimen/dialog_iconpadding_right"
android:paddingBottom="@dimen/dialog_iconpadding_bottom"
/>
<TextView
android:id="@+id/skillinfo_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Skill"
android:textSize="@dimen/titletext"
/>
</LinearLayout>
<TextView
android:text="Current level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:id="@+id/skillinfo_currentlevel"
android:layout_marginBottom="@dimen/section_margin"
/>
<TextView
android:text="Long description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/skillinfo_longdescription"
android:layout_marginBottom="@dimen/section_margin"
/>
<TextView
android:text="Prerequisite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/skillinfo_prerequisites"
/>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="@android:style/ButtonBar"
>
<Button
android:id="@+id/skillinfoinfo_action"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/skillinfo_action_levelup"
/>
<Button
android:id="@+id/skillinfoinfo_close"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/dialog_close"
/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/skillentry_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/icon"
/>
<TextView
android:id="@+id/skillentry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/skillentry_icon"
android:layout_alignParentTop="true"
android:text="Title"
android:textSize="22dp"
/>
<TextView
android:id="@+id/skillentry_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/skillentry_icon"
android:layout_below="@id/skillentry_title"
android:text="Description"
/>
</RelativeLayout>

View File

@@ -372,4 +372,67 @@
<string name="bulkselection_totalcost_buy">Total cost: %1$d gold</string>
<string name="bulkselection_totalcost_sell">Total cost: %1$d gold</string>
<string name="skill_title_weapon_chance">Weapon Accuracy</string>
<string name="skill_title_weapon_dmg">Hard Hit</string>
<string name="skill_title_barter">Merchant</string>
<string name="skill_title_dodge">Dodge</string>
<string name="skill_title_barkskin">Bark Skin</string>
<string name="skill_title_more_criticals">More Criticals</string>
<string name="skill_title_better_criticals">Better Criticals</string>
<string name="skill_title_speed">Combat Speed</string>
<string name="skill_title_coinfinder">Gold Digger</string>
<string name="skill_title_more_exp">Quick Learner</string>
<string name="skill_title_cleave">Cleave</string>
<string name="skill_title_eater">Corpse Eater</string>
<string name="skill_title_fortitude">Increased Fortitude</string>
<string name="skill_title_evasion">Evasion</string>
<string name="skill_title_regeneration">Regeneration</string>
<string name="skill_title_lower_exploss">Failure Mastery</string>
<string name="skill_title_magicfinder">Magic Finder</string>
<string name="skill_shortdescription_weapon_chance">Increased attack chance</string>
<string name="skill_shortdescription_weapon_dmg">Increased attack damage</string>
<string name="skill_shortdescription_barter">Better shop prices</string>
<string name="skill_shortdescription_dodge">Increased block chance</string>
<string name="skill_shortdescription_barkskin">Damage resistance</string>
<string name="skill_shortdescription_more_criticals">Increased critical chance</string>
<string name="skill_shortdescription_better_criticals">Increased critical damage</string>
<string name="skill_shortdescription_speed">Increased maximum action points</string>
<string name="skill_shortdescription_coinfinder">Higher chance of finding gold</string>
<string name="skill_shortdescription_more_exp">More experience from monster kills</string>
<string name="skill_shortdescription_cleave">Recover action points on every kill</string>
<string name="skill_shortdescription_eater">Recover health points on every kill</string>
<string name="skill_shortdescription_fortitude">Gain health on each level up</string>
<string name="skill_shortdescription_evasion">Increased chance of fleeing</string>
<string name="skill_shortdescription_regeneration">Gain health every round</string>
<string name="skill_shortdescription_lower_exploss">Decrease amount of lost experience when dying</string>
<string name="skill_shortdescription_magicfinder">Increased chance of finding magic items</string>
<string name="skill_longdescription_weapon_chance">Increases attack chance by %1$d for each skill level.</string>
<string name="skill_longdescription_weapon_dmg">Increases min and max damage by %1$d for each skill level.</string>
<string name="skill_longdescription_barter">For every skill level, decreases the buying and selling gold penalty by %1$d percentage points.</string>
<string name="skill_longdescription_dodge">Increases block chance by %1$d for each skill level.</string>
<string name="skill_longdescription_barkskin">Increases damage resistance by %1$d for each skill level.</string>
<string name="skill_longdescription_more_criticals">Increases any existing critical chance given by equipment by %1$d %% for each skill level (percentage of existing critical chance value, not percentage points).</string>
<string name="skill_longdescription_better_criticals">Increases any existing critical multiplier given by equipment by %1$d %% for each skill level.</string>
<string name="skill_longdescription_speed">Increases maximum action points (AP) by %1$d for each skill level.</string>
<string name="skill_longdescription_coinfinder">Increases chance of finding gold in monster drops by %1$d %%, and increases amount of gold in drops by %2$d %% for each skill level (up to the maximum amount that the monster drops).</string>
<string name="skill_longdescription_more_exp">Increases amount of exp given by defeating monsters by %1$d %% for each skill level</string>
<string name="skill_longdescription_cleave">Gives +%1$d action points (AP) on every kill per skill level.</string>
<string name="skill_longdescription_eater">Gives +%1$d health points (HP) on every kill per skill level.</string>
<string name="skill_longdescription_fortitude">On every subsequent level-up, maximum health points (HP) will be raised by %1$d per skill level. This is not applied retroactively, only subsequent level-ups will be affected.</string>
<string name="skill_longdescription_evasion">For every skill level, reduces both the chance of failed flee attempts by %1$d %% and the chance that a adjacent monster will attack by %2$d %%.</string>
<string name="skill_longdescription_regeneration">Gain +%1$d health points (HP) on every round per skill level.</string>
<string name="skill_longdescription_lower_exploss">For every skill level, reduces the amount of lost experience caused by death by %1$d %% (percentage of existing exp loss value, not percentage points). %2$d levels will remove all experience loss caused by death.</string>
<string name="skill_longdescription_magicfinder">Increases the chance of finding non-ordinary items by %1$d %% for every skill level.</string>
<string name="skillinfo_action_levelup">Level up</string>
<string name="skill_current_level">Current level: %1$d</string>
<string name="skill_current_level_with_maximum">Current level: %1$d / %2$d</string>
<string name="skill_prerequisite_other_skill">Requires at least level %1$d of the %1$s skill to select.</string>
<string name="skill_prerequisite_stat">Requires at least %1$d %1$s to select</string>
<string name="skill_number_of_increases_one">You may select one skill to increase</string>
<string name="skill_number_of_increases_several">You may select %1$d skills to increase</string>
<string name="levelup_adds_new_skillpoint">This level also gives you a new skill point to spend!</string>
</resources>

View File

@@ -19,7 +19,7 @@ public final class AndorsTrailApplication extends Application {
public static final boolean DEVELOPMENT_DEBUGBUTTONS = true;
public static final boolean DEVELOPMENT_VALIDATEDATA = true;
public static final boolean DEVELOPMENT_DEBUGMESSAGES = true;
public static final int CURRENT_VERSION = 21;
public static final int CURRENT_VERSION = 22;
public static final String CURRENT_VERSION_DISPLAY = "0.6.10dev";
public final WorldContext world = new WorldContext();

View File

@@ -33,6 +33,7 @@ import com.gpl.rpg.AndorsTrail.activity.MonsterInfoActivity;
import com.gpl.rpg.AndorsTrail.activity.Preferences;
import com.gpl.rpg.AndorsTrail.activity.QuestLogActivity;
import com.gpl.rpg.AndorsTrail.activity.ShopActivity;
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
import com.gpl.rpg.AndorsTrail.activity.StartScreenActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.controller.Controller;
@@ -276,15 +277,15 @@ public final class Dialogs {
}
public static void showBulkBuyingInterface(ShopActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_BUY, ShopActivity.INTENTREQUEST_BULKSELECT_BUY);
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_BUY, MainActivity.INTENTREQUEST_BULKSELECT_BUY);
}
public static void showBulkSellingInterface(ShopActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_SELL, ShopActivity.INTENTREQUEST_BULKSELECT_SELL);
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_SELL, MainActivity.INTENTREQUEST_BULKSELECT_SELL);
}
public static void showBulkDroppingInterface(HeroinfoActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_DROP, HeroinfoActivity.INTENTREQUEST_BULKSELECT_DROP);
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) {
@@ -295,4 +296,10 @@ public final class Dialogs {
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/bulkselection/" + itemTypeID));
currentActivity.startActivityForResult(intent, requestCode);
}
public static void showSkillInfo(HeroinfoActivity currentActivity, int skillID) {
Intent intent = new Intent(currentActivity, SkillInfoActivity.class);
intent.putExtra("skillID", skillID);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/showskillinfo/" + skillID));
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_SKILLINFO);
}
}

View File

@@ -14,6 +14,7 @@ import android.content.Context;
import android.os.Environment;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.controller.MovementController;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
@@ -99,7 +100,8 @@ public final class Savegames {
world.model = new ModelContainer(src, world, header.fileversion);
src.close();
MovementController.moveBlockedActors(world);
ActorStatsController.recalculatePlayerCombatTraits(world.model.player);
MovementController.moveBlockedActors(world);
return LOAD_RESULT_SUCCESS;
}

View File

@@ -18,9 +18,9 @@ import com.gpl.rpg.AndorsTrail.view.ActorConditionEffectList;
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
import com.gpl.rpg.AndorsTrail.view.RangeBar;
import com.gpl.rpg.AndorsTrail.view.SkillListAdapater;
import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
@@ -43,8 +43,6 @@ import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
public final class HeroinfoActivity extends TabActivity {
public static final int INTENTREQUEST_BULKSELECT_DROP = BulkSelectionInterface.BULK_INTERFACE_DROP;
private WorldContext world;
private ViewContext view;
@@ -72,6 +70,8 @@ public final class HeroinfoActivity extends TabActivity {
private final ImageView[] wornItemImage = new ImageView[Inventory.NUM_WORN_SLOTS];
private final int[] defaultWornItemImageResourceIDs = new int[Inventory.NUM_WORN_SLOTS];
private SkillListAdapater skillListAdapter;
/** Called when the activity is first created. */
@Override
@@ -90,11 +90,14 @@ public final class HeroinfoActivity extends TabActivity {
Resources res = getResources();
TabHost h = getTabHost();
h.addTab(h.newTabSpec("char")
.setIndicator(res.getString(R.string.heroinfo_char), res.getDrawable(R.drawable.char_hero)) //TODO: Should change icon
.setIndicator(res.getString(R.string.heroinfo_char), res.getDrawable(R.drawable.char_hero))
.setContent(R.id.heroinfo_tab1));
h.addTab(h.newTabSpec("inv")
.setIndicator(res.getString(R.string.heroinfo_inv), res.getDrawable(R.drawable.char_hero)) //TODO: Should change icon
h.addTab(h.newTabSpec("skills")
.setIndicator(res.getString(R.string.heroinfo_skill), res.getDrawable(R.drawable.ui_icon_skill))
.setContent(R.id.heroinfo_tab2));
h.addTab(h.newTabSpec("inv")
.setIndicator(res.getString(R.string.heroinfo_inv), res.getDrawable(R.drawable.ui_icon_equipment))
.setContent(R.id.heroinfo_tab3));
String t = world.model.uiSelections.selectedTabHeroInfo;
if (t != null && t.length() > 0) {
h.setCurrentTabByTag(t);
@@ -164,6 +167,16 @@ public final class HeroinfoActivity extends TabActivity {
inventoryList.setAdapter(new ItemContainerAdapter(this, world.tileStore, container));
skillListAdapter = new SkillListAdapater(this, world.skills.getAllSkills(), player);
ListView skillList = (ListView) findViewById(R.id.heroinfo_listskills_list);
skillList.setAdapter(skillListAdapter);
skillList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Dialogs.showSkillInfo(HeroinfoActivity.this, (int) id);
}
});
update();
}
@@ -207,13 +220,19 @@ public final class HeroinfoActivity extends TabActivity {
break;
case MainActivity.INTENTREQUEST_LEVELUP:
break;
case INTENTREQUEST_BULKSELECT_DROP:
if (resultCode == Activity.RESULT_OK) {
int quantity = data.getExtras().getInt("selectedAmount");
int itemTypeID = data.getExtras().getInt("itemTypeID");
itemType = world.itemTypes.getItemType(itemTypeID);
view.itemController.dropItem(itemType, quantity);
}
case MainActivity.INTENTREQUEST_BULKSELECT_DROP:
if (resultCode != RESULT_OK) break;
int quantity = data.getExtras().getInt("selectedAmount");
int itemTypeID = data.getExtras().getInt("itemTypeID");
itemType = world.itemTypes.getItemType(itemTypeID);
view.itemController.dropItem(itemType, quantity);
break;
case MainActivity.INTENTREQUEST_SKILLINFO:
if (resultCode != RESULT_OK) break;
int skillID = data.getExtras().getInt("skillID");
player.addSkillLevel(skillID);
break;
}
update();
@@ -225,6 +244,24 @@ public final class HeroinfoActivity extends TabActivity {
updateWorn();
updateLevelup();
updateConditions();
updateSkillList();
}
private void updateSkillList() {
TextView listskills_number_of_increases = (TextView) findViewById(R.id.heroinfo_listskills_number_of_increases);
int numberOfSkillIncreases = player.availableSkillIncreases;
if (numberOfSkillIncreases > 0) {
if (numberOfSkillIncreases == 1) {
listskills_number_of_increases.setText(R.string.skill_number_of_increases_one);
} else {
listskills_number_of_increases.setText(getResources().getString(R.string.skill_number_of_increases_several, numberOfSkillIncreases));
}
listskills_number_of_increases.setVisibility(View.VISIBLE);
} else {
listskills_number_of_increases.setVisibility(View.GONE);
}
skillListAdapter.notifyDataSetInvalidated();
}
private void updateLevelup() {

View File

@@ -15,8 +15,8 @@ import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
public final class LevelUpActivity extends Activity {
private WorldContext world;
@@ -77,6 +77,13 @@ public final class LevelUpActivity extends Activity {
}
});
b.setText(getString(R.string.levelup_add_blockchance, Constants.LEVELUP_EFFECT_DEF_CH));
View v = findViewById(R.id.levelup_adds_new_skillpoint);
if (player.nextLevelAddsNewSkillpoint()) {
v.setVisibility(View.VISIBLE);
} else {
v.setVisibility(View.GONE);
}
}
private static final int SELECT_HEALTH = 0;
@@ -85,6 +92,8 @@ public final class LevelUpActivity extends Activity {
private static final int SELECT_DEF_CH = 3;
public void levelup(int selectionID) {
if (LevelUpActivity.this.isFinishing()) return;
addLevelupEffect(player, selectionID);
LevelUpActivity.this.finish();
}
@@ -106,9 +115,12 @@ public final class LevelUpActivity extends Activity {
player.traits.baseCombatTraits.blockChance += Constants.LEVELUP_EFFECT_DEF_CH;
break;
}
if (player.nextLevelAddsNewSkillpoint()) {
player.availableSkillIncreases++;
}
player.level++;
hpIncrease += player.getSkillLevel(Skills.SKILL_FORTITUDE) * Skills.PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH;
hpIncrease += player.getSkillLevel(SkillCollection.SKILL_FORTITUDE) * SkillCollection.PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH;
player.health.max += hpIncrease;
player.traits.maxHP += hpIncrease;
player.health.current += hpIncrease;

View File

@@ -49,6 +49,10 @@ public final class MainActivity extends Activity {
public static final int INTENTREQUEST_LEVELUP = 6;
public static final int INTENTREQUEST_PREFERENCES = 7;
public static final int INTENTREQUEST_SAVEGAME = 8;
public static final int INTENTREQUEST_BULKSELECT_BUY = 9;
public static final int INTENTREQUEST_BULKSELECT_SELL = 10;
public static final int INTENTREQUEST_BULKSELECT_DROP = 11;
public static final int INTENTREQUEST_SKILLINFO = 12;
private ViewContext view;
private WorldContext world;
@@ -208,6 +212,14 @@ public final class MainActivity extends Activity {
view.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain32", "north", 0, 0);
}
})*/
,new DebugButton("exp+=10000", new OnClickListener() {
@Override
public void onClick(View arg0) {
world.model.player.addExperience(10000);
updateStatus();
Toast.makeText(MainActivity.this, "DEBUG: given 10000 exp", Toast.LENGTH_SHORT).show();
}
})
,new DebugButton("hp=max", new OnClickListener() {
@Override
public void onClick(View arg0) {

View File

@@ -25,10 +25,6 @@ import com.gpl.rpg.AndorsTrail.view.ShopItemContainerAdapter;
import com.gpl.rpg.AndorsTrail.view.ShopItemContainerAdapter.OnContainerItemClickedListener;
public final class ShopActivity extends TabActivity implements OnContainerItemClickedListener {
public static final int INTENTREQUEST_BULKSELECT_BUY = BulkSelectionInterface.BULK_INTERFACE_BUY;
public static final int INTENTREQUEST_BULKSELECT_SELL = BulkSelectionInterface.BULK_INTERFACE_SELL;
private WorldContext world;
private Player player;
@@ -139,14 +135,14 @@ public final class ShopActivity extends TabActivity implements OnContainerItemCl
showSellingInterface(itemType);
}
break;
case INTENTREQUEST_BULKSELECT_BUY:
case MainActivity.INTENTREQUEST_BULKSELECT_BUY:
if (resultCode == Activity.RESULT_OK) {
int quantity = data.getExtras().getInt("selectedAmount");
int itemTypeID = data.getExtras().getInt("itemTypeID");
buy(itemTypeID, quantity);
}
break;
case INTENTREQUEST_BULKSELECT_SELL:
case MainActivity.INTENTREQUEST_BULKSELECT_SELL:
if (resultCode == Activity.RESULT_OK) {
int quantity = data.getExtras().getInt("selectedAmount");
int itemTypeID = data.getExtras().getInt("itemTypeID");

View File

@@ -0,0 +1,94 @@
package com.gpl.rpg.AndorsTrail.activity;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.SkillController;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public final class SkillInfoActivity extends Activity {
private WorldContext world;
private Player player;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
this.world = app.world;
this.player = world.model.player;
AndorsTrailApplication.setWindowParameters(this, app.preferences);
setContentView(R.layout.skill_info_view);
final Resources res = getResources();
final Intent intent = getIntent();
final int skillID = intent.getExtras().getInt("skillID");
SkillInfo skill = world.skills.getSkill(skillID);
ImageView skillinfo_image = (ImageView) findViewById(R.id.skillinfo_image);
SkillController.setSkillIcon(skillinfo_image, skillID, res);
TextView skillinfo_title = (TextView) findViewById(R.id.skillinfo_title);
skillinfo_title.setText(SkillCollection.getSkillTitle(skillID, res));
TextView skillinfo_longdescription = (TextView) findViewById(R.id.skillinfo_longdescription);
skillinfo_longdescription.setText(SkillCollection.getSkillLongDescription(skillID, res));
TextView skillinfo_currentlevel = (TextView) findViewById(R.id.skillinfo_currentlevel);
if (player.hasSkill(skillID)) {
int playerSkillLevel = player.getSkillLevel(skillID);
if (skill.hasMaxLevel()) {
skillinfo_currentlevel.setText(res.getString(R.string.skill_current_level_with_maximum, playerSkillLevel, skill.maxLevel));
} else {
skillinfo_currentlevel.setText(res.getString(R.string.skill_current_level, playerSkillLevel));
}
} else {
skillinfo_currentlevel.setVisibility(View.GONE);
}
TextView skillinfo_prerequisites = (TextView) findViewById(R.id.skillinfo_prerequisites);
LinearLayout parent = (LinearLayout) skillinfo_prerequisites.getParent();
if (skill.hasLevelupRequirements()) {
//skillinfo_prerequisites.setText(SkillInfo.getLongDescription(skillID, res));
} else {
parent.removeView(skillinfo_prerequisites);
}
Button b = (Button) findViewById(R.id.skillinfoinfo_close);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
setResult(RESULT_CANCELED);
SkillInfoActivity.this.finish();
}
});
b = (Button) findViewById(R.id.skillinfoinfo_action);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent result = new Intent();
result.putExtras(intent);
setResult(RESULT_OK, result);
SkillInfoActivity.this.finish();
}
});
b.setEnabled(SkillController.canLevelupSkill(player, skill));
}
}

View File

@@ -5,6 +5,7 @@ import com.gpl.rpg.AndorsTrail.VisualEffectCollection;
import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterTypeCollection;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection;
@@ -21,6 +22,7 @@ public class WorldContext {
public final DropListCollection dropLists;
public final QuestCollection quests;
public final ActorConditionTypeCollection actorConditionsTypes;
public final SkillCollection skills;
//Objectcollections
public final TileStore tileStore;
@@ -39,6 +41,7 @@ public class WorldContext {
this.maps = new MapCollection();
this.quests = new QuestCollection();
this.actorConditionsTypes = new ActorConditionTypeCollection();
this.skills = new SkillCollection();
}
public WorldContext(WorldContext copy) {
this.conversations = copy.conversations;
@@ -51,6 +54,7 @@ public class WorldContext {
this.quests = copy.quests;
this.model = copy.model;
this.actorConditionsTypes = copy.actorConditionsTypes;
this.skills = copy.skills;
}
public void reset() {
maps.reset();

View File

@@ -15,12 +15,12 @@ import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.AttackResult;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.Actor;
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterType;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
@@ -215,8 +215,8 @@ public final class CombatController {
model.currentMap.remove(killedMonster);
context.mainActivity.redrawAll(MainView.REDRAW_ALL_MONSTER_KILLED);
if (player.getSkillLevel(Skills.SKILL_CLEAVE) > 0) player.ap.setMax();
player.health.add(player.getSkillLevel(Skills.SKILL_EATER) * Skills.PER_SKILLPOINT_INCREASE_EATER_HEALTH, false);
player.ap.add(player.getSkillLevel(SkillCollection.SKILL_CLEAVE) * SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP, false);
player.health.add(player.getSkillLevel(SkillCollection.SKILL_EATER) * SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH, false);
model.statistics.addMonsterKill(killedMonster.monsterType);
model.player.addExperience(loot.exp);
@@ -247,7 +247,7 @@ public final class CombatController {
if (dest == null) return;
if (!useAPs(model.player.traits.moveCost)) return;
int fleeChanceBias = model.player.getSkillLevel(Skills.SKILL_EVASION) * Skills.PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE;
int fleeChanceBias = model.player.getSkillLevel(SkillCollection.SKILL_EVASION) * SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE;
if (Constants.roll100(Constants.FLEE_FAIL_CHANCE_PERCENT - fleeChanceBias)) {
fleeingFailed();
return;

View File

@@ -11,6 +11,8 @@ public final class Constants {
public static final int LEVELUP_EFFECT_ATK_CH = 5;
public static final int LEVELUP_EFFECT_ATK_DMG = 1;
public static final int LEVELUP_EFFECT_DEF_CH = 3;
public static final int FIRST_SKILL_POINT_IS_GIVEN_AT_LEVEL = 3;
public static final int NEW_SKILL_POINT_EVERY_N_LEVELS = 4;
public static final int MARKET_PRICEFACTOR_PERCENT = 15;
public static final int MONSTER_AGGRESSION_CHANCE_PERCENT = 15;
public static final int EXP_FACTOR_DAMAGERESISTANCE = 9;

View File

@@ -8,9 +8,9 @@ import com.gpl.rpg.AndorsTrail.activity.MainActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.util.Coord;
@@ -64,7 +64,7 @@ public final class Controller {
view.effectController.waitForCurrentEffect();
final Player player = model.player;
int lostExp = player.levelExperience.current * Constants.PERCENT_EXP_LOST_WHEN_DIED / 100;
lostExp -= lostExp * player.getSkillLevel(Skills.SKILL_LOWER_EXPLOSS) * Skills.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT / 100;
lostExp -= lostExp * player.getSkillLevel(SkillCollection.SKILL_LOWER_EXPLOSS) * SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT / 100;
if (lostExp < 0) lostExp = 0;
player.addExperience(-lostExp);

View File

@@ -3,7 +3,7 @@ package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.util.TimedMessageTask;
public final class GameRoundController implements TimedMessageTask.Callback {
@@ -67,7 +67,7 @@ public final class GameRoundController implements TimedMessageTask.Callback {
view.actorStatsController.applyConditionsToMonsters(model.currentMap, false);
view.actorStatsController.applyConditionsToPlayer(model.player, false);
model.player.health.add(model.player.getSkillLevel(Skills.SKILL_REGENERATION) * Skills.PER_SKILLPOINT_INCREASE_REGENERATION, false);
model.player.health.add(model.player.getSkillLevel(SkillCollection.SKILL_REGENERATION) * SkillCollection.PER_SKILLPOINT_INCREASE_REGENERATION, false);
}
private void onNewTick() {

View File

@@ -9,8 +9,8 @@ import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
@@ -193,7 +193,7 @@ public final class ItemController {
private static int getMarketPriceFactor(Player player) {
return Constants.MARKET_PRICEFACTOR_PERCENT
- player.getSkillLevel(Skills.SKILL_BARTER) * Skills.PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE;
- player.getSkillLevel(SkillCollection.SKILL_BARTER) * SkillCollection.PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE;
}
public static int getBuyingPrice(Player player, ItemType itemType) {
return itemType.baseMarketCost + itemType.baseMarketCost * getMarketPriceFactor(player) / 100;

View File

@@ -3,8 +3,8 @@ package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.util.Coord;
@@ -40,7 +40,7 @@ public final class MonsterMovementController {
if (!m.isAgressive()) continue;
if (!m.rectPosition.isAdjacentTo(model.player.position)) continue;
int aggressionChanceBias = model.player.getSkillLevel(Skills.SKILL_EVASION) * Skills.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE;
int aggressionChanceBias = model.player.getSkillLevel(SkillCollection.SKILL_EVASION) * SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE;
if (Constants.roll100(Constants.MONSTER_AGGRESSION_CHANCE_PERCENT - aggressionChanceBias)) {
view.combatController.monsterSteppedOnPlayer(m);
return;

View File

@@ -1,24 +1,29 @@
package com.gpl.rpg.AndorsTrail.controller;
import android.content.res.Resources;
import android.widget.ImageView;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.actor.Skills;
import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection;
import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem;
public final class SkillController {
public static void applySkillEffects(Player player) {
player.traits.attackChance += Skills.PER_SKILLPOINT_INCREASE_WEAPON_CHANCE * player.getSkillLevel(Skills.SKILL_WEAPON_CHANCE);
player.traits.damagePotential.addToMax(Skills.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MAX * player.getSkillLevel(Skills.SKILL_WEAPON_DMG));
player.traits.damagePotential.add(Skills.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN * player.getSkillLevel(Skills.SKILL_WEAPON_DMG), false);
player.traits.blockChance += Skills.PER_SKILLPOINT_INCREASE_DODGE * player.getSkillLevel(Skills.SKILL_DODGE);
player.traits.damageResistance += Skills.PER_SKILLPOINT_INCREASE_BARKSKIN * player.getSkillLevel(Skills.SKILL_BARKSKIN);
player.traits.attackChance += SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_CHANCE * player.getSkillLevel(SkillCollection.SKILL_WEAPON_CHANCE);
player.traits.damagePotential.addToMax(SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MAX * player.getSkillLevel(SkillCollection.SKILL_WEAPON_DMG));
player.traits.damagePotential.add(SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN * player.getSkillLevel(SkillCollection.SKILL_WEAPON_DMG), false);
player.traits.blockChance += SkillCollection.PER_SKILLPOINT_INCREASE_DODGE * player.getSkillLevel(SkillCollection.SKILL_DODGE);
player.traits.damageResistance += SkillCollection.PER_SKILLPOINT_INCREASE_BARKSKIN * player.getSkillLevel(SkillCollection.SKILL_BARKSKIN);
if (player.traits.hasCriticalChanceEffect()) {
player.traits.criticalChance += player.traits.criticalChance * Skills.PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT * player.getSkillLevel(Skills.SKILL_MORE_CRITICALS) / 100;
player.traits.criticalChance += player.traits.criticalChance * SkillCollection.PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT * player.getSkillLevel(SkillCollection.SKILL_MORE_CRITICALS) / 100;
}
if (player.traits.hasCriticalMultiplierEffect()) {
player.traits.criticalMultiplier += player.traits.criticalMultiplier * Skills.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT * player.getSkillLevel(Skills.SKILL_BETTER_CRITICALS) / 100;
player.traits.criticalMultiplier += player.traits.criticalMultiplier * SkillCollection.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT * player.getSkillLevel(SkillCollection.SKILL_BETTER_CRITICALS) / 100;
}
player.ap.addToMax(Skills.PER_SKILLPOINT_INCREASE_SPEED * player.getSkillLevel(Skills.SKILL_SPEED));
player.ap.addToMax(SkillCollection.PER_SKILLPOINT_INCREASE_SPEED * player.getSkillLevel(SkillCollection.SKILL_SPEED));
/*final int berserkLevel = player.getSkillLevel(Skills.SKILL_BERSERKER);
if (berserkLevel > 0) {
final int berserkHealth = player.health.max * Skills.BERSERKER_STARTS_AT_HEALTH_PERCENT / 100;
@@ -31,23 +36,23 @@ public final class SkillController {
}*/
}
public static int getChanceRollBias(DropItem item, Player player) {
public static int getDropChanceRollBias(DropItem item, Player player) {
if (player == null) return 0;
if (item.itemType.id == ItemTypeCollection.ITEMTYPE_GOLD) {
return getRollBias(item, player, Skills.SKILL_COINFINDER, Skills.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT);
return getRollBias(item, player, SkillCollection.SKILL_COINFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT);
} else if (!item.itemType.isOrdinaryItem()) {
return getRollBias(item, player, Skills.SKILL_MAGICFINDER, Skills.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
return getRollBias(item, player, SkillCollection.SKILL_MAGICFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
} else {
return 0;
}
}
public static int getQuantityRollBias(DropItem item, Player player) {
public static int getDropQuantityRollBias(DropItem item, Player player) {
if (player == null) return 0;
if (item.itemType.id != ItemTypeCollection.ITEMTYPE_GOLD) return 0;
return getRollBias(item, player, Skills.SKILL_COINFINDER, Skills.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
return getRollBias(item, player, SkillCollection.SKILL_COINFINDER, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
}
private static int getRollBias(DropItem item, Player player, int skill, int perSkillpointIncrease) {
@@ -55,4 +60,21 @@ public final class SkillController {
if (skillLevel <= 0) return 0;
return item.chance.current * skillLevel * perSkillpointIncrease / 100;
}
public static boolean canLevelupSkill(Player player, SkillInfo skill) {
if (player.availableSkillIncreases <= 0) return false;
if (skill.isQuestSkill) return false;
if (skill.hasMaxLevel()) {
int playerSkillLevel = player.getSkillLevel(skill.id);
if (playerSkillLevel >= skill.maxLevel) return false;
}
//if (skill.id == SkillCollection.SKILL_COINFINDER) return false;
//if (skill.id == SkillCollection.SKILL_DODGE) return false;
return true;
}
public static void setSkillIcon(ImageView iconImageView, int skillID, Resources res) {
iconImageView.setImageResource(R.drawable.ui_icon_skill);
}
}

View File

@@ -0,0 +1,172 @@
package com.gpl.rpg.AndorsTrail.model.ability;
import java.util.Collection;
import java.util.HashMap;
import android.content.res.Resources;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.controller.Constants;
public final class SkillCollection {
public static final int SKILL_WEAPON_CHANCE = 0;
public static final int SKILL_WEAPON_DMG = 1;
public static final int SKILL_BARTER = 2;
public static final int SKILL_DODGE = 3; // + BC
public static final int SKILL_BARKSKIN = 4; // Dmg resist
public static final int SKILL_MORE_CRITICALS = 5;
public static final int SKILL_BETTER_CRITICALS = 6;
public static final int SKILL_SPEED = 7; // Raises max ap
public static final int SKILL_COINFINDER = 8;
public static final int SKILL_MORE_EXP = 9;
public static final int SKILL_CLEAVE = 10; // +10ap on kill
public static final int SKILL_EATER = 11; // +1hp per kill
public static final int SKILL_FORTITUDE = 12; // +N hp per levelup
public static final int SKILL_EVASION = 13; // increase successful flee chance & reduce chance of monster attack
public static final int SKILL_REGENERATION = 14; // +N hp per round
public static final int SKILL_LOWER_EXPLOSS = 15;
public static final int SKILL_MAGICFINDER = 16;
//public static final int SKILL_BERSERKER = 17; // <=20%hp increases AC and DMG
public static final int NUM_SKILLS = SKILL_MAGICFINDER+1;
//public static final int BERSERKER_STARTS_AT_HEALTH_PERCENT = 20;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_CHANCE = 12;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MAX = 1;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN = 1;
public static final int PER_SKILLPOINT_INCREASE_DODGE = 9;
public static final int PER_SKILLPOINT_INCREASE_BARKSKIN = 1;
public static final int PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT = 20;
public static final int PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT = 50;
public static final int PER_SKILLPOINT_INCREASE_SPEED = 1;
public static final int PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT = 30;
public static final int PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT = 100;
public static final int PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT = 50;
public static final int PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT = 10;
public static final int PER_SKILLPOINT_INCREASE_CLEAVE_AP = 10;
public static final int PER_SKILLPOINT_INCREASE_EATER_HEALTH = 1;
public static final int PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH = 2;
public static final int PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_REGENERATION = 1;
public static final int PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT = 20;
/*public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_CHANCE = 15;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_DAMAGE_MAX = 1;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_DAMAGE_MIN = 1;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_DODGE = 9;*/
private final HashMap<Integer, SkillInfo> skills = new HashMap<Integer, SkillInfo>();
private void initializeSkill(SkillInfo skill) {
skills.put(skill.id, skill);
}
public void initialize() {
initializeSkill(new SkillInfo(SKILL_WEAPON_CHANCE, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_WEAPON_DMG, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_BARTER, Constants.MARKET_PRICEFACTOR_PERCENT / PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE, false));
initializeSkill(new SkillInfo(SKILL_DODGE, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_BARKSKIN, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_MORE_CRITICALS, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_BETTER_CRITICALS, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_SPEED, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_COINFINDER, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_MORE_EXP, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_CLEAVE, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_EATER, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_FORTITUDE, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_EVASION, Constants.FLEE_FAIL_CHANCE_PERCENT / PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, false));
initializeSkill(new SkillInfo(SKILL_REGENERATION, SkillInfo.MAXLEVEL_NONE, false));
initializeSkill(new SkillInfo(SKILL_LOWER_EXPLOSS, 100 / PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT, false));
initializeSkill(new SkillInfo(SKILL_MAGICFINDER, SkillInfo.MAXLEVEL_NONE, false));
//initializeSkill(new SkillInfo(SKILL_BERSERKER, SkillInfo.MAXLEVEL_NONE);
}
public SkillInfo getSkill(int skillID) {
return skills.get(skillID);
}
public Collection<SkillInfo> getAllSkills() {
return skills.values();
}
public static String getSkillTitle(final int skill, final Resources res) {
return res.getString(getSkillTitleResourceID(skill));
}
private static int getSkillTitleResourceID(int skill) {
switch (skill) {
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_title_weapon_chance;
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_title_weapon_dmg;
case SkillCollection.SKILL_BARTER: return R.string.skill_title_barter;
case SkillCollection.SKILL_DODGE: return R.string.skill_title_dodge;
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_title_barkskin;
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_title_more_criticals;
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_title_better_criticals;
case SkillCollection.SKILL_SPEED: return R.string.skill_title_speed;
case SkillCollection.SKILL_COINFINDER: return R.string.skill_title_coinfinder;
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_title_more_exp;
case SkillCollection.SKILL_CLEAVE: return R.string.skill_title_cleave;
case SkillCollection.SKILL_EATER: return R.string.skill_title_eater;
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_title_fortitude;
case SkillCollection.SKILL_EVASION: return R.string.skill_title_evasion;
case SkillCollection.SKILL_REGENERATION: return R.string.skill_title_regeneration;
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_title_lower_exploss;
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_title_magicfinder;
default:
return -1;
}
}
public static String getSkillShortDescription(final int skill, final Resources res) {
return res.getString(getSkillShortDescriptionResourceID(skill));
}
private static int getSkillShortDescriptionResourceID(int skill) {
switch (skill) {
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_shortdescription_weapon_chance;
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_shortdescription_weapon_dmg;
case SkillCollection.SKILL_BARTER: return R.string.skill_shortdescription_barter;
case SkillCollection.SKILL_DODGE: return R.string.skill_shortdescription_dodge;
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_shortdescription_barkskin;
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_shortdescription_more_criticals;
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_shortdescription_better_criticals;
case SkillCollection.SKILL_SPEED: return R.string.skill_shortdescription_speed;
case SkillCollection.SKILL_COINFINDER: return R.string.skill_shortdescription_coinfinder;
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_shortdescription_more_exp;
case SkillCollection.SKILL_CLEAVE: return R.string.skill_shortdescription_cleave;
case SkillCollection.SKILL_EATER: return R.string.skill_shortdescription_eater;
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_shortdescription_fortitude;
case SkillCollection.SKILL_EVASION: return R.string.skill_shortdescription_evasion;
case SkillCollection.SKILL_REGENERATION: return R.string.skill_shortdescription_regeneration;
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_shortdescription_lower_exploss;
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_shortdescription_magicfinder;
default:
return -1;
}
}
public static String getSkillLongDescription(final int skill, final Resources res) {
switch (skill) {
case SkillCollection.SKILL_WEAPON_CHANCE: return res.getString(R.string.skill_longdescription_weapon_chance, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_CHANCE);
case SkillCollection.SKILL_WEAPON_DMG: return res.getString(R.string.skill_longdescription_weapon_dmg, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN);
case SkillCollection.SKILL_BARTER: return res.getString(R.string.skill_longdescription_barter, SkillCollection.PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE);
case SkillCollection.SKILL_DODGE: return res.getString(R.string.skill_longdescription_dodge, SkillCollection.PER_SKILLPOINT_INCREASE_DODGE);
case SkillCollection.SKILL_BARKSKIN: return res.getString(R.string.skill_longdescription_barkskin, SkillCollection.PER_SKILLPOINT_INCREASE_BARKSKIN);
case SkillCollection.SKILL_MORE_CRITICALS: return res.getString(R.string.skill_longdescription_more_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT);
case SkillCollection.SKILL_BETTER_CRITICALS: return res.getString(R.string.skill_longdescription_better_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT);
case SkillCollection.SKILL_SPEED: return res.getString(R.string.skill_longdescription_speed, SkillCollection.PER_SKILLPOINT_INCREASE_SPEED);
case SkillCollection.SKILL_COINFINDER: return res.getString(R.string.skill_longdescription_coinfinder, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
case SkillCollection.SKILL_MORE_EXP: return res.getString(R.string.skill_longdescription_more_exp, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT);
case SkillCollection.SKILL_CLEAVE: return res.getString(R.string.skill_longdescription_cleave, SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP);
case SkillCollection.SKILL_EATER: return res.getString(R.string.skill_longdescription_eater, SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH);
case SkillCollection.SKILL_FORTITUDE: return res.getString(R.string.skill_longdescription_fortitude, SkillCollection.PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH);
case SkillCollection.SKILL_EVASION: return res.getString(R.string.skill_longdescription_evasion, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE);
case SkillCollection.SKILL_REGENERATION: return res.getString(R.string.skill_longdescription_regeneration, SkillCollection.PER_SKILLPOINT_INCREASE_REGENERATION);
case SkillCollection.SKILL_LOWER_EXPLOSS: return res.getString(R.string.skill_longdescription_lower_exploss, SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT);
case SkillCollection.SKILL_MAGICFINDER: return res.getString(R.string.skill_longdescription_magicfinder, SkillCollection.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
default:
return "";
}
}
}

View File

@@ -0,0 +1,35 @@
package com.gpl.rpg.AndorsTrail.model.ability;
public class SkillInfo {
public static final int MAXLEVEL_NONE = -1;
public final int id;
public final int maxLevel;
public final boolean isQuestSkill;
public SkillInfo(int id, int maxLevel, boolean isQuestSkill) {
this.id = id;
this.maxLevel = maxLevel;
this.isQuestSkill = isQuestSkill;
}
public boolean hasMaxLevel() {
if (maxLevel == MAXLEVEL_NONE) return false;
else return true;
}
public boolean hasLevelupRequirements() {
return false;
}
/*private static final class SkillLevelRequirement {
public static final int REQUIREMENT_TYPE_SKILL_LEVEL = 0;
public static final int REQUIREMENT_TYPE_EXPERIENCE_LEVEL = 1;
public static final int REQUIREMENT_TYPE_COMBAT_STAT = 2;
public final int requirementType;
//public final int ;
public final int value;
}
public static final class Stats {
public static final int STAT_MAX_HP = 0;
}*/
}

View File

@@ -6,6 +6,7 @@ import java.io.IOException;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.CoordRect;
@@ -29,7 +30,7 @@ public final class Monster extends Actor {
public void createLoot(Loot container, Player player) {
int exp = monsterType.exp;
exp += exp * player.getSkillLevel(Skills.SKILL_MORE_EXP) * Skills.PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT / 100;
exp += exp * player.getSkillLevel(SkillCollection.SKILL_MORE_EXP) * SkillCollection.PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT / 100;
container.exp += exp;
if (monsterType.dropList == null) return;
monsterType.dropList.createRandomLoot(container, player);

View File

@@ -10,6 +10,7 @@ import java.util.Map.Entry;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
@@ -32,9 +33,10 @@ public final class Player extends Actor {
private final HashMap<String, HashSet<Integer> > questProgress = new HashMap<String, HashSet<Integer> >();
public int useItemCost;
public int reequipCost;
private final int[] skillLevels = new int[Skills.NUM_SKILLS];
private final HashMap<Integer, Integer> skillLevels = new HashMap<Integer, Integer>();
public String spawnMap;
public String spawnPlace;
public int availableSkillIncreases = 0;
public Player() {
super(new ActorTraits(TileStore.CHAR_HERO, new Size(1, 1), new CombatTraits(), DEFAULT_PLAYER_MOVECOST, null), true);
@@ -66,6 +68,8 @@ public final class Player extends Actor {
level = 1;
totalExperience = 1;
availableSkillIncreases = 0;
skillLevels.clear();
recalculateLevelExperience();
Loot startItems = new Loot();
@@ -107,8 +111,6 @@ public final class Player extends Actor {
levelExperience.add(v, true);
}
private static int getRequiredExperience(int currentLevel) {
int v = 0;
for(int i = 1; i < currentLevel; ++i) {
@@ -127,14 +129,33 @@ public final class Player extends Actor {
return levelExperience.isMax();
}
public int getSkillLevel(int skill) {
return skillLevels[skill];
public int getSkillLevel(int skillID) {
if (!skillLevels.containsKey(skillID)) return 0;
else return skillLevels.get(skillID);
}
public boolean hasSkill(int skill) {
return skillLevels[skill] > 0;
public boolean hasSkill(int skillID) {
return getSkillLevel(skillID) > 0;
}
public void addSkillLevel(int skill) {
skillLevels[skill] += 1;
public void addSkillLevel(int skillID) {
if (!hasAvailableSkillpoints()) return;
if (!skillLevels.containsKey(skillID)) skillLevels.put(skillID, 1);
else skillLevels.put(skillID, skillLevels.get(skillID) + 1);
--availableSkillIncreases;
ActorStatsController.recalculatePlayerCombatTraits(this);
}
public boolean nextLevelAddsNewSkillpoint() {
return thisLevelAddsNewSkillpoint(level + 1);
}
public static boolean thisLevelAddsNewSkillpoint(int level) {
return ((level - Constants.FIRST_SKILL_POINT_IS_GIVEN_AT_LEVEL) % Constants.NEW_SKILL_POINT_EVERY_N_LEVELS == 0);
}
public static int getExpectedNumberOfSkillpointsForLevel(int level) {
level -= Constants.FIRST_SKILL_POINT_IS_GIVEN_AT_LEVEL;
if (level < 0) return 0;
return 1 + (int) Math.floor((float) level / Constants.NEW_SKILL_POINT_EVERY_N_LEVELS);
}
public boolean hasAvailableSkillpoints() {
return availableSkillIncreases > 0;
}
@@ -199,7 +220,12 @@ public final class Player extends Actor {
this.reequipCost = src.readInt();
final int size2 = src.readInt();
for(int i = 0; i < size2; ++i) {
this.skillLevels[i] = src.readInt();
if (fileversion <= 21) {
this.skillLevels.put(i, src.readInt());
} else {
final int skillID = src.readInt();
this.skillLevels.put(skillID, src.readInt());
}
}
this.spawnMap = src.readUTF();
this.spawnPlace = src.readUTF();
@@ -224,7 +250,11 @@ public final class Player extends Actor {
}
}
ActorStatsController.recalculatePlayerCombatTraits(this);
if (fileversion <= 21) {
this.availableSkillIncreases = getExpectedNumberOfSkillpointsForLevel(this.level);
} else {
this.availableSkillIncreases = src.readInt();
}
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {
@@ -236,9 +266,10 @@ public final class Player extends Actor {
inventory.writeToParcel(dest, flags);
dest.writeInt(useItemCost);
dest.writeInt(reequipCost);
dest.writeInt(Skills.NUM_SKILLS);
for(int i = 0; i < Skills.NUM_SKILLS; ++i) {
dest.writeInt(this.skillLevels[i]);
dest.writeInt(skillLevels.size());
for (Entry<Integer, Integer> skillLevel: skillLevels.entrySet()) {
dest.writeInt(skillLevel.getKey());
dest.writeInt(skillLevel.getValue());
}
dest.writeUTF(spawnMap);
dest.writeUTF(spawnPlace);
@@ -250,6 +281,7 @@ public final class Player extends Actor {
dest.writeInt(progress);
}
}
dest.writeInt(availableSkillIncreases);
}
}

View File

@@ -1,50 +0,0 @@
package com.gpl.rpg.AndorsTrail.model.actor;
public final class Skills {
public static final int SKILL_WEAPON_CHANCE = 0;
public static final int SKILL_WEAPON_DMG = 1;
public static final int SKILL_BARTER = 2;
public static final int SKILL_DODGE = 3; // + BC
public static final int SKILL_BARKSKIN = 4; // Dmg resist
public static final int SKILL_MORE_CRITICALS = 5;
public static final int SKILL_BETTER_CRITICALS = 6;
public static final int SKILL_SPEED = 7; // Raises max ap
public static final int SKILL_COINFINDER = 8;
public static final int SKILL_MORE_EXP = 9;
public static final int SKILL_CLEAVE = 10; // +10ap on kill
public static final int SKILL_EATER = 11; // +1hp per kill
//public static final int SKILL_BERSERKER = 12; // <=20%hp increases AC and DMG
public static final int SKILL_FORTITUDE = 13; // +N hp per levelup
public static final int SKILL_EVASION = 14; // increase successful flee chance & reduce chance of monster attack
public static final int SKILL_REGENERATION = 15; // +N hp per round
public static final int SKILL_LOWER_EXPLOSS = 16;
public static final int SKILL_MAGICFINDER = 17;
public static final int NUM_SKILLS = SKILL_MAGICFINDER+1;
//public static final int BERSERKER_STARTS_AT_HEALTH_PERCENT = 20;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_CHANCE = 15;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MAX = 1;
public static final int PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN = 1;
public static final int PER_SKILLPOINT_INCREASE_DODGE = 9;
public static final int PER_SKILLPOINT_INCREASE_BARKSKIN = 1;
public static final int PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT = 20;
public static final int PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT = 50;
public static final int PER_SKILLPOINT_INCREASE_SPEED = 1;
/*public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_CHANCE = 15;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_DAMAGE_MAX = 1;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_WEAPON_DAMAGE_MIN = 1;
public static final int PER_SKILLPOINT_INCREASE_BERSERKER_DODGE = 9;*/
public static final int PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT = 50;
public static final int PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT = 100;
public static final int PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT = 100;
public static final int PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT = 10;
public static final int PER_SKILLPOINT_INCREASE_EATER_HEALTH = 1;
public static final int PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH = 2;
public static final int PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE = 5;
public static final int PER_SKILLPOINT_INCREASE_REGENERATION = 1;
public static final int PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT = 30;
}

View File

@@ -1,2 +0,0 @@
package com.gpl.rpg.AndorsTrail.model.actor;

View File

@@ -22,10 +22,10 @@ public final class DropList {
public void createRandomLoot(Loot loot, Player player) {
for (DropItem item : items) {
final int chanceRollBias = SkillController.getChanceRollBias(item, player);
final int chanceRollBias = SkillController.getDropChanceRollBias(item, player);
if (Constants.rollResult(item.chance, chanceRollBias)) {
final int quantityRollBias = SkillController.getQuantityRollBias(item, player);
final int quantityRollBias = SkillController.getDropQuantityRollBias(item, player);
int quantity = Constants.rollValue(item.quantity, quantityRollBias);
if (quantity != 0) {

View File

@@ -33,7 +33,7 @@ public final class ResourceLoader {
/*tiles.iconID_CHAR_HERO = */loader.prepareTileID(R.drawable.char_hero, 0);
/*tiles.iconID_selection_red = */loader.prepareTileID(R.drawable.ui_selections, 0);
/*tiles.iconID_selection_yellow = */loader.prepareTileID(R.drawable.ui_selections, 1);
/*tiles.iconID_groundbag = */loader.prepareTileID(R.drawable.map_tiles_2_7, 13+16*0);
/*tiles.iconID_groundbag = */loader.prepareTileID(R.drawable.ui_icon_equipment, 0);
/*tiles.iconID_boxopened = */loader.prepareTileID(R.drawable.items_tiles, 8+14*29);
/*tiles.iconID_boxclosed = */loader.prepareTileID(R.drawable.items_tiles, 7+14*29);
/*tiles.iconID_selection_blue = */loader.prepareTileID(R.drawable.ui_selections, 2);
@@ -42,6 +42,11 @@ public final class ResourceLoader {
// ========================================================================
// Load skills
world.skills.initialize();
// ========================================================================
// Load condition types
final TypedArray conditionsToLoad = r.obtainTypedArray(actorConditionsResourceId);
for (int i = 0; i < conditionsToLoad.length(); ++i) {
@@ -146,6 +151,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.char_hero, "char_hero", src_sz1x1, defaultTileSize);
loader.prepareTileset(R.drawable.ui_selections, "ui_selections", new Size(5, 1), defaultTileSize);
loader.prepareTileset(R.drawable.ui_icon_equipment, "ui_icon_equipment", src_sz1x1, defaultTileSize);
loader.prepareTileset(R.drawable.items_tiles, "items_tiles", new Size(14, 30), defaultTileSize);

View File

@@ -0,0 +1,80 @@
package com.gpl.rpg.AndorsTrail.view;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.controller.SkillController;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import android.content.Context;
import android.content.res.Resources;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public final class SkillListAdapater extends ArrayAdapter<SkillInfo> {
private final Resources r;
private final Player player;
public SkillListAdapater(Context context, Collection<SkillInfo> skills, Player player) {
super(context, 0, filterNondisplayedSkills(skills, player));
this.r = context.getResources();
this.player = player;
}
private static List<SkillInfo> filterNondisplayedSkills(Collection<SkillInfo> skills, Player player) {
final ArrayList<SkillInfo> result = new ArrayList<SkillInfo>();
for (SkillInfo skill : skills) {
if (shouldDisplaySkill(skill, player)) result.add(skill);
}
return result;
}
private static boolean shouldDisplaySkill(SkillInfo skill, Player player) {
if (player.hasSkill(skill.id)) return true;
if (skill.isQuestSkill) return false;
return true;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final SkillInfo skill = getItem(position);
final int skillID = skill.id;
View result = convertView;
if (result == null) {
result = View.inflate(getContext(), R.layout.skill_listentry_view, null);
}
final ImageView icon = (ImageView) result.findViewById(R.id.skillentry_icon);
final TextView title = (TextView) result.findViewById(R.id.skillentry_title);
final TextView description = (TextView) result.findViewById(R.id.skillentry_description);
SkillController.setSkillIcon(icon, skillID, r);
String skillTitle = SkillCollection.getSkillTitle(skillID, r);
final int skillLevel = player.getSkillLevel(skillID);
if (skillLevel > 0) {
skillTitle += " (" + skillLevel + ")";
}
title.setText(skillTitle);
description.setText(SkillCollection.getSkillShortDescription(skillID, r));
boolean enabled = true;
if (player.hasAvailableSkillpoints()) {
enabled = SkillController.canLevelupSkill(player, skill);
} else {
enabled = player.hasSkill(skillID);
}
icon.setEnabled(enabled);
title.setEnabled(enabled);
description.setEnabled(enabled);
return result;
}
}