写好之后才发现眼瞎进错区的产物……
也许会有人需要吧??总之用法在代码注释里有……
PS:然后作为提升等级上限的物品即使没设置各种恢复效果之类的也可以使用(但是请不要对敌人使用)。
PS2:事实上技能的话还没试过是不是能用。
PPAP:降低上限的话,如果当前角色等级高于降低后的上限,会被强行降级。
#------------------------------------
# ○ 通过角色备注获取一下初始最大值,
# 在备注里填上“<N_MLV 数值>”(不含引号)设置初始最大等级
# 不填的话默认99级,且等级上限提升之后不会超过99级
#------------------------------------
class RPG::Actor < RPG::BaseItem
def default_max_level
return @note =~ /<N_MLV\s?(.*)?>/ ? $1.to_i : @max_level
end
end
#------------------------------------
# ○ 通过物品/技能备注获取更改最大等级的信息,
# 在备注里填上“<C_MLV 数值>”(不含引号)设置更改的最大等级数,
# 填负数则会减少最大等级。
# 备注里填了这个信息的物品视为更改等级上限的物品
#------------------------------------
class RPG::UsableItem < RPG::BaseItem
def max_lv_change
return @note =~ /<C_MLV\s?(.*)?>/ ? $1.to_i : nil
end
def max_lv_change_item?
return !max_lv_change.nil?
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 技能/物品的应用测试
# 如果是等级上限突破物品优先允许使用
#--------------------------------------------------------------------------
alias sny46_161027_item_test item_test
def item_test(user, item)
return true if (item and item.max_lv_change_item?)
return sny46_161027_item_test(user, item)
end
#--------------------------------------------------------------------------
# ● 应用技能/物品的效果
# 增加突破等级上限物品的效果
#--------------------------------------------------------------------------
alias sny46_161027_item_apply item_apply
def item_apply(user, item)
sny46_161027_item_apply(user, item)
return unless (item and item.max_lv_change_item?)
self.add_max_level(item.max_lv_change)
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 设置
#--------------------------------------------------------------------------
alias sny46_161027_setup setup
def setup(actor_id)
sny46_161027_setup(actor_id)
@real_max_level = self.actor.default_max_level
end
#--------------------------------------------------------------------------
# ● 最大等级
#--------------------------------------------------------------------------
alias sny46_161027_max_level max_level
def max_level
return [@real_max_level, sny46_161027_max_level].min
end
#------------------------------------
# ○ 提升/降低最大等级
#------------------------------------
def add_max_level(n)
old_max_lv = @real_max_level
@real_max_level += n
# 等级上限降低的情况
return unless old_max_lv > @real_max_level
# 如果当前等级大于变化后的等级上限就降级
level_down while self.level > @real_max_level
end
end