# ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # # 防具类追加 # # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ module RPG class Armor def name name = @name.split(/,/)[0] return name != nil ? name : '' end def kind kind = @name.split(/,/)[1] return kind != nil ? kind.to_i : @kind end end end # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # # Game_Actor添加新的防具ID,并对相关方法修正 # # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ class Game_Actor < Game_Battler attr_reader :armor5_id # 项链 ID attr_reader :armor6_id # 手镯 ID #-------------------------------------------------------------------------- # ● 设置 # actor_id : 角色 ID #-------------------------------------------------------------------------- alias old_setup setup def setup(actor_id) old_setup(actor_id) @armor5_id = 0 @armor6_id = 0 update_auto_state(nil, $data_armors[@armor5_id]) update_auto_state(nil, $data_armors[@armor6_id]) end #-------------------------------------------------------------------------- # ● 取得属性修正值 # element_id : 属性 ID #-------------------------------------------------------------------------- def element_rate(element_id) # 获取对应属性有效度的数值 table = [0,200,150,100,50,0,-100] result = table[$data_classes[@class_id].element_ranks[element_id]] # 防具能防御本属性的情况下效果减半 for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id, @armor5_id, @armor6_id] armor = $data_armors[i] if armor != nil and armor.guard_element_set.include?(element_id) result /= 2 end end # 状态能防御本属性的情况下效果减半 for i in @states if $data_states[i].guard_element_set.include?(element_id) result /= 2 end end # 过程结束 return result end #-------------------------------------------------------------------------- # ● 判定防御属性 # state_id : 属性 ID #-------------------------------------------------------------------------- def state_guard?(state_id) for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id, @armor5_id, @armor6_id] armor = $data_armors[i] if armor != nil if armor.guard_state_set.include?(state_id) return true end end end return false end #-------------------------------------------------------------------------- # ● 获取基本力量 #-------------------------------------------------------------------------- def base_str n = $data_actors[@actor_id].parameters[2, @level] weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] n += weapon != nil ? weapon.str_plus : 0 n += armor1 != nil ? armor1.str_plus : 0 n += armor2 != nil ? armor2.str_plus : 0 n += armor3 != nil ? armor3.str_plus : 0 n += armor4 != nil ? armor4.str_plus : 0 n += armor5 != nil ? armor5.str_plus : 0 n += armor6 != nil ? armor6.str_plus : 0 return [[n, 1].max, 999].min end #-------------------------------------------------------------------------- # ● 获取基本灵巧 #-------------------------------------------------------------------------- def base_dex n = $data_actors[@actor_id].parameters[3, @level] weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] n += weapon != nil ? weapon.dex_plus : 0 n += armor1 != nil ? armor1.dex_plus : 0 n += armor2 != nil ? armor2.dex_plus : 0 n += armor3 != nil ? armor3.dex_plus : 0 n += armor4 != nil ? armor4.dex_plus : 0 n += armor5 != nil ? armor5.dex_plus : 0 n += armor6 != nil ? armor6.dex_plus : 0 return [[n, 1].max, 999].min end #-------------------------------------------------------------------------- # ● 获取基本速度 #-------------------------------------------------------------------------- def base_agi n = $data_actors[@actor_id].parameters[4, @level] weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] n += weapon != nil ? weapon.agi_plus : 0 n += armor1 != nil ? armor1.agi_plus : 0 n += armor2 != nil ? armor2.agi_plus : 0 n += armor3 != nil ? armor3.agi_plus : 0 n += armor4 != nil ? armor4.agi_plus : 0 n += armor5 != nil ? armor5.agi_plus : 0 n += armor6 != nil ? armor6.agi_plus : 0 return [[n, 1].max, 999].min end #-------------------------------------------------------------------------- # ● 获取基本魔力 #-------------------------------------------------------------------------- def base_int n = $data_actors[@actor_id].parameters[5, @level] weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] n += weapon != nil ? weapon.int_plus : 0 n += armor1 != nil ? armor1.int_plus : 0 n += armor2 != nil ? armor2.int_plus : 0 n += armor3 != nil ? armor3.int_plus : 0 n += armor4 != nil ? armor4.int_plus : 0 n += armor5 != nil ? armor5.int_plus : 0 n += armor6 != nil ? armor6.int_plus : 0 return [[n, 1].max, 999].min end #-------------------------------------------------------------------------- # ● 获取基本物理防御 #-------------------------------------------------------------------------- def base_pdef weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] pdef1 = weapon != nil ? weapon.pdef : 0 pdef2 = armor1 != nil ? armor1.pdef : 0 pdef3 = armor2 != nil ? armor2.pdef : 0 pdef4 = armor3 != nil ? armor3.pdef : 0 pdef5 = armor4 != nil ? armor4.pdef : 0 pdef6 = armor5 != nil ? armor5.pdef : 0 pdef7 = armor6 != nil ? armor6.pdef : 0 return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + pdef6 + pdef7 end #-------------------------------------------------------------------------- # ● 获取基本魔法防御 #-------------------------------------------------------------------------- def base_mdef weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] mdef1 = weapon != nil ? weapon.mdef : 0 mdef2 = armor1 != nil ? armor1.mdef : 0 mdef3 = armor2 != nil ? armor2.mdef : 0 mdef4 = armor3 != nil ? armor3.mdef : 0 mdef5 = armor4 != nil ? armor4.mdef : 0 mdef6 = armor5 != nil ? armor5.mdef : 0 mdef7 = armor6 != nil ? armor6.mdef : 0 return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 + mdef6 + mdef7 end #-------------------------------------------------------------------------- # ● 获取基本回避修正 #-------------------------------------------------------------------------- def base_eva armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] armor5 = $data_armors[@armor5_id] armor6 = $data_armors[@armor6_id] eva1 = armor1 != nil ? armor1.eva : 0 eva2 = armor2 != nil ? armor2.eva : 0 eva3 = armor3 != nil ? armor3.eva : 0 eva4 = armor4 != nil ? armor4.eva : 0 eva5 = armor5 != nil ? armor5.eva : 0 eva6 = armor6 != nil ? armor6.eva : 0 return eva1 + eva2 + eva3 + eva4 + eva5 + eva6 end #-------------------------------------------------------------------------- # ● 装备固定判定 # equip_type : 装备类型 #-------------------------------------------------------------------------- def equip_fix?(equip_type) case equip_type when 0 # 武器 return $data_actors[@actor_id].weapon_fix when 1 # 盾 return $data_actors[@actor_id].armor1_fix when 2 # 头 return $data_actors[@actor_id].armor2_fix when 3 # 身体 return $data_actors[@actor_id].armor3_fix when 4 # 装饰品 return $data_actors[@actor_id].armor4_fix end return false end #-------------------------------------------------------------------------- # ● 变更装备 # equip_type : 装备类型 # id : 武器 or 防具 ID (0 为解除装备) #-------------------------------------------------------------------------- def equip(equip_type, id) case equip_type when 0 # 武器 if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) @weapon_id = id $game_party.lose_weapon(id, 1) end when 1 # 盾 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor1_id], $data_armors[id]) $game_party.gain_armor(@armor1_id, 1) @armor1_id = id $game_party.lose_armor(id, 1) end when 2 # 头 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor2_id], $data_armors[id]) $game_party.gain_armor(@armor2_id, 1) @armor2_id = id $game_party.lose_armor(id, 1) end when 3 # 身体 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor3_id], $data_armors[id]) $game_party.gain_armor(@armor3_id, 1) @armor3_id = id $game_party.lose_armor(id, 1) end when 4 # 装饰品 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor4_id], $data_armors[id]) $game_party.gain_armor(@armor4_id, 1) @armor4_id = id $game_party.lose_armor(id, 1) end when 5 # 项链 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor5_id], $data_armors[id]) $game_party.gain_armor(@armor5_id, 1) @armor5_id = id $game_party.lose_armor(id, 1) end when 6 # 手镯 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor6_id], $data_armors[id]) $game_party.gain_armor(@armor6_id, 1) @armor6_id = id $game_party.lose_armor(id, 1) end end end #-------------------------------------------------------------------------- # ● 更改职业 ID # class_id : 新的职业 ID #-------------------------------------------------------------------------- def class_id=(class_id) if $data_classes[class_id] != nil @class_id = class_id # 避开无法装备的物品 unless equippable?($data_weapons[@weapon_id]) equip(0, 0) end unless equippable?($data_armors[@armor1_id]) equip(1, 0) end unless equippable?($data_armors[@armor2_id]) equip(2, 0) end unless equippable?($data_armors[@armor3_id]) equip(3, 0) end unless equippable?($data_armors[@armor4_id]) equip(4, 0) end unless equippable?($data_armors[@armor5_id]) equip(5, 0) end unless equippable?($data_armors[@armor6_id]) equip(6, 0) end end end end # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # # Window_Base美化,增加属性增减颜色,及全能力值描绘 # # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ # 游戏中全部窗口的超级类。 #============================================================================== class Window_Base < Window ################## 属性增减颜色 ############################## def up_color return Color.new(255, 0, 0) end def down_color return Color.new(0, 255, 0) end #-------------------------------------------------------------------------- # ● 描绘能力值 # actor : 角色 # x : 描画目标 X 坐标 # y : 描画目标 Y 坐标 # type : 能力值种类 (0~6) #-------------------------------------------------------------------------- def draw_actor_parameter(actor, x, y, type) case type when 0 parameter_name = $data_system.words.atk parameter_value = actor.atk when 1 parameter_name = $data_system.words.pdef parameter_value = actor.pdef when 2 parameter_name = $data_system.words.mdef parameter_value = actor.mdef when 3 parameter_name = $data_system.words.str parameter_value = actor.str when 4 parameter_name = $data_system.words.dex parameter_value = actor.dex when 5 parameter_name = $data_system.words.agi parameter_value = actor.agi when 6 parameter_name = $data_system.words.int parameter_value = actor.int when 7 parameter_name = "回避" parameter_value = actor.eva end self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2) end end # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # # 装备窗口美化,全能力值描绘并追加新的防具装备栏 # # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ #============================================================================== # ■ Window_EquipRight #------------------------------------------------------------------------------ # 装备画面、显示角色现在装备的物品的窗口。 #============================================================================== class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # ● 初始化对像 # actor : 角色 #-------------------------------------------------------------------------- def initialize(actor) super(272, 64, 368, 256) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh self.index = 0 end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) @data.push($data_armors[@actor.armor2_id]) @data.push($data_armors[@actor.armor3_id]) @data.push($data_armors[@actor.armor4_id]) @data.push($data_armors[@actor.armor5_id]) @data.push($data_armors[@actor.armor6_id]) @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1) self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2) self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3) self.contents.draw_text(4, 32 * 4, 92, 32, $data_system.words.armor4) self.contents.draw_text(4, 32 * 5, 92, 32, "法器") self.contents.draw_text(4, 32 * 6, 92, 32, "称号") draw_item_name(@data[0], 92, 32 * 0) draw_item_name(@data[1], 92, 32 * 1) draw_item_name(@data[2], 92, 32 * 2) draw_item_name(@data[3], 92, 32 * 3) draw_item_name(@data[4], 92, 32 * 4) draw_item_name(@data[5], 92, 32 * 5) draw_item_name(@data[6], 92, 32 * 6) end end #============================================================================== # ■ Window_EquipLeft #------------------------------------------------------------------------------ # 装备画面的、显示角色能力值变化的窗口。 #============================================================================== class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # ● 初始化对像 # actor : 角色 #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 272, 416) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 4, 32) draw_actor_parameter(@actor, 4, 64, 0) draw_actor_parameter(@actor, 4, 96, 1) draw_actor_parameter(@actor, 4, 128, 2) draw_actor_parameter(@actor, 4, 160, 7) draw_actor_parameter(@actor, 4, 192, 3) draw_actor_parameter(@actor, 4, 224, 4) draw_actor_parameter(@actor, 4, 256, 5) draw_actor_parameter(@actor, 4, 288, 6) if @new_atk != nil self.contents.font.color = system_color self.contents.draw_text(160, 64, 40, 32, "→", 1) self.contents.font.color = @new_atk>@actor.atk ? up_color : down_color self.contents.font.color = normal_color if @new_atk == @actor.atk self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2) end if @new_pdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 96, 40, 32, "→", 1) self.contents.font.color = @new_pdef>@actor.pdef ? up_color : down_color self.contents.font.color = normal_color if @new_pdef == @actor.pdef self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2) end if @new_mdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 128, 40, 32, "→", 1) self.contents.font.color = @new_mdef>@actor.mdef ? up_color : down_color self.contents.font.color = normal_color if @new_mdef == @actor.mdef self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2) end if @new_eva != nil self.contents.font.color = system_color self.contents.draw_text(160, 160, 40, 32, "→", 1) self.contents.font.color = @new_eva>@actor.eva ? up_color : down_color self.contents.font.color = normal_color if @new_eva == @actor.eva self.contents.draw_text(200, 160, 36, 32, @new_eva.to_s, 2) end if @new_str != nil self.contents.font.color = system_color self.contents.draw_text(160, 192, 40, 32, "→", 1) self.contents.font.color = @new_str>@actor.str ? up_color : down_color self.contents.font.color = normal_color if @new_str == @actor.str self.contents.draw_text(200, 192, 36, 32, @new_str.to_s, 2) end if @new_dex != nil self.contents.font.color = system_color self.contents.draw_text(160, 224, 40, 32, "→", 1) self.contents.font.color = @new_dex>@actor.dex ? up_color : down_color self.contents.font.color = normal_color if @new_dex == @actor.dex self.contents.draw_text(200, 224, 36, 32, @new_dex.to_s, 2) end if @new_agi != nil self.contents.font.color = system_color self.contents.draw_text(160, 256, 40, 32, "→", 1) self.contents.font.color = @new_agi>@actor.agi ? up_color : down_color self.contents.font.color = normal_color if @new_agi == @actor.agi self.contents.draw_text(200, 256, 36, 32, @new_agi.to_s, 2) end if @new_int != nil self.contents.font.color = system_color self.contents.draw_text(160, 288, 40, 32, "→", 1) self.contents.font.color = @new_int>@actor.int ? up_color : down_color self.contents.font.color = normal_color if @new_int == @actor.int self.contents.draw_text(200, 288, 36, 32, @new_int.to_s, 2) end end #-------------------------------------------------------------------------- # ● 变更装备后的能力值设置 # new_atk : 变更装备后的攻击力 # new_pdef : 变更装备后的物理防御 # new_mdef : 变更装备后的魔法防御 #-------------------------------------------------------------------------- def set_new_parameters(new_atk, new_pdef, new_mdef, new_eva, new_str, new_dex, new_agi, new_int) if @new_atk != new_atk or @new_pdef !=new_pdef or @new_mdef != new_mdef or @new_eva != new_eva or @new_str != new_str or @new_dex !=new_dex or @new_agi != new_agi or @new_int != new_int @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef @new_eva = new_eva @new_str = new_str @new_dex = new_dex @new_agi = new_agi @new_int = new_int refresh end end end #============================================================================== # ■ Window_EquipItem #------------------------------------------------------------------------------ # 装备画面、显示浏览变更装备的候补物品的窗口。 #============================================================================== class Window_EquipItem < Window_Selectable #-------------------------------------------------------------------------- # ● 初始化对像 # actor : 角色 # equip_type : 装备部位 (0~3) #-------------------------------------------------------------------------- def initialize(actor, equip_type) super(272, 320, 368, 160) @actor = actor @equip_type = equip_type @column_max = 1 refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● 项目的描绘 # index : 项目符号 #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] x = 4 y = index * 32 case item when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end end class Scene_Equip #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main @menu_com = Sprite.new @menu_com.bitmap = RPG::Cache.picture("装备.png") # 获取角色 @actor = $game_party.actors[@actor_index] # 生成窗口 @help_window = Window_Movement_Help.new @left_window = Window_EquipLeft.new(@actor) @right_window = Window_EquipRight.new(@actor) @item_window1 = Window_EquipItem.new(@actor, 0) @item_window2 = Window_EquipItem.new(@actor, 1) @item_window3 = Window_EquipItem.new(@actor, 2) @item_window4 = Window_EquipItem.new(@actor, 3) @item_window5 = Window_EquipItem.new(@actor, 4) @item_window6 = Window_EquipItem.new(@actor, 5) @item_window7 = Window_EquipItem.new(@actor, 6) @help_window.opacity = 0 @item_window1.opacity = 0 @item_window2.opacity = 0 @item_window3.opacity = 0 @item_window4.opacity = 0 @item_window5.opacity = 0 @item_window6.opacity = 0 @item_window7.opacity = 0 @left_window.opacity = 0 @right_window.opacity = 0 # 关联帮助窗口 @right_window.help_window = @help_window @item_window1.help_window = @help_window @item_window2.help_window = @help_window @item_window3.help_window = @help_window @item_window4.help_window = @help_window @item_window5.help_window = @help_window @item_window6.help_window = @help_window @item_window7.help_window = @help_window # 设置光标位置 @right_window.index = @equip_index refresh # 执行过渡 Graphics.transition # 主循环 loop do # 刷新游戏画面 Graphics.update # 刷新输入信息 Input.update # 刷新画面 update # 如果画面切换的话的就中断循环 if $scene != self break end end # 准备过渡 Graphics.freeze @menu_com.bitmap.dispose if @menu_com.bitmap @menu_com.dispose # 释放窗口 @help_window.dispose @left_window.dispose @right_window.dispose @item_window1.dispose @item_window2.dispose @item_window3.dispose @item_window4.dispose @item_window5.dispose @item_window6.dispose @item_window7.dispose end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh # 设置物品窗口的可视状态 @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) @item_window6.visible = (@right_window.index == 5) @item_window7.visible = (@right_window.index == 6) # 获取当前装备中的物品 item1 = @right_window.item # 设置当前的物品窗口到 @item_window case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 when 5 @item_window = @item_window6 when 6 @item_window = @item_window7 end # 右窗口被激活的情况下 if @right_window.active # 删除变更装备后的能力 ############################################################### @left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil) end # 物品窗口被激活的情况下 if @item_window.active # 获取现在选中的物品 item2 = @item_window.item # 变更装备 last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) ############################################################### # 获取变更装备后的能力值 new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef new_eva = @actor.eva new_str = @actor.str new_dex = @actor.dex new_agi = @actor.agi new_int = @actor.int # 返回到装备 @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp # 描画左窗口 ############################################################### @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_eva, new_str, new_dex, new_agi, new_int) ############################################################### end end end # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ # # 商店购买窗口美化,增加对新装备位置的描述 # # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ #============================================================================== # ■ Window_ShopStatus #------------------------------------------------------------------------------ # 商店画面、显示物品所持数与角色装备的窗口。 #============================================================================== class Window_ShopStatus < Window_Base #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear if @item == nil return end case @item when RPG::Item number = $game_party.item_number(@item.id) when RPG::Weapon number = $game_party.weapon_number(@item.id) when RPG::Armor number = $game_party.armor_number(@item.id) end self.contents.font.color = system_color self.contents.draw_text(4, 0, 200, 32, "持有") self.contents.font.color = normal_color self.contents.draw_text(180, 0, 32, 32, number.to_s, 2) if @item.is_a?(RPG::Item) return end # 添加装备品信息 for i in 0...$game_party.actors.size # 获取角色 actor = $game_party.actors[i] # 可以装备为普通文字颜色、不能装备设置为无效文字颜色 if actor.equippable?(@item) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end # 描绘角色名字 self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name) # 获取当前的装备品 if @item.is_a?(RPG::Weapon) item1 = $data_weapons[actor.weapon_id] elsif @item.kind == 0 item1 = $data_armors[actor.armor1_id] elsif @item.kind == 1 item1 = $data_armors[actor.armor2_id] elsif @item.kind == 2 item1 = $data_armors[actor.armor3_id] elsif @item.kind == 3 item1 = $data_armors[actor.armor4_id] elsif @item.kind == 4 item1 = $data_armors[actor.armor5_id] else# if @item.kind == 5 item1 = $data_armors[actor.armor6_id] end # 可以装备的情况 if actor.equippable?(@item) # 武器的情况 if @item.is_a?(RPG::Weapon) atk1 = item1 != nil ? item1.atk : 0 atk2 = @item != nil ? @item.atk : 0 change = atk2 - atk1 end # 防具的情况 if @item.is_a?(RPG::Armor) pdef1 = item1 != nil ? item1.pdef : 0 mdef1 = item1 != nil ? item1.mdef : 0 pdef2 = @item != nil ? @item.pdef : 0 mdef2 = @item != nil ? @item.mdef : 0 change = pdef2 - pdef1 + mdef2 - mdef1 end # 描绘能力值变化 self.contents.draw_text(90, 64 + 64 * i, 112, 32, sprintf("%+d", change), 2) end # 描绘物品 if item1 != nil x = 4 y = 64 + 64 * i + 32 bitmap = RPG::Cache.icon(item1.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item1.name) end end end end
#装备附加HP SP #使用方法 给装备名后用“,”追加数值 #例如: 铜剑,500,200 那个这个武器会增加500点HP和200点SP #顺序不可改变 如果只需要加 HP 不需要再追加 SP 例如 铜剑,500 只会增加500HP #如果只需要增加SP 那么HP留0即可 例如 铜剑,0, 200 只增加200点SP module RPG class Weapon def description return @description.split(/,/)[0] end def hp return @description.split(/,/)[1] == nil ? 0 : @description.split(/,/)[1].to_i end def sp return @description.split(/,/)[2] == nil ? 0 : @description.split(/,/)[2].to_i end end class Armor def description return @description.split(/,/)[0] end def hp return @description.split(/,/)[1] == nil ? 0 : @description.split(/,/)[1].to_i end def sp return @description.split(/,/)[2] == nil ? 0 : @description.split(/,/)[2].to_i end end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 获取基本 MaxHP #-------------------------------------------------------------------------- def base_maxhp a = $data_actors[@actor_id].parameters[0, @level] n = 0 n += $data_weapons[@weapon_id].hp if $data_weapons[@weapon_id] != nil n += $data_armors[@armor1_id].hp if $data_armors[@armor1_id] != nil n += $data_armors[@armor2_id].hp if $data_armors[@armor2_id] != nil n += $data_armors[@armor3_id].hp if $data_armors[@armor3_id] != nil n += $data_armors[@armor4_id].hp if $data_armors[@armor4_id] != nil n += $data_armors[@armor5_id].hp if $data_armors[@armor5_id] != nil n += $data_armors[@armor6_id].hp if $data_armors[@armor6_id] != nil return a + n end #-------------------------------------------------------------------------- # ● 获取基本 MaxSP #-------------------------------------------------------------------------- def base_maxsp a = $data_actors[@actor_id].parameters[1, @level] n = 0 n += $data_weapons[@weapon_id].sp if $data_weapons[@weapon_id] != nil n += $data_armors[@armor1_id].sp if $data_armors[@armor1_id] != nil n += $data_armors[@armor2_id].sp if $data_armors[@armor2_id] != nil n += $data_armors[@armor3_id].sp if $data_armors[@armor3_id] != nil n += $data_armors[@armor4_id].sp if $data_armors[@armor4_id] != nil n += $data_armors[@armor5_id].hp if $data_armors[@armor5_id] != nil n += $data_armors[@armor6_id].hp if $data_armors[@armor6_id] != nil return a + n end alias equip_hp_sp_old_dl equip def equip(equip_type, id) equip_hp_sp_old_dl(equip_type, id) @hp = maxhp if @hp > maxhp @sp = maxsp if @sp > maxsp end end
QQ截图20150410010421.png (16.73 KB, 下载次数: 7)
测试读取存档没问题,但是新开的话会出现这个提示。
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |