module XRXS_WDRP
# エネミーデータ
def self.data(id)
data = []
data[1] = [[50, $data_items[68]]]
data[2] = [[nil, $data_items[68]]]
return data[id]
end
#
# ※記述例
# data[1] = [[50, $data_items[68]]]
# →エネミー1は50%の確率でアイテム68を落とす
#
# data[2] = [[nil, $data_items[68]]]
# →エネミー2はデータベースで設定した確率でアイテム68を落とす
# (もしデータベースでトレジャーを設定してない場合はスクリプト
# 本体のカスタマイズポイントで設定した確率で落とす)
#
end |
#----------------------------------------------------------------------------
# ダブル・ドロップ貪藻矢射妥←カスタム By 貪藻矢射妥←
# 微妙に使いづらいです・・・多分(をひ)
#----------------------------------------------------------------------------
# 原作: ▼▲▼ XRXS79. ダブル・ドロップ ▼▲▼
# 原作者: 森穂様、XRXS.様
# HP: 小さな本屋
# アドレス: http://xrxs.at-ninja.jp/
#
# 改造内容:
# ・トレジャー獲得最大数の設定
# ・トレジャー、経験値、ゴールド獲得の変動ステートを設定
# ・ダブルドロップにて個別にゲット確率を設定可能に
#============================================================================
# 変更点
#
# 2007:12:27
# ・獲得変動ステートの設定をカスタマイズポイントへ移行。
#
# 2009:03:17
# ・ドロップ確率を個別に設定可能に
#
# 2009:03:18
# ・不正チェック関数を追加
# ・データベースでトレジャーを設定してない場合の処理を追加
# (と、言うか、今までもできていた・・・)
#
# 2009:03:25
# ・盗むカスタムの修正のための確率不正チェック関数の修正
#
# 2009:05:02
# ・データベース上でドロップアイテムを設定せず、スティールアイテムのみ設定した
# 場合、スティール確率がデータベースでトレジャーの設定を行ってない場合の
# トレジャー出現確率になっていたバグを修正
#
# 2011:07:01
# ・トレジャー、経験値、ゴールド獲得をスクリプト上の設定からデータベース上の
# 設定に変更
#
# 2012:03:03
# ・module BMに設定したものをmodule Double_Dropに変更
#
# 2018:11:03
# ・module Double_Drop、IGEをNeoDropStealへ移動
#
# 2021:08:01
# ・KGC様の戦闘難易度に対応
module XRXS_WDRP
# トレジャー獲得最大数
# トレジャー獲得最大数が『0..n』なので0〜nまでの数値になります。
# (設定した数+1が最大の獲得数になります)
TRE_MAX = 9
end
#==============================================================================
# ■ Scene_Battle (分割定義 2)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
include NeoDropSteal::IGE
include NeoDropSteal::Double_Drop
include XRXS_WDRP
include BM
#--------------------------------------------------------------------------
# ● アフターバトルフェーズ開始
#--------------------------------------------------------------------------
def start_phase5
# フェーズ 5 に移行
@phase = 5
# バトル終了 ME を演奏
$game_system.me_play($game_system.battle_end_me)
# バトル開始前の BGM に戻す
$game_system.bgm_play($game_temp.map_bgm)
# EXP、ゴールド、トレジャーを初期化
exp = 0
gold = 0
treasures = []
gold_rate = 1
# ループ
for enemy in $game_troop.enemies
# エネミーが隠れ状態でない場合
unless enemy.hidden
# 獲得 EXP、ゴールドを追加
exp += enemy.exp
gold += enemy.gold
# トレジャー出現乱数の初期値を設定
prob = 100
# ステート[アイテム出現n倍]になっている場合
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
# トレジャー出現確率の変動
prob /= (get_rate(actor, TREJ_NAME) / 100.0)
prob = Integer(prob)
end
# トレジャー出現判定
if rand(prob) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
#
# [タブル・ドロップ]
#
for enemy in $game_troop.enemies
# エネミーが隠れ状態でない場合
unless enemy.hidden
data = XRXS_WDRP.data(enemy.id)
if data.is_a?(Array)
for i in 0...data.size
#probX = data[i][0] == nil ? enemy.treasure_prob : data[i][0]
probX = ck_value(data[i][0], enemy)
if $imported["BattleDifficulty"]
probX *= Difficulty.get[6]
probX = [probX / 100, 100].min
end # $imported["BattleDifficulty"]
if data[i][1] != nil and rand(prob) < probX
# 入手!
treasures.push(data[i][1])
end
end
end
end
end
#
#
#
# トレジャーの数を TRE_MAX個までに設定
treasures = treasures[0..TRE_MAX]
# EXP 獲得
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
# EXP獲得変動
@exp_flag = false
actor.exp += Integer(exp * get_rate(actor, EXP_NAME) / 100.0)
if actor.level > last_level
@status_window.level_up(i)
end
end
end
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
# ゴールド獲得の変動
gold *= (get_rate(actor, GOLD_NAME) / 100.0)
gold = Integer(gold)
end
# ゴールド獲得
$game_party.gain_gold(gold)
# トレジャー獲得
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
# バトルリザルトウィンドウを作成
@result_window = Window_BattleResult.new(exp, gold, treasures)
# ウェイトカウントを設定
@phase5_wait_count = 100
end
end
|