summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/battle.c19
-rw-r--r--src/map/status.c13
2 files changed, 30 insertions, 2 deletions
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);