#==============================================================================
# ■ XPのデータのVXへの移行 by 貪藻矢射妥←
#------------------------------------------------------------------------------
# 読んで字のごとく、XPで造ったデータ(*.rxdata)をVX(*.rvdata)へ移行します。
#
# Data ディレクトリに移行したいXPのSystem.rxdata、States.rxdata、Item.rxdata、
# Weapon.rxdata、Armor.rxdataをコピーしてください。
#
# イベントで
# $game_system.set_xp_2_vx
# を実行し、ゲーム本編で起動した後、一旦、ツクールを終了して再起動させて
# ください。
# そうすると反映されます。
#
# ※各種データの個数はXPとVXとで同じ数にするか、もしくはVXの方を大きくして
# ください。
#
#==============================================================================
# 更新っぽいもの
# 2024:09:01
# ・固定文字列対応
module VX_TO_XP
# 属性を使用
SIE = 31 # 逆効果と相殺の属性
end
module KGC
# ◆吸収属性
ABSORB = 28
# ◆SP Damage用属性
SP_DAMAGE = 50
end
module ChangeSC
# SP割合消費の属性番号
SP_P_C = 32
# HP消費の属性番号
HP_C = 33
# HP割合消費の属性番号
HP_P_C = 34
# 消費軽減の属性番号
EX_RED = 27
end
module DHR
HIT_RATES = [[55, 75], [56, 80], [57, 100], [58, 150], [59, 180]]
end
module FIX_PATH
# RPGツクールXPデータ拡張子
EX_CHILD_RXDATA = ".rxdata"
end
class Game_System
include VX_TO_XP
include KGC
include ChangeSC
include DHR
#--------------------------------------------------------------------------
# ● rvdataからrxdataのファイル名を作成する
#--------------------------------------------------------------------------
def make_rxdata(data)
data2 = data.dup
data2[FIX_PATH::EX_CHILD_RVDATA] = FIX_PATH::EX_CHILD_RXDATA
return data2
end
#--------------------------------------------------------------------------
# ● scope変換
#--------------------------------------------------------------------------
def get_scope_4_pxv(datas)
case datas.scope
when 0,1,2 ; return datas.scope
when 3,4,5,6,7 ; return datas.scope+4
else ; p "ありえないエラー" ; return nil
end
end
#--------------------------------------------------------------------------
# ● 防御力変換
#--------------------------------------------------------------------------
def get_def_4_pxv(datas)
return (datas.pdef + datas.mdef) / 2
end
#--------------------------------------------------------------------------
# ● アイコン名称変換
# スクリプト:アイコンの制限解除 が別途必要
#--------------------------------------------------------------------------
def get_icon_name(datas)
return "ICON#{DIA_IC::STT}" + datas.icon_name + "#{DIA_IC::FIN}"
end
#--------------------------------------------------------------------------
# ● 全部変換
#--------------------------------------------------------------------------
def set_xp_2_vx
set_xp_elements
set_xp_states
set_xp_items
set_xp_weapons
set_xp_armors
set_xp_skills
end
#--------------------------------------------------------------------------
# ● 属性の引き継ぎ
#--------------------------------------------------------------------------
def set_xp_elements
$data_system_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_SYSM))
for id in 1...$data_system_xp.elements.size
$data_system.elements[id] = $data_system_xp.elements[id]
end
save_data($data_system,FIX_PATH::PATH_DATA_SYSM)
end
#--------------------------------------------------------------------------
# ● ステートの引き継ぎ
#--------------------------------------------------------------------------
def set_xp_states
$data_states_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_STTS))
for id in 2...$data_states_xp.size
$data_states[id].name = $data_states_xp[id].name
$data_states[id].restriction = $data_states_xp[id].restriction
$data_states[id].nonresistance = $data_states_xp[id].nonresistance
$data_states[id].priority = $data_states_xp[id].rating
$data_states[id].slip_damage = $data_states_xp[id].slip_damage
$data_states[id].hold_turn = $data_states_xp[id].hold_turn
$data_states[id].auto_release_prob = $data_states_xp[id].auto_release_prob
$data_states[id].battle_only = $data_states_xp[id].battle_only
$data_states[id].atk_rate = $data_states_xp[id].atk_rate
$data_states[id].def_rate = ($data_states_xp[id].pdef_rate +
$data_states_xp[id].mdef_rate) / 2
$data_states[id].spi_rate = $data_states_xp[id].int_rate
$data_states[id].agi_rate = $data_states_xp[id].agi_rate
$data_states[id].element_set = $data_states_xp[id].guard_element_set
$data_states[id].state_set = $data_states_xp[id].minus_state_set
# XP : スリップダメージ改造 を使用している場合
# かつ、KGC SoftのVX script スリップダメージ を使用している場合
slip_damage_HP = 0
slip_damage_SP = 0
slip_damage_H_Val = 0
slip_damage_S_Val = 0
$data_states[id].note = ""
if $data_states_xp[id].slip_damage
# そのステートが持っているスリップダメージの
# LvプラスステートまたはLvマイナスステートを判定。
for j in $data_states_xp[id].plus_state_set
# プラスステートの取得
plus_state = $data_states_xp[j]
if plus_state != nil
if plus_state.name =~ /^HPスリップ([0-9]+)(%|%)/
slip_damage_HP -= $1.to_i
end
if plus_state.name =~ /^SPスリップ([0-9]+)(%|%)/
slip_damage_SP -= $1.to_i
end
if plus_state.name =~ /^HPスリップ([0-9]+)$/
slip_damage_H_Val -= $1.to_i
end
if plus_state.name =~ /^SPスリップ([0-9]+)$/
slip_damage_S_Val -= $1.to_i
end
end
end
for j in $data_states_xp[id].minus_state_set
# マイナスステートの取得
minus_state = $data_states_xp[j]
if minus_state != nil
if minus_state.name =~ /^HPスリップ([0-9]+)(%|%)/
slip_damage_HP += $1.to_i
end
if minus_state.name =~ /^SPスリップ([0-9]+)(%|%)/
slip_damage_SP += $1.to_i
end
if minus_state.name =~ /^HPスリップ([0-9]+)$/
slip_damage_H_Val += $1.to_i
end
if minus_state.name =~ /^SPスリップ([0-9]+)$/
slip_damage_S_Val += $1.to_i
end
end
end
text1 = sprintf("<スリップ HP %s%%, %s>", slip_damage_HP, slip_damage_HP / 2)
text2 = sprintf("<スリップ HP %s, %s>", slip_damage_H_Val, slip_damage_H_Val)
text3 = sprintf("<スリップ MP %s%%, %s>", slip_damage_SP, slip_damage_SP / 2)
text4 = sprintf("<スリップ MP %s, %s>", slip_damage_S_Val, slip_damage_S_Val)
if slip_damage_HP != 0
$data_states[id].note = text1
elsif slip_damage_H_Val != 0
$data_states[id].note = text2
end
if slip_damage_SP != 0
if $data_states[id].note != ""
$data_states[id].note += "\r\n" + text3
else
$data_states[id].note = text3
end
elsif slip_damage_S_Val != 0
if $data_states[id].note != ""
$data_states[id].note += "\r\n" + text4
else
$data_states[id].note = text4
end
end
end
# XP : VX to XP 逆効果と相殺を使用している場合
if $data_states_xp[id].guard_element_set.include?(SIE)
$data_states[id].offset_by_opposite = true
end
# ダメージを受けた場合解除の可能性が0より大きい場合
if $data_states_xp[id].shock_release_prob > 0
$data_states[id].release_by_damage = true
end
end
save_data($data_states,FIX_PATH::PATH_DATA_STTS)
end
#--------------------------------------------------------------------------
# ● スキルの引き継ぎ
#--------------------------------------------------------------------------
def set_xp_skills
$data_skills_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_SKIL))
for id in 1...$data_skills_xp.size
$data_skills[id].name = $data_skills_xp[id].name
$data_skills[id].icon_name = $data_skills_xp[id].icon_name
$data_skills[id].description = $data_skills_xp[id].description
$data_skills[id].occasion = $data_skills_xp[id].occasion
$data_skills[id].common_event_id = $data_skills_xp[id].common_event_id
$data_skills[id].mp_cost = $data_skills_xp[id].sp_cost
$data_skills[id].hit = $data_skills_xp[id].hit
$data_skills[id].speed = $data_skills_xp[id].agi_f
$data_skills[id].base_damage = $data_skills_xp[id].power
$data_skills[id].variance = $data_skills_xp[id].variance
$data_skills[id].atk_f = $data_skills_xp[id].atk_f
$data_skills[id].spi_f = $data_skills_xp[id].int_f
$data_skills[id].element_set = $data_skills_xp[id].element_set
$data_skills[id].plus_state_set = $data_skills_xp[id].plus_state_set
$data_skills[id].minus_state_set = $data_skills_xp[id].minus_state_set
$data_skills[id].scope = get_scope_4_pxv($data_skills_xp[id])
# ダメージ吸収 貪藻矢射妥←カスタム を使用している場合
if $data_skills_xp[id].element_set.include?(ABSORB)
$data_skills[id].absorb_damage = true
end
# SPダメージ 貪藻矢射妥←簡易版 を使用している場合
if $data_skills_xp[id].element_set.include?(SP_DAMAGE)
$data_skills[id].damage_to_mp = true
end
if $data_skills_xp[id].icon_name != ""
$data_skills[id].note = get_icon_name($data_skills_xp[id])
end
# 特殊消費スキル を使用している場合
# かつ、KGC Soft VX script 割合消費 を使用している場合
if $data_skills_xp[id].element_set.include?(SP_P_C)
if $data_skills[id].note != ""
$data_skills[id].note += "\r\n" + ""
else
$data_skills[id].note = ""
end
end
if $data_skills_xp[id].element_set.include?(HP_C)
if $data_skills[id].note != ""
$data_skills[id].note += "\r\n" + ""
else
$data_skills[id].note = ""
end
end
if $data_skills_xp[id].element_set.include?(HP_P_C)
if $data_skills[id].note != ""
$data_skills[id].note += "\r\n" + ""
else
$data_skills[id].note = ""
end
end
end
save_data($data_skills,FIX_PATH::PATH_DATA_SKIL)
end
#--------------------------------------------------------------------------
# ● 武器の引き継ぎ
#--------------------------------------------------------------------------
def set_xp_weapons
$data_weapons_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_WEPN))
for id in 1...$data_weapons_xp.size
$data_weapons[id].name = $data_weapons_xp[id].name
$data_weapons[id].description = $data_weapons_xp[id].description
$data_weapons[id].price = $data_weapons_xp[id].price
$data_weapons[id].atk = $data_weapons_xp[id].atk
$data_weapons[id].def = get_def_4_pxv($data_weapons_xp[id])
$data_weapons[id].spi = $data_weapons_xp[id].int_plus
$data_weapons[id].agi = $data_weapons_xp[id].agi_plus
$data_weapons[id].element_set = $data_weapons_xp[id].element_set
$data_weapons[id].state_set = $data_weapons_xp[id].plus_state_set
# なんらかのスクリプトで 先制攻撃属性 をつけている場合
if $data_weapons_xp[id].element_set.include?(先制攻撃属性)
$data_weapons[id].fast_attack = true
end
# なんらかのスクリプトで 二回攻撃属性 をつけている場合
if $data_weapons_xp[id].element_set.include?(二回攻撃属性)
$data_weapons[id].dual_attack = true
end
# なんらかのスクリプトで 両手持ち属性 をつけている場合
if $data_weapons_xp[id].element_set.include?(両手持ち属性)
$data_weapons[id].two_handed = true
end
# XP : 命中精度 を使用している場合
if $data_weapons_xp[id].element_set.include?(HIT_RATES[0][0])
$data_weapons[id].hit = 100
end
if $data_weapons_xp[id].element_set.include?(HIT_RATES[1][0])
$data_weapons[id].hit = 90
end
if $data_weapons_xp[id].element_set.include?(HIT_RATES[2][0])
$data_weapons[id].hit = 80
end
if $data_weapons_xp[id].element_set.include?(HIT_RATES[3][0])
$data_weapons[id].hit = 60
end
if $data_weapons_xp[id].element_set.include?(HIT_RATES[4][0])
$data_weapons[id].hit = 50
end
if $data_weapons_xp[id].icon_name != ""
$data_weapons[id].note = get_icon_name($data_weapons_xp[id])
end
# なんらかのスクリプトで 全体攻撃属性 をつけている場合
# かつ KGC Soft VX script を使用している場合
if $data_weapons_xp[id].element_set.include?(全体攻撃属性)
if $data_weapons[id].note != ""
$data_weapons[id].note += "\r\n" + "<全体攻撃>"
else
$data_weapons[id].note = "<全体攻撃>"
end
end
# なんらかのスクリプトで 回避無視属性 をつけている場合
# かつ KGC Soft VX script を使用している場合
if $data_weapons_xp[id].element_set.include?(回避無視属性)
if $data_weapons[id].note != ""
$data_weapons[id].note += "\r\n" + "<回避率無視>"
else
$data_weapons[id].note = "<回避率無視>"
end
end
end
save_data($data_weapons,FIX_PATH::PATH_DATA_WEPN)
end
#--------------------------------------------------------------------------
# ● 防具の引き継ぎ
#--------------------------------------------------------------------------
def set_xp_armors
$data_armors_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_ARMR))
for id in 1...$data_armors_xp.size
$data_armors[id].name = $data_armors_xp[id].name
$data_armors[id].description = $data_armors_xp[id].description
$data_armors[id].kind = $data_armors_xp[id].kind
$data_armors[id].price = $data_armors_xp[id].price
$data_armors[id].eva = $data_armors_xp[id].eva
$data_armors[id].atk = $data_armors_xp[id].str_plus
$data_armors[id].def = get_def_4_pxv($data_armors_xp[id])
$data_armors[id].spi = $data_armors_xp[id].int_plus
$data_armors[id].agi = $data_armors_xp[id].agi_plus
$data_armors[id].element_set = $data_armors_xp[id].guard_element_set
$data_armors[id].state_set = $data_armors_xp[id].guard_state_set
# なんらかのスクリプトで 必殺防止属性 をつけている場合
if $data_armors_xp[id].guard_element_set.include?(必殺防止属性)
$data_armors[id].prevent_critical = true
end
# XP : 特殊消費スキル を使用している場合
if $data_armors_xp[id].guard_element_set.include?(EX_RED)
$data_armors[id].half_mp_cost = true
end
if $data_armors_xp[id].icon_name != ""
$data_armors[id].note = get_icon_name($data_armors_xp[id])
end
end
save_data($data_armors,FIX_PATH::PATH_DATA_ARMR)
end
#--------------------------------------------------------------------------
# ● アイテムの引き継ぎ
#--------------------------------------------------------------------------
def set_xp_items
$data_items_xp = load_data(make_rxdata(FIX_PATH::PATH_DATA_ITEM))
for id in 1...$data_items_xp.size
$data_items[id].name = $data_items_xp[id].name
$data_items[id].price = $data_items_xp[id].price
$data_items[id].description = $data_items_xp[id].description
$data_items[id].occasion = $data_items_xp[id].occasion
$data_items[id].common_event_id = $data_items_xp[id].common_event_id
$data_items[id].consumable = $data_items_xp[id].consumable
$data_items[id].hp_recovery_rate = $data_items_xp[id].recover_hp_rate
$data_items[id].hp_recovery = $data_items_xp[id].recover_hp
$data_items[id].mp_recovery_rate = $data_items_xp[id].recover_sp_rate
$data_items[id].mp_recovery = $data_items_xp[id].recover_sp
$data_items[id].parameter_type = $data_items_xp[id].parameter_type
$data_items[id].parameter_points = $data_items_xp[id].parameter_points
$data_items[id].element_set = $data_items_xp[id].element_set
$data_items[id].plus_state_set = $data_items_xp[id].plus_state_set
$data_items[id].minus_state_set = $data_items_xp[id].minus_state_set
$data_items[id].scope = get_scope_4_pxv($data_items_xp[id])
if $data_items_xp[id].icon_name != ""
$data_items[id].note = get_icon_name($data_items_xp[id])
end
end
save_data($data_items,FIX_PATH::PATH_DATA_ITEM)
end
end
|