本帖最后由 不死鸟之翼 于 2022-5-24 04:32 编辑
简单说一下,RPG::System里面有各种用语,比如属性的数组,然后Game_Battler里有查询各种抗性的方法,两者一起用即可。
下面是System里的一些属性:
- elements
- 属性列表。以属性 ID 为下标的字符串数组,0 号元素为空字符串。
- skill_types
- 技能类型列表。以技能类型 ID 为下标的字符串数组,0 号元素为空字符串。
- weapon_types
- 武器类型列表。以武器类型 ID 为下标的字符串数组,0 号元素为空字符串。
- armor_types
- 护甲类型列表。以护甲类型 ID 为下标的字符串数组,0 号元素为空字符串。
复制代码
下面是Game_Battler的一些方法:
#-------------------------------------------------------------------------- # ● 获取属性抗性 #-------------------------------------------------------------------------- def element_rate(element_id) features_pi(FEATURE_ELEMENT_RATE, element_id) end #-------------------------------------------------------------------------- # ● 获取弱化抗性 #-------------------------------------------------------------------------- def debuff_rate(param_id) features_pi(FEATURE_DEBUFF_RATE, param_id) end #-------------------------------------------------------------------------- # ● 获取状态抗性 #-------------------------------------------------------------------------- def state_rate(state_id) features_pi(FEATURE_STATE_RATE, state_id) end #-------------------------------------------------------------------------- # ● 获取免疫状态数组 #-------------------------------------------------------------------------- def state_resist_set features_set(FEATURE_STATE_RESIST) end #-------------------------------------------------------------------------- # ● 判定状态是否免疫 #-------------------------------------------------------------------------- def state_resist?(state_id) state_resist_set.include?(state_id) end
#--------------------------------------------------------------------------
# ● 获取属性抗性
#--------------------------------------------------------------------------
def element_rate(element_id)
features_pi(FEATURE_ELEMENT_RATE, element_id)
end
#--------------------------------------------------------------------------
# ● 获取弱化抗性
#--------------------------------------------------------------------------
def debuff_rate(param_id)
features_pi(FEATURE_DEBUFF_RATE, param_id)
end
#--------------------------------------------------------------------------
# ● 获取状态抗性
#--------------------------------------------------------------------------
def state_rate(state_id)
features_pi(FEATURE_STATE_RATE, state_id)
end
#--------------------------------------------------------------------------
# ● 获取免疫状态数组
#--------------------------------------------------------------------------
def state_resist_set
features_set(FEATURE_STATE_RESIST)
end
#--------------------------------------------------------------------------
# ● 判定状态是否免疫
#--------------------------------------------------------------------------
def state_resist?(state_id)
state_resist_set.include?(state_id)
end
假如我们要把第一个敌人的所有属性的倍率一起输出:
$target = $game_troop.members[0] $data_system.elements.drop(1).each_with_index { |val, ind| p "#{val}×#{$target.element_rate(ind)}" }
$target = $game_troop.members[0]
$data_system.elements.drop(1).each_with_index { |val, ind|
p "#{val}×#{$target.element_rate(ind)}"
}
- "物理×1.0"
- "吸收×1.0"
- "炎×1.0"
- "冰×2.0"
- "电×1.0"
- "水×1.0"
- "地×1.0"
- "风×1.0"
- "圣×1.0"
- "暗×1.0"
复制代码
要是想存成数组的话就map一下。至于显示第一个字也好,改成弱/耐也好,可以自行发挥。
|