Implemented SH_COLORS_OF_HYUN_ROK (2nd rebalance)

MAX Lv: 7
Skill Requirement: Mystical Creature Mastery 1
Skill Form: Active
Type: Secondary
Target: Instant Casting
Description: With the mysterious magical power of Hyunrok, endows elemental property to Catnip Meteor, Hyunrok Breeze and Hyunrok Cannon for 300 seconds.
If the user learned Commune with Hyunrok, using this skill also increases Catnip Meteor damage by 50%.
When using skill level 7, the endowment is canceled.
_
[Level 1]: Endows water property.
[Level 2]: Endows wind property.
[Level 3]: Endows earth property.
[Level 4]: Endows fire property.
[Level 5]: Endows shadow property.
[Level 6]: Endows holy property.
[Level 7]: Removes the endowment.

1st rebalance :
(nothing)

2nd rebalance :
(nothing)
This commit is contained in:
Atemo 2023-10-28 17:10:30 +02:00
parent f17fb250be
commit e78f81b1d1
4 changed files with 102 additions and 0 deletions

View File

@ -41726,6 +41726,21 @@ Body:
Name: SH_COMMUNE_WITH_HYUN_ROK Name: SH_COMMUNE_WITH_HYUN_ROK
Description: Commune with Hyunrok Description: Commune with Hyunrok
MaxLevel: 1 MaxLevel: 1
- Id: 5444
Name: SH_COLORS_OF_HYUN_ROK
Description: Colors of Hyunrok
MaxLevel: 7
Type: Magic
TargetType: Self
DamageFlags:
NoDamage: true
Duration1: 300000
CastCancel: true
CastTime: 1700
FixedCastTime: 1000
Requires:
SpCost: 90
Status: Colors_of_Hyun_Rok_Buff
- Id: 5447 - Id: 5447
Name: SH_TEMPORARY_COMMUNION Name: SH_TEMPORARY_COMMUNION
Description: Temporary Communion Description: Temporary Communion

View File

@ -8792,3 +8792,60 @@ Body:
DurationLookup: SH_KI_SUL_RAMPAGE DurationLookup: SH_KI_SUL_RAMPAGE
States: States:
NoCast: true 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

View File

@ -3467,6 +3467,24 @@ int battle_get_magic_element(struct block_list* src, struct block_list* target,
if (sd) if (sd)
element = sd->bonus.arrow_ele; element = sd->bonus.arrow_ele;
break; break;
case SU_CN_METEOR:
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; return element;
@ -7826,6 +7844,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
case SU_CN_METEOR: case SU_CN_METEOR:
case SU_CN_METEOR2: case SU_CN_METEOR2:
skillratio += 100 + 100 * skill_lv + sstatus->int_ * 5; // !TODO: Confirm INT bonus 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); RE_LVL_DMOD(100);
break; break;
case NPC_VENOMFOG: case NPC_VENOMFOG:

View File

@ -12882,6 +12882,16 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
} }
break; break;
case SH_COLORS_OF_HYUN_ROK:
for(i = SC_COLORS_OF_HYUN_ROK_1; i < SC_COLORS_OF_HYUN_ROK_1+6; i++)
status_change_end(src, (sc_type)i);
if (skill_lv < 7) {
if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
sc_start(src, bl, (sc_type)(SC_COLORS_OF_HYUN_ROK_1+skill_lv-1), 100, skill_lv, skill_get_time(skill_id, skill_lv));
}
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
break;
default: { default: {
std::shared_ptr<s_skill_db> skill = skill_db.find(skill_id); std::shared_ptr<s_skill_db> skill = skill_db.find(skill_id);