Skip to content

Commit

Permalink
Rebalance of MO_EXTREMITYFIST (Asura Strike)
Browse files Browse the repository at this point in the history
- Change required spheres when used after Raging Thrust or Root
  - Old: 4 spheres were required
  - New: 1 sphere is required
- Doubles damage when there are 6 or more spirit sphere on cast
- SP recovery penalty duration reduced: 10s -> 3s

From massive skills rebalance (1st/2nd/transclass) (2018.10.31)
  • Loading branch information
guilherme-gm committed Jun 2, 2024
1 parent 6ce4771 commit e09ac5e
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
4 changes: 2 additions & 2 deletions db/re/skill_db.conf
Original file line number Diff line number Diff line change
Expand Up @@ -8295,8 +8295,8 @@ skill_db: (
Lv9: 1
Lv10: 1
}
SkillData1: 10000
SkillData2: 300000
SkillData1: 3_000 // Duration of the SP Recovery block (in milliseconds) (SC_EXTREMITYFIST2)
SkillData2: 300_000
FixedCastTime: {
Lv1: 2000
Lv2: 1750
Expand Down
7 changes: 5 additions & 2 deletions src/map/battle.c
Original file line number Diff line number Diff line change
Expand Up @@ -5522,10 +5522,13 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
case MO_EXTREMITYFIST: // [malufett]
{
short totaldef = status->get_total_def(target);
GET_NORMAL_ATTACK((sc && sc->data[SC_MAXIMIZEPOWER] ? 1 : 0) | 8, skill_id);
if ( wd.damage ) {
GET_NORMAL_ATTACK((sc != NULL && sc->data[SC_MAXIMIZEPOWER] != NULL ? 1 : 0) | 8, skill_id);
if (wd.damage != 0) {
ATK_ADD(250 * (skill_lv + 1) + (10 * (status_get_sp(src) + 1) * wd.damage / 100) + (8 * wd.damage));
ATK_ADD(-totaldef);

if (sd != NULL && sd->spiritball_old >= 6)
ATK_ADDRATE(100); // +100% damage = doubles the damage
}
}
break;
Expand Down
25 changes: 17 additions & 8 deletions src/map/skill.c
Original file line number Diff line number Diff line change
Expand Up @@ -15665,6 +15665,9 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s
if(sc && sc->data[SC_EXTREMITYFIST])
return 0;
#endif // 0
#ifdef RENEWAL
sd->spiritball_old = sd->spiritball;
#endif
if (sc && (sc->data[SC_BLADESTOP] || sc->data[SC_CURSEDCIRCLE_ATKER]))
break;
if (sc && sc->data[SC_COMBOATTACK]) {
Expand Down Expand Up @@ -17181,16 +17184,21 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd,
req.spiritball = 0;
break;
case MO_EXTREMITYFIST:
if( sc )
{
if( sc->data[SC_BLADESTOP] )
if (sc != NULL) {
if (sc->data[SC_BLADESTOP] != NULL) {
#ifndef RENEWAL
req.spiritball--;
else if( sc->data[SC_COMBOATTACK] )
{
switch( sc->data[SC_COMBOATTACK]->val1 )
{
#else
req.spiritball = 1;
#endif
} else if (sc->data[SC_COMBOATTACK] != NULL) {
switch (sc->data[SC_COMBOATTACK]->val1) {
case MO_COMBOFINISH:
#ifndef RENEWAL
req.spiritball = 4;
#else
req.spiritball = 1;
#endif
break;
case CH_TIGERFIST:
req.spiritball = 3;
Expand All @@ -17199,8 +17207,9 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd,
req.spiritball = sd->spiritball?sd->spiritball:1;
break;
}
}else if( sc->data[SC_RAISINGDRAGON] && sd->spiritball > 5)
} else if (sc->data[SC_RAISINGDRAGON] != NULL && sd->spiritball > 5) {
req.spiritball = sd->spiritball; // must consume all regardless of the amount required
}
}
break;
case SR_RAMPAGEBLASTER:
Expand Down

0 comments on commit e09ac5e

Please sign in to comment.