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
#==============================================================================
class Game_Battler < Game_BattlerBase
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
if item.is_a?(RPG::Skill)
case item.id
when 83,84,88
if user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 <= user.level * 15
value += (user.agi - self.agi + 20)* user.level/2.5
elsif user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 > user.level * 15
value += user.level * 15
elsif user.agi >= (self.agi + 20) && self.guard?
value += (user.agi - self.agi + 20)* user.level/2.5
value *= 0.5
elsif user.agi < (self.agi + 20) && self.guard?
value *= 0.5
end
#############################################
when 245
if user.mdf >= 85 && user.mdf <= 155
value *= ( 1 + (user.mdf - 85) * 0.01)
elsif user.mdf >= 155
value *= 1.7
end
if user.state?(269)
if user.luk >= 100
$game_variables[101] = rand(1000)
elsif user.luk >= 92
$game_variables[101] = rand(850)
elsif user.luk >= 86
$game_variables[101] = rand(500)
elsif user.luk >= 70
$game_variables[101] = rand(300)
end
if $game_variables[101] >= 150
$game_variables[121] = 1
value *= 2
end
end
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
value = apply_critical(value) if @result.critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
@result.make_damage(value.to_i, item)
end
复制代码
这两个举例的计算公式够长了吧
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1