#============================================================================== # ■ VXAce-RGSS3-1 用語辞典-自動生成Plugin [Ver.1.0.1] by Claimh #------------------------------------------------------------------------------ #・データベース上のアクター/エネミー/アイテム/武器/防具/スキル/クラスの情報を # 用語辞典として自動生成します。 #・自動生成された辞書データはすべて初期状態では非表示になります。 #------------------------------------------------------------------------------ #【アクター、エネミー、アイテム、武器、防具、スキル、クラス、クエストの自動生成】 #・自動生成した場合の用語IDは生成元のIDと同じです # (例) エネミーID:5 --(自動生成)--> 用語ID:5 #------------------------------------------------------------------------------ #【場所情報の自動生成】 #・必須:ワールドマップ #・ワールドマップのタウン・リージョン情報を用語辞典に反映します。 #・リージョン情報の用語IDは リージョンID * 1000 です # 用語ID = DictAutoCreate.conv_region_id(リージョンID) #・タウン情報の用語IDは リージョンID * 1000 + タウンID + 1 です # 用語ID = DictAutoCreate.conv_town_id(リージョンID, タウンID) # ※タウンIDは0-998しか使えません。 #============================================================================== =begin - 使い方 - 用語辞典[設定] の 「用語設定」で以下のように設定してください。 WORDS[項目番号] = ATC_ACTOR # アクターの自動生成 WORDS[項目番号] = ATC_ENEMY # エネミーの自動生成 WORDS[項目番号] = ATC_ENEMY_A # エネミー(アナライズ用)の自動生成 WORDS[項目番号] = ATC_ITEM # アイテムの自動生成 WORDS[項目番号] = ATC_WEAPON # 武器の自動生成 WORDS[項目番号] = ATC_ARMOR_ALL # 防具(全て)の自動生成 WORDS[項目番号] = ATC_ARMOR_S # 防具(盾のみ)の自動生成 WORDS[項目番号] = ATC_ARMOR_H # 防具(頭防具のみ)の自動生成 WORDS[項目番号] = ATC_ARMOR_C # 防具(身体防具のみ)の自動生成 WORDS[項目番号] = ATC_ARMOR_A # 防具(装飾品のみ)の自動生成 WORDS[項目番号] = ATC_SKILL # スキルの自動生成 WORDS[項目番号] = ATC_CLASS # クラスの自動生成 WORDS[項目番号] = ATC_TOWN # 場所の自動生成 WORDS[項目番号] = ACT_QUEST # クエストの自動生成 =end module DictAutoCreate # 属性表示の限界個数 ELEMENTS_MAX = 10 # 表示しない属性ID ELE_NOT_SHOW = [ID, …] ELE_NOT_SHOW = [1, 2] # アイコン表示する ELE_USE_ICON = true # アイコン(ELE_USE_ICON = trueのときだけ必要) ELE_ICON = { # 属性ID => アイコンIndex 3 => 96, # 炎 4 => 97, # 氷 5 => 98, # 雷 6 => 99, # 水 7 => 100, # 大地 8 => 101, # 風 9 => 102, # 神聖 10 => 103, # 暗黒 } # ステート表示の限界個数 STATES_MAX = 5 # 表示しないステートID STS_NOT_SHOW = [ID, …] STS_NOT_SHOW = [3,4,5] # 特定IDの情報は自動生成しないようにする XXX_NOT_SHOW = [ID, …] # アクター ACT_NOT_SHOW = [] # エネミー ENM_NOT_SHOW = [] # アイテム ITM_NOT_SHOW = [] # 武器 WPN_NOT_SHOW = [] # 防具 ARM_NOT_SHOW = [] # スキル SKL_NOT_SHOW = [] # クラス CLS_NOT_SHOW = [] # 場所 TWN_NOT_SHOW = [] end module DictAutoCreate include DictDef #-------------------------------------------------------------------------- # ● 定数 #-------------------------------------------------------------------------- TARGET = ["なし", "敵単体", "敵全体", "敵1体ランダム", "敵2体ランダム", "敵3体ランダム", "敵4体ランダム", "味方単体", "味方全体", "味方単体蘇生", "味方全体蘇生", "使用者"] D_TYPE = ["なし", "%s攻撃", "%s攻撃", "%s回復", "%s回復", "%s吸収", "%s吸収"] #-------------------------------------------------------------------------- # ● 定数(特徴) #-------------------------------------------------------------------------- FEATURE_ELEMENT_RATE = 11 # 属性有効度 FEATURE_DEBUFF_RATE = 12 # 弱体有効度 FEATURE_STATE_RATE = 13 # ステート有効度 FEATURE_STATE_RESIST = 14 # ステート無効化 FEATURE_PARAM = 21 # 通常能力値 FEATURE_XPARAM = 22 # 追加能力値 FEATURE_SPARAM = 23 # 特殊能力値 FEATURE_ATK_ELEMENT = 31 # 攻撃時属性 FEATURE_ATK_STATE = 32 # 攻撃時ステート FEATURE_ATK_SPEED = 33 # 攻撃速度補正 FEATURE_ATK_TIMES = 34 # 攻撃追加回数 FEATURE_STYPE_ADD = 41 # スキルタイプ追加 FEATURE_STYPE_SEAL = 42 # スキルタイプ封印 FEATURE_SKILL_ADD = 43 # スキル追加 FEATURE_SKILL_SEAL = 44 # スキル封印 FEATURE_EQUIP_WTYPE = 51 # 武器タイプ装備 FEATURE_EQUIP_ATYPE = 52 # 防具タイプ装備 FEATURE_EQUIP_FIX = 53 # 装備固定 FEATURE_EQUIP_SEAL = 54 # 装備封印 FEATURE_SLOT_TYPE = 55 # スロットタイプ FEATURE_ACTION_PLUS = 61 # 行動回数追加 FEATURE_SPECIAL_FLAG = 62 # 特殊フラグ FEATURE_COLLAPSE_TYPE = 63 # 消滅エフェクト FEATURE_PARTY_ABILITY = 64 # パーティ能力 FLAG_ID_AUTO_BATTLE = 0 # 自動戦闘 FLAG_ID_GUARD = 1 # 防御 FLAG_ID_SUBSTITUTE = 2 # 身代わり FLAG_ID_PRESERVE_TP = 3 # TP持ち越し XPARAM = ["命中率", "回避率", "会心率", "会心回避率", "魔法回避率", "魔法反射率", "反撃率", "%s再生率", "%s再生率", "%s再生率"] SPARAM = ["狙われ率", "防御効果率", "回復効果率", "薬の知識", "%s消費率", "%sチャージ率", "物理ダメージ率", "魔法ダメージ率", "床ダメージ率", "経験値獲得率"] SLOT_TYPE = ["", "二刀流"] SPECIAL = ["自動戦闘", "防御", "身代わり", "%s持ち越し"] COLLAPSE = ["ボス", "瞬間消去", "消えない"] PT_ABILITY = ["エンカウント半減", "エンカウント無効", "不意打ち無効", "先制", "獲得金額2倍", "アイテム入手率2倍"] #-------------------------------------------------------------------------- # ● 定数(使用効果) #-------------------------------------------------------------------------- EFFECT_RECOVER_HP = 11 # HP 回復 EFFECT_RECOVER_MP = 12 # MP 回復 EFFECT_GAIN_TP = 13 # TP 増加 EFFECT_ADD_STATE = 21 # ステート付加 EFFECT_REMOVE_STATE = 22 # ステート解除 EFFECT_ADD_BUFF = 31 # 能力強化 EFFECT_ADD_DEBUFF = 32 # 能力弱体 EFFECT_REMOVE_BUFF = 33 # 能力強化の解除 EFFECT_REMOVE_DEBUFF = 34 # 能力弱体の解除 EFFECT_SPECIAL = 41 # 特殊効果 EFFECT_GROW = 42 # 成長 EFFECT_LEARN_SKILL = 43 # スキル習得 EFFECTS = { EFFECT_RECOVER_HP => "%s 回復", EFFECT_RECOVER_MP => "%s 回復", EFFECT_GAIN_TP => "%s 増加", EFFECT_ADD_STATE => "ステート付加", EFFECT_REMOVE_STATE => "ステート解除", EFFECT_ADD_BUFF => "能力強化", EFFECT_ADD_DEBUFF => "能力弱体", EFFECT_REMOVE_BUFF => "能力強化の解除", EFFECT_REMOVE_DEBUFF => "能力弱体の解除", EFFECT_SPECIAL => "特殊効果", EFFECT_GROW => "成長", EFFECT_LEARN_SKILL => "スキル習得" } #---------------------------------------------------------------------------- # カスタマイズSTART #---------------------------------------------------------------------------- =begin 【説明文の設定】 XXX_text(id)というメソッド内で、 自動生成する際の説明分を設定できます。 アイテム、武器、防具、スキルはデータベースのものを表示するようになってますが、 変更することも可能です。 また、用語辞典用の制御文字も使用可能です。 【自動生成時の設定値】 create_XXXというメソッド内で自動生成する際の設定値を決め打ちしてます。 用語名はデータベースのもの、表示は無効(false)として自動生成します。 =end #-------------------------------------------------------------------------- # ● Plugin- アクター自動生成 : 説明文 #-------------------------------------------------------------------------- def self.actor_text(id) data = $data_actors[id] # return data.description end #-------------------------------------------------------------------------- # ● Plugin- エネミー自動生成 : 説明文 #-------------------------------------------------------------------------- def self.enemy_text(id) data = $data_enemies[id] # items = [] data.drop_items.each do |item| next if item.kind == 0 case item.kind when 1; d = $data_items[item.data_id] when 2; d = $data_weapons[item.data_id] when 3; d = $data_armors[item.data_id] end items.push("\\i[#{d.icon_index}]#{d.name}(#{(100/item.denominator).truncate}%)") end info = "" # エネミーのパラメータ情報 for i in 0...4 info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]\\u[#{id},#{i*2}]"+ "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]\\u[#{id},#{i*2+1}]\\n" end info += "\\c[16]EXP\\c[0]\\x[84]\\k[#{id}]\\n"+ "\\c[16]Gold\\c[0]\\x[84]\\g[#{id}] \\c[16]#{$data_system.currency_unit}\\c[0]" items.each_index do |i| info += "\\n\\c[16]Treasure#{i+1}\\c[0]\\x[100]#{items[i]}" end if defined?(DefeatCounter) # ★撃破数カウンタとの併用 info += "\\n\\c[16]撃破数\\c[0]\\x[100]\\t[#{id}]" end # unless $data_system.elements.empty? rate = element_rate(Game_Enemy.new(0, id)) info += "\\p" + rate if rate != "" end # unless $data_states.empty? rate = state_rate(Game_Enemy.new(0, id)) info += "\\p" + rate if rate != "" end # s_actions = {} # skill total = 0 data.actions.each do |action| s_actions[action.skill_id] = 0 if s_actions[action.skill_id].nil? s_actions[action.skill_id] += action.rating total += action.rating end if !s_actions.empty? page = 1 if (Dictionary.d_line_max - 1) < s_actions.size info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n" else info += "\\p\\c[16]【行動パターン】\\c[0]\\n" end line = 1 ids = s_actions.keys.sort ids.each do |sid| skill = $data_skills[sid] if (line % (Dictionary.d_line_max) == 0) page += 1 info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n" line = 1 end per = (s_actions[sid] * 100.0 / total).round info += "\\x[10]\\i[#{skill.icon_index}]#{skill.name}\\x[200]#{per}%\\n" line += 1 end end # text = "" case id when 0; text = "エネミーID:○の説明文〜" end # return textinfo(text, info) end #-------------------------------------------------------------------------- # ● Plugin- アイテム自動生成 : 説明文 #-------------------------------------------------------------------------- def self.item_text(id) data = $data_items[id] info = data.description info += "\\y[4]" # 4行目へ # info += # アイテム情報のテキスト化 "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"+ "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n" # info += self.damage(data.damage) unless data.damage.none? info += self.effects(data.effects) unless data.effects.empty? # return info end #-------------------------------------------------------------------------- # ● Plugin- 武器自動生成 : 説明文 #-------------------------------------------------------------------------- def self.weapon_text(id) data = $data_weapons[id] info = data.description info += "\\y[4]" # 4行目へ # info += "\\c[16]武器タイプ\\c[0]\\x[120]#{$data_system.weapon_types[data.wtype_id]}\\n" # info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n" for i in 0...4 info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+ "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n" end # info += self.features(data.features) # return info end #-------------------------------------------------------------------------- # ● Plugin- 防具自動生成 : 説明文 #-------------------------------------------------------------------------- def self.armor_text(id) data = $data_armors[id] info = data.description info += "\\y[4]" # 4行目へ # info += "\\c[16]防具タイプ\\c[0]\\x[120]#{$data_system.armor_types[data.atype_id]}\\n" # info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n" for i in 0...4 info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+ "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n" end # info += self.features(data.features) # return info end #-------------------------------------------------------------------------- # ● Plugin- スキル自動生成 : 説明文 #-------------------------------------------------------------------------- def self.skill_text(id) data = $data_skills[id] info = data.description info += "\\y[4]" # 4行目へ # info += "\\c[16]スキルタイプ\\c[0]\\x[120]#{$data_system.skill_types[data.stype_id]}" # ids = [data.required_wtype_id1, data.required_wtype_id2].select { |a| a != 0 } unless ids.empty? info += "\\x[160]\\c[16]必要武器\\c[0]\\x[250]" ids.each do |type| info += "#{$data_system.weapon_types[type]} " end end # info += "\\n" # info += self.damage(data.damage) unless data.damage.none? # info += "\\c[16]消費#{$data_system.terms.basic[4]}\\c[0]\\x[84]#{data.mp_cost}" info += "\\x[160]\\c[16]消費#{$data_system.terms.basic[6]}\\c[0]\\x[250]#{data.tp_cost}\\n" info += "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n" info += "\\c[16]成功率\\c[0]\\x[84]#{(data.success_rate).truncate}%\\n" # info += self.effects(data.effects) unless data.effects.empty? # return info end #-------------------------------------------------------------------------- # ● Plugin- クラス自動生成 : 説明文 #-------------------------------------------------------------------------- def self.class_text(id) data = $data_classes[id] # info = "" # unless data.learnings.empty? learns = data.learnings.sort {|a,b| a.level - b.level } page = 1 info += page_text("習得スキル", page, learns.size, 1) line = 1 learns.each do |d| if (line % (Dictionary.d_line_max) == 0) page += 1 info += "\\p\\c[16]【習得スキル(#{page})】\\c[0]\\n" line = 1 else info += "\\n" line += 1 end skill = $data_skills[d.skill_id] info += "\\x[0]\\c[16]Lv.#{d.level}\\c[0]\\x[80]\\i[#{skill.icon_index}]#{skill.name}" line += 1 end end # info += self.features(data.features) # text = "" case id when 0; text = "クラスID:○の説明文〜" end # return textinfo(text, info) end #---------------------------------------------------------------------------- # カスタマイズEND #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # ■ 汎用メソッド #---------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● ページテキスト #-------------------------------------------------------------------------- def self.page_text(text, page, size, divide) if (Dictionary.d_line_max - 1) < (size / divide) return "\\c[16]【#{text}(#{page})】\\c[0]" else return "\\c[16]【#{text}】\\c[0]" end end #-------------------------------------------------------------------------- # ● 情報テキストとデータベース情報の結合 #-------------------------------------------------------------------------- def self.textinfo(text, info) return "説明文がありません" if text == "" and info == "" return text if info == "" return info if text == "" return info + "\\p" + text end #-------------------------------------------------------------------------- # ● 属性配列生成 #-------------------------------------------------------------------------- def self.textpm(value) return "-#{value.abs}" if value < 0 return "+#{value.abs}" end #-------------------------------------------------------------------------- # ● 属性配列生成 #-------------------------------------------------------------------------- def self.element_icon_text(id) if ELE_USE_ICON and !ELE_ICON[id].nil? return "\\i[#{ELE_ICON[id]}]#{$data_system.elements[id]}" end return $data_system.elements[id] end def self.element_name(id) return "\\i[#{ELE_ICON[id]}]" if ELE_USE_ICON and !ELE_ICON[id].nil? return $data_system.elements[id] end def self.make_elements(elements) text = "" cnt = 0 for id in elements next if ELE_NOT_SHOW.include?(id) if cnt == ELEMENTS_MAX text += "など" break end text += element_name(id) + " " cnt += 1 end return text end #-------------------------------------------------------------------------- # ● ステート配列生成 #-------------------------------------------------------------------------- def self.state_icon_text(id) return "\\i[#{$data_states[id].icon_index}]#{$data_states[id].name}" end def self.state_name(id) return "\\i[#{$data_states[id].icon_index}]" end def self.make_states(states) text = "" cnt = 0 for id in states next if STS_NOT_SHOW.include?(id) if cnt == STATES_MAX text += "など" break end text += state_name(id) + " " cnt += 1 end return text end #-------------------------------------------------------------------------- # ● 属性有効度 #-------------------------------------------------------------------------- def self.element_rate(data) divide = 2 ids = [] $data_system.elements.each_index { |i| ids.push(i) if i != 0 and !ELE_NOT_SHOW.include?(i) } return "" if ids.size == 0 page = line = 1 i = 0 info = page_text("属性有効度", page, ids.size, divide) ids.each do |id| if (i % divide) == 0 if (line % (Dictionary.d_line_max) == 0) page += 1 info += "\\p\\c[16]【属性有効度(#{page})】\\c[0]\\n" line = 1 else info += "\\n" line += 1 end end ele = element_icon_text(id) x = (i % divide) * 160 xx = x + 84 info += "\\x[#{x}]\\c[16]#{ele}\\c[0]\\x[#{xx}]#{(data.element_rate(id)*100).truncate}%" i += 1 end return info end #-------------------------------------------------------------------------- # ● ステート有効度 #-------------------------------------------------------------------------- def self.state_rate(data) divide = 2 ids = [] $data_states.each_index { |i| ids.push(i) if i != 0 and !STS_NOT_SHOW.include?(i) } return "" if ids.size == 0 page = line = 1 i = 0 info = page_text("ステート有効度", page, ids.size, divide) ids.each do |id| if (i % divide) == 0 if (line % (Dictionary.d_line_max) == 0) page += 1 info += "\\p\\c[16]【ステート有効度(#{page})】\\c[0]\\n" line = 1 else info += "\\n" line += 1 end end sts = state_icon_text(id) x = (i % divide) * 160 xx = x + 100 info += "\\x[#{x}]\\c[16]#{sts}\\c[0]\\x[#{xx}]#{(data.state_rate(id)*100).truncate}%" i += 1 end return info end #-------------------------------------------------------------------------- # ● 属性有効度 #-------------------------------------------------------------------------- def self.damage(damage) info = "" case damage.type when 1,3,5; info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[2]) when 2,4,6; info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[4]) end if damage.element_id != 0 info += "\\x[160]\\c[16]属性\\c[0]\\x[250]#{element_icon_text(damage.element_id)}" end return info + "\\n" end #-------------------------------------------------------------------------- # ● 特徴 #-------------------------------------------------------------------------- def self.features(array) return "" if array.size == 0 page = line = 1 i = 0 info = "\\p" + page_text("特徴", page, array.size, 1) array.each do |data| if (line % (Dictionary.d_line_max) == 0) page += 1 info += "\\p\\c[16]【特徴(#{page})】\\c[0]\\n" line = 1 else info += "\\n" line += 1 end info += feature(data, i) i += 1 end return info end def self.feature(data, i) x = 10 xx = x + 120 case data.code when FEATURE_ELEMENT_RATE return "\\x[#{x}]" + element_icon_text(data.data_id) + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_DEBUFF_RATE return "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_STATE_RATE return "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_STATE_RESIST info += "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]無効" return info when FEATURE_PARAM info += "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%" return info when FEATURE_XPARAM info = "\\x[#{x}]" case data.data_id when 7; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[2]) when 8; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[4]) when 9; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[6]) else; info += XPARAM[data.data_id] end return info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_SPARAM info = "\\x[#{x}]" case data.data_id when 4; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[4]) when 5; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[6]) else; info += SPARAM[data.data_id] end return info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_ATK_ELEMENT return "\\x[#{x}]攻撃属性\\x[#{xx}]#{$data_system.elements[data.data_id]}" when FEATURE_ATK_STATE return "\\x[#{x}]攻撃時ステート\\x[#{xx}]#{$data_states[data.data_id]}(#{textpm((data.value*100).truncate)}%)" when FEATURE_ATK_SPEED return "\\x[#{x}]攻撃速度補正\\x[#{xx}]#{textpm(data.value.truncate)}" when FEATURE_ATK_TIMES return "\\x[#{x}]攻撃追加回数\\x[#{xx}]#{textpm((data.value*100).truncate)}" when FEATURE_STYPE_ADD return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル追加" when FEATURE_STYPE_SEAL return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル封印" when FEATURE_SKILL_ADD return "\\x[#{x}]「#{$data_skills[data.data_id].name}」習得" when FEATURE_SKILL_SEAL return "\\x[#{x}]「#{$data_skills[data.data_id].name}」封印" when FEATURE_EQUIP_WTYPE return "\\x[#{x}]「#{$data_system.weapon_types[data.data_id]}」装備可能" when FEATURE_EQUIP_ATYPE return "\\x[#{x}]「#{$data_system.armor_types[data.data_id]}」装備可能" when FEATURE_EQUIP_FIX return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備固定化" when FEATURE_EQUIP_SEAL return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備不可" when FEATURE_SLOT_TYPE return "\\x[#{x}]" + SLOT_TYPE[data.data_id] when FEATURE_ACTION_PLUS return "\\x[#{x}]複数回行動率\\x[#{xx}]#{textpm((data.value*100).truncate)}%" when FEATURE_SPECIAL_FLAG if data.data_id == FLAG_ID_PRESERVE_TP return "\\x[#{x}]" + sprintf(SPECIAL[data.data_id], $data_system.terms.basic[6]) else return "\\x[#{x}]" + SPECIAL[data.data_id] end when FEATURE_COLLAPSE_TYPE return "" ##"\\x[#{x}]" + COLLAPSE[data.data_id] when FEATURE_PARTY_ABILITY return "\\x[#{x}]" + PT_ABILITY[data.data_id] end return "" end #-------------------------------------------------------------------------- # ● 使用効果 #-------------------------------------------------------------------------- def self.effects(array) info = "" x = 120 a = array.select { |effect| effect.code == EFFECT_RECOVER_HP } unless a.empty? info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[2])}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0 info += "#{textpm(effect.value2.truncate)}" if effect.value2 != 0 info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_RECOVER_MP } unless a.empty? info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[4])}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0 info += "#{textpm(effect.value2.truncate)}" if effect.value2 != 0 info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_GAIN_TP } unless a.empty? info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[6])}\\c[0]\\x[#{x}]" a.each do |effect| info += "#{textpm(effect.value1.truncate)}" end info += "\\n" end a = array.select { |effect| effect.code == EFFECT_ADD_STATE and effect.data_id != 0 } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]" a.each do |effect| info += state_icon_text(effect.data_id) end info += "\\n" end a = array.select { |effect| effect.code == EFFECT_REMOVE_STATE and effect.data_id != 0 } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]" a.each do |effect| info += state_icon_text(effect.data_id) end info += "\\n" end a = array.select { |effect| effect.code == EFFECT_ADD_BUFF } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{$data_system.terms.params[effect.data_id]}UP" info += " #{effect.value1.truncate}ターン" info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_ADD_DEBUFF } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{$data_system.terms.params[effect.data_id]}DOWN" info += " #{effect.value1.truncate}ターン" info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_REMOVE_BUFF } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{$data_system.terms.params[effect.data_id]}UP解除" info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_REMOVE_DEBUFF } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{$data_system.terms.params[effect.data_id]}DOWN解除" info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_GROW } unless a.empty? info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]" a.each do |effect| info += "\\x[#{x}]" info += "#{$data_system.terms.params[effect.data_id]}" info += "#{textpm(effect.value1.truncate)}" info += "\\n" end end a = array.select { |effect| effect.code == EFFECT_LEARN_SKILL } unless a.empty? a.each do |effect| info += "\\x[#{x}]" info += "「#{$data_skills[effect.data_id]}」習得" info += "\\n" end end return info end #---------------------------------------------------------------------------- # ■ 自動生成メソッド #---------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● アクター情報の自動生成 #-------------------------------------------------------------------------- def self.create_actor(id) data = ["\\n[#{id}]", "\\n[#{id}]", "\\b[#{id}]", actor_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● エネミー情報の自動生成 #-------------------------------------------------------------------------- def self.create_enemy(id) data = ["\\e[#{id}]", "", "\\e[#{id}]", enemy_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● エネミー情報の自動生成 #-------------------------------------------------------------------------- def self.create_enemy_analize(id) data = ["\\e[#{id}]", "", "\\e[#{id}]", ""] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● アイテム情報の自動生成 #-------------------------------------------------------------------------- def self.create_item(id) data = ["\\t[#{id}]", "\\t[#{id}]", nil, item_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● 武器情報の自動生成 #-------------------------------------------------------------------------- def self.create_weapon(id) data = ["\\w[#{id}]", "\\w[#{id}]", nil, weapon_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● 防具情報の自動生成 #-------------------------------------------------------------------------- def self.create_armor(id) data = ["\\a[#{id}]", "\\a[#{id}]", nil, armor_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● スキル情報の自動生成 #-------------------------------------------------------------------------- def self.create_skill(id) data = ["\\s[#{id}]", "\\s[#{id}]", nil, skill_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● クラス情報の自動生成 #-------------------------------------------------------------------------- def self.create_class(id) data = ["\\J[#{id}]", "\\j[#{id}]", nil, class_text(id)] return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● 場所情報の自動生成 #-------------------------------------------------------------------------- def self.create_town(id) unless defined?(WorldMap) p "Error : can't use ATC_TOWN [WorldMapが定義されてません]";exit end region_id = id / 1000 town_id = (id % 1000) - 1 if town_id < 0 # リージョン情報 region = $game_system.worldmap[region_id] data = [region.region_name, "地域", nil, region.region_info, region.visible] else # タウン情報 town = $game_system.worldmap[region_id][town_id] data = [town.town_name, "場所", nil, town.town_info, town.visible] end return Dictionary::DictData.new(id, data) end #-------------------------------------------------------------------------- # ● クエスト情報の自動生成 #-------------------------------------------------------------------------- def self.create_quest(id) unless defined?(Quest) p "Error : can't use ATC_QUEST [QuestSystemが定義されてません]";exit end data = ["#{$game_system.quest[id].name}", "", nil, Quest.conv_text($game_system.quest[id].text)] return Dictionary::DictData.new(id, data) end end module DictAutoCreate #-------------------------------------------------------------------------- # ● Plugin-自動生成(用語ID) #-------------------------------------------------------------------------- def self.plugin_auto_ids(type) ids = [] case type when ATC_ACTOR # アクターの自動生成 $data_actors.each do |d| next if d.nil? or ACT_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_ENEMY, ATC_ENEMY_A # エネミーの自動生成 $data_enemies.each do |d| next if d.nil? or ENM_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_ITEM # アイテムの自動生成 $data_items.each do |d| next if d.nil? or ITM_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_WEAPON # 武器の自動生成 $data_weapons.each do |d| next if d.nil? or WPN_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_ARMOR_ALL # 防具(全て)の自動生成 $data_armors.each do |d| next if d.nil? or ARM_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_ARMOR_S # 防具(盾のみ)の自動生成 $data_armors.each do |d| next if d.nil? or ARM_NOT_SHOW.include?(d.id) next if d.etype_id != 1 # 盾 ids.push(d.id) end when ATC_ARMOR_H # 防具(頭防具のみ)の自動生成 $data_armors.each do |d| next if d.nil? or ARM_NOT_SHOW.include?(d.id) next if d.etype_id != 2 # 頭防具 ids.push(d.id) end when ATC_ARMOR_C # 防具(身体防具のみ)の自動生成 $data_armors.each do |d| next if d.nil? or ARM_NOT_SHOW.include?(d.id) next if d.etype_id != 3 # 身体防具 ids.push(d.id) end when ATC_ARMOR_A # 防具(装飾品のみ)の自動生成 $data_armors.each do |d| next if d.nil? or ARM_NOT_SHOW.include?(d.id) next if d.etype_id != 4 # 装飾品 ids.push(d.id) end when ATC_SKILL # スキルの自動生成 $data_skills.each do |d| next if d.nil? or SKL_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_CLASS # クラスの自動生成 $data_classes.each do |d| next if d.nil? or CLS_NOT_SHOW.include?(d.id) ids.push(d.id) end when ATC_TOWN # 場所の自動生成 if defined?(WorldMap) WorldMap::REGION.keys.sort.each do |region_id| i = self.conv_region_id(region_id) next if TWN_NOT_SHOW.include?(i) ids.push(i) WorldMap::REGION[region_id][WorldMap::R_TOWN].keys.sort.each do |town_id| i = self.conv_town_id(region_id, town_id) next if TWN_NOT_SHOW.include?(i) ids.push(i) end end else p "WorldMapがありません。"; exit end when ATC_QUEST # クエストの自動生成 if defined?(Quest) Quest::QUEST.keys.sort.each do |i| next if QST_NOT_SHOW.include?(i) ids.push(i) end else p "QuestSystemがありません。"; exit end else p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}" end return ids end #-------------------------------------------------------------------------- # ● ATC_TOWN : リージョンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_region_id(region_id) if defined?(WorldMap) return (region_id * 1000) else p "WorldMapがありません。"; exit end end #-------------------------------------------------------------------------- # ● ATC_TOWN : タウンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_town_id(region_id, town_id) if defined?(WorldMap) return (self.conv_region_id(region_id) + town_id + 1) else p "WorldMapがありません。"; exit end end #-------------------------------------------------------------------------- # ● Plugin-自動生成(用語データ) #-------------------------------------------------------------------------- def self.plugin_auto_create(type, id) case type when ATC_ACTOR # アクターの自動生成 return DictAutoCreate.create_actor(id) when ATC_ENEMY # エネミーの自動生成 return DictAutoCreate.create_enemy(id) when ATC_ENEMY_A # エネミー(アナライズ用)の自動生成 return DictAutoCreate.create_enemy_analize(id) when ATC_ITEM # アイテムの自動生成 return DictAutoCreate.create_item(id) when ATC_WEAPON # 武器の自動生成 return DictAutoCreate.create_weapon(id) when ATC_ARMOR_ALL # 防具(全て)の自動生成 return DictAutoCreate.create_armor(id) when ATC_ARMOR_S # 防具(盾のみ)の自動生成 return DictAutoCreate.create_armor(id) when ATC_ARMOR_H # 防具(頭防具のみ)の自動生成 return DictAutoCreate.create_armor(id) when ATC_ARMOR_C # 防具(身体防具のみ)の自動生成 return DictAutoCreate.create_armor(id) when ATC_ARMOR_A # 防具(装飾品のみ)の自動生成 return DictAutoCreate.create_armor(id) when ATC_SKILL # スキルの自動生成 return DictAutoCreate.create_skill(id) when ATC_CLASS # クラスの自動生成 return DictAutoCreate.create_class(id) when ATC_TOWN # 場所の自動生成 return DictAutoCreate.create_town(id) when ATC_QUEST # クエストの自動生成 return DictAutoCreate.create_quest(id) else p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}" exit end end end