171 lines
No EOL
6.7 KiB
Ruby
171 lines
No EOL
6.7 KiB
Ruby
#==============================================================================
|
||
# ■ RGSS3 被弾時MP・TP増減特徴Ver2.00 by 星潟
|
||
#------------------------------------------------------------------------------
|
||
# HPダメージを1以上受けた際に下記の形式でMP・TPを増減させる特徴を作成します。
|
||
#
|
||
# 1.固定値での増減
|
||
# 2.最大MP・TPに対しての割合での増減
|
||
# 3.現在MP・TPに対しての割合での増減
|
||
# 4.ダメージに対しての割合での増減
|
||
#==============================================================================
|
||
# 特徴のメモ欄に記述。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時MP固定増減:50,50>
|
||
#
|
||
# 50%の確率でMPが50回復します。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時MP固定増減:-30>
|
||
#
|
||
# MPが30減少します。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時最大MP割合増減:40>
|
||
#
|
||
# MPが最大MPの40%分回復します。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時最大MP割合増減:-20,25>
|
||
#
|
||
# 25%の確率でMPが最大MPの20%分減少します。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時現在MP割合増減:70,10>
|
||
#
|
||
# 10%の確率でMPが現在MPの70%分回復します。
|
||
#------------------------------------------------------------------------------
|
||
# <被弾時現在MP割合増減:-80>
|
||
#
|
||
# MPが現在MPの80%分減少します。
|
||
#------------------------------------------------------------------------------
|
||
# <被ダメージMP割合増減:10>
|
||
#
|
||
# MPが被ダメージの10%分回復します。
|
||
#------------------------------------------------------------------------------
|
||
# <被ダメージMP割合増減:-60>
|
||
#
|
||
# MPが被ダメージの60%分減少します。
|
||
#------------------------------------------------------------------------------
|
||
# 上の設定用ワード内のMP部分をTPに変えれば
|
||
# 同様の処理がTPに行われます。
|
||
#==============================================================================
|
||
module DAM_MAG_P
|
||
|
||
#本スクリプトによるMP増減効果時
|
||
#MP増加メッセージを表示せず回復SEも鳴らさない
|
||
#true……表示&SEあり false……表示&SEなし
|
||
|
||
MPSE = false
|
||
|
||
#本スクリプトによるTP増減効果時
|
||
#TP増加メッセージを表示せず回復SEも鳴らさない
|
||
#true……表示&SEあり false……表示&SEなし
|
||
|
||
TPSE = true
|
||
|
||
#設定用キーワードを指定。
|
||
|
||
Words = {}
|
||
|
||
Words[0] = ["被弾時MP固定増減","被弾時最大MP割合増減",
|
||
"被弾時現在MP割合増減","被ダメージMP割合増減"]
|
||
|
||
Words[1] = ["被弾時TP固定増減","被弾時最大TP割合増減",
|
||
"被弾時現在TP割合増減","被ダメージTP割合増減"]
|
||
|
||
end
|
||
class Game_ActionResult
|
||
attr_accessor :mp_damage_ex # 特殊TPダメージ
|
||
attr_accessor :tp_damage_ex # 特殊TPダメージ
|
||
#--------------------------------------------------------------------------
|
||
# ダメージ値のクリア
|
||
#--------------------------------------------------------------------------
|
||
alias clear_damage_values_tpdex clear_damage_values
|
||
def clear_damage_values
|
||
clear_damage_values_tpdex
|
||
@mp_damage_ex = 0
|
||
@tp_damage_ex = 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ダメージの作成
|
||
#--------------------------------------------------------------------------
|
||
alias make_damage_t_ex make_damage
|
||
def make_damage(value, item)
|
||
make_damage_t_ex(value, item)
|
||
@mp_damage_ex = 0
|
||
@tp_damage_ex = 0
|
||
end
|
||
end
|
||
class Game_Battler
|
||
#--------------------------------------------------------------------------
|
||
# ダメージの反映処理内に被弾時MP・TP増減ステート処理を追加
|
||
#--------------------------------------------------------------------------
|
||
alias execute_damage_mpd execute_damage
|
||
def execute_damage(user)
|
||
if @result.hp_damage > 0
|
||
dam_m_plus
|
||
dam_t_plus
|
||
end
|
||
execute_damage_mpd(user)
|
||
self.mp -= @result.mp_damage_ex unless DAM_MAG_P::MPSE
|
||
self.tp -= @result.tp_damage_ex
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# 被弾時MP増減特徴処理
|
||
#--------------------------------------------------------------------------
|
||
def dam_m_plus
|
||
mpse = DAM_MAG_P::MPSE
|
||
feature_objects.each {|f| 4.times {|n| a = f.dam_m_plus[n]
|
||
next if a.empty? or eval(a[1]) <= rand(100)
|
||
case n
|
||
when 0;i = eval(a[0])
|
||
when 1;i = mmp * eval(a[0]) / 100
|
||
when 2;i = self.mp * eval(a[0]) / 100
|
||
when 3;i = @result.hp_damage * eval(a[0]) / 100
|
||
end
|
||
mpse ? (@result.mp_damage -= i) : (@result.mp_damage_ex -= i)}}
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# 被弾時TP増減特徴処理
|
||
#--------------------------------------------------------------------------
|
||
def dam_t_plus
|
||
tpse = DAM_MAG_P::TPSE
|
||
feature_objects.each {|f| 4.times {|n| a = f.dam_t_plus[n]
|
||
next if a.empty? or eval(a[1]) <= rand(100)
|
||
case n
|
||
when 0;i = eval(a[0])
|
||
when 1;i = max_tp * eval(a[0]) / 100
|
||
when 2;i = self.tp * eval(a[0]) / 100
|
||
when 3;i = @result.hp_damage * eval(a[0]) / 100
|
||
end
|
||
i = i.to_i
|
||
@result.tp_damage_ex -= i
|
||
@result.tp_damage -= i if tpse}}
|
||
end
|
||
end
|
||
class RPG::BaseItem
|
||
#--------------------------------------------------------------------------
|
||
# 被弾時MP増減特徴データ
|
||
#--------------------------------------------------------------------------
|
||
def dam_m_plus
|
||
@dam_m_plus ||= create_dam_mt_plus(0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# 被弾時TP増減特徴データ
|
||
#--------------------------------------------------------------------------
|
||
def dam_t_plus
|
||
@dam_t_plus ||= create_dam_mt_plus(1)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# 被弾時MP/TP増減特徴データ作成
|
||
#--------------------------------------------------------------------------
|
||
def create_dam_mt_plus(type)
|
||
h = {}
|
||
ws = DAM_MAG_P::Words[type]
|
||
ws.each_with_index {|w,index| a = (/<#{w}[::](\S+)>/ =~ note ? $1.to_s : "").split(
|
||
/\s*,\s*/).inject ([]) {|r,t| r.push(t)}
|
||
h[index] = (
|
||
case a.size
|
||
when 1;[a[0],"100"]
|
||
when 2;a
|
||
else;[]
|
||
end)}
|
||
h
|
||
end
|
||
end |