sacred-ritual-academy/Scripts/_RGSS3_Ver2_00_by_.rb
2025-03-18 19:45:34 -05:00

288 lines
No EOL
12 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■ RGSS3 パーティ能力詳細設定 Ver2.00 by 星潟
#------------------------------------------------------------------------------
# 「半減する」・「二倍にする」・「無効にする」等と
# 大雑把なパーティ能力の効果を詳細に設定できるようなシステムを追加します。
#==============================================================================
# 特徴を有する項目(アクター・職業・装備品・ステート等)のメモ欄に設定。
#------------------------------------------------------------------------------
# <エンカウント率増減:-25>
#
# エンカウント率を25減少させます。
#------------------------------------------------------------------------------
# <不意打ち率増減:10>
#
# 不意打ち率を10増加させます。
# (不意討ちではなく不意打ちと記述する必要があるので変換注意!)
#------------------------------------------------------------------------------
# <先制攻撃率増減:10>
#
# 先制攻撃率を10増加させます。
#------------------------------------------------------------------------------
# <獲得金額率増減:50>
#
# 獲得金額率を50増加させます。
#------------------------------------------------------------------------------
# <ドロップ率増減:70>
#
# アイテムドロップ率を70増加させます。
#==============================================================================
# Ver1.01 キャッシュ化による軽量化。
# 効果を加算にするか乗算にするかを選択できるように変更。
#------------------------------------------------------------------------------
# Ver1.02 戦闘に参加していないパーティメンバーのパーティ能力を
# 得られるようにする機能を追加。
# Ver1.01の加算/乗算の計算が異常だった不具合を修正。
#------------------------------------------------------------------------------
# Ver2.00 減少処理が正常に動作していない不具合を修正。
# 不意打ちに関する処理を実装。
# 更に乗算と加算の処理分けを複数個所で実装。
# 処理内容を統合・効率化。
#==============================================================================
module DETAIL_PTA
#空の配列を4種類用意。(変更不要)
WORDS = []
TYPE1 = []
TYPE2 = []
TYPE3 = []
#------------------------------------------------------------------------------
#戦闘に参加していないメンバーのパーティ能力も
#得られるようにするかどうかを設定します。
#trueで有効、falseで無効にします。
UNBM = true
#------------------------------------------------------------------------------
#エンカウント率増減設定用のキーワードを設定します。
WORDS[0] = "エンカウント率増減"
#エンカウント率増減設定の特徴データ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE1[0] = false
#エンカウント率増減設定のアクターデータ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE2[0] = false
#エンカウント率増減設定によって本来のエンカウント率に対し
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE3[0] = false
#------------------------------------------------------------------------------
#不意打ち率増減設定用のキーワードを設定します。
WORDS[1] = "不意打ち率増減"
#不意打ち率増減設定の特徴データ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE1[1] = false
#不意打ち率増減設定のアクターデータ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE2[1] = false
#不意打ち率増減設定によって本来の不意打ち率に対し
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE3[1] = false
#------------------------------------------------------------------------------
#先制攻撃率増減設定用のキーワードを設定します。
WORDS[2] = "先制攻撃率増減"
#先制攻撃率増減設定の特徴データ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE1[2] = false
#先制攻撃率増減設定のアクターデータ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE2[2] = false
#先制攻撃率増減設定によって本来の先制攻撃率に対し
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE3[2] = false
#------------------------------------------------------------------------------
#獲得金額率増減設定用のキーワードを設定します。
WORDS[3] = "獲得金額率増減"
#獲得金額率増減設定の特徴データ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE1[3] = false
#獲得金額率増減設定のアクターデータ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE2[3] = false
#獲得金額率増減設定によって本来の獲得金額率に対し
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE3[3] = false
#------------------------------------------------------------------------------
#ドロップ率増減設定用のキーワードを設定します。
WORDS[4] = "ドロップ率増減"
#ドロップ率増減設定の特徴データ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE1[4] = false
#ドロップ率増減設定のアクターデータ間での値を
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE2[4] = false
#ドロップ率増減設定によって本来のドロップ率に対し
#乗算にするか加算にするかを設定します。
#trueで乗算、falseで加算とします。
TYPE3[4] = false
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# パーティ能力詳細データ(個人)
#--------------------------------------------------------------------------
def extra_pta(type)
flag = DETAIL_PTA::TYPE1[type]
data = feature_objects.inject(flag ? 100 : 0) {|r, f|
n = f.extra_pta[type]
r = flag ? r * (100 + n) / 100.0 : r + n}
data -= 100 if flag
data
end
end
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# パーティ能力詳細データ(パーティ)
#--------------------------------------------------------------------------
def extra_pta(type)
flag = DETAIL_PTA::TYPE2[type]
array = DETAIL_PTA::UNBM ? all_members : battle_members
data = array.inject(flag ? 100 : 0) {|r, actor|
n = actor.extra_pta(type)
r = flag ? r * (100 + n) / 100.0 : r + n}
data -= 100 if flag
data /= 100.0 if data != 0
data
end
#--------------------------------------------------------------------------
# パーティ能力詳細設定適用
#--------------------------------------------------------------------------
def pta_totalize(base,type)
change = $game_party.extra_pta(type)
rate = DETAIL_PTA::TYPE3[type] ? base * (1.0 + change) : base + change
rate < 0 ? 0 : rate
rate
end
#--------------------------------------------------------------------------
# パーティ能力の所持判定
#--------------------------------------------------------------------------
alias party_ability_un_battle_members party_ability
def party_ability(ability_id)
return party_ability_un_battle_members(ability_id) if !DETAIL_PTA::UNBM
all_members.any? {|actor| actor.party_ability(ability_id) }
end
#--------------------------------------------------------------------------
# 不意打ちの確率計算
#--------------------------------------------------------------------------
alias rate_surprise_enh_st rate_surprise
def rate_surprise(troop_agi)
pta_totalize(rate_surprise_enh_st(troop_agi),1)
end
#--------------------------------------------------------------------------
# 先制攻撃の確率計算
#--------------------------------------------------------------------------
alias rate_preemptive_enh_st rate_preemptive
def rate_preemptive(troop_agi)
pta_totalize(rate_preemptive_enh_st(troop_agi),2)
end
end
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# エンカウント進行値の取得
#--------------------------------------------------------------------------
alias encounter_progress_value_enh_st encounter_progress_value
def encounter_progress_value
$game_party.pta_totalize(encounter_progress_value_enh_st,0)
end
end
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# お金の合計計算
#--------------------------------------------------------------------------
alias gold_total_enh_st gold_total
def gold_total
gold_total_enh_st.to_i
end
#--------------------------------------------------------------------------
# お金の倍率を取得
#--------------------------------------------------------------------------
alias gold_rate_enh_st gold_rate
def gold_rate
$game_party.pta_totalize(gold_rate_enh_st,3)
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ドロップアイテム取得率の倍率を取得
#--------------------------------------------------------------------------
alias drop_item_rate_enh_st drop_item_rate
def drop_item_rate
$game_party.pta_totalize(drop_item_rate_enh_st,4)
end
end
class RPG::BaseItem
#--------------------------------------------------------------------------
# パーティ能力詳細データ
#--------------------------------------------------------------------------
def extra_pta
@extra_pta ||= create_extra_pta
end
#--------------------------------------------------------------------------
# パーティ能力詳細データの作成
#--------------------------------------------------------------------------
def create_extra_pta
a = [0] * 5
DETAIL_PTA::WORDS.each_with_index {|w,i| a[i] += $1.to_i if /<#{w}[:](\S+)>/ =~ note}
a
end
end