ダメージシステム
これは EliteMobs において体力/ダメージがどのようにスケールするかの包括的な内訳です。ダンジョンを設計する際のリファレンスとして使用してください。
カスタムボスが関わる通常攻撃を扱います。自然エリートも同じ基本曲線を使い、後述するスケール戦闘や旧式の体力設定を適用できます。スクリプトの直接ダメージ、魔法武器、クラス能力は別の計算経路を使うことがあります。カスタムダメージと吸収を参照してください。
始める前に!
ちょっとした調整をしたいだけなら、このすべてを読む必要はありません。「このデータをダンジョンに使う」セクションまで飛ばして、非常に簡略化したクイック計算と、一連の既製の推奨設定を確認してください!
スケーリング(全般)
EliteMobsは指数関数的なスキル調整と装備修正を組み合わせています。上限適用前のボス体力の式は5レベルごとに倍になり、攻撃側・防御側のスキル調整はレベル差7.5ごとに倍になります。設定されたMinecraftの体力上限に達すると、ボス体力とプレイヤーの基本ダメージはモブのレベルだけでは増えなくなります。このため、すべてのレベル帯で同じ戦闘になるとは限りません。
プレイヤーの強さは、独立して計算される2つの要素を組み合わせたものです。
- 武器スキルレベル -- 特定の武器タイプ(剣、斧、弓、クロスボウ、トライデント、クワ、メイス、槍、スタッフ、ワンド)でエリート Mob を倒すことで得られます。
- アイテムレベル -- プレイヤーが装備している武器または防具のエリートレベルです。
対象となるエリートの討伐では防具スキルのXPも得られます。基礎XP配分の3分の1に、防具独自の補正と丸めを適用します。攻撃を受けるだけではXPは増えません。体力設定とワールドの規則で許可される場合、レベル1を超えるごとに最大体力がハート1個分増えます。このスキルはボスの攻撃に対する防御スケーリングも決定します。
武器スキル
武器XPは、命中時または投射物の発射時に記録されたスキルへ、ダメージ貢献に応じて配分されます。モブの死亡時に持ち替えてもXPの行き先は変わりません。防具XPの獲得量は少なくなります。
利用可能な武器スキルは次のとおりです:
| スキル | 武器 |
|---|---|
| 剣 | すべての剣タイプ |
| 斧 | すべての斧タイプ |
| 弓 | 弓 |
| クロスボウ | クロスボウ |
| トライデント | トライデント |
| クワ | すべてのクワタイプ |
| メイス | メイス(1.21 以降) |
| 槍 | すべての槍タイプ(1.21.11 以降) |
| スタッフ | weaponType: STAVES を持つカスタムモデル武器 |
| ワンド | weaponType: WANDS を持つカスタムモデル武器 |
| 防具 | 対象となるエリートの討伐とともに成長する防御スキル |
XPの初期値は mobLevel^2 です。ボスの体力・ダメージ倍率、貢献度、報酬レベル制限、XP特典によって変化します。レベル100はソフトキャップであり、最大値ではありません。それ以降も必要XPは増え続けます。報酬の規則はスキルシステムを参照してください。
スキルボーナス
10種類すべての武器スキルと防具には、レベルアップで解放される特殊能力であるスキルボーナスがあります。プレイヤーは有効にするボーナスを選択できます。種類は次の5つです。
- Passive -- 装備時に常時アクティブ(例: 固定ダメージ増加)。
- Conditional -- 特定の条件が満たされたときのみアクティブ(例: ターゲットが体力 30% 未満のときにダメージボーナス)。
- Proc -- 特定のイベントで確率ベースで発動(例: 命中時に出血を引き起こす確率)。
- Stacking -- 連続した行動で蓄積される(例: 連続した命中でダメージが増加)。
- Cooldown -- 内部クールダウンを伴う強力な効果(例: 60 秒に 1 回、致命的なダメージを生き延びる)。
武器スキルからの攻撃系スキルボーナスは、ボスに与える基本ダメージの上に加算的ダメージ倍率として適用されます。防具スキルからの防御系スキルボーナスは、さまざまなメカニック(固定軽減、回避、ダメージシールドなど)を通じて、受けるボスのダメージを軽減します。
プレイヤーは武器または防具の種類ごとに最大3つのボーナスを有効にできます。このページの曲線には含まれていません。戦闘の調整に使う前に、実際のダメージへの影響をダメージパイプラインにおけるスキルボーナスで確認してください。
カスタムボスが与えるダメージ
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. [explosion distance attenuation, if applicable]
7. potionMultiplier = source Strength/Weakness multiplier * player Resistance multiplier
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. capHealth = [Alpha] Advanced Combat System active ? max(1, actualMaxHealth - 30) : actualMaxHealth
10. finalDamage = min(finalDamage, capHealth - 1)
3 つのレイヤーは次のとおりです:
- 基本ダメージ -- プレイヤーが 1 回の命中で失うことが想定される HP 量(
playerMaxHealth / 5)。 - スキル調整 -- ボスのレベルとプレイヤーの防具スキルレベルの差からの指数関数的スケーリング。
- 装備調整 -- プレイヤーが装備している防具と防御エンチャントに基づく、ダメージタイプを考慮した軽減(後述の装備防御システムを参照)。
通常戦闘の一撃ダメージ上限は、実際の最大HPから1を引いた値です。[Alpha] Advanced Combat System有効時は、そのモードによる固定の30 HP増加分を先に除きます。追加HPは耐久力を増やしますが、受ける基本ダメージは増やしません。上限は計算式の内部で、ブロックやイベントリスナーより前に適用されます。カスタムの直接ダメージは上限を迂回します。すでに負傷しているプレイヤーは一撃で死亡する場合があります。
playerMaxHealth
既定の防具体力設定が有効な場合、基準体力は20 HPに、防具レベル1を超えるごとに2 HPを加えた値です。レベル50では他の補正前に118 HPになります。ボーナスは skills.yml で無効化でき、除外ワールドでは付与されません。基礎値は20 HP固定で、このファイルに基礎体力の設定はありません。[Alpha] Advanced Combat System有効時は、管理対象の戦闘ワールドの規則も適用範囲を決めます。
baseDamage
基本ダメージは単純に playerMaxHealth / 5.0 です。これは、適切に装備した同レベルのプレイヤーが 1 回の命中で受けることが想定されるダメージ量です。古いシステムとは異なり、事前補償はありません。基本値は目標ダメージであり、水増しされた生の値ではありません。
skillAdjustment
スキル調整は、ボスとプレイヤーの防具スキルのレベル差を意味のあるものにするために指数関数的スケーリングを使用します:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
レベル差7.5ごとにボスの実効ダメージが倍または半分になります。上限前のボス体力は5レベルごとに倍になるため、それより緩やかな曲線です。さらに装備調整も適用されます。
| レベル差 | スキル調整 | おおよその倒すまでの命中数(装備一致時) |
|---|---|---|
| 同レベル (0) | 1.0x | 約 5 回 |
| +5 レベル | 約 1.6x | 約 3 回 |
| +10 レベル | 約 2.5x | 約 2 回 |
| +15 レベル | 4.0x | 約 1.25 回 |
装備防御システム
装備防御システムは古い装備ランプを置き換えます。スキルレベルに基づく固定の事前補償倍率を仮定する代わりに、システムはプレイヤーの実際に装備している装備を読み取り、ダメージタイプを考慮した装備軽減を計算します。
ダメージタイプ
システムは受けるダメージを 5 つのカテゴリに分類します。ダメージタイプは、どの防御エンチャントが装備スコアに寄与するかを決定します:
| ダメージタイプ | イベントの原因 | 使用される防御エンチャント |
|---|---|---|
| MELEE | 直接攻撃、スイープ攻撃 | Protection のみ |
| PROJECTILE | 矢、火球 | Protection + Projectile Protection |
| EXPLOSION | クリーパー、ガストの爆発 | Protection + Blast Protection |
| FIRE | 火、延焼ダメージ | Protection + Fire Protection |
| OTHER | その他すべて | Protection のみ |
装備スコア
装備スコアは、防具レベルとエンチャントボーナスを、攻撃してくる Mob のレベルと比較できる単一の値に結合します:
gearScore = (sum of armorLevel for 4 armor slots) / 4
+ (sum of enchantBonus for all 6 slots) / 4
防具レベルはアイテムごとに決定されます:
- エリートアイテムは
materialTier + 4 * eliteDefenseAttributeを使います。通常生成された防具は想定レベルに一致しますが、保存されたアイテムレベルだけを変えても防御値は変わりません。エリート素材の基礎値は革・金・カメが3、チェーンが5、鉄が6、ダイヤモンドが7、ネザライトが8です。次のバニラ表とは異なります。 - バニラアイテムは素材ベースのルックアップを使用します:
| 素材 | 防具レベル |
|---|---|
| 革 | 1 |
| 金 | 2 |
| チェーン | 3 |
| 鉄 | 4 |
| カメの甲羅 | 4 |
| ダイヤモンド | 5 |
| ネザライト | 7 |
| 銅(銅を含むサーバーバージョン) | 2 |
防具レベルに寄与するのは 4 つの防具スロット(ヘルメット、チェストプレート、レギンス、ブーツ)のみです。
エンチャントボーナスは、防御エンチャントレベルを防具レベル相当の単位に変換します:
enchantBonus = (general Protection level + type-specific Protection level) * (1/3)
6 つの装備スロットすべて(防具 4 つ + メインハンド + オフハンド)がエンチャントボーナスに寄与します。つまり、Protection エンチャントの付いた盾や武器は追加の防御を提供します。合計に対する /4 の正規化は、6 スロットすべてにエンチャントを付けると、防具 4 つだけに付けるよりも最大 50% 多くのエンチャント寄与が得られることを意味します。
計算例: Lv25 一致装備 + Prot IV vs Lv25(近接)
Player: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 elite armor pieces each at armorLevel=25, each with Protection IV
Mob: level=25, melee attack
Step 1 -- Armor level per piece: 25 (material tier + 4 * elite defense attribute)
Step 2 -- Enchant bonus per piece: Protection IV = 4 * (1/3) = 1.333
(melee damage type, so only general Protection applies)
Step 3 -- Gear score:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333 (no mainhand/offhand enchants), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
Step 4 -- Gear reduction (above matching):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533 (53.3%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.533) = 0.933
Step 6 -- Final damage: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
Hits to kill: 68 / 12.69 = 5.36, approximately 5.4 hits
計算例: Lv1 バニラダイヤ vs Lv5 スケルトン(発射物)
Player: armorSkillLevel=1, maxHP = 20
Full vanilla diamond armor (no enchants), no mainhand/offhand enchants
Mob: level=5, skeleton arrow (PROJECTILE damage type)
Step 1 -- Armor level per piece: 5 (vanilla diamond from lookup table)
Step 2 -- Enchant bonus: 0 (no enchants on any piece)
Step 3 -- Gear score: (5+5+5+5)/4 + 0/4 = 5.0
Step 4 -- Gear reduction (matching): 0.50 * (5/5) = 0.50 (50%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.50) = 1.0
Step 6 -- Final damage: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
Hits to kill: 20 / 5.79 = 3.45, approximately 3.5 hits
ダイヤ防具にも 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)
| 装備状況 | 装備軽減 | 装備調整 | 倒すまでの命中数(同スキルレベル) |
|---|---|---|---|
| 裸(装備なし) | 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 |
シナリオ表
以下の攻撃回数は、通常の基本20 HPと防具スキルによる体力が満タンで、ダメージ倍率が既定値、追加体力・ポーション・スキルボーナスがない場合の値です。[Alpha] Advanced Combat Systemは受ける基本ダメージを増やさずに30 HPを追加するため、そのモードではより多くの攻撃に耐えられます。
| 状況 | スキル調整 | 装備軽減 | 装備調整 | 命中数 |
|---|---|---|---|---|
| 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回の攻撃を目標とします。[Alpha] Advanced Combat Systemの追加体力により、実際の回数は変わります。
- 最高装備で 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です。
爆発ダメージの減衰
クリーパーのダメージはクリーパーとの距離と爆発半径で減衰します。ガストの処理は現在、火球の爆発強度を使い、着弾点ではなくガストからの距離を測ります。どちらも max(0, 1 - distance / radius) を使います。その後、他の倍率を適用する前に値を最低1へ引き上げるため、距離による減衰だけではダメージゼロを保証しません。
カスタムボスの最大体力
EliteMobs 10の上限適用前のボス体力の式は、5レベルごとに倍になります。実際の体力にはhealthMultiplierの適用前と適用後の両方でMinecraftの最大体力上限が適用されるため、どちらかの上限に達すると倍増は止まります。
カスタムボスの体力計算式は次のとおりです:
baseHealth = min(2.1875 * 2^(bossLevel / 5), minecraftMaxHealth)
health = max(1, min(baseHealth * customBossHealthMultiplier, minecraftMaxHealth))
指数関数的スケーリング
基本定数(2.1875)は、レベル 25 のボスがおよそ 70 HP になるように調整されています。体力値の例(後述する最大体力の上限を適用する前の値):
| ボスレベル | 計算式上の体力 | 5レベル上の体力 |
|---|---|---|
| 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) |
Minecraft の最大体力の上限
Minecraft 自身が、エンティティに spigot.yml の settings.attribute.maxHealth.max を超える体力を与えることを拒否します。EliteMobs は起動時にその値を読み取り、2048 を下回っていれば 2048 に引き上げてファイルを保存します。この値を MAX と呼びます。
上限は2 回適用されます — 一度は素のレベル計算式に対して、もう一度は healthMultiplier を適用した後に:
effectiveHealth = min( min(2.1875 * 2^(level / 5), MAX) * healthMultiplier, MAX )
内側のクランプがあるため、1.0 未満の healthMultiplier でもいずれスケールが止まります。素の計算式はどの倍率を使ってもレベル 50 で 2048 を超え、それ以降はすべて固定された数値を元に計算されるからです。外側のクランプは、1.0 を超える倍率ではさらに早く効きます。
デフォルト構成のサーバー(MAX = 2048)では:
| healthMultiplier | 典型的な用途 | HP の増加が止まるレベル | 固定される値 |
|---|---|---|---|
| 0.25 | 援軍 | レベル 50 | 512 HP |
| 0.7 | 雑魚の一群 | レベル 50 | 約 1,434 HP |
| 1.0 | 標準的なダンジョン Mob | レベル 50 | 2,048 HP |
| 3.0 | ミニボス | レベル 42 | 2,048 HP |
| 7.0 | ボス | レベル 36 | 2,048 HP |
| 40.0 | ワールドボス | レベル 23 | 2,048 HP |
これらのレベルを超えると体力は増えません。レベル60と90のワールドボスは同じHPです。最終体力計算では、乗算結果が上限を超えると警告を記録します。それ以前の基礎体力の制限は警告を出さないため、警告がないことは上限未満の証拠になりません。healthMultiplier には正の有限値を使ってください。無効な値は1.0になります。
おおよそレベル 35 を超えるコンテンツを大きな healthMultiplier で作るなら、spigot.yml の settings.attribute.maxHealth.max を自分で引き上げてください。そうしないとボスのティアが互いに潰れ合ってしまいます — このページで後述する推奨 healthMultiplier の値は、すべてが同じ数値にクランプされた時点でエンカウンターを差別化しなくなります。
プレイヤーの基本ダメージは、上限適用後のレベルHPを3で割った値です。内部HP上限に達すると、モブのレベルだけでは増加しません。武器・スキルなどの倍率は引き続き適用されます。高いhealthMultiplierによる追加耐久力も最終HP上限で失われます。
customBossHealthMultiplier
これはカスタムボスファイル内の倍率です。デフォルトは 1 です。
カスタムボスに与えるダメージ
プレイヤーのダメージは、レベルをまたいで戦闘を一貫させつつ、異なる武器ファミリーが異なる感覚になるようにするため、指数関数的および線形スケーリングの乗算的レイヤーを使用します。この計算式は、プレイヤーのパワーを 2 つの独立した軸 -- 武器スキルレベル(指数関数的なスキル調整)と武器アイテムレベル(線形の武器調整) -- に分離するため、スキルへの投資と装備の両方が戦闘力に寄与します。
古いバージョンからの重要な変更点は、近接武器の速度が、すべての武器タイプを理論上同一の DPS にしようとしなくなったことです。剣は基準点のままですが、斧、メイス、近接トライデントは抑制されたバースト補償を受けます。クワや槍のように、すでに良好にテストされた武器ファミリーは、レガシーの攻撃速度係数を維持します。
ダメージ計算式
プレイヤーからエリートへの完全なダメージ計算式は次のとおりです:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * equipmentEnchantmentMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = roundToTwoDecimals(formulaDamage * damageModifier * combatMultiplier) * critMultiplier
damageAfterSkills = finalDamage * (1 + sum of every active skill bonus fraction)
各要素は以下で説明します。スキルボーナスはEliteMobsのダメージイベント中、優先度 HIGH のリスナーで適用されます。後続リスナーは結果を変更できます。ダメージパイプラインにおけるスキルボーナスを参照してください。
baseDamage
1 回の命中あたりの基本ダメージは、Mob の正規化 HP(healthMultiplier=1.0 のとき)を、目標とする倒すまでの命中数で割って導出されます:
baseDamage = normalizedMobHP / 3.0
normalizedMobHP = min(2.1875 * 2^(mobLevel / 5), minecraftMaxHealth) です。上記の「カスタムボスの最大体力」を参照してください。定数3.0の TARGET_HITS_TO_KILL_MOB は、装備とスキルが一致するプレイヤーのフルチャージの剣攻撃約3回を目標とします。追加補正や丸め前の値です。
必要攻撃回数は装備・スキルのレベルが一致し、最終HP上限に余裕がある場合の目安です。healthMultiplier: 2.0が基本HPを2倍にできるのは結果が上限内に収まる場合だけで、全レベルで剣6回を保証するものではありません。
attackSpeedFactor
これは近接攻撃速度のペーシングレイヤーです。古いレガシー係数から始まります:
legacyFactor = 1.6 / weaponAttackSpeed
ここではEliteMobsが返す武器速度を使います。プレイヤーの現在の攻撃速度属性は、別途チャージ時間に使います。基準の1.6は剣の攻撃速度です。最終係数は武器系統で決まります。
Swords, hoes, spears, unknown melee, and bow/crossbow melee:
attackSpeedFactor = legacyFactor
Axes, maces, and melee tridents:
attackSpeedFactor = sqrt(legacyFactor)
Ranged projectile attacks:
attackSpeedFactor = 1.0
つまり、システムはすべての近接武器を同一の DPS にしようとはしていません。遅いバースト武器は依然として 1 振りあたり強く命中しますが、斧、メイス、近接トライデントはもはや完全な 1.6 / speed のバースト倍率を受けません。クワと槍は、プレイテストでそのペーシングがすでに許容範囲であることが示されたため、意図的に古い係数のままです。
スキルと武器レベルが一致した場合の例:
| 武器タイプ | 攻撃速度の例 | 係数 | 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 になるごとにプレイヤーのダメージが倍(または半分)になります。これはボスからプレイヤーへのダメージで使用される防御スキルスケーリングレートと一致し、対称的な戦闘を生み出します。
| スキル差 | スキル調整 | 効果 |
|---|---|---|
| -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 武器レベル超える必要があります。
| 武器の状態 | ボーナス | 武器調整 | 命中数への影響 |
|---|---|---|---|
| 武器レベル0、この調整のみ比較 | 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 回 |
実際の素手攻撃は、スキルレベル1と素手用の攻撃速度係数も使います。この表では他の要素を剣の基準値に固定し、武器調整だけを比較しています。
cooldownOrVelocity
近接では、前回の主近接攻撃からのゲームtick数を 20 / attackSpeed のチャージ時間で割り、最大1.0に制限します。非エリートへの命中も時計を更新しますが、空振りは更新しません。最初の記録対象攻撃はフルチャージです。現在の攻撃速度属性を使い、取得不能・無効、または遅い武器なのに未変更の4.0を返す場合はアイテム速度に切り替えます。弓・クロスボウの近接は4.0です。
遠隔/発射物攻撃(弓、クロスボウ、投擲トライデント、スキルでスポーンした矢)の場合、これは正規化された発射速度です。フルドローの弓の速度はおよそ 3.0 です。値は min(velocity / 3.0, 1.0) に正規化され、[0, 1] の範囲にクランプされます。
通常の遠隔攻撃では、武器レベル、スキルの種類とレベル、クリティカルの成否を発射時に保存します。オフハンドの弓・クロスボウも対象です。投げたトライデントは自身のアイテムレベルを提供します。発射速度を優先し、そのデータがなければ現在速度を使います。武器・スキルデータがなければレベル0/1となり、着弾時の武器スキルを借用しません。プレイヤーのポーション効果や6スロットのダメージエンチャント合計などは、着弾時に読み取ります。
sweepMultiplier
ENTITY_SWEEP_ATTACK の倍率は 0.25 で、主攻撃の時計を更新せずフルチャージとして扱います。他の値は各対象で計算され、クリティカルも別に抽選します。最終ダメージが主対象の25%になるとは限りません。
sweepMultiplier = 0.25 (secondary sweep targets)
sweepMultiplier = 1.0 (primary target)
potionMultiplier(攻撃)
力と弱化のポーション効果は、プレイヤーが与えるダメージを変更します:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier、weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier です。両設定の既定値は0.2です。このEliteMobsの式では力Iが+20%、弱化Iが-20%のダメージになります。同じレベルの力と弱化は相殺され、倍率は0を下回りません。
MobCombatSettings.yml の設定キーは次のとおりです:
| キー | 既定値 | 説明 |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | 力レベルごとのボーナスダメージ |
weaknessDamageMultiplierV2 | 0.2 | 弱化レベルごとのダメージペナルティ |
equipmentEnchantmentMultiplier
プレイヤーが装備しているアイテムのダメージ増加(Sharpness)と射撃ダメージ増加(Power)のレベルは、パーセンテージのダメージボーナスに寄与します。1 レベルあたり 2.5% の価値があり、両方のエンチャントがすべてのアイテムで計上されます:
perItemBonus = (Sharpness level + Power level) * 0.025
equipmentEnchantmentMultiplier = 1.0 + sum of perItemBonus across all six slots
合計は6 つのスロットすべて(防具 4 部位 + メインハンド + オフハンド)を対象とするため、盾や防具に付いた Sharpness も寄与します。これは、Mob タイプ別のエンチャント(Smite、Bane of Arthropods)のみを対象とする以下の enchantmentMultiplier とは別の層です。
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 です。この処理は投射物の着弾時も現在のメインハンドを読みます。Baneの対象はSpider/Silverfish、SmiteはZombie/Skeleton/Wither/SkeletonHorse/ZombieHorse/Zombified Piglinで、それぞれのJavaクラスの派生型も含みます。Minecraftのモブ分類タグ全体を参照しているわけではありません。
arrowDamageMultiplier
武器スキル能力(Multishot、Arrow Rain など)によってスポーンされた矢は、発射物のデータコンテナに保存されたダメージ倍率を持ちます。これにより、スキルで生成された矢は標準的な矢の命中と比べて低減されたダメージを与えられます。通常のプレイヤーが放った矢の場合、この倍率は 1.0 です。
Thorns ダメージ
useEliteEnchantments が有効な場合、THORNS ダメージイベントは完全な武器式ではなく、プレイヤーからエリートへの基本ダメージを使います。バニラIIIを超えるThornsレベルだけを数えます。この計算自体がThornsの発動を予約・保証するわけではありません。
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel (per armor piece, summed across all 4 pieces)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
バニラ最大を超える各レベルは基本ダメージの**2%**です。バニラThorns IIIはエリートThornsダメージを生みません。防具4部位すべてにThorns Vがあれば各2レベル、合計8となり、1回の発動で baseDamage * 8 * 0.02 = 16%、つまりプレイヤーからエリートへの基本ダメージの16%になります。
標準・正規化戦闘ではモブの実レベルを使います。スケール戦闘ではプレイヤーの現在の武器スキルレベルを使い、結果をボスの実HPに換算します。その後もボスの素材補正、戦闘倍率、クリティカル処理が適用されます。
damageModifier
カスタムボスファイル(damageModifiers)からのボス固有の武器タイプダメージ修正値です。これにより、ボスが特定の武器素材から受けるダメージを増減できます(例: 剣に耐性があるが斧に弱いボス)。明示的に設定されていないすべての武器タイプではデフォルトで 1.0 です。
近接は現在のメインハンド素材を参照します。投射物はEliteMobsのカスタム投射物データに射撃武器の素材が登録されている場合だけそれを使い、それ以外は既定の参照結果を使います。投射物の武器レベルが保存されているだけでは、この素材補正は得られません。
combatMultiplier
MobCombatSettings.yml(戦闘モードに応じて scaledDamageToEliteMultiplier、normalizedDamageToEliteMultiplier、または damageToEliteMobMultiplierV2)からのグローバル倍率です。デフォルトは 1.0 です。
critMultiplier
クリティカルヒットは最終ダメージを 1.5 倍します。クリティカル確率は、プレイヤーのエリート装備のクリティカル確率ステータスから 6 つの装備スロット(防具 4 部位 + メインハンド + オフハンド)すべてで合算され、その後上限が設けられます:
critChance = min(sum of all six slots, maximumCriticalStrikeChance)
maximumCriticalStrikeChance は MobCombatSettings.yml にあり、デフォルトは 0.40(40%)です。上限がなければ、6 スロットにわたってクリティカル確率を積み重ねると 100% に達しうるため、すべての攻撃が「クリティカル」になり、1.5 倍の倍率は支払われ続ける一方でクリティカルが特別な出来事として読み取られなくなります。そのため 0.5 を超える値は推奨されません。設定値がどうであれ、上限は [0.0, 1.0] の範囲にクランプされます。
クリティカルストライクはダメージイベントの発火前に適用されるため、後述の加算的なスキルボーナス層とは別の乗算ステップのままになります。大きなスキルボーナスがクリティカルを飲み込んでしまうことはありません。
スタッフとワンドのダメージ
FMM の魔法武器によるスタッフのファイアボール、スタッフの近接攻撃、ワンドのミサイルは、上記の近接や弓の計算式を使いません。これらがエリートに命中すると、EliteMobs は次のように計算します。
formulaLevel = scaled combat ? magicSkillLevel : mobLevel
magicDamage = baseDamage(formulaLevel)
* 2 ^ ((magicSkillLevel - formulaLevel) / 7.5)
* weaponAdjustment(itemLevel, formulaLevel)
* basePower * impactScale
* scaledCombatRescale
* damageModifier
* combatMultiplier
* (1 + 0.025 * (Sharpness + Power levels on the weapon))
magicSkillLevelは Staves または Wands のスキルレベルで、攻撃を詠唱した時点で記録されます(スキル除外ワールドではレベル 1)。baseDamage、スキル調整、weaponAdjustment、damageModifier、combatMultiplierは上記で説明した要素です。damageModifierは武器のベースとなる素材を参照します。basePowerは FMM の攻撃に設定された威力です。impactScaleは直撃なら 1 で、スタッフの爆発では中心の 1 から端の 0.35 まで減少します。scaledCombatRescaleはスケール戦闘以外では 1 です。スケール戦闘では、ダメージ(プレイヤーからボス)と同様に、結果をボスの実際の HP 量に換算します。- クリティカル判定も詠唱時に記録され、クリティカルヒットでは結果が 1.5 倍になります。
この経路には攻撃速度、チャージ、スイープ、ポーションの要素はありません。その後、命中はダメージパイプラインにおけるスキルボーナスで説明するとおり、Staves または Wands のスキルボーナスを処理します。エリート以外の対象に命中した場合は、FMM 単体のダメージに同じ Sharpness/Power の係数を掛けたダメージを与えます。
修正値のクランプ
攻撃・防御のスキル調整は、倍率の上限なしで 2 ^ (levelDifference / 7.5) を使います。以前の getLevelModifierFromDifference とその 0.125/8.0 の制限はもうありません。現在の戦闘計算にこれらの制限を適用しないでください。
ボスHPには前述の最大体力上限が適用されます。レベル100はXPのソフトキャップであり、どちらのスキル調整にもハード上限を設けません。
スキル由来の出力を実際に制限しているのは、クリティカル率の上限と2つの防御軽減の上限であり、いずれも次のセクションで説明します。
ダメージパイプラインにおけるスキルボーナス
これまでの説明はすべて、ボーナスなしの曲線についてのものです。実際のプレイヤーは武器タイプごとに最大 3 つのアクティブなスキルボーナスを持ち、それらは計算式の上に載ります。曲線だけを基準にエンカウンターを調整すると、プレイヤーが実際に与えるダメージを一貫して過小評価することになります。
スキルボーナスのバランスは分割されています。skillbonuses/*.yml ファイルは表示に関するもの(表示名、説明、アンロックティア、ボーナスの種類、メニューアイコン、ロアテンプレート)と、バランス用キー baseValue、scalingPerLevel、procChance、cooldownSeconds、maxStacks、stackBonus を持ちます。設定を参照するボーナスはこれらの値を使い、それ以外はハードコードされた定数を使います。いくつか(Harvester、Legion's Discipline、Depth Charge)は設定値を承認済みカーブでクランプするため、編集してもボーナスを弱体化させることしかできません。
設定可能な発動率の共通ヘルパーは min(1, procChance + 0.002 * skillLevel) を使います。クールダウンのヘルパーは cooldownSeconds * (1 - 0.005 * skillLevel) の下限を設定値の半分にします。呼び出し側は多くの場合、秒単位に丸めて最低1秒とします。独自の式を使うボーナスは異なる場合があります。個別の説明はスキルボーナスを参照してください。
この層が実行される位置(攻撃側)
通常の攻撃スキルボーナスはEliteMobsイベントの途中で適用されます。
... formula → damageModifier × combatMultiplier → critical hit (×1.5)
→ EliteMobDamagedByPlayerEvent listeners run
→ HIGH-priority skill-bonus listener applies bonuses
→ remaining listeners can modify or cancel
→ final damage set
スキルリスナーの実行時点でクリティカル倍率は含まれているため、加算的な倍率を適用しても維持されます。プレイヤーのカスタム・バイパスダメージは、再帰的な発動を避けるため、この通常の武器スキルリスナーを通りません。スタッフやワンドの攻撃自体の命中は例外で、カスタムダメージでありながら Staves または Wands のボーナスを処理します。クラス能力には独自の規則があります。
攻撃系ボーナスは加算的にスタックする
各アクティブなボーナスが寄与するのはそのボーナス分の割合だけで、それらは合算されます:
totalMultiplier = 1.0 + (m1 - 1.0) + (m2 - 1.0) + (m3 - 1.0) + ...
したがって 1.2 倍のボーナスが 3 つあれば 1.6 倍であり、乗算的に複合した場合の 1.73 倍にはなりません。これはすべての武器タイプに一様に適用されます。
これは以前の挙動からの変更です。以前は斧だけが「最大値が勝つ」ルールを使っており、最も大きなボーナス 1 つだけが適用され、スキルが 1.5 倍を上回った斧の命中ではクリティカルストライクが静かに完全に破棄されていました。1 つの武器系統だけが異なるスタックルールで動いていたため、斧のダメージを他と比較することも不可能でした。
同じ加算処理は、対象から読み取るHunter's Mark、Death Mark、Judgment、Expose Weakness、Hex Brand、Unravelにも適用されます。準備済みRiposteは別処理で、イベントのダメージを直接乗算します。その結果に、まとめた加算倍率を掛けます。
実務上の帰結: 攻撃系ボーナスを 3 つうまく選んだプレイヤーは、発動系を除いても公開されている曲線のおよそ 1.4〜2 倍のダメージを出しており、クールダウン系の能力が決まればさらに増えます。「剣 3 回」という設計目標は、ボーナスを 1 つも選んでいないプレイヤーを表しています。
防御系ボーナスには 2 つの上限がある
防具スキルのボーナスは受けるダメージを軽減しますが、攻撃側とは異なり乗算的に合成されます — それぞれが既に軽減されたダメージを damage * (1 - reduction) に通します。そのため、2 つの別々の上限があります:
| 上限 | 値 | 範囲 |
|---|---|---|
| スキル単体のクランプ | 80% | 単一のスキルによる軽減を制限 |
| 全体の上限 | 85% | 1 回の命中につき、すべてのスキル起因の軽減の合計を制限 |
スキル単体のクランプだけでは不十分です。それぞれ 80% の 3 つのソースは 0.2 x 0.2 x 0.2 で 合計 99.2% の軽減 になり、個々のクランプはすべて守られたまま実質的に無敵になってしまいます。
全体の上限がこれを塞ぎます。これは最後に一度だけ適用され、スキルパイプラインに入る前のダメージと出てきたダメージを比較し、その比率が 1 - 0.85 を下回らないようにします:
finalDamage = max(damageAfterSkills, incomingDamage * 0.15)
軽減の累計ではなく比率で動作させていることが、この仕組みを頑健にしています。個々の分岐は形が異なり(乗算するもの、値を直接代入するもの、スタックするもの、設定を読むもの)、寄与するものの順序や個数は結果に影響しません。防御を完全に積んだビルドでも、受けるすべての命中の少なくとも 15% は必ず食らいます。
完全無効化はこの上限の対象外です。 Evasion、Last Stand、Spell Mirror、Death's Embrace、Divine Shield、Phoenix Mantleは部分軽減ではなく、ダメージイベントをキャンセルします。85%の制限はこのスキル処理に対するものです。ポーション、ブロック、吸収、他のリスナーを適用した後の元の攻撃全体に対する下限ではありません。
合計軽減が上限に達すると、別の軽減を加えてもその攻撃のダメージは下がりません。
計算例
以下の例では、根底にある曲線が見えるように意図的にスキルボーナスを除外しています。実世界の数値を得るには、前節の加算的なスキル倍率を上に載せてください。
例 1: Lv25 一致の剣 vs Lv25 エリート(近接)
Player: weaponSkillLevel=25, weapon=elite sword (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
Step 2 -- Attack speed factor: sword speed=1.6, factor = 1.6/1.6 = 1.0
Step 3 -- Skill adjustment: 2^((25-25)/7.5) = 2^0 = 1.0
Step 4 -- Weapon adjustment: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
Step 5 -- Cooldown: full charge = 1.0
Step 6 -- Sweep: primary target = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
Mob HP = 70.0 -> hits to kill = 70.0 / 23.33 = 3.0
例 2: Lv25 斧 vs Lv25 エリート(抑制されたバースト補償)
Player: weaponSkillLevel=25, weapon=elite axe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Legacy attack speed factor: 1.6/1.0 = 1.6
Step 3 -- Axe burst damping: sqrt(1.6) = 1.265
Step 4 -- Skill adjustment: 1.0 (matched)
Step 5 -- Weapon adjustment: 1.0 (matched)
Step 6 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 1.265 * 1.0 * 1.0 * 1.0 = 29.52
Hits to kill = 70.0 / 29.52 = 2.37
例 3: Lv25 クワ vs Lv25 エリート(レガシーの高速武器係数)
Player: weaponSkillLevel=25, weapon=elite hoe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Attack speed factor: hoe speed=4.0, factor = 1.6/4.0 = 0.4
Step 3 -- Skill adjustment: 1.0 (matched)
Step 4 -- Weapon adjustment: 1.0 (matched)
Step 5 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 0.4 * 1.0 * 1.0 * 1.0 = 9.33
Hits to kill = 70.0 / 9.33 = 7.5
例 4: Lv20 弓 vs Lv25 エリート(healthMultiplier=2.0、遠隔、レベル不足)
Player: weaponSkillLevel=20, weapon=elite bow (itemLevel=20)
Mob: level=25, healthMultiplier=2.0, actual HP = 70.0 * 2 = 140.0
Step 1 -- Base damage: 23.33 (from normalized HP, NOT actual HP)
Step 2 -- Attack speed factor: ranged, N/A = 1.0
Step 3 -- Skill adjustment: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
Step 4 -- Weapon adjustment: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
Step 5 -- Arrow velocity: full draw = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
Hits to kill = 140.0 / 13.23 = 10.6 hits
(Under-leveled skill AND weapon, fighting a healthMultiplier=2.0 mob)
DamageBreakdown デバッグツール
elitemobs.debug 権限を持つプレイヤーで /em debug を実行すると、戦闘診断を切り替えられます。攻撃を再現し、もう一度実行して終了してください。計算式、選択された戦闘モードと設定倍率、ブロック・バイパス経路、イベント結果がチャットとサーバーログに出ます。ログでは [EM-Debug: と [EM-Damage: を検索してください。
開発ツールが使う別の内部ヘルパー DamageBreakdown は、次を出力できます。
- すべてのレベル、計算式コンポーネント、倍率、最終的に計算されたダメージを表示する完全な整形済み内訳。
- ゲーム内ですばやく参照するためのコンパクトな 1 行の要約。
- 10% を超える不一致をフラグ付けする予想対実際の比較。プラグインの競合や誤設定のボスファイルを診断するのに便利です。
この再計算は、最終的に適用されたダメージの確定値ではありません。計算式の値に最低1を適用し、後段のスキル倍率を含めず、スケール戦闘の換算やリスナーによる変更もすべて再現するわけではありません。差があるだけではプラグイン競合の証拠になりません。実際の戦闘を調べる際は、戦闘中の診断と実測の体力変化を使ってください。
スキル XP の進行
武器スキルと防具スキルは、エリート Mob を倒して XP を得ることでレベルアップします。XP システムは 3 次のレベル要件を使用して、レベル 100 を超えるソフトキャップを伴う滑らかな進行を生み出します。
討伐XP: mobLevel^2 は、ボス倍率、貢献割合、報酬レベル制限、特典を適用する前の初期値です。スキルシステムを参照してください。
次のレベルまでの XP:
レベル 1 から 100 まで:
xpToNextLevel = floor(8.5 * L^3)
レベル 100 を超える場合(ソフトキャップ):
xpToNextLevel = floor(floor(8.5 * L^3) * (1 + ((L - 100)^2 / 100)))
ソフトキャップ倍率はレベル100で1.0となり、そこから連続して二次的に増えます。レベル150では約26倍になり、その先の進行は非常に難しくなります。レベル100にハード上限はありません。それを超えると、三次の必要XPに上記の二次ソフトキャップ係数を掛けます。
追加の戦闘メカニック
一撃死の防止
通常のボスダメージ式の上限は、実際の最大HPから1を引いた値です。[Alpha] Advanced Combat System有効時は max(1, actualMaxHealth - 30) - 1 となり、そのモードの固定30 HPだけを除きます。他の最大HP補正は含まれます。現在HPではなく最大HPを使うため、負傷したプレイヤーは一撃で死亡する場合があります。直接ダメージは上限を迂回でき、イベントリスナーは後から値を変えられます。
盾によるブロック
ブロック中にこのハンドラーへ届いた非投射物攻撃は、既定で式のダメージを80%軽減します。設定は MobCombatSettings.yml の blockingDamageReduction です。バイパスの直接ダメージは軽減後の値を置き換えます。ブロックした投射物は削除され、式を適用する前に処理を終了しますが、この分岐自体はBukkitのダメージイベントをキャンセルしたりゼロにしたりしません。あらゆる投射物やプラグイン製攻撃を無効化できるとは考えないでください。
処理された各ブロックは盾の耐久値を5減らそうとします。バニラのUnbreakingがその頻度を下げます。盾はオフハンドよりメインハンドを優先します。
カスタムダメージと吸収
一部のボスパワーは直接ダメージを指定します。これはEliteMobsイベントの前に、通常式の結果を一撃上限や盾軽減ごと置き換えます。防御スキルのリスナーは引き続き軽減・キャンセルできます。一方、プレイヤーのカスタム・バイパスダメージは、通常の武器式、ボス素材・全体倍率、武器スキルの発動を飛ばします。保存済みの魔法武器クリティカルや、明示的に保証されたクラスクリティカルは適用される場合があります。また、スタッフやワンドの攻撃自体の命中は、その武器のボーナスを処理します(スタッフとワンドのダメージを参照)。
通常のエリートからプレイヤーへのイベント終了後、最終ダメージに対して現在の吸収量を配分します。バニラの防具・耐性補正はEliteMobs式で処理済みなので除去します。プレイヤーからエリートへの式もバニラの軽減を除去するため、この経路ではボスの防具は見た目だけです。
高速の近接攻撃
独立したオートクリッカー制限は既定で有効です。移動する1秒間の窓内でエリートへの主近接攻撃が5回を超えると、この経路に5秒間のペナルティが発生します。値は MobCombatSettings.yml の autoclickerThrottleMaxHitsPerSecond と autoclickerThrottlePenaltySeconds、有効化は autoclickerThrottleEnabled で設定します。空クリック、スイープ、投射物、Thorns、カスタム・バイパス攻撃は数えず、このペナルティ判定も通りません。再接続しても有効なペナルティは消えません。
防具スキルの体力ボーナス
防具スキルのレベル1を超えるごとに最大体力が2 HP、ハート1個分増えます。この属性補正は skills.yml の有効化設定、除外ワールド、前述の管理対象戦闘ワールドの条件に従います。
レベルスケーリングの要約
次の表は、体力上限やその他の戦闘修正を適用する前のレベル修正値をまとめたものです。どちらかの体力上限に達すると、ボスHPの比率は成り立たなくなります。
| レベル差 | ボスHP倍率 | ボスダメージ倍率 | 難易度 |
|---|---|---|---|
| -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 | 非常に困難 |
スケール戦闘
スケール戦闘はボスを、攻撃プレイヤーの武器スキルレベル、または防御プレイヤーの防具スキルレベルとして扱います。通常ダメージのスケーリングから、保存されたボスレベルを除外します。装備、武器系統、ボーナス、パワー、体力補正によって戦闘は依然として変わります。自然エリートや一部のイベントボスに使えます。イベントボスには個別の scaledCombat: true が必要です。
スケール戦闘と正規化戦闘の違い
EliteMobs には 3 つの戦闘モードがあります:
| モード | 用途 | レベルは重要? | 設定キー |
|---|---|---|---|
| 標準 | 特別なフラグのない基本 Mob | はい -- ダメージと体力は Mob の実際のレベルでスケールします | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| 正規化 | ダンジョンおよびリージョナルボス(normalizedCombat: true) | はい。同じ基本曲線に、別の設定倍率を使用します | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| スケール | 自然な地上エリートとイベントボス(scaledCombat: true またはグローバル設定) | いいえ -- ボスはプレイヤーのレベルでシミュレートされます | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
標準・正規化攻撃はどちらもモブの実レベルを使います。現在の指数関数的な体力式は、旧設定の normalizedBaselineDamageV3 と normalizedRegionalBossBaselineHealthV3 を無視します。スケール攻撃ではプレイヤーのスキルレベルに置き換えますが、保存レベルは他のシステム向けに残ります。
仕組み
ダメージ(ボスからプレイヤー)
スケール戦闘のボスがプレイヤーにダメージを与えるとき、ダメージ計算式はボスのレベルをプレイヤーの防具スキルレベルに等しく設定します:
mobLevel = armorSkillLevel (instead of the boss's actual level)
つまり、スキル調整は 1.0 になり(bossLevel - armorSkillLevel = 0 であるため)、ダメージは完全にプレイヤーの装備と防具スキルに依存し、Mob の保存されたレベルには依存しません。残りの計算式(基本ダメージ、装備調整、ポーションなど)は、上記のセクションで説明したものとまったく同じように機能します。
ダメージ(プレイヤーからボス)
プレイヤーがスケール戦闘のボスを攻撃するとき、計算式は次のことを行います:
- ボスをプレイヤーの武器スキルレベルでシミュレート -- Mob を一時的にプレイヤーの武器スキルと同じレベルであるかのように扱います。
- そのシミュレートされたレベルに対して標準のダメージ計算式を実行 -- 「同レベルの Mob に対するダメージ」の結果を生み出します。
- ボスの実際の HP に再スケール -- 計算式ダメージを、シミュレートされた Mob の HP の割合から、ボスの実際の HP プールの同じ割合に変換します。
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
simulatedMobHP = baseHPAtSimulatedLevel * bossHealthMultiplier
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
これで割合計算から保存されたボスレベルが除かれます。ボスの体力倍率、武器・スキル補正、体力上限、丸めは攻撃回数に影響します。healthMultiplier: 1.0 の基準は剣約3回で、他の系統は前述の攻撃速度係数に従います。
ルートと報酬
スケール報酬の計算は、保存されたモブレベルではなくプレイヤーの戦闘レベルを使います。通常ドロップ、クラスドロップ、スキルXP、ボーナスコインはこのレベルを使い、その後それぞれの規則を適用します。固定カスタムアイテム、明示的な報酬、確率、資格条件、レベル上限が自動的になくなるわけではありません。ルートテーブルとスキルシステムを参照してください。
レベル表示
スケール戦闘のエンティティは、実際のレベルがプレイヤーにとって無関係であるため、ネームプレートに数値レベルの代わりにシンボルを表示します:
- 標準のスケールエンティティ(healthMultiplier 1.0 以下): 剣のシンボルを表示(デフォルト:
「⚔」) - 高脅威のスケールエンティティ(healthMultiplier 1.0 超): ドクロのシンボルを表示(デフォルト:
☠)
これらのシンボルは MobCombatSettings.yml で scaledStandardLevelSymbol と scaledHighThreatLevelSymbol を通じてカスタマイズできます。
スケール戦闘の有効化
すべての自然エリート向け(グローバル設定)
MobCombatSettings.yml で:
useScaledCombatForNaturalElites: true
これは既定で有効で、オーバーワールド次元だけでなく、対象ワールドの自然エリートに適用されます。useDistanceBasedNaturalEliteLevels を使うワールドの自然エリートは、この設定がtrueでも実レベルを使います。normalizedCombat のダンジョンボスには影響しません。カスタム・イベントボスは屋外に出現するだけでは設定を継承しません。
個々のカスタムボス向け
カスタムボス設定ファイルで:
scaledCombat: true
これは、グローバル設定に関係なく、特定のカスタムボスにスケール戦闘の使用を強制します。すべてのプレイヤーにとって等しく公平に感じられるべきイベントボスやカスタムの地上遭遇に便利です。
注意: ボスに normalizedCombat: true が設定されている場合(またはグローバルに正規化が有効なリージョナル/インスタンスボスの場合)、正規化戦闘が優先され、ボスはスケール戦闘を使用しません -- ただし、ボスファイルで scaledCombat: true が明示的に設定されている場合は、スケール戦闘が優先されます。
設定キー
次の MobCombatSettings.yml のキーがスケール戦闘の動作を制御します:
| キー | 既定値 | 説明 |
|---|---|---|
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)
ここで level は最低1です。この式は自然エリートの体力と、それに対するプレイヤーの基本ダメージを置き換えます。プレイヤーが受けるダメージの防具スキル式は置き換えません。EliteMobs 9に近い線形値となり、一部の低レベルでは指数式より大きく、高レベルではかなり小さくなります。最終体力には引き続き体力倍率とサーバー上限が適用されます。カスタムリージョナルボスには影響しません。
このデータをダンジョンに使う
注意: これは normalizedCombat の値を使用していることを前提としています! それらの値は、ダンジョンをより簡単にバランス調整するために特別に作られました。
ボスの難易度の一部は、その遭遇に適した体力とダメージを持たせることです。しかし、これはその一部にすぎず、パワーも同じくらい重要であることを覚えておいてください。
以下はカスタムボスファイル向けの正しい形式で提示されています。
簡単なクイック計算
指数関数的スケーリングシステムでは、healthMultiplier と damageMultiplier は基本値を直接スケールします:
-
healthMultiplierが 1.0 の場合、ボスは同レベルのプレイヤーによっておよそ剣 3 回の命中で倒されます。ほかの近接武器は攻撃速度係数によって変動します。斧、メイス、近接トライデントのような抑制されたバースト武器は剣より少ない命中数で倒し、クワはレガシーの高速武器係数を維持するためより多くの命中数がかかります。倍率 2.0 は体力を倍にし、0.5 は半分にする、といった具合です。 -
damageMultiplierが 1.0 の場合、ボスは適切に装備した同レベルのプレイヤーをおよそ5 回の命中で倒します。倍率が高いほどボスはより致命的になり、低いほど安全になります。
必要攻撃回数は装備・スキルのレベルが一致し、最終HP上限に余裕がある場合の目安です。healthMultiplier: 2.0が基本HPを2倍にできるのは結果が上限内に収まる場合だけで、全レベルで剣6回を保証するものではありません。
これらの攻撃回数には、次の要素も含まれていません。
- スキルボーナス。 上記の各数値はアクティブなボーナスがゼロであることを前提としています。攻撃系ボーナスを 3 つ積んだプレイヤーは目に見えて早く倒し、防御系を 3 つ積んだプレイヤーは目に見えて長く生き延びます(全体上限 85% まで)。これらの数値はプレイヤーの強さの予測値ではなく、下限として扱ってください。
- Advanced Combatの体力。 追加の30 HPは受ける基本ダメージを増やさず、生存力を高めます。
- 最大体力の上限。 Minecraft の最大体力の上限に記載したレベルを超えると、
healthMultiplierは HP をまったく増やさなくなります。特にワールドボスのプリセットは、デフォルト構成のサーバーではレベル 23 からクランプされます。
プレイヤーは武器を優先する傾向があり、しばしば武器よりもはるかに劣った防具になりがちであることを覚えておいてください。遠距離戦闘の非常に特定のタイプのアリーナを設計するのでない限り、おそらく 1 回の命中で大きなダメージを与えたくはないでしょう。 コンテンツをプレイテストしてください!
平均的なダンジョン Mob を作る
normalizedCombat のスケーリングでは、非常にミニマルな設定を適用できます:
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #survives ~5 hits
2つの倍率は既定値が1.0なので省略できます。リージョナル、インスタンス、アリーナの設定ですでに正規化される場合を除き、normalizedCombat: true は残してください。
ザコ群を作る
ザコ群は数は多いがあまり危険ではありません:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #survives ~10 hits
援軍を作る
援軍は非常に簡単に死ぬべきですが、ダメージ的に危険を及ぼします(これらの値は 4 体以上の近接エンティティに推奨されますが、実際の使用は異なる場合があります):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #survives ~8 hits
ミニボスを作る
ミニボスは持ちこたえ、プレイヤーにメカニックの挑戦を突きつけるべきです。しばらく続くスキルの試練であるべきですが、極めて致命的なものではありません:
normalizedCombat: true
healthMultiplier: 3.0 #~9 sword hits to slay
damageMultiplier: 1.2 #survives ~4 hits
ボスを作る
ボスは本物の挑戦であり、ダンジョンでの盛り上がりの結末であり、すべてを懸けた本物のスキルの試練です。遭遇は長く、死は常に存在する脅威であるべきです。
normalizedCombat: true
healthMultiplier: 7.0 #~21 sword hits to slay
damageMultiplier: 1.4 #survives ~3.5 hits
ワールドボスを作る
ワールドボスは危険ですが、何よりも大量の体力を持ち、多くの援軍を召喚する/多くの範囲攻撃を持ちます。これらは、エリート遭遇が続くべき最も長い時間にわたって、大人数のプレイヤーグループによって戦われることを意図しています。それほど致命的ではありませんが、準備不足のプレイヤーを圧倒できる多くのメカニックを持っています。
normalizedCombat: true
healthMultiplier: 40.0 #~120 sword hits to slay
damageMultiplier: 1.5 #survives ~3 hits
これらはあくまでおおまかな推奨値であり、最終的な値はすべて遭遇そのものに合わせて調整するべきです。