From 4242768112334438dab8131ed27f3a89227e234d Mon Sep 17 00:00:00 2001 From: Vicious Date: Wed, 8 Mar 2006 19:43:20 +0000 Subject: Some more skill fix. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5522 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 19 +++++++++++++++++-- src/map/status.c | 13 +++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/src/map/battle.c b/src/map/battle.c index 6fc54318e..57eef7d46 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1223,7 +1223,19 @@ static struct Damage battle_calc_weapon_attack( wd.flag=(wd.flag&~BF_SKILLMASK)|BF_NORMAL; break; - + //Until they're at right position - gs_arrow- [Vicious] + case GS_BULLSEYE: + case GS_CRACKER: + case GS_TRACKING: + case GS_PIERCINGSHOT: + case GS_RAPIDSHOWER: + case GS_DUST: + case GS_SPREADATTACK: + case NJ_SYURIKEN: + case NJ_KUNAI: + case NJ_HUUMA: + flag.arrow = 1; + break; } } @@ -1296,7 +1308,7 @@ static struct Damage battle_calc_weapon_attack( //Check for critical if(!flag.cri && (sd || battle_config.enemy_critical_rate) && - (!skill_num || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING)) + (!skill_num || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING || skill_num == NJ_KIRIKAGE)) { short cri = status_get_critical(src); if (sd) @@ -1330,6 +1342,9 @@ static struct Damage battle_calc_weapon_attack( case SN_SHARPSHOOTING: cri += 200; break; + case NJ_KIRIKAGE: + cri += 250 + 50*skill_lv; + break; } if(tsd && tsd->critical_def) cri = cri*(100-tsd->critical_def)/100; diff --git a/src/map/status.c b/src/map/status.c index 23a4db4a8..20f0efcbf 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1159,6 +1159,13 @@ int status_calc_pc(struct map_session_data* sd,int first) if(sd->status.weapon == 11) sd->attackrange += skill; } + if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 && (sd->status.weapon == 11)){ //temp until we get gun id + sd->hit += 2*skill; + } + if((skill=pc_checkskill(sd,GS_SNAKEEYE))>0 && (sd->status.weapon == 11)){ //temp until we get gun id + sd->hit += skill; + sd->attackrange += skill; + } // Absolute, then relative modifiers from status changes (shared between PC and NPC) sd->hit = status_calc_hit(&sd->bl,sd->hit); @@ -1332,6 +1339,10 @@ int status_calc_pc(struct map_session_data* sd,int first) if(pc_isriding(sd)) sd->aspd_rate += 50-10*pc_checkskill(sd,KN_CAVALIERMASTERY); + + if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 && (sd->status.weapon == 11)){ //temp until we get gun id + sd->aspd_rate -= (int)(skill / 2); + } // Relative modifiers from status changes (shared between PC and NPC) sd->aspd_rate = status_calc_aspd_rate(&sd->bl,sd->aspd_rate); @@ -1466,6 +1477,8 @@ int status_calc_pc(struct map_session_data* sd,int first) // Skill-related SP recovery if((skill=pc_checkskill(sd,MG_SRECOVERY)) > 0) sd->nshealsp = skill*3 + (sd->status.max_sp*skill/500); + if((skill=pc_checkskill(sd,NJ_NINPOU)) > 0) + sd->nshealsp = skill*3 + (sd->status.max_sp*skill/500); // Skill-related SP recovery (only when sit) if((skill = pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0) sd->nsshealsp = skill*2 + (sd->status.max_sp*skill/500); -- cgit v1.2.3-70-g09d2