# ドロップアイテム、窃盗アイテム共通モジュール
module NeoDropSteal
module Double_Drop
# データベースでトレジャーの設定を行ってない場合のトレジャー出現確率
# 通常、何も設定を行わないと100になっています。
ST_R = 75
# スクリプトで設定した値が 0 < X <= 100 でない場合にエラーとするか
# 範囲内に収めるかのフラグ。
ERR_FLG = true
#============================================================================
# ○ 確率の不正チェック関数
# prob : チェックする値
# enemy : エネミー
#============================================================================
def ck_value(prob, enemy, flg=false)
if enemy.is_a?(Game_Enemy)
probX = prob == nil ? enemy.treasure_prob : prob
if enemy.item_id == 0 && enemy.weapon_id == 0 && enemy.armor_id == 0 &&
!flg
probX = ST_R
end
else
probX = prob == nil ? ST_R : prob
end
if probX <= 0 || probX > 100
if ERR_FLG
p "値が不正です。"
return nil
else
return [[probX, 1].max, 100].min
end
else
return probX
end
end
end
module IGE
GOLD_NAME = "ゴールド"
EXP_NAME = "経験値"
TREJ_NAME = "トレジャー"
#============================================================================
# ○ 確率取得共通巻数
# actor : アクター
# kind : 種別 [ゴールド、経験値、トレジャー]
#============================================================================
def get_rate(actor, kind)
get_rates = {
GOLD_NAME => 100,
EXP_NAME => 100,
TREJ_NAME => 100
}
armor_list = [actor.armor1_id, actor.armor2_id, actor.armor3_id,
actor.armor4_id, actor.armor5_id, actor.armor6_id,
actor.armor7_id]
# もし盾に武器を装備していたら除外
if @armor1_buki
armor_list.delete_at(0)
end
for armor_id in armor_list
next if armor_id == 0
tmp_armor = $data_armors[armor_id]
case kind
when GOLD_NAME
for id in tmp_armor.guard_state_set
if $data_states[id].name =~ /^#{GOLD_NAME}([0-9]+)(%|%)/
if get_rates[GOLD_NAME] == 100
get_rates[GOLD_NAME] = $1.to_i
else
get_rates[GOLD_NAME] += $1.to_i
end
end
if $data_states[id].name =~ /^#{GOLD_NAME}(None)/
get_rates[GOLD_NAME] = 0
end
end
when EXP_NAME
for id in tmp_armor.guard_state_set
if $data_states[id].name =~ /^#{EXP_NAME}([0-9]+)(%|%)/
if get_rates[EXP_NAME] == 100
get_rates[EXP_NAME] = $1.to_i
else
get_rates[EXP_NAME] += $1.to_i
end
end
if $data_states[id].name =~ /^#{EXP_NAME}(None)/
get_rates[GOLD_NAME] = 0
end
end
when TREJ_NAME
for id in tmp_armor.guard_state_set
if $data_states[id].name =~ /^#{TREJ_NAME}([0-9]+)(%|%)/
if get_rates[TREJ_NAME] == 100
get_rates[TREJ_NAME] = $1.to_i
else
get_rates[TREJ_NAME] += $1.to_i
end
end
if $data_states[id].name =~ /^#{TREJ_NAME}(None)/
get_rates[GOLD_NAME] = 0
end
end
else
p "種別が不正です。"
return 100
end
end
return get_rates[kind]
end
# 諸注意:上記の獲得変動ステートが重複して装備した場合、効果が重なり合い、
# 場合によってはゴールドもEXPも手に入らなくなる可能性があります。
# よって、(ステートが防具に付加する場合は)Tetra-Z氏の排他装備(あるいは
# 排他装備inパーティー)を併用することをお勧めします。
# (ちなみに、そのスクリプトを使用する場合はさらにTetra-Z作「TETRAZ.排他理論」と
# XMS.「XRXS.装備属性取得機構」が必要になります、)
end
end
|