2016年03月29日
ツクールMV 戦闘不能から回復時でも継続するステートの実装(魔法使用禁止フロアなど)
■戦闘不能から回復時でも継続するステートの実装(魔法使用禁止フロアなど)
特定マップで魔法系スキルを禁止したいというアイディアがあり、実現するための方法を見つけました。
・魔法を禁止するだけなら、デフォルトの「沈黙」ステートがあります。
この沈黙ステートを専用にカスタマイズ(画像では「通信圏外」ステート)し、解除条件をすべて「なし」にして、アイテムの治療対象から外すようにすれば、特定マップに留まるかぎり沈黙状態になります。
・特定マップに移動するときに「沈黙」ステートを付与し、特定マップから離れるときに「沈黙ステート」を解除するようにします。
しかしこの方法では、戦闘不能→戦闘不能を回復した時に、ステートが消えてしまうことに気づきました。
そこで利用させて頂いたのがトリアコンタン様のステート自動付与プラグインAutomaticState.jsです。
トリアコンタン様のプラグイン
https://docs.google.com/spreadsheets/d/1BnTyJr3Z1WoW4FMKtvKaICl4SQ5ehL5RxTDSV81oVQc/edit#gid=1784135383
******抜粋
26.ステート自動付与プラグインAutomaticState.js
条件を満たしている間、指定したステートを付与します。
条件にはHP、MP、TP、装備品、スイッチが利用でき、特定のアクターや敵キャラのみを対象にすることもできます。
******抜粋
【準備】
AutomaticState.jsを導入、プラグイン管理で有効にする
AutomaticState.js
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/AutomaticState.js
【手順】
1.ステート有効のトリガーとなるスイッチを作成します。
ここでは73番スイッチの通信不可が相当します。
2.対象のステートにステートが有効になる条件を記述します。
詳細の記述方法はプラグイン内の説明をご覧ください。
ここでは73番のスイッチがON時にステートを有効にするので「<ASスイッチ:73>」とします。
またアクターIDを指定することでステート対象範囲のアクターを指定します。(指定しないと敵キャラも同じステートになったため、明示的に指定しました)
ここではアクター1番を対象とするため「<ASアクター:1>」と記述します。
★
3.ステートを有効にするフロア切り替え時に1で作成したスイッチをONにします。
【検証結果】
・戦闘不能からの回復時にも、スイッチが有効な限り、ステートが有効になることを確認
(バトル時、非バトル時の両方で動作確認)
・戦闘不能状態ではステートが消える(戦闘不能なので問題なし)
【補足】
・2の部分は<ASアクター:>と記述すればアクター全体がステート対象になるようです。
******プラグインヘルプより********
2. 自動付与ステートの対象
<ASアクター:(アクターID)>
ステート自動付与の対象を指定したアクターのみに設定する。
IDの指定がない場合、全てのアクターに有効になる。
****************************************
しかし私のテスト環境では他プラグインと競合したためか、アクターIDを明示的に指定しないとアクター1番しかステート対象にならない事象が発生しました。
そのため<ASアクター:1>用ステート、<ASアクター:2>用ステート…のようにアクター人数分のステートを作成することで解決しました。
もし同様の事象が発生した場合は、このように回避してみてはいかがかと思います。
再現した時の導入プラグインは、次の記事に記載しております。
https://fanblogs.jp/tabirpglab/archive/394/0
特定マップで魔法系スキルを禁止したいというアイディアがあり、実現するための方法を見つけました。
・魔法を禁止するだけなら、デフォルトの「沈黙」ステートがあります。
この沈黙ステートを専用にカスタマイズ(画像では「通信圏外」ステート)し、解除条件をすべて「なし」にして、アイテムの治療対象から外すようにすれば、特定マップに留まるかぎり沈黙状態になります。
・特定マップに移動するときに「沈黙」ステートを付与し、特定マップから離れるときに「沈黙ステート」を解除するようにします。
しかしこの方法では、戦闘不能→戦闘不能を回復した時に、ステートが消えてしまうことに気づきました。
そこで利用させて頂いたのがトリアコンタン様のステート自動付与プラグインAutomaticState.jsです。
トリアコンタン様のプラグイン
https://docs.google.com/spreadsheets/d/1BnTyJr3Z1WoW4FMKtvKaICl4SQ5ehL5RxTDSV81oVQc/edit#gid=1784135383
******抜粋
26.ステート自動付与プラグインAutomaticState.js
条件を満たしている間、指定したステートを付与します。
条件にはHP、MP、TP、装備品、スイッチが利用でき、特定のアクターや敵キャラのみを対象にすることもできます。
******抜粋
【準備】
AutomaticState.jsを導入、プラグイン管理で有効にする
AutomaticState.js
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/AutomaticState.js
【手順】
1.ステート有効のトリガーとなるスイッチを作成します。
ここでは73番スイッチの通信不可が相当します。
2.対象のステートにステートが有効になる条件を記述します。
詳細の記述方法はプラグイン内の説明をご覧ください。
ここでは73番のスイッチがON時にステートを有効にするので「<ASスイッチ:73>」とします。
またアクターIDを指定することでステート対象範囲のアクターを指定します。(指定しないと敵キャラも同じステートになったため、明示的に指定しました)
ここではアクター1番を対象とするため「<ASアクター:1>」と記述します。
★
3.ステートを有効にするフロア切り替え時に1で作成したスイッチをONにします。
【検証結果】
・戦闘不能からの回復時にも、スイッチが有効な限り、ステートが有効になることを確認
(バトル時、非バトル時の両方で動作確認)
・戦闘不能状態ではステートが消える(戦闘不能なので問題なし)
【補足】
・2の部分は<ASアクター:>と記述すればアクター全体がステート対象になるようです。
******プラグインヘルプより********
2. 自動付与ステートの対象
<ASアクター:(アクターID)>
ステート自動付与の対象を指定したアクターのみに設定する。
IDの指定がない場合、全てのアクターに有効になる。
****************************************
しかし私のテスト環境では他プラグインと競合したためか、アクターIDを明示的に指定しないとアクター1番しかステート対象にならない事象が発生しました。
そのため<ASアクター:1>用ステート、<ASアクター:2>用ステート…のようにアクター人数分のステートを作成することで解決しました。
もし同様の事象が発生した場合は、このように回避してみてはいかがかと思います。
再現した時の導入プラグインは、次の記事に記載しております。
https://fanblogs.jp/tabirpglab/archive/394/0
【このカテゴリーの最新記事】
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/4902569
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック