* 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:
Cydh Ramdh
2015-01-13 12:35:44 +07:00
parent 5566424129
commit e76d92f538
2 changed files with 15 additions and 9 deletions

View File

@@ -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);
}
}

View File

@@ -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;