ボスフェーズの作成
ボスフェーズはカスタムボスのサブメカニックです。これらのフェーズの背後にあるシステムは非常に柔軟で強力なため、この機能を十分に活用できるように、専用の説明が必要です。
ボスフェーズはどのように機能しますか?
ボスフェーズは、以下の設定フォーマットを使用して、EliteMobsの任意のカスタムボスに追加できます:
phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y
注意:最初にスポーンするボス(他のすべてのフェーズをリストするphases:エントリを含む)がフェーズ1のボスです。フェーズ1のボスファイルは、自身のphases:エントリに自分自身をリストすべきではありません。
このメカニックの基本的な意図は、管理者が戦闘中にカスタムボスの属性を変更できるようにすることです。上記の設定フォーマットを使用することで、フェーズごとに設定ファイルを完全に変更できるため、パワー、ダメージ倍率、体力倍率、エンティティタイプ、変装、装備している防具など、99.99%の属性を変更できます。
これを実現するために、EliteMobsは戦闘中にボスを削除し、即座に次のフェーズのバージョンに置き換えます。このプロセスは瞬時に行われるため、意図的に派手にしたい場合を除き、かなりシームレスになる傾向があります。ボスは移行後、スムーズな視覚効果を確保するために1秒間の戦闘猶予期間を受けます。
例
この例のフェーズボスを見てみましょう:
ファイル: phase_1_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.yml
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30
ファイル: phase_2_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml
ファイル: phase_3_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain
これは有効なフェーズボスを構成します。phase_1_boss.ymlをスポーンすると、上記の属性を持つStrayがスポーンします。体力が_60%_までダメージを受けると、設定ファイルに- phase_2_boss.yml:0.60(phase_2_boss.ymlはそのカスタムボスのファイル名、0.60は60%の体力)と記載されているため、phase_2_boss.ymlで形成されたカスタムボスと同じ場所で即座に置き換えられます。_フェーズ2のボスは、そのフェーズに変更されるときに60%の体力でスポーンすることに注意してください。_ボスはphase_2_boss.ymlファイルにリストされているパワーを持ちます。フェーズ2のボスが体力の30%までダメージを受けると、フェーズ3に設定されたボスがスポーンします。フェーズ3のパワーは以前のものとは無関係であることに注意してください - ほぼすべての他の属性と同様に、フェーズ間でパワーを完全に変更できます。
上級
継承されるメカニック
フェーズ間で変更されないものリストは次のとおりです:
-
チェーン内の最初のフェーズボスが、ボスが経過するフェーズを決定します。つまり、フェーズ内の他のボスにphasesエントリを入れるべきではありません。
-
脅威テーブル/ダメージテーブルは同じままであり、戦利品の分配と高度な敵対システムはフェーズ変更の影響を受けません
-
フェーズの切り替えは失われた体力の%に基づいており、フェーズ間で保持されます。つまり、ボスが50%の体力でフェーズ2に入るように設定されている場合、フェーズ1のボスを置き換えるために現れるボスは依然として50%の体力になります。これはまた、各フェーズが問題を引き起こすことなく完全に異なる量の体力を持つことができることを意味します。
-
フェーズボスは、デフォルトの戦闘外ボス再生システムを介して完全な体力まで回復された場合、フェーズ1に戻ります
-
リージョナルボスでもあるフェーズボスは、すべてのフェーズで同じリーシュ半径とタイムアウトメカニックを共有し、リスポーンタイマーが終了した後、フェーズ1のボスとしてリスポーンします。リスポーンクールダウンおよびその他のリージョナルボス設定は、常にフェーズ1のボス設定から取得されます。
フェーズ固有のスポーン場所
デフォルトでは、ボスはフェーズ間を移行する際に現在の場所に留まります。ただし、phaseSpawnLocation設定を使用して、フェーズに入るときにボスを特定の場所にテレポートさせることができます:
ファイル: phase_2_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml
phaseSpawnLocation: world_name,100,64,100,0,0
また、ボスを同じワールド内に保ちながらテレポートすることもできます:
phaseSpawnLocation: same_as_boss,100,64,100,0,0
これは、ボスが別のアリーナや場所にテレポートする劇的なフェーズ移行を作成するのに便利です。
警告
最初は直感に反するかもしれない方法で機能するメカニックのリストは次のとおりです:
-
フェーズボスが任意のフェーズで殺された場合、そのフェーズの戦利品をドロップします。これは、誰かがフェーズボスを速すぎて(1発で)殺すことに成功した場合、実際に死亡し、そのボスファイルに設定されている戦利品をドロップすることを意味し、必ずしも最終フェーズではない可能性があります。これを修正するには、このフェーズボスのすべてのボスファイルで戦利品テーブルを同じに設定するか、フェーズボスが数発で殺すことができないように十分なHPを持っていることを確認します。あるいは、フェーズをスキップできる人のために特別な戦利品テーブルを用意することもできます。
-
フェーズボスは実際に戦闘中にカスタムボスをスポーンさせるため、スポーン時に完全なスポーンルーチンを実行します。そのため、スポーンメッセージやスポーン時に実行されるコマンドには注意してください。さらに、フェーズボスはフェーズを変更しても死亡せず、単に他のものと交換されるだけです。これは、死亡時に実行されるコマンドが最後のフェーズボスに対してのみ実行されるか、プレイヤーが十分なダメージを与えてフェーズをスキップすることに成功した場合にのみ実行されることを意味します。スポーン時に実行されるコマンドは、フェーズ変更にフックするために使用できます。*注意:*完全な体力に再生されたことによりボスがフェーズ1にリセットされたときは、スポーンメッセージは送信されません。ただし、戦闘中にフェーズ2、3などに移行する際、およびリージョナルボスがクールダウン後にリスポーンする際には、スポーンメッセージが送信されます。
-
フェーズボスは、フェーズ間でマウントされた状態になったり、マウントされなくなったりすることができます。マウントが死ぬ前にフェーズボスが殺された場合、マウントは次のフェーズまで持続します。ボスが完全に再生された場合、マウントは削除され、ボスはマウントされなくなります(フェーズ1でエンティティをマウントするように設定されている場合を除く)。
-
フェーズ間で新しいカスタムボスがスポーンされるため、1回限りのスポーンメカニックはフェーズ間および完全な回復時にリセットされます。
ヒントとコツ
-
装備とエンティティタイプが戦闘中に変更できるという事実を使用して、戦闘を通じてボスをますます(またはますます少なく)危険に見せることができます
-
可能ですが、特定の設計目標がない限り、フェーズボスが持つパワーがフェーズ間で大幅に変更されないことが最善です。プレイヤーは戦闘を通じて自然に感じられる進行を楽しむ可能性が高いためです。
-
フェーズ間でコマンドを実行するためにonSpawnコマンドを使用できます
-
song設定オプションを使用して、各フェーズに異なる音楽を設定できます。ボスが新しいフェーズに入ると、音楽は自動的に移行します。 -
フェーズを使用して、ボスを近接モードから遠距離モードに切り替えたり、その逆を行ったりできます
-
フェーズボスは、多くのHPを持つタフなボスとして構築されました。通常、ダンジョンの最終ボスエンカウンターまたは大規模なワールドボスとして最適です。
-
エンカウンターを設計する際は、フェーズ間で援軍がプレイヤーに殺されない可能性があることを覚えておいてください。
-
ボスは任意の数のフェーズを持つことができますが、フェーズが多いほど、各フェーズを重要にするために多くの体力が必要になります。
API統合
プラグイン開発者向け:EliteMobsはボスがフェーズ間を移行するときにElitePhaseSwitchEventを発生させます。このイベントを使用して、フェーズ移行中にカスタム動作やエフェクトを作成できます:
@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// ここにカスタムロジックを記述
}