From 525930e5058ecb8c90306f5610c34480b3ace9f7 Mon Sep 17 00:00:00 2001 From: Lorenzo Buitizon Date: Mon, 1 Sep 2025 21:29:42 +0800 Subject: [PATCH] Fixed bDoubleRate should stack additively with Double Attack skill per level. Signed-off-by: Lorenzo Buitizon --- src/map/battle.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 0488da2b406..4c51da791f5 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4868,13 +4868,13 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl || (sd->bonus.double_rate > 0 && sd->weapontype1 != W_FIST) //Will fail bare-handed || (sc != NULL && sc->data[SC_KAGEMUSYA] != NULL && sd->weapontype1 != W_FIST) // Need confirmation ) { - // Success chance is not added, the higher one is used [Skotlex] - if (rnd() % 100 < (5 * skill_lv > sd->bonus.double_rate ? 5 * skill_lv : sc != NULL && sc->data[SC_KAGEMUSYA] != NULL ? sc->data[SC_KAGEMUSYA]->val1 * 3 : sd->bonus.double_rate)) - { - wd.div_ = skill->get_num(TF_DOUBLE, skill_lv != 0 ? skill_lv : 1); - wd.type = BDT_MULTIHIT; - hitpercbonus += skill_lv; - } + // Success chance is not added, the higher one is used [Skotlex] + if (rnd() % 100 < min(100, 5 * skill_lv + sd->bonus.double_rate + (sc != NULL && sc->data[SC_KAGEMUSYA] != NULL ? sc->data[SC_KAGEMUSYA]->val1 * 3 : 0))) + { + wd.div_ = skill->get_num(TF_DOUBLE, skill_lv != 0 ? skill_lv : 1); + wd.type = BDT_MULTIHIT; + hitpercbonus += skill_lv; + } } else if (((sd->weapontype1 == W_REVOLVER && (skill_lv = pc->checkskill(sd, GS_CHAINACTION)) > 0) || (sc && sc->count && sc->data[SC_ETERNAL_CHAIN] && (skill_lv = sc->data[SC_ETERNAL_CHAIN]->val1) > 0))