共存不可ステート/上位ステート

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
おおとろ
記事: 7
登録日時: 2017年7月16日(日) 13:38

共存不可ステート/上位ステート

投稿記事by おおとろ » 2017年7月17日(月) 23:50

画像 #クレジット必要

画像 #営利可(素材販売ダメ)

画像 #改変可

画像 #素材だけの再配布も可

画像 #アダルトOK
画像 #グロOK

共存不可ステート
他のステートと共存できないステートを作成するスクリプトです。
例えば、眠り状態のときには混乱状態にならないようにするといったことができるようになります。

コード: 全て選択

=begin
  共存不可ステート ver1.0
  byうなぎおおとろ(Twitter http://twitter.com/unagiootoro8388)

  他のステートと共存できないステートを作成するスクリプトです。
  例えば、眠り状態のときには混乱状態にならないようにするといったことができるようになります。

  [使用方法]
  ステートID3のステートはステートID4のステートと共用できないようにする場合、
  ステートID3のステートのメモ欄に
  <共存不可ステートID 4>
  と記述し、ステートID4のステートのメモ欄に
  <共存不可ステートID 3>
  と記述してください。共存不可の設定が片方のステートだけにならないように注意してください。
  また、
  <共存不可ステートID 5, 6>
  というように記述することで、複数のステートと共存できないようにすることも可能です。
=end


class RPG::State

  def not_coexistence_state_id
    if @not_coexistence_state_id == nil
      if note =~ /<共存不可ステートID (.+)>/
        @not_coexistence_state_id = $1.gsub(/[\s\r\n]/, "").split(",").map(&:to_i)
      else
        @not_coexistence_state_id = []
      end
    end
    @not_coexistence_state_id
  end
 
end


class Game_Battler

  alias not_coexistance_state__add_state add_state
  private :not_coexistance_state__add_state

  def add_state(state_id)
    not_coexistence_state_id = $data_states[state_id].not_coexistence_state_id
    now_states_id = states.map(&:id)
    not_coexistence_state_id.each do |id|
      return if now_states_id.include?(id)
    end
    not_coexistance_state__add_state(state_id)
  end

end



上位ステート
毒状態のときに毒攻撃を受けると、猛毒状態になる、というようなことができるようになるスクリプトです。
このスクリプトを使用するには、「共存不可ステート」の導入が必要です。
「共存不可ステート」は「上位ステート」よりも上にしてください。

コード: 全て選択

=begin
  上位ステート ver1.0
  byうなぎおおとろ(Twitter http://twitter.com/unagiootoro8388)

  毒状態のときに毒攻撃を受けると、猛毒状態になる、というようなことができるようになるスクリプトです。
  このスクリプトを使用するには、「共存不可ステート」の導入が必要です。
  「共存不可ステート」は「上位ステート」よりも上にしてください。

  [使用方法]
  ステートID3のステートときに当該ステートにする攻撃を受けた時、当該ステートを
  ステートID4のステートにしたい場合、
  ステートID3のステートのメモ欄に
  <上位ステートID 4>
  <共存不可ステートID 4>
  と記述し、ステートID4のステートのメモ欄に
  <共存不可ステートID 3>
  と記述してください。
=end


class RPG::State

  def super_state_id
    if @super_state == nil
      if note =~ /^<上位ステートID (\d+)>/
        @super_state_id = $1.to_i
      else
        @super_state_id = false
      end
    end
    @super_state_id
  end
 
end


class Game_Battler

  alias super_state__add_state add_state
  private :super_state__add_state

  def add_state(state_id)
    if state?(state_id)
      super_state_id = $data_states[state_id].super_state_id
      if super_state_id
        erase_state(state_id)
        super_state__add_state(super_state_id)
      end
    else
      super_state__add_state(state_id)
    end
  end

end

“Ace:スクリプト素材(RGSS3)” へ戻る