等级与经验
经验曲线
职业的 exp-curve 决定每一级需要多少经验:
expcurves/levels.txt
100
200
350
500
...
第 N 行 = 升到第 N 级需要的经验:1 级升 2 级看第 2 行,第 1 行用不到(与 MMOCore 相同)。超出行数时重复使用最后一行。也可以直接写公式(level = 目前等级):
classes/剑士.yml
exp-curve: 'formula: 100 + level * 50 + level ^ 2'
找不到曲线时使用 100、200、300、400、500(MMOCore 的默认值)。
经验组
在 exp-sources.yml 定义经验组,职业写 exp-source: 组名(多个写 exp-sources: [组1, 组2]):
exp-sources.yml
# 同一组怪物给一样的经验
新手村:
exp: 3
mythic-mobs: [小僵尸, 小骷髅, 史莱姆王]
# 每只不同经验,可以写范围(随机取值)
首领:
mythic-mobs:
炎魔领主: 500
炎魔守卫: 20-40
vanilla-mobs:
ENDER_DRAGON: 1000
include: [新手村] # 也包含其他组
# 也可以写 MMOCore 的经验来源
生活:
exp: 1
lines:
- 'mineblock{type=DIAMOND_ORE;amount=20}'
- 'fishitem{type=COD;amount=2-4}'
# MMOCore 的列表写法也可以直接用
main:
- 'killmythicmob{type=shan1;amount=0.3-1}'
- 'from{source=新手村}'
| 选项 | 说明 |
|---|---|
exp | 这一组的默认经验(单独写了数值的怪物用自己的数值) |
mythic-mobs | MythicMobs 怪物 ID,列表或「ID: 经验」 |
vanilla-mobs | 原版生物(EntityType 名称),列表 或「类型: 经验」 |
include | 包含其他组 |
lines | MMOCore 经验来源的写法,见下表 |
职业里也可以用 MMOCore 的 main-exp-sources: 直接写经验来源,两种可以一起用。
经验来源
MMOCore 的 21 种经验来源全部支持,写法相同:类型{参数=值;amount=经验},amount 可以写范围 2-5。
| 类型 | 参数 | 时机 |
|---|---|---|
killmob | type(EntityType)、name(名称) | 击杀生物(也认得以该原版生物为底的 MythicMobs 怪物,与 MMOCore 相同) |
killmythicmob | type(MythicMobs ID) | 击杀 MythicMobs 怪物 |
killmythicfaction | name(阵营) | 击杀某个阵营的 MythicMobs 怪物 |
mineblock | type、silk-touch、crop(只算成熟作物)、player-placed | 挖掘方块 |
placeblock | type | 放置方块 |
craftitem / smeltitem / fishitem | type | 合成 / 熔炼 / 钓到物品(按数量) |
eat | type | 吃食物 |
brewpotion | effect、multiplier | 酿造药水 |
enchantitem | enchant | 附魔 |
repairitem | type | 铁砧修复 |
damagedealt | type(伤害类型) | 每造成 1 点伤害 |
damagetaken | type(伤害原因) | 每受到 1 点伤害 |
move | type(WALK / SPRINT / SNEAK / SWIM / FLY…) | 每移动 1 格 |
climb | type(LADDER / VINE / …) | 每攀爬 1 格 |
ride | type(坐骑类型) | 每骑乘 1 格 |
tame | — | 驯服动物 |
play | world、x1 x2 z1 z2、in-combat | 在指定区域每秒 |
resource | type(MANA / STAMINA / STELLIUM) | 每消耗 1 点资源 |
projectile | type(投射物类型) | 投射物伤害 × 距离 |
from | source(经验组或 MMOCore 的触发组) | 引用其他经验组 |
参数写错时后台会提示可用的参数。brewpotion / enchantitem / repairitem 在 MMOCore 依生活职业的基础值计算,星月天职没有生活职业,请用 amount 指定。
只有写了来源的职业才拿经验
MMOCore 的 climb move eat play resource ride damagetaken projectile 不检查职业,写在一个职业里所有职业都会拿到经验;projectile 永远不触发;play 在重载后会重复发经验。星月天职已修正。
经验加成
最终经验 = 原本经验 × (1 + 加成%)。来源会相加:
| 来源 | 设定方式 |
|---|---|
| 全服 | /sv admin booster add global 50 2h、/mmocore booster create main 50 7200 |
| 指定职业 | /sv admin booster add class:剑士 30 1d |
| 指定玩家 | /sv admin booster add player:Steve 100 30m |
| 权限 | config.yml 的 experience.permission-boosts |
| 属性 | MythicLib 属性 ADDITIONAL_EXPERIENCE(物品、属性点、技能树都能加) |
| 职业倍率 | 职业文件 exp-multiplier(乘算) |
加成存在数据库,重启不会消失;多个子服共用 MySQL 时全部子服同步。/sv admin booster list 列出生效中的加成,全服加成会广播。
其他设定
config.yml
death-exp-loss:
enabled: true
percent: 7 # 死亡损失当前等级经验的 7%
prevent-spawner-xp: true # 刷怪笼的怪物不给职业经验
display-main-class-exp-holograms: true # 获得经验时在怪物位置显示全息字
experience:
hologram-seconds: 1.0
vanilla-exp-redirection: # 原版经验按比例转成职业经验
enabled: false
ratio: 0.8
override-vanilla-exp: false # 原版经验条显示职业等级与进度
全息字格式在 messages.yml 的 exp-hologram。