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:
|
Flags:
|
||||||
IncreaseGloomyDayDamage: true
|
IncreaseGloomyDayDamage: true
|
||||||
Range: -2
|
Range: -2
|
||||||
Hit: Single
|
Hit: Multi_Hit
|
||||||
HitCount: 1
|
HitCount: 3
|
||||||
Element: Weapon
|
Element: Weapon
|
||||||
SplashArea: 2
|
SplashArea: 2
|
||||||
ActiveInstance: 5
|
ActiveInstance: 5
|
||||||
|
@ -3630,13 +3630,16 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|||||||
case KN_SPEARBOOMERANG:
|
case KN_SPEARBOOMERANG:
|
||||||
skillratio += 50 * skill_lv;
|
skillratio += 50 * skill_lv;
|
||||||
break;
|
break;
|
||||||
case KN_BRANDISHSPEAR:
|
|
||||||
case ML_BRANDISH: {
|
|
||||||
#ifdef RENEWAL
|
#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
|
#else
|
||||||
int ratio = 100 + 20 * skill_lv;
|
case KN_BRANDISHSPEAR:
|
||||||
#endif
|
#endif
|
||||||
|
case ML_BRANDISH:
|
||||||
|
{
|
||||||
|
int ratio = 100 + 20 * skill_lv;
|
||||||
|
|
||||||
skillratio += -100 + ratio;
|
skillratio += -100 + ratio;
|
||||||
if(skill_lv > 3 && wd->miscflag == 0)
|
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;
|
skillratio += ratio / 4;
|
||||||
if(skill_lv > 9 && wd->miscflag == 2)
|
if(skill_lv > 9 && wd->miscflag == 2)
|
||||||
skillratio += ratio / 2;
|
skillratio += ratio / 2;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case KN_BOWLINGBASH:
|
case KN_BOWLINGBASH:
|
||||||
case MS_BOWLINGBASH:
|
case MS_BOWLINGBASH:
|
||||||
skillratio += 40 * skill_lv;
|
skillratio += 40 * skill_lv;
|
||||||
@ -5487,6 +5490,11 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
|
|||||||
wd.blewcount = 0;
|
wd.blewcount = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef RENEWAL
|
||||||
|
case KN_BRANDISHSPEAR:
|
||||||
|
wd.flag |= BF_LONG;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case KN_AUTOCOUNTER:
|
case KN_AUTOCOUNTER:
|
||||||
wd.flag = (wd.flag&~BF_SKILLMASK)|BF_NORMAL;
|
wd.flag = (wd.flag&~BF_SKILLMASK)|BF_NORMAL;
|
||||||
break;
|
break;
|
||||||
|
@ -5328,7 +5328,13 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifndef RENEWAL
|
||||||
case KN_BRANDISHSPEAR:
|
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:
|
case ML_BRANDISH:
|
||||||
//Coded apart for it needs the flag passed to the damage calculation.
|
//Coded apart for it needs the flag passed to the damage calculation.
|
||||||
if (skill_area_temp[1] != bl->id)
|
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);
|
skill_castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef RENEWAL
|
||||||
case KN_BRANDISHSPEAR:
|
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:
|
case ML_BRANDISH:
|
||||||
{
|
skill_area_temp[1] = bl->id;
|
||||||
skill_area_temp[1] = bl->id;
|
|
||||||
|
|
||||||
if(skill_lv >= 10)
|
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);
|
|
||||||
map_foreachindir(skill_area_sub, src->m, src->x, src->y, bl->x, bl->y,
|
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),
|
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 | 0,
|
src, skill_id, skill_lv, tick, flag | BCT_ENEMY | (sd?3:0),
|
||||||
skill_castend_damage_id);
|
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;
|
break;
|
||||||
|
|
||||||
case WZ_SIGHTRASHER:
|
case WZ_SIGHTRASHER:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user