查看: 2593|回复: 4

[RMVA发布] 抛砖引玉一下,根据我方实力浮动战斗数值

[复制链接]
梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
回帖
10
发表于 2015-8-8 21:01:31 | 显示全部楼层 |阅读模式

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

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

×
传统RPG都是靠等级吃饭,怪和BOSS实力都是一定的,这种情况下,可能99级就扫遍天下,所以我尝试做一个浮动战斗数值

浮动的意思就是你等级高了,怪物的能力也跟着你的水平改变参数,所以哪怕初期就100血的史莱姆,可能后期你面对他会是一个1000血的劲敌

由于是想着修改的,可能效率啊什么的不完美,也希望大家能够帮助我修改这些代码

首先是在新代码窗口添加Game_Party、Game_Enemy、Game_Troop的三个新方法

[pre lang="ruby"]class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 获取我方实力浮动值
  #--------------------------------------------------------------------------
  def battle_times
    times = 1
    t_max = 1
    t_min = 999999
    for i in 0..6
      if i != 5
        members.each do |party|
          t_max = [party.param(i),t_max].max
          t_min = [party.param(i),t_min].min
        end
        times = [t_max*1.00/t_min*1.00,times].max
        t_max = 1
        t_min = 999999
      end
    end
    return times
  end
end

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 浮动每个敌人的实力(每个敌人是有个浮动上限,需在注释添加内容)
  #--------------------------------------------------------------------------
def float(times)
  temp = 0
  self.note.each_line do |line|
    case line
      when /\<(?:max_times)[ ]*(\d+)\>/i
        val = $1.to_i/100.0
        if(val<times)
          temp = param(0).to_f*(val-1)
          add_param(0,temp)
          temp = param(1).to_f*(val-1)
          add_param(1,temp)
          temp = param(2).to_f*(val-1)
          add_param(2,temp)
          temp = param(3).to_f*(val-1)
          add_param(3,temp)
          temp = param(4).to_f*(val-1)
          add_param(4,temp)
          temp = param(6).to_f*(val-1)
          add_param(6,temp)
          @hp = (@hp*val).to_i
          @mp = (@mp*val).to_i
        else
          temp = param(0).to_f*(times-1)
          add_param(0,temp)
          temp = param(1).to_f*(times-1)
          add_param(1,temp)
          temp = param(2).to_f*(times-1)
          add_param(2,temp)
          temp = param(3).to_f*(times-1)
          add_param(3,temp)
          temp = param(4).to_f*(times-1)
          add_param(4,temp)
          temp = param(6).to_f*(times-1)
          add_param(6,temp)
        end
        @hp = param(0)
        @mp = param(1)
        msgbox(@hp)
      end
    end
  end
end

class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # ● 浮动生命
  #--------------------------------------------------------------------------
  def float_param(times)
    if times.to_i <= 0
      return
    end  
    members.each do |enemy|
      enemy.float(times)
    end
  end  
end[/pre]

而后,在BattleManager的self.battle_start中修改成下面的形式
[pre lang="ruby"]def self.battle_start
    $game_system.battle_count += 1
    $game_party.on_battle_start
    $game_troop.on_battle_start
    $game_troop.float_param($game_party.battle_times)
    $game_troop.enemy_names.each do |name|
      $game_message.add(sprintf(Vocab::Emerge, name))
    end
    if @preemptive
      $game_message.add(sprintf(Vocab::Preemptive, $game_party.name))
    elsif @surprise
      $game_message.add(sprintf(Vocab::Surprise, $game_party.name))
    end
    wait_for_message
  end[/pre]

之后就是设定敌人的最大浮动数,如下图右侧的第一行(其他行是别的代码,无视之),125在代码中会除以100,所以敌人的浮动值是1.25:

111.jpg

可以看到这只老鼠的基础体力是75,现在看一下我们的队伍情况:

2.jpg

可以看到两个队员能形成的最大浮动是魔法攻击的2.0,但是敌人最大浮动是1.25,因此此时敌人的能力应当全部乘以1.25,我们来看一下战斗时,敌人的实际能力是多少:

3.jpg

这样就产生浮动了

以上是我自己摸索出来的浮动战斗方式,欢迎大家来批评指正,并提出更好的方法
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-8-22 11:09:46 | 显示全部楼层
功能不错···但是这个浮动计算···是每项能力都取最强/最弱角色对应能力的浮动?
这样的话提升队伍平均战力就能缩小浮动吧?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
回帖
10
 楼主| 发表于 2015-8-22 16:27:29 | 显示全部楼层
chd114 发表于 2015-8-22 11:09
功能不错···但是这个浮动计算···是每项能力都取最强/最弱角色对应能力的浮动?
这样的话提升队伍平均 ...

计算公式可以按照各自的需求来,我只是展示一下我自己现在正在用的算法,因为这样的算法会“比较正常”,毕竟怪的攻击力*10的话伤害就会非常恐怖了……

游戏每个角色都有特点,战士和法师初始的时候各自数值会有偏差,的确你可以给法师吃力量种子,但是在力量种子数量有限的情况下,是给战士吃达到高伤害还是给法师吃平均队伍水平来“熬”过战斗,那就是玩家来选择他们心中的最优选项了
回复

使用道具 举报

梦石
0
星屑
710
在线时间
663 小时
注册时间
2012-10-21
回帖
251
发表于 2015-8-22 18:12:14 | 显示全部楼层
这样的话,练级有何意义?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
回帖
10
 楼主| 发表于 2015-8-22 19:07:47 | 显示全部楼层
bloodyliao 发表于 2015-8-22 18:12
这样的话,练级有何意义?

如果游戏没有等级,单纯依靠道具和装备提升属性进行游戏,可以利用浮动让玩家进行个性化抉择
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部