Project1

标题: 如何突破战斗公式的字数限制! [打印本页]

作者: 神秘影子    时间: 2014-7-19 17:43
标题: 如何突破战斗公式的字数限制!
所以又来求助了嘛~

目前的战斗公式:

a.skill_learn?($data_skills[392])?(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25):(b.add_state(42)+a.atk*4-b.def*2)

当使用者学会392号技能时,执行左边的(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25),否则执行(b.add_state(42)+a.atk*4-b.def*2)

但是把这个战斗公式复制到数据库:

a.skill_learn?($data_skills[392])?(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25):(b.add_state(4

VA的战斗公式很好用,但是字数限制对这种情况来说略坑。
之所以(b.add_state(42)不添加到附加状态节省字数主要是想先附加状态再造成伤害(这个状态是减防,后附加的情况我没注意会不会影响本次伤害)

我的想法有两个但是目前来看都不太可行的样子啊:
1.调用写在注释栏的公式
2.专门开一个脚本页用于调用

如何突破战斗公式的字数限制呢?求解。


作者: taroxd    时间: 2014-7-19 17:44
本帖最后由 taroxd 于 2014-7-19 17:46 编辑
我的想法有两个但是目前来看都不太可行的样子啊:
1.调用写在注释栏的公式
2.专门开一个脚本页用于调用


两个都是可行的:
1. eval $data_skills[技能id].note
2. 修改 Game_Battler#make_damage_value 的第一行即可。或者可以通过 $RGSS_SCRIPTS[脚本页编号][3] 获取脚本页的内容
作者: chd114    时间: 2014-7-19 23:04
就按照楼上说的办吧···
作者: lirn    时间: 2014-7-20 09:31
我给你我的做法吧。其实在救世小树里的计算公式我也问过了

# ■ Game_Battler
#==============================================================================
  1. class Game_Battler < Game_BattlerBase

  2. def make_damage_value(user, item)
  3.     value = item.damage.eval(user, self, $game_variables)
  4.   
  5.     if item.is_a?(RPG::Skill)
  6.      case item.id

  7.           when 83,84,88
  8.         if user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 <= user.level * 15
  9.           value += (user.agi - self.agi + 20)* user.level/2.5
  10.           elsif user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 > user.level * 15
  11.           value += user.level * 15
  12.           elsif user.agi >= (self.agi + 20) && self.guard?
  13.           value += (user.agi - self.agi + 20)* user.level/2.5
  14.           value *= 0.5
  15.           elsif user.agi < (self.agi + 20) && self.guard?
  16.           value *= 0.5
  17.         end
  18. #############################################
  19.        when 245  
  20.           if user.mdf >= 85 && user.mdf <= 155
  21.             value *= ( 1 + (user.mdf - 85) * 0.01)
  22.            elsif user.mdf >= 155
  23.             value *= 1.7
  24.           end
  25.           if user.state?(269)
  26.             if user.luk >= 100
  27.               $game_variables[101] = rand(1000)
  28.               elsif user.luk >= 92
  29.               $game_variables[101] = rand(850)
  30.               elsif user.luk >= 86
  31.               $game_variables[101] = rand(500)
  32.               elsif user.luk >= 70
  33.               $game_variables[101] = rand(300)            
  34.             end
  35.             if $game_variables[101] >= 150
  36.               $game_variables[121] = 1
  37.               value *= 2
  38.            end
  39.          end            
  40.             
  41.            value *= item_element_rate(user, item)
  42.     value *= pdr if item.physical?
  43.     value *= mdr if item.magical?
  44.     value *= rec if item.damage.recover?
  45.     value = apply_critical(value) if @result.critical
  46.     value = apply_variance(value, item.damage.variance)
  47.     value = apply_guard(value)
  48.     @result.make_damage(value.to_i, item)
  49.   end
复制代码
这两个举例的计算公式够长了吧




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1