本帖最后由 moy 于 2013-9-10 00:51 编辑
hanguang85 发表于 2013-9-10 00:27
看到你这么认真的回复 我都不好意思了
其实就是一个很简单的设定 玩过 万智牌魔法风云会之天命战场 的人 ...
什么,万智牌
好吧,如果你是指标示物一类的东西,那么确实要稍微考虑下。
首先根据需求,你需要将技能分为三类
1.对SP无影响
2.增加SP
3.减少SP
万幸的是,标示物不存在上限(这也是最万恶的一点…)所以不管是1还是2,都不会造成超出限度
那么着眼点在3上面。而3和通常的mp消耗其实采用的是同样的规则。
那么,只要在pay_skill_cost中加一个判断语句,判断是否是某种特定的技能,就可以方便的识别是加还是减SP。
#-------------------------------------------------------------------------- # ● 扣除技能的使用消耗 #-------------------------------------------------------------------------- def pay_skill_cost(skill) if(skill.id==15) self.mp -= skill_mp_cost(skill) else self.mp += skill_mp_cost(skill) end self.tp -= skill_tp_cost(skill) end
#--------------------------------------------------------------------------
# ● 扣除技能的使用消耗
#--------------------------------------------------------------------------
def pay_skill_cost(skill)
if(skill.id==15)
self.mp -= skill_mp_cost(skill)
else
self.mp += skill_mp_cost(skill)
end
self.tp -= skill_tp_cost(skill)
end
同理,在skill_cost_payable?中,加一个判断,看是否需要进行“mp”最小值的限定(也就是SP必须够才能放减少SP的技能)
#-------------------------------------------------------------------------- # ● 判定是否足够扣除技能的使用消耗 #-------------------------------------------------------------------------- def skill_cost_payable?(skill) tp >= skill_tp_cost(skill) && if(skill.id==15) mp >= skill_mp_cost(skill) end
#--------------------------------------------------------------------------
# ● 判定是否足够扣除技能的使用消耗
#--------------------------------------------------------------------------
def skill_cost_payable?(skill)
tp >= skill_tp_cost(skill) && if(skill.id==15) mp >= skill_mp_cost(skill)
end
这里用的15号技能举例。如果有很多,可以设置一个数组,保存着技能的编号,然后判断所使用的技能是否在数组内。
(PS:连帖会被扣分… |