回復魔力パラメータ追加
以下よりコード
最下層までコピってみてください。
=begin
★回復魔力パラメーター追加★
新たに回復魔力パラメーターを作り、精神力と差別化します。
● 仕様 ●==========================================================
既存のパラメーターである精神力は、魔法攻撃力として利用されます。
====================================================================
● 使い方 ●========================================================
アクターの設定はスクリプト内の設定箇所にて行ってください。
設定されていないアクターの魔法防御値は、精神力と同値になります。
--------------------------------------------------------------------
◇ 能力補正ステートの設定方法
ステートのメモ欄に「回復魔力変化率:n」と記述。nは変化率。
例:150で1.5倍
--------------------------------------------------------------------
◇ 能力補正アイテムの設定方法
アイテムのメモ欄に「回復魔力変化量:n」と記述。nは変化量。
--------------------------------------------------------------------
◇ 装備品の設定方法
装備のメモ欄に「回復魔力装備補正:n」と記述。nは変化量。
--------------------------------------------------------------------
◇ エネミーの設定方法
敵キャラのメモ欄に「回復魔力値設定:n」と記述。nはパラメーター値。
※ 設定されていないエネミーの魔法防御値は、精神力と同値になります。
--------------------------------------------------------------------
◇ イベントコマンドから能力値を増減させる
次のスクリプトを実行
$game_actors[id].hspi += n
id => アクターID
n => 変化量
====================================================================
● 挿入位置 ●======================================================
「2タイプガードコマンド」より下に貼り付けてください。
====================================================================
● 注意 ●==========================================================
ver1.01以前に使用していた一部のメソッドを使用しなくなりました。
旧バージョンを使用して他のスクリプトを改造しており、
尚且つ、差し替えるという方は以下の点に御注意ください。
未使用メソッドは次の通りです。
・Game_Battler > hspi_state
・Window_Base > draw_actor_hspi
・Window_EquipStatus > draw_hspi
====================================================================
ver1.13
Last Update : 2010/9/24
9/24 :回復魔力として改変。ありがとうございました。
↓ろかん様の更新履歴
11/26: イベントコマンドでの能力値加算に対応
10/27: 装備品のマイナス補正が機能しなかった不具合を修正
9/27 : プリセットや他サイトのスクリプトとの併用を行い易いように改造
(スクリプトがわかる人向けの更新になります)
7/15 : 装備変更画面のウィンドウのズレを修正
7/13 : 新規
#===========================================
# 設定箇所
#===========================================
module Rokan
module Heal_spi_Plas
# パラメーター名(ステータス画面などに表示される名前です)
HSN = "回復魔力"
# パラメーター上限値
HSM = 999
# アクター別成長表( アクターID => )
HSG = {1 => [ 12, 16, 19, 23, 27, 30, 34, 39, 43, 48, # Lv1 ..Lv10
53, 56, 60, 65, 69, 74, 78, 81, 87, 92, # Lv11..Lv20
98, 102, 108, 113, 118, 122, 126, 131, 137, 142, # Lv21..Lv30
147, 153, 160, 165, 169, 175, 181, 186, 192, 197, # Lv31..Lv40
201, 205, 209, 214, 220, 224, 227, 232, 238, 242, # Lv41..Lv50
256, 261, 266, 272, 276, 279, 283, 288, 292, 298, # Lv51..Lv60
305, 310, 314, 320, 324, 329, 323, 327, 330, 335, # Lv61..Lv70
339, 345, 349, 354, 359, 364, 368, 374, 378, 383, # Lv71..Lv80
386, 390, 394, 397, 400, 404, 407, 411, 416, 420, # Lv81..Lv90
426, 431, 434, 439, 443, 449, 454, 459, 466], # Lv91..Lv99
2 => [ 12, 16, 19, 23, 27, 30, 34, 39, 43, 48, # Lv1 ..Lv10
53, 56, 60, 65, 69, 74, 78, 81, 87, 92, # Lv11..Lv20
98, 102, 108, 113, 118, 122, 126, 131, 137, 142, # Lv21..Lv30
147, 153, 160, 165, 169, 175, 181, 186, 192, 197, # Lv31..Lv40
201, 205, 209, 214, 220, 224, 227, 232, 238, 242, # Lv41..Lv50
256, 261, 266, 272, 276, 279, 283, 288, 292, 298, # Lv51..Lv60
305, 310, 314, 320, 324, 329, 323, 327, 330, 335, # Lv61..Lv70
339, 345, 349, 354, 359, 364, 368, 374, 378, 383, # Lv71..Lv80
386, 390, 394, 397, 400, 404, 407, 411, 416, 420, # Lv81..Lv90
426, 431, 434, 439, 443, 449, 454, 459, 466], # Lv91..Lv99
3 => [ 12, 16, 19, 23, 27, 30, 34, 39, 43, 48, # Lv1 ..Lv10
53, 56, 60, 65, 69, 74, 78, 81, 87, 92, # Lv11..Lv20
98, 102, 108, 113, 118, 122, 126, 131, 137, 142, # Lv21..Lv30
147, 153, 160, 165, 169, 175, 181, 186, 192, 197, # Lv31..Lv40
201, 205, 209, 214, 220, 224, 227, 232, 238, 242, # Lv41..Lv50
256, 261, 266, 272, 276, 279, 283, 288, 292, 298, # Lv51..Lv60
305, 310, 314, 320, 324, 329, 323, 327, 330, 335, # Lv61..Lv70
339, 345, 349, 354, 359, 364, 368, 374, 378, 383, # Lv71..Lv80
386, 390, 394, 397, 400, 404, 407, 411, 416, 420, # Lv81..Lv90
426, 431, 434, 439, 443, 449, 454, 459, 466], # Lv91..Lv99
4 => [ 12, 16, 19, 23, 27, 30, 34, 39, 43, 48, # Lv1 ..Lv10
53, 56, 60, 65, 69, 74, 78, 81, 87, 92, # Lv11..Lv20
98, 102, 108, 113, 118, 122, 126, 131, 137, 142, # Lv21..Lv30
147, 153, 160, 165, 169, 175, 181, 186, 192, 197, # Lv31..Lv40
201, 205, 209, 214, 220, 224, 227, 232, 238, 242, # Lv41..Lv50
256, 261, 266, 272, 276, 279, 283, 288, 292, 298, # Lv51..Lv60
305, 310, 314, 320, 324, 329, 323, 327, 330, 335, # Lv61..Lv70
339, 345, 349, 354, 359, 364, 368, 374, 378, 383, # Lv71..Lv80
386, 390, 394, 397, 400, 404, 407, 411, 416, 420, # Lv81..Lv90
426, 431, 434, 439, 443, 449, 454, 459, 466], # Lv91..Lv99
}
end
end
#===========================================
# ここまで
#===========================================
$rsi = {} if $rsi == nil
$rsi["回復魔力パラメーター追加"] = true
module RPG
class BaseItem
def hspi_memo
note.each_line { |line|
case line
when /回復魔力装備補正:(\-?\d+)/i ; return $1.to_i
end
}
return 0
end
end
class Item < UsableItem
def hspi_point
note.each_line { |line|
case line
when /回復魔力変化量:(\d+)/i ; return $1.to_i
end
}
return 0
end
end
class Weapon < BaseItem
def hspi
return hspi_memo
end
end
class Armor < BaseItem
def hspi
return hspi_memo
end
end
class State
def hspi_rate
note.each_line { |line|
case line
when /回復魔力変化率:(\d+)/i ; return $1.to_i
end
}
return 100
end
end
class Actor
include Rokan::Heal_spi_Plas
def hspi_parameter(level)
return HSG[id] != nil ? HSG[id][level - 1] : @parameters[4,level]
end
end
class Enemy
def hspi
note.each_line { |line|
case line
when /回復魔力値設定:(\d+)/i ; return $1.to_i
end
}
return spi
end
end
end
module Vocab
def self.hspi
return Rokan::Heal_spi_Plas::HSN
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● インクルード Rokan::Heal_spi_Plas
#--------------------------------------------------------------------------
include Rokan::Heal_spi_Plas
#--------------------------------------------------------------------------
# ● 能力値に加算する値をクリア
#--------------------------------------------------------------------------
alias heal_spi_plas clear_extra_values
def clear_extra_values
heal_spi_plas
@hspi_plus = 0
end
#--------------------------------------------------------------------------
# ● 回復魔力の取得
#--------------------------------------------------------------------------
def hspi
n = [[base_hspi + @hspi_plus, 1].max, HSM].min
for state in states do n *= state.hspi_rate / 100.0 end
n = [[Integer(n), 1].max, HSM].min
return n
end
#--------------------------------------------------------------------------
# ● 回復魔力の設定
#--------------------------------------------------------------------------
def hspi=(new_hspi)
@hspi_plus += new_hspi - self.hspi
@hspi_plus = [[@hspi_plus, -1 * HSM].max, HSM].min
end
#--------------------------------------------------------------------------
# ● アイテムの成長効果適用
#--------------------------------------------------------------------------
alias heal_spi_items item_growth_effect
def item_growth_effect(user, item)
@hspi_plus += item.hspi_point
heal_spi_items(user, item)
end
#--------------------------------------------------------------------------
# ● スキルまたはアイテムによるダメージ計算 ※再定義
#--------------------------------------------------------------------------
def make_obj_damage_value(user, obj)
damage = obj.base_damage # 基本ダメージを取得
if damage > 0 # ダメージが正の数
damage += user.atk * 4 * obj.atk_f / 100 # 打撃関係度: 使用者
damage += user.spi * 2 * obj.spi_f / 100 # 精神関係度: 使用者
unless obj.ignore_defense # 防御力無視以外
damage -= self.def * 2 * obj.atk_f / 100 # 打撃関係度: 対象者
damage -= self.mdef * 1 * obj.spi_f / 100 # 精神関係度: 対象者
end
damage = 0 if damage < 0 # マイナスなら 0 に
elsif damage < 0 # ダメージが負の数
damage -= user.atk * 4 * obj.atk_f / 100 # 打撃関係度: 使用者
damage -= user.hspi * 2 * obj.spi_f / 100 # 回復魔力での計算
end
damage *= elements_max_rate(obj.element_set) # 属性修正
damage /= 100
damage = apply_variance(damage, obj.variance) # 分散
damage = apply_guard(damage) # 防御修正
if $rsi["2タイプガードコマンド"]
obj == nil or obj.physical_attack ?
damage = p_apply_guard(damage) : damage = m_apply_guard(damage)
end
if obj.damage_to_mp
@mp_damage = damage # MP にダメージ
else
@hp_damage = damage # HP にダメージ
end
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 基本回復魔力の取得
#--------------------------------------------------------------------------
def base_hspi
n = actor.hspi_parameter(@level)
for item in equips.compact do n += item.hspi end
return n
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 基本回復魔力の取得
#--------------------------------------------------------------------------
def base_hspi
return enemy.hspi
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 能力値の描画 ※再定義
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = Vocab::atk
parameter_value = actor.atk
when 1
parameter_name = Vocab::def
parameter_value = actor.def
when 2
parameter_name = Vocab::spi
parameter_value = actor.spi
when 3
parameter_name = Vocab::agi
parameter_value = actor.agi
when 4
parameter_name = Vocab::mdef
parameter_value = actor.mdef
when 5
parameter_name = Vocab::hspi
parameter_value = actor.hspi
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
end
end
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# ● 能力値の描画 ※再定義
#--------------------------------------------------------------------------
def draw_parameters(x, y)
draw_actor_parameter(@actor, x, y + WLH * 0, 0)
draw_actor_parameter(@actor, x, y + WLH * 1, 1)
draw_actor_parameter(@actor, x, y + WLH * 2, 2)
draw_actor_parameter(@actor, x, y + WLH * 3, 4)
draw_actor_parameter(@actor, x, y + WLH * 4, 3)
draw_actor_parameter(@actor, x, y + WLH * 5, 5)
end
end
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化 ※再定義
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(x, y, 208, WLH * 7 + 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ ※再定義
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_parameter(0, WLH * 1, 0)
draw_parameter(0, WLH * 2, 1)
draw_parameter(0, WLH * 3, 2)
draw_parameter(0, WLH * 4, 4)
draw_parameter(0, WLH * 5, 3)
draw_parameter(0, WLH * 6, 5)
end
#--------------------------------------------------------------------------
# ● 装備変更後の能力値設定 ※再定義
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_def, new_spi, new_agi, new_mdef, new_hspi)
if @new_atk != new_atk or @new_def != new_def or
@new_spi != new_spi or @new_agi != new_agi or
@new_mdef != new_mdef or @new_hspi != new_hspi
@new_atk = new_atk
@new_def = new_def
@new_spi = new_spi
@new_agi = new_agi
@new_mdef = new_mdef
@new_hspi = new_hspi
refresh
end
end
#--------------------------------------------------------------------------
# ● 能力値の描画 ※再定義
#--------------------------------------------------------------------------
def draw_parameter(x, y, type)
case type
when 0
name = Vocab::atk
value = @actor.atk
new_value = @new_atk
when 1
name = Vocab::def
value = @actor.def
new_value = @new_def
when 2
name = Vocab::spi
value = @actor.spi
new_value = @new_spi
when 3
name = Vocab::agi
value = @actor.agi
new_value = @new_agi
when 4
name = Vocab::mdef
value = @actor.mdef
new_value = @new_mdef
when 5
name = Vocab::hspi
value = @actor.hspi
new_value = @new_hspi
end
self.contents.font.color = system_color
self.contents.draw_text(x + 4, y, 80, WLH, name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 90, y, 30, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x + 122, y, 20, WLH, "→", 1)
if new_value != nil
self.contents.font.color = new_parameter_color(value, new_value)
self.contents.draw_text(x + 142, y, 30, WLH, new_value, 2)
end
end
end
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias equip_window_reset start
def start
equip_window_reset
@equip_window.height = 176
end
#--------------------------------------------------------------------------
# ● ステータスウィンドウの更新 ※再定義
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil, nil, nil)
elsif @item_window.active
temp_actor = @actor.clone
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
new_mdef = temp_actor.mdef
new_hspi = temp_actor.hspi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi, new_mdef, new_hspi)
end
@status_window.update
end
#--------------------------------------------------------------------------
# ● アイテムウィンドウの作成
#--------------------------------------------------------------------------
def create_item_windows
@item_windows = []
for i in 0...EQUIP_TYPE_MAX
@item_windows[i] = Window_EquipItem.new(0, 208 + 24, 544, 208 - 24, @actor, i)
@item_windows[i].help_window = @help_window
@item_windows[i].visible = (@equip_index == i)
@item_windows[i].y = 208 + 24
@item_windows[i].height = 208 - 24
@item_windows[i].active = false
@item_windows[i].index = -1
end
end
end
最終更新:2010年09月24日 19:53