返回教學列表
面板教學

145 經驗計算方式

本篇說明 145 版本中,原廠組隊經驗、自訂組隊經驗,以及隊伍額外加成的差異。

經驗分配會先看 GameSetConstants 內的開關設定。若要走 145 原廠組隊經驗,重點是將 ORIGIN_PARTYEXPORIGIN_PARTYEXTRAEXP 開啟。

原廠組隊分配公式

GameSetConstants.ORIGIN_PARTYEXP = true 時,會先依照攻擊者造成的傷害比例算出基礎經驗份額。

innerBaseExp = baseExp * (該攻擊者傷害 / 隊伍總傷害)

接著依照是否有有效隊員,決定經驗如何分配:

if (有效隊員數 > 1) { if (領經驗的人 == 攻擊者) { exp = innerBaseExp * 0.6 + innerBaseExp * 0.4 * (該角色等級 / 有效隊員總等級) } else { exp = innerBaseExp * 0.4 * (該角色等級 / 有效隊員總等級) } } else { exp = innerBaseExp }

白話來說,攻擊者會固定拿該傷害份額的 60%。

剩下 40% 會依照隊伍內有效成員的等級比例分配。

如果沒有有效隊友,攻擊者會拿完整的 innerBaseExp

原廠組隊額外加成

GameSetConstants.ORIGIN_PARTYEXTRAEXP = true 時,gainExpMonster 內會再依隊伍人數給額外加成。

2 人gain * 10%
3 人gain * 15%
4 人gain * 20%
5 人gain * 25%
6 人gain * 30%
Party_EXP = gain * partyBonusRate

其中 gain 已經先套過伺服器經驗倍率,所以這裡算的是倍率後的額外隊伍加成。

目前程式預設

目前 GameSetConstants 預設值如下:

ORIGIN_PARTYEXP = false ORIGIN_PARTYEXTRAEXP = false

因此如果沒有被設定檔或 server name 覆蓋,實際走的不是原廠公式,而是自訂公式。

自訂公式

自訂公式會先將 innerBaseExp 依有效隊員數切出分母:

expFraction = innerBaseExp / (有效隊員數 + 1)

攻擊者多人時權重為 1.5,單人時權重為 2.0

非攻擊者多人時權重為 0.8,單人時權重為 0.3

接著會用角色等級與隊伍平均等級計算修正值:

levelMod = 該角色等級 / 平均隊伍等級 若 levelMod > 1 或該角色有攻擊過,levelMod = 1 iexp += round(expFraction * expWeight * levelMod)

結論

如果要使用「145 原廠組隊經驗」,請將 ORIGIN_PARTYEXPORIGIN_PARTYEXTRAEXP 都開成 true

公式重點就是攻擊者 60% + 全隊依等級分配 40%,最後再依隊伍人數增加 10% ~ 30% 的額外經驗。