ダメージシステム
これは EliteMobs において体力/ダメージがどのようにスケールするかの包括的な内訳です。ダンジョンを設計する際のリファレンスとして使用してください。
カスタムボスに焦点を当てていますが、通常のエリートも同じようにスケールします。
始める前に!
ちょっとした調整をしたいだけなら、このすべてを読む必要はありません。「このデータをダンジョンに使う」セクションまで飛ばして、非常に簡略化したクイック計算と、一連の既製の推奨設定を確認してください!
スケーリング(全般)
EliteMobs は指数関数的スケーリングシステムを使用しており、レベル差が 5 になるごとに実効的なパワーが倍(または半分)になります。ボスの体力、プレイヤーのダメージ、ボスのダメージはすべて指数関数的にスケールするため、戦闘はあらゆるレベル帯で一貫した感覚になります。レベル 10 のプレイヤーがレベル 15 のボスと戦うのは、レベル 50 のプレイヤーがレベル 55 のボスと戦うのと同じ感覚になります。
プレイヤーのパワーは 50/50 の比率で 2 つのソースから来ます:
- 武器スキルレベル -- 特定の武器タイプ(剣、斧、弓、クロスボウ、トライデント、クワ、メイス、槍)でエリート Mob を倒すことで得られます。
- アイテムレベル -- プレイヤーが装備している武器または防具のエリートレベルです。
プレイヤーには戦闘中に受動的にレベルアップする防具スキルもあります(武器スキルの 1/3 のレートで)。防具スキルレベルはボーナス最大体力(レベル 1 を超えるレベルごとにハート +1)を付与し、ボスのダメージに対するプレイヤーの防御スケーリングを決定します。
武器スキル
EliteMobs 10 では、プレイヤーが戦闘で各武器タイプを使用することで、それぞれを独立してレベルアップさせるスキルシステムが導入されました。エリート Mob を倒すと、持っている武器に対応する武器スキルに XP が付与され、また防具スキルにも低減されたレートで付与されます。
利用可能な武器スキルは次のとおりです:
| Skill | Weapon |
|---|---|
| Swords | すべての剣タイプ |
| Axes | すべての斧タイプ |
| Bows | 弓 |
| Crossbows | クロスボウ |
| Tridents | トライデント |
| Hoes | すべてのクワタイプ |
| Maces | メイス(1.21 以降) |
| Spears | すべての槍タイプ(1.21.11 以降) |
| Armor | すべての防具(受動的にレベルアップ) |
Mob からのスキル XP は mobLevel^2 に等しいため、高レベルの Mob ほど比例して多くの XP を付与します。最大スキルレベルは 100 で、それ以降はソフトキャップにより、それ以上の進行が指数関数的に難しくなります。
スキルボーナス
各武器スキル(および防具スキル)にはスキルボーナスのセットがあります。これはプレイヤーがレベルアップするにつれてアンロックされる特殊能力です。プレイヤーはどのボーナスを有効にするかを選択できます。スキルボーナスには 5 つのタイプがあります:
- Passive -- 装備時に常時アクティブ(例: 固定ダメージ増加)。
- Conditional -- 特定の条件が満たされたときのみアクティブ(例: ターゲットが体力 30% 未満のときにダメージボーナス)。
- Proc -- 特定のイベントで確率ベースで発動(例: 命中時に出血を引き起こす確率)。
- Stacking -- 連続した行動で蓄積される(例: 連続した命中でダメージが増加)。
- Cooldown -- 内部クールダウンを伴う強力な効果(例: 60 秒に 1 回、致命的なダメージを生き延びる)。
武器スキルからの攻撃系スキルボーナスは、ボスに与える基本ダメージの上に加算的ダメージ倍率として適用されます。防具スキルからの防御系スキルボーナスは、さまざまなメカニック(固定軽減、回避、ダメージシールドなど)を通じて、受けるボスのダメージを軽減します。
カスタムボスが与えるダメージ
EliteMobs 10 のボスダメージは、事前補償なしで 3 つの乗算的レイヤーを使用します。このシステムは、適切に装備したプレイヤーが同レベルのコンテンツからおよそ 5 回の命中を生き延びるように設計されています。
カスタムボスのダメージ計算式は次のとおりです:
1. playerMaxHealth = 20 + (armorSkillLevel - 1) * 2
2. baseDamage = playerMaxHealth / 5.0
3. skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
4. gearAdjustment = 2.0 * (1 - gearReduction)
5. scaledDamage = baseDamage * skillAdjustment * gearAdjustment
6. [該当する場合、爆発距離による減衰]
7. potionMultiplier(耐性効果から)
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. finalDamage = min(finalDamage, actualMaxHealth - 1)
3 つのレイヤーは次のとおりです:
- 基本ダメージ -- プレイヤーが 1 回の命中で失うことが想定される HP 量(
playerMaxHealth / 5)。 - スキル調整 -- ボスのレベルとプレイヤーの防具スキルレベルの差からの指数関数的スケーリング。
- 装備調整 -- プレイヤーが装備している防具と防御エンチャントに基づく、ダメージタイプを考慮した軽減(後述の装備防御システムを参照)。
注意: 一撃死を防ぐため、ダメージは(プレイヤーの実際の最大体力 - 1)で上限が設けられています。上限には generic_max_health 属性が使用され、これにはすべての修正値(防具スキルボーナス、ポーション効果など)が含まれます。
playerMaxHealth
プレイヤーの最大体力は防具スキルレベルによって決定されます。基本体力は 20(ハート 10 個)で、防具スキルレベルが 1 を超えるごとに 2 HP(ハート 1 個)が追加されます。防具スキルレベル 50 のプレイヤーは 118 HP(ハート 59 個)になります。
baseDamage
基本ダメージは単純に playerMaxHealth / 5.0 です。これは、適切に装備した同レベルのプレイヤーが 1 回の命中で受けることが想定されるダメージ量です。古いシステムとは異なり、事前補償はありません。基本値は目標ダメージであり、水増しされた生の値ではありません。
skillAdjustment
スキル調整は、ボスとプレイヤーの防具スキルのレベル差を意味のあるものにするために指数関数的スケーリングを使用します:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
レベル差が 7.5 になるごとにボスの実効ダメージが倍(または半分)になります。これは汎用レベル修正値(5 ごとに倍になる)よりもわずかに寛容です。装備調整レイヤーがすでに追加のスケーリングを提供しているためです。
| Level Difference | Skill Adjustment | おおよその倒すまでの命中数(装備一致時) |
|---|---|---|
| 同レベル (0) | 1.0x | 約 5 回 |
| +5 レベル | 約 1.6x | 約 3 回 |
| +10 レベル | 約 2.5x | 約 2 回 |
| +15 レベル | 4.0x | 約 1.25 回 |
装備防御システム
装備防御システムは古い装備ランプを置き換えます。スキルレベルに基づく固定の事前補償倍率を仮定する代わりに、システムはプレイヤーの実際に装備している装備を読み取り、ダメージタイプを考慮した装備軽減を計算します。
ダメージタイプ
システムは受けるダメージを 5 つのカテゴリに分類します。ダメージタイプは、どの防御エンチャントが装備スコアに寄与するかを決定します:
| Damage Type | イベントの原因 | 使用される防御エンチャント |
|---|---|---|
| MELEE | 直接攻撃、スイープ攻撃 | Protection のみ |
| PROJECTILE | 矢、火球 | Protection + Projectile Protection |
| EXPLOSION | クリーパー、ガストの爆発 | Protection + Blast Protection |
| FIRE | 火、延焼ダメージ | Protection + Fire Protection |
| OTHER | その他すべて | Protection のみ |
装備スコア
装備スコアは、防具レベルとエンチャントボーナスを、攻撃してくる Mob のレベルと比較できる単一の値に結合します:
gearScore = (防具4スロットの armorLevel の合計) / 4
+ (全6スロットの enchantBonus の合計) / 4
防具レベルはアイテムごとに決定されます:
- エリートアイテムは保存されたエリートレベル(アイテムが作成されたレベル)を使用します。
- バニラアイテムは素材ベースのルックアップを使用します:
| Material | Armor Level |
|---|---|
| 革 | 1 |
| 金 | 2 |
| チェーン | 3 |
| 鉄 | 4 |
| カメの甲羅 | 4 |
| ダイヤモンド | 5 |
| ネザライト | 7 |
防具レベルに寄与するのは 4 つの防具スロット(ヘルメット、チェストプレート、レギンス、ブーツ)のみです。
エンチャントボーナスは、防御エンチャントレベルを防具レベル相当の単位に変換します:
enchantBonus = (一般 Protection レベル + タイプ別 Protection レベル) * (1/3)
6 つの装備スロットすべて(防具 4 つ + メインハンド + オフハンド)がエンチャントボーナスに寄与します。つまり、Protection エンチャントの付いた盾や武器は追加の防御を提供します。合計に対する /4 の正規化は、6 スロットすべてにエンチャントを付けると、防具 4 つだけに付けるよりも最大 50% 多くのエンチャント寄与が得られることを意味します。
計算例: Lv25 一致装備 + Prot IV vs Lv25(近接)
Player: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 つのエリート防具それぞれ armorLevel=25、それぞれ Protection IV 付き
Mob: level=25, 近接攻撃
ステップ1 -- 防具レベル(1個あたり): 25(エリートアイテム、保存値)
ステップ2 -- エンチャントボーナス(1個あたり): Protection IV = 4 * (1/3) = 1.333
(近接ダメージタイプなので一般 Protection のみ適用)
ステップ3 -- 装備スコア:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333(メインハンド/オフハンドのエンチャントなし), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
ステップ4 -- 装備軽減(一致を超える場合):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533(53.3%)
ステップ5 -- 装備調整: 2.0 * (1 - 0.533) = 0.933
ステップ6 -- 最終ダメージ: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
倒すまでの命中数: 68 / 12.69 = 5.36、約 5.4 回
計算例: Lv1 バニラダイヤ vs Lv5 スケルトン(発射物)
Player: armorSkillLevel=1, maxHP = 20
フルバニラダイヤ防具(エンチャントなし)、メインハンド/オフハンドのエンチャントなし
Mob: level=5, スケルトンの矢(PROJECTILE ダメージタイプ)
ステップ1 -- 防具レベル(1個あたり): 5(ルックアップテーブルのバニラダイヤ)
ステップ2 -- エンチャントボーナス: 0(どの装備にもエンチャントなし)
ステップ3 -- 装備スコア: (5+5+5+5)/4 + 0/4 = 5.0
ステップ4 -- 装備軽減(一致): 0.50 * (5/5) = 0.50(50%)
ステップ5 -- 装備調整: 2.0 * (1 - 0.50) = 1.0
ステップ6 -- 最終ダメージ: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
倒すまでの命中数: 20 / 5.79 = 3.45、約 3.5 回
ダイヤ防具にも Projectile Protection IV が付いていれば、各装備は 4 * (1/3) = 1.333 のエンチャントボーナスを得ます。装備スコアは 5.0 + (1.333*4)/4 = 6.333 に上昇し、軽減が 53.3% に増加して、矢に対する生存性が顕著に向上します。
装備軽減カーブ
装備軽減は、装備スコアが Mob レベルと等しくなる点で遷移する2 部構成の線形カーブを使用します:
一致以下(gearScore が mobLevel 以下の場合):
reduction = 0.50 * (gearScore / mobLevel)
0%(裸)から 50%(一致)まで線形にスケールします。傾きは Mob レベルに依存します。レベル 5 の Mob に対しては装備レベルごとに 10% の軽減が得られ、レベル 50 の Mob に対しては 1% です。これにより、低レベルのバニラ防具は低レベルの Mob には自然に有効ですが、高レベルの Mob には無関係になります。
一致以上(gearScore が mobLevel より大きい場合):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
Mob を超える装備レベルごとに一律 2.5%。Mob を +10 装備レベル超えると 75% のハードキャップに達します。
装備調整は軽減をダメージ倍率に変換します:
gearAdjustment = 2.0 * (1 - gearReduction)
| Gear Situation | Gear Reduction | Gear Adjustment | 倒すまでの命中数(同スキルレベル) |
|---|---|---|---|
| 裸(装備なし) | 0% | 2.0 | 約 2.5 |
| 半分一致の装備 | 25% | 1.5 | 約 3.3 |
| 一致装備(gearScore = mobLevel) | 50% | 1.0 | 約 5.0 |
| Mob を +4 レベル超過 | 60% | 0.8 | 約 6.25 |
| Mob を +10 レベル超過(上限) | 75% | 0.5 | 約 10.0 |
シナリオ表
次の表は、さまざまなシナリオにわたる予想される戦闘結果を示しています:
| Scenario | Skill Adj | Gear Red | Gear Adj | Hits |
|---|---|---|---|---|
| Lv1 裸 vs Lv1 | 1.0 | 0% | 2.0 | 2.5 |
| Lv1 裸 vs Lv5 | 1.45 | 0% | 2.0 | 約 1.7 |
| Lv1 バニラダイヤ vs Lv5 | 1.45 | 50% | 1.0 | 約 3.5 |
| Lv25 一致 vs Lv25 | 1.0 | 50% | 1.0 | 5.0 |
| Lv25 一致+ProtIV vs Lv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Lv25 一致 vs Lv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Lv25 最高装備 vs Lv25 | 1.0 | 75% | 0.50 | 10.0 |
| Lv50 一致 vs Lv50 | 1.0 | 50% | 1.0 | 5.0 |
主要な設計目標:
- 一致レベルで 5 回の命中 -- 中核となるバランス目標。適切に装備したプレイヤーは、あらゆるレベルで、同レベルのエリート Mob の通常攻撃をちょうど 5 回生き延びます。
- 裸で 2.5 回の命中 -- 装備なしは 2.0 の装備調整を通じてダメージが倍になることを意味します。何らかの防具を装備する即座のインセンティブになります。
- バニラ防具が重要 -- ダイヤ防具を着たレベル 1 のプレイヤーは、レベル 5 の Mob から、裸の約 1.7 回ではなく約 3.5 回生き延びます。
- エンチャントは意味があるが支配的ではない -- 4 つの防具すべてに Protection IV を付けると装備スコアに約 1.33 が追加され、軽減が 50% から 53.3% に押し上げられます。顕著ですが(生存性が約 8% 向上)、ゲームを壊すほどではありません。
- レベル一貫性 -- レベル 25 とレベル 50 の一致戦闘は、どちらもちょうど 5 回の命中になります。
- 最高装備で 10 回の上限 -- 可能な限り最高の装備(Mob を +10 レベル超過)でも、プレイヤーは依然として意味のあるダメージを受けます。
potionMultiplier(防御)
耐性ポーション効果は、効果レベルに基づいて受けるダメージを軽減します:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
設定キーは MobCombatSettings.yml の resistanceDamageMultiplierV2 です(デフォルト: 0.2)。これはバニラの動作に一致します: 耐性 I = 20% 軽減、耐性 V = 100% 軽減(無敵)。
customBossDamageMultiplier
これはカスタムボスファイル内のダメージ倍率です。デフォルトは 1 です。
configMultiplier(防御)
これは MobCombatSettings.yml 内の倍率です。正規化戦闘では normalizedDamageToPlayerMultiplier(デフォルト 1.0)を使用します。スケール戦闘では scaledDamageToPlayerMultiplier(デフォルト 1.0)を使用します。標準 Mob では damageToPlayerMultiplierV2(デフォルト 1.0)を使用します。
specialMultiplier
これはボスのパワーによって適用される一時的なダメージ倍率です。一部のボス能力は、パワーの持続時間中ボスのダメージを増加させます。パワーがアクティブでないときはデフォルトで 1.0 です。
爆発ダメージの減衰
クリーパーの爆発やその他の爆風ダメージ(ガストの火球)は、爆発の中心からの距離に基づいて軽減されます。ダメージ倍率は爆風からの距離とともに線形に減少し、爆発を遠距離ではより致命的でないものにします。
カスタムボスの最大体力
EliteMobs 10 のボス体力は、線形スケーリングではなく指数関数的スケーリングを使用します。5 レベルごとに、ボスの体力はちょうど倍になります。これにより、絶対的なレベルに関係なく、レベル差が一貫した感覚になります。
カスタムボスの体力計算式は次のとおりです:
health = 2.1875 * 2^(bossLevel / 5) * customBossHealthMultiplier
指数関数的スケーリング
基本定数(2.1875)は、レベル 25 のボスがおよそ 70 HP になるように調整されています。体力値の例:
| Boss Level | Health | +5 Levels Health |
|---|---|---|
| 1 | 約 2.5 | 約 5 (2x) |
| 5 | 約 4.4 | 約 8.75 (2x) |
| 10 | 約 8.75 | 約 17.5 (2x) |
| 25 | 約 70 | 約 140 (2x) |
| 50 | 約 2,240 | 約 4,480 (2x) |
| 100 | 約 2,293,760 | 約 4,587,520 (2x) |
customBossHealthMultiplier
これはカスタムボスファイル内の倍率です。デフォルトは 1 です。
カスタムボスに与えるダメージ
プレイヤーのダメージは、レベルをまたいで戦闘を一貫させつつ、異なる武器ファミリーが異なる感覚になるようにするため、指数関数的および線形スケーリングの乗算的レイヤーを使用します。この計算式は、プレイヤーのパワーを 2 つの独立した軸 -- 武器スキルレベル(指数関数的なスキル調整)と武器アイテムレベル(線形の武器調整) -- に分離するため、スキルへの投資と装備の両方が戦闘力に寄与します。
古いバージョンからの重要な変更点は、近接武器の速度が、すべての武器タイプを理論上同一の DPS にしようとしなくなったことです。剣は基準点のままですが、斧、メイス、近接トライデントは抑制されたバースト補償を受けます。クワや槍のように、すでに良好にテストされた武器ファミリーは、レガシーの攻撃速度係数を維持します。
ダメージ計算式
プレイヤーからエリートへの完全なダメージ計算式は次のとおりです:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = max(formulaDamage, 1) * damageModifier * combatMultiplier * critMultiplier
各コンポーネントを以下で説明します。
baseDamage
1 回の命中あたりの基本ダメージは、Mob の正規化 HP(healthMultiplier=1.0 のとき)を、目標とする倒すまでの命中数で割って導出されます:
baseDamage = normalizedMobHP / 3.0
ここで normalizedMobHP = 2.1875 * 2^(mobLevel / 5) です(上記の「カスタムボスの最大体力」セクションを参照)。定数 3.0(TARGET_HITS_TO_KILL_MOB)は、一致したプレイヤーがあらゆるレベルで標準的なエリートをちょうど剣 3 回の命中で倒すことを意味します。
注意: カスタムボスファイルの healthMultiplier は実際の Mob HP を乗算しますが、baseDamage には影響しません。healthMultiplier: 2.0 のボスは HP が倍になり、3 回ではなく 6 回の命中で倒されます。
attackSpeedFactor
これは近接攻撃速度のペーシングレイヤーです。古いレガシー係数から始まります:
legacyFactor = 1.6 / actualAttackSpeed
基準速度 1.6 は剣の攻撃速度です。最終的な係数は武器ファミリーに依存します:
剣、クワ、槍、不明な近接、弓/クロスボウの近接:
attackSpeedFactor = legacyFactor
斧、メイス、近接トライデント:
attackSpeedFactor = sqrt(legacyFactor)
遠隔の発射物攻撃:
attackSpeedFactor = 1.0
つまり、システムはすべての近接武器を同一の DPS にしようとはしていません。遅いバースト武器は依然として 1 振りあたり強く命中しますが、斧、メイス、近接トライデントはもはや完全な 1.6 / speed のバースト倍率を受けません。クワと槍は、プレイテストでそのペーシングがすでに許容範囲であることが示されたため、意図的に古い係数のままです。
スキルと武器レベルが一致した場合の例:
| Weapon Type | 攻撃速度の例 | Factor | healthMultiplier: 1.0 に対する計算式上の命中数 |
|---|---|---|---|
| 剣 | 1.6 | 1.00x | 3.0 |
| 斧 | 1.0 | 1.26x | 約 2.4 |
| メイス | 0.6 | 1.63x | 約 1.8 |
| クワ | 4.0 | 0.40x | 7.5 |
| トライデント(近接) | 1.1 | 1.21x | 約 2.5 |
| 槍(ダイヤの例) | 約 0.95 | 約 1.68x | 約 1.8 |
| 弓/クロスボウの発射物 | 該当なし | 1.00x | 発射物の速度がチャージを決定 |
弓、クロスボウ、投擲トライデントを含む発射物攻撃では、近接攻撃速度係数は適用されません。発射物のチャージ/強さは代わりに cooldownOrVelocity で表されます。
注意: 近接で使用される遠隔専用武器(弓、クロスボウ)は素手の打撃として扱われます。武器レベル 0 でスキルレベル 1、デフォルトの攻撃速度は 4.0(拳の速度)です。これにより近接では非常に弱くなり、プレイヤーが遠距離で使用するよう促されます。
skillAdjustment
プレイヤーの武器スキルレベルと Mob のレベルの差からの指数関数的スケーリングです:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
レベル差が 7.5 になるごとにプレイヤーのダメージが倍(または半分)になります。これはボスからプレイヤーへのダメージで使用される防御スキルスケーリングレートと一致し、対称的な戦闘を生み出します。
| Skill Difference | Skill Adjustment | Effect |
|---|---|---|
| -15 | 0.25x | ダメージ 1/4 |
| -7.5 | 0.50x | ダメージ半分 |
| 0(一致) | 1.0x | 基準 |
| +7.5 | 2.0x | ダメージ倍 |
| +15 | 4.0x | ダメージ 4 倍 |
ボス HP スケーリングに使用される汎用レベル修正値(クランプされる)とは異なり、攻撃スキル調整は現在のコードではクランプされません。実際には、非常に大きなレベル差(±22 レベルを超える)は極端な値を生み出す可能性がありますが、武器スキルは 100 で上限に達するため、通常のゲームプレイではこれは起こりにくいです。
weaponAdjustment
武器のアイテムレベル対 Mob のレベルに基づく2 部構成の線形カーブです。これは装備防御システムの防御装備軽減カーブを反映します。
weaponAdjustment = 0.5 + bonus
一致以下(weaponLevel が mobLevel 以下の場合):
bonus = 0.50 * (weaponLevel / mobLevel)
0(武器なし)から 0.50(一致)まで線形にスケールします。武器を装備していない場合、調整は 0.50(ダメージ半分)です。
一致以上(weaponLevel が mobLevel より大きい場合):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
Mob を超える武器レベルごとに一律 2.5%、ボーナス 0.75 で上限。上限に達するには Mob を +10 武器レベル超える必要があります。
| Weapon Scenario | Bonus | Weapon Adj | 命中数への影響 |
|---|---|---|---|
| 素手(武器なし) | 0.00 | 0.50 | 6 回(2 倍遅い) |
| 半分レベルの武器 | 0.25 | 0.75 | 4 回 |
| 一致武器(weaponLevel = mobLevel) | 0.50 | 1.00 | 3 回(基準) |
| Mob を +4 レベル超過 | 0.60 | 1.10 | 約 2.7 回 |
| Mob を +10 レベル超過(上限) | 0.75 | 1.25 | 約 2.4 回 |
cooldownOrVelocity
近接武器の場合、これは Minecraft の攻撃クールダウン倍率(0.0 〜 1.0)です。クールダウンがリセットされる前に攻撃すると、すべての計算式ダメージが比例して軽減されます。フルチャージでは cooldown = 1.0 です。
遠隔/発射物攻撃(弓、クロスボウ、投擲トライデント、スキルでスポーンした矢)の場合、これは正規化された発射速度です。フルドローの弓の速度はおよそ 3.0 です。値は min(velocity / 3.0, 1.0) に正規化され、[0, 1] の範囲にクランプされます。
sweepMultiplier
剣のスイープが ENTITY_SWEEP_ATTACK を通じて副次的なターゲットに命中すると、それらのターゲットは主たる命中ダメージの 25% を受けます:
sweepMultiplier = 0.25 (副次的なスイープターゲット)
sweepMultiplier = 1.0 (主たるターゲット)
potionMultiplier(攻撃)
力と弱化のポーション効果は、プレイヤーが与えるダメージを変更します:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
ここで strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier、weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier です。両方の設定値はデフォルトで 0.2 で、バニラの動作に一致します(力 I = +20% ダメージ、弱化 I = -20% ダメージ)。力と弱化が同レベルの場合、ちょうど相殺されます。倍率の下限は 0 です。
MobCombatSettings.yml の設定キーは次のとおりです:
| Key | Default | Description |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | 力レベルごとのボーナスダメージ |
weaknessDamageMultiplierV2 | 0.2 | 弱化レベルごとのダメージペナルティ |
enchantmentMultiplier
聖なる力(Smite)と虫殺し(Bane of Arthropods)エンチャントは、それぞれの Mob タイプに対して小さなダメージボーナスを提供しますが、これは ItemSettings.yml で useEliteEnchantments が無効になっているときのみです。エリートエンチャントが有効な場合、この倍率は常に 1.0 です。
バニラ最大値を超えるエンチャントレベル(エリート専用レベル)のみがカウントされます:
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
各エリート専用エンチャントレベルは 2.5% のダメージボーナスを提供します。たとえば、エリート武器の Smite VIII(バニラ最大は V)は 3 つのエリートレベルに寄与します: 1.0 + 3 * 0.025 = 1.075(アンデッドに対して 7.5% ボーナス)。
arrowDamageMultiplier
武器スキル能力(Multishot、Arrow Rain など)によってスポーンされた矢は、発射物のデータコンテナに保存されたダメージ倍率を持ちます。これにより、スキルで生成された矢は標準的な矢の命中と比べて低減されたダメージを与えられます。通常のプレイヤーが放った矢の場合、この倍率は 1.0 です。
Thorns ダメージ
Thorns ダメージは、標準的な攻撃計算式ではなく、Mob の基本ダメージに基づく別の計算式を使用します。エリート専用の Thorns レベル(バニラ最大の III を超えるレベル)のみがカウントされます:
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel(防具1個あたり、4個すべてで合計)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
バニラ最大を超えるエリート Thorns レベルごとに、基本ダメージの 2% が寄与します。バニラの Thorns III はエリート Thorns ダメージを発動しません。たとえば、4 つの防具すべてに Thorns V(それぞれエリートレベル 2)が付いている場合、合計エリート Thorns レベルは 8 です: baseDamage * 8 * 0.02 = 16%(発動ごとに Mob の基本ダメージの 16%)。
damageModifier
カスタムボスファイル(damageModifiers)からのボス固有の武器タイプダメージ修正値です。これにより、ボスが特定の武器素材から受けるダメージを増減できます(例: 剣に耐性があるが斧に弱いボス)。明示的に設定されていないすべての武器タイプではデフォルトで 1.0 です。
combatMultiplier
MobCombatSettings.yml(戦闘モードに応じて scaledDamageToEliteMultiplier、normalizedDamageToEliteMultiplier、または damageToEliteMobMultiplierV2)からのグローバル倍率です。デフォルトは 1.0 です。
critMultiplier
クリティカルヒットは最終ダメージを 1.5 倍します。クリティカル確率はプレイヤーのエリート装備のクリティカル確率ステータスによって決定されます。
修正値のクランプ
汎用レベル修正値(ボス HP スケーリングと標準戦闘に使用)は、非常に大きなレベル差での極端な値を防ぐため、MIN_MODIFIER = 0.125 と MAX_MODIFIER = 8.0 の間にクランプされます。これらの上限はおよそ ±15 のレベル差で達します。
しかし、プレイヤーからエリート、エリートからプレイヤーへのダメージ計算式で使用される攻撃および防御スキル調整(calculateOffensiveSkillAdjustment および eliteToPlayerDamageFormula 内のスキル調整)は、現在のコードではクランプされません。実際には、スキルレベルは最大スキルレベル(100)によって制限されており、これがこれらの値の範囲を自然に制限します。
計算例
例 1: Lv25 一致の剣 vs Lv25 エリート(近接)
Player: weaponSkillLevel=25, weapon=エリート剣 (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
ステップ1 -- 基本ダメージ: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
ステップ2 -- 攻撃速度係数: 剣の速度=1.6, factor = 1.6/1.6 = 1.0
ステップ3 -- スキル調整: 2^((25-25)/7.5) = 2^0 = 1.0
ステップ4 -- 武器調整: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
ステップ5 -- クールダウン: フルチャージ = 1.0
ステップ6 -- スイープ: 主たるターゲット = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
Mob HP = 70.0 -> 倒すまでの命中数 = 70.0 / 23.33 = 3.0
例 2: Lv25 斧 vs Lv25 エリート(抑制されたバースト補償)
Player: weaponSkillLevel=25, weapon=エリート斧 (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
ステップ1 -- 基本ダメージ: 23.33(上記と同じ)
ステップ2 -- レガシー攻撃速度係数: 1.6/1.0 = 1.6
ステップ3 -- 斧のバースト抑制: sqrt(1.6) = 1.265
ステップ4 -- スキル調整: 1.0(一致)
ステップ5 -- 武器調整: 1.0(一致)
ステップ6 -- クールダウン: フルチャージ = 1.0
formulaDamage = 23.33 * 1.265 * 1.0 * 1.0 * 1.0 = 29.52
倒すまでの命中数 = 70.0 / 29.52 = 2.37
例 3: Lv25 クワ vs Lv25 エリート(レガシーの高速武器係数)
Player: weaponSkillLevel=25, weapon=エリートクワ (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
ステップ1 -- 基本ダメージ: 23.33(上記と同じ)
ステップ2 -- 攻撃速度係数: クワの速度=4.0, factor = 1.6/4.0 = 0.4
ステップ3 -- スキル調整: 1.0(一致)
ステップ4 -- 武器調整: 1.0(一致)
ステップ5 -- クールダウン: フルチャージ = 1.0
formulaDamage = 23.33 * 0.4 * 1.0 * 1.0 * 1.0 = 9.33
倒すまでの命中数 = 70.0 / 9.33 = 7.5
例 4: Lv20 弓 vs Lv25 エリート(healthMultiplier=2.0、遠隔、レベル不足)
Player: weaponSkillLevel=20, weapon=エリート弓 (itemLevel=20)
Mob: level=25, healthMultiplier=2.0, 実際の HP = 70.0 * 2 = 140.0
ステップ1 -- 基本ダメージ: 23.33(正規化 HP から、実際の HP ではない)
ステップ2 -- 攻撃速度係数: 遠隔, 該当なし = 1.0
ステップ3 -- スキル調整: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
ステップ4 -- 武器調整: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
ステップ5 -- 矢の速度: フルドロー = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
倒すまでの命中数 = 140.0 / 13.23 = 10.6 回
(スキルと武器の両方がレベル不足で、healthMultiplier=2.0 の Mob と戦っている)
DamageBreakdown デバッグツール
EliteMobs には、ダメージ計算式のすべてのコンポーネントをリアルタイムで追跡・表示する組み込みの DamageBreakdown デバッグツールが含まれています。プレイヤーに対して有効にすると、各レイヤー(基本ダメージ、攻撃速度係数、スキル調整、武器調整、クールダウン、スイープ、Thorns など)を記録し、次のものを出力できます:
- すべてのレベル、計算式コンポーネント、倍率、最終的に計算されたダメージを表示する完全な整形済み内訳。
- ゲーム内ですばやく参照するためのコンパクトな 1 行の要約。
- 10% を超える不一致をフラグ付けする予想対実際の比較。プラグインの競合や誤設定のボスファイルを診断するのに便利です。
これは主に開発およびテスト用のツールです。サーバー管理者はこれを使って、特定の遭遇で戦闘が意図どおりに機能していることを確認できます。
スキル XP の進行
武器スキルと防具スキルは、エリート Mob を倒して XP を得ることでレベルアップします。XP システムは 3 次のレベル要件を使用して、レベル 100 を超えるソフトキャップを伴う滑らかな進行を生み出します。
討伐からの XP: Mob から得られる XP は mobLevel^2 に等しいです。高レベルの Mob ほど比例して多くの XP を付与します。
次のレベルまでの XP:
レベル 1 から 100 まで:
xpToNextLevel = 8.5 * L^3
レベル 100 を超える場合(ソフトキャップ):
xpToNextLevel = 8.5 * L^3 * (1 + ((L - 100)^2 / 100))
ソフトキャップ倍率はレベル 100 で連続的であり(倍率 = 1.0)、それを超えると 2 次的に増加します。レベル 150 では倍率はおよそ 26 倍になり、それ以上の進行はほぼ不可能になります。最大スキルレベルは実用上 100 ですが、システムは指数関数的に増加するコストでそれを超える進行を許可します。
追加の戦闘メカニック
一撃死の防止
EliteMobs は、ボスがプレイヤーを 1 回の命中で即座に倒すのを防ぎます。ダメージ計算の結果にかかわらず、ダメージは(プレイヤーの generic_max_health 属性 - 1)で上限が設けられ、プレイヤーが常に少なくとも 1 体力ポイントで生き延びることを保証します。上限は現在の HP ではなく generic_max_health 属性を使用するため、すべての最大体力修正値(防具スキルボーナス、ポーション効果など)が考慮されます。
盾によるブロック
プレイヤーが盾でブロックすると、受けるダメージが 80% 軽減されます(MobCombatSettings で blockingDamageReduction として設定)。ブロックは遠隔の発射物攻撃を完全に無効化します(発射物が削除されます)。
防具スキルの体力ボーナス
プレイヤーは防具スキルレベルに基づいてボーナス最大体力を得ます。1 を超えるレベルごとに +2 HP(ハート +1)が付与されます。これは属性修正値として適用され、プレイヤーが高レベルで生存性を高める主な方法です。
レベルスケーリングの要約
次の表は、レベル差が双方向で戦闘にどのように影響するかをまとめたものです:
| Level Difference | Boss HP Modifier | Boss Damage Modifier | Difficulty |
|---|---|---|---|
| -10(プレイヤーがオーバーレベル) | HP 0.25x | ダメージ 約 0.4x | 自明 |
| -5(プレイヤーがオーバーレベル) | HP 0.5x | ダメージ 約 0.6x | 非常に簡単 |
| 0(同レベル) | HP 1.0x | ダメージ 1.0x | バランス |
| +5(プレイヤーがレベル不足) | HP 2.0x | ダメージ 約 1.6x | 歯ごたえあり |
| +10(プレイヤーがレベル不足) | HP 4.0x | ダメージ 約 2.5x | 非常に困難 |
スケール戦闘
スケール戦闘は、地上の自然エリート Mob とイベントボス向けに設計された代替戦闘モードです。ボスがプレイヤーと同じレベルであるかのようにシミュレートさせるため、装備とスキルは依然として重要ですが、Mob の表示レベルは重要ではなくなります。その結果、進行レベルに関係なくすべてのプレイヤーが、同じ地上の Mob に対して等しく公平な戦いに直面します。
スケール戦闘と正規化戦闘の違い
EliteMobs には 3 つの戦闘モードがあります:
| Mode | Used For | レベルは重要? | Config Key |
|---|---|---|---|
| 標準 | 特別なフラグのない基本 Mob | はい -- ダメージと体力は Mob の実際のレベルでスケールします | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| 正規化 | ダンジョンおよびリージョナルボス(normalizedCombat: true) | はい -- ただしボスは、一貫したダンジョンバランス調整のために別の正規化ベースラインを使用します | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| スケール | 自然な地上エリートとイベントボス(scaledCombat: true またはグローバル設定) | いいえ -- ボスはプレイヤーのレベルでシミュレートされます | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
重要な違い: 正規化戦闘では、レベル 50 のボスはレベル 10 のボスより難しいです。スケール戦闘では、システムがボスをプレイヤーと同じレベルであるかのように装うため、どちらも同レベルの戦いのように感じられます。
仕組み
ダメージ(ボスからプレイヤー)
スケール戦闘のボスがプレイヤーにダメージを与えるとき、ダメージ計算式はボスのレベルをプレイヤーの防具スキルレベルに等しく設定します:
mobLevel = armorSkillLevel (ボスの実際のレベルの代わりに)
つまり、スキル調整は 1.0 になり(bossLevel - armorSkillLevel = 0 であるため)、ダメージは完全にプレイヤーの装備と防具スキルに依存し、Mob の保存されたレベルには依存しません。残りの計算式(基本ダメージ、装備調整、ポーションなど)は、上記のセクションで説明したものとまったく同じように機能します。
ダメージ(プレイヤーからボス)
プレイヤーがスケール戦闘のボスを攻撃するとき、計算式は次のことを行います:
- ボスをプレイヤーの武器スキルレベルでシミュレート -- Mob を一時的にプレイヤーの武器スキルと同じレベルであるかのように扱います。
- そのシミュレートされたレベルに対して標準のダメージ計算式を実行 -- 「同レベルの Mob に対するダメージ」の結果を生み出します。
- ボスの実際の HP に再スケール -- 計算式ダメージを、シミュレートされた Mob の HP の割合から、ボスの実際の HP プールの同じ割合に変換します。
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, simulatedMobLevel のエリートエンティティ)
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
つまり、適切に装備したプレイヤーは、ボスがどのレベルとして保存されているかに関係なく、常に同じ武器相対的な命中数でスケール戦闘のボスを倒します。healthMultiplier: 1.0 では、基準はおよそ剣 3 回の命中です。ほかの武器ファミリーは上記の攻撃速度係数に従います。
ルートと報酬
スケール戦闘の Mob では、ルート報酬は Mob のレベルではなくプレイヤーの戦闘レベルに基づきます。つまり、高レベルのプレイヤーがスケールされた地上エリートを倒すと、その進行に適したルートを受け取り、低レベルのプレイヤーが同じ Mob を倒すと、適切に低レベルのルートを受け取ります。
レベル表示
スケール戦闘のエンティティは、実際のレベルがプレイヤーにとって無関係であるため、ネームプレートに数値レベルの代わりにシンボルを表示します:
- 標準のスケールエンティティ(healthMultiplier 1.0 以下): 剣のシンボルを表示(デフォルト:
「⚔」) - 高脅威のスケールエンティティ(healthMultiplier 1.0 超): ドクロのシンボルを表示(デフォルト:
☠)
これらのシンボルは MobCombatSettings.yml で scaledStandardLevelSymbol と scaledHighThreatLevelSymbol を通じてカスタマイズできます。
スケール戦闘の有効化
すべての自然エリート向け(グローバル設定)
MobCombatSettings.yml で:
useScaledCombatForNaturalElites: true
これは EliteMobs 10 ではデフォルトで有効です。有効にすると、地上で自然にスポーンしたすべてのエリート Mob が自動的にスケール戦闘を使用します。normalizedCombat を使用するダンジョンボスはこの設定の影響を受けません。
個々のカスタムボス向け
カスタムボス設定ファイルで:
scaledCombat: true
これは、グローバル設定に関係なく、特定のカスタムボスにスケール戦闘の使用を強制します。すべてのプレイヤーにとって等しく公平に感じられるべきイベントボスやカスタムの地上遭遇に便利です。
注意: ボスに normalizedCombat: true が設定されている場合(またはグローバルに正規化が有効なリージョナル/インスタンスボスの場合)、正規化戦闘が優先され、ボスはスケール戦闘を使用しません -- ただし、ボスファイルで scaledCombat: true が明示的に設定されている場合は、スケール戦闘が優先されます。
設定キー
次の MobCombatSettings.yml のキーがスケール戦闘の動作を制御します:
| Key | Default | Description |
|---|---|---|
useScaledCombatForNaturalElites | true | 自然にスポーンしたすべてのエリートに対してスケール戦闘を有効化 |
scaledDamageToEliteMultiplier | 1.0 | スケール戦闘のボスへのプレイヤーダメージのグローバル倍率 |
scaledDamageToPlayerMultiplier | 1.0 | スケール戦闘のボスからプレイヤーへのダメージのグローバル倍率 |
scaledStandardLevelSymbol | 「⚔」 | 標準のスケールエンティティのネームプレートに表示されるシンボル |
scaledHighThreatLevelSymbol | ☠ | healthMultiplier 1.0 超のスケールエンティティに表示されるシンボル |
useRecommendedHealthScaling | true | 自然エリートに EliteMobs 10 の指数関数的体力スケーリングを使用(false = レガシーの線形値、後述) |
各戦闘モードをいつ使うか
- 正規化戦闘(
normalizedCombat: true): 難易度を正確に制御したいダンジョン、インスタンス、リージョナルボス向け。ボスは固定レベルを持ち、プレイヤーがそれに合わせることが想定されます。 - スケール戦闘(
scaledCombat: trueまたはグローバル設定): 地上コンテンツ、イベントボス、およびすべてのレベルのプレイヤーが同じ体験をするべき遭遇向け。 - 標準戦闘(どちらのフラグもなし): スポーン地点近くの距離スケールエリートのように、生のレベルが難易度を直接決定するべき Mob 向け。
レガシー体力スケーリング(useRecommendedHealthScaling: false)
MobCombatSettings.yml で useRecommendedHealthScaling が false に設定されている場合、自然エリート Mob(ダンジョンやリージョナルボスではない)は指数関数的スケーリングの代わりに簡略化されたレガシー計算式を使用します:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
これは、EliteMobs 9 の動作に近い、はるかに小さい HP とダメージの数値を生み出します。この設定は、古い EliteMobs の戦闘数値を中心に統合を構築したサーバーとの後方互換性のために存在します。プレイヤーの進行が平坦に感じられるようになるため、推奨されません。この設定は正規化リージョナルボス戦闘には影響しません。
このデータをダンジョンに使う
注意: これは normalizedCombat の値を使用していることを前提としています! それらの値は、ダンジョンをより簡単にバランス調整するために特別に作られました。
ボスの難易度の一部は、その遭遇に適した体力とダメージを持たせることです。しかし、これはその一部にすぎず、パワーも同じくらい重要であることを覚えておいてください。
以下はカスタムボスファイル向けの正しい形式で提示されています。
簡単なクイック計算
指数関数的スケーリングシステムでは、healthMultiplier と damageMultiplier は基本値を直接スケールします:
-
healthMultiplierが 1.0 の場合、ボスは同レベルのプレイヤーによっておよそ剣 3 回の命中で倒されます。ほかの近接武器は攻撃速度係数によって変動します。斧、メイス、近接トライデントのような抑制されたバースト武器は剣より少ない命中数で倒し、クワはレガシーの高速武器係数を維持するためより多くの命中数がかかります。倍率 2.0 は体力を倍にし、0.5 は半分にする、といった具合です。 -
damageMultiplierが 1.0 の場合、ボスは適切に装備した同レベルのプレイヤーをおよそ5 回の命中で倒します。倍率が高いほどボスはより致命的になり、低いほど安全になります。
スケーリングが指数関数的であるため、これらの武器相対的な命中数はボスのレベルに関係なく一貫しています。healthMultiplier: 2.0 のレベル 10 のボスは、同レベルのプレイヤーと戦った場合、healthMultiplier: 2.0 のレベル 80 のボスと同じ剣相対的な命中数がかかります。
プレイヤーは武器を優先する傾向があり、しばしば武器よりもはるかに劣った防具になりがちであることを覚えておいてください。遠距離戦闘の非常に特定のタイプのアリーナを設計するのでない限り、おそらく 1 回の命中で大きなダメージを与えたくはないでしょう。 コンテンツをプレイテストしてください!
平均的なダンジョン Mob を作る
normalizedCombat のスケーリングでは、非常にミニマルな設定を適用できます:
normalizedCombat: true
healthMultiplier: 1.0 #剣で約3回で討伐
damageMultiplier: 1.0 #約5回生き延びる
注意: 1.0 がデフォルトなので、これは何も定義しなくてもよいことを意味します。
ザコ群を作る
ザコ群は数は多いがあまり危険ではありません:
normalizedCombat: true
healthMultiplier: 0.7 #剣で約2回で討伐
damageMultiplier: 0.5 #約10回生き延びる
援軍を作る
援軍は非常に簡単に死ぬべきですが、ダメージ的に危険を及ぼします(これらの値は 4 体以上の近接エンティティに推奨されますが、実際の使用は異なる場合があります):
normalizedCombat: true
healthMultiplier: 0.25 #剣で約1回で討伐
damageMultiplier: 0.6 #約8回生き延びる
ミニボスを作る
ミニボスは持ちこたえ、プレイヤーにメカニックの挑戦を突きつけるべきです。しばらく続くスキルの試練であるべきですが、極めて致命的なものではありません:
normalizedCombat: true
healthMultiplier: 3.0 #剣で約10回で討伐
damageMultiplier: 1.2 #約4回生き延びる
ボスを作る
ボスは本物の挑戦であり、ダンジョンでの盛り上がりの結末であり、すべてを懸けた本物のスキルの試練です。遭遇は長く、死は常に存在する脅威であるべきです。
normalizedCombat: true
healthMultiplier: 7.0 #剣で約23回で討伐
damageMultiplier: 1.4 #約3.5回生き延びる
ワールドボスを作る
ワールドボスは危険ですが、何よりも大量の体力を持ち、多くの援軍を召喚する/多くの範囲攻撃を持ちます。これらは、エリート遭遇が続くべき最も長い時間にわたって、大人数のプレイヤーグループによって戦われることを意図しています。それほど致命的ではありませんが、準備不足のプレイヤーを圧倒できる多くのメカニックを持っています。
normalizedCombat: true
healthMultiplier: 40.0 #剣で約120回で討伐
damageMultiplier: 1.5 #約3回生き延びる
これらはあくまでおおまかな推奨値であり、最終的な値はすべて遭遇そのものに合わせて調整するべきです。