スキルシステム
EliteMobsは、プレイヤーがエリートモブと戦うことでレベルアップする、スキルベースの進行システムを使用しています。単一のグローバルなレベルではなく、プレイヤーは個別の武器スキルと防具スキルを伸ばし、それらが合わさって全体的な強さを決定します。
スキルは11種類あります。
| スキル | 武器 | 備考 |
|---|---|---|
| Swords(剣) | 任意の_SWORD | |
| Axes(斧) | 任意の_AXE | |
| Bows(弓) | BOW | |
| Crossbows(クロスボウ) | CROSSBOW | |
| Tridents(トライデント) | TRIDENT | |
| Hoes(鎌) | 任意の_HOE | |
| Maces(メイス) | MACE | Minecraft 1.21以降が必要 |
| Spears(槍) | 任意の_SPEAR | Minecraft 1.21.11以降が必要(リソースパック付き) |
| スタッフ | FMMで定義された有効なSTAFF武器 | 互換性のあるFreeMinecraftModelsが必要 |
| ワンド | FMMで定義された有効なWAND武器 | 互換性のあるFreeMinecraftModelsが必要 |
| Armor(防具) | ヘルメット、チェストプレート、レギンス、ブーツ | パッシブにレベルアップ |
スキルは、対応する武器でエリートモブを倒すことでレベルアップします。スキルから算出される戦闘レベルは、コンテンツへのアクセスと近くの自然発生エリートの難易度に関わります。装備制限には対応する武器または防具スキルを使い、レベル20以下のエリート装備は制限の対象外です。
スキルのレベルアップの仕組み
エリートモブを倒すと、そのモブのレベルに応じてXPを獲得します。XPは次のように分配されます。
- 武器XPは、命中時または投射物の発射時に記録されたスキルへ、ダメージ貢献に応じて配分されます。モブの死亡時に持ち替えてもXPの行き先は変わりません。
- 防具XPは配分されたXPに1/3の倍率を適用して自動付与されます。複数の武器種を使う場合、防具スキルが個々の武器スキルを上回ることがあります。
- グループ戦闘: 複数のプレイヤーが同じエリートにダメージを与えた場合、XPは各プレイヤーのダメージ貢献度に応じて比例配分されます。ダメージの60%を与えた場合、基本XPの60%を獲得します。
モブから得られる基本XP
モブを倒して得られる基本XPは次のとおりです。
mob_xp = mob_level ^ 2
| モブのレベル | 獲得XP |
|---|---|
| 1 | 1 |
| 10 | 100 |
| 25 | 625 |
| 50 | 2,500 |
| 100 | 10,000 |
ボスXP倍率
手強いモブほど価値があります。上記の基本XPは、モブの healthMultiplier と damageMultiplier から導かれる係数で乗算されます。
bossXPMultiplier = healthMultiplier^0.6 * (1 + (damageMultiplier - 1) * 0.15)
HPの成分は**劣線形の指数(0.6)**を使い、戦闘が長引くほど多く報われる一方で、高体力のボスを狩ることが不釣り合いに儲かるようにはならないようにしています。ダメージの成分は大きく減衰されています。ダメージがわずかに増えるだけで難易度は大きく上がるため、線形の報酬ではプレイヤーを自殺的な相手へ向かわせてしまうからです。
| healthMultiplier | damageMultiplier | XP倍率 |
|---|---|---|
| 1.0 | 1.0 | 1.00倍 |
| 3.0(ミニボス) | 1.2 | 1.99倍 |
| 7.0(ボス) | 1.4 | 3.41倍 |
| 40.0(ワールドボス) | 1.5 | 9.83倍 |
キル時の完全な処理順序は次のとおりです:実効モブレベル(下記のアンチエクスプロイト上限を適用後)→ 基本XP → ボス倍率 → ダメージ寄与による分配 → 武器XPと防具XP。
アンチエクスプロイト保護
以下の3つはすべて AntiExploit.yml で設定され、enableFarmingProtection が false の場合は完全にスキップされます。設定表の全体はファーミング保護を参照してください。
- 低レベルのモブ(スキルごと): 各武器/防具スキルは、モブがその特定のスキル自体のレベルより
farmingProtectionLevelDifference(デフォルト15)レベル以内の下までである場合にのみXPを獲得します。このチェックは戦闘レベルではなく個々のスキルレベルを使用し、スケール戦闘では完全にスキップされます。スケール戦闘ではモブがプレイヤーに合わせて正規化されるため、「レベルが低すぎる」という概念が意味を持たないからです。 - 高レベルのモブ: スキルXPには、
combat_level + farmingProtectionLevelDifference(デフォルト15)を上限とする有効報酬レベルを使います。同じ上限は自然発生のエリートの戦利品にも適用されますが、カスタムボスの戦利品にはこのファーミング保護のレベル上限を使いません。XPを獲得するための他の条件も引き続き適用されます。 - 自然エリートのファーミング上限: 自然発生の(カスタムボス以外の)エリートのキルは、長さ
farmingProtectionMinutes(デフォルト30)のローリングウィンドウで数えられます。そのウィンドウ内でfarmingProtectionKills(デフォルト20)を超えると、丸1ウィンドウの間、自然エリートの報酬からロックアウトされます。ロックアウトの開始時と解除時に、それぞれチャットで通知されます。カスタムボスは対象外です。
権限によるスキルXP特典
戦闘で獲得する武器・防具XPには、権限による倍率を適用できます。特典は報酬の獲得条件を迂回せず、他の方法で付与されるXPにも適用されません。
elitemobs.perks.xp.<perk>.<skill>
上の表の英語スキル名を小文字で指定します(swords、armor、wandsなど)。全スキルにはallを使います。
| 特典 | 倍率 |
|---|---|
10percentboost | 1.10 |
25percentboost | 1.25 |
50percentboost | 1.50 |
double | 2.00 |
150percentboost | 2.50 |
triple | 3.00 |
quadruple | 4.00 |
customboost | skills.ymlのcustomXpPerkMultiplier。デフォルト1.0 |
通常の特典は重複せず、適用可能な最大倍率が使われます。customboostはその選択を上書きし、設定倍率が1.0以下でも優先されます。スキルごとの明示的な権限拒否も尊重されます。カスタム倍率は有限かつ0以上である必要があり、不正な値は1.0に戻されます。
公開スキルXPイベントの前に、結果の小数部分を切り捨てて整数XPにします。たとえばelitemobs.perks.xp.double.swordsは、条件を満たす剣XPだけを2倍にし、防具XPは2倍にしません。
XPの進行
現在のレベルから次のレベルへ進むために必要なXPは、次の式に従います。
レベル1〜100:
xp_to_next_level = 8.5 * current_level ^ 3
レベル100超(ソフトキャップ):
xp_to_next_level = 8.5 * current_level ^ 3 * (1 + ((current_level - 100) ^ 2 / 100))
ソフトキャップの倍率はレベル100で1.0(追加のペナルティなし)であり、二次関数的に増加します。レベル150までに倍率は26倍に達し、それ以上の進行が極めて困難になります。
レベルごとのXP表
下の表は、あるレベルから次のレベルへ進むために必要なXPと、それにおおよそ何体の同レベルモブを倒す必要があるか(防具ではなく武器スキル)を示しています。
| レベル | 次のレベルまでのXP | 同レベルモブのキル数 |
|---|---|---|
| 10 | 8,500 | 85 |
| 25 | 132,812 | 213 |
| 50 | 1,062,500 | 425 |
| 75 | 3,585,937 | 638 |
| 100 | 8,500,000 | 850 |
防具は武器の1/3のレートでXPを獲得するため、防具のレベルアップには上記の数字のおよそ3倍のキル数が必要です。レベル50では、防具だけで同レベルのキルが約1,275体必要ということになります。
戦闘レベル
戦闘レベルは、あなたの強さの総合的な指標です。次のように算出されます。
combat_level = (highest_weapon_skill + second_highest_weapon_skill + armor_skill) / 3
結果は切り捨てられます(整数除算)。
戦闘レベルが決定するもの:
- 周囲にスポーンするエリートモブのレベル
- アクセスできるダンジョンとインスタンスコンテンツ
- スキルXPと自然発生エリートの戦利品に使う報酬レベルの上限。低レベル相手のXP獲得条件には個々のスキルを使用
装備制限には戦闘レベルではなく、対応する武器または防具スキルを使います。レベル20以下のアイテムは対象外です。
戦闘レベルの表示
戦闘レベルは頭上に浮かぶ数字として表示され、ネームタグの表示ルールに従って自分と他のプレイヤーに見えます。パケットベースのテキスト表示を使い、スキルの変化に応じて自動更新します。形式は設定可能です(デフォルト:Combat Lv. X)。[Alpha] Advanced Combat Systemで有効なクラスがある場合は、代わりにそのクラスとレベルがラベルに表示されます。戦闘中は、ラベルの上に❤ 現在値/最大値のヘルス行が表示されます。classLabelWorldExclusionsに記載されたワールドではクラスラベルが非表示になり、クラスを持たないプレイヤーにはそこでも戦闘レベルのラベルが表示されます。
config.ymlのusePassengerCombatLevelDisplayはデフォルトでtrueです。そのため、ラベルはパケット上だけの乗客としてプレイヤーに乗り、徒歩で動いても遅れてついてくることはありません。ほかのプレイヤーからは、これまでどおりプレイヤー名が見えます。falseにすると追従テキストを使い、プレイヤーを追ってテレポートし、短く滑るように動きます。別のエンティティがプレイヤーに乗っている間は、乗客モードでも自動的に追従テキストへ切り替えます。プレイヤー自身の座席にラベルを乗せられる乗り物にプレイヤーが乗っている間は、ラベルがその乗り物に乗ります。戦闘フィードバックを参照してください。
XPバー
スキルXPを獲得すると、次のレベルへの進捗を示すアニメーション付きのボスバーが表示されます。このバーには次の特徴があります。
- XP獲得に合わせて少しずつ伸びるなめらかなアニメーション
- スキル種別ごとに異なる色(例:Swordsは赤、Bowsは緑、Armorは青)
- レベルアップ時の特別なパーティクルとサウンドエフェクト
- 5秒間操作がないと自動的に非表示になる
装備の制限
EliteMobsの装備には、スキルシステムに紐づいたレベル要件があります。エリートアイテムを装備するには、その武器または防具種別のスキルレベルが、アイテムのレベル以上でなければなりません。
例外: レベル20以下のアイテムは、スキルレベルにかかわらず誰でも装備できます。これにより、新規プレイヤーが締め出されることなく、序盤の装備を自由に使えるようになっています。
スキルレベルを超えるアイテムを装備しようとすると、警告メッセージが表示され、そのアイテムはエリートボーナスを一切提供しません。
スキルボーナス
スキルをレベルアップすると、4つのティアにわたって特別な戦闘能力がアンロックされます。各ティアは、そのスキルのボーナスを1つではなく一式アンロックします。
| ティア | アンロックレベル |
|---|---|
| 1 | レベル10 |
| 2 | レベル25 |
| 3 | レベル50 |
| 4 | レベル75 |
ティアをアンロックしてもスロットが増えるわけではありません。武器または防具種別ごとに、アンロック済みのものの中から同時に最大3つのボーナスをアクティブにできます。スキルボーナスは/emメニュー、または冒険者ギルドのスキルボーナスNPCを訪れることで管理します。
skillbonuses/*.ymlファイルは、表示名、説明、アンロックティア、ボーナスの種類、メニューアイコン、loreのテンプレートに加え、バランスの一部も制御します。各ボーナスが設定を参照する場合、プラグインはbaseValue、scalingPerLevel、procChance、cooldownSeconds、maxStacks、stackBonusを読み取ります。これらのキーを参照しないボーナスは、コード内の固定値を使います。どのボーナスがどの値を設定から取得するかは、スキルボーナスを参照してください。
104種類すべてのボーナスとその効果の完全なリストについては、スキルボーナスを参照してください。
通知とUI
スキルシステムは、いくつかの形式のフィードバックを提供します。
- レベルアップ: タイトルメッセージ、チャレンジ達成音、そしてレベルアップごとの不死のトーテムのパーティクルバースト。
- マイルストーン: プレイヤーがマイルストーンレベル(5レベルごと:5、10、15……)に到達したときにのみ、サーバー全体へのブロードキャストが送信されます。通常のレベルアップはブロードキャストされません。このブロードキャストは
dungeons.ymlでオフに切り替えられます。 - 戦闘レベルの表示: 頭上に浮かぶ数字。ネームタグの表示ルールに従って自分と他のプレイヤーに見え、レベルアップ時に自動更新します。
- XPバー: 戦闘中にスキルXPの進捗を示すアニメーション付きのボスバー。
- XP獲得メッセージ: キルごとのXPメッセージ(任意。スパムになりがちなためデフォルトでは無効)。
上記のほとんどはskills.ymlで設定します。マイルストーンのレベルアップブロードキャストとそのメッセージはdungeons.ymlにあります。
管理者コマンド
| コマンド | 権限 | 説明 |
|---|---|---|
/em skill check <player> | elitemobs.skill.check | プレイヤーのスキルレベル、XP進捗、パーセンテージを表示 |
/em skill set <player> <skillType> <level> | elitemobs.skill.admin | 特定のスキルを指定レベルに設定 |
/em skill setAll <player> <level> | elitemobs.skill.admin | すべてのスキルを同じレベルに設定 |
/em debug combat start | elitemobs.admin | 自動化された戦闘システムテストを開始 |
/em debug combat test <type> | elitemobs.admin | 特定の武器種別をテスト(例:swords、bows) |
/em debug combat results | elitemobs.admin | 直近の戦闘テストの結果を表示 |
/em debug combat cancel | elitemobs.admin | 実行中の戦闘テストをキャンセル |
/em skill setのskillType引数は次を受け付けます:ARMOR、SWORDS、AXES、BOWS、CROSSBOWS、TRIDENTS、HOES、MACES、SPEARS, STAVES, WANDS。
サーバー設定
スキルシステムはskills.ymlで設定します。主な設定項目:
| 設定 | デフォルト | 説明 |
|---|---|---|
skillSystemEnabled | true | スキルシステム全体を有効/無効にする |
armorSkillHealthBonusEnabled | true | Armorスキルが最大体力ボーナスを付与するかどうか(レベル1を超えるごとに+1ハート) |
scalePlayerHealthDisplayToVanilla | false | EliteMobsの最大HPは維持しつつ、プレイヤーのHUD上の表示だけをバニラの10ハートに視覚的に戻す |
forceDefaultHealthWhenArmorSkillHealthBonusDisabled | false | 防具の体力ボーナスが無効な場合、参加時にプレイヤーをバニラの最大体力20に強制する |
skillWorldExclusions | (空) | スキルシステムが無効になるワールド名のリスト。これらのワールドにいるプレイヤーは、スキルXP、防具の体力ボーナス、XPバー、戦闘レベル表示を一切受け取りません。全員が平等であるべきイベントワールドに便利です。照合は大文字小文字を区別しません |
classLabelWorldExclusions | (空) | プレイヤーの頭上のクラスラベルだけを非表示にするワールド名のリスト。プレイヤー名、戦闘中のヘルス表示、スキル、XPは変わらず、クラスを持たないプレイヤーには戦闘レベルのラベルが表示されたままです。照合は大文字小文字を区別しません |
skillsMenuTitle | &5&lYour Skills | スキルメニューのタイトル |
showCombatLevelDisplay | true | プレイヤーの上にクラスまたは戦闘レベルのラベルを表示する |
showXPBar | true | 戦闘中にアニメーション付きのXP進捗バーを表示する |
skillBarTitleFormat | &6$skillName &7Lv.$level$xpText | XPバーのタイトルフォーマット |
skillLevelUpTitleFormat | &e&l✦ $skillName LEVEL UP! &7→ &eLv.$level &e&l✦ | レベルアップ時のボスバーのタイトルフォーマット |
combatLevelFormat | &6&lCombat Lv. $level | 戦闘レベル表示のフォーマット |
設定の完全なリファレンスについては、EliteMobs設定ページを参照してください。
[Alpha] Advanced Combat System
クラスの成長・訓練・操作ガイドで、Adventurer、トレーナーの試練、基礎要件、Javaのキー操作を含む一連の流れを確認してください。
[Alpha] Advanced Combat Systemは、EliteMobsの戦闘にクラスとアビリティを追加します。アルファ版へのフィードバックを開発者にお寄せください。plugins/EliteMobs/AdvancedCombatSystem.ymlのenabledは既定でtrueです。falseに設定してEliteMobsをリロードすると無効になります。アルファ期間中のクラス定義とバランスは固定されています。以前のビルドの設定は自動で引き継がれないため、更新後のサーバーを起動する前にこのファイルを設定してください。
/em classでプロフィール、/em class info <class>で形態の説明を開き、/em class select <class>で解除済みの形態を選択します。必要権限はelitemobs.commandです。基本クラスはpaladin、berserker、ranger、cleric、spellcasterです。Spellcasterにはスタッフとワンドを同梱した互換性のあるFreeMinecraftModelsが必要で、不足時はロックされます。スタッフとワンドには登録済みのアイテム識別情報が必要です。通常の棒、槍、ブレイズロッドが自動的に魔法武器になるわけではありません。
Java では F を押してから 1/2/3 で Mobility、Signature、Utility を選びます。選択受付中にもう一度 F を押すと Mobility、左クリックで Signature、右クリックで Utility を選べます。EliteMobs の戦闘コンテンツ内では操作が有効です。allowClassAbilitiesOutsideEliteMobsWorlds は既定で true で、外部でもスニークしながら F を2回押すと、そのセッション中の操作を有効にできます。
GUILD_GREETER NPCはクラス戦闘の有効・無効にかかわらず、武器スキルボーナス選択画面を開きます。クラスの訓練には別のCLASS_TRAINER NPCを訪ねてください。クラスの成長は武器・防具と別で、武器識別情報のないクラス能力のダメージでは武器XPを得られません。