Small clean-up

This commit is contained in:
Atemo 2024-07-22 16:56:58 +02:00
parent 121c2d10f3
commit 5e84cc685d
7 changed files with 70 additions and 114 deletions

View File

@ -41769,20 +41769,19 @@ Body:
TargetType: Self TargetType: Self
DamageFlags: DamageFlags:
NoDamage: true NoDamage: true
Duration1: 300000 Duration1: 300000
CastCancel: true CastCancel: true
CastTime: 1700 CastTime: 1700
FixedCastTime: 1000 FixedCastTime: 1000
Requires: Requires:
SpCost: 90 SpCost: 90
Status: Colors_of_Hyun_Rok_Buff
- Id: 5445 - Id: 5445
Name: SH_HYUN_ROKS_BREEZE Name: SH_HYUN_ROKS_BREEZE
Description: Hyunrok Breeze Description: Hyunrok Breeze
MaxLevel: 7 MaxLevel: 7
Type: Magic Type: Magic
TargetType: Ground TargetType: Ground
Hit: Multi_Hit Hit: Single
HitCount: 1 HitCount: 1
Range: 9 Range: 9
GiveAp: 4 GiveAp: 4
@ -41810,7 +41809,6 @@ Body:
Amount: 94 Amount: 94
Unit: Unit:
Id: HYUN_ROKS_BREEZE Id: HYUN_ROKS_BREEZE
Layout: 0
Range: Range:
- Level: 1 - Level: 1
Size: 2 Size: 2
@ -41839,9 +41837,8 @@ Body:
TargetType: Attack TargetType: Attack
Range: -11 Range: -11
GiveAp: 1 GiveAp: 1
Hit: Multi_Hit Hit: Single
HitCount: 1 HitCount: 1
Element: Endowed
CastCancel: true CastCancel: true
CastTime: 2000 CastTime: 2000
Cooldown: 300 Cooldown: 300

View File

@ -9051,6 +9051,3 @@ Body:
- Status: Blessing_of_M_C_Debuff - Status: Blessing_of_M_C_Debuff
Icon: EFST_BLESSING_OF_M_C_DEBUFF Icon: EFST_BLESSING_OF_M_C_DEBUFF
DurationLookup: SH_BLESSING_OF_MYSTICAL_CREATURES DurationLookup: SH_BLESSING_OF_MYSTICAL_CREATURES
CalcFlags:
Patk: true
Smatk: true

View File

@ -3038,8 +3038,7 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
} }
break; break;
case SH_CHUL_HO_SONIC_CLAW: case SH_CHUL_HO_SONIC_CLAW:
case SH_HOGOGONG_STRIKE: if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) == 0 && !(sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) == 0 || !(sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
return false; return false;
break; break;
} }

View File

@ -1912,35 +1912,6 @@
export_constant(SC_HIDDEN_CARD); export_constant(SC_HIDDEN_CARD);
export_constant(SC_PERIOD_RECEIVEITEM_2ND); export_constant(SC_PERIOD_RECEIVEITEM_2ND);
export_constant(SC_PERIOD_PLUSEXP_2ND); export_constant(SC_PERIOD_PLUSEXP_2ND);
// Sky Emperor
export_constant(SC_RISING_SUN);
export_constant(SC_NOON_SUN);
export_constant(SC_SUNSET_SUN);
export_constant(SC_RISING_MOON);
export_constant(SC_MIDNIGHT_MOON);
export_constant(SC_DAWN_MOON);
export_constant(SC_STAR_BURST);
export_constant(SC_SKY_ENCHANT);
// Soul Ascetic
export_constant(SC_TALISMAN_OF_PROTECTION);
export_constant(SC_TALISMAN_OF_WARRIOR);
export_constant(SC_TALISMAN_OF_MAGICIAN);
export_constant(SC_TALISMAN_OF_FIVE_ELEMENTS);
export_constant(SC_TOTEM_OF_TUTELARY);
export_constant(SC_T_FIRST_GOD);
export_constant(SC_T_SECOND_GOD);
export_constant(SC_T_THIRD_GOD);
export_constant(SC_T_FOURTH_GOD);
export_constant(SC_T_FIFTH_GOD);
export_constant(SC_HEAVEN_AND_EARTH);
// Shinkiro/Shiranui
export_constant(SC_SHADOW_CLOCK);
export_constant(SC_SHINKIROU_CALL);
export_constant(SC_NIGHTMARE);
export_constant(SC_SBUNSHIN);
// Spirit Handler // Spirit Handler
export_constant(SC_HOGOGONG); export_constant(SC_HOGOGONG);
@ -11062,7 +11033,6 @@
export_constant(UNT_JACK_FROST_NOVA); export_constant(UNT_JACK_FROST_NOVA);
export_constant(UNT_GROUND_GRAVITATION); export_constant(UNT_GROUND_GRAVITATION);
export_constant(UNT_KUNAIWAIKYOKU); export_constant(UNT_KUNAIWAIKYOKU);
export_constant(UNT_GD_LEADERSHIP); export_constant(UNT_GD_LEADERSHIP);
export_constant(UNT_GD_GLORYWOUNDS); export_constant(UNT_GD_GLORYWOUNDS);
export_constant(UNT_GD_SOULCOLD); export_constant(UNT_GD_SOULCOLD);

View File

@ -6191,7 +6191,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
case TR_SOUNDBLEND: case TR_SOUNDBLEND:
case SH_HYUN_ROK_CANNON: case SH_HYUN_ROK_CANNON:
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
break; break;
case AG_DEADLY_PROJECTION: case AG_DEADLY_PROJECTION:
@ -13015,8 +13015,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
skill_area_temp[1] = bl->id; skill_area_temp[1] = bl->id;
skill_area_temp[2] = 0; skill_area_temp[2] = 0;
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 1, skill_castend_damage_id);
break; break;
case SH_HOGOGONG_STRIKE: case SH_HOGOGONG_STRIKE:
i = skill_get_splash(skill_id, skill_lv); i = skill_get_splash(skill_id, skill_lv);
if( pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) if( pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
@ -13025,12 +13026,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
skill_area_temp[1] = bl->id; skill_area_temp[1] = bl->id;
skill_area_temp[2] = 0; skill_area_temp[2] = 0;
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 1, skill_castend_damage_id);
break; break;
case SH_KI_SUL_WATER_SPRAYING: case SH_KI_SUL_WATER_SPRAYING:
if (flag & 1) { if (sd == nullptr || sd->status.party_id == 0 || (flag & 1)) {
int heal = 500 * skill_lv + status_get_int(src) * 5; int heal = 500 * skill_lv + status_get_int(src) * 5;
heal += pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY)*100; heal += pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) * 100;
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
heal += 250 * skill_lv; heal += 250 * skill_lv;
@ -13038,37 +13040,35 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
} }
heal = heal * (100 + status_get_crt(src)) * status_get_lv(src) / 10000; heal = heal * (100 + status_get_crt(src)) * status_get_lv(src) / 10000;
status_heal(bl, heal, 0, 0, 0); status_heal(bl, heal, 0, 0, 0);
clif_skill_nodamage(0, bl, AL_HEAL, heal, 1); clif_skill_nodamage(src, bl, skill_id, heal, 1);
} }
else { else if (sd != nullptr) {
i = skill_get_splash(skill_id, skill_lv); i = skill_get_splash(skill_id, skill_lv);
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
i += 2; i += 2;
party_foreachsamemap(skill_area_sub, sd, i, src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_PARTY | SD_SPLASH | 1, skill_castend_nodamage_id);
} }
break; break;
case SH_MARINE_FESTIVAL_OF_KI_SUL: case SH_MARINE_FESTIVAL_OF_KI_SUL:
case SH_SANDY_FESTIVAL_OF_KI_SUL: case SH_SANDY_FESTIVAL_OF_KI_SUL:
if (flag & 1) { if (sd == nullptr || sd->status.party_id == 0 || (flag & 1)) {
int time = skill_get_time(skill_id, skill_lv); int time = skill_get_time(skill_id, skill_lv);
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
time *= 2; time *= 2;
sc_start(src, bl, type, 100, skill_lv, time); clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, time));
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
} }
else { else if (sd != nullptr) {
i = skill_get_splash(skill_id, skill_lv); i = skill_get_splash(skill_id, skill_lv);
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
i += 2; i += 2;
party_foreachsamemap(skill_area_sub, sd, i, src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_PARTY | SD_SPLASH | 1, skill_castend_nodamage_id);
} }
break; break;
case SH_KI_SUL_RAMPAGE: case SH_KI_SUL_RAMPAGE:
if (flag & 1) { if (flag & 1) {
if (!(src == bl)) { if (src != bl) {
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
status_heal(bl, 0, 0, 4, 0); status_heal(bl, 0, 0, 4, 0);
else else
@ -13076,23 +13076,56 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
} }
} }
else { else {
// TODO: no party check ?
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
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: case SH_COLORS_OF_HYUN_ROK:
for(i = SC_COLORS_OF_HYUN_ROK_1; i < SC_COLORS_OF_HYUN_ROK_1+6; i++) if (skill_lv == 7) {
status_change_end(src, (sc_type)i); status_change_end(src, SC_COLORS_OF_HYUN_ROK_1);
if (skill_lv < 7) { status_change_end(src, SC_COLORS_OF_HYUN_ROK_2);
if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) status_change_end(src, SC_COLORS_OF_HYUN_ROK_3);
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); status_change_end(src, SC_COLORS_OF_HYUN_ROK_4);
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)); status_change_end(src, SC_COLORS_OF_HYUN_ROK_5);
status_change_end(src, SC_COLORS_OF_HYUN_ROK_6);
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
}
else {
// Buff to increase Catnip Meteor damage
if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION)))
sc_start(src, bl, SC_COLORS_OF_HYUN_ROK_BUFF, 100, 1, skill_get_time(skill_id, skill_lv));
// Endows elemental property to Catnip Meteor, Hyunrok Breeze and Hyunrok Cannon skills
switch (skill_lv) {
case 1:
type = SC_COLORS_OF_HYUN_ROK_1;
break;
case 2:
type = SC_COLORS_OF_HYUN_ROK_2;
break;
case 3:
type = SC_COLORS_OF_HYUN_ROK_3;
break;
case 4:
type = SC_COLORS_OF_HYUN_ROK_4;
break;
case 5:
type = SC_COLORS_OF_HYUN_ROK_5;
break;
case 6:
type = SC_COLORS_OF_HYUN_ROK_6;
break;
}
clif_skill_nodamage(src, src, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id,skill_lv)) );
} }
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
break; break;
case SH_BLESSING_OF_MYSTICAL_CREATURES: case SH_BLESSING_OF_MYSTICAL_CREATURES:
status_heal(bl, 0, 0, 200-status_get_ap(bl), 0); status_heal(bl, 0, 0, 200-status_get_ap(bl), 0);
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); clif_skill_nodamage(src, src, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)));
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
break; break;
default: { default: {

View File

@ -4427,8 +4427,8 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
} }
if ((skill = pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY)) > 0) { if ((skill = pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY)) > 0) {
base_status->smatk += 1 + (skill - 1) * 15 / 10 + ((skill - 1) * 15 % 10 ? 1 : 0); base_status->smatk += skill * 15 / 10;
base_status->patk += 1 + (skill - 1) * 15 / 10 + ((skill - 1) * 15 % 10 ? 1 : 0); base_status->patk += skill * 15 / 10;
} }
// ----- PHYSICAL RESISTANCE CALCULATION ----- // ----- PHYSICAL RESISTANCE CALCULATION -----
@ -12814,8 +12814,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
val2 = 2 * val1; val2 = 2 * val1;
break; break;
case SC_KI_SUL_RAMPAGE: case SC_KI_SUL_RAMPAGE:
val4 = tick / 1000; tick_time = 1000;
tick_time = 100; val4 = tick / tick_time;
break; break;
case SC_BLESSING_OF_M_CREATURES: case SC_BLESSING_OF_M_CREATURES:
val2 = val1 * 10; val2 = val1 * 10;
@ -14978,7 +14978,7 @@ TIMER_FUNC(status_change_timer){
sc_timer_next(500 + tick); sc_timer_next(500 + tick);
return 0; return 0;
case SC_KI_SUL_RAMPAGE: case SC_KI_SUL_RAMPAGE:
if (sce->val4-- > 0) { if (--(sce->val4) >= 0) {
int i = skill_get_splash(SH_KI_SUL_RAMPAGE, sce->val1); int i = skill_get_splash(SH_KI_SUL_RAMPAGE, sce->val1);
int lv = sce->val1; int lv = sce->val1;
if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) {
@ -14986,7 +14986,7 @@ TIMER_FUNC(status_change_timer){
lv += skill_get_max(SH_KI_SUL_RAMPAGE); lv += skill_get_max(SH_KI_SUL_RAMPAGE);
} }
clif_skill_nodamage(bl, bl, SH_KI_SUL_RAMPAGE, lv, 1); clif_skill_nodamage(bl, bl, SH_KI_SUL_RAMPAGE, lv, 1);
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, bl, SH_KI_SUL_RAMPAGE, lv, tick, BCT_PARTY | SD_SPLASH | 1, skill_castend_nodamage_id); map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, bl, SH_KI_SUL_RAMPAGE, lv, tick, BCT_PARTY | 1, skill_castend_nodamage_id);
sc_timer_next(1000 + tick); sc_timer_next(1000 + tick);
return 0; return 0;
} }

View File

@ -1292,41 +1292,7 @@ enum sc_type : int16 {
SC_GROUNDGRAVITY, SC_GROUNDGRAVITY,
SC_BREAKINGLIMIT, SC_BREAKINGLIMIT,
SC_RULEBREAK, SC_RULEBREAK,
// Sky Emperor
SC_RISING_SUN,
SC_NOON_SUN,
SC_SUNSET_SUN,
SC_RISING_MOON,
SC_MIDNIGHT_MOON,
SC_DAWN_MOON,
SC_STAR_BURST,
SC_SKY_ENCHANT,
// Soul Ascetic
SC_TALISMAN_OF_PROTECTION,
SC_TALISMAN_OF_WARRIOR,
SC_TALISMAN_OF_MAGICIAN,
SC_TALISMAN_OF_FIVE_ELEMENTS,
SC_T_FIRST_GOD,
SC_T_SECOND_GOD,
SC_T_THIRD_GOD,
SC_T_FOURTH_GOD,
SC_T_FIFTH_GOD,
SC_HEAVEN_AND_EARTH,
SC_TOTEM_OF_TUTELARY,
// Night Watch
SC_INTENSIVE_AIM,
SC_INTENSIVE_AIM_COUNT,
SC_GRENADE_FRAGMENT_1,
SC_GRENADE_FRAGMENT_2,
SC_GRENADE_FRAGMENT_3,
SC_GRENADE_FRAGMENT_4,
SC_GRENADE_FRAGMENT_5,
SC_GRENADE_FRAGMENT_6,
SC_AUTO_FIRING_LAUNCHER,
SC_HIDDEN_CARD,
SC_PERIOD_RECEIVEITEM_2ND, SC_PERIOD_RECEIVEITEM_2ND,
SC_PERIOD_PLUSEXP_2ND, SC_PERIOD_PLUSEXP_2ND,
@ -1335,12 +1301,6 @@ enum sc_type : int16 {
SC_AGIUP, SC_AGIUP,
SC_PROTECTION, SC_PROTECTION,
// Shinkiro/Shiranui
SC_SHADOW_CLOCK,
SC_SHINKIROU_CALL,
SC_NIGHTMARE,
SC_SBUNSHIN,
// Spirit Handler // Spirit Handler
SC_HOGOGONG, SC_HOGOGONG,
SC_MARINE_FESTIVAL, SC_MARINE_FESTIVAL,