※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

回復魔力パラメータ追加

以下よりコード
最下層までコピってみてください。


=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 : 新規
     
     
   元素材 ろかん様   http://kaisouryouiki.web.fc2.com/
   改変者 クルーク   http://www35.atwiki.jp/batofi28/
=end

#===========================================
# 設定箇所
#===========================================
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