#==============================================================================
# FF7魔石系统
#==============================================================================
# Original By SephirothSpawn@rmxp.net
# Trans/edit By SailCat@66RPG
# 5.1.06
#==============================================================================
#------------------------------------------------------------------------------
# * 使用说明:
#------------------------------------------------------------------------------
# ~ 装备的魔石插孔数
# - 基本用法: 武器/防具编号 # => 魔石孔数组
# - 魔石孔数组: [成对孔数, 独立孔数]
# ** 不能超过8个孔 (成对孔数 * 2 + 独立孔数 * 1 <= 8)
# - 例: 1 => [2, 3] 则1号武器会拥有7个魔石孔,其中前4个孔成两对
# ~ 魔石列表
# * 使用自定义的魔石
# - 基本用法: Materia.new(id, name, type, stat_effects,
# elements, states, new_value, m_value,
# skills, exp_levels, special_effect)
#
# - id : 魔石的编号
# - name : 魔石的名字(字符串)
# - type : 魔石的种类, 为以下字符串之一:
# 'Skill', 'Command', 'Summon', 'Support', 'Independent'
# - stat_effects : 魔石装备后对基本数值的影响, 以百分比计算, 可以为负数
# [ HP, SP, 力量, 灵巧, 速度, 魔力 ]
# - elements : 魔石附带的属性数组, 由0-N个属性ID排列
# - states : 魔石附带的状态数组, 由0-N个状态ID排列
# - new_value : 魔石购买的价格
# - master_value : 魔石练满后的价值
# - Skills : 魔石可以修练出的技能列表数组, 用于Skill, Command与Summon类
# - Exp Levels : 魔石修练升级需要的经验值数组
# 数组中的第一个值为升到2级需要的经验值, 以此类推
# - Special Effect : 魔石拥有的特殊功能,为以下字符串之一
# 'All': 魔石会将配对的技能全体化
# 'Elemental': 魔石会给予角色配对的魔石所具备的属性攻击/防御
# 'Status': 魔石会给予角色配对的魔石所具备的状态攻击/防御
# "Steal As Well': 魔石可以配合偷窃
# 'HP Absorb': 魔石可以吸收HP
# 'SP Absorb': 魔石可以吸收SP
# 'SP Turbo': 魔石可以加倍SP消耗来增加技能效果
# 'Exp Plus': 魔石可以增加收获的经验
# 'Gil Plus': 魔石可以增加收获的钱
# 'HP Plus': 魔石可以增加装备者的最大HP
# 'SP Plus': 魔石可以增加装备者的最大SP
# 'Str Plus': 魔石可以增加装备者的力量值
# 'Dex Plus': 魔石可以增加装备者的灵巧值
# 'Agi Plus': 魔石可以增加装备者的速度值
# 'Int Plus': 魔石可以增加装备者的魔力值
#------------------------------------------------------------------------------
#==============================================================================
# ** RPG
#==============================================================================
module RPG
#============================================================================
# ** 武器
#============================================================================
class Weapon
#--------------------------------------------------------------------------
# * 追加实例变量
#--------------------------------------------------------------------------
attr_accessor :paired_materia
attr_accessor :single_materia
#--------------------------------------------------------------------------
# * 设置魔石孔
#--------------------------------------------------------------------------
def set_materia_slots(slots)
@paired_materia, @single_materia = slots[0], slots[1]
end
end
#============================================================================
# ** 防具
#============================================================================
class Armor
#--------------------------------------------------------------------------
# * 追加实例变量
#--------------------------------------------------------------------------
attr_accessor :paired_materia
attr_accessor :single_materia
#--------------------------------------------------------------------------
# * 设置魔石孔
#--------------------------------------------------------------------------
def set_materia_slots(slots)
@paired_materia, @single_materia = slots[0], slots[1]
end
end
end
#==============================================================================
# ** 魔石
#==============================================================================
class Materia
#--------------------------------------------------------------------------
# * 实例变量
#--------------------------------------------------------------------------
attr_reader :id
attr_accessor :name
attr_accessor :type
attr_accessor :stat_effects
attr_accessor :elements
attr_accessor :states
attr_accessor :new_value
attr_accessor :master_value
attr_accessor :skills
attr_accessor :exp_levels
attr_accessor :special_effect
#--------------------------------------------------------------------------
# * 初始化
#--------------------------------------------------------------------------
def initialize(id, name, type, stat_effects = [], elements = [], states = [],
n_value = 500, m_value = 1000, skills = [], exp_levels = [], s_effect = nil)
# Sets Parameters
@id, @name, @type, @stat_effects, @elements, @states,
@new_value, @master_value, @skills, @exp_levels, @special_effect =
id, name, type, stat_effects, elements, states,
n_value, m_value, skills, exp_levels, s_effect
# Sets Exp
@experience = 0
end
#--------------------------------------------------------------------------
# * 经验
#--------------------------------------------------------------------------
def experience
return @experience
end
#--------------------------------------------------------------------------
# * 设置经验
# num: 新的经验
#--------------------------------------------------------------------------
def experience=(num)
@experience = [num, @exp_levels[@exp_levels.size - 1]].min
end
#--------------------------------------------------------------------------
# * 等级
#--------------------------------------------------------------------------
def level
for i in 0...@exp_levels.size
if @experience >= @exp_levels[@exp_levels.size - (1 + i)]
return @exp_levels.size - i + 1
end
end
return 1
end
#--------------------------------------------------------------------------
# * 购价
#--------------------------------------------------------------------------
def buy_value
return @new_value
end
#--------------------------------------------------------------------------
# * 售价
#--------------------------------------------------------------------------
def sell_value
return [(@master_value * (@experience / @exp_levels[@exp_levels.size - 1].to_f)).to_i,
@new_value / 2].max
end
#--------------------------------------------------------------------------
# * 取得魔石色相
#--------------------------------------------------------------------------
def get_hue
case @type
when 'Skill'
hue = 130
when 'Command'
hue = 60
when 'Summon'
hue = 10
when 'Support'
hue = 180
when 'Independent'
hue = 300
end
return hue
end
end
#==============================================================================
# ** 魔石系统
#==============================================================================
module Materia_System
#==============================================================================
# ** 常数(数据库设定缺省值,可以修改)
#==============================================================================
# ~ 武器魔石孔
WEAPON_MATERIA_SLOTS = {
1 => [1, 1], 2 => [1, 2], 3 => [2, 2], 4 => [4, 0],