diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index ca09bb4b23..1eaa5287b6 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -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 diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 6e89861725..f061e3216b 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -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 diff --git a/doc/status_change.txt b/doc/status_change.txt index 148b3661d2..de8c354ae2 100644 --- a/doc/status_change.txt +++ b/doc/status_change.txt @@ -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: diff --git a/src/map/battle.c b/src/map/battle.c index 02eb26a0e6..82f2783858 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -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]) { @@ -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 diff --git a/src/map/skill.c b/src/map/skill.c index 3acc9c2f9e..42aee61bc1 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -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; diff --git a/src/map/status.c b/src/map/status.c index f12b62b3d9..e7e1952b0e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -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 ); @@ -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); @@ -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]) @@ -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: @@ -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