Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2-2 jobs skill rebalance (Part 1) (2018 patch/Renewal) and small skill fixes #3229

Merged
merged 11 commits into from
May 25, 2024
Prev Previous commit
Next Next commit
Rebalance of AM_ACIDTERROR (Acid Terror)
- Chance of breaking target armor increased
  - Old: 3/7/10/12/13%
  - New: 5/15/25/35/45%
- It now uses basic/default ranged physical damage calculation (instead
  of special formula)
- Damage formula changed:
  - Old: [200% + (Skill Level x 80)]% (ATK + MATK)
  - New: [(Skill Level x 200) + (Potion_Research_Lv x 100)]% ATK

From massive skills rebalance (1st/2nd/transclass) (2018.10.31)
guilherme-gm committed May 24, 2024
commit 5784d81172e74f48dd47eeee29cd7ff66bc09320
4 changes: 2 additions & 2 deletions db/pre-re/skill_db.conf
Original file line number Diff line number Diff line change
@@ -6973,7 +6973,7 @@ skill_db: (
}
InterruptCast: true
CastTime: 1000
SkillData1: {
SkillData1: { // Chance to break target's armor (1 = 1%)
Lv1: 3
Lv2: 7
Lv3: 10
@@ -6985,7 +6985,7 @@ skill_db: (
Lv9: 13
Lv10: 13
}
SkillData2: 120000
SkillData2: 120000 // Bleeding duration (in milliseconds)
CoolDown: 0
Requirements: {
SPCost: 15
26 changes: 13 additions & 13 deletions db/re/skill_db.conf
Original file line number Diff line number Diff line change
@@ -7194,19 +7194,19 @@ skill_db: (
InterruptCast: true
CastTime: 500
AfterCastActDelay: 500
SkillData1: {
Lv1: 3
Lv2: 7
Lv3: 10
Lv4: 12
Lv5: 13
Lv6: 13
Lv7: 13
Lv8: 13
Lv9: 13
Lv10: 13
}
SkillData2: 120000
SkillData1: { // Chance to break target's armor (1 = 1%)
Lv1: 5
Lv2: 15
Lv3: 25
Lv4: 35
Lv5: 45
Lv6: 45
Lv7: 45
Lv8: 45
Lv9: 45
Lv10: 45
}
SkillData2: 120_000 // Bleeding duration (in milliseconds)
FixedCastTime: 500
Requirements: {
SPCost: 15
23 changes: 4 additions & 19 deletions src/map/battle.c
Original file line number Diff line number Diff line change
@@ -2230,7 +2230,10 @@ static int battle_calc_skillratio(int attack_type, struct block_list *src, struc
break;
case AM_ACIDTERROR:
#ifdef RENEWAL
skillratio += 80 * skill_lv + 100;
skillratio += -100 + 200 * skill_lv;

if (sd != NULL)
skillratio += 100 * pc->checkskill(sd, AM_LEARNINGPOTION);
#else
skillratio += 40 * skill_lv;
#endif
@@ -4848,7 +4851,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
#ifdef RENEWAL
case MO_EXTREMITYFIST:
case GS_PIERCINGSHOT:
case AM_ACIDTERROR:
case NJ_ISSEN:
case PA_SACRIFICE:
case KO_HAPPOKUNAI:
@@ -5491,23 +5493,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
ATK_ADD(sstatus->rhw.atk2); //Else use Atk2
ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
break;
case AM_ACIDTERROR: // [malufett/Hercules]
{
int64 matk;
int totaldef = status->get_total_def(target) + status->get_total_mdef(target);
matk = battle->calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, status->get_matk(src, 2), 0, wd.flag);
matk = battle->attr_fix(src, target, matk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
matk = matk * battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag) / 100;
GET_NORMAL_ATTACK((sc && sc->data[SC_MAXIMIZEPOWER] ? 1 : 0) | (sc && sc->data[SC_WEAPONPERFECT] ? 8 : 0), 0);
ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
ATK_ADD(matk);
ATK_ADD(-totaldef);
if ( skill_id == AM_ACIDTERROR && is_boss(target) )
ATK_RATE(50);
if ( skill_id == AM_DEMONSTRATION )
wd.damage = max(wd.damage, 1);
}
break;
case GN_CARTCANNON:
GET_NORMAL_ATTACK((sc && sc->data[SC_MAXIMIZEPOWER] ? 1 : 0) | (sc && sc->data[SC_WEAPONPERFECT] ? 8 : 0), skill_id);
ATK_ADD(sd ? sd->bonus.arrow_atk : 0);
2 changes: 1 addition & 1 deletion src/map/skill.c
Original file line number Diff line number Diff line change
@@ -1798,7 +1798,7 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl

case AM_ACIDTERROR:
sc_start2(src, bl, SC_BLOODING, (skill_lv * 3), skill_lv, src->id, skill->get_time2(skill_id, skill_lv), skill_id);
if ( bl->type == BL_PC && rnd() % 1000 < 10 * skill->get_time(skill_id, skill_lv) ) {
if (bl->type == BL_PC && (rnd() % 1000) < (10 * skill->get_time(skill_id, skill_lv))) {
skill->break_equip(bl, EQP_ARMOR, 10000, BCT_ENEMY);
clif->emotion(bl, E_OMG); // emote icon still shows even there is no armor equip.
}