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

Implemented Spirit handler skills #7998

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
16de2a8
Spirit_Handler skill tree
Atemo Oct 28, 2023
de98f54
Implemented SH_MYSTICAL_CREATURE_MASTERY
Atemo Oct 28, 2023
32ba1ba
Implemented SH_COMMUNE_WITH_CHUL_HO
Atemo Oct 28, 2023
e6be453
Implemented SH_COMMUNE_WITH_KI_SUL
Atemo Oct 28, 2023
c639490
Implemented SH_COMMUNE_WITH_HYUN_ROK
Atemo Oct 28, 2023
13a8b0a
Implemented SH_CHUL_HO_SONIC_CLAW (2nd rebalance)
Atemo Oct 28, 2023
ef9f422
Implemented SH_HOWLING_OF_CHUL_HO (2nd rebalance)
Atemo Oct 28, 2023
9de0a5f
Implemented SH_HOGOGONG_STRIKE (2nd rebalance)
Atemo Oct 28, 2023
c006ae4
Implemented SH_TEMPORARY_COMMUNION
Atemo Oct 28, 2023
76d7234
Implemented SH_KI_SUL_WATER_SPRAYING
Atemo Oct 28, 2023
5c9a72e
Implemented SH_MARINE_FESTIVAL_OF_KI_SUL (2nd rebalance)
Atemo Oct 28, 2023
6680ce0
Implemented SH_SANDY_FESTIVAL_OF_KI_SUL (2nd rebalance)
Atemo Oct 28, 2023
f17fb25
Implemented SH_KI_SUL_RAMPAGE (2nd rebalance)
Atemo Oct 28, 2023
e78f81b
Implemented SH_COLORS_OF_HYUN_ROK (2nd rebalance)
Atemo Oct 28, 2023
750a5af
Implemented SH_HYUN_ROKS_BREEZE (2nd rebalance)
Atemo Oct 28, 2023
b09a53c
Implemented SH_HYUN_ROK_CANNON (2nd rebalance)
Atemo Oct 28, 2023
3f30991
Implemented SH_BLESSING_OF_MYSTICAL_CREATURES (2nd rebalance)
Atemo Oct 28, 2023
4825842
Corrections
Atemo Oct 29, 2023
7d05fc7
Update src/map/battle.cpp
Atemo Nov 1, 2023
d71b8dc
Corrected skill Description of SH_COMMUNE_WITH_KI_SUL in skill_db.yml
Atemo Nov 3, 2023
ea9d7ea
Merge branch 'update/skills_Spirit_Handler' of https://github.com/rat…
Atemo Nov 3, 2023
2aa0335
Moved SC_KI_SUL_RAMPAGE to clif_parse_WalkToXY (request to walk)
Atemo Dec 29, 2023
0a9e1cd
Removed useless sd check
Atemo Jan 1, 2024
6b2b0f3
Merge branch 'master' into update/skills_Spirit_Handler
Atemo Jan 18, 2024
dd540bd
Merge branch 'master' into update/skills_Spirit_Handler
Atemo Jan 23, 2024
b58eeb7
Merge correction
Atemo Jan 23, 2024
ac685aa
Merge correction
Atemo Jan 26, 2024
fc53e2e
Merge branch 'master' into update/skills_Spirit_Handler
Atemo Mar 25, 2024
055253a
Merge corrections
Atemo Mar 25, 2024
6fac9be
Merge branch 'master' into update/skills_Spirit_Handler
Atemo May 13, 2024
5bc0702
Merge correction
Atemo May 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
486 changes: 486 additions & 0 deletions db/re/skill_db.yml

Large diffs are not rendered by default.

105 changes: 105 additions & 0 deletions db/re/skill_tree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7864,3 +7864,108 @@ Body:
Royal_Guard: true
Royal_Guard_T: true
Imperial_Guard: true
- Job: Spirit_Handler
Inherit:
Summoner: true
Tree:
- Name: SH_MYSTICAL_CREATURE_MASTERY
MaxLevel: 10
- Name: SH_CHUL_HO_SONIC_CLAW
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 1
- Name: SH_KI_SUL_WATER_SPRAYING
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 1
- Name: SH_COLORS_OF_HYUN_ROK
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 1
- Name: SH_HOWLING_OF_CHUL_HO
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 3
- Name: SH_CHUL_HO_SONIC_CLAW
Level: 3
- Name: SH_MARINE_FESTIVAL_OF_KI_SUL
MaxLevel: 5
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 3
- Name: SH_KI_SUL_WATER_SPRAYING
Level: 3
- Name: SH_SANDY_FESTIVAL_OF_KI_SUL
MaxLevel: 5
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 3
- Name: SH_KI_SUL_WATER_SPRAYING
Level: 3
- Name: SH_HYUN_ROKS_BREEZE
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 3
- Name: SH_COLORS_OF_HYUN_ROK
Level: 3
- Name: SH_HOGOGONG_STRIKE
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 5
- Name: SH_CHUL_HO_SONIC_CLAW
Level: 3
- Name: SH_KI_SUL_RAMPAGE
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 5
- Name: SH_MARINE_FESTIVAL_OF_KI_SUL
Level: 2
- Name: SH_SANDY_FESTIVAL_OF_KI_SUL
Level: 2
- Name: SH_HYUN_ROK_CANNON
MaxLevel: 7
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 5
- Name: SH_HYUN_ROKS_BREEZE
Level: 3
- Name: SH_COMMUNE_WITH_CHUL_HO
MaxLevel: 1
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 7
- Name: SH_HOGOGONG_STRIKE
Level: 3
- Name: SH_COMMUNE_WITH_KI_SUL
MaxLevel: 1
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 7
- Name: SH_KI_SUL_RAMPAGE
Level: 3
- Name: SH_COMMUNE_WITH_HYUN_ROK
MaxLevel: 1
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 7
- Name: SH_HYUN_ROK_CANNON
Level: 3
- Name: SH_TEMPORARY_COMMUNION
MaxLevel: 5
Requires:
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 10
- Name: SH_BLESSING_OF_MYSTICAL_CREATURES
MaxLevel: 5
Requires:
- Name: SH_COMMUNE_WITH_KI_SUL
Level: 1
- Name: SH_MYSTICAL_CREATURE_MASTERY
Level: 10
110 changes: 110 additions & 0 deletions db/re/status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7823,6 +7823,8 @@ Body:
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
Sandy_Festival: true
- Status: Benedictum
Icon: EFST_BENEDICTUM
DurationLookup: CD_BENEDICTUM
Expand All @@ -7833,6 +7835,8 @@ Body:
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
Marine_Festival: true
- Status: Axe_Stomp
Icon: EFST_AXE_STOMP
DurationLookup: MT_AXE_STOMP
Expand Down Expand Up @@ -8751,3 +8755,109 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Hogogong
Icon: EFST_HOGOGONG
DurationLookup: SH_HOWLING_OF_CHUL_HO
Flags:
Debuff: true
BlEffect: true
DisplayPc: true
- Status: Temporary_Communion
Icon: EFST_TEMPORARY_COMMUNION
DurationLookup: SH_TEMPORARY_COMMUNION
CalcFlags:
Patk: true
Smatk: true
Hplus: true
- Status: Marine_Festival
Icon: EFST_MARINE_FESTIVAL
DurationLookup: SH_MARINE_FESTIVAL_OF_KI_SUL
CalcFlags:
Pow: true
Con: true
Crt: true
EndOnStart:
Benedictum: true
- Status: Sandy_Festival
Icon: EFST_SANDY_FESTIVAL
DurationLookup: SH_SANDY_FESTIVAL_OF_KI_SUL
CalcFlags:
Spl: true
Wis: true
Sta: true
EndOnStart:
Religio: true
- Status: Ki_Sul_Rampage
Icon: EFST_KI_SUL_RAMPAGE
DurationLookup: SH_KI_SUL_RAMPAGE
States:
NoCast: true
- Status: Colors_of_Hyun_Rok_Buff
Icon: EFST_COLORS_OF_HYUN_ROK_BUFF
DurationLookup: SH_COLORS_OF_HYUN_ROK
- Status: Colors_of_Hyun_Rok_1
Icon: EFST_COLORS_OF_HYUN_ROK_1
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_2: true
Colors_of_Hyun_Rok_3: true
Colors_of_Hyun_Rok_4: true
Colors_of_Hyun_Rok_5: true
Colors_of_Hyun_Rok_6: true
- Status: Colors_of_Hyun_Rok_2
Icon: EFST_COLORS_OF_HYUN_ROK_2
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_1: true
Colors_of_Hyun_Rok_3: true
Colors_of_Hyun_Rok_4: true
Colors_of_Hyun_Rok_5: true
Colors_of_Hyun_Rok_6: true
- Status: Colors_of_Hyun_Rok_3
Icon: EFST_COLORS_OF_HYUN_ROK_3
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_1: true
Colors_of_Hyun_Rok_2: true
Colors_of_Hyun_Rok_4: true
Colors_of_Hyun_Rok_5: true
Colors_of_Hyun_Rok_6: true
- Status: Colors_of_Hyun_Rok_4
Icon: EFST_COLORS_OF_HYUN_ROK_4
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_1: true
Colors_of_Hyun_Rok_2: true
Colors_of_Hyun_Rok_3: true
Colors_of_Hyun_Rok_5: true
Colors_of_Hyun_Rok_6: true
- Status: Colors_of_Hyun_Rok_5
Icon: EFST_COLORS_OF_HYUN_ROK_5
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_1: true
Colors_of_Hyun_Rok_2: true
Colors_of_Hyun_Rok_3: true
Colors_of_Hyun_Rok_4: true
Colors_of_Hyun_Rok_6: true
- Status: Colors_of_Hyun_Rok_6
Icon: EFST_COLORS_OF_HYUN_ROK_6
DurationLookup: SH_COLORS_OF_HYUN_ROK
EndOnStart:
Colors_of_Hyun_Rok_1: true
Colors_of_Hyun_Rok_2: true
Colors_of_Hyun_Rok_3: true
Colors_of_Hyun_Rok_4: true
Colors_of_Hyun_Rok_5: true
- Status: Blessing_of_M_Creatures
Icon: EFST_BLESSING_OF_M_CREATURES
DurationLookup: SH_BLESSING_OF_MYSTICAL_CREATURES
CalcFlags:
Patk: true
Smatk: true
- Status: Blessing_of_M_C_Debuff
Icon: EFST_BLESSING_OF_M_C_DEBUFF
DurationLookup: SH_BLESSING_OF_MYSTICAL_CREATURES
CalcFlags:
Patk: true
Smatk: true
90 changes: 90 additions & 0 deletions src/map/battle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2954,6 +2954,11 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
case WH_GALESTORM:
if (sc && !sc->getSCE(SC_CALAMITYGALE))
return false;
case SH_CHUL_HO_SONIC_CLAW:
case SH_HOGOGONG_STRIKE:
if (!(sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || !(sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
return false;
break;
}
if(tsd && tsd->bonus.critical_def)
cri = cri * ( 100 - tsd->bonus.critical_def ) / 100;
Expand Down Expand Up @@ -3462,6 +3467,24 @@ int battle_get_magic_element(struct block_list* src, struct block_list* target,
if (sd)
element = sd->bonus.arrow_ele;
break;
case SU_CN_METEOR:
Atemo marked this conversation as resolved.
Show resolved Hide resolved
case SH_HYUN_ROKS_BREEZE:
case SH_HYUN_ROK_CANNON:
if (sc && sc->count) {
if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_1))
element = ELE_WATER;
else if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_2))
element = ELE_WIND;
else if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_3))
element = ELE_EARTH;
else if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_4))
element = ELE_FIRE;
else if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_5))
element = ELE_DARK;
else if (sc->getSCE(SC_COLORS_OF_HYUN_ROK_6))
element = ELE_HOLY;
}
break;
}

return element;
Expand Down Expand Up @@ -5727,6 +5750,45 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
case ABR_INFINITY_BUSTER:// Need official formula.
skillratio += -100 + 50000;
break;
case SH_CHUL_HO_SONIC_CLAW: {
int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0);
skillratio += -100 + 850 + 1650 * skill_lv;
skillratio += 50 * tmp_val;
skillratio += 5 * sstatus->pow;

if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 100 + 400 * skill_lv;
skillratio += 50 * tmp_val;
}
RE_LVL_DMOD(100);
break;
}
case SH_HOWLING_OF_CHUL_HO: {
int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0);
skillratio += -100 + 600 + 1050 * skill_lv;
skillratio += 50 * tmp_val;
skillratio += 5 * sstatus->pow;

if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 100 + 100 * skill_lv;
skillratio += 50 * tmp_val;
}
RE_LVL_DMOD(100);
break;
}
case SH_HOGOGONG_STRIKE: {
int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0);
skillratio += -100 + 180 + 200 * skill_lv;
skillratio += 10 * tmp_val;
skillratio += 5 * sstatus->pow;

if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 70 + 150 * skill_lv;
skillratio += 10 * tmp_val;
}
RE_LVL_DMOD(100);
break;
}
}
return skillratio;
}
Expand Down Expand Up @@ -7782,6 +7844,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
case SU_CN_METEOR:
case SU_CN_METEOR2:
skillratio += 100 + 100 * skill_lv + sstatus->int_ * 5; // !TODO: Confirm INT bonus
if (sc && sc->getSCE(SC_COLORS_OF_HYUN_ROK_BUFF))
skillratio += skillratio * 50 / 100;
RE_LVL_DMOD(100);
break;
case NPC_VENOMFOG:
Expand Down Expand Up @@ -8108,6 +8172,32 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
case NPC_RAINOFMETEOR:
skillratio += 350; // unknown ratio
break;
case SH_HYUN_ROKS_BREEZE: {
int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0);
skillratio += -100 + 650 + 750 * skill_lv;
skillratio += 20 * tmp_val;
skillratio += 5 * sstatus->spl;

if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 100 + 200 * skill_lv;
skillratio += 20 * tmp_val;
}
RE_LVL_DMOD(100);
break;
}
case SH_HYUN_ROK_CANNON: {
int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0);
skillratio += -100 + 1050 + 1550 * skill_lv;
skillratio += 50 * tmp_val;
skillratio += 5 * sstatus->spl;

if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 300 * skill_lv;
skillratio += 25 * tmp_val;
}
RE_LVL_DMOD(100);
break;
}
}

if (sc) {// Insignia's increases the damage of offensive magic by a fixed percentage depending on the element.
Expand Down
Loading
Loading