Project1
标题:
能力提升叠加效果
[打印本页]
作者:
xiaoxiyp
时间:
2014-9-28 20:48
标题:
能力提升叠加效果
设置一个技能,使用后自己魔法攻击+60%这个状态,再次使用后此魔法攻击可继续增加至120%,上限叠加5次。是否可实现?
作者:
3106345123
时间:
2014-9-29 10:58
http://artificialprovidence.web. ... BUFF_DEBUFF_ENH.txt
然后
自己设置
(乱码别找我)
作者:
上贺茂润
时间:
2014-9-29 12:27
连续设置五个状态 然后用公共事件
作者:
三途亚梦
时间:
2014-9-30 10:01
本帖最后由 三途亚梦 于 2014-9-30 10:04 编辑
2L给的链接是有墙的日站脚本,你需要翻墙才能看到。
它的效果估计就是把所有能力提升效果分为10个阶段等级,但是只能分为10个阶段,没法按照技能需要进行不同数值的叠加。
你需要的答案思路在3L
设置5个同名的状态,状态效果分别是:
+60%的魔法攻击
+120%的魔法攻击
以此类推设置5个状态。
如果是在技能中添加状态的话我建议在脚本中做,公共事件中要读取技能使用者的信息有些麻烦。
在Game_Battler中大概350行左右找到下面两句语句
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
复制代码
然后在value = item.damage.eval(user, self, $game_variables)后面添加下面这段内容
其中 "when" 后面的1对应的是你所设置的技能的ID
括号中的数字 26 - 30 就对应你所设置的5个等级的状态(它们是递增的)
#-------------------技能使用额外效果------------------
if item.is_a?(RPG::Skill)
case item.id
when 1
if user.state?(26)
user.add_state(27).to_i && user.remove_state(26).to_i
else if user.state?(27)
user.add_state(28).to_i && user.remove_state(27).to_i
else if user.state?(28)
user.add_state(29).to_i && user.remove_state(28).to_i
else if user.state?(29)
user.add_state(30).to_i && user.remove_state(29).to_i
else if user.state?(30)
else user.add_state(26)
end
end
end
end
end
end
end
#-----------------------------------------------------
复制代码
作者:
chd114
时间:
2014-10-3 11:24
#==============================================================================
# ■ 修改属性设置,允许属性吸收等效果
#------------------------------------------------------------------------------
# RPG VX Ace默认不允许属性被吸收,最低的属性有效度为0,最高为10倍(可叠乘)
# 本脚本的原理:将属性设置的叠乘计算改为叠加计算,从而允许属性吸收效果
# 数据库设置:
# 1.当只有1条属性抵抗起作用时,和原来的算法相同
# 2.当有多条属性抵抗起作用时,其效果倍率各自减100%后叠加计算,
# 如“[冰]*200”和“[冰]*250”叠加的效果为“[冰]*350”
# 如“[冰]*150”和“[冰]*50”叠加的效果为“[冰]*100”
# 3.现在“某属性*0”的效果为倍率-1,所以如果要实现属性100%吸收,可如下设置
# “[冰]*0”和“[冰]*0”叠加,效果即为倍率减2,即“[冰]*-100”
# 类似的,若“[冰]*0”三重叠加,效果即为倍率减3,即“[冰]*-200”,双倍吸收
# 4.如果要实现属性X%吸收(X<100),可如下设置
# “[冰]*0”和“[冰]*(100-x)”叠加
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 计算属性抵抗
#--------------------------------------------------------------------------
def features_elem(code, id)
features_with_id(code, id).inject(1.0) {|r, ft| r += ft.value - 1}
end
#--------------------------------------------------------------------------
# ● 获取属性抗性
#--------------------------------------------------------------------------
def element_rate(element_id)
features_elem(FEATURE_ELEMENT_RATE, element_id)
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● 获取属性的最大修正值,返回所有属性中最有效的一个
# elements : 属性 ID 数组
#--------------------------------------------------------------------------
def elements_max_rate(elements)
elements.inject([]) {|r, i| r.push(element_rate(i)) }.max
end
end
module Vocab
ActorDrainRev = "%s逆向吸取了%s点%s!"
EnemyDrainRev = "%s逆向吸取了%s点%s!"
end
class Game_ActionResult
alias sailcat_hp_damage_text hp_damage_text
alias sailcat_mp_damage_text mp_damage_text
#--------------------------------------------------------------------------
# ● 获取 HP 伤害的文字
#--------------------------------------------------------------------------
def hp_damage_text
if @hp_drain < 0
fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
sprintf(fmt, @battler.name, -@hp_drain, Vocab::hp)
else
sailcat_hp_damage_text
end
end
#--------------------------------------------------------------------------
# ● 获取 MP 伤害的文字
#--------------------------------------------------------------------------
def mp_damage_text
if @mp_drain < 0
fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
sprintf(fmt, @battler.name, -@mp_drain, Vocab::mp)
else
sailcat_mp_damage_text
end
end
end
复制代码
我不确定这个是不是你要的那种···
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1