Skip to content

Commit

Permalink
Rebalance of MO_FINGEROFFENSIVE (Throw Spirit Sphere)
Browse files Browse the repository at this point in the history
- Damage formula changed
  - Old: (Spirit Spheres x 350)%
  - New: [600 + (Skill Level x 200)]%
- Casting time changed
  - Old: (Spirit Spheres + 1) seconds
  - New: 0.5 seconds fixed casting time + 0.5 seconds variable casting
    time
- 1 second cooldown added
- SP cost increased
  - Old: 10 at all skill levels
  - New: 8 + (Skill Level x 4)
- Spirit sphere usage changed
  - Old: (Skill Level) sphere
  - New: 1 sphere at all skill levels
- Skill will deal 50% more damage on target caught with Root

From massive skills rebalance (1st/2nd/transclass) (2018.10.31)
  • Loading branch information
guilherme-gm committed Nov 15, 2023
1 parent f5b41b6 commit a7976de
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 28 deletions.
42 changes: 16 additions & 26 deletions db/re/skill_db.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand All @@ -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
}
},
{
Expand Down Expand Up @@ -32758,7 +32748,7 @@ skill_db: (
Lv9: 15
Lv10: 16
}

SkillType: {
Enemy: true
}
Expand Down Expand Up @@ -33382,7 +33372,7 @@ skill_db: (
MaxLevel: 10
Hit: "BDT_MULTIHIT"
SkillType: {
Self: true
Self: true
}
SkillInfo: {
Chorus: true
Expand Down
19 changes: 17 additions & 2 deletions src/map/battle.c
Original file line number Diff line number Diff line change
Expand Up @@ -2243,8 +2243,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 != 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
Expand Down Expand Up @@ -4779,6 +4792,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)
Expand All @@ -4787,6 +4801,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;
Expand Down
2 changes: 2 additions & 0 deletions src/map/unit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1655,10 +1655,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 ||
Expand Down

0 comments on commit a7976de

Please sign in to comment.