#==============================================================================
# ■ 沈黙の拡張 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
|