ソースを参照

Some more skill fix.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5522 54d463be-8e91-2dee-dedb-b68131a5f0ec
Vicious 19 年 前
コミット
ab4248e6b8
2 ファイル変更30 行追加2 行削除
  1. 17 2
      src/map/battle.c
  2. 13 0
      src/map/status.c

+ 17 - 2
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;

+ 13 - 0
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);