カスタム援軍の作成
ボスの powers リストに援軍エントリを追加すると、戦闘中に別のカスタムボスを召喚できます。
カスタムボスを作成する手順:
- 援軍を召喚するメインのカスタムボスを作成します
- 援軍用のカスタムボスを作成します。カスタムボスはバニラの Mob より強くすることもできますが、弱くすることもできることを覚えておいてください。
- 設定ファイルに正しい援軍行を追加します
援軍行の作成
次のような形式のカスタムボスがあると仮定します:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
そして、これに援軍を追加したいとします。そのような援軍の一例は次のようになります:
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
そして、これを有効にするために powers リストに追加します:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
これで援軍がボスエンティティに追加されました。しかし、ご覧のとおり、ここにはカスタマイズできるオプションがいくつかあります。それらを見ていきましょう。
全てのカスタム援軍オプション
ヒント: EliteScript を使って援軍を召喚することもできます。詳しくはこちら。
summonType
これは必須フィールドです。援軍がいつスポーンすべきかを設定します。
| Key | Values | Default |
|---|---|---|
summonType | Special [1] | none(必須) |
例
summonType: ON_HIT
Special [1]
| Key | Description |
|---|---|
ONCE | 条件を満たすプレイヤーの攻撃ごとに、確率判定が成功するまで一組の召喚を試みます。下記の攻撃条件を参照してください。 |
ON_HIT | 条件を満たすプレイヤーの攻撃ごとに、chance に従って一組の召喚を試みます。 |
ON_COMBAT_ENTER | ボスが戦闘に入ったときに援軍をスポーンさせます (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | 特殊: これは特に、ボスが戦闘に入ったときにドラゴン戦用のエンドクリスタルを設置するためのものです(1) |
ON_DEATH | ボスが死亡したときに援軍をスポーンさせます |
GLOBAL | ボスのスポーンライフサイクルが続く間、直ちに、そして 10 秒ごとに amount 体を予約します。戦闘開始は不要です。各援軍は customSpawn でボスのワールドのプレイヤーと位置を選びます。追跡中の全体数がそのワールドのプレイヤー数の 30 倍に達すると、組内の以降の召喚はそれぞれ省略されるため、数がその上限を超えることはありません。customSpawn が必須です。 |
(1) 戦闘開始は、プレイヤーからの被ダメージ、プレイヤーへの与ダメージ、プレイヤーのターゲット取得から発生します。戦闘を離れて再開すると、この種の援軍も再度発動できます。ONCE ではありません。
ONCE の状態は現在解析されているエントリごとに保持され、複数フェーズの戦闘全体では共有されません。パワーを再解析するフェーズ変更では新しいエントリができます。一組の処理がスポーン試行まで進めば、スポーンを阻止されても ONCE を消費する場合があります。生きた援軍の出現を保証するものではありません。
filename
これは必須フィールドで、どの援軍をスポーンさせるかを設定します。このフィールドが必須でない唯一の例外は summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 設定を使用する場合です。エンドクリスタルはエリートではないためです。
| Key | Values | Default |
|---|---|---|
filename | Filename | none |
例
filename: test_boss.yml
重要: filename は custombosses 内の既存のボスファイルを参照する必要があります。無効な参照では援軍が生成されず、コンソールに警告が出ます。filename のないエントリー(クリスタルのエントリーを除く)、有限の数値でない chance、3 つの有限の数値でない location を持つエントリーは、ボスが作成されるたびに破棄され、ボスファイル名を示す Invalid reinforcement 警告が出ます。
最小限の実用性
summonType: SUMMON_TYPE と filename: filename.yml だけで、カスタム援軍を作成するのに十分です。以下の例はこれを示しています。
注意: キーは大文字と小文字を区別せず、summonType と SUMMONTYPE はどちらも使えます。ON_HIT などの列挙値は、上記の大文字表記と完全に一致させてください。ファイル名も参照先の定義と一致させます。
例
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
ただし、より複雑なものが必要な場合は、以下を読み進めて、これらのオプションでほかに何ができるかを確認してください。
chance
一組全体に対する確率判定を設定する任意フィールドです。ONCE、ON_HIT、ON_COMBAT_ENTER、ON_DEATH に適用されます。GLOBAL と ON_COMBAT_ENTER_PLACE_CRYSTAL では使いません。ONCE の判定に失敗しても、次の条件を満たす攻撃で再試行できます。
| Key | Values | Default |
|---|---|---|
chance | Double | 1.0 |
例
chance: 0.5
カスタム援軍をスポーンさせる確率が 50% であることを表します。
chance には 0.0 から 1.0 の有限値を使います。ON_HIT と未使用の ONCE では、プレイヤーのダメージイベントが未キャンセルで、ボスに生きたエンティティと有効な AI があり、パワーが抑制されておらず、イベントのダメージが 3 以上である必要があります。条件を満たす攻撃ごとに独立した判定を一組全体に行います。
ON_HIT と ONCE は、パワー単位とボス全体のクールダウンを無視します。EliteScript の Cooldowns.global や Lua の cooldowns.set_global(...) も同様です。上記の攻撃条件は残ります。繰り返し召喚の量は chance と amount で調整してください。
/em debug を有効にしてボスを攻撃します。[CustomSummon] のメッセージには、攻撃の拒否、確率判定の失敗、計算された位置、通常スポーンが生きたエンティティを生成したかが表示されます。リージョナル援軍は後から初期化されるよう予約されます。パワー抑制時には、現在は抑制専用の説明ではなく一般的な拒否メッセージが出ます。debug が無効ならこれらのメッセージも無効です。
location
location: x,y,z はオプションの設定フィールドで、管理者が援軍の位置をブロック数だけオフセットできるようにします。このオプションについて知っておくべき重要な概念は次のとおりです:
オフセット位置は相対的です。 つまり、location: 0,10,0 はボスのちょうど 10 ブロック上に援軍をスポーンさせるのであって、ワールド座標 0,10,0 にスポーンさせるのではありません。
相対位置はリージョナルボスでは異なります。 リージョナルボスは常にスポーン地点を相対位置の原点として使用します。つまり、ボスのスポーン地点がどこかが分かっていてブロックを数えれば、援軍ボスを特定の位置にスポーンさせることができます。Binder of Worlds の隠れ家は、ドラゴンボスがどこにいても、チャレンジタワーのボスを極めて特定のブロック位置にスポーンさせるためにこれを利用しています。
距離の測定を誤ると、ボスはブロックの中にスポーンします。
| Key | Values | Default |
|---|---|---|
location | String | none |
例
location: 0,10,0
非リージョナルなカスタムボスの場合、ボスがどこにいても、そのちょうど 10 ブロック上に援軍をスポーンさせます。
リージョナルなカスタムボスの場合、ボスがどこにいても、リージョナルボスのスポーン地点のちょうど 10 ブロック上に援軍をスポーンさせます。
重要な注意: これは特に summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL の場合は必須フィールドです!
lightningRod
summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 専用です。ボスとクリスタルが有効な間、直ちに、そして 5 秒ごとに攻撃を開始します。各攻撃は約 3 秒の警告パーティクルの後、雷と下向きの爆発する火の玉を生成します。位置はクリスタルと同じ高さで X/Z を -15 から 14 ずらし、地面への投影はしません。クリスタルはエリートとして印が付き、援軍として追跡されます。Mob の戦闘対象は継承しません。
これは他のカスタム援軍とは併用できません。それらの種類の能力は powers に依存すべきだからです。
| Key | Values | Default |
|---|---|---|
lightningRod | Boolean | false |
例
lightningRod: false
inheritAggro
カスタム援軍にボスの脅威レベルを継承させるオプションの設定フィールドです。
召喚者の脅威テーブルをコピーし、援軍がその最大脅威の対象を選べるようにします。脅威には回復や挑発も含まれ、単なるダメージ順位ではありません。ダメージや報酬への貢献度はコピーしません。
| Key | Values | Default |
|---|---|---|
inheritAggro | Boolean | false |
例
inheritAggro: false
amount
判定に成功した一組のカスタムボス数を設定します。正の整数を使ってください。クリスタル型は常にエントリごとに 1 個を配置し、amount を無視します。
| Key | Values | Default |
|---|---|---|
amount | Integer | 1 |
例
amount: 1
spawnNearby
カスタム援軍を、ボスの上や特定の相対位置ではなく、近くにスポーンさせるかどうかを設定するオプションの設定フィールドです。
計算された位置に対して X/Z の整数オフセットを -15 から 14 の範囲で選び、最大 30 回試します。基準には location のオフセットも含みます。各試行はその Y からワールドの建築上限の 2 ブロック下まで上方向に、通過できないブロックの上の空気 2 ブロックを探します。すべて失敗すると元の計算位置を使います。この補助検索は Custom Spawn のプレイヤー距離・光・ワールドのフィルターを使いません。通常のボススポーンの保護チェックは残ります。
| Key | Values | Default |
|---|---|---|
spawnNearby | Boolean | false |
例
spawnNearby: false
inheritLevel
カスタム援軍が、援軍しているカスタムボスのレベルを継承するかどうかを設定するオプションの設定フィールドです。
| Key | Values | Default |
|---|---|---|
inheritLevel | Boolean | false |
例
inheritLevel: false
customSpawn
グローバル援軍にのみ使用される設定フィールドです。カスタムスポーン設定を使って、援軍がどこにスポーンできるかを設定します。
カスタムスポーンの地表・光・高さ・位置のチェックを使います。同ガイドで説明しているバイオームフィルターと時刻待機の動作も確認してください。グローバル援軍は召喚者のスポーンワールドの全プレイヤーから直接選びます。通常の選択で行うデータ読み込み、ValidWorlds.yml、validWorlds、validWorldEnvironments、インスタンス、Mob スポーンルールのチェックを省略します。グローバル処理は filename、amount、customSpawn を使い、chance、location、spawnNearby、inheritAggro、inheritLevel は適用しません。
| Key | Values | Default |
|---|---|---|
customSpawn | Filename | none |
例
customSpawn: normal_surface_spawn.yml
difficultyID
援軍を特定のインスタンスダンジョン難易度に限定します。難易度名、数値 ID、またはそれらのリストを指定できます。難易度の照合を参照してください。
| Key | Values | Default |
|---|---|---|
difficultyID | String または文字列のリスト | none |
ボスに有効な難易度を持つインスタンスダンジョンがあり、フィルターが一致しなければ、解析前にエントリ全体を破棄します。明示的に空または無効なフィルターは、どの難易度にも一致しません。制限しない場合はキーを省略します。ダンジョンに紐付いたインスタンスの外では、このフィルターは無効です。
例
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic
大規模な援軍を組み立てる
これまでのフィールドの大半を使って、援軍の例を作成してみましょう:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
これは次のことを行います:
- カスタム援軍を作成します
- カスタム援軍はカスタムボスが戦闘に入ったときにスポーンします(
summonType: ON_COMBAT_ENTER) - 召喚されるカスタム援軍は
test_boss.ymlのものです(filename: test_boss.yml) - この例ではボスを中心に、
spawnNearbyで説明した地面の探索を行います(spawnNearby: true)。 - 援軍は召喚者の脅威テーブルをコピーして対象を選びます(
inheritAggro: true)。 test_boss.ymlの設定にかかわらず、カスタム援軍は援軍しているカスタムボスと同じレベルになります(inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
これは次のことを行います:
- カスタム援軍を作成します
- カスタム援軍は戦闘開始時に設置されるエンドクリスタルになります(
summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL) - クリスタルは近くの X/Z オフセット位置に、遅延付きの雷と火の玉の攻撃を繰り返します(
lightningRod: true)。
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true
これは次のことを行います:
- カスタム援軍を作成します
- カスタム援軍はボスが死亡したときにスポーンします(
summonType: ON_DEATH) - 召喚されるカスタム援軍は
revenge_minion.ymlのものです(filename: revenge_minion.yml) - 3 体の援軍がスポーンします(
amount: 3) - 援軍は死亡位置を中心に地面の探索を行います(
spawnNearby: true)。
では、これをカスタムボスに適用します:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
これで完了です! さらにいくつかのヒントを紹介します:
- フィールドは任意の順序で設定できますが、常に
summonTypeを最初にすることを推奨します! - 新しいコンテンツでは、旧式の
summon:やsummonable:の文字列形式ではなく、ここで示した YAML マップ形式を使ってください。これらの文字列も引き続き読み込まれます。EliteMobs はメモリ上で変換し、ボスファイルは書かれたままにします。フィールドが欠けている、空である、または重複している旧式の文字列は、警告とともに破棄されます。