Skip to content

Commit 259a7d5

Browse files
Merge pull request #3331 from guilherme-gm/rebalance-lk
Lord Knight skill rebalance - 2018 patch/renewal
2 parents 3a3482a + 9bb00b5 commit 259a7d5

File tree

5 files changed

+60
-78
lines changed

5 files changed

+60
-78
lines changed

db/re/sc_config.conf

+1-1
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ SC_LKCONCENTRATION: {
773773
}
774774
CalcFlags: {
775775
Hit: true
776-
AtkPerc: true
776+
Watk: true
777777
DefPerc: true
778778
}
779779
Icon: "SI_LKCONCENTRATION"

db/re/skill_db.conf

+4-48
Original file line numberDiff line numberDiff line change
@@ -10937,18 +10937,7 @@ skill_db: (
1093710937
DamageType: {
1093810938
NoDamage: true
1093910939
}
10940-
SkillData1: {
10941-
Lv1: 25000
10942-
Lv2: 30000
10943-
Lv3: 35000
10944-
Lv4: 40000
10945-
Lv5: 45000
10946-
Lv6: 50000
10947-
Lv7: 55000
10948-
Lv8: 60000
10949-
Lv9: 65000
10950-
Lv10: 70000
10951-
}
10940+
SkillData1: 60_000 // Duration of SC_LKCONCENTRATION (in milliseconds)
1095210941
FixedCastTime: 0
1095310942
Requirements: {
1095410943
SPCost: {
@@ -12246,43 +12235,10 @@ skill_db: (
1224612235
AttackType: "Weapon"
1224712236
Element: "Ele_Weapon"
1224812237
NumberOfHits: 5
12249-
CastTime: {
12250-
Lv1: 150
12251-
Lv2: 250
12252-
Lv3: 350
12253-
Lv4: 450
12254-
Lv5: 500
12255-
Lv6: 500
12256-
Lv7: 500
12257-
Lv8: 500
12258-
Lv9: 500
12259-
Lv10: 500
12260-
}
12261-
AfterCastActDelay: {
12262-
Lv1: 1200
12263-
Lv2: 1400
12264-
Lv3: 1600
12265-
Lv4: 1800
12266-
Lv5: 2000
12267-
Lv6: 2200
12268-
Lv7: 2400
12269-
Lv8: 2600
12270-
Lv9: 2800
12271-
Lv10: 3000
12272-
}
12238+
CastTime: 250
12239+
AfterCastActDelay: 1_000
1227312240
SkillData2: 1000
12274-
FixedCastTime: {
12275-
Lv1: 150
12276-
Lv2: 250
12277-
Lv3: 350
12278-
Lv4: 450
12279-
Lv5: 500
12280-
Lv6: 500
12281-
Lv7: 500
12282-
Lv8: 500
12283-
Lv9: 500
12284-
Lv10: 500
12285-
}
12241+
FixedCastTime: 300
1228612242
Requirements: {
1228712243
SPCost: {
1228812244
Lv1: 18

src/map/battle.c

+41-27
Original file line numberDiff line numberDiff line change
@@ -2117,7 +2117,7 @@ static int battle_calc_skillratio(int attack_type, struct block_list *src, struc
21172117
break;
21182118
#ifdef RENEWAL
21192119
case KN_BRANDISHSPEAR:
2120-
skillratio += 300 + 100 * skill_lv + status_get_str(src);
2120+
skillratio += 300 + 100 * skill_lv + status_get_str(src) * 5;
21212121
break;
21222122
#else
21232123
case KN_BRANDISHSPEAR:
@@ -2368,7 +2368,8 @@ static int battle_calc_skillratio(int attack_type, struct block_list *src, struc
23682368
#else
23692369
case LK_SPIRALPIERCE:
23702370
case ML_SPIRALPIERCE:
2371-
skillratio += 50 * skill_lv;
2371+
skillratio += -100 + 150 + 50 * skill_lv;
2372+
RE_LVL_DMOD(100);
23722373
#endif
23732374
break;
23742375
case PA_SACRIFICE:
@@ -3040,8 +3041,10 @@ static int battle_calc_skillratio(int attack_type, struct block_list *src, struc
30403041
skillratio += 200;
30413042
if( sc->data[SC_TRUESIGHT] )
30423043
skillratio += 2*sc->data[SC_TRUESIGHT]->val1;
3044+
#ifndef RENEWAL
30433045
if( sc->data[SC_LKCONCENTRATION] )
30443046
skillratio += sc->data[SC_LKCONCENTRATION]->val2;
3047+
#endif
30453048
if (sd != NULL && sd->weapontype == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0)
30463049
skillratio += skillratio * (10 + 2 * i) / 100;
30473050
#endif
@@ -5612,36 +5615,43 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
56125615
if ( sd && s_ele != sd->bonus.arrow_ele )
56135616
s_ele = sd->bonus.arrow_ele;
56145617
break;
5618+
56155619
case NJ_TATAMIGAESHI:
5616-
ATK_RATE(200);
5617-
/* Fall through */
5620+
ATK_RATE(200);
5621+
ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
5622+
break;
5623+
56185624
case LK_SPIRALPIERCE:
5619-
case ML_SPIRALPIERCE: // [malufett]
5620-
if( skill_id != NJ_TATAMIGAESHI ){
5621-
short index = sd?sd->equip_index[EQI_HAND_R]:0;
5622-
GET_NORMAL_ATTACK( (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), 0);
5623-
wd.damage = wd.damage * 70 / 100;
5624-
//n_ele = true; // FIXME: This is has no effect if it's after GET_NORMAL_ATTACK (was this intended, or was it supposed to be put above?)
5625-
5626-
if (sd && index >= 0 &&
5627-
sd->inventory_data[index] &&
5628-
sd->inventory_data[index]->type == IT_WEAPON)
5629-
ATK_ADD(sd->inventory_data[index]->weight * 7 / 100);
5625+
case ML_SPIRALPIERCE: { // [malufett]
5626+
short index = sd?sd->equip_index[EQI_HAND_R]:0;
5627+
GET_NORMAL_ATTACK( (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), 0);
5628+
wd.damage = wd.damage * 70 / 100;
5629+
//n_ele = true; // FIXME: This is has no effect if it's after GET_NORMAL_ATTACK (was this intended, or was it supposed to be put above?)
56305630

5631-
switch (tstatus->size) {
5632-
case SZ_SMALL: //Small: 115%
5633-
ATK_RATE(115);
5634-
break;
5635-
case SZ_BIG: //Large: 85%
5636-
ATK_RATE(85);
5637-
}
5638-
wd.damage = battle->calc_masteryfix(src, target, skill_id, skill_lv, wd.damage, wd.div_, 0, flag.weapon);
5639-
wd.damage = battle->calc_cardfix2(src, target, wd.damage, s_ele, nk, wd.flag);
5631+
if (sd && index >= 0 &&
5632+
sd->inventory_data[index] &&
5633+
sd->inventory_data[index]->type == IT_WEAPON)
5634+
ATK_ADD(sd->inventory_data[index]->weight * 7 / 100);
5635+
5636+
switch (tstatus->size) {
5637+
case SZ_SMALL: // Small: 130%
5638+
ATK_RATE(130);
5639+
break;
5640+
5641+
case SZ_MEDIUM: // Medium: 115%
5642+
ATK_RATE(115);
5643+
break;
56405644
}
5641-
FALLTHROUGH
5645+
wd.damage = battle->calc_masteryfix(src, target, skill_id, skill_lv, wd.damage, wd.div_, 0, flag.weapon);
5646+
wd.damage = battle->calc_cardfix2(src, target, wd.damage, s_ele, nk, wd.flag);
5647+
ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
5648+
}
5649+
break;
5650+
56425651
#endif
56435652
default:
56445653
ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
5654+
break;
56455655
}
56465656

56475657
//Constant/misc additions from skills
@@ -5943,9 +5953,13 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
59435953
){
59445954
int lv = sc->data[SC_AURABLADE]->val1;
59455955
#ifdef RENEWAL
5946-
lv *= ((skill_id == LK_SPIRALPIERCE || skill_id == ML_SPIRALPIERCE)?wd.div_:1); // +100 per hit in lv 5
5947-
#endif
5956+
if (skill_id == LK_SPIRALPIERCE || skill_id == ML_SPIRALPIERCE)
5957+
lv *= wd.div_; // +100 per hit in lv 5
5958+
5959+
ATK_ADD(sd->status.base_level * (lv + 3));
5960+
#else
59485961
ATK_ADD(20*lv);
5962+
#endif
59495963
}
59505964

59515965
if( !skill_id ) {

src/map/pc.c

-1
Original file line numberDiff line numberDiff line change
@@ -6334,7 +6334,6 @@ static int pc_checkallowskill(struct map_session_data *sd)
63346334
SC_DANCING,
63356335
SC_GS_GATLINGFEVER,
63366336
#ifdef RENEWAL
6337-
SC_LKCONCENTRATION,
63386337
SC_EDP,
63396338
#endif
63406339
SC_FEARBREEZE,

src/map/status.c

+14-1
Original file line numberDiff line numberDiff line change
@@ -4419,8 +4419,10 @@ static int status_calc_atk_percent(struct block_list *bl, struct status_change *
44194419
if (sc->data[SC_PROVOKE] != NULL)
44204420
atk_percent += sc->data[SC_PROVOKE]->val3;
44214421

4422+
#ifndef RENEWAL
44224423
if (sc->data[SC_LKCONCENTRATION] != NULL)
44234424
atk_percent += sc->data[SC_LKCONCENTRATION]->val2;
4425+
#endif
44244426

44254427
if (sc->data[SC_HAMI_BLOODLUST] != NULL)
44264428
atk_percent += sc->data[SC_HAMI_BLOODLUST]->val2;
@@ -4687,6 +4689,12 @@ static int status_calc_watk(struct block_list *bl, struct status_change *sc, int
46874689
watk -= sc->data[SC_WATER_BARRIER]->val3;
46884690
if(sc->data[SC_GENTLETOUCH_CHANGE] && sc->data[SC_GENTLETOUCH_CHANGE]->val2)
46894691
watk += sc->data[SC_GENTLETOUCH_CHANGE]->val2;
4692+
4693+
#ifdef RENEWAL
4694+
if (sc->data[SC_LKCONCENTRATION] != NULL)
4695+
watk += watk * sc->data[SC_LKCONCENTRATION]->val2 / 100;
4696+
#endif
4697+
46904698
return cap_value(watk, battle_config.watk_min, battle_config.watk_max);
46914699
}
46924700
#ifndef RENEWAL
@@ -8647,9 +8655,14 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
86478655
total_tick += total_tick / 10;
86488656
break;
86498657
case SC_LKCONCENTRATION:
8650-
val2 = 5 * val1; // ATK% Increase
86518658
val3 = 10*val1; //Hit Increase
8659+
#ifdef RENEWAL
8660+
val2 = 5 + 2 * val1; // ATK% increase
8661+
val4 = 5 + 2 * val1; // Def% reduction
8662+
#else
8663+
val2 = 5 * val1; // ATK% Increase
86528664
val4 = 5 * val1; // Def% reduction
8665+
#endif
86538666
sc_start(src, bl, SC_ENDURE, 100, 1, total_tick, skill_id); // Endure effect
86548667
break;
86558668
case SC_ANGELUS:

0 commit comments

Comments
 (0)