Project1
标题:
魔法反射&装備(未汉化)
[打印本页]
作者:
冰风情火
时间:
2008-2-12 19:17
标题:
魔法反射&装備(未汉化)
#
# 魔法反射ステート&装備(RGSS2)
# (C)2007 TYPE74RX-T
#
# ※:カスタマイズポイント…15~18行目
#==============================================================================
# ★ RX_T
#------------------------------------------------------------------------------
# 設定用
#==============================================================================
module RX_T
RX_Mcounter_Comment = "魔法障壁が魔法を跳ね返した!" # 反射時メッセージ
RX_Mcounter_SE_Name = "flash1" # 反射時効果音名
RX_Mcounter_SE_Volume = 80 # 反射時効果音音量
RX_Mcounter_SE_Pitch = 100 # 反射時効果音ピッチ
end
#--------------------------------------------------------------------------
# ★ システムワードの登録:魔法反射
#--------------------------------------------------------------------------
module RPG
class State
alias rx_rgss2b2_rx_extract_sys_str_from_note rx_extract_sys_str_from_note
def rx_extract_sys_str_from_note
rx_get_sys = RX_T.get_system_word_in_note(@note, "魔法反射")
@@rx_copy_str += rx_get_sys
@note = @note.sub(rx_get_sys, "")
@note = @note.sub("\r\n", "")
@rx_sys_str = @@rx_copy_str
# メソッドを呼び戻す
rx_rgss2b2_rx_extract_sys_str_from_note
end
end
end
#--------------------------------------------------------------------------
# ★ システムワードの登録:魔法反射・魔反射無視
#--------------------------------------------------------------------------
module RPG
class BaseItem
alias rx_rgss2b2_rx_extract_sys_str_from_note rx_extract_sys_str_from_note
def rx_extract_sys_str_from_note
rx_get_sys = RX_T.get_system_word_in_note(@note, "魔法反射")
@@rx_copy_str += rx_get_sys
@note = @note.sub(rx_get_sys, "")
@note = @note.sub("\r\n", "")
@rx_sys_str = @@rx_copy_str
rx_get_sys = RX_T.get_system_word_in_note(@note, "魔反射無視")
@@rx_copy_str += rx_get_sys
@note = @note.sub(rx_get_sys, "")
@note = @note.sub("\r\n", "")
@rx_sys_str = @@rx_copy_str
# メソッドを呼び戻す
rx_rgss2b2_rx_extract_sys_str_from_note
end
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias rx_rgss2b2_initialize initialize
def initialize
# メソッドを呼び戻す
rx_rgss2b2_initialize
@rx_refrex = false # ★ 魔法反射フラグ
@rx_refrect = false # ★ 魔法を反射されたフラグ
end
#--------------------------------------------------------------------------
# ★ 魔法反射ステートフラグ
#--------------------------------------------------------------------------
def rx_refrex
return @rx_refrex
end
#--------------------------------------------------------------------------
# ★ 魔法を反射されたフラグ
#--------------------------------------------------------------------------
def rx_refrect
return @rx_refrect
end
#--------------------------------------------------------------------------
# ★ 魔法を反射されたフラグ操作
#--------------------------------------------------------------------------
def rx_refrect=(flag)
@rx_refrect = flag
end
#--------------------------------------------------------------------------
# ● ステートの付加
# state_id : ステート ID
#--------------------------------------------------------------------------
alias rx_rgss2b2_add_state add_state
def add_state(state_id)
# メソッドを呼び戻す
rx_rgss2b2_add_state(state_id)
# ★ システムワードに「魔法反射」が含まれているか
if RX_T.check_system_word_in_sys_str($data_states[state_id], "魔法反射")
@rx_refrex = true
end
end
#--------------------------------------------------------------------------
# ● ステートの解除
# state_id : ステート ID
#--------------------------------------------------------------------------
alias rx_rgss2b2_remove_state remove_state
def remove_state(state_id)
# メソッドを呼び戻す
rx_rgss2b2_remove_state(state_id)
# ★ システムワードに「魔法反射」が含まれているか
if RX_T.check_system_word_in_sys_str($data_states[state_id], "魔法反射")
@rx_refrex = false
end
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者
# skill : スキル
#--------------------------------------------------------------------------
alias rx_rgss2b2_skill_effect skill_effect
def skill_effect(user, skill)
# ★ 魔法系スキル(※)を使っているか、若しくはそれを使用中かのいずれかで
# かつ、対象が魔法反射ステートなら(魔反射無視魔法を除く)
# (※:精神関係度が 1 以上のスキル)
if (user.action.rx_magic_use? or user.rx_magic_use) and self.rx_refrex and
not RX_T.check_system_word_in_sys_str(skill, "魔反射無視")
# 魔法使用フラグをオン
user.rx_magic_use = true
# 魔法を跳ね返されたフラグをオン
user.rx_refrect = true
# スキルの効果適用(反射用)へ
return user.rx_refrect_skill_effect(self, skill)
end
# ★ 魔法系スキル(※)を使っているか、若しくはそれを使用中かのいずれかで
# かつ、魔法反射系装備の対象に使用した場合(魔反射無視魔法を除く)
# (※:精神関係度が 1 以上のスキル)
if (user.action.rx_magic_use? or user.rx_magic_use) and
RX_T.check_system_word_in_equip(self.rx_sys_str, "魔法反射") and
not RX_T.check_system_word_in_sys_str(skill, "魔反射無視")
# 魔法使用フラグをオン
user.rx_magic_use = true
# 魔法を跳ね返されたフラグをオン
user.rx_refrect = true
# スキルの効果適用(反射用)へ
return user.rx_refrect_skill_effect(self, skill)
end
user.rx_magic_use = false
user.rx_refrect = false
# メソッドを呼び戻す
rx_rgss2b2_skill_effect(user, skill)
end
#--------------------------------------------------------------------------
# ★ スキルの効果適用(反射用)
# user : スキルの使用者
# skill : スキル
#--------------------------------------------------------------------------
def rx_refrect_skill_effect(user, skill)
clear_action_results
unless skill_effective?(user, skill)
@skipped = true
return
end
if rand(100) >= calc_hit(user, skill) # 命中判定
@missed = true
return
end
if rand(100) < calc_eva(user, skill) # 回避判定
@evaded = true
return
end
make_obj_damage_value(user, skill) # ダメージ計算
make_obj_absorb_effect(user, skill) # 吸収効果計算
execute_damage(user) # ダメージ反映
if skill.physical_attack and @hp_damage == 0 # 物理ノーダメージ判定
return
end
apply_state_changes(skill) # ステート変化
end
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ★ 魔法反射エフェクト
#--------------------------------------------------------------------------
def rx_refrex_effect
@message_window.add_instant_text(RX_T::RX_Mcounter_Comment)
Audio.se_play("Audio/SE/" + RX_T::RX_Mcounter_SE_Name, RX_T::RX_Mcounter_SE_Volume, RX_T::RX_Mcounter_SE_Pitch)
wait(20)
end
#--------------------------------------------------------------------------
# ● 戦闘行動の実行
#--------------------------------------------------------------------------
alias rx_rgss2b2_execute_action execute_action
def execute_action
# ★ 魔法使用および反射フラグを初期化
@active_battler.rx_refrect = false
@active_battler.rx_magic_use = false
# メソッドを呼び戻す
rx_rgss2b2_execute_action
end
#--------------------------------------------------------------------------
# ● 行動結果の表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_action_effects(target, obj = nil)
# ★ 魔法を跳ね返されたフラグが立っていれば
if @active_battler.rx_refrect
# 対象を使用者に変換
target = nil
target = @active_battler
end
# ★ 魔法反射エフェクトさせるなら
if @active_battler.rx_refrect and not target.skipped
line_number = @message_window.line_number
wait(5)
# 反射エフェクト
rx_refrex_effect
display_critical(target, obj)
display_damage(target, obj)
display_state_changes(target, obj)
# 反射メッセージ用・メッセージ補正
if line_number + 1 == @message_window.line_number
display_failure(target, obj) unless target.states_active?
end
if line_number != @message_window.line_number
wait(30)
end
@message_window.back_to(line_number)
end
# ★ 魔法を跳ね返されたフラグが立っていれば終了
return if @active_battler.rx_refrect
unless target.skipped
line_number = @message_window.line_number
wait(5)
display_critical(target, obj)
display_damage(target, obj)
display_state_changes(target, obj)
if line_number == @message_window.line_number
display_failure(target, obj) unless target.states_active?
end
if line_number != @message_window.line_number
wait(30)
end
@message_window.back_to(line_number)
end
end
end
复制代码
作者:
冰风情火
时间:
2008-2-12 19:24
另外脚本介绍里写着:
08/1/9 不具合を修正するため、スクリプトを大幅変更しました→更に修正(9:20)。
08/1/8 装備物に魔法反射機能を付けられるようにしました。
各種不具合を修正しました。
修正しきれていない部分がございましたら「不具合報告スレ」にて詳細を説明お願いします。
08/1/5 一度魔法反射した対象にアイテムで攻撃すると使用者がダメージを受ける不具合を修正しました。
魔法反射ステートにかかっている相手が何かのステート変化にかかると
魔法反射が無効化される不具合を修正しました。
08/1/5 魔法反射無視スキルに対応、これに合わせてベーススクリプトAが必要になりました。
08/1/1 各種不具合を修正。変な仕様を全て解消しました。
ベーススクリプトA(Ver1.05)以降専用スクリプトです。
Ver1.05より古いベーススクリプト(A)をお持ちの方は、恐れ入りますが最新版に差し替えてください。
魔法系のスキル(※)を反射するステートや装備物を作成できるスクリプトです。
更に、魔法反射無視スキルを作成できます(詳しくは後述)。
効果不確定スキルを導入している場合は
そのタイプのスキルを魔法反射無視スキルに設定してください(不具合回避のため)。
また、スキル追加発動装備を導入している場合は
そのスクリプトよりも下のセクションに導入してください。
※:精神関係度が1以上のスキルを指します。
【ステートの設定】
魔法反射用のステートを作成し、メモ欄に魔法反射と記述すれば完成です。
ご注意:
RPGツクールVXのステート解除タイミングの仕様上、スキルを唱えたターンの間だけ有効なスキルの作成はオススメできません。
詳細はこちらをご参照ください。
【スクリプトでの初期設定】
魔法反射した時のナレーションと魔法反射効果音、音量、ピッチを、スクリプトの15~18行目で変更できます。
RX_Mcounter_Comment(デフォルト:魔法障壁が魔法を跳ね返した!)
魔法反射した時のナレーションを設定できます。
RX_Mcounter_SE_Name(デフォルト:flash1)
魔法反射効果音を設定できます。
RX_Mcounter_SE_Volume(デフォルト:80)
魔法反射効果音の音量を設定できます。
RX_Mcounter_SE_Pitch(デフォルト:100)
魔法反射効果音のピッチを設定できます。
【魔法反射無視スキルの設定】
スキルのメモ欄に魔反射無視(「魔法反射」無視、ではない事に注意)のシステムワードを入力してください。
【魔法反射装備の設定】
各種装備物のメモ欄に魔法反射のシステムワードを入力してください。
※いずれもRX-SYSを含ませる必要はありません。
上記システムワードはメモ欄のどこかに含まれていればOKです。
作者:
雪流星
时间:
2008-2-12 19:38
能不能把来源地址贴上呢?
作者:
LiSteve
时间:
2008-2-12 19:41
以下引用
snstar2006于2008-2-12 11:38:26
的发言:
能不能把来源地址贴上呢?
在這邊
http://mdc-light.jpn.org/TYPE74RX-T/rgss2b2.html
作者:
雪流星
时间:
2008-2-12 19:54
似乎不难
汉化工作我接了
作者:
LiSteve
时间:
2008-2-12 20:01
那我簡單的說下使用方法
[魔法反射]
在裝備或者狀態的註解欄加上魔法反射
[魔法反射無視]
在技能的註解欄加上魔反射無視
順帶一提
作者有說如果有改造過內容,要跟他討論過才能自行發佈
單純漢化不涉及改造是不在此限就是了
作者:
冰风情火
时间:
2008-2-12 20:02
里面还有相当多别的东西。不过看不懂就没仔细研究过了。
作者:
LiSteve
时间:
2008-2-12 20:18
說明有提到
ベーススクリプトA(Ver1.05)以降専用スクリプトです。
Ver1.05より古いベーススクリプト(A)をお持ちの方は、恐れ入りますが最新版に差し替えてください。
不知道是不是必須用到
這個腳本在這邊
http://mdc-light.jpn.org/TYPE74RX-T/rgss2/rx2_base_script_for_special_effect.txt
作者:
雪流星
时间:
2008-2-12 21:16
刚才看了看
几乎不用汉化
只要把上面的脚本贴进脚本编辑器
再把
紫色
的字串修改成自己想要的文字就好了
几乎那些字串都是中文
除了第15~18行
RX_Mcounter_Comment = "魔法护镜将魔法反弹了回去!" # 反射魔法时的信息
RX_Mcounter_SE_Name = "flash1" # 反射魔法时音效名称
RX_Mcounter_SE_Volume = 80 # 反射魔法时音效音量
RX_Mcounter_SE_Pitch = 100 # 反射魔法时音效节拍
复制代码
对了,此脚本必须贴在以下脚本的下面,否则会出错:
#
# 特殊効果判定用ベーススクリプトVer1.10(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
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
复制代码
使用说明:
在装备的备注栏加上「魔法反射」(不带引号)
如此此装备就能反射敌人的魔法了
那麽怎麽分辨敌人是不是使用了魔法技能呢?
只要是技能的「精神关系度」大於0就算是魔法
[LINE]1,#dddddd[/LINE]
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者:
飞起一键盘
时间:
2008-2-12 23:49
强...啊 .... [LINE]1,#dddddd[/LINE]
版主对此帖的评论:『3字内回复……注意版规……』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1