|
@@ -2365,7 +2365,7 @@ int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned sho
|
|
* Common usages:
|
|
* Common usages:
|
|
* [0] holds number of targets in area
|
|
* [0] holds number of targets in area
|
|
* [1] holds the id of the original target
|
|
* [1] holds the id of the original target
|
|
-* [2] counts how many targets have already been processed
|
|
|
|
|
|
+* [2] counts how many targets have been processed. counter is added in skill_area_sub if the foreach function flag is: flag&(SD_SPLASH|SD_PREAMBLE)
|
|
*/
|
|
*/
|
|
static int skill_area_temp[8];
|
|
static int skill_area_temp[8];
|
|
|
|
|
|
@@ -8510,17 +8510,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
break;
|
|
break;
|
|
|
|
|
|
case RK_FIGHTINGSPIRIT: {
|
|
case RK_FIGHTINGSPIRIT: {
|
|
- int atkbonus = 7 * party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,BCT_PARTY,skill_area_sub_count);
|
|
|
|
|
|
+ // val1: ATKBonus: Caster: 7*PartyMember. Member: 7*PartyMember/4
|
|
|
|
+ // val2: ASPD boost: [RK_RUNEMASTERYlevel * 4 / 10] * 10 ==> RK_RUNEMASTERYlevel * 4
|
|
if( flag&1 ) {
|
|
if( flag&1 ) {
|
|
- if( src == bl )
|
|
|
|
- sc_start2(src,bl,type,100,atkbonus,10*((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : skill_get_max(RK_RUNEMASTERY)),skill_get_time(skill_id,skill_lv));
|
|
|
|
|
|
+ if( skill_area_temp[1] == bl->id )
|
|
|
|
+ sc_start2(src,bl,type,100,7 * skill_area_temp[0],4 * ((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : skill_get_max(RK_RUNEMASTERY)),skill_area_temp[4]);
|
|
else
|
|
else
|
|
- sc_start(src,bl,type,100,atkbonus / 4,skill_get_time(skill_id,skill_lv));
|
|
|
|
- } else if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 5 ) {
|
|
|
|
- if( sd->status.party_id )
|
|
|
|
|
|
+ sc_start(src,bl,type,100,skill_area_temp[3],skill_area_temp[4]);
|
|
|
|
+ } else {
|
|
|
|
+ if( sd && sd->status.party_id ) {
|
|
|
|
+ skill_area_temp[0] = party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,BCT_PARTY,skill_area_sub_count);
|
|
|
|
+ skill_area_temp[1] = src->id;
|
|
|
|
+ skill_area_temp[3] = 7 * skill_area_temp[0] / 4;
|
|
|
|
+ skill_area_temp[4] = skill_get_time(skill_id,skill_lv);
|
|
party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,flag|BCT_PARTY|1,skill_castend_nodamage_id);
|
|
party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,flag|BCT_PARTY|1,skill_castend_nodamage_id);
|
|
|
|
+ }
|
|
else
|
|
else
|
|
- sc_start2(src,bl,type,100,7,10*((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : skill_get_max(RK_RUNEMASTERY)),skill_get_time(skill_id,skill_lv));
|
|
|
|
|
|
+ sc_start2(src,bl,type,100,7,4 * ((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : skill_get_max(RK_RUNEMASTERY)),skill_get_time(skill_id,skill_lv));
|
|
clif_skill_nodamage(src,bl,skill_id,1,1);
|
|
clif_skill_nodamage(src,bl,skill_id,1,1);
|
|
}
|
|
}
|
|
}
|
|
}
|