diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index c02dc3f05a..2be54927c1 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -38857,7 +38857,7 @@ Body: Time: 1500 - Level: 5 Time: 1000 - Cooldown: 60000 + Cooldown: 30000 Requires: SpCost: - Level: 1 @@ -38888,26 +38888,27 @@ Body: FixedCastTime: 1000 Requires: SpCost: 100 - ApCost: 150 + ApCost: 120 Status: Abyss_Slayer - Id: 5319 Name: ABC_ABYSS_STRIKE - Description: Abyss Strike + Description: Omega Abyss Strike MaxLevel: 10 Type: Magic TargetType: Ground Range: 9 Hit: Single HitCount: 1 + Element: Fire CastCancel: true CastTime: 2000 AfterCastActDelay: 500 Duration1: 100 - Cooldown: 3000 + Cooldown: 700 FixedCastTime: 1000 Requires: SpCost: 125 - ApCost: 15 + ApCost: 10 Unit: Id: Dummyskill Range: 4 @@ -39022,7 +39023,7 @@ Body: Hit: Multi_Hit HitCount: 2 Element: Weapon - GiveAp: 1 + GiveAp: 3 CastCancel: true AfterCastActDelay: 500 Cooldown: 350 @@ -41240,7 +41241,7 @@ Body: Splash: true Range: 1 Hit: Multi_Hit - HitCount: 2 + HitCount: 5 SplashArea: 4 Requires: SpCost: 1 diff --git a/src/map/battle.cpp b/src/map/battle.cpp index e348392c83..d49827c622 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -4231,7 +4231,7 @@ 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 ){ + if( rnd_chance( 5 * skill_lv, 100 ) ){ wd->div_ = 3; } break; @@ -5734,7 +5734,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case ABC_ABYSS_DAGGER: - skillratio += -100 + 100 + 900 * skill_lv; + skillratio += -100 + 350 + 1400 * skill_lv; skillratio += 5 * sstatus->pow; RE_LVL_DMOD(100); break; @@ -5743,20 +5743,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case ABC_CHAIN_REACTION_SHOT: - skillratio += -100 + 850 * skill_lv + 15 * sstatus->con; + skillratio += -100 + 850 * skill_lv; + skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; case ABC_CHAIN_REACTION_SHOT_ATK: - skillratio += -100 + 600 + 2350 * skill_lv + 15 * sstatus->con; + skillratio += -100 + 800 + 2550 * skill_lv; + skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; case ABC_DEFT_STAB: - skillratio += -100 + 250 + 350 * skill_lv; - skillratio += 5 * sstatus->pow; + skillratio += -100 + 700 + 550 * skill_lv; + skillratio += 7 * sstatus->pow; RE_LVL_DMOD(100); break; case ABC_FRENZY_SHOT: - skillratio += -100 + 150 + 600 * skill_lv; + skillratio += -100 + 250 + 800 * skill_lv; skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; @@ -8307,13 +8309,16 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case ABC_ABYSS_STRIKE: - skillratio += -100 + 2200 * skill_lv + 10 * sstatus->spl; + skillratio += -100 + 2650 * skill_lv; + skillratio += 10 * sstatus->spl; if (tstatus->race == RC_DEMON || tstatus->race == RC_ANGEL) - skillratio += 150 * skill_lv; + skillratio += 200 * skill_lv; RE_LVL_DMOD(100); break; case ABC_ABYSS_SQUARE: - skillratio += -100 + ( 570 + 20 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) ) * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 750 * skill_lv; + skillratio += 40 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) * skill_lv; + skillratio += 5 * sstatus->spl; RE_LVL_DMOD(100); break; case TR_METALIC_FURY: @@ -8388,7 +8393,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case ABC_FROM_THE_ABYSS_ATK: - skillratio += -100 + 100 + 500 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 150 + 650 * skill_lv; + skillratio += 5 * sstatus->spl; RE_LVL_DMOD(100); break; case EM_ELEMENTAL_BUSTER_FIRE: @@ -9912,7 +9918,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t sd->state.autocast = 0; } - if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd() % 100 < 15 ){ + if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd_chance( 25, 100 ) ){ uint16 skill_id = ABC_FROM_THE_ABYSS_ATK; uint16 skill_lv = sc->getSCE(SC_ABYSSFORCEWEAPON)->val1;