From 96163623b9d62b594416d4e8039fc1533a78b920 Mon Sep 17 00:00:00 2001 From: Aleos Date: Sun, 11 Apr 2021 01:16:28 -0400 Subject: [PATCH] Fixes monster Sharp Shooting damage formula (#5822) * Fixes #5769. * Adjusts the formula for Sharp Shooting if a monster uses the skill. Thanks to @mrjnumber1 and @Lemongrass3110! --- src/map/battle.cpp | 8 ++++++++ src/map/skill.cpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 1743d5f2ad..7bdb0e504c 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -4117,6 +4117,14 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * #endif break; case SN_SHARPSHOOTING: + if (src->type == BL_MOB) { // TODO: Did these formulas change in the renewal balancing? + if (wd->miscflag & 1) // Splash damage bonus + skillratio += -100 + 140 * skill_lv; + else + skillratio += 100 + 50 * skill_lv; + break; + } + // Fall through case MA_SHARPSHOOTING: #ifdef RENEWAL skillratio += 50 + 200 * skill_lv; diff --git a/src/map/skill.cpp b/src/map/skill.cpp index d9541d108f..c3d8008cb0 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -4933,6 +4933,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case SN_SHARPSHOOTING: + flag |= 1; // Flag for specific mob damage formula case MA_SHARPSHOOTING: case NJ_KAMAITACHI: case NPC_DARKPIERCING: @@ -4947,6 +4948,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (!(map_foreachindir(skill_attack_area, src->m, src->x, src->y, bl->x, bl->y, skill_get_splash(skill_id, skill_lv), skill_get_maxcount(skill_id, skill_lv), 0, splash_target(src), skill_get_type(skill_id), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY))) { + if (skill_id == SN_SHARPSHOOTING) + flag &= ~1; // Only targets in the splash area are affected + //These skills hit at least the target if the AoE doesn't hit skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); }