沈黙の拡張



沈黙を拡張して魔法スキルのみが使えないステート、物理スキルのみが使えないステート
両方使えないステートを実装

変更点
2017:11:03
・沈黙種別追加に伴う沈黙の変更

2019:03:02
・能力依存を全部リストに変更
・属性依存を三個固定から複数指定可能に変更


#==============================================================================
# ■ 沈黙の拡張 By 貪藻矢射妥←
#    - Silent Extend Service from the Diamond -
# 
# ・沈黙を拡張します。
#  ツクールのデフォルト、魔法が使えないステートを拡張し、物理攻撃が使えない
#  ステートやスキル事態仕えないステートを作成します。
# 
#==============================================================================
# 更新っぽいもの
# 
# 2017:11:03
# ・沈黙種別追加に伴う沈黙の変更
# 
# 2019:03:02
# ・能力依存を全部リストに変更
# ・属性依存を三個固定から複数指定可能に変更

$OuterFlgs = {} if $OuterFlgs == nil
$OuterFlgs["Silent_Extend"] = true

module DIAMOND
  # 沈黙種別
  # 0:能力依存
  # 1:属性依存
  SILENCE_KIND = 0
  
  ##### 能力依存の場合
  # スキルに必要な能力因子に依存した沈黙
  # 魔法スキル用沈黙ステート
  MAG_SILENCE_ID = [15]
  # 物理スキル用沈黙ステート
  PHY_SILENCE_ID = [16]
  # 魔法/物理両方沈黙ステート
  ALL_SILENCE_ID = [5, 9]
  
  ##### 属性依存の場合 [属性ID, ステートID]
  # スキルに付与されている属性に依存した沈黙
  # 頭封じ
  HED_SILENCE_ID = [68, 186]
  # 腕封じ
  ARM_SILENCE_ID = [69, 187]
  # 足封じ
  LEG_SILENCE_ID = [70, 188]
  #
  ELM_SILENCD_SET = [HED_SILENCE_ID, 
                     ARM_SILENCE_ID, 
                     LEG_SILENCE_ID]
end

#==============================================================================
# ■ Game_Battler (分割定義 1)
#------------------------------------------------------------------------------
#  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
  include DIAMOND
  #--------------------------------------------------------------------------
  # ● 沈黙判定
  #     skill_id : スキル ID
  #--------------------------------------------------------------------------
  def user_is_silence?(skill_id)
    if self.restriction == 1
      if SILENCE_KIND == 0 # 能力依存の沈黙の場合
        # 沈黙状態[黙]の場合、魔法スキルは使用不可
        for i in 0...MAG_SILENCE_ID.size
          if $data_skills[skill_id].pdef_f == 0 && 
            self.states.include?(MAG_SILENCE_ID[i])
            return false
          end
        end
        # 沈黙状態[縛]の場合、物理スキルは使用不可
        for i in 0...PHY_SILENCE_ID.size
          if $data_skills[skill_id].mdef_f == 0 && 
            self.states.include?(PHY_SILENCE_ID[i])
            return false
          end
        end
        # 沈黙状態[封]の場合、物理、魔法スキルは使用不可
        for i in 0...ALL_SILENCE_ID.size
          if self.states.include?(ALL_SILENCE_ID[i])
            return false
          end
        end
      elsif SILENCE_KIND == 1 # 属性依存の沈黙の場合
        for silen_set in ELM_SILENCD_SET
          if $data_skills[skill_id].element_set.include?(silen_set[0]) && 
            self.states.include?(silen_set[1])
            return false
          end
        end
      else
        p "沈黙種別が異常です"
        return false
      end
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #     skill_id : スキル ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    # SP が足りない場合は使用不可
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
    # 戦闘不能の場合は使用不可
    if dead?
      return false
    end
    # 沈黙状態の場合、スキルは使用不可
if $OuterFlgs["Silent_Extend"]
    if !user_is_silence?(skill_id)
      return false
    end
else
    if $data_skills[skill_id].atk_f == 0 && self.restriction == 1
      return false
    end
end 
    # 使用可能時を取得
    occasion = $data_skills[skill_id].occasion
    # 戦闘中の場合
    if $game_temp.in_battle
      # [常時] または [バトルのみ] なら使用可
      return (occasion == 0 or occasion == 1)
    # 戦闘中ではない場合
    else
      # [常時] または [メニューのみ] なら使用可
      return (occasion == 0 or occasion == 2)
    end
  end
end
カスタマイズポイントについて 薄緑色の部分で沈黙の種別を指定します SILENCE_KIND 0:能力依存 ... スキルに必要な能力因子に依存した沈黙 1:属性依存 ... スキルに付与されている属性に依存した沈黙
能力依存の場合
MAG_SILENCE_ID 魔法スキル禁止ステートID
PHY_SILENCE_ID 物理スキル禁止ステートID
ALL_SILENCE_ID 魔法/物理スキル禁止ステートID群 ※ここだけ配列なので注意
属性依存の場合 ※世界樹の迷宮っぽい感じ
HED_SILENCE_ID [頭属性ID, スキル禁止ステートID]
ARM_SILENCE_ID [腕属性ID, スキル禁止ステートID]
LEG_SILENCE_ID [脚属性ID, スキル禁止ステートID]

戻る