Fixed #220
* SC_FIGHTINGSPIRIT gives no effect for RK_FIGHTINGSPIRIT level < 10 * Fixed RK_FIGHTINGSPIRIT gives no effect if level < 5 * Little optimization on RK_FIGHTINGSPIRIT codes Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
This commit is contained in:
@@ -2365,7 +2365,7 @@ int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned sho
|
||||
* Common usages:
|
||||
* [0] holds number of targets in area
|
||||
* [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];
|
||||
|
||||
@@ -8510,17 +8510,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
break;
|
||||
|
||||
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( 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
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6202,7 +6202,7 @@ static short status_calc_fix_aspd(struct block_list *bl, struct status_change *s
|
||||
|| sc->data[SC_WILD_STORM_OPTION]))
|
||||
aspd -= 50; // +5 ASPD
|
||||
if (sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2)
|
||||
aspd -= (bl->type==BL_PC?pc_checkskill((TBL_PC *)bl, RK_RUNEMASTERY):10) / 10 * 40;
|
||||
aspd -= sc->data[SC_FIGHTINGSPIRIT]->val2;
|
||||
if (sc->data[SC_MTF_ASPD])
|
||||
aspd -= 10;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user