Game_Actor 第107行
Game_Enemy 第118行
还有Game_Battler的334行
这几个地方都有定义属性相关方法
举个例子,Game_Enemy:
[pre lang="ruby"]#--------------------------------------------------------------------------
# ● 获取属性修正值
# 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.guard_element_set.include?(element_id)
#-----------------------------------修改部分-------------------------------------------------
unless i == #这里是你不想计算的属性id
result /= 2
end
#-----------------------------------修改结束-------------------------------------------------
end
end
# 过程结束
return result
end[/pre]
叠加属性的脚本这里有个樱雅大的版本:
[pre lang="ruby"]# ▼▲▼ 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