本帖最后由 Mono_kyrin 于 2019-1-28 13:23 编辑
Game_Actor 第107行
Game_Enemy 第118行
还有Game_Battler的334行
这几个地方都有定义属性相关方法
举个例子,Game_Enemy:
#-------------------------------------------------------------------------- # ● 获取属性修正值 # element_id : 属性 ID #-------------------------------------------------------------------------- def element_rate(element_id) # 获取对应属性有效度的数值 table = [0,200,150,100,50,0,-100] result = table[$data_enemies[@enemy_id].element_ranks[element_id]] # 状态能防御本属性的情况下效果减半 for i in @states if $data_states[i].guard_element_set.include?(element_id) #-----------------------------------修改部分------------------------------------------------- unless i == #这里是你不想计算的属性id result /= 2 end #-----------------------------------修改结束------------------------------------------------- end end # 过程结束 return result end
#--------------------------------------------------------------------------
# ● 获取属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
#-----------------------------------修改部分-------------------------------------------------
unless i == #这里是你不想计算的属性id
result /= 2
end
#-----------------------------------修改结束-------------------------------------------------
end
end
# 过程结束
return result
end
叠加属性的脚本这里有个樱雅大的版本:
# ▼▲▼ XRXS38. 属性修正计算数限制 ▼▲▼ built 081012 # by 桜雅 在土 (原作) # Tetra-Z (強化) #============================================================================== # 简介:此脚本会将“系统默认的属性修正”和“战斗特殊效果属性”分开计算; # 插入此脚本后,“战斗特殊效果属性”将“不计算属性有效度”。 #============================================================================== # □ カスタマイズポイント #============================================================================== module XRXS38 # 属性的限制数量 ELEMENTS_NUMBER_LIMIT = 23 # 属性修正的计算方法 # 0 : 最大(默认的计算方法) # 1 : 乘法 # 2 : 平均 # 3 : 最小 ELEMENT_CORRECT_METHOD = 1 end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 属性修正的计算 + 倍率计算公式 #-------------------------------------------------------------------------- alias xrxs38_elements_correct elements_correct def elements_correct(element_set) elements = element_set.dup # 属性数量的限制 for element_id in element_set if element_id >XRXS38:: ELEMENTS_NUMBER_LIMIT elements.delete(element_id) end end #无属性的场合返回100 return 100 if elements.size == 0 # case XRXS38::ELEMENT_CORRECT_METHOD when 0 # 最大 return xrxs38_elements_correct(elements) when 1 # 乘法 result = 100.0 minus_enable = false for i in elements n = self.element_rate(i) minus_enable |= (n < 0) result *= n / 100.0 end result = -1 * result.abs if minus_enable return result.to_i when 2 # 平均 rates = [] result = 0 for i in elements rates.push(self.element_rate(i)) end for rate in rates result += rate end return result / rates.size when 3 # 最小 for i in elements n = self.element_rate(i) result = n if result.nil? or result > n end return result end end end
# ▼▲▼ XRXS38. 属性修正计算数限制 ▼▲▼ built 081012
# by 桜雅 在土 (原作)
# Tetra-Z (強化)
#==============================================================================
# 简介:此脚本会将“系统默认的属性修正”和“战斗特殊效果属性”分开计算;
# 插入此脚本后,“战斗特殊效果属性”将“不计算属性有效度”。
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module XRXS38
# 属性的限制数量
ELEMENTS_NUMBER_LIMIT = 23
# 属性修正的计算方法
# 0 : 最大(默认的计算方法)
# 1 : 乘法
# 2 : 平均
# 3 : 最小
ELEMENT_CORRECT_METHOD = 1
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 属性修正的计算 + 倍率计算公式
#--------------------------------------------------------------------------
alias xrxs38_elements_correct elements_correct
def elements_correct(element_set)
elements = element_set.dup
# 属性数量的限制
for element_id in element_set
if element_id >XRXS38:: ELEMENTS_NUMBER_LIMIT
elements.delete(element_id)
end
end
#无属性的场合返回100
return 100 if elements.size == 0
#
case XRXS38::ELEMENT_CORRECT_METHOD
when 0 # 最大
return xrxs38_elements_correct(elements)
when 1 # 乘法
result = 100.0
minus_enable = false
for i in elements
n = self.element_rate(i)
minus_enable |= (n < 0)
result *= n / 100.0
end
result = -1 * result.abs if minus_enable
return result.to_i
when 2 # 平均
rates = []
result = 0
for i in elements
rates.push(self.element_rate(i))
end
for rate in rates
result += rate
end
return result / rates.size
when 3 # 最小
for i in elements
n = self.element_rate(i)
result = n if result.nil? or result > n
end
return result
end
end
end
|