#==============================================================================
# ボスフラグスクリプト By 貪藻矢射妥←
#------------------------------------------------------------------------------
# ボスにボスのフラグをたてることによってボスには無効なスキル、アイテム
# または、ボスのみ有効なスキル、アイテムの作成を行います。
#
# 使用方法(トループのイベントにて・・・ターンの一番最初に行うのがベスト)
#
# i_am_boss(ID)
#
# にてボスフラグを立てます
#
# また、ボスのみ有効なスキル、アイテムを作成したい場合はスキル、アイテムの
# ステートの部分のボス有効/無効ステートを + に、
# ボスのみ無効なスキル、アイテムを作成したい場合は逆で - にすればOKです。
#
#==============================================================================
# 変更点
#
# 2009:10:01
# ・バトルより前にマップでスキルやアイテムを使用するとエラー落ちするバグを修正
#
# 2011:03:05
# ・インタープリターに関数を追加することで、呼び出し関数名を省略化
#
# 2017:11:03
# ・外部フラグ追加
#
# 2021:02:01
# ・ボス有効無効判定をエネミーの場合のみに変更
# ・skill_effect/item_effectで結果をreturnしていないバグを修正
#
# 2024:11:01
# ・ボスフラグを配列からハッシュに変更
module DIAMOND
# ボス有効/無効ステート
BOSS_STS = 109
end
$OuterFlgs = {} if $OuterFlgs == nil
$OuterFlgs["I_Am_Boss"] = true
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
# システム周りのデータを扱うクラスです。BGM などの管理も行います。このクラス
# のインスタンスは $game_system で参照されます。
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :boss_flg # ボスフラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_diamond_boss_flg initialize
def initialize
# 元の処理を実施
initialize_diamond_boss_flg
@boss_flg = {}
end
#--------------------------------------------------------------------------
# ● 俺がボスだ!関数
#--------------------------------------------------------------------------
def i_am_boss(id)
@boss_flg[id] = true
end
end
#==============================================================================
# ■ Game_Battler (分割定義 3)
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● ボス有効無効判定
# tgt : skill / item
#--------------------------------------------------------------------------
def include_boss?(tgt)
boss_flg = $game_system.boss_flg[self.id]
if (boss_flg && tgt.minus_state_set.include?(DIAMOND::BOSS_STS)) ||
(!boss_flg && tgt.plus_state_set.include?(DIAMOND::BOSS_STS))
return true
else
return false
end
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者 (バトラー)
# skill : スキル
#--------------------------------------------------------------------------
alias skill_effect_diamond_boss_flg skill_effect
def skill_effect(user, skill)
if self.is_a?(Game_Enemy)
root_hit = skill.hit
skill.hit = 0 if include_boss?(skill)
end
result = skill_effect_diamond_boss_flg(user, skill)
if self.is_a?(Game_Enemy)
skill.hit = root_hit
end
return result
end
#--------------------------------------------------------------------------
# ● アイテムの効果適用
# item : アイテム
#--------------------------------------------------------------------------
alias item_effect_diamond_boss_flg item_effect
def item_effect(item)
if self.is_a?(Game_Enemy)
root_hit = item.hit
item.hit = 0 if include_boss?(item)
end
result = item_effect_diamond_boss_flg(item)
if self.is_a?(Game_Enemy)
item.hit = root_hit
end
return result
end
end
class Interpreter
#--------------------------------------------------------------------------
# ● 俺が、俺達がボスだ!
#--------------------------------------------------------------------------
def i_am_boss(id)
if id.is_a?(Numeric)
$game_system.i_am_boss(id)
else
p "エネミーIDが不正です。"
end
end
end
|