- class BattlerBase
- def hit; xparam(0); end # 命中機率
- def eva; xparam(1); end # 閃避機率
- def cri; xparam(2); end # 必殺機率
- def cev; xparam(3); end # 閃避必殺機率
- def cnt; xparam(6); end # 反擊機率
- end
复制代码 把xparam(x)改成你要的算式 比如[[10+agi/2,100].max,50].min
[[10+agi/2,100].max,50].min
以下的是戰鬥中命中,閃避等的計算,設定算式時須參考一下(或者不改上面的,直接改下面的,改起來會比較簡單..分別在於上面的是角色/敵人的能力值,下面的是實際作用時的算法)- (@result.used && rand >= item_hit(user, item)) #命中
- ([email protected] && rand < item_eva(user, item)) #閃避
- (rand < item_cri(user, item)) #必殺
- rand < target.item_cnt(@subject, item) #反擊
复制代码#-------------------------------------------------------------------------- # ● 計算技能/物品的成功幾率 #-------------------------------------------------------------------------- def item_hit(user, item) rate = item.success_rate * 0.01 # 獲取成功幾率 rate *= user.hit if item.physical? # 物理攻擊:計算成功幾率的乘積 return rate # 返回計算后的成功幾率 end #-------------------------------------------------------------------------- # ● 計算技能/物品的閃避幾率 #-------------------------------------------------------------------------- def item_eva(user, item) return eva if item.physical? # 是物理攻擊則返回閃避幾率 return mev if item.magical? # 是魔法攻擊則返回閃避魔法幾率 return 0 end #-------------------------------------------------------------------------- # ● 計算技能/物品的必殺幾率 #-------------------------------------------------------------------------- def item_cri(user, item) item.damage.critical ? user.cri * (1 - cev) : 0 end #-------------------------------------------------------------------------- # ● 計算技能/物品的反擊幾率 #-------------------------------------------------------------------------- def item_cnt(user, item) return 0 unless item.physical? # 攻擊類型不是物理攻擊 return 0 unless opposite?(user) # 隊友無法反擊 return cnt # 返回反擊幾率 end
#--------------------------------------------------------------------------
# ● 計算技能/物品的成功幾率
#--------------------------------------------------------------------------
def item_hit(user, item)
rate = item.success_rate * 0.01 # 獲取成功幾率
rate *= user.hit if item.physical? # 物理攻擊:計算成功幾率的乘積
return rate # 返回計算后的成功幾率
end
#--------------------------------------------------------------------------
# ● 計算技能/物品的閃避幾率
#--------------------------------------------------------------------------
def item_eva(user, item)
return eva if item.physical? # 是物理攻擊則返回閃避幾率
return mev if item.magical? # 是魔法攻擊則返回閃避魔法幾率
return 0
end
#--------------------------------------------------------------------------
# ● 計算技能/物品的必殺幾率
#--------------------------------------------------------------------------
def item_cri(user, item)
item.damage.critical ? user.cri * (1 - cev) : 0
end
#--------------------------------------------------------------------------
# ● 計算技能/物品的反擊幾率
#--------------------------------------------------------------------------
def item_cnt(user, item)
return 0 unless item.physical? # 攻擊類型不是物理攻擊
return 0 unless opposite?(user) # 隊友無法反擊
return cnt # 返回反擊幾率
end
|