樓主說的應該是正確的, 而且我看我手上貓神的源碼應該也是有實裝才對, 要看你測試的雙方人物是套用下面哪個情境, 以下是貓神原始寫的, 我只是加上了註解
case 87: // 技能編號 87 = 衝擊之暈 (Shock Stun)
// 攻擊者等級加上自身的暈眩等級加成 (例如裝備/技能提供的昏迷等級)
attackLevel += this._pc.getStunLevel();
// 如果目標身上已經有衝擊之暈效果,且系統設定為「不允許疊加」
if (this._targetPc.hasSkillEffect(87) && ConfigOther.SHOCK_STUN_OVERLAY == 0) {
// 只播放暈眩特效 (81162 = 特效編號, 3 = 持續時間秒數)
L1SpawnUtil.spawnEffect(81162, 3, this._targetPc.getX(), this._targetPc.getY(),
this._targetPc.getMapId(), this._targetPc, 0);
}
// GM 使用衝擊之暈,直接命中率 = 100%
else if (this._pc.isGm()) {
probability = 100;
}
// 一般玩家的命中率計算
else {
// 當防禦等級比攻擊等級高出 2 級以上 → 使用最低命中率設定 (IMPACT_HALO_4)
if (defenseLevel - attackLevel >= 2) {
probability = ConfigKnightSkill.IMPACT_HALO_4; // 預設為 10
}
// 當防禦等級比攻擊等級高 1 級 → 使用次低命中率設定 (IMPACT_HALO_3)
else if (attackLevel < defenseLevel) {
probability = ConfigKnightSkill.IMPACT_HALO_3; // 預設為 40
}
// 當攻擊等級 > 防禦等級 → 使用最高命中率設定 (IMPACT_HALO_1)
if (attackLevel > defenseLevel) {
probability = ConfigKnightSkill.IMPACT_HALO_1; // 預設為 60
}
// 當攻擊等級 = 防禦等級 → 使用中等命中率設定 (IMPACT_HALO_2)
else if (attackLevel == defenseLevel) {
probability = ConfigKnightSkill.IMPACT_HALO_2; // 預設為 50
}
// 如果有設定「智力加成係數」(IMPACT_HALO_INT > 0)
// 每 1 點 INT 增加 (係數 * INT) 的命中率,加完後取整數
if (ConfigKnightSkill.IMPACT_HALO_INT > 0.0) {
probability = (int) (probability + ConfigKnightSkill.IMPACT_HALO_INT * this._pc.getInt());
}
// 如果有設定「魔防減免係數」(IMPACT_HALO_MR > 0)
// 每 1 點 MR 減少 (係數 * MR) 的命中率,計算後取整數
if (ConfigKnightSkill.IMPACT_HALO_MR > 0.0) {
probability = (int) (probability - ConfigKnightSkill.IMPACT_HALO_MR * defenseMr);
}
// 再額外加上施法者的原始魔法命中 (通常是職業或裝備固定加成)
probability += this._pc.getOriginalMagicHit();
// 再額外加上施法者的「額外昏迷命中」數值 (裝備/被動技能提供)
probability += this._pc.getaddStunLevel();
}