Fixes Brandish Spear from renewal balance (#4711)
* Fixes #4707. * Follow up to ea8da71. * Skill now applies long range damage. * Skill now does 3 hits. * Target's placement in the AoE does not affect damage; it's all the same for each target. * Updates strength bonus. * Reverts Mercenary Brandish Spear to pre-renewal effects. Thanks to @violent01 and @mrjnumber1!
This commit is contained in:
parent
0021b6d577
commit
24ecebcaf3
@ -2113,8 +2113,8 @@ Body:
|
||||
Flags:
|
||||
IncreaseGloomyDayDamage: true
|
||||
Range: -2
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
Hit: Multi_Hit
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
SplashArea: 2
|
||||
ActiveInstance: 5
|
||||
|
@ -3630,13 +3630,16 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
case KN_SPEARBOOMERANG:
|
||||
skillratio += 50 * skill_lv;
|
||||
break;
|
||||
case KN_BRANDISHSPEAR:
|
||||
case ML_BRANDISH: {
|
||||
#ifdef RENEWAL
|
||||
int ratio = 100 + 20 * skill_lv + sstatus->str; // !TODO: Confirm STR role
|
||||
case KN_BRANDISHSPEAR:
|
||||
skillratio += -100 + 400 + 100 * skill_lv + sstatus->str * 3;
|
||||
break;
|
||||
#else
|
||||
int ratio = 100 + 20 * skill_lv;
|
||||
case KN_BRANDISHSPEAR:
|
||||
#endif
|
||||
case ML_BRANDISH:
|
||||
{
|
||||
int ratio = 100 + 20 * skill_lv;
|
||||
|
||||
skillratio += -100 + ratio;
|
||||
if(skill_lv > 3 && wd->miscflag == 0)
|
||||
@ -3651,8 +3654,8 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
skillratio += ratio / 4;
|
||||
if(skill_lv > 9 && wd->miscflag == 2)
|
||||
skillratio += ratio / 2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case KN_BOWLINGBASH:
|
||||
case MS_BOWLINGBASH:
|
||||
skillratio += 40 * skill_lv;
|
||||
@ -5487,6 +5490,11 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
|
||||
wd.blewcount = 0;
|
||||
break;
|
||||
|
||||
#ifdef RENEWAL
|
||||
case KN_BRANDISHSPEAR:
|
||||
wd.flag |= BF_LONG;
|
||||
break;
|
||||
#endif
|
||||
case KN_AUTOCOUNTER:
|
||||
wd.flag = (wd.flag&~BF_SKILLMASK)|BF_NORMAL;
|
||||
break;
|
||||
|
@ -5328,7 +5328,13 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
}
|
||||
break;
|
||||
|
||||
#ifndef RENEWAL
|
||||
case KN_BRANDISHSPEAR:
|
||||
skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
|
||||
break;
|
||||
#else
|
||||
case KN_BRANDISHSPEAR:
|
||||
#endif
|
||||
case ML_BRANDISH:
|
||||
//Coded apart for it needs the flag passed to the damage calculation.
|
||||
if (skill_area_temp[1] != bl->id)
|
||||
@ -7618,31 +7624,37 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
skill_castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
|
||||
break;
|
||||
|
||||
#ifdef RENEWAL
|
||||
case KN_BRANDISHSPEAR:
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), skill_get_maxcount(skill_id, skill_lv), 0, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 0,
|
||||
skill_castend_damage_id);
|
||||
#else
|
||||
case KN_BRANDISHSPEAR:
|
||||
#endif
|
||||
case ML_BRANDISH:
|
||||
{
|
||||
skill_area_temp[1] = bl->id;
|
||||
skill_area_temp[1] = bl->id;
|
||||
|
||||
if(skill_lv >= 10)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-1, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?3:0),
|
||||
skill_castend_damage_id);
|
||||
if(skill_lv >= 7)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-2, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?2:0),
|
||||
skill_castend_damage_id);
|
||||
if(skill_lv >= 4)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-3, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?1:0),
|
||||
skill_castend_damage_id);
|
||||
if(skill_lv >= 10)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), skill_get_maxcount(skill_id, skill_lv)-3, 0, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 0,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-1, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?3:0),
|
||||
skill_castend_damage_id);
|
||||
}
|
||||
if(skill_lv >= 7)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-2, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?2:0),
|
||||
skill_castend_damage_id);
|
||||
if(skill_lv >= 4)
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), 1, skill_get_maxcount(skill_id, skill_lv)-3, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?1:0),
|
||||
skill_castend_damage_id);
|
||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
||||
skill_get_splash(skill_id, skill_lv), skill_get_maxcount(skill_id, skill_lv)-3, 0, splash_target(src),
|
||||
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 0,
|
||||
skill_castend_damage_id);
|
||||
break;
|
||||
|
||||
case WZ_SIGHTRASHER:
|
||||
|
Loading…
x
Reference in New Issue
Block a user