基本コマンドが使えなくなるステートを作成する

p-sight: Annex - Make AntiCommand State

Tag: 戦闘関連 / システム関連 / ステート

説明

「攻撃」「スキル」「防御」「道具」のいずれか、あるいはすべてが使えなくなるステートを作成します。

このスクリプトと同時に、敵の思考方式を変更するを導入し、 さらにスキルが使えない場合はそれを使おうとしない設定にしている場合は、 ソースを敵の思考方式を変更するEX版(ソースへの直リンク)に変更してください。
これを導入することで通常攻撃や防御が出来ない場合は、それを候補に追加しなくなります。

設定可能な項目

ANTI_ATTACK_STATE

通常攻撃が使えなくなるステート名の配列です。

ANTI_SKILL_STATE

スキルが使えなくなるステート名の配列です。

ANTI_GUARD_STATE

防御ができなくなるステート名の配列です。

ANTI_ITEM_STATE

アイテムが使用不可能になるステート名の配列です。
ただし、敵にこのステートを適用しても敵はアイテムを使わないので関係ありません。

上記四つの項目は以下のように、重複させて設定することが可能です。
下記の場合、「ドンアク」ステートに掛かると攻撃とスキルの両方が使えなくなります。

ANTI_ATTACK_STATE = ["ドンアク", "攻撃不可"]
ANTI_SKILL_STATE = ["スキル封印", "ドンアク"]
ANTI_GUARD_STATE = []
ANTI_ITEM_STATE = ["道具封印"]

ANTI_STATE_ALL_KILLED_COMMAND

すべてのコマンドが使えない時、「攻撃」の部分にこのテキストが表示されます。
また、このコマンドを選ぶと、行動は「何もしない」になります。

使い方

上記で設定した名前のステートを作成してください。そうすると、そのステートに掛かった時に設定された属性を含むスキルが使えなくなります。

また、パーティー全員がアイテム、スキルが使用不可状態ならばメニューからもアイテム、スキルを使うことが出来なくなります
つまり設定や状況によっては、イベント以外では絶対回復することができないという状況に陥ることがあるので、アイテムや魔法以外の回復手段(宿屋など)を作って置くようにしましょう。

他のスクリプトとの競合について

再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Scene_Menu
 def main

class Scene_Battle
 def main

aliasを使って再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Game_Battler
 def skill_can_use?(skill_id)

class Scene_Menu
 def update_command

class Scene_Battle
 def phase3_setup_command_window
 def update_phase3_basic_command
 def make_item_action_result
 def make_basic_action_result

ソースと導入方法

導入方法

スクリプトの「Scene_Battle」より下、「Main」よりも上に以下のソースを丸々挿入してください。

ソースと更新履歴

Make AntiCommand State: ソース

更新履歴

2006 06/12 公開。


2008 4/17 スキルコマンドが、攻撃不可ステートの時に不可能色になるバグを修正。 変更部分は下記の太字部分。

def reset(actor)   # コマンド名を一旦戻す
  @commands[0] = $data_system.words.attack
  # すべてのコマンドが使用不可能ならばコマンド名を変更
  if actor.all_killed?
    @commands[0] = Annex::ANTI_STATE_ALL_KILLED_COMMAND
  end
  refresh
  # ステートを確認して、使えない場合文字色をdisabled_colorにする
  if actor.anti_attack_state? and not actor.all_killed?
    disable_item(0)
  end
  if actor.anti_skill_state?
    disable_item(1)
  end
  if actor.anti_guard_state?
    disable_item(2)
  end
  if actor.anti_item_state?
    disable_item(3)
  end

This page is written in Japanese(Shift_JIS)
(c) T-Akf, in p-sight