设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3002|回复: 3
打印 上一主题 下一主题

[原创发布] 【RM原设定修改】改变原始攻防设定

[复制链接]

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

跳转到指定楼层
1
发表于 2010-12-18 17:05:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 忧雪の伤 于 2010-12-24 20:17 编辑


# 解决了原RM设定的无装备场合0攻击力0防御力问题
# 不同的人不同的无装备攻击防御无解决
# 修改了Game_Battler 1,Game_Actor
# 请脚本内搜查忧雪の伤
# 留着大家自己处理

# 无图

# 附件:

改变原始攻击力设定.rar (742.27 KB, 下载次数: 359)

# 脚本
# Game_Battler 1(攻击力部分)

  1. #==============================================================================
  2. # ☆ 忧雪の伤制作,转载时请保留。
  3. #==============================================================================
  4. #==============================================================================
  5. # ■ Game_Battler (分割定义 1)
  6. #------------------------------------------------------------------------------
  7. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  8. # 超级类来使用。
  9. #==============================================================================

  10. class Game_Battler
  11.   #--------------------------------------------------------------------------
  12.   # ● 定义实例变量
  13.   #--------------------------------------------------------------------------
  14.   attr_reader   :battler_name             # 战斗者 文件名
  15.   attr_reader   :battler_hue              # 战斗者 色相
  16.   attr_reader   :hp                       # HP
  17.   attr_reader   :sp                       # SP
  18.   attr_reader   :states                   # 状态
  19.   attr_accessor :hidden                   # 隐藏标志
  20.   attr_accessor :immortal                 # 不死身标志
  21.   attr_accessor :damage_pop               # 显示伤害标志
  22.   attr_accessor :damage                   # 伤害值
  23.   attr_accessor :critical                 # 会心一击标志
  24.   attr_accessor :animation_id             # 动画 ID
  25.   attr_accessor :animation_hit            # 动画 击中标志
  26.   attr_accessor :white_flash              # 白色屏幕闪烁标志
  27.   attr_accessor :blink                    # 闪烁标志
  28.   #--------------------------------------------------------------------------
  29.   # ● 初始化对像
  30.   #--------------------------------------------------------------------------
  31.   def initialize
  32.     @battler_name = ""
  33.     @battler_hue = 0
  34.     @hp = 0
  35.     @sp = 0
  36.     @states = []
  37.     @states_turn = {}
  38.     @maxhp_plus = 0
  39.     @maxsp_plus = 0
  40.     @str_plus = 0
  41.     @dex_plus = 0
  42.     @agi_plus = 0
  43.     @int_plus = 0
  44.     @hidden = false
  45.     @immortal = false
  46.     @damage_pop = false
  47.     @damage = nil
  48.     @critical = false
  49.     @animation_id = 0
  50.     @animation_hit = false
  51.     @white_flash = false
  52.     @blink = false
  53.     @current_action = Game_BattleAction.new
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 获取 MaxHP
  57.   #--------------------------------------------------------------------------
  58.   def maxhp
  59.     n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
  60.     for i in @states
  61.       n *= $data_states[i].maxhp_rate / 100.0
  62.     end
  63.     n = [[Integer(n), 1].max, 999999].min
  64.     return n
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 获取 MaxSP
  68.   #--------------------------------------------------------------------------
  69.   def maxsp
  70.     n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min
  71.     for i in @states
  72.       n *= $data_states[i].maxsp_rate / 100.0
  73.     end
  74.     n = [[Integer(n), 0].max, 9999].min
  75.     return n
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 获取力量
  79.   #--------------------------------------------------------------------------
  80.   def str
  81.     n = [[base_str + @str_plus, 1].max, 999].min
  82.     for i in @states
  83.       n *= $data_states[i].str_rate / 100.0
  84.     end
  85.     n = [[Integer(n), 1].max, 999].min
  86.     return n
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取灵巧
  90.   #--------------------------------------------------------------------------
  91.   def dex
  92.     n = [[base_dex + @dex_plus, 1].max, 999].min
  93.     for i in @states
  94.       n *= $data_states[i].dex_rate / 100.0
  95.     end
  96.     n = [[Integer(n), 1].max, 999].min
  97.     return n
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 获取速度
  101.   #--------------------------------------------------------------------------
  102.   def agi
  103.     n = [[base_agi + @agi_plus, 1].max, 999].min
  104.     for i in @states
  105.       n *= $data_states[i].agi_rate / 100.0
  106.     end
  107.     n = [[Integer(n), 1].max, 999].min
  108.     return n
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 获取魔力
  112.   #--------------------------------------------------------------------------
  113.   def int
  114.     n = [[base_int + @int_plus, 1].max, 999].min
  115.     for i in @states
  116.       n *= $data_states[i].int_rate / 100.0
  117.     end
  118.     n = [[Integer(n), 1].max, 999].min
  119.     return n
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 设置 MaxHP
  123.   #     maxhp : 新的 MaxHP
  124.   #--------------------------------------------------------------------------
  125.   def maxhp=(maxhp)
  126.     @maxhp_plus += maxhp - self.maxhp
  127.     @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
  128.     @hp = [@hp, self.maxhp].min
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 设置 MaxSP
  132.   #     maxsp : 新的 MaxSP
  133.   #--------------------------------------------------------------------------
  134.   def maxsp=(maxsp)
  135.     @maxsp_plus += maxsp - self.maxsp
  136.     @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
  137.     @sp = [@sp, self.maxsp].min
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 设置力量
  141.   #     str : 新的力量
  142.   #--------------------------------------------------------------------------
  143.   def str=(str)
  144.     @str_plus += str - self.str
  145.     @str_plus = [[@str_plus, -999].max, 999].min
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 设置灵巧
  149.   #     dex : 新的灵巧
  150.   #--------------------------------------------------------------------------
  151.   def dex=(dex)
  152.     @dex_plus += dex - self.dex
  153.     @dex_plus = [[@dex_plus, -999].max, 999].min
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 设置速度
  157.   #     agi : 新的速度
  158.   #--------------------------------------------------------------------------
  159.   def agi=(agi)
  160.     @agi_plus += agi - self.agi
  161.     @agi_plus = [[@agi_plus, -999].max, 999].min
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 设置魔力
  165.   #     int : 新的魔力
  166.   #--------------------------------------------------------------------------
  167.   def int=(int)
  168.     @int_plus += int - self.int
  169.     @int_plus = [[@int_plus, -999].max, 999].min
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 获取命中率
  173.   #--------------------------------------------------------------------------
  174.   def hit
  175.     n = 100
  176.     for i in @states
  177.       n *= $data_states[i].hit_rate / 100.0
  178.     end
  179.     return Integer(n)
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 获取攻击力
  183.   #--------------------------------------------------------------------------
  184.   def atk
  185.     # 忧雪の伤
  186.     # 除了武器攻击外再加上等级*7.5的值,7.5可改
  187.     n = base_atk + 7.5 * @level
  188.     for i in @states
  189.       n *= $data_states[i].atk_rate / 100.0
  190.     end
  191.     return Integer(n)
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 获取物理防御
  195.   #--------------------------------------------------------------------------
  196.   def pdef
  197.     n = base_pdef
  198.     for i in @states
  199.       n *= $data_states[i].pdef_rate / 100.0
  200.     end
  201.     return Integer(n)
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 获取魔法防御
  205.   #--------------------------------------------------------------------------
  206.   def mdef
  207.     n = base_mdef
  208.     for i in @states
  209.       n *= $data_states[i].mdef_rate / 100.0
  210.     end
  211.     return Integer(n)
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 获取回避修正
  215.   #--------------------------------------------------------------------------
  216.   def eva
  217.     n = base_eva
  218.     for i in @states
  219.       n += $data_states[i].eva
  220.     end
  221.     return n
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ● 更改 HP
  225.   #     hp : 新的 HP
  226.   #--------------------------------------------------------------------------
  227.   def hp=(hp)
  228.     @hp = [[hp, maxhp].min, 0].max
  229.     # 解除附加的战斗不能状态
  230.     for i in 1...$data_states.size
  231.       if $data_states[i].zero_hp
  232.         if self.dead?
  233.           add_state(i)
  234.         else
  235.           remove_state(i)
  236.         end
  237.       end
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 更改 SP
  242.   #     sp : 新的 SP
  243.   #--------------------------------------------------------------------------
  244.   def sp=(sp)
  245.     @sp = [[sp, maxsp].min, 0].max
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 全回复
  249.   #--------------------------------------------------------------------------
  250.   def recover_all
  251.     @hp = maxhp
  252.     @sp = maxsp
  253.     for i in @states.clone
  254.       remove_state(i)
  255.     end
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 获取当前的动作
  259.   #--------------------------------------------------------------------------
  260.   def current_action
  261.     return @current_action
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 确定动作速度
  265.   #--------------------------------------------------------------------------
  266.   def make_action_speed
  267.     @current_action.speed = agi + rand(10 + agi / 4)
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 战斗不能判定
  271.   #--------------------------------------------------------------------------
  272.   def dead?
  273.     return (@hp == 0 and not @immortal)
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 存在判定
  277.   #--------------------------------------------------------------------------
  278.   def exist?
  279.     return (not @hidden and (@hp > 0 or @immortal))
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● HP 0 判定
  283.   #--------------------------------------------------------------------------
  284.   def hp0?
  285.     return (not @hidden and @hp == 0)
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ● 可以输入命令判定
  289.   #--------------------------------------------------------------------------
  290.   def inputable?
  291.     return (not @hidden and restriction <= 1)
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 可以行动判定
  295.   #--------------------------------------------------------------------------
  296.   def movable?
  297.     return (not @hidden and restriction < 4)
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 防御中判定
  301.   #--------------------------------------------------------------------------
  302.   def guarding?
  303.     return (@current_action.kind == 0 and @current_action.basic == 1)
  304.   end
  305.   #--------------------------------------------------------------------------
  306.   # ● 休止中判定
  307.   #--------------------------------------------------------------------------
  308.   def resting?
  309.     return (@current_action.kind == 0 and @current_action.basic == 3)
  310.   end
  311. end
  312. #==============================================================================
  313. # ☆ 忧雪の伤制作,转载时请保留。
  314. #==============================================================================
复制代码
# Game_Actor(防御力部分)

  1. #==============================================================================
  2. # ☆ 忧雪の伤制作,转载时请保留。
  3. #==============================================================================
  4. #==============================================================================
  5. # ■ Game_Actor
  6. #------------------------------------------------------------------------------
  7. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  8. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  9. #==============================================================================

  10. class Game_Actor < Game_Battler
  11.   #--------------------------------------------------------------------------
  12.   # ● 定义实例变量
  13.   #--------------------------------------------------------------------------
  14.   attr_reader   :name                     # 名称
  15.   attr_reader   :character_name           # 角色 文件名
  16.   attr_reader   :character_hue            # 角色 色相
  17.   attr_reader   :class_id                 # 职业 ID
  18.   attr_reader   :weapon_id                # 武器 ID
  19.   attr_reader   :armor1_id                # 盾 ID
  20.   attr_reader   :armor2_id                # 头防具 ID
  21.   attr_reader   :armor3_id                # 身体体防具 ID
  22.   attr_reader   :armor4_id                # 装饰品 ID
  23.   attr_reader   :level                    # 水平
  24.   attr_reader   :exp                      # EXP
  25.   attr_reader   :skills                   # 特技
  26.   #--------------------------------------------------------------------------
  27.   # ● 初始化对像
  28.   #     actor_id : 角色 ID
  29.   #--------------------------------------------------------------------------
  30.   def initialize(actor_id)
  31.     super()
  32.     setup(actor_id)
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 设置
  36.   #     actor_id : 角色 ID
  37.   #--------------------------------------------------------------------------
  38.   def setup(actor_id)
  39.     actor = $data_actors[actor_id]
  40.     @actor_id = actor_id
  41.     @name = actor.name
  42.     @character_name = actor.character_name
  43.     @character_hue = actor.character_hue
  44.     @battler_name = actor.battler_name
  45.     @battler_hue = actor.battler_hue
  46.     @class_id = actor.class_id
  47.     @weapon_id = actor.weapon_id
  48.     @armor1_id = actor.armor1_id
  49.     @armor2_id = actor.armor2_id
  50.     @armor3_id = actor.armor3_id
  51.     @armor4_id = actor.armor4_id
  52.     @level = actor.initial_level
  53.     @exp_list = Array.new(101)
  54.     make_exp_list
  55.     @exp = @exp_list[@level]
  56.     @skills = []
  57.     @hp = maxhp
  58.     @sp = maxsp
  59.     @states = []
  60.     @states_turn = {}
  61.     @maxhp_plus = 0
  62.     @maxsp_plus = 0
  63.     @str_plus = 0
  64.     @dex_plus = 0
  65.     @agi_plus = 0
  66.     @int_plus = 0
  67.     # 学会特技
  68.     for i in 1..@level
  69.       for j in $data_classes[@class_id].learnings
  70.         if j.level == i
  71.           learn_skill(j.skill_id)
  72.         end
  73.       end
  74.     end
  75.     # 刷新自动状态
  76.     update_auto_state(nil, $data_armors[@armor1_id])
  77.     update_auto_state(nil, $data_armors[@armor2_id])
  78.     update_auto_state(nil, $data_armors[@armor3_id])
  79.     update_auto_state(nil, $data_armors[@armor4_id])
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 获取角色 ID
  83.   #--------------------------------------------------------------------------
  84.   def id
  85.     return @actor_id
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 获取索引
  89.   #--------------------------------------------------------------------------
  90.   def index
  91.     return $game_party.actors.index(self)
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 计算 EXP
  95.   #--------------------------------------------------------------------------
  96.   def make_exp_list
  97.     actor = $data_actors[@actor_id]
  98.     @exp_list[1] = 0
  99.     pow_i = 2.4 + actor.exp_inflation / 100.0
  100.     for i in 2..100
  101.       if i > actor.final_level
  102.         @exp_list[i] = 0
  103.       else
  104.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  105.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  106.       end
  107.     end
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 取得属性修正值
  111.   #     element_id : 属性 ID
  112.   #--------------------------------------------------------------------------
  113.   def element_rate(element_id)
  114.     # 获取对应属性有效度的数值
  115.     table = [0,200,150,100,50,0,-100]
  116.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  117.     # 防具能防御本属性的情况下效果减半
  118.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  119.       armor = $data_armors[i]
  120.       if armor != nil and armor.guard_element_set.include?(element_id)
  121.         result /= 2
  122.       end
  123.     end
  124.     # 状态能防御本属性的情况下效果减半
  125.     for i in @states
  126.       if $data_states[i].guard_element_set.include?(element_id)
  127.         result /= 2
  128.       end
  129.     end
  130.     # 过程结束
  131.     return result
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 获取属性有效度
  135.   #--------------------------------------------------------------------------
  136.   def state_ranks
  137.     return $data_classes[@class_id].state_ranks
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 判定防御属性
  141.   #     state_id : 属性 ID
  142.   #--------------------------------------------------------------------------
  143.   def state_guard?(state_id)
  144.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  145.       armor = $data_armors[i]
  146.       if armor != nil
  147.         if armor.guard_state_set.include?(state_id)
  148.           return true
  149.         end
  150.       end
  151.     end
  152.     return false
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 获取普通攻击属性
  156.   #--------------------------------------------------------------------------
  157.   def element_set
  158.     weapon = $data_weapons[@weapon_id]
  159.     return weapon != nil ? weapon.element_set : []
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 获取普通攻击状态变化 (+)
  163.   #--------------------------------------------------------------------------
  164.   def plus_state_set
  165.     weapon = $data_weapons[@weapon_id]
  166.     return weapon != nil ? weapon.plus_state_set : []
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 获取普通攻击状态变化 (-)
  170.   #--------------------------------------------------------------------------
  171.   def minus_state_set
  172.     weapon = $data_weapons[@weapon_id]
  173.     return weapon != nil ? weapon.minus_state_set : []
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 获取 MaxHP
  177.   #--------------------------------------------------------------------------
  178.   def maxhp
  179.     n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
  180.     for i in @states
  181.       n *= $data_states[i].maxhp_rate / 100.0
  182.     end
  183.     n = [[Integer(n), 1].max, 9999].min
  184.     return n
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 获取基本 MaxHP
  188.   #--------------------------------------------------------------------------
  189.   def base_maxhp
  190.     return $data_actors[@actor_id].parameters[0, @level]
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 获取基本 MaxSP
  194.   #--------------------------------------------------------------------------
  195.   def base_maxsp
  196.     return $data_actors[@actor_id].parameters[1, @level]
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 获取基本力量
  200.   #--------------------------------------------------------------------------
  201.   def base_str
  202.     n = $data_actors[@actor_id].parameters[2, @level]
  203.     weapon = $data_weapons[@weapon_id]
  204.     armor1 = $data_armors[@armor1_id]
  205.     armor2 = $data_armors[@armor2_id]
  206.     armor3 = $data_armors[@armor3_id]
  207.     armor4 = $data_armors[@armor4_id]
  208.     n += weapon != nil ? weapon.str_plus : 0
  209.     n += armor1 != nil ? armor1.str_plus : 0
  210.     n += armor2 != nil ? armor2.str_plus : 0
  211.     n += armor3 != nil ? armor3.str_plus : 0
  212.     n += armor4 != nil ? armor4.str_plus : 0
  213.     return [[n, 1].max, 999].min
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 获取基本灵巧
  217.   #--------------------------------------------------------------------------
  218.   def base_dex
  219.     n = $data_actors[@actor_id].parameters[3, @level]
  220.     weapon = $data_weapons[@weapon_id]
  221.     armor1 = $data_armors[@armor1_id]
  222.     armor2 = $data_armors[@armor2_id]
  223.     armor3 = $data_armors[@armor3_id]
  224.     armor4 = $data_armors[@armor4_id]
  225.     n += weapon != nil ? weapon.dex_plus : 0
  226.     n += armor1 != nil ? armor1.dex_plus : 0
  227.     n += armor2 != nil ? armor2.dex_plus : 0
  228.     n += armor3 != nil ? armor3.dex_plus : 0
  229.     n += armor4 != nil ? armor4.dex_plus : 0
  230.     return [[n, 1].max, 999].min
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 获取基本速度
  234.   #--------------------------------------------------------------------------
  235.   def base_agi
  236.     n = $data_actors[@actor_id].parameters[4, @level]
  237.     weapon = $data_weapons[@weapon_id]
  238.     armor1 = $data_armors[@armor1_id]
  239.     armor2 = $data_armors[@armor2_id]
  240.     armor3 = $data_armors[@armor3_id]
  241.     armor4 = $data_armors[@armor4_id]
  242.     n += weapon != nil ? weapon.agi_plus : 0
  243.     n += armor1 != nil ? armor1.agi_plus : 0
  244.     n += armor2 != nil ? armor2.agi_plus : 0
  245.     n += armor3 != nil ? armor3.agi_plus : 0
  246.     n += armor4 != nil ? armor4.agi_plus : 0
  247.     return [[n, 1].max, 999].min
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 获取基本魔力
  251.   #--------------------------------------------------------------------------
  252.   def base_int
  253.     n = $data_actors[@actor_id].parameters[5, @level]
  254.     weapon = $data_weapons[@weapon_id]
  255.     armor1 = $data_armors[@armor1_id]
  256.     armor2 = $data_armors[@armor2_id]
  257.     armor3 = $data_armors[@armor3_id]
  258.     armor4 = $data_armors[@armor4_id]
  259.     n += weapon != nil ? weapon.int_plus : 0
  260.     n += armor1 != nil ? armor1.int_plus : 0
  261.     n += armor2 != nil ? armor2.int_plus : 0
  262.     n += armor3 != nil ? armor3.int_plus : 0
  263.     n += armor4 != nil ? armor4.int_plus : 0
  264.     return [[n, 1].max, 999].min
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 获取基本攻击力
  268.   #--------------------------------------------------------------------------
  269.   def base_atk
  270.     weapon = $data_weapons[@weapon_id]
  271.     return weapon != nil ? weapon.atk : 0
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 获取基本物理防御
  275.   #--------------------------------------------------------------------------
  276.   def base_pdef
  277.     weapon = $data_weapons[@weapon_id]
  278.     armor1 = $data_armors[@armor1_id]
  279.     armor2 = $data_armors[@armor2_id]
  280.     armor3 = $data_armors[@armor3_id]
  281.     armor4 = $data_armors[@armor4_id]
  282.     pdef1 = weapon != nil ? weapon.pdef : 0
  283.     pdef2 = armor1 != nil ? armor1.pdef : 0
  284.     pdef3 = armor2 != nil ? armor2.pdef : 0
  285.     pdef4 = armor3 != nil ? armor3.pdef : 0
  286.     pdef5 = armor4 != nil ? armor4.pdef : 0
  287.     # 忧雪の伤
  288.     # 除了装备加外再加上等级*6.5的值,6.5可改
  289.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + @level *6.8
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 获取基本魔法防御
  293.   #--------------------------------------------------------------------------
  294.   def base_mdef
  295.     weapon = $data_weapons[@weapon_id]
  296.     armor1 = $data_armors[@armor1_id]
  297.     armor2 = $data_armors[@armor2_id]
  298.     armor3 = $data_armors[@armor3_id]
  299.     armor4 = $data_armors[@armor4_id]
  300.     mdef1 = weapon != nil ? weapon.mdef : 0
  301.     mdef2 = armor1 != nil ? armor1.mdef : 0
  302.     mdef3 = armor2 != nil ? armor2.mdef : 0
  303.     mdef4 = armor3 != nil ? armor3.mdef : 0
  304.     mdef5 = armor4 != nil ? armor4.mdef : 0
  305.     # 忧雪の伤
  306.     # 除了装备加外再加上等级*6.5的值,6.5可改
  307.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 + @level *6.5
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 获取基本回避修正
  311.   #--------------------------------------------------------------------------
  312.   def base_eva
  313.     armor1 = $data_armors[@armor1_id]
  314.     armor2 = $data_armors[@armor2_id]
  315.     armor3 = $data_armors[@armor3_id]
  316.     armor4 = $data_armors[@armor4_id]
  317.     eva1 = armor1 != nil ? armor1.eva : 0
  318.     eva2 = armor2 != nil ? armor2.eva : 0
  319.     eva3 = armor3 != nil ? armor3.eva : 0
  320.     eva4 = armor4 != nil ? armor4.eva : 0
  321.     return eva1 + eva2 + eva3 + eva4
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 普通攻击 获取攻击方动画 ID
  325.   #--------------------------------------------------------------------------
  326.   def animation1_id
  327.     weapon = $data_weapons[@weapon_id]
  328.     return weapon != nil ? weapon.animation1_id : 0
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 普通攻击 获取对像方动画 ID
  332.   #--------------------------------------------------------------------------
  333.   def animation2_id
  334.     # 忧雪の伤
  335.     weapon = $data_weapons[@weapon_id]
  336.     # 改变了无装备无动画,改为了打击,可以更换
  337.     return weapon != nil ? weapon.animation2_id : 4
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 获取类名
  341.   #--------------------------------------------------------------------------
  342.   def class_name
  343.     return $data_classes[@class_id].name
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 获取 EXP 字符串
  347.   #--------------------------------------------------------------------------
  348.   def exp_s
  349.     return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 获取下一等级的 EXP 字符串
  353.   #--------------------------------------------------------------------------
  354.   def next_exp_s
  355.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 获取离下一等级还需的 EXP 字符串
  359.   #--------------------------------------------------------------------------
  360.   def next_rest_exp_s
  361.     return @exp_list[@level+1] > 0 ?
  362.       (@exp_list[@level+1] - @exp).to_s : "-------"
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 更新自动状态
  366.   #     old_armor : 卸下防具
  367.   #     new_armor : 装备防具
  368.   #--------------------------------------------------------------------------
  369.   def update_auto_state(old_armor, new_armor)
  370.     # 强制解除卸下防具的自动状态
  371.     if old_armor != nil and old_armor.auto_state_id != 0
  372.       remove_state(old_armor.auto_state_id, true)
  373.     end
  374.     # 强制附加装备防具的自动状态
  375.     if new_armor != nil and new_armor.auto_state_id != 0
  376.       add_state(new_armor.auto_state_id, true)
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 装备固定判定
  381.   #     equip_type : 装备类型
  382.   #--------------------------------------------------------------------------
  383.   def equip_fix?(equip_type)
  384.     case equip_type
  385.     when 0  # 武器
  386.       return $data_actors[@actor_id].weapon_fix
  387.     when 1  # 盾
  388.       return $data_actors[@actor_id].armor1_fix
  389.     when 2  # 头
  390.       return $data_actors[@actor_id].armor2_fix
  391.     when 3  # 身体
  392.       return $data_actors[@actor_id].armor3_fix
  393.     when 4  # 装饰品
  394.       return $data_actors[@actor_id].armor4_fix
  395.     end
  396.     return false
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 变更装备
  400.   #     equip_type : 装备类型
  401.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  402.   #--------------------------------------------------------------------------
  403.   def equip(equip_type, id)
  404.     case equip_type
  405.     when 0  # 武器
  406.       if id == 0 or $game_party.weapon_number(id) > 0
  407.         $game_party.gain_weapon(@weapon_id, 1)
  408.         @weapon_id = id
  409.         $game_party.lose_weapon(id, 1)
  410.       end
  411.     when 1  # 盾
  412.       if id == 0 or $game_party.armor_number(id) > 0
  413.         update_auto_state($data_armors[@armor1_id], $data_armors[id])
  414.         $game_party.gain_armor(@armor1_id, 1)
  415.         @armor1_id = id
  416.         $game_party.lose_armor(id, 1)
  417.       end
  418.     when 2  # 头
  419.       if id == 0 or $game_party.armor_number(id) > 0
  420.         update_auto_state($data_armors[@armor2_id], $data_armors[id])
  421.         $game_party.gain_armor(@armor2_id, 1)
  422.         @armor2_id = id
  423.         $game_party.lose_armor(id, 1)
  424.       end
  425.     when 3  # 身体
  426.       if id == 0 or $game_party.armor_number(id) > 0
  427.         update_auto_state($data_armors[@armor3_id], $data_armors[id])
  428.         $game_party.gain_armor(@armor3_id, 1)
  429.         @armor3_id = id
  430.         $game_party.lose_armor(id, 1)
  431.       end
  432.     when 4  # 装饰品
  433.       if id == 0 or $game_party.armor_number(id) > 0
  434.         update_auto_state($data_armors[@armor4_id], $data_armors[id])
  435.         $game_party.gain_armor(@armor4_id, 1)
  436.         @armor4_id = id
  437.         $game_party.lose_armor(id, 1)
  438.       end
  439.     end
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● 可以装备判定
  443.   #     item : 物品
  444.   #--------------------------------------------------------------------------
  445.   def equippable?(item)
  446.     # 武器的情况
  447.     if item.is_a?(RPG::Weapon)
  448.       # 包含当前的职业可以装备武器的场合
  449.       if $data_classes[@class_id].weapon_set.include?(item.id)
  450.         return true
  451.       end
  452.     end
  453.     # 防具的情况
  454.     if item.is_a?(RPG::Armor)
  455.       # 不包含当前的职业可以装备武器的场合
  456.       if $data_classes[@class_id].armor_set.include?(item.id)
  457.         return true
  458.       end
  459.     end
  460.     return false
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ● 更改 EXP
  464.   #     exp : 新的 EXP
  465.   #--------------------------------------------------------------------------
  466.   def exp=(exp)
  467.     @exp = [[exp, 9999999].min, 0].max
  468.     # 升级
  469.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  470.       @level += 1
  471.       # 学会特技
  472.       for j in $data_classes[@class_id].learnings
  473.         if j.level == @level
  474.           learn_skill(j.skill_id)
  475.         end
  476.       end
  477.     end
  478.     # 降级
  479.     while @exp < @exp_list[@level]
  480.       @level -= 1
  481.     end
  482.     # 修正当前的 HP 与 SP 超过最大值
  483.     @hp = [@hp, self.maxhp].min
  484.     @sp = [@sp, self.maxsp].min
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● 更改水品
  488.   #     level : 新的等级
  489.   #--------------------------------------------------------------------------
  490.   def level=(level)
  491.     # 检查上下限
  492.     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  493.     # 更改 EXP
  494.     self.exp = @exp_list[level]
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● 觉悟特技
  498.   #     skill_id : 特技 ID
  499.   #--------------------------------------------------------------------------
  500.   def learn_skill(skill_id)
  501.     if skill_id > 0 and not skill_learn?(skill_id)
  502.       @skills.push(skill_id)
  503.       @skills.sort!
  504.     end
  505.   end
  506.   #--------------------------------------------------------------------------
  507.   # ● 遗忘特技
  508.   #     skill_id : 特技 ID
  509.   #--------------------------------------------------------------------------
  510.   def forget_skill(skill_id)
  511.     @skills.delete(skill_id)
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ● 已经学会的特技判定
  515.   #     skill_id : 特技 ID
  516.   #--------------------------------------------------------------------------
  517.   def skill_learn?(skill_id)
  518.     return @skills.include?(skill_id)
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 可以使用特技判定
  522.   #     skill_id : 特技 ID
  523.   #--------------------------------------------------------------------------
  524.   def skill_can_use?(skill_id)
  525.     if not skill_learn?(skill_id)
  526.       return false
  527.     end
  528.     return super
  529.   end
  530.   #--------------------------------------------------------------------------
  531.   # ● 更改名称
  532.   #     name : 新的名称
  533.   #--------------------------------------------------------------------------
  534.   def name=(name)
  535.     @name = name
  536.   end
  537.   #--------------------------------------------------------------------------
  538.   # ● 更改职业 ID
  539.   #     class_id : 新的职业 ID
  540.   #--------------------------------------------------------------------------
  541.   def class_id=(class_id)
  542.     if $data_classes[class_id] != nil
  543.       @class_id = class_id
  544.       # 避开无法装备的物品
  545.       unless equippable?($data_weapons[@weapon_id])
  546.         equip(0, 0)
  547.       end
  548.       unless equippable?($data_armors[@armor1_id])
  549.         equip(1, 0)
  550.       end
  551.       unless equippable?($data_armors[@armor2_id])
  552.         equip(2, 0)
  553.       end
  554.       unless equippable?($data_armors[@armor3_id])
  555.         equip(3, 0)
  556.       end
  557.       unless equippable?($data_armors[@armor4_id])
  558.         equip(4, 0)
  559.       end
  560.     end
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ● 更改图形
  564.   #     character_name : 新的角色 文件名
  565.   #     character_hue  : 新的角色 色相
  566.   #     battler_name   : 新的战斗者 文件名
  567.   #     battler_hue    : 新的战斗者 色相
  568.   #--------------------------------------------------------------------------
  569.   def set_graphic(character_name, character_hue, battler_name, battler_hue)
  570.     @character_name = character_name
  571.     @character_hue = character_hue
  572.     @battler_name = battler_name
  573.     @battler_hue = battler_hue
  574.   end
  575.   #--------------------------------------------------------------------------
  576.   # ● 取得战斗画面的 X 坐标
  577.   #--------------------------------------------------------------------------
  578.   def screen_x
  579.     # 返回计算后的队伍 X 坐标的排列顺序
  580.     if self.index != nil
  581.       return self.index * 160 + 80
  582.     else
  583.       return 0
  584.     end
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ● 取得战斗画面的 Y 坐标
  588.   #--------------------------------------------------------------------------
  589.   def screen_y
  590.     return 464
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ● 取得战斗画面的 Z 坐标
  594.   #--------------------------------------------------------------------------
  595.   def screen_z
  596.     # 返回计算后的队伍 Z 坐标的排列顺序
  597.     if self.index != nil
  598.       return 4 - self.index
  599.     else
  600.       return 0
  601.     end
  602.   end
  603. end
  604. #==============================================================================
  605. # ☆ 忧雪の伤制作,转载时请保留。
  606. #==============================================================================
复制代码

点评

诶诶……既然是注释……还是用绿色吧……Ruby的注释的确是绿色。  发表于 2010-12-18 17:07

Lv1.梦旅人

梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
帖子
3229
2
发表于 2010-12-19 21:41:14 | 只看该作者
嗯,可以轻轻的提一点点的小小的意见么?我实在看不明白LZ的脚本究竟在GAME BATTLE和GAME ACTOR里哪里有变动哦……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
3
发表于 2010-12-23 14:04:17 | 只看该作者
回复 stevenrock 的帖子

Game_Battler 1里面的攻击力设置了+等级*7.5的伤害附加也就是,攻击=Game_Actor里面的伤害+(等级X7.5)
然后是设置了外加等级X7.5+防御的后戳
我比较喜欢直接修改也就是在Game_Actor里面的武器下加
  #--------------------------------------------------------------------------
  # ● 获取基本攻击力
  #--------------------------------------------------------------------------
  def base_atk
    weapon = $data_weapons[@weapon_id]
    atk1 = weapon != nil ? weapon.atk : 0这里设置可以变成,空手装备和带装备后的附加比率
    return atk1 + base_str 这里直接可以设置+等级*倍数这样,没装备和带装备都可以附加伤害
  end

点评

难度比较大。工作忙,最近没空做了……  发表于 2010-12-23 22:26
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复 支持 反对

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

4
 楼主| 发表于 2010-12-24 18:18:13 | 只看该作者
回复 stevenrock 的帖子

脚本中搜查 忧雪の伤 即可

点评

不错呀,哈哈,过去总是看到66RPG的广告,头一次看到给自己做广告的。嗯,值得研究~  发表于 2010-12-24 21:41
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-24 14:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表