diff --git a/src/map/battle.cpp b/src/map/battle.cpp index fa569bc749..1aaa187339 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -2956,7 +2956,7 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct 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))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) == 0 || !(sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) return false; break; } @@ -5751,45 +5751,39 @@ 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); + case SH_CHUL_HO_SONIC_CLAW: skillratio += -100 + 850 + 1650 * skill_lv; - skillratio += 50 * tmp_val; + skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); skillratio += 5 * sstatus->pow; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { skillratio += 100 + 400 * skill_lv; - skillratio += 50 * tmp_val; + skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); } RE_LVL_DMOD(100); break; - } - case SH_HOWLING_OF_CHUL_HO: { - int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0); + case SH_HOWLING_OF_CHUL_HO: skillratio += -100 + 600 + 1050 * skill_lv; - skillratio += 50 * tmp_val; + skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); skillratio += 5 * sstatus->pow; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { skillratio += 100 + 100 * skill_lv; - skillratio += 50 * tmp_val; + skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); } RE_LVL_DMOD(100); break; - } - case SH_HOGOGONG_STRIKE: { - int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0); + case SH_HOGOGONG_STRIKE: skillratio += -100 + 180 + 200 * skill_lv; - skillratio += 10 * tmp_val; + skillratio += 10 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); skillratio += 5 * sstatus->pow; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { skillratio += 70 + 150 * skill_lv; - skillratio += 10 * tmp_val; + skillratio += 10 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); } RE_LVL_DMOD(100); break; - } } return skillratio; } @@ -8173,32 +8167,28 @@ 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); + case SH_HYUN_ROKS_BREEZE: skillratio += -100 + 650 + 750 * skill_lv; - skillratio += 20 * tmp_val; + skillratio += 20 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); skillratio += 5 * sstatus->spl; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { skillratio += 100 + 200 * skill_lv; - skillratio += 20 * tmp_val; + skillratio += 20 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); } RE_LVL_DMOD(100); break; - } - case SH_HYUN_ROK_CANNON: { - int tmp_val = (sd ? pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) : 0); + case SH_HYUN_ROK_CANNON: skillratio += -100 + 1050 + 1550 * skill_lv; - skillratio += 50 * tmp_val; + skillratio += 50 * pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY); skillratio += 5 * sstatus->spl; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { skillratio += 300 * skill_lv; - skillratio += 25 * tmp_val; + 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. diff --git a/src/map/pc.cpp b/src/map/pc.cpp index f67cd39eb6..a065399166 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -7145,10 +7145,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 == NULL) + if (sd == nullptr) return 0; + uint16 idx = 0; + #ifdef RENEWAL if ((idx = skill_get_index(skill_id)) == 0) { #else diff --git a/src/map/skill.cpp b/src/map/skill.cpp index d965fb37f1..93187c8545 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -12804,7 +12804,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SH_HOWLING_OF_CHUL_HO: i = skill_get_splash(skill_id, skill_lv); - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) i += 1; skill_area_temp[0] = 0; skill_area_temp[1] = bl->id; @@ -12814,7 +12814,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SH_HOGOGONG_STRIKE: i = skill_get_splash(skill_id, skill_lv); - if( (sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if( pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) status_heal(src, 0, 0, 1, 0); skill_area_temp[0] = 0; skill_area_temp[1] = bl->id; @@ -12825,13 +12825,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SH_KI_SUL_WATER_SPRAYING: if (flag & 1) { int heal = 500 * skill_lv + status_get_int(src) * 5; - if (sd) - heal += pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY)*100; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) - { + 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))) { heal += 250 * skill_lv; - if (sd) - heal += pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) * 50; + heal += pc_checkskill(sd, SH_MYSTICAL_CREATURE_MASTERY) * 50; } heal = heal * (100 + status_get_crt(src)) * status_get_lv(src) / 10000; status_heal(bl, heal, 0, 0, 0); @@ -12839,7 +12837,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else { i = skill_get_splash(skill_id, skill_lv); - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) i += 2; clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); @@ -12850,14 +12848,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SH_SANDY_FESTIVAL_OF_KI_SUL: if (flag & 1) { int time = skill_get_time(skill_id, skill_lv); - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) time *= 2; sc_start(src, bl, type, 100, skill_lv, time); clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); } else { i = skill_get_splash(skill_id, skill_lv); - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) i += 2; 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); @@ -12866,7 +12864,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SH_KI_SUL_RAMPAGE: if (flag & 1) { if (!(src == bl)) { - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (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); else status_heal(bl, 0, 0, 2, 0); @@ -12880,7 +12878,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui 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))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (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)); } @@ -13281,7 +13279,7 @@ TIMER_FUNC(skill_castend_id){ } break; case SH_HYUN_ROK_CANNON: - if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) + if (pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) add_ap += 1; break; } @@ -17914,7 +17912,7 @@ bool skill_check_condition_castbegin(map_session_data* sd, uint16 skill_id, uint return false; break; case SH_TEMPORARY_COMMUNION: - if (sd && !pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) && !pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) && !pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) { + if (sd && pc_checkskill(sd, SH_COMMUNE_WITH_CHUL_HO) == 0 && pc_checkskill(sd, SH_COMMUNE_WITH_HYUN_ROK) == 0 && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) == 0) { clif_skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0); return false; } diff --git a/src/map/status.cpp b/src/map/status.cpp index 8b077e1b34..ca45bb4038 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -14859,7 +14859,7 @@ TIMER_FUNC(status_change_timer){ if (sce->val4-- > 0) { int i = skill_get_splash(SH_KI_SUL_RAMPAGE, sce->val1); int lv = sce->val1; - if ((sd && pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL)) || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { + if (pc_checkskill(sd, SH_COMMUNE_WITH_KI_SUL) > 0 || (sc && sc->getSCE(SC_TEMPORARY_COMMUNION))) { i += 2; lv += skill_get_max(SH_KI_SUL_RAMPAGE); }