|
@@ -4104,6 +4104,11 @@ static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,s
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
+ case ABC_FRENZY_SHOT:
|
|
|
+ if( rnd()%100 < 5 * skill_lv ){
|
|
|
+ wd->div_ = 3;
|
|
|
+ }
|
|
|
+ break;
|
|
|
#ifdef RENEWAL
|
|
|
case AS_POISONREACT:
|
|
|
skill_lv = pc_checkskill(sd, TF_DOUBLE);
|
|
@@ -4880,10 +4885,13 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case SC_FATALMENACE:
|
|
|
- skillratio += 120 * skill_lv + sstatus->agi / 6; // !TODO: What's the AGI bonus?
|
|
|
+ skillratio += 120 * skill_lv + sstatus->agi; // !TODO: What's the AGI bonus?
|
|
|
+
|
|
|
+ if( sc != nullptr && sc->getSCE( SC_ABYSS_DAGGER ) ){
|
|
|
+ skillratio += 30 * skill_lv;
|
|
|
+ }
|
|
|
+
|
|
|
RE_LVL_DMOD(100);
|
|
|
- if (sc && sc->getSCE(SC_ABYSS_DAGGER))
|
|
|
- skillratio += skillratio * 50 / 100;
|
|
|
break;
|
|
|
case SC_TRIANGLESHOT:
|
|
|
skillratio += -100 + 230 * skill_lv + 3 * sstatus->agi;
|
|
@@ -5524,18 +5532,21 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case ABC_ABYSS_DAGGER:
|
|
|
- skillratio += -100 + 550 * skill_lv + 5 * sstatus->pow;
|
|
|
+ skillratio += -100 + 350 * skill_lv + 5 * sstatus->pow;
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case ABC_UNLUCKY_RUSH:
|
|
|
- skillratio += -100 + 500 * skill_lv + 5 * sstatus->crt;
|
|
|
+ skillratio += -100 + 100 + 300 * skill_lv + 5 * sstatus->pow;
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case ABC_CHAIN_REACTION_SHOT:
|
|
|
- case ABC_CHAIN_REACTION_SHOT_ATK:// Same damage formula? [Rytech]
|
|
|
skillratio += -100 + 600 * skill_lv + 5 * sstatus->con;
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
+ case ABC_CHAIN_REACTION_SHOT_ATK:
|
|
|
+ skillratio += -100 + 950 * skill_lv + 5 * sstatus->con;
|
|
|
+ RE_LVL_DMOD(100);
|
|
|
+ break;
|
|
|
case ABC_DEFT_STAB:
|
|
|
skillratio += -100 + 360 * skill_lv + 5 * sstatus->pow;
|
|
|
RE_LVL_DMOD(100);
|
|
@@ -7870,7 +7881,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case ABC_ABYSS_SQUARE:
|
|
|
- skillratio += -100 + 140 * skill_lv + 5 * sstatus->spl;
|
|
|
+ skillratio += -100 + ( 200 + 20 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) ) * skill_lv + 5 * sstatus->spl;
|
|
|
RE_LVL_DMOD(100);
|
|
|
break;
|
|
|
case TR_METALIC_FURY:
|
|
@@ -9388,9 +9399,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
|
|
sd->state.autocast = 0;
|
|
|
}
|
|
|
|
|
|
- // It has a success chance of triggering even tho the description says nothing about it.
|
|
|
- // TODO: Need to find out what the official success chance is. [Rytech]
|
|
|
- if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd() % 100 < 20 ){
|
|
|
+ if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd() % 100 < 15 ){
|
|
|
uint16 skill_id = ABC_FROM_THE_ABYSS_ATK;
|
|
|
uint16 skill_lv = sc->getSCE(SC_ABYSSFORCEWEAPON)->val1;
|
|
|
|