# # 特殊効果判定用ベーススクリプトAVer1.11(RGSS2) #  (C)2007-2008 TYPE74RX-T # #============================================================================== # ■ module Kernel(機能拡張) #  (Ver1.09より実装) # ★ rx_delete(array) #   配列で指定した要素を全て取り除く # ★ rx_eqaror(array) #   配列で指定した要素のうちのいずれかに一致しているか # ★ rx_eqarand(array) #   配列で指定した要素のうちのどれにも一致しているか # ★ rx_atob(a, b) #   整数値がaからbまでの範囲内であるか #============================================================================== module Kernel #-------------------------------------------------------------------------- # ★ 配列で指定した要素を全て取り除く #-------------------------------------------------------------------------- def rx_delete(array) for i in 0...array.size self.delete(array[i]) end end #-------------------------------------------------------------------------- # ★ 配列で指定した要素のうちのいずれかに一致しているか #-------------------------------------------------------------------------- def rx_eqaror(array) result = false for i in 0...array.size if self == array[i] result = true break end end return result end #-------------------------------------------------------------------------- # ★ 配列で指定した要素のうちのどれにも一致しているか #-------------------------------------------------------------------------- def rx_eqarand(array) result = true for i in 0...array.size if self != array[i] result = false break end end return result end #-------------------------------------------------------------------------- # ★ 整数値がaからbまでの範囲内であるか #-------------------------------------------------------------------------- def rx_atob(a, b) return (self >= a and self <= b) end end #============================================================================== # ★ RX_T #------------------------------------------------------------------------------ #  素材用汎用モジュールです。 #============================================================================== module RX_T #-------------------------------------------------------------------------- # ● 装備用システムワードに指定文字列が含まれているか #-------------------------------------------------------------------------- def self.check_system_word_in_equip(sys_str, string) return sys_str.include?(string) end #-------------------------------------------------------------------------- # ● 装備用システムワードに指定文字列が含まれていれば #   それに付随する数値を抽出 # obj : スキル、アイテム、武器、防具 string : 指定文字列 #-------------------------------------------------------------------------- def self.get_numeric_of_system_word_in_equip(sys_str, string) if sys_str.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = sys_str.rindex(string) # 文字位置取得 # 文字列取得(文字位置が 1 番目以上なら) new_words = sys_str[words_loc, sys_str.length - 1] if words_loc > 0 # 数字文字列を取得(文字位置によって処理が異なる) param = new_words.scan(/[-10-9]+/) if words_loc > 0 param = sys_str.scan(/[-10-9]+/) if words_loc < 1 numeric = param[0].to_i else numeric = 0 end return numeric end #-------------------------------------------------------------------------- # ● 装備用システムワードに指定文字列が含まれていれば #   それに付随する数値群を配列化して返す # obj : スキル、アイテム、武器、防具 string : 指定文字列 #-------------------------------------------------------------------------- def self.get_array_of_system_word_in_equip(sys_str, string) elements = [] if sys_str.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = sys_str.rindex(string) + string.size # 文字位置取得 # 文字列取得 new_words = sys_str[words_loc, sys_str.length - 1] # 数字文字列を配列化して取得 param = new_words.split(/\s*,\s*/) numeric = param[0].to_i # 数値を配列に入れる for i in 0...param.size numeric = param[i].to_i if numeric > 0 elements.push(numeric) else break end end end return elements end #-------------------------------------------------------------------------- # ● システムワードに指定文字列が含まれているか #-------------------------------------------------------------------------- def self.check_system_word_in_sys_str(obj, string) return obj.rx_sys_str.include?(string) end #-------------------------------------------------------------------------- # ● システムワード格納変数に指定文字列が含まれていれば #   それに付随する数値を抽出 # obj : スキル、アイテム、武器、防具 string : 指定文字列 #-------------------------------------------------------------------------- def self.get_numeric_of_system_word_in_sys_str(obj, string) # 素手に対応 if obj == nil return 0 end if obj.rx_sys_str.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = obj.rx_sys_str.rindex(string) # 文字位置取得 # 文字列取得(文字位置が 1 番目以上なら) new_words = obj.rx_sys_str[words_loc, obj.rx_sys_str.length - 1] if words_loc > 0 # 数字文字列を取得(文字位置によって処理が異なる) param = new_words.scan(/[-10-9]+/) if words_loc > 0 param = obj.rx_sys_str.scan(/[-10-9]+/) if words_loc < 1 numeric = param[0].to_i else numeric = 0 end return numeric end #-------------------------------------------------------------------------- # ● システムワード格納変数に指定文字列が含まれていれば #   それに付随する数値群を配列化して返す # obj : スキル、アイテム、武器、防具 string : 指定文字列 #-------------------------------------------------------------------------- def self.get_array_of_system_word_in_sys_str(obj, string) elements = [] # 素手に対応 if obj == nil return elements end if obj.rx_sys_str.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = obj.rx_sys_str.rindex(string) + string.size # 文字位置取得 # 文字列取得 new_words = obj.rx_sys_str[words_loc, obj.rx_sys_str.length - 1] # 数字文字列を配列化して取得 param = new_words.split(/\s*,\s*/) numeric = param[0].to_i # 数値を配列に入れる for i in 0...param.size numeric = param[i].to_i if numeric > 0 elements.push(numeric) else break end end end return elements end #-------------------------------------------------------------------------- # ● メモにシステムワードが含まれているか #-------------------------------------------------------------------------- def self.check_system_word_in_note(obj, string) return obj.note.include?(string) end #-------------------------------------------------------------------------- # ● メモにシステムワードが含まれていれば、それとそれに付随する数値を返す # note : メモ string : 指定文字列 option : 数値も返すか否か #-------------------------------------------------------------------------- def self.get_system_word_in_note(note, string, option = false) if note.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = note.rindex(string) # 文字位置取得 # 文字列取得(文字位置が 1 番目以上なら) new_words = note[words_loc, note.length - 1] if words_loc > 0 # 数字文字列を取得(文字位置によって処理が異なる) param = new_words.scan(/[-10-9]+/) if words_loc > 0 param = note.scan(/[-10-9]+/) if words_loc < 1 # 検出された指定の文字列(と数値)を返す return string + param[0] if param != [] and option return string if param == [] or not option end return "" end #-------------------------------------------------------------------------- # ● メモにシステムワードが含まれていれば #  それとそれに付随する配列用の数値を返す # note : メモ string : 指定文字列 option : 数値も返すか否か #-------------------------------------------------------------------------- def self.get_system_word_in_note2(note, string) str = "" if note.include?(string) # 最後に指定のシステムワードが書かれた場所以降の文字列を取得 words_loc = note.rindex(string) + string.size # 文字位置取得 # 文字列取得 new_words = note[words_loc, note.length - 1] # 数字文字列を取得(文字位置によって処理が異なる) param = new_words.split(/\s*,\s*/) for i in 0...param.size numeric = param[i].to_i if numeric > 0 str += param[i] + "," else break end end str = string + str end return str end end #============================================================================== # ● RPG::BaseItem #------------------------------------------------------------------------------ #  スキル、アイテム、武器、防具のスーパークラスです。 #============================================================================== module RPG class BaseItem @@rx_copy_str = "" #コピー用変数 alias rx_rgss_rxsys_initialize initialize unless $@ # ★ Ver1.11で対処したエラーヶ所 def initialize rx_rgss_rxsys_initialize # ★ システムワード用文字列変数(メモから抽出) @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ メモ(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def note rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @note end #-------------------------------------------------------------------------- # ★ システム用文字列変数(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def rx_sys_str rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @rx_sys_str end #-------------------------------------------------------------------------- # ★ メモからシステム用文字列を排除したものをメモとして返す #-------------------------------------------------------------------------- def rx_extract_sys_str_from_note rx_copy_str = @@rx_copy_str @@rx_copy_str = "" return rx_copy_str end end end #============================================================================== # ● RPG::Actor #------------------------------------------------------------------------------ #  アクターのデータクラスです。 #============================================================================== module RPG class Actor alias rx_rgss_rxsys_initialize initialize def initialize rx_rgss_rxsys_initialize @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str return @rx_sys_str end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str=(str) @rx_sys_str = str end end end #============================================================================== # ● RPG::Class #------------------------------------------------------------------------------ #  職業のデータクラスです。 #============================================================================== module RPG class Class alias rx_rgss_rxsys_initialize initialize def initialize rx_rgss_rxsys_initialize @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str return @rx_sys_str end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str=(str) @rx_sys_str = str end end end #============================================================================== # ● RPG::Troop #------------------------------------------------------------------------------ #  敵グループのデータクラスです。 #============================================================================== module RPG class Troop alias rx_rgss_rxsys_initialize initialize def initialize rx_rgss_rxsys_initialize @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str return @rx_sys_str end #-------------------------------------------------------------------------- # ★ システム用文字列変数 #-------------------------------------------------------------------------- def rx_sys_str=(str) @rx_sys_str = str end end end #============================================================================== # ● RPG::Enemy #------------------------------------------------------------------------------ #  敵キャラのデータクラスです。 #============================================================================== module RPG class Enemy @@rx_copy_str = "" #コピー用変数 alias rx_rgss_rxsys_initialize initialize def initialize rx_rgss_rxsys_initialize # ★ システムワード用文字列変数(メモから抽出) @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ メモ(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def note rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @note end #-------------------------------------------------------------------------- # ★ システム用文字列変数(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def rx_sys_str rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @rx_sys_str end #-------------------------------------------------------------------------- # ★ メモからシステム用文字列を排除したものをメモとして返す #-------------------------------------------------------------------------- def rx_extract_sys_str_from_note rx_copy_str = @@rx_copy_str @@rx_copy_str = "" return rx_copy_str end end end #============================================================================== # ● RPG::State #------------------------------------------------------------------------------ #  敵キャラのデータクラスです。 #============================================================================== module RPG class State @@rx_copy_str = "" #コピー用変数 alias rx_rgss_rxsys_initialize initialize def initialize rx_rgss_rxsys_initialize # ★ システムワード用文字列変数(メモから抽出) @rx_sys_str = "" end #-------------------------------------------------------------------------- # ★ メモ(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def note rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @note end #-------------------------------------------------------------------------- # ★ システム用文字列変数(システムワードが空ならメモから抽出) #-------------------------------------------------------------------------- def rx_sys_str rx_extract_sys_str_from_note if @rx_sys_str == "" or @rx_sys_str == nil return @rx_sys_str end #-------------------------------------------------------------------------- # ★ メモからシステム用文字列を排除したものをメモとして返す #-------------------------------------------------------------------------- def rx_extract_sys_str_from_note rx_copy_str = @@rx_copy_str @@rx_copy_str = "" return rx_copy_str end end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias rx_rgss2bs1_initialize initialize def initialize # メソッドを呼び戻す rx_rgss2bs1_initialize @rx_magic_use = false # ★ 魔法使用フラグ end #-------------------------------------------------------------------------- # ★ 魔法使用フラグ #-------------------------------------------------------------------------- def rx_magic_use return @rx_magic_use end #-------------------------------------------------------------------------- # ★ 魔法使用フラグの操作 #-------------------------------------------------------------------------- def rx_magic_use=(use) @rx_magic_use = use end #-------------------------------------------------------------------------- # ★ 武器を持っているかの判定 #-------------------------------------------------------------------------- def rx_weapon_equip? return false unless self.actor? return (self.weapon_id > 0 or (self.two_swords_style and self.armor1_id > 0)) end #-------------------------------------------------------------------------- # ★ 武器で攻撃しているかの判定 #-------------------------------------------------------------------------- def rx_weapon_attack? return false unless rx_weapon_equip? return self.action.attack? end #-------------------------------------------------------------------------- # ★ 装備しているものに含まれているシステムワードを取得 #-------------------------------------------------------------------------- def rx_sys_str return "" end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors) # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● セットアップ # actor_id : アクター ID #-------------------------------------------------------------------------- alias rx_rgss2bs1_setup setup def setup(actor_id) # メソッドを呼び戻す rx_rgss2bs1_setup(actor_id) # ★ 職業のシステムワードを初期化 format_class_rx_sys_str end #-------------------------------------------------------------------------- # ★ 職業のシステムワードを初期化 #-------------------------------------------------------------------------- def format_class_rx_sys_str self.class.rx_sys_str = "" if self.class.rx_sys_str == nil end #-------------------------------------------------------------------------- # ★ 装備しているものに含まれているシステムワードを取得 #-------------------------------------------------------------------------- def rx_sys_str sys_str = "" sys_str += $data_weapons[@weapon_id].rx_sys_str if @weapon_id > 0 if self.two_swords_style sys_str += $data_weapons[@armor1_id].rx_sys_str if @armor1_id > 0 else sys_str += $data_armors[@armor1_id].rx_sys_str if @armor1_id > 0 end sys_str += $data_armors[@armor2_id].rx_sys_str if @armor2_id > 0 sys_str += $data_armors[@armor3_id].rx_sys_str if @armor3_id > 0 sys_str += $data_armors[@armor4_id].rx_sys_str if @armor4_id > 0 return sys_str end end #============================================================================== # ■ Game_Enemy #------------------------------------------------------------------------------ #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス ($game_troop) の # 内部で使用されます。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ★ 装備しているものに含まれているシステムワードを取得 #-------------------------------------------------------------------------- def rx_sys_str return "" end end #============================================================================== # ■ Game_BattleAction #------------------------------------------------------------------------------ #  戦闘行動を扱うクラスです。このクラスは Game_Battler クラスの内部で使用され # ます。 #============================================================================== class Game_BattleAction #-------------------------------------------------------------------------- # ★ 魔法(精神関係度 1 以上)を使っているかの判定 #-------------------------------------------------------------------------- def rx_magic_use? return (skill? and $data_skills[@skill_id].spi_f >= 1) end end