#----------------------------------------------------------------------------
# 装備品改造 - KGC_AlterEquipment 貪藻矢射妥←カスタム by 貪藻矢射妥←
#----------------------------------------------------------------------------
# 原作: ◆ 装備品改造 - KGC_AlterEquipment ◆
# ◇ Last update : 2008/01/12 ◇
# 原作者: TOMY様
# HP: Kamesoft
# アドレス: http://ytomy.sakura.ne.jp/
#
# 改造内容:
# ・装備品破棄時オリジナルの装備品が帰ってくるかどうかを設定可能に
# ・無改造の場合末尾の"+0"がつかないように変更
# ・データベースで設定する際、"[", "]"を好きな"カッコ"に設定できるように変更
# ・属性付加で逆値を相殺する機能を追加(現状防具のみ)
# ・システム変数で最大改造数値を変更可能に
# ・能力値増加細分化
# ※使用する場合は必ず説明文に[#{AEQ_○○}をnPt]あるいは[#{AEQ_○○}をn%]を
# 入れてください
# ・消費アイテムは3つが限度だったのを5個まで表示可能に
#
#============================================================================
# 変更点
#
# 2011:12:08
# ・VX風Vocab対応
#
# 2012:03:03
# ・一部の共通モジュールのクラス化
#
# 2015:10:01
# ・VXA風Sound対応
#
# 2020:10:01
# ・Window VXA対応
#
# 2024:03:01
# ・エラー落ちするバグの修正
# ・武器に特殊属性を付与しても正常に表示されないバグを修正
#
# 2024:05:01
# ・固定文字列対応
#
# 2024:06:01
# ・スクリプト中で使用されてる文字列の定義化追加
#
# 2024:10:01
# ・パラメータ追加対応
#
# 2024:12:01
# ・VX風VocabをよりVXに近づける対応
$data_states = load_data(FIX_PATH::PATH_DATA_STTS) if $data_states == nil
#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================
module KGC
# ◆改造武器最大数
# 多すぎると動作やセーブファイルが重くなります。(300 以下を推奨)
AEQ_WEAPON_MAX = 80
# ◆改造防具最大数
AEQ_ARMOR_MAX = 80
# ◆改造回数を付加
# true を指定すると、名称の末尾に +1 等が付く。
AEQ_SHOW_ALTER_COUNT = true
# ◆改造回数の書式
# 【{n}…改造回数】
AEQ_ALTER_COUNT_FORMAT = " R{n}"
# ◆破棄した時、オリジナルの装備が戻ってくるか
AEQ_REGAIN_FLG = true
# ◆装備名変更に使用するアクターのID(名前入力バッファ)
AEQ_RENAME_ACTOR_ID = 13
# ◆装備名の最大文字数(MAX:16)
AEQ_RENAME_MAX_LENGTH = 16
# ◆装備名変更画面に移行するボタン
# (A,X,Y,Z を推奨。nil にすると装備名変更機能無し)
AEQ_RENAME_BUTTON = nil
# ◆武器の解除ステートは不要か?
AEQ_REMOVE_STATE_FLG = false
# ◆改造可能回数
# 武器名の [ALT{n}] を省略した場合に使用。
# 負数を指定すると何度でも改造可能。
AEQ_ALTERABLE_COUNT = [8, 16, 32, 48, -1]
# ◆除外装備タイプ
# 改造不可能にする装備タイプ配列(≪装備拡張≫に対応)
AEQ_EXCLUDE_EQUIP_TYPE = [4]
# ◆除外武器
# 改造不可能にする武器ID配列
AEQ_EXCLUDE_WEAPONS = [187, 193, 615, 616, 617, 618, 619, 620, 621]
# ◆除外防具
# 改造不可能にする防具ID配列
AEQ_EXCLUDE_ARMORS = [332]
# ◆属性付加で、逆値と相殺の場合のID配列
# 例えばID:27(SP消費軽減)を付加したいけど、ID:29(SP消費増加)がセットされて
# いる場合、まず、ID:29(SP消費増加)を削除したい・・・など。
AEQ_INVERCE_ADD = [[27, 29]]
# ◆能力値上昇(n%)でもともとの設定値が0の場合の上昇値
AEQ_ROOT_PLUS_VALUE = 10
# ◆能力値増分用用語
AEQ_ATK = Vocab::atk #"攻撃力"
AEQ_PDEF = Vocab::pdef #"防御"
AEQ_MDEF = Vocab::mdef #"魔防"
AEQ_STR = Vocab::str #"腕力"
AEQ_DEX = Vocab::dex #"技術力"
AEQ_AGI = Vocab::agi #"敏捷性"
AEQ_INT = Vocab::int #"魔導力"
AEQ_EVA = Vocab::eva
if $OuterFlgs["Param_Add"]
AEQ_LUK = Vocab::luk
end # $OuterFlgs["Param_Add"]
# ◆付加追加可否判定用定数
AEQ_FALSE = 0
AEQ_TRUE = 1
AEQ_ALREADY = 2
# ◆武器ファクター一覧
# ≪"名称", "ヘルプ",
# [[タイプ, ID], ...], 費用, [使用アイテムID, 個数], ...≫
# 【タイプ】0..攻撃属性 1..ステート[+] 2..ステート[-] 3..能力値強化
# 【 ID 】改造時に使用する属性/ステートのID(タイプが3:能力値強化の場合不要)
# 【 費用 】改造費用。武器の価格に対する割合(%)
# 配列なので、忘れずに末尾に , を付けてください。
# (最後の項目だけは付けても付けなくても良い)
AEQ_WEAPON_FACTORS = [
# 能力値強化
["[#{AEQ_ATK}]上昇", "武器の[#{AEQ_ATK}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_PDEF}]上昇", "武器の[#{AEQ_PDEF}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_MDEF}]上昇", "武器の[#{AEQ_MDEF}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_STR}]上昇", "武器の[#{AEQ_STR}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_DEX}]上昇", "武器の[#{AEQ_DEX}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_AGI}]上昇", "武器の[#{AEQ_AGI}を10Pt]上げます。",
[[3]], 10, [112, 3]],
["[#{AEQ_INT}]上昇", "武器の[#{AEQ_INT}を10Pt]上げます。",
[[3]], 10, [112, 3]],
#["[#{AEQ_EVA}]上昇", "武器の[#{AEQ_EVA}を10Pt]上げます。",
# [[3]], 10, [112, 3]],
#["[#{AEQ_LUK}]上昇", "武器の[#{AEQ_LUK}を10Pt]上げます。",
# [[3]], 10, [112, 3]],
# 属性
["[炎]攻撃", "武器に炎属性を付加します。",
[[0, 1]], 10, [ 113, 3], [156, 2]],
["[氷]攻撃", "武器に氷属性を付加します。",
[[0, 2]], 10, [ 113, 3], [148, 2]],
["[雷]攻撃", "武器に雷属性を付加します。",
[[0, 3]], 10, [ 113, 3], [150, 2]],
["[水]攻撃", "武器に水属性を付加します。",
[[0, 4]], 10, [ 113, 3], [147, 2]],
["[土]攻撃", "武器に土属性を付加します。",
[[0, 5]], 10, [ 113, 3], [153, 2]],
["[風]攻撃", "武器に風属性を付加します。",
[[0, 6]], 10, [ 113, 3], [152, 2]],
["[光]攻撃", "武器に光属性を付加します。",
[[0, 7]], 10, [ 113, 3], [161, 2]],
["[闇]攻撃", "武器に闇属性を付加します。",
[[0, 8]], 10, [ 113, 3], [158, 2]],
["[無]攻撃", "武器に無属性を付加します。",
[[0, 9]], 10, [ 113, 3], [155, 2]],
# ステート A
["[転倒]攻撃", "武器に転倒効果を付加します。",
[[1, 2]], 20, [115, 4], [160, 3], [165, 2], [162, 2]],
["[猛毒]攻撃", "武器に猛毒効果を付加します。",
[[1, 3]], 20, [115, 4], [159, 3], [176, 2], [162, 2]],
["[混乱]攻撃", "武器に混乱効果を付加します。",
[[1, 6]], 20, [115, 4], [157, 3], [175, 2], [164, 2]],
["[睡眠]攻撃", "武器に睡眠効果を付加します。",
[[1, 7]], 20, [115, 4], [149, 3], [163, 2], [164, 2]],
["[麻痺]攻撃", "武器に麻痺効果を付加します。",
[[1, 8]], 20, [115, 4], [151, 3], [171, 2], [168, 2]],
["[流血]攻撃", "武器に流血効果を付加します。",
[[1, 18]], 20, [115, 4], [154, 3], [166, 2], [168, 2]],
# ステート B
["[幻惑]攻撃", "武器に幻惑効果を付加します。",
[[1, 4]], 20, [117, 4], [173, 3], [177, 2], [190, 2]],
["[呪詛]攻撃", "武器に呪詛効果を付加します。",
[[1, 9]], 20, [117, 4], [174, 3], [188, 2], [190, 2]],
["[凍傷]攻撃", "武器に凍傷効果を付加します。",
[[1, 11]], 20, [117, 4], [169, 3], [189, 2], [179, 2]],
["[火傷]攻撃", "武器に火傷効果を付加します。",
[[1, 12]], 20, [117, 4], [170, 3], [182, 2], [179, 2]],
["[沈黙]攻撃", "武器に沈黙効果を付加します。",
[[1, 15]], 20, [117, 4], [172, 3], [181, 2], [178, 2]],
["[束縛]攻撃", "武器に束縛効果を付加します。",
[[1, 16]], 20, [117, 4], [167, 3], [185, 2], [178, 2]],
# ステート C
["[即死]攻撃", "武器に即死効果を付加します。",
[[1, 1]], 20, [119, 4], [186, 3], [197, 2], [192, 2]],
["[封印]攻撃", "武器に封印効果を付加します。",
[[1, 5]], 20, [119, 4], [187, 3], [195, 2], [192, 2]],
["[停滞]攻撃", "武器に停滞効果を付加します。",
[[1, 10]], 20, [119, 4], [183, 3], [193, 2], [201, 2]],
["[咒怨]攻撃", "武器に咒怨効果を付加します。",
[[1, 13]], 20, [119, 4], [184, 3], [194, 2], [201, 2]],
["[誘惑]攻撃", "武器に誘惑効果を付加します。",
[[1, 14]], 20, [119, 4], [191, 3], [196, 2], [202, 2]],
["[石化]攻撃", "武器に石化効果を付加します。",
[[1, 17]], 20, [119, 4], [180, 3], [198, 2], [202, 2]],
# 特殊
["[先制]攻撃", "武器に先制攻撃を付加します。",
[[0, 21]], 50, [121, 2], [123, 2], [203, 3], [206, 3]],
#["[二回]攻撃", "武器に二回攻撃を付加します。",
# [[0, 107]], 50, [121, 2], [123, 2], [204, 3], [206, 3]],
["[全体]攻撃", "武器に全体攻撃を付加します。",
[[0, 23]], 50, [121, 2], [123, 2], [199, 3], [206, 3]],
["[直撃]攻撃", "武器に回避無視を付加します。",
[[0, 24]], 50, [121, 2], [123, 2], [200, 3], [206, 3]],
#["[吸収]攻撃", "武器に吸収攻撃を付加します。",
# [[0, 28]], 50, [121, 2], [123, 2], [205, 3], [206, 3]],
# 命中精度
["命中精度[S]", "武器の命中精度を[S]にします。",
[[0, 55]], 50, [125, 3], [217, 2], [216, 1]],
["命中精度[A]", "武器の命中精度を[A]にします。",
[[0, 56]], 50, [125, 3], [214, 2], [216, 1]],
["命中精度[B]", "武器の命中精度を[B]にします。",
[[0, 57]], 50, [125, 3], [218, 2], [216, 1]],
["命中精度[C]", "武器の命中精度を[C]にします。",
[[0, 58]], 50, [125, 3], [219, 2], [216, 1]],
["命中精度[D]", "武器の命中精度を[D]にします。",
[[0, 59]], 50, [125, 3], [213, 2], [216, 1]],
] # ←この ] は消さないこと
# ◆防具ファクター一覧
# ≪"名称", "ヘルプ",
# [[タイプ, ID], ...], 費用, [使用アイテムID, 個数], ...≫
# 【タイプ】0..防御属性 1..防御ステート 2..能力値強化
# 【 ID 】改造時に使用する属性/ステートのID(タイプが2:能力値強化の場合不要)
# 【 費用 】改造費用。防具の価格に対する割合(%)
AEQ_ARMOR_FACTORS = [
# 能力値強化
["[#{AEQ_PDEF}]上昇", "防具の[#{AEQ_PDEF}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_MDEF}]上昇", "防具の[#{AEQ_MDEF}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_STR}]上昇", "防具の[#{AEQ_STR}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_DEX}]上昇", "防具の[#{AEQ_DEX}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_AGI}]上昇", "防具の[#{AEQ_AGI}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_INT}]上昇", "防具の[#{AEQ_INT}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_EVA}]上昇", "防具の[#{AEQ_EVA}を10Pt]上げます。",
[[2]], 10, [112, 3]],
["[#{AEQ_LUK}]上昇", "防具の[#{AEQ_LUK}を10Pt]上げます。",
[[2]], 10, [112, 3]],
# 属性
["[炎]防御", "防具に炎耐性を付加します。",
[[0, 1]], 10, [ 114, 3], [156, 2]],
["[氷]防御", "防具に氷耐性を付加します。",
[[0, 2]], 10, [ 114, 3], [148, 2]],
["[雷]防御", "防具に雷耐性を付加します。",
[[0, 3]], 10, [ 114, 3], [150, 2]],
["[水]防御", "防具に水耐性を付加します。",
[[0, 4]], 10, [ 114, 3], [147, 2]],
["[土]防御", "防具に土耐性を付加します。",
[[0, 5]], 10, [ 114, 3], [153, 2]],
["[風]防御", "防具に風耐性を付加します。",
[[0, 6]], 10, [ 114, 3], [152, 2]],
["[光]防御", "防具に光耐性を付加します。",
[[0, 7]], 10, [ 114, 3], [161, 2]],
["[闇]防御", "防具に闇耐性を付加します。",
[[0, 8]], 10, [ 114, 3], [158, 2]],
["[無]防御", "防具に無耐性を付加します。",
[[0, 9]], 10, [ 114, 3], [155, 2]],
# ステート A
["[転倒]防御", "防具に転倒耐性を付加します。",
[[1, 2]], 20, [116, 4], [160, 3], [165, 2], [162, 2]],
["[猛毒]防御", "防具に猛毒耐性を付加します。",
[[1, 3]], 20, [116, 4], [159, 3], [176, 2], [162, 2]],
["[混乱]防御", "防具に混乱耐性を付加します。",
[[1, 6]], 20, [116, 4], [157, 3], [175, 2], [164, 2]],
["[睡眠]防御", "防具に睡眠耐性を付加します。",
[[1, 7]], 20, [116, 4], [149, 3], [163, 2], [164, 2]],
["[麻痺]防御", "防具に麻痺耐性を付加します。",
[[1, 8]], 20, [116, 4], [151, 3], [171, 2], [168, 2]],
["[流血]防御", "防具に流血耐性を付加します。",
[[1, 18]], 20, [116, 4], [154, 3], [166, 2], [168, 2]],
# ステート B
["[幻惑]防御", "防具に幻惑耐性を付加します。",
[[1, 4]], 20, [118, 4], [173, 3], [177, 2], [190, 2]],
["[呪詛]防御", "防具に呪詛耐性を付加します。",
[[1, 9]], 20, [118, 4], [174, 3], [188, 2], [190, 2]],
["[凍傷]防御", "防具に凍傷耐性を付加します。",
[[1, 11]], 20, [118, 4], [169, 3], [189, 2], [179, 2]],
["[火傷]防御", "防具に火傷耐性を付加します。",
[[1, 12]], 20, [118, 4], [170, 3], [182, 2], [179, 2]],
["[沈黙]防御", "防具に沈黙耐性を付加します。",
[[1, 15]], 20, [118, 4], [172, 3], [181, 2], [178, 2]],
["[束縛]防御", "防具に束縛耐性を付加します。",
[[1, 16]], 20, [118, 4], [167, 3], [185, 2], [178, 2]],
# ステート C
["[即死]防御", "防具に即死耐性を付加します。",
[[1, 1]], 20, [120, 4], [186, 3], [197, 2], [192, 2]],
["[封印]防御", "防具に封印耐性を付加します。",
[[1, 5]], 20, [120, 4], [187, 3], [195, 2], [192, 2]],
["[停滞]防御", "防具に停滞耐性を付加します。",
[[1, 10]], 20, [120, 4], [183, 3], [193, 2], [201, 2]],
["[咒怨]防御", "防具に咒怨耐性を付加します。",
[[1, 13]], 20, [120, 4], [184, 3], [194, 2], [201, 2]],
["[誘惑]防御", "防具に誘惑耐性を付加します。",
[[1, 14]], 20, [120, 4], [191, 3], [196, 2], [202, 2]],
["[石化]防御", "防具に石化耐性を付加します。",
[[1, 17]], 20, [120, 4], [180, 3], [198, 2], [202, 2]],
# 特殊
["[必殺]防御", "防具に必殺防御を付加します。",
[[0, 26]], 10, [122, 2], [124, 2], [215, 3], [216, 1]],
["[SP操作]防御", "SP消費率を軽減します。",
[[0, 27]], 10, [122, 2], [124, 2], [210, 3], [216, 1]],
] # ←この ] は消さないこと
# ◆価格 0 の武器価格計算式
# 【 atk…攻撃力 pdef…物理防御 mdef…魔法防御 str_p…腕力+
# dex_p…器用さ+ agi_p…素早さ+ int_p…魔力+ 】
# 改造費用算出に使用。(売却することはできない)
AEQ_WEAPON_PRICE_FORMULA =
"(atk + pdef + mdef + (str_p + dex_p + agi_p + int_p).abs) * 30"
# ◆価格 0 の防具価格計算式
# 【 pdef…物理防御 mdef…魔法防御 eva…回避修正 str_p…腕力+
# dex_p…器用さ+ agi_p…素早さ+ int_p…魔力+ 】
AEQ_ARMOR_PRICE_FORMULA =
"(pdef + mdef + (eva + str_p + dex_p + agi_p + int_p).abs) * 30"
# ◆改造画面背景透過
AEQ_BACK_TRANSPARENT = true
# ◆「武器改造」名称
AEQ_COMMAND_WEAPON_ALTER = "武器改造"
# ◆「改造装備破棄」名称
AEQ_COMMAND_WEAPON_DISPOSE = "武器還元"
# ◆「防具改造」名称
AEQ_COMMAND_ARMOR_ALTER = "防具改造"
# ◆「改造防具破棄」名称
AEQ_COMMAND_ARMOR_DISPOSE = "防具還元"
# ◆「武器改造」ヘルプ
AEQ_HELP_WEAPON_ALTER = "所持している武器を改造します。"
# ◆「改造装備破棄」ヘルプ
AEQ_HELP_WEAPON_DISPOSE = "改造した武器を破棄します。"
# ◆「防具改造」ヘルプ
AEQ_HELP_ARMOR_ALTER = "所持している防具を改造します。"
# ◆「改造防具破棄」ヘルプ
AEQ_HELP_ARMOR_DISPOSE = "改造した防具を破棄します。"
# ◆改造武器リスト空欄の表示文字列
AEQ_TEXT_NO_WEAPON = "- No weapon -"
# ◆改造防具リスト空欄の表示文字列
AEQ_TEXT_NO_ARMOR = "- No armor -"
# ◆付加属性を表示する範囲
# ([Integer][Range]クラスの配列)
AEQ_ELEMENT_RANGE = [1..9]
# ◆付加属性(特殊)を表示する範囲
# ([Integer][Range]クラスの配列)
AEQ_ELEMENT_RANGE2 = [21..29, 55..59]
# ◆付加/解除ステートを表示する範囲
# (指定方法は AEQ_ELEMENT_RANGE と同様)
AEQ_STATE_RANGE = [1..18]
# ◆武器改造確認コマンド
AEQ_ALTER_COMMAND = ["改造する", Vocab::cancel]
# ◆武器破棄確認コマンド
AEQ_DISPOSE_COMMAND = ["還元する", Vocab::cancel]
# ◆ファクター付加確認コマンド
AEQ_FACTOR_COMMAND = ["付加する", Vocab::cancel]
# ※↑3項目は、コマンド数を変更するとバグります。
# ◆ カスタマイズ用"カッコ"
# ※別のスクリプトとかを使用しており、"[", "]"が使用不能なのはイタイという
# 場合に。
STT = "《"
FIN = "》"
#------------------------------------------------------------------------
# ○ リストの中に値が含まれているのかどうかを判定
#------------------------------------------------------------------------
def into_list(list_range, root)
skip = true
list_range.each { |rng|
case rng
when Integer
skip = element != rng
when Range
skip = !rng.member?(root)
end
}
return skip
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["AlterEquipment"] = true
#--------------------------------------------------------------------------
# ○ 装備品改造画面呼び出し
#--------------------------------------------------------------------------
def call_equip_alter
if $game_system.max_alter == nil
$game_system.max_alter = 0
end
# プレイヤーの姿勢を矯正
$game_player.straighten
# 装備品改造画面に切り替え
$scene = Scene_AlterEquipment.new
end
module AlteredEquipment
#--------------------------------------------------------------------------
# ○ 改造武器破棄
# index : 改造武器番号 (1〜AEQ_WEAPON_MAX)
#--------------------------------------------------------------------------
def self.dispose_weapon(index)
# 破棄できない場合は戻る
if index < 1 || index > KGC::AEQ_WEAPON_MAX ||
$game_party.alter_weapons[index - 1] == nil
return
end
# 指定武器を破棄
id = $game_party.alter_weapons[index - 1].id
$game_party.alter_weapons[index - 1] = nil
$data_weapons[id] = RPG::Weapon2.new
$game_party.lose_weapon(id, 99)
end
#--------------------------------------------------------------------------
# ○ 改造防具破棄
# index : 改造防具番号 (1〜AEQ_ARMOR_MAX)
#--------------------------------------------------------------------------
def self.dispose_armor(index)
# 破棄できない場合は戻る
if index < 1 || index > KGC::AEQ_ARMOR_MAX ||
$game_party.alter_armors[index - 1] == nil
return
end
# 指定防具を破棄
id = $game_party.alter_armors[index - 1].id
$game_party.alter_armors[index - 1] = nil
$data_armors[id] = RPG::Armor2.new
$game_party.lose_armor(id, 99)
end
#--------------------------------------------------------------------------
# ○ 指定IDの武器と、それを改造した武器をすべて破棄
# id : 武器ID
#--------------------------------------------------------------------------
def self.dispose_all_weapon(id)
weapons = $game_party.alter_weapons.find_all { |w|
w != nil && w.original_id == id
}
weapons.each { |w|
index = $game_party.alter_weapons.index(w) + 1
dispose_weapon(index)
}
$game_party.lose_weapon(id, 99)
end
#--------------------------------------------------------------------------
# ○ 指定IDの防具と、それを改造した防具をすべて破棄
# id : 防具ID
#--------------------------------------------------------------------------
def self.dispose_all_armor(id)
armors = $game_party.alter_armors.find_all { |a|
a != nil && a.original_id == id
}
armors.each { |a|
index = $game_party.alter_armors.index(a) + 1
dispose_armor(index)
}
$game_party.lose_armor(id, 99)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ 武器・防具 共用モジュール
#==============================================================================
module KGC_AlterEquipment_WA
#--------------------------------------------------------------------------
# ○ オリジナル名取得
#--------------------------------------------------------------------------
def original_name
return @name
end
#--------------------------------------------------------------------------
# ○ 改造可能回数取得
#--------------------------------------------------------------------------
def alterable_count
return original_name =~ /#{KGC::STT}ALT[ ]*(\d+)#{KGC::FIN}/i ? $1.to_i :
KGC::AEQ_ALTERABLE_COUNT[$game_system.max_alter]
end
end
module KGC_AlterEquipment_WA2
attr_writer :change_name
#--------------------------------------------------------------------------
# ○ 改造回数を除去した名称取得
#--------------------------------------------------------------------------
def plain_name
if KGC::AEQ_SHOW_ALTER_COUNT
rg = (KGC::AEQ_ALTER_COUNT_FORMAT.gsub(/(.*){n}/i) {
"[#{$1}]{#{$1.scan(/./).size}}\\d+"
}).gsub(/\-/) {"\-"}
return name.gsub(%r(#{rg}$)i) {""}
else
return name
end
end
#--------------------------------------------------------------------------
# ○ 残り改造可能回数取得
#--------------------------------------------------------------------------
def alterable_count
return (@name =~ /#{KGC::STT}ALT[ ]*(\d+)#{KGC::FIN}/i ? $1.to_i :
KGC::AEQ_ALTERABLE_COUNT[$game_system.max_alter]) - @alter_count
end
#--------------------------------------------------------------------------
# ○ オリジナルID取得
#--------------------------------------------------------------------------
def original_id
return @original_id
end
#--------------------------------------------------------------------------
# ○ 改造回数取得
#--------------------------------------------------------------------------
def alter_count
@alter_count = 0 if @alter_count == nil
return @alter_count
end
#--------------------------------------------------------------------------
# ○ 改造回数加算
#--------------------------------------------------------------------------
def add_alter_count
@alter_count = 0 if @alter_count == nil
@alter_count += 1
self.show_alter_count
end
end
# Silfeed Arks様のスクリプトと併用?
class Game_System
attr_accessor :weapon_data # 武器のカスタムデータ群
attr_accessor :armor_data # 防具のカスタムデータ群
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Weapon
#==============================================================================
class RPG::Weapon
include KGC_AlterEquipment_WA
#--------------------------------------------------------------------------
# ● 名称取得
#--------------------------------------------------------------------------
def name
return @name.gsub(/#{KGC::STT}.*#{KGC::FIN}/) {""}
end
#--------------------------------------------------------------------------
# ○ 回避修正
#--------------------------------------------------------------------------
def eva
return 0
end
if $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 幸運値
#--------------------------------------------------------------------------
def luk
return 0
end
end # $OuterFlgs["Param_Add"]
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Armor
#==============================================================================
class RPG::Armor
include KGC_AlterEquipment_WA
#--------------------------------------------------------------------------
# ● 名称取得
#--------------------------------------------------------------------------
def name
return @name.gsub(/#{KGC::STT}.*#{KGC::FIN}/) {""}
end
#--------------------------------------------------------------------------
# ○ 攻撃力
#--------------------------------------------------------------------------
def atk
return 0
end
if $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 幸運値
#--------------------------------------------------------------------------
def luk
return 0
end
end # $OuterFlgs["Param_Add"]
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ RPG::Weapon2
#==============================================================================
class RPG::Weapon2 < RPG::Weapon
include KGC_AlterEquipment_WA2
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super
@eva = 0
if $OuterFlgs["Param_Add"]
@luk = 0
end # $OuterFlgs["Param_Add"]
@original_id = 0
@original_price = 0
@alter_count = 0
end
#--------------------------------------------------------------------------
# ● 名称取得
#--------------------------------------------------------------------------
def name
return @name.gsub(/#{KGC::STT}.*#{KGC::FIN}/) {""}
end
#--------------------------------------------------------------------------
# ○ 回避修正
#--------------------------------------------------------------------------
def eva
@eva = 0 if @eva == nil
return @eva
end
if $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 幸運値
#--------------------------------------------------------------------------
def luk
@luk = 0 if @luk == nil
return @luk
end
end # $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 改造費用算出
#--------------------------------------------------------------------------
def alter_cost(factor)
if @original_price == 0
formula = KGC::AEQ_WEAPON_PRICE_FORMULA.dup
formula.gsub!(/atk/i) {"@atk"}
formula.gsub!(/pdef/i) {"@pdef"}
formula.gsub!(/mdef/i) {"@mdef"}
formula.gsub!(/eva/i) {""}
formula.gsub!(/str_p/i) {"@str_plus"}
formula.gsub!(/dex_p/i) {"@dex_plus"}
formula.gsub!(/agi_p/i) {"@agi_plus"}
formula.gsub!(/int_p/i) {"@int_plus"}
cost = eval(formula)
else
cost = @original_price
end
cost = cost * factor[3] / 100
return Integer(cost)
end
#--------------------------------------------------------------------------
# ○ ファクター付加可否
#--------------------------------------------------------------------------
def can_add_factor?(factor)
# 付加済み判定
(0...factor[2].size).each { |i|
case factor[2][i][0]
when 0 # 属性
if @element_set.include?(factor[2][i][1])
#return false
return AEQ_ALREADY
end
when 1 # ステート付加
if @plus_state_set.include?(factor[2][i][1])
#return false
return AEQ_ALREADY
end
when 2 # ステート解除
if @minus_state_set.include?(factor[2][i][1])
#return false
return AEQ_ALREADY
end
end
}
# 価格判定
if $game_party.gold < self.alter_cost(factor)
#return false
return AEQ_FALSE
end
# アイテム所持判定
(4...factor.size).each { |i|
if $game_party.item_number(factor[i][0]) < factor[i][1]
#return false
return AEQ_FALSE
end
}
#return true
return AEQ_TRUE
end
#--------------------------------------------------------------------------
# ○ ファクター付加
#--------------------------------------------------------------------------
def add_factor(factor)
(0...factor[2].size).each { |i|
# ファクターを付加
case factor[2][i][0]
when 0 # 属性
@element_set.push(factor[2][i][1])
# 命中精度の場合、排他的に付加する
if factor[2][i][1] >= 55 && factor[2][i][1] <= 59
for j in 55..59
if factor[2][i][1] != j
@element_set.delete(j)
end
end
end
@element_set.sort!
when 1 # ステート付加
@plus_state_set.push(factor[2][i][1])
@plus_state_set.sort!
when 2 # ステート解除
@minus_state_set.push(factor[2][i][1])
@minus_state_set.sort!
when 3 # 能力値
if factor[2][i].size == 1
get_root = factor[1]
# atk , pdef , mdef , str , dex , agi , int ,
# eva
add_list = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
[0, 0]]
words = [KGC::AEQ_ATK, KGC::AEQ_PDEF, KGC::AEQ_MDEF, KGC::AEQ_STR,
KGC::AEQ_DEX, KGC::AEQ_AGI, KGC::AEQ_INT, KGC::AEQ_EVA]
for i in 0...add_list.size
add_list[i][0] = get_root =~
/\[#{words[i]}を[ ]*([0-9]+)(%|%)\]/i ? $1.to_i : 0
add_list[i][1] = get_root =~
/\[#{words[i]}を[ ]*([0-9]+)(Pt|Pt)\]/i ? $1.to_i : 0
end
root_list = [@atk, @pdef, @mdef, @str_plus, @dex_plus, @agi_plus,
@int_plus, @eva]
for i in 0...add_list.size
if(add_list[i][0] != 0 && root_list[i] == 0)
add_list[i][0] = KGC::AEQ_ROOT_PLUS_VALUE
else
add_list[i][0] = root_list[i] * add_list[i][0] / 100
end
end
@atk += add_list[0][0] + add_list[0][1]
@pdef += add_list[1][0] + add_list[1][1]
@mdef += add_list[2][0] + add_list[2][1]
@str_plus += add_list[3][0] + add_list[3][1]
@dex_plus += add_list[4][0] + add_list[4][1]
@agi_plus += add_list[5][0] + add_list[5][1]
@int_plus += add_list[6][0] + add_list[6][1]
@eva += add_list[7][0] + add_list[7][1]
else
return if (state = $data_states[factor[2][i][1]]) == nil
if state.original_name =~ /#{KGC::STT}EQAL[ ]*(?:%|%)#{KGC::FIN}/i
@atk += @atk * state.atk_rate / 100
@pdef += @pdef * state.pdef_rate / 100
@mdef += @mdef * state.mdef_rate / 100
@eva += @eva * state.eva / 100
@str_plus += @str_plus * state.str_rate / 100
@dex_plus += @dex_plus * state.dex_rate / 100
@agi_plus += @agi_plus * state.agi_rate / 100
@int_plus += @int_plus * state.int_rate / 100
else
@atk += state.atk_rate
@pdef += state.pdef_rate
@mdef += state.mdef_rate
@eva += state.eva
@str_plus += state.str_rate
@dex_plus += state.dex_rate
@agi_plus += state.agi_rate
@int_plus += state.int_rate
end
end
end
}
# 金消費
$game_party.lose_gold(self.alter_cost(factor))
# アイテム消費
(4...factor.size).each { |i|
$game_party.lose_item(factor[i][0], factor[i][1])
}
# 改造回数加算
self.add_alter_count
end
#--------------------------------------------------------------------------
# ○ 武器情報をコピー
#--------------------------------------------------------------------------
def copy_weapon(id)
weapon = $data_weapons[id]
# Silfeed Arks様のスクリプトと併用?
$game_system.weapon_data[id] = $data_weapons[id]
@original_id = id
@change_name = nil
self.show_alter_count
@icon_name = weapon.icon_name.dup
@description = weapon.description.dup
@animation1_id = weapon.animation1_id
@animation2_id = weapon.animation2_id
@price = 0
@original_price = weapon.price
@atk = weapon.atk
@pdef = weapon.pdef
@mdef = weapon.mdef
@eva = 0
@str_plus = weapon.str_plus
@dex_plus = weapon.dex_plus
@agi_plus = weapon.agi_plus
@int_plus = weapon.int_plus
if $OuterFlgs["Param_Add"]
@luk = 0
end # $OuterFlgs["Param_Add"]
@element_set = weapon.element_set.dup
@plus_state_set = weapon.plus_state_set.dup
@minus_state_set = weapon.minus_state_set.dup
# 装備可能者を設定
(1...$data_classes.size).each { |i|
actor_class = $data_classes[i]
# 改造対象の武器を装備できるクラスの場合
if actor_class.weapon_set.include?(id)
# 装備可能武器に追加
actor_class.weapon_set.push(@id)
else
# 装備できない場合は装備可能武器から削除
actor_class.weapon_set.delete(@id)
end
}
end
#--------------------------------------------------------------------------
# ○ 改造回数表示
#--------------------------------------------------------------------------
def show_alter_count
@name = (@change_name != nil ? @change_name :
$data_weapons[@original_id].original_name).dup
if KGC::AEQ_SHOW_ALTER_COUNT
if @alter_count > 0
@name += KGC::AEQ_ALTER_COUNT_FORMAT.gsub(/{n}/i) {"#{@alter_count}"}
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ RPG::Armor2
#==============================================================================
class RPG::Armor2 < RPG::Armor
include KGC_AlterEquipment_WA2
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super
@atk = 0
if $OuterFlgs["Param_Add"]
@luk = 0
end # $OuterFlgs["Param_Add"]
@original_id = 0
@original_price = 0
@alter_count = 0
end
#--------------------------------------------------------------------------
# ● 名称取得
#--------------------------------------------------------------------------
def name
return @name.gsub(/#{KGC::STT}.*#{KGC::FIN}/) {""}
end
#--------------------------------------------------------------------------
# ○ 攻撃力
#--------------------------------------------------------------------------
def atk
@atk = 0 if @atk == nil
return @atk
end
if $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 幸運値
#--------------------------------------------------------------------------
def luk
@luk = 0 if @luk == nil
return @luk
end
end # $OuterFlgs["Param_Add"]
#--------------------------------------------------------------------------
# ○ 改造費用算出
#--------------------------------------------------------------------------
def alter_cost(factor)
if @original_price == 0
formula = KGC::AEQ_ARMOR_PRICE_FORMULA.dup
formula.gsub!(/atk/i) {""}
formula.gsub!(/pdef/i) {"@pdef"}
formula.gsub!(/mdef/i) {"@mdef"}
formula.gsub!(/eva/i) {"@eva"}
formula.gsub!(/str_p/i) {"@str_plus"}
formula.gsub!(/dex_p/i) {"@dex_plus"}
formula.gsub!(/agi_p/i) {"@agi_plus"}
formula.gsub!(/int_p/i) {"@int_plus"}
cost = eval(formula)
else
cost = @original_price
end
cost = cost * factor[3] / 100
return Integer(cost)
end
include KGC
#--------------------------------------------------------------------------
# ○ ファクター付加可否
#--------------------------------------------------------------------------
def can_add_factor?(factor)
# 付加済み判定
(0...factor[2].size).each { |i|
case factor[2][i][0]
when 0 # 防御属性
if @guard_element_set.include?(factor[2][i][1])
#return false
return AEQ_ALREADY
end
when 1 # 防御ステート
if @guard_state_set.include?(factor[2][i][1])
#return false
return AEQ_ALREADY
end
end
}
# 価格判定
if $game_party.gold < self.alter_cost(factor)
#return false
return AEQ_FALSE
end
# アイテム所持判定
(4...factor.size).each { |i|
if $game_party.item_number(factor[i][0]) < factor[i][1]
#return false
return AEQ_FALSE
end
}
#return true
return AEQ_TRUE
end
#--------------------------------------------------------------------------
# ○ ファクター付加
#--------------------------------------------------------------------------
def add_factor(factor)
# 金消費
$game_party.lose_gold(self.alter_cost(factor))
# アイテム消費
(4...factor.size).each { |i|
$game_party.lose_item(factor[i][0], factor[i][1])
}
(0...factor[2].size).each { |i|
# ファクターを付加
case factor[2][i][0]
when 0 # 防御属性
for i in 0...KGC::AEQ_INVERCE_ADD.size
if @guard_element_set.include?(KGC::AEQ_INVERCE_ADD[i][1])
if factor[2][i][1] == KGC::AEQ_INVERCE_ADD[i][0]
@guard_element_set.delete(KGC::AEQ_INVERCE_ADD[i][1])
break
end
else
@guard_element_set.push(factor[2][i][1])
break
end
end
@guard_element_set.sort!
when 1 # 防御ステート
@guard_state_set.push(factor[2][i][1])
@guard_state_set.sort!
when 2 # 能力値
if factor[2][i].size == 1
get_root = factor[1]
if $OuterFlgs["Param_Add"]
# pdef , mdef , eva , str , dex , agi , int ,
# luk
add_list = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
[0, 0]]
words = [KGC::AEQ_PDEF, KGC::AEQ_MDEF, KGC::AEQ_EVA, KGC::AEQ_STR,
KGC::AEQ_DEX, KGC::AEQ_AGI, KGC::AEQ_INT, KGC::AEQ_LUK]
else
# pdef , mdef , eva , str , dex , agi , int
add_list = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
words = [KGC::AEQ_PDEF, KGC::AEQ_MDEF, KGC::AEQ_EVA, KGC::AEQ_STR,
KGC::AEQ_DEX, KGC::AEQ_AGI, KGC::AEQ_INT]
end # $OuterFlgs["Param_Add"]
for i in 0...add_list.size
add_list[i][0] = get_root =~
/\[#{words[i]}を[ ]*([0-9]+)(%|%)\]/i ? $1.to_i : 0
add_list[i][1] = get_root =~
/\[#{words[i]}を[ ]*([0-9]+)(Pt|Pt)\]/i ? $1.to_i : 0
end
if $OuterFlgs["Param_Add"]
root_list = [@pdef, @mdef, @eva, @str_plus, @dex_plus, @agi_plus,
@int_plus, @luk]
else
root_list = [@pdef, @mdef, @eva, @str_plus, @dex_plus, @agi_plus,
@int_plus]
end # $OuterFlgs["Param_Add"]
for i in 0...add_list.size
if(add_list[i][0] != 0 && root_list[i] == 0)
add_list[i][0] = KGC::AEQ_ROOT_PLUS_VALUE
else
add_list[i][0] = root_list[i] * add_list[i][0] / 100
end
end
@pdef += add_list[0][0] + add_list[0][1]
@mdef += add_list[1][0] + add_list[1][1]
@eva += add_list[2][0] + add_list[2][1]
@str_plus += add_list[3][0] + add_list[3][1]
@dex_plus += add_list[4][0] + add_list[4][1]
@agi_plus += add_list[5][0] + add_list[5][1]
@int_plus += add_list[6][0] + add_list[6][1]
if $OuterFlgs["Param_Add"]
@luk += add_list[7][0] + add_list[7][1]
end # $OuterFlgs["Param_Add"]
else
return if (state = $data_states[factor[2][i][1]]) == nil
if state.original_name =~ /#{KGC::STT}EQAL[ ]*(?:%|%)#{KGC::FIN}/i
@atk += @atk * state.atk_rate / 100
@pdef += @pdef * state.pdef_rate / 100
@mdef += @mdef * state.mdef_rate / 100
@eva += @eva * state.eva / 100
@str_plus += @str_plus * state.str_rate / 100
@dex_plus += @dex_plus * state.dex_rate / 100
@agi_plus += @agi_plus * state.agi_rate / 100
@int_plus += @int_plus * state.int_rate / 100
else
@atk += state.atk_rate
@pdef += state.pdef_rate
@mdef += state.mdef_rate
@eva += state.eva
@str_plus += state.str_rate
@dex_plus += state.dex_rate
@agi_plus += state.agi_rate
@int_plus += state.int_rate
end
end
end
}
# 改造回数加算
self.add_alter_count
end
include MINTO
#--------------------------------------------------------------------------
# ○ 防具情報をコピー
#--------------------------------------------------------------------------
def copy_armor(id)
armor = $data_armors[id]
# Silfeed Arks様のスクリプトと併用?
$game_system.armor_data[id] = $data_armors[id]
@original_id = id
@change_name = nil
self.show_alter_count
@icon_name = armor.icon_name.dup
@description = armor.description.dup
@kind = armor.kind
@auto_state_id = armor.auto_state_id
@price = 0
@original_price = armor.price
@atk = 0
@pdef = armor.pdef
@mdef = armor.mdef
if $OuterFlgs["Param_Add"]
if armor.guard_element_set.include?(PARAM_ADD::ELE_LUK_PLUS)
@eva = 0
@luk = armor.eva
else
@eva = armor.eva
@luk = 0
end
else
@eva = armor.eva
end # $OuterFlgs["Param_Add"]
@str_plus = armor.str_plus
@dex_plus = armor.dex_plus
@agi_plus = armor.agi_plus
@int_plus = armor.int_plus
@guard_element_set = armor.guard_element_set.dup
@guard_state_set = armor.guard_state_set.dup
# 装備可能者を設定
(1...$data_classes.size).each { |i|
actor_class = $data_classes[i]
# 改造対象の武器を装備できるクラスの場合
if actor_class.armor_set.include?(id)
# 装備可能武器に追加
actor_class.armor_set.push(@id)
else
# 装備できない場合は装備可能武器から削除
actor_class.armor_set.delete(@id)
end
}
end
#--------------------------------------------------------------------------
# ○ 改造回数表示
#--------------------------------------------------------------------------
def show_alter_count
@name = (@change_name != nil ? @change_name :
$data_armors[@original_id].original_name).dup
if KGC::AEQ_SHOW_ALTER_COUNT
if @alter_count > 0
@name += KGC::AEQ_ALTER_COUNT_FORMAT.gsub(/{n}/i) {"#{@alter_count}"}
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::State
#==============================================================================
class RPG::State
#--------------------------------------------------------------------------
# ● 名前の取得
#--------------------------------------------------------------------------
def name
return @name.gsub(/#{KGC::STT}.*#{KGC::FIN}/) {""}
end
#--------------------------------------------------------------------------
# ○ オリジナル名取得
#--------------------------------------------------------------------------
def original_name
return @name
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :max_alter
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :equipment_alter_rename
attr_accessor :equipment_alter_rename_type
attr_accessor :equipment_alter_rename_id
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_AlterEquipment initialize
def initialize
initialize_KGC_AlterEquipment
@equipment_alter_rename = false
@equipment_alter_rename_type = 0
@equipment_alter_rename_id = 0
$game_system.max_alter = 0
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 回避修正の取得
#--------------------------------------------------------------------------
alias eva_KGC_AlterEquipment eva
def eva
n = eva_KGC_AlterEquipment
if self.is_a?(Game_Actor)
# 改造した武器の回避修正を加算
equip_weapon_list.each { |weapon| n += weapon.eva }
end
return n
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 基本攻撃力の取得
#--------------------------------------------------------------------------
alias base_atk_KGC_AlterEquipment base_atk
def base_atk
n = base_atk_KGC_AlterEquipment
# 改造した防具の攻撃力を加算
equip_armor_list.each { |armor| n += armor.atk }
return n
end
unless $imported["EquipExtension"]
#--------------------------------------------------------------------------
# ○ 装備武器リストの取得
#--------------------------------------------------------------------------
def equip_weapon_list
result = [$data_weapons[@weapon_id]]
return result.compact
end
#--------------------------------------------------------------------------
# ○ 装備防具リストの取得
#--------------------------------------------------------------------------
def equip_armor_list
result = []
(1..4).each { |i| result << $data_armors[eval("@armor#{i}_id")] }
return result.compact
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_AlterEquipment initialize
def initialize
initialize_KGC_AlterEquipment
@alter_weapons = []
@alter_armors = []
end
#--------------------------------------------------------------------------
# ○ 改造装備取得
#--------------------------------------------------------------------------
def alter_weapons
@alter_weapons = [] if @alter_weapons == nil
return @alter_weapons
end
#--------------------------------------------------------------------------
# ○ 改造装備設定
#--------------------------------------------------------------------------
def alter_weapons=(ary)
@alter_weapons = [] if @alter_weapons == nil
@alter_weapons = ary
end
#--------------------------------------------------------------------------
# ○ 改造防具取得
#--------------------------------------------------------------------------
def alter_armors
@alter_armors = [] if @alter_armors == nil
return @alter_armors
end
#--------------------------------------------------------------------------
# ○ 改造防具設定
#--------------------------------------------------------------------------
def alter_armors=(ary)
@alter_armors = [] if @alter_armors == nil
@alter_armors = ary
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_AlterEquipmentCommand
#------------------------------------------------------------------------------
# 装備改造画面で、操作を選択するウィンドウです。
#==============================================================================
class Window_AlterEquipmentCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64 + 32, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
@commands = [KGC::AEQ_COMMAND_WEAPON_ALTER, KGC::AEQ_COMMAND_WEAPON_DISPOSE,
KGC::AEQ_COMMAND_ARMOR_ALTER, KGC::AEQ_COMMAND_ARMOR_DISPOSE]
@item_max = @commands.size
@column_max = @commands.size
@item_width = (width - 32) / @commands.size
self.z = 1000
self.index = 0
refresh
end
include RUBY_SYS
include DIAMOND
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
for i in 0...@commands.size
rect = Rect.new(@item_width * i, 0, @item_width, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
draw_shadow_text([@item_width * i, 0, @item_width, 32], @commands[i],
system_color, 1)
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
if index != -1
self.cursor_rect.set(@item_width * index, 0, @item_width, 32)
end
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
case self.index
when 0
@help_window.set_text(KGC::AEQ_HELP_WEAPON_ALTER)
when 1
@help_window.set_text(KGC::AEQ_HELP_WEAPON_DISPOSE)
when 2
@help_window.set_text(KGC::AEQ_HELP_ARMOR_ALTER)
when 3
@help_window.set_text(KGC::AEQ_HELP_ARMOR_DISPOSE)
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_AlterEquipmentLeft
#------------------------------------------------------------------------------
# 装備改造画面で、改造する装備スロットの一覧を表示するウィンドウです。
#==============================================================================
class Window_AlterEquipmentLeft < Window_Selectable
include VDI
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 128 - 32, 320, 352)
self.active = false
self.index = -1
self.back_opacity = 160 if KGC::AEQ_BACK_TRANSPARENT
@column_max = 1
@draw_item_num = 2 # 一度に描画する数(必ずしも2である必要はない)
@draw_ok = Array.new() # 描画完了フラグ配列
@draw_type = 0
refresh
end
#--------------------------------------------------------------------------
# ○ 装備の取得
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(type = 0)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@draw_counter = 0
reset_array
@data = []
# スロット一覧を作成
case type
when 0
for i in 0...KGC::AEQ_WEAPON_MAX
weapon = $game_party.alter_weapons[i]
@data.push(weapon)
end
when 1
for i in 0...KGC::AEQ_ARMOR_MAX
armor = $game_party.alter_armors[i]
@data.push(armor)
end
end
@draw_type = type
# ビットマップを作成し、全項目を描画
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
draw_item_v
end
include RUBY_SYS
include DIAMOND
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
#def draw_item(index, type)
def draw_item(index)
return if @data == nil
item = @data[index]
x = 36
y = index * 32
draw_shadow_text([x - 32, y, 32, 32], (index + 1).to_s, text_color(6), 1)
if item != nil
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
ac = item.alterable_count
if number > 0 && ac != 0
dflg = true
else
dflg = ac != 0 ? true : false
end
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, icon, icon.rect, opacity)
text = transfer(item.name)
draw_shadow_text([x + 28, y], text, normal_color, 0, dflg)
else
case @draw_type
when 0
text = KGC::AEQ_TEXT_NO_WEAPON
when 1
text = KGC::AEQ_TEXT_NO_ARMOR
end
draw_shadow_text([x, y, 256, 32], text, normal_color, 1, dflg)
end
end
include BM
#--------------------------------------------------------------------------
# ○ 項目の再描画
#--------------------------------------------------------------------------
def redraw_item(index, type)
case type
when 0
@data[index] = $game_party.alter_weapons[index]
when 1
@data[index] = $game_party.alter_armors[index]
end
self.contents.fill_rect(0, index * 32, 288, 32, BM::NILCOLOR)
self.draw_item(index)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_AlterEquipmentRight
#------------------------------------------------------------------------------
# 装備改造画面で、所持している装備一覧を表示するウィンドウです。
#==============================================================================
class Window_AlterEquipmentRight < Window_Selectable
include VDI
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(320, 128 - 32, 320, 352)
self.active = false
self.visible = false
self.index = 0
self.back_opacity = 160 if KGC::AEQ_BACK_TRANSPARENT
@column_max = 1
@draw_item_num = 2 # 一度に描画する数(必ずしも2である必要はない)
@draw_ok = Array.new() # 描画完了フラグ配列
refresh
end
#--------------------------------------------------------------------------
# ○ 装備の取得
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(type = 0)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@draw_counter = 0
reset_array
@data = []
case type
when 0
unless KGC::AEQ_EXCLUDE_EQUIP_TYPE.include?(0)
# 所持している武器を追加
(1...$alter_weapon_start).each { |i|
if $game_party.weapon_number(i) > 0 &&
$data_weapons[i].alterable_count != 0 &&
!KGC::AEQ_EXCLUDE_WEAPONS.include?(i)
@data << $data_weapons[i]
end
}
end
when 1
# 所持している防具を追加
(1...$alter_armor_start).each { |i|
if $game_party.armor_number(i) > 0 &&
$data_armors[i].alterable_count != 0 &&
!KGC::AEQ_EXCLUDE_ARMORS.include?(i) &&
!KGC::AEQ_EXCLUDE_EQUIP_TYPE.include?($data_armors[i].kind + 1)
@data << $data_armors[i]
end
}
end
# 個数が 0 の場合は nil を追加
@data.push(nil) if @data.size == 0
# ビットマップを作成し、全項目を描画
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
draw_item_v
end
include RUBY_SYS
include DIAMOND
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
#def draw_item(index, type)
def draw_item(index)
return if @data == nil
item = @data[index]
return if item == nil
x = 4
y = index * 32
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, icon, icon.rect)
text = transfer(item.name)
draw_shadow_text([x + 28, y], text)
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
draw_shadow_text([x + 244, y, 16, 32], Vocab::CORON_WORD, normal_color, 1)
draw_shadow_text([x + 260, y, 24, 32], number.to_s, normal_color, 2)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_AlterEquipmentStatus
#------------------------------------------------------------------------------
# 装備改造画面で、選択した装備の能力を表示するウィンドウです。
#==============================================================================
class Window_AlterEquipmentStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(320, 128 - 32, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160 if KGC::AEQ_BACK_TRANSPARENT
self.z = 500
refresh(nil)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(item, factor = nil)
self.contents.clear
if factor == nil # アイテムステータス
return if item == nil || item.name == ""
draw_parameter(item, factor)
draw_element(item, factor)
draw_state(item, factor)
else # 素材アイテム数
return if factor == nil
draw_material(item, factor)
end
end
include RUBY_SYS
include DIAMOND
include BM
include MINTO
#--------------------------------------------------------------------------
# ○ パラメータ描画
#--------------------------------------------------------------------------
def draw_parameter(item, factor)
self.contents.font.size = 20
if item.is_a?(RPG::Weapon)
draw_shadow_text([ 4, 0, 80, 32], Vocab::atk, system_color)
draw_shadow_text([148, 0, 80, 32], Vocab::pdef, system_color)
draw_shadow_text([ 4, 24, 80, 32], Vocab::mdef, system_color)
else
draw_shadow_text([ 4, 0, 80, 32], Vocab::pdef, system_color)
draw_shadow_text([148, 0, 80, 32], Vocab::mdef, system_color)
draw_shadow_text([ 4, 24, 80, 32], Vocab::eva, system_color)
if $OuterFlgs["Param_Add"]
draw_shadow_text([148, 72, 80, 32], Vocab::luk, system_color)
end # $OuterFlgs["Param_Add"]
end
draw_shadow_text([148, 24, 80, 32], Vocab::str, system_color)
draw_shadow_text([ 4, 48, 80, 32], Vocab::dex, system_color)
draw_shadow_text([148, 48, 80, 32], Vocab::agi, system_color)
draw_shadow_text([ 4, 72, 80, 32], Vocab::int, system_color)
if $OuterFlgs["Param_Add"]
if item.is_a?(RPG::Weapon2) || item.is_a?(RPG::Armor2)
change_luk = item.luk
change_eva = item.eva
elsif item.is_a?(RPG::Weapon) && item.element_set.include?(PARAM_ADD::ELE_LUK_PLUS) ||
item.is_a?(RPG::Armor) && item.guard_element_set.include?(PARAM_ADD::ELE_LUK_PLUS)
change_luk = item.eva
change_eva = 0
else
change_luk = 0
change_eva = item.eva
end
else
change_eva = item.eva
end # $OuterFlgs["Param_Add"]
if item.is_a?(RPG::Weapon)
draw_shadow_text([ 84, 0, 80, 32], item.atk.to_s)
draw_shadow_text([228, 0, 80, 32], item.pdef.to_s)
draw_shadow_text([ 84, 24, 80, 32], item.mdef.to_s)
else
draw_shadow_text([ 84, 0, 80, 32], item.pdef.to_s)
draw_shadow_text([228, 0, 80, 32], item.mdef.to_s)
draw_shadow_text([ 84, 24, 80, 32], change_eva.to_s)
if $OuterFlgs["Param_Add"]
draw_shadow_text([228, 72, 80, 32], change_luk.to_s)
end # $OuterFlgs["Param_Add"]
end
draw_shadow_text([228, 24, 80, 32], item.str_plus.to_s)
draw_shadow_text([ 84, 48, 80, 32], item.dex_plus.to_s)
draw_shadow_text([228, 48, 80, 32], item.agi_plus.to_s)
draw_shadow_text([ 84, 72, 80, 32], item.int_plus.to_s)
end
#--------------------------------------------------------------------------
# ○ 属性描画
#--------------------------------------------------------------------------
def draw_element(item, factor)
ix = 4
iy = 96 + 18
self.contents.font.size = 16
rectr = [32, 96, 160, 20]
case item
when RPG::Weapon
draw_shadow_text(rectr, "攻撃属性", system_color)
elements = item.element_set.dup
when RPG::Armor
draw_shadow_text(rectr, "防御属性", system_color)
elements = item.guard_element_set.dup
end
skip = true
elements.each { |element|
skip = into_list(KGC::AEQ_ELEMENT_RANGE, element)
next if skip
text = "[#{$data_system.elements[element]}]"
cx = self.contents.text_size(text).width
draw_shadow_text([ix, iy, cx + 8, 20], text)
ix += cx
if ix >= 264
ix = 4
iy += 18
if iy >= 114 + 36
break
end
end
}
if $OuterFlgs["Equip_Extend"]
ix = 4
iy = 150 + 18
draw_shadow_text([32, 150, 160, 20], Vocab::armor6, system_color)
case item
when RPG::Weapon
elements = item.element_set.dup
when RPG::Armor
elements = item.guard_element_set.dup
end
skip = true
elements.each { |element|
skip = into_list(KGC::AEQ_ELEMENT_RANGE2, element)
next if skip
text = "[#{$data_system.elements[element]}]"
text.gsub!(/無:ターンの最初に先制攻撃/i) { "先制" }
text.gsub!(/無:一度に2回攻撃/i) { "連撃" }
text.gsub!(/無:一度に敵全体を攻撃/i) { "全体" }
text.gsub!(/無:敵の回避率を無視/i) { "直撃" }
text.gsub!(/無:必殺防止/i) { "必殺防止" }
text.gsub!(/無:SP消費半分/i) { "SP消費軽減" }
text.gsub!(/無:SP消費増加/i) { "SP消費増加" }
text.gsub!(/無:吸収/i) { "吸収" }
cx = self.contents.text_size(text).width
draw_shadow_text([ix, iy, cx + 8, 20], text)
ix += cx
if ix >= 264
ix = 4
iy += 18
if iy >= 168 + 18
break
end
end
}
end
end
include DRAW_MSG
#--------------------------------------------------------------------------
# ○ ステート性描画
#--------------------------------------------------------------------------
def draw_state(item, factor)
# 付加/防御ステート描画
ix = 4
iy = 210 + 18
self.contents.font.size = 16
rectr = [32, 210, 160, 20]
case item
when RPG::Weapon
draw_shadow_text(rectr, "付加ステート", system_color)
states = item.plus_state_set.dup
when RPG::Armor
draw_shadow_text(rectr, "防御ステート", system_color)
states = item.guard_state_set.dup
end
skip = true
states.each { |state|
skip = into_list(KGC::AEQ_STATE_RANGE, state)
next if skip
text = "[#{$data_states[state].name}]"
text = del_change_color(transfer(text))
cx = self.contents.text_size(text).width
draw_shadow_text([ix, iy], text)
ix += cx
if ix >= 264
ix = 4
iy += 18
if iy >= 228 + 36
break
end
end
}
return if (item.is_a?(RPG::Armor) || !KGC::AEQ_REMOVE_STATE_FLG)
# 解除ステート描画
ix = 4
iy = 264 + 18
draw_shadow_text([32, 264, 160, 20], Vocab::RELEASE_STATE, system_color)
skip = true
item.minus_state_set.each { |state|
skip = into_list(KGC::AEQ_STATE_RANGE, state)
next if skip
text = "[#{$data_states[state].name}]"
text = del_change_color(transfer(text))
cx = self.contents.text_size(text).width
draw_shadow_text([ix, iy], text)
ix += cx
if ix >= 264
ix = 4
iy += 18
if iy >= 282 + 36
break
end
end
}
end
#--------------------------------------------------------------------------
# ○ 素材描画
#--------------------------------------------------------------------------
def draw_material(item, factor)
self.contents.font.size = 14
draw_shadow_text([232, 4, 48, 32], Vocab::gold, system_color)
draw_shadow_text([232, 28, 48, 32], Vocab::gold, system_color)
self.contents.font.size = 20
draw_shadow_text([ 4, 0, 128, 32], Vocab::HAVE_GOLD, system_color)
draw_shadow_text([104, 0, 128, 32], $game_party.gold.to_s, normal_color,
2)
draw_shadow_text([ 4, 24, 128, 32], "改造費用", system_color)
draw_shadow_text([104, 24, 128, 32], item.alter_cost(factor).to_s,
normal_color, 2)
draw_shadow_text([ 4, 48, 128, 32], "消費アイテム", system_color)
for i in 4...factor.size
self.contents.font.size = 20
text = $data_items[factor[i][0]].name
text = transfer(text)
icon = RPG::Cache.icon($data_items[factor[i][0]].icon_name)
self.contents.blt(4, 72 + 4 + 2 + (i - 4) * 48, icon, icon.rect)
draw_shadow_text([ 32, 72 + 2 + (i - 4) * 48], text)
self.contents.font.size = 14
draw_shadow_text([ 96, 96 + (i - 4) * 48, 80, 32], "必要数",
system_color)
draw_shadow_text([196, 96 + (i - 4) * 48, 80, 32], Vocab::Possession,
system_color)
draw_shadow_text([124, 96 + (i - 4) * 48, 48, 32], factor[i][1].to_s,
normal_color, 2)
draw_shadow_text([224, 96 + (i - 4) * 48, 48, 32],
$game_party.item_number(factor[i][0]).to_s,
normal_color, 2)
end
self.contents.font.size = 22
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_AlterEquipmentFactor
#------------------------------------------------------------------------------
# 装備改造画面で、付加要素一覧を表示するウィンドウです。
#==============================================================================
class Window_AlterEquipmentFactor < Window_Selectable
include VDI
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(320, 128 - 32, 320, 352)
@column_max = 1
self.active = false
self.visible = false
self.index = 0
self.back_opacity = 160 if KGC::AEQ_BACK_TRANSPARENT
@draw_item_num = 2 # 一度に描画する数(必ずしも2である必要はない)
@draw_ok = Array.new() # 描画完了フラグ配列
end
#--------------------------------------------------------------------------
# ○ ファクターの取得
#--------------------------------------------------------------------------
def factor
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(item)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@draw_counter = 0
reset_array
# 一番最初、0番目の項目が描画できないので苦肉の策
if @draw_ok[0]
@draw_ok[0] = false
end
@item = item
@data = []
# 付加できるファクターを追加
case item
when RPG::Weapon
factors = KGC::AEQ_WEAPON_FACTORS
when RPG::Armor
factors = KGC::AEQ_ARMOR_FACTORS
end
for i in 0...factors.size
factor = factors[i]
next if factor == nil
@data.push(factor)
end
# 個数が 0 の場合は nil を追加
@data.push(nil) if @data.size == 0
# ビットマップを作成し、全項目を描画
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
draw_item_v
end
include RUBY_SYS
include DIAMOND
include KGC
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
return if @data == nil
factor = @data[index]
#return if factor == nil
x = 4
y = index * 32
case @item.can_add_factor?(factor)
when AEQ_FALSE
dflg = false
dcolor = normal_color
when AEQ_TRUE
dflg = true
dcolor = normal_color
when AEQ_ALREADY
dflg = false
dcolor = Color.new(196, 255, 196, 255)
else
p Err, @item.can_add_factor?(factor)
end
draw_shadow_text([x, y, 280, 32], factor[0], dcolor, 0, dflg)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.factor == nil ? "" : self.factor[1])
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● コマンド : ニューゲーム
#--------------------------------------------------------------------------
alias command_new_game_KGC_AlterEquipment command_new_game
def command_new_game
# 元の処理を実行
command_new_game_KGC_AlterEquipment
# 改造装備を初期化
$alter_weapon_start = $data_weapons.size
for i in 0...KGC::AEQ_WEAPON_MAX
$data_weapons[$alter_weapon_start + i] = RPG::Weapon2.new
end
$alter_armor_start = $data_armors.size
for i in 0...KGC::AEQ_ARMOR_MAX
$data_armors[$alter_armor_start + i] = RPG::Armor2.new
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Load
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● 決定時の処理
#--------------------------------------------------------------------------
alias on_decision_KGC_AlterEquipment on_decision
def on_decision(filename)
on_decision_KGC_AlterEquipment(filename)
return unless FileTest.exist?(filename) # ファイルが存在しない場合は戻る
restore_altered_equipment
end
#--------------------------------------------------------------------------
# ○ 改造装備を復元
#--------------------------------------------------------------------------
def restore_altered_equipment
# 改造装備を取得
$alter_weapon_start = $data_weapons.size
for i in 0...KGC::AEQ_WEAPON_MAX
if $game_party.alter_weapons[i] == nil
$data_weapons[$alter_weapon_start + i] = RPG::Weapon2.new
else
$data_weapons[$alter_weapon_start + i] = $game_party.alter_weapons[i]
weapon = $game_party.alter_weapons[i]
weapon.show_alter_count
# 装備可能者を設定
for i in 1...$data_classes.size
actor_class = $data_classes[i]
# 改造対象の武器を装備できるクラスの場合
if actor_class.weapon_set.include?(weapon.original_id)
# 装備可能武器に追加
actor_class.weapon_set.push(weapon.id)
else
# 装備できない場合は装備可能武器から削除
actor_class.weapon_set.delete(weapon.id)
end
end
end
end
$alter_armor_start = $data_armors.size
for i in 0...KGC::AEQ_ARMOR_MAX
if $game_party.alter_armors[i] == nil
$data_armors[$alter_armor_start + i] = RPG::Armor2.new
else
$data_armors[$alter_armor_start + i] = $game_party.alter_armors[i]
armor = $game_party.alter_armors[i]
armor.show_alter_count
# 装備可能者を設定
for i in 1...$data_classes.size
actor_class = $data_classes[i]
# 改造対象の武器を装備できるクラスの場合
if actor_class.armor_set.include?(armor.original_id)
# 装備可能武器に追加
actor_class.armor_set.push(armor.id)
else
# 装備できない場合は装備可能武器から削除
actor_class.armor_set.delete(armor.id)
end
end
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Name
#==============================================================================
class Scene_Name
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias main_KGC_AlterEquipment main
def main
# 元の処理を実行
main_KGC_AlterEquipment
# 装備名変更の場合
if $game_temp.equipment_alter_rename
case $game_temp.equipment_alter_rename_type
when 0
type = "weapon"
when 1
type = "armor"
end
equip = eval("$data_#{type}s[$game_temp.equipment_alter_rename_id]")
equip.change_name = @actor.name.dup
equip.show_alter_count
$game_temp.equipment_alter_rename_type = 0
$game_temp.equipment_alter_rename_id = 0
$game_temp.equipment_alter_rename = false
# 装備品改造画面に切り替え
$scene = Scene_AlterEquipment.new
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Scene_AlterEquipment
#------------------------------------------------------------------------------
# 装備改造画面の処理を行うクラスです。
#==============================================================================
class Scene_AlterEquipment
#--------------------------------------------------------------------------
# ○ キーヘルプを設定
#--------------------------------------------------------------------------
def set_keyhelp1
@bottomkeyhelp_window.clear
@bottomkeyhelp_window.add("←→","カテゴリ操作")
@bottomkeyhelp_window.add("C","決定")
@bottomkeyhelp_window.add("B","キャンセル")
end
#--------------------------------------------------------------------------
# ○ キーヘルプを設定 2
#--------------------------------------------------------------------------
def set_keyhelp2
@bottomkeyhelp_window.clear
@bottomkeyhelp_window.add("↑↓","装備品選択")
@bottomkeyhelp_window.add("C","決定")
@bottomkeyhelp_window.add("B","キャンセル")
end
#--------------------------------------------------------------------------
# ○ キーヘルプを設定 3
#--------------------------------------------------------------------------
def set_keyhelp3
@bottomkeyhelp_window.clear
@bottomkeyhelp_window.add("↑↓","付加分選択")
@bottomkeyhelp_window.add("C","セット")
@bottomkeyhelp_window.add("B","キャンセル")
end
include BM
def initialize
@bottomkeyhelp_window = Window_BottomKeyHelp.new
set_keyhelp1
$game_system.windowskin_name = "MGS ウィンドウスキン4"
end
#--------------------------------------------------------------------------
# ○ メイン処理
#--------------------------------------------------------------------------
def main
@spriteset = Spriteset_Map.new if KGC::AEQ_BACK_TRANSPARENT
# ウィンドウを作成
if $imported["HelpExtension"]
@help_window = Window_HelpExtension.new
else
@help_window = Window_Help.new
end
@help_window.back_opacity = 160 if KGC::AEQ_BACK_TRANSPARENT
@command_window = Window_AlterEquipmentCommand.new
@left_window = Window_AlterEquipmentLeft.new
@right_window = Window_AlterEquipmentRight.new
@factor_window = Window_AlterEquipmentFactor.new
@status_window = Window_AlterEquipmentStatus.new
# ヘルプウィンドウを関連付け
@command_window.help_window = @help_window
@left_window.help_window = @help_window
@right_window.help_window = @help_window
@factor_window.help_window = @help_window
# カーソル位置を設定
@left_window.index = 0
@status_window.refresh(@left_window.item)
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@help_window.dispose
@command_window.dispose
@left_window.dispose
@right_window.dispose
@factor_window.dispose
@status_window.dispose
@bottomkeyhelp_window.dispose
@left_command_window.dispose if @left_command_window != nil
@right_command_window.dispose if @right_command_window != nil
@factor_command_window.dispose if @factor_command_window != nil
@spriteset.dispose if KGC::AEQ_BACK_TRANSPARENT
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh
@command_window.refresh
@left_window.refresh
@right_window.refresh
@factor_window.refresh(nil)
@status_window.refresh(nil)
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@command_window.update
@left_window.update
@right_window.update
@factor_window.update
# コマンドウィンドウがアクティブの場合: update_command を呼ぶ
if @command_window.active
set_keyhelp1
update_command
return
end
# レフトウィンドウがアクティブの場合: update_left を呼ぶ
if @left_window.active
@status_window.x = 320
set_keyhelp2
update_left
return
end
# ライトウィンドウがアクティブの場合: update_right を呼ぶ
if @right_window.active
@status_window.x = 0
update_right
return
end
# ファクター追加ウィンドウがアクティブの場合: update_factor を呼ぶ
if @factor_window.active
@status_window.x = 0
set_keyhelp3
update_factor
return
end
# レフトコマンドウィンドウがアクティブの場合: update_left_command を呼ぶ
if @left_command_window != nil && @left_command_window.active
update_left_command
return
end
# ライトコマンドウィンドウがアクティブの場合: update_right_command を呼ぶ
if @right_command_window != nil && @right_command_window.active
update_right_command
return
end
# ファクターコマンドウィンドウがアクティブの場合: update_factor_command を呼ぶ
if @factor_command_window != nil && @factor_command_window.active
update_factor_command
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (コマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
#@left_window.reset_array
#@right_window.reset_array
#@factor_window.reset_array
# キャンセル SE を演奏
Sound.play_cancel
# マップ画面に切り替え
$game_system.windowskin_name = BM::WINDOW_SKIN_ROOT
$scene = Scene_Map.new
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 決定 SE を演奏
Sound.play_ok
# レフトウィンドウに切り替え
case @command_window.index
when 0..1
@type = 0
when 2..3
@type = 1
end
@command_window.deactivate
@command_window.hide
@left_window.refresh(@type)
@left_window.activate
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (レフトウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_left
# 選択項目が変更された場合
if @now_sel_left != @left_window.index
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@left_window.item)
@now_sel_left = @left_window.index
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# コマンドウィンドウに切り替え
@command_window.activate
@command_window.show
@left_window.deactivate
@now_sel_left = nil
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# コマンドウィンドウの選択肢で分岐
case @command_window.index
when 0, 2 # 装備改造の場合
# 既に改造装備がある場合
if @left_window.item != nil
# これ以上改造できない場合
if @left_window.item.alterable_count == 0
# ブザー SE を演奏
Sound.play_buzzer
return
end
# 決定 SE を演奏
Sound.play_ok
# ファクター追加ウィンドウをリフレッシュ
@factor_window.refresh(@left_window.item)
# ファクター追加ウィンドウに切り替え
@left_window.deactivate
@factor_window.activate
@factor_window.show
else
# 決定 SE を演奏
Sound.play_ok
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@right_window.item)
# ライトウィンドウに切り替え
@left_window.deactivate
@right_window.refresh(@type)
@right_window.activate
@right_window.show
end
@now_sel_left = nil
when 1, 3 # 改造装備破棄の場合
# 既に改造装備がある場合
if @left_window.item != nil &&
((@type == 0 && $game_party.weapon_number(@left_window.item.id) >= 1) ||
(@type == 1 && $game_party.armor_number(@left_window.item.id) >= 1))
# 決定 SE を演奏
Sound.play_ok
# レフトコマンドウィンドウ作成
@left_command_window = Window_Command.new(256, KGC::AEQ_DISPOSE_COMMAND)
@left_command_window.back_opacity = 160
@left_command_window.x = 320 - @left_command_window.width / 2
@left_command_window.y = 240 - @left_command_window.height / 2
@left_command_window.z = 1000
@left_command_window.index = 1
# レフトコマンドウィンドウに切り替え
@left_command_window.activate
@left_window.deactivate
@now_sel_left = nil
else
# ブザー SE を演奏
Sound.play_buzzer
end
end
return
end
# 装備名変更ボタンが押された場合
if KGC::AEQ_RENAME_BUTTON != nil && Input.trigger?(KGC::AEQ_RENAME_BUTTON)
item = @left_window.item
# 既に改造装備がある場合
if item != nil &&
((@type == 0 && $game_party.weapon_number(item.id) >= 1) ||
(@type == 1 && $game_party.armor_number(item.id) >= 1))
# 決定 SE を演奏
Sound.play_ok
# 名前変更画面に切り替え
$game_actors[KGC::AEQ_RENAME_ACTOR_ID].name = item.plain_name
$game_temp.name_actor_id = KGC::AEQ_RENAME_ACTOR_ID
$game_temp.name_max_char = KGC::AEQ_RENAME_MAX_LENGTH
$game_temp.equipment_alter_rename_type = @type
$game_temp.equipment_alter_rename_id = item.id
$game_temp.equipment_alter_rename = true
$scene = Scene_Name.new
else
# ブザー SE を演奏
Sound.play_buzzer
end
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (ライトウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_right
# 選択項目が変更された場合
if @now_sel_right != @right_window.index
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@right_window.item)
@now_sel_right = @right_window.index
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@left_window.item)
# レフトウィンドウに切り替え
@left_window.activate
@right_window.deactivate
@right_window.hide
@right_window.index = 0
@now_sel_right = nil
# ヘルプウィンドウ文字列を消去
@help_window.set_text("")
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 空欄を選択した場合
if @right_window.item == nil
# ブザー SE を演奏
Sound.play_buzzer
return
end
# 決定 SE を演奏
Sound.play_ok
# ライトコマンドウィンドウ作成
@right_command_window = Window_Command.new(256, KGC::AEQ_ALTER_COMMAND)
@right_command_window.back_opacity = 160
@right_command_window.x = 320 - @right_command_window.width / 2
@right_command_window.y = 240 - @right_command_window.height / 2
@right_command_window.z = 1000
# ライトコマンドウィンドウに切り替え
@right_command_window.activate
@right_window.deactivate
@now_sel_right = nil
return
end
end
include KGC
#--------------------------------------------------------------------------
# ○ フレーム更新 (ファクター追加ウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_factor
# 選択項目が変更された場合
if @now_sel_factor != @factor_window.index
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@left_window.item, @factor_window.factor)
@now_sel_factor = @factor_window.index
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# ステータスウィンドウをリフレッシュ
@status_window.refresh(@left_window.item)
# レフトウィンドウに切り替え
@left_window.activate
@factor_window.deactivate
@factor_window.hide
@factor_window.index = 0
@now_sel_factor = nil
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
factor = @factor_window.factor
# nil チェック
impossible = factor == nil
# ファクター付加判定
#impossible |= !@left_window.item.can_add_factor?(factor)
impossible |= @left_window.item.can_add_factor?(factor) != AEQ_TRUE
# 付加できない場合
if impossible
# ブザー SE を演奏
Sound.play_buzzer
return
end
# 決定 SE を演奏
Sound.play_ok
# ファクターコマンドウィンドウ作成
@factor_command_window = Window_Command.new(256, KGC::AEQ_FACTOR_COMMAND)
@factor_command_window.back_opacity = 160
@factor_command_window.x = 320 - @factor_command_window.width / 2
@factor_command_window.y = 240 - @factor_command_window.height / 2
@factor_command_window.z = 1000
@factor_command_window.index = 1
# ファクターコマンドウィンドウに切り替え
@factor_command_window.activate
@factor_window.deactivate
@now_sel_factor = nil
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (レフトコマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_left_command
@left_command_window.update
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# レフトウィンドウに切り替え
@left_command_window.dispose
@left_command_window = nil
@left_window.activate
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
case @left_command_window.index
when 0
# 装備 SE を演奏
Sound.play_equip
# 選択した改造装備を削除
id = @left_window.item.id
case @type
when 0
if KGC::AEQ_REGAIN_FLG
$game_party.gain_weapon($data_weapons[id].original_id, 1)
end
$game_party.alter_weapons[@left_window.index] = nil
$data_weapons[id] = RPG::Weapon2.new
$game_party.lose_weapon(id, 99)
when 1
if KGC::AEQ_REGAIN_FLG
$game_party.gain_armor($data_armors[id].original_id, 1)
end
$game_party.alter_armors[@left_window.index] = nil
$data_armors[id] = RPG::Armor2.new
$game_party.lose_armor(id, 99)
end
# 再描画
@left_window.redraw_item(@left_window.index, @type)
# レフトウィンドウに切り替え
@left_command_window.dispose
@left_command_window = nil
@left_window.activate
when 1
# 決定 SE を演奏
Sound.play_ok
# レフトウィンドウに切り替え
@left_command_window.dispose
@left_command_window = nil
@left_window.activate
end
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (ライトコマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_right_command
@right_command_window.update
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# ライトウィンドウに切り替え
@right_command_window.dispose
@right_command_window = nil
@right_window.activate
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
case @right_command_window.index
when 0
# 装備 SE を演奏
Sound.play_equip
case @type
when 0
# 改造する武器を設定
id = @left_window.index + $alter_weapon_start
# 武器の内容を設定
$game_party.alter_weapons[@left_window.index] = RPG::Weapon2.new
weapon = $game_party.alter_weapons[@left_window.index]
weapon.id = id
weapon.copy_weapon(@right_window.item.id)
$data_weapons[id] = $game_party.alter_weapons[@left_window.index]
# 改造装備を 1 個取得
$game_party.gain_weapon(id, 1)
# 改造対象の武器を削除
$game_party.lose_weapon(@right_window.item.id, 1)
when 1
# 改造する防具を設定
id = @left_window.index + $alter_armor_start
# 防具の内容を設定
$game_party.alter_armors[@left_window.index] = RPG::Armor2.new
armor = $game_party.alter_armors[@left_window.index]
armor.id = id
armor.copy_armor(@right_window.item.id)
$data_armors[id] = $game_party.alter_armors[@left_window.index]
# 改造装備を 1 個取得
$game_party.gain_armor(id, 1)
# 改造対象の防具を削除
$game_party.lose_armor(@right_window.item.id, 1)
end
# ウィンドウをリフレッシュ
@left_window.redraw_item(@left_window.index, @type)
@right_window.refresh(@type)
@status_window.refresh(@left_window.item)
# レフトウィンドウに切り替え
@right_command_window.dispose
@right_command_window = nil
@left_window.activate
@right_window.deactivate
@right_window.hide
@right_window.index = 0
# ヘルプウィンドウ文字列を消去
@help_window.set_text("")
when 1
# 決定 SE を演奏
Sound.play_ok
# ライトウィンドウに切り替え
@right_command_window.dispose
@right_command_window = nil
@right_window.activate
end
return
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (ファクターコマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_factor_command
@factor_command_window.update
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
Sound.play_cancel
# ファクターウィンドウに切り替え
@factor_command_window.dispose
@factor_command_window = nil
@factor_window.activate
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
case @factor_command_window.index
when 0
# 装備 SE を演奏
Sound.play_equip
# 装備を改造
case @type
when 0
$game_party.alter_weapons[@left_window.index].add_factor(@factor_window.factor)
when 1
$game_party.alter_armors[@left_window.index].add_factor(@factor_window.factor)
end
# ウィンドウをリフレッシュ
@left_window.redraw_item(@left_window.index, @type)
@status_window.refresh(@left_window.item)
# レフトウィンドウに切り替え
@factor_command_window.dispose
@factor_command_window = nil
@left_window.activate
@factor_window.deactivate
@factor_window.hide
@factor_window.index = 0
# ヘルプウィンドウ文字列を消去
@help_window.set_text("")
when 1
# 決定 SE を演奏
Sound.play_ok
# ファクターウィンドウに切り替え
@factor_command_window.dispose
@factor_command_window = nil
@factor_window.activate
end
return
end
end
end
|