diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index e78304d8f29..e6916ebf506 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -8083,18 +8083,7 @@ skill_db: ( } AttackType: "Weapon" Element: "Ele_Weapon" - NumberOfHits: { - Lv1: 1 - Lv2: 2 - Lv3: 3 - Lv4: 4 - Lv5: 5 - Lv6: 6 - Lv7: 7 - Lv8: 8 - Lv9: 9 - Lv10: 10 - } + NumberOfHits: 5 CastTime: 500 AfterCastActDelay: 500 AfterCastWalkDelay: { @@ -8109,21 +8098,22 @@ skill_db: ( Lv9: 1600 Lv10: 1800 } + CoolDown: 1_000 FixedCastTime: 500 Requirements: { - SPCost: 10 - SpiritSphereCost: { - Lv1: 1 - Lv2: 2 - Lv3: 3 - Lv4: 4 - Lv5: 5 - Lv6: 6 - Lv7: 7 - Lv8: 8 - Lv9: 9 - Lv10: 10 + SPCost: { + Lv1: 12 + Lv2: 16 + Lv3: 20 + Lv4: 24 + Lv5: 28 + Lv6: 32 + Lv7: 36 + Lv8: 40 + Lv9: 44 + Lv10: 48 } + SpiritSphereCost: 1 } }, { @@ -32758,7 +32748,7 @@ skill_db: ( Lv9: 15 Lv10: 16 } - + SkillType: { Enemy: true } @@ -33382,7 +33372,7 @@ skill_db: ( MaxLevel: 10 Hit: "BDT_MULTIHIT" SkillType: { - Self: true + Self: true } SkillInfo: { Chorus: true diff --git a/src/map/battle.c b/src/map/battle.c index 46c413041dd..07aa56ad0b3 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2242,8 +2242,21 @@ static int battle_calc_skillratio(int attack_type, struct block_list *src, struc skillratio += 40 * skill_lv; #endif break; - case MO_FINGEROFFENSIVE: - skillratio+= 50 * skill_lv; + case MO_FINGEROFFENSIVE: { +#ifndef RENEWAL + skillratio += 50 * skill_lv; +#else + int ratio = 600 + 200 * skill_lv; + + // Cast and Target must be locked in BladeStop. + // In other words: A third player won't do extra damage from hitting another Monk's blade stop + if (tsc != NULL && tsc->data[SC_BLADESTOP] != NULL && sc->data[SC_BLADESTOP] != NULL) + ratio += ratio * 50 / 100; + + ratio /= skill->get_num(MO_FINGEROFFENSIVE, skill_lv); + skillratio += - 100 + ratio; +#endif + } break; case MO_INVESTIGATE: { #ifndef RENEWAL @@ -4778,6 +4791,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if(skill_id) { wd.flag |= battle->range_type(src, target, skill_id, skill_lv); switch(skill_id) { +#ifndef RENEWAL case MO_FINGEROFFENSIVE: if(sd) { if (battle_config.finger_offensive_type) @@ -4786,6 +4800,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl wd.div_ = sd->spiritball_old; } break; +#endif case HT_PHANTASMIC: //Since these do not consume ammo, they need to be explicitly set as arrow attacks. flag.arrow = 1; diff --git a/src/map/unit.c b/src/map/unit.c index 26e39f36909..110fe50fa67 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1656,10 +1656,12 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill } else if (!status->isdead(target)) return 0; //Can't cast on non-dead characters. break; +#ifndef RENEWAL case MO_FINGEROFFENSIVE: if(sd) casttime += casttime * min(skill_lv, sd->spiritball); break; +#endif case MO_EXTREMITYFIST: if (sc && sc->data[SC_COMBOATTACK] && (sc->data[SC_COMBOATTACK]->val1 == MO_COMBOFINISH ||