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 34 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 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
121c2d1
Merge branch 'master' into update/skills_Spirit_Handler
Atemo Jul 22, 2024
5e84cc6
Small clean-up
Atemo Jul 22, 2024
be632c5
Follow-up https://github.com/rathena/rathena/pull/7998/commits/5e84cc…
Atemo Jul 22, 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
483 changes: 483 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 @@ -8039,3 +8039,108 @@ Body:
Level: 5
- Name: HN_NAPALM_VULCAN_STRIKE
Level: 5
- 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
107 changes: 107 additions & 0 deletions db/re/status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7828,6 +7828,8 @@ Body:
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
Sandy_Festival: true
- Status: Benedictum
Icon: EFST_BENEDICTUM
DurationLookup: CD_BENEDICTUM
Expand All @@ -7838,6 +7840,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 @@ -8944,3 +8948,106 @@ Body:
Bleeding: true
Confusion: true
Freeze: 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
80 changes: 80 additions & 0 deletions src/map/battle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3037,6 +3037,10 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
return false;
}
break;
case SH_CHUL_HO_SONIC_CLAW:
if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) == 0 && !(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 @@ -3609,6 +3613,25 @@ 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 SU_CN_METEOR2:
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 @@ -6273,6 +6296,39 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
skillratio += 5 * sstatus->con;
RE_LVL_DMOD(100);
break;
case SH_CHUL_HO_SONIC_CLAW:
skillratio += -100 + 850 + 1650 * skill_lv;
skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY);
skillratio += 5 * sstatus->pow;

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

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

if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 70 + 150 * skill_lv;
skillratio += 10 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY);
}
RE_LVL_DMOD(100);
break;
}
return skillratio;
}
Expand Down Expand Up @@ -8330,6 +8386,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 @@ -8723,6 +8781,28 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
skillratio += 5 * sstatus->spl;
RE_LVL_DMOD(100);
break;
case SH_HYUN_ROKS_BREEZE:
skillratio += -100 + 650 + 750 * skill_lv;
skillratio += 20 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY);
skillratio += 5 * sstatus->spl;

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

if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
skillratio += 300 * skill_lv;
skillratio += 25 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY);
}
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
1 change: 1 addition & 0 deletions src/map/clif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11304,6 +11304,7 @@ void clif_parse_WalkToXY(int fd, map_session_data *sd)
skill_check_cloaking(&sd->bl, sd->sc.getSCE(SC_CLOAKING));
status_change_end(&sd->bl, SC_ROLLINGCUTTER); // If you move, you lose your counters. [malufett]
status_change_end(&sd->bl, SC_CRESCIVEBOLT);
status_change_end(&sd->bl, SC_KI_SUL_RAMPAGE);

pc_delinvincibletimer(sd);

Expand Down
3 changes: 2 additions & 1 deletion src/map/pc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7182,10 +7182,11 @@ int pc_get_skillcooldown(map_session_data *sd, uint16 skill_id, uint16 skill_lv)
*------------------------------------------*/
uint8 pc_checkskill(map_session_data *sd, uint16 skill_id)
{
uint16 idx = 0;
if (sd == nullptr)
return 0;

uint16 idx = 0;

#ifdef RENEWAL
if ((idx = skill_get_index(skill_id)) == 0) {
#else
Expand Down
14 changes: 14 additions & 0 deletions src/map/script_constants.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1915,6 +1915,20 @@
export_constant(SC_POWERUP);
export_constant(SC_AGIUP);
export_constant(SC_PROTECTION);
export_constant(SC_HOGOGONG);
export_constant(SC_MARINE_FESTIVAL);
export_constant(SC_SANDY_FESTIVAL);
export_constant(SC_KI_SUL_RAMPAGE);
export_constant(SC_COLORS_OF_HYUN_ROK_1);
export_constant(SC_COLORS_OF_HYUN_ROK_2);
export_constant(SC_COLORS_OF_HYUN_ROK_3);
export_constant(SC_COLORS_OF_HYUN_ROK_4);
export_constant(SC_COLORS_OF_HYUN_ROK_5);
export_constant(SC_COLORS_OF_HYUN_ROK_6);
export_constant(SC_COLORS_OF_HYUN_ROK_BUFF);
export_constant(SC_TEMPORARY_COMMUNION);
export_constant(SC_BLESSING_OF_M_CREATURES);
export_constant(SC_BLESSING_OF_M_C_DEBUFF);

/* status icons */
export_deprecated_constant2("SI_BLANK",-1);
Expand Down
Loading