Skip to content

Commit

Permalink
Corrected Eleanor's Eternal Quick Combo behavior (fixes #1568)
Browse files Browse the repository at this point in the history
* Adjusted skill type to misc.
* Added missing damage calculation.
* Corrected the Equipment ATK reduction.
* Moved the Stun addition and Tinder Breaker removal to skill_additional_effect.
  • Loading branch information
aleos89 committed Sep 28, 2016
1 parent 7be38fa commit f4f4367
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 14 deletions.
2 changes: 1 addition & 1 deletion db/pre-re/skill_db.txt
Expand Up @@ -1411,7 +1411,7 @@
8035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, MH_ANGRIFFS_MODUS,Attack Mode
8036,3:4:5:6:7,6,1,0,0,0,5,1,no,0,0x0200,0,weapon,0,0x0, MH_TINDER_BREAKER,Tinder Breaker
8037,1,6,4,0,0,0,5,1,no,0,0x200,0,weapon,0,0x0, MH_CBC,Continual Break Combo
8038,1,6,4,0,0,0,5,1,no,0,0x200,0,weapon,0,0x0, MH_EQC,Eternal Quick Combo
8038,1,6,4,0,0,0,5,1,no,0,0x200,0,misc,0,0x0, MH_EQC,Eternal Quick Combo
8039,0,6,4,3,0x2,1:1:1:2:2,5,1,no,0,0,0,weapon,0,0x0, MH_MAGMA_FLOW,Magma Flow
8040,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, MH_GRANITIC_ARMOR,Granitic Armor
8041,7,6,2,3,0x2,0,5,1,no,0,0,1,weapon,0,0x0, MH_LAVA_SLIDE,Lava Slide
Expand Down
2 changes: 1 addition & 1 deletion db/re/skill_db.txt
Expand Up @@ -1418,7 +1418,7 @@
8035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, MH_ANGRIFFS_MODUS,Attack Mode
8036,3:4:5:6:7,6,1,0,0,0,5,1,no,0,0x0200,0,weapon,0,0x0, MH_TINDER_BREAKER,Tinder Breaker
8037,1,6,4,0,0,0,5,1,no,0,0x200,0,weapon,0,0x0, MH_CBC,Continual Break Combo
8038,1,6,4,0,0,0,5,1,no,0,0x200,0,weapon,0,0x0, MH_EQC,Eternal Quick Combo
8038,1,6,4,0,0,0,5,1,no,0,0x200,0,misc,0,0x0, MH_EQC,Eternal Quick Combo
8039,0,6,4,3,0x2,1:1:1:2:2,5,1,no,0,0,0,weapon,0,0x0, MH_MAGMA_FLOW,Magma Flow
8040,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, MH_GRANITIC_ARMOR,Granitic Armor
8041,7,6,2,3,0x2,0,5,1,no,0,0,1,weapon,0,0x0, MH_LAVA_SLIDE,Lava Slide
Expand Down
4 changes: 2 additions & 2 deletions doc/status_change.txt
Expand Up @@ -2251,8 +2251,8 @@ SC_EQC (SI_EQC)
desc:
val1:
val2: -% Def
val3: -% Atk
val4: -%MaxHP
val3: -%MaxHP
val4:

SC_GOLDENE_FERSE (SI_GOLDENE_FERSE)
desc:
Expand Down
9 changes: 9 additions & 0 deletions src/map/battle.c
Expand Up @@ -4449,6 +4449,12 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
ATK_ADD(wd.damage, wd.damage2, 200);
#ifdef RENEWAL
ATK_ADD(wd.equipAtk, wd.equipAtk2, 200);
#endif
}
if (sc->data[SC_EQC]) {
ATK_ADDRATE(wd.damage, wd.damage2, -sc->data[SC_EQC]->val2);
#ifdef RENEWAL
ATK_ADDRATE(wd.equipAtk, wd.equipAtk2, -sc->data[SC_EQC]->val2);
#endif
}
if(sc->data[SC_STYLE_CHANGE]) {
Expand Down Expand Up @@ -6543,6 +6549,9 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
// kRO 2014-02-12: Damage: Caster's DEX, Target's current HP, Skill Level
md.damage = ((200 + status_get_dex(src)) * skill_lv * 10) + sstatus->hp; // (custom)
break;
case MH_EQC:
md.damage = max(tstatus->hp - sstatus->hp, 0);
break;
}

if (nk&NK_SPLASHSPLIT) { // Divide ATK among targets
Expand Down
10 changes: 10 additions & 0 deletions src/map/skill.c
Expand Up @@ -1684,6 +1684,16 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case KO_MAKIBISHI:
sc_start(src,bl, SC_STUN, 10 * skill_lv, skill_lv, skill_get_time2(skill_id,skill_lv));
break;
case MH_EQC:
{
struct homun_data *hd = BL_CAST(BL_HOM, src);

if (hd) {
sc_start2(src, bl, SC_STUN, 100, skill_lv, bl->id, 1000 * hd->homunculus.level / 50 + 500 * skill_lv);
status_change_end(bl, SC_TINDER_BREAKER2, INVALID_TIMER);
}
}
break;
case MH_LAVA_SLIDE:
sc_start4(src,bl, SC_BURNING, 10 * skill_lv, skill_lv, 1000, src->id, 0, skill_get_time2(skill_id, skill_lv));
break;
Expand Down
13 changes: 3 additions & 10 deletions src/map/status.c
Expand Up @@ -575,7 +575,7 @@ void initChangeTables(void)
set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER2 , SI_TINDER_BREAKER , SCB_FLEE );
set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER , SI_TINDER_BREAKER_POSTDELAY , SCB_FLEE );
set_sc(MH_CBC , SC_CBC , SI_CBC , SCB_FLEE );
set_sc(MH_EQC , SC_EQC , SI_EQC , SCB_DEF2|SCB_BATK|SCB_MAXHP );
set_sc(MH_EQC , SC_EQC , SI_EQC , SCB_DEF2|SCB_MAXHP );

add_sc( MER_CRASH , SC_STUN );
set_sc( MER_PROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
Expand Down Expand Up @@ -2948,7 +2948,7 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
if(sc->data[SC_GT_CHANGE]) // Max HP decrease: [Skill Level x 4] %
bonus -= (4 * sc->data[SC_GT_CHANGE]->val1);
if(sc->data[SC_EQC])
bonus -= sc->data[SC_EQC]->val4;
bonus -= sc->data[SC_EQC]->val3;
}
// Max rate reduce is -100%
bonus = cap_value(bonus,-100,INT_MAX);
Expand Down Expand Up @@ -5602,8 +5602,6 @@ static unsigned short status_calc_batk(struct block_list *bl, struct status_chan
batk += 100 * sc->data[SC_SATURDAYNIGHTFEVER]->val1;
if( sc->data[SC_ZANGETSU] )
batk += sc->data[SC_ZANGETSU]->val2;
if(sc->data[SC_EQC])
batk -= batk * sc->data[SC_EQC]->val3 / 100;
if(sc->data[SC_QUEST_BUFF1])
batk += sc->data[SC_QUEST_BUFF1]->val1;
if(sc->data[SC_QUEST_BUFF2])
Expand Down Expand Up @@ -8814,9 +8812,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
status_change_end(bl,SC_FOOD_DEX_CASH,INVALID_TIMER);
status_change_end(bl,SC_FOOD_LUK_CASH,INVALID_TIMER);
break;
case SC_EQC:
status_change_end(bl,SC_TINDER_BREAKER2,INVALID_TIMER);
break;
case SC_FIGHTINGSPIRIT:
case SC_OVERED_BOOST:
case SC_MAGICPOWER:
Expand Down Expand Up @@ -10435,9 +10430,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
break;
case SC_EQC:
val2 = 5 * val1; // def % reduc
val3 = 5 * val1; // atk % reduc
val4 = 2 * val1; // HP drain %
sc_start2(src, bl,SC_STUN,100,val1,bl->id,(1000*status_get_lv(src))/50+500*val1);
val3 = 2 * val1; // HP drain %
break;
case SC_ASH:
val2 = 0; // hit % reduc
Expand Down

1 comment on commit f4f4367

@lucasoli
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @aleos89 ! You are awesome!

Please sign in to comment.