#==============================================================================
# ボスフラグスクリプト By 貪藻矢射妥←
#------------------------------------------------------------------------------
# ボスにボスのフラグをたてることによってボスには無効なスキル、アイテム
# または、ボスのみ有効なスキル、アイテムの作成を行います。
#
# 使用方法(トループのイベントにて・・・ターンの一番最初に行うのがベスト)
#
# i_am_boss(ID)
#
# にてボスフラグを立てます
#
# また、ボスのみ有効なスキル、アイテムを作成したい場合はスキル、アイテムの
# ステートの部分のボス有効/無効ステートを + に、
# ボスのみ無効なスキル、アイテムを作成したい場合は逆で - にすればOKです。
#
#==============================================================================
# 変更点
#
# 2009:10:01
# ・バトルより前にマップでスキルやアイテムを使用するとエラー落ちするバグを修正
#
# 2011:03:05
# ・インタープリターに関数を追加することで、呼び出し関数名を省略化
#
# 2017:11:03
# ・外部フラグ追加
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 # ボスフラグ
#--------------------------------------------------------------------------
# ● 俺がボスだ!関数
#--------------------------------------------------------------------------
def i_am_boss(id)
@boss_flg[id] = true
end
#--------------------------------------------------------------------------
# ● ボスフラグ初期化関数
#--------------------------------------------------------------------------
def init_boss_flg
if @boss_flg == nil
@boss_flg = Array.new(1000)
@boss_flg[0] = false
end
for i in 0..999
if @boss_flg[i] == nil
@boss_flg[i] = false
end
end
end
end
#==============================================================================
# ■ Scene_Battle (分割定義 1)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias main_diamond_boss_flg main
def main
# ボスフラグ初期化
$game_system.init_boss_flg
main_diamond_boss_flg
end
end
#==============================================================================
# ■ Game_Battler (分割定義 3)
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
include DIAMOND
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者 (バトラー)
# skill : スキル
#--------------------------------------------------------------------------
alias skill_effect_diamond_boss_flg skill_effect
def skill_effect(user, skill)
# ボスフラグ初期化
$game_system.init_boss_flg
root_hit = skill.hit
if ($game_system.boss_flg[self.id] == true &&
skill.minus_state_set.include?(BOSS_STS)) ||
($game_system.boss_flg[self.id] == false &&
skill.plus_state_set.include?(BOSS_STS))
skill.hit = 0
end
skill_effect_diamond_boss_flg(user, skill)
skill.hit = root_hit
end
#--------------------------------------------------------------------------
# ● アイテムの効果適用
# item : アイテム
#--------------------------------------------------------------------------
alias item_effect_diamond_boss_flg item_effect
def item_effect(item)
# ボスフラグ初期化
$game_system.init_boss_flg
root_hit = item.hit
if ($game_system.boss_flg[self.id] == true &&
item.minus_state_set.include?(BOSS_STS)) ||
($game_system.boss_flg[self.id] == false &&
item.plus_state_set.include?(BOSS_STS))
item.hit = 0
end
item_effect_diamond_boss_flg(item)
item.hit = root_hit
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
|