カスタム戦利品テーブル
ボス、宝箱、クエスト、アリーナ向けのカスタムアイテム、バニラアイテム、通貨、コマンドを定義する共通形式です。各エントリを独立に確率判定します。テーブルから当選エントリを 1 つだけ選ぶ方式ではありません。
クラスと難易度に応じた装備の自動配布については、自動クラス戦利品を参照してください。その独立した抽選は uniqueLootList と併用できます。作成したレリック、スクリプト付き装備、特殊報酬はこのテーブルに残します。itemType: CLASS_LOOT のアイテムを参照するエントリはクラス戦利品の選択候補となり、通常のボス死亡時の抽選では除外されます。それ以外のエントリは独立した抽選を維持します。
これは最新のフォーマットであり、使用することが推奨されるものですが、いくつかの代替となる古いフォーマットも存在することに注意してください。
注意: レガシーフォーマットのサポートは、コロン区切りの構文filename.yml:chance:permissionを使用して引き続き利用できます。ただし、新しい設定には以下に示す最新フォーマットが推奨されます。
この旧形式では確率とパーミッションは省略可能なため、filename.yml だけでも 100% でドロップします。コロンで区切られた部分が 4 つ以上ある旧形式のエントリは拒否されます。
すべてのエントリは、そのファイルの読み込み時に検査されます。不明なキーや重複したキー、値のないキー、有限の数値でない chance、整数でない amount・currencyAmount・wave・itemLevel、無効な素材があると、そのエントリは Failed to parse entry ... due to invalid: <reason> の警告とともに拒否されますが、テーブルの残りは読み込まれます。キーは大文字と小文字を区別しません。
用途に応じたキーを使います。ボスは uniqueLootList、宝箱は lootList、クエストは customRewards、アリーナは rawArenaReward です。クエストの customRewards は文字列を受け付けるため、YAML マップではなく filename=...:chance=... のコロン区切り形式を使ってください。
カスタムボスの uniqueLootList では 4 種類すべてが機能します。通常の作成済みエントリの配布は putLootDirectlyIntoPlayerInventory に従います。
| エントリの種類 | putLootDirectlyIntoPlayerInventory: false(デフォルト) | putLootDirectlyIntoPlayerInventory: true |
|---|---|---|
エリートアイテム(filename) | 個人向け地面ドロップ、または装備の共有投票 | 個人インベントリ、または装備の共有投票 |
バニラアイテム(material) | 地面ドロップ | インベントリ。入りきらない分はプレイヤーの足元へ |
エリートコイン(currencyAmount) | 拾えるコインシャワー | 通貨を直接加算 |
コマンド(command=) | コンソールで実行 | コンソールで実行 |
ボス報酬は記録されたダメージ貢献者ごとに抽選し、そのインスタンスボスの報酬ロックアウト対象者を除外します。この作成済み戦利品の処理には、別途 10% のダメージ閾値はありません。ダメージを与えずに共有参加クレジットを得た近くのパーティメンバーには、装備以外のエリートアイテムだけがこの処理で配布されます。バニラ、通貨、コマンドは対象外です。アンチエクスプロイトが発動していると、この死亡戦利品は抑止されます。
EliteMobs のインスタンスボス API を通じて他のプラグインのインスタンス内にスポーンしたボスは、putLootDirectlyIntoPlayerInventory を無視し、パーティー投票やグループ投票も開始しません。その戦利品は常に false 列のとおりボスの位置で地面にドロップし、エリートアイテムは個人ドロップになるため、そのインスタンスのワールド内に残ります。
宝箱も同じ地面/インベントリ設定を使い、クエストとアリーナは直接配布します。4 つの配布元はいずれも以下の種類を扱いますが、クエストは文字列形式のエントリだけを受け付けます。ボスのコマンド戦利品は、貢献者の抽選が成功するたびに実行されます。別のボス死亡コマンド構文は onDeathCommands を参照してください。
エリートアイテムをドロップする:
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
filename | 使用するカスタムアイテムのファイル名を設定します。 | Filename | none |
例
uniqueLootList:
- filename: magmaguys_toothpick.yml
これにより、Mobは MagmaGuy's Toothpick を1個、100%のドロップ確率でドロップします。
一般設定:
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
chance | エントリごとの独立した 1 回の判定。1.0 は 100% です。0.0〜1.0 を指定します。 | Double | 1.0 |
amount | 抽選成功後のアイテム生成数またはコマンド実行回数。通貨には乗算されず、金額は currencyAmount で指定します。 | Integer | 1 |
permission | プレイヤーがこの戦利品を受け取るために必要なパーミッションノードを設定します。エリートアイテム、通貨、コマンドの各エントリでサポートされます。バニラアイテムのエントリは、どちらのフォーマットでもこれを読みません。 | String | none |
amount <= 0 または chance <= 0 の場合は抽選しません。数値でない、または有限でない chance があると、ファイルの読み込み時にそのエントリは拒否されます。chance が 1.0 を超えると必ず成功します。50 のような百分率ではありません。成功後にコピーごとの再抽選は行いません。クエストのプレビューは独自に抽選するため、最終報酬の予約ではありません。
例
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
amount: 10
permission: elitemobs.loot.rare
これにより、Mobは MagmaGuy's Toothpick を10個、50%のドロップ確率でドロップしますが、elitemobs.loot.rareパーミッションを持つプレイヤーに対してのみです。
エリートコインをドロップする:
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
currencyAmount | ドロップされるコインの量を設定します。 | Integer | none |
currencyAmount は整数である必要があり、通貨を配布するには正の値でなければなりません。正の amount は金額を増やしませんが、amount <= 0 はエントリを無効にします。ゼロまたは負の currencyAmount はどちらの形式でも読み込まれますが、何も配布しません。
直接の通貨報酬は経済ハンドラーを経由し、ギャンブルの借金を先に返済します。地面への配布は拾えるコインシャワーとなり、Harvester スキルのボーナスを受けられます。通貨エントリの直接配布にはそのボーナスは付きません。シャワーのコインは抽選時ではなく回収時に加算されます。
例
uniqueLootList:
- currencyAmount: 344
chance: 0.5
条件を満たすボス貢献者ごとに、50% の確率で基本報酬 344 Elite Coins を与えます。宝箱で同じエントリを使う場合は lootList に記述します。
バニラアイテムをドロップする:
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
material | アイテムの素材を設定します。素材名はどちらの形式でも大文字と小文字を区別しません。type も別名として使えますが、material と type の両方を設定するとエントリは拒否されます。 | Material | none |
例
uniqueLootList:
- material: APPLE
chance: 0.3
amount: 5
これにより、Mobは リンゴ を5個、30%のドロップ確率でドロップします。
地面とインベントリのどちらも、エントリごとに 1 回だけ抽選します。この例では成功するとリンゴを 5 個すべて配布します。直接配布はボス、宝箱、クエスト、アリーナに対応し、インベントリに入らない分は足元に落とします。AIR 素材と正でない数量は何も配布しません。バニラエントリは permission を検証しません。
戦利品ドロップ時にコマンドを実行する:
戦利品がドロップしたときにコンソールコマンドを実行できます。これは、他のプラグインと統合したり、カスタム報酬を提供したりするのに便利です。コマンドエントリはコロン区切りの文字列フォーマットを使用でき、クエストの customRewards 以外では YAML マップも使用できます。
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
command | 実行するコンソールコマンドを設定します。プレイヤー名のプレースホルダーとして%player%を使用します。 | String | none |
文字列フォーマットでは、コマンドに : を含めることはできません。エントリがその文字で分割されるためです。コマンド内の = は問題ありません。コロンが必要なコマンドには YAML マップを使ってください。
コマンドも他のエントリと同様に chance を 1 回判定します。成功後、コマンドを amount 回実行します。2 回目の判定や反転判定はありません。
chance=1.0(デフォルト)は必ず成功します。chance=0.5は 50% の確率で成功します。amount=3はその 1 回の抽選が成功すると 3 回実行します。
プレイヤーは permission を満たす必要があり、コマンドを空にすることはできません。コマンド自体の要件も適用されます。コンソールとして実行するため、受取人の指定には %player% を使ってください。
例
customRewards:
- command=give %player% diamond 1:chance=0.5:amount=1:permission=elitemobs.loot.command
このクエスト報酬は報告時に 50% の確率でコンソールから give <player> diamond 1 を実行します。%player% はプレイヤー名に置換され、elitemobs.loot.command が必要です。同じ文字列をボスの uniqueLootList にも使え、条件を満たす貢献者ごとに抽選します。
アリーナ報酬:
アリーナの戦利品テーブルを作成する際は、必ず戦利品テーブルをuniqueLootList:ではなくrawArenaReward:で始めてください。
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
wave | この報酬を与えるクリア済みのウェーブ。すべての種類のエントリで、どちらの形式でも使用できます。 | Integer | -1 |
itemLevel | 戦利品ドロップのレベルを設定します。アリーナでのみ使用され、意味を持つのはエリートアイテム(filename)エントリだけです。どちらの形式でも使用できます。 | Integer | 1 |
- ウェーブ報酬として登録されるのは、
waveが1以上のエントリだけです。waveのないアリーナ報酬エントリは解析され受け付けられますが、どのウェーブからも配られることはありません。 itemLevelのデフォルトはアリーナやプレイヤーのレベルではなく1です。したがって、明示的なitemLevelなしにアリーナが与えるscalableのエリートアイテムは、レベル 1 のアイテムとしてドロップします。
例
rawArenaReward:
- material: BREAD
wave: 1
amount: 10
chance: 0.5
- filename=magmaguys_toothpick.yml:wave=1:itemLevel=2
ウェーブ 1 の後、パンのエントリは 50% の抽選を 1 回行います。成功すれば 10 個配布し、入りきらない分は地面に落とします。カスタムアイテムは確率 100% でレベル 2 の MagmaGuy's Toothpick を 1 個要求しますが、生成レベルにはアイテム定義のスケーリング規則が適用されます。これらの報酬より先にアリーナの対象資格とレベル差が確認されます。
2 つのエントリで形式が異なるのは、両方の書き方を示すためだけです。wave と itemLevel はどちらの形式でも機能します。
インスタンスダンジョン:
| キー | 説明 | 値 | デフォルト |
|---|---|---|---|
difficultyID | 受取人がいるダンジョンの難易度でエリートアイテムを絞り込みます。YAML マップでは ID のリストも使用できます。 | 文字列、数値、リスト | none |
difficultyID はエリートアイテム(filename)の YAML マップとコロン区切り文字列で読み取られます。マップでは difficultyID: [normal, hard] のようなリストも使用できます。バニラ、通貨、コマンドのエントリでは不明なキーとして拒否されます。ID と名前はダンジョンの難易度リゾルバーに従い、0/1/2、Normal/Hard/Mythic、またはパッケージの Easy/Medium/Hard 規則を使います。不明な ID は完全一致で比較します。空のリストや空白の ID があると、ファイルの読み込み時にそのエントリは拒否されます。
このフィルターはボス、宝箱、クエスト、アリーナのエリートアイテム報酬で確認されます。ただし、受取人が現在ダンジョンインスタンス内にいる場合だけ制限し、それ以外では無視されます。インスタンスボス API を通じて他のプラグインのインスタンス内にスポーンしたボスは、そのプラグインが割り当てた難易度で絞り込まれます。通常のアリーナはダンジョンインスタンスではありません。宝箱、クエスト、アリーナ報酬は共有装備投票に入らず、個人配布のままです。
ボスからの配布では次のように動作します。
- 難易度が
difficultyIDと一致する場合:装備はボスの共有グループ戦利品テーブルに入ります。装備以外は個人配布です。条件を満たす戦闘参加者が共有装備を獲得でき、そのボスのロックアウト対象者は投票前に除外されます。 - ダンジョンの難易度が一致しない場合:そのエントリはスキップされます。
- プレイヤーがダンジョンインスタンス外にいる場合:
difficultyIDは無視されます。装備は近くに対象パーティメンバーが 2 人以上いればパーティの Need / Greedを使い、それ以外は通常の個人配布です。装備以外は個人配布のままです。
difficultyID フィルターがなくても装備はパーティ戦利品に入る場合がありますが、このフィールドが有効にするダンジョン専用の共有テーブル分岐は実行されません。クラス戦利品の候補には、前述の独立した選択・難易度規則が適用されます。
例
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
difficultyID: 1
これにより、プレイヤーが難易度1でボスを倒した場合、Mobは MagmaGuy's Toothpick を1個、50%のドロップ確率でドロップします。