模板 - woshiermuqwq/mythic-chinese GitHub Wiki

模板顾名思义, 令一个Mythic实体的各种元素继承到其它Mythic实体上
通俗而言, 将一个Mythic实体的各种选项(技能、伤害、生命、实体选项等)等通过一串字符应用到其它Mythic实体中.

介绍

模板顾名思义, 允许将一个Mythic实体的各种选项、技能等通过一小串字符应用到其它Mythic实体中
具体是什么样的? 见下方示例:

测试僵尸2:
 Type: ZOMBIE
 Display: "&2测试生物 &7[<caster.level> 级]&r"
 Health: 30
 Damage: 5
 Faction: 怪物
 Equipment:
 - Iron_Helmet HEAD
 - Iron_Chestplate CHEST
 - Iron_Leggings LEGS
 - Iron_Boots FEET
 - Shield OFFHAND
 Drops:
 - exp 10-15 1
 - rotten_flesh 1-2 1
 - 僵尸剑 1 0.01
 Options:
  AlwaysShowName: true
  PreventOtherDrops: true
  PreventRandomEquipment: true
  PreventSunburn: true
  PreventItemPickup: true
  PreventJockeyMounts: true
  PreventTransformation: true
 AITargetSelectors:
 - clear
 - attacker
 - players
 AIGoalSelectors:
 - clear
 - meleeattack
 - randomstroll
 DamageModifiers:
 - PROJECTILE 1.15
 - ENTITY_ATTACK 0.75
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
 - '尽管 <target.name> 尽力, 仍无法与 <caster.name> 为敌'
 Skills:
 - skill:随机武器 @self ~onSpawn
 - skill:撕咬 @target ~onTimer:60 0.4 ?targetwithin{d=10}
 - skill:互换 @eir ~onTimer:180 0.6

这对于稍微接触过 MythicMobs 的人而言简直是入门课
上述的各种选项(如 Skills, Options, Display) 与原文的 Elements(元素) 对应, 因译者认为这一叫法过于复杂
若你擅长编程, 请将"选项"解读为"元素"

模板有什么用呢?其实这对于那些喜欢制作一堆副本的人而言很有用, 就是你可以将这个僵尸的各种选项应用到其它Mythic实体上
你可能觉得直接复制这僵尸配置的一部分到其它Mythic实体上, 不就好了?
但要是你以后想去调整, 是不是得一个个调整?这就是模板与过去方法最大的差距, 节省了时间与操作

继承示例

举个例子, 现在我想要制作多个生物, 让它们共享阵营实体选项部分技能等出自 模板示例 Mythic实体身上的选项

测试僵尸:
 Type: ZOMBIE
 Faction: 怪物
 Drops:
 - exp 10-15 1
 Options:
  AlwaysShowName: true
  PreventOtherDrops: true
  PreventRandomEquipment: true
  PreventSunburn: true
  PreventItemPickup: true
  PreventJockeyMounts: true
  PreventTransformation: true
 AITargetSelectors:
 - clear
 - attacker
 - players
 AIGoalSelectors:
 - clear
 - meleeattack
 - randomstroll
 DamageModifiers:
 - PROJECTILE 0.75
 - ENTITY_ATTACK 0.75
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
 Skills:
 - skill{s=随机武器} @self ~onSpawn

在创建"测试僵尸"后, 创建第二个Mythic实体(这里拿上文的"测试僵尸2"做示例)

测试僵尸2:
 Template: 测试僵尸
 Display: "&2测试生物 &7[<caster.level> 级]&r"
 Health: 30
 Damage: 5
 Equipment:
 - Iron_Helmet HEAD
 - Iron_Chestplate CHEST
 - Iron_Leggings LEGS
 - Iron_Boots FEET
 - Shield OFFHAND
 Drops:
 - rotten_flesh 1-2 1
 - ZombieBrute_Hearth 1 0.01
 DamageModifiers:
 - PROJECTILE 1.15
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
 - '尽管 <target.name> 尽力, 仍无法与 <caster.name> 为敌'
 Skills:
 - skill:撕咬 @target ~onTimer:60 0.4 ?targetwithin{d=10}
 - skill:互换 @eir ~onTimer:180 0.6

现在, 因"测试僵尸2"的配置内包含了Template: 测试僵尸, "测试僵尸" 的各种选项将被应用(继承)到"测试僵尸"中

那么, 选项具体是怎样继承/应用的呢?

选项继承

当Mythic实体继承来自其它Mythic实体的选项时, 选项继承方式有三种:

  • 模板生物的选项被 被继承选项的生物 所替代. (覆盖)
    • 如: 测试僵尸(模板) 与 测试僵尸2 都有伤害调整: PROJECTILE 选项, 所以 测试僵尸2 的伤害调整替换了 测试僵尸(模板) 的伤害调整
  • 模板生物的选项被 被继承选项的生物 所部分继承, 剩余部分则替代. (部分继承)
    • 如: 测试僵尸2 未拥有阵营, 但 测试僵尸(模板) 的阵营为 怪物, 继承后的 测试僵尸2 将为 怪物 阵营
    • 如: 测试僵尸2测试僵尸(模板) 均有对 抛射物(PROJECTILE) 的伤害调整, 测试僵尸 还拥有对平A(ENTITY_ATTACK_的25%减伤, 测试僵尸2 合并后将仍额外受到15%抛射物伤害(测试僵尸的 抛射物(PROJECTILE的伤害调整被 测试僵尸2 所覆盖), 但测试僵尸2将获得对平A的25%减伤(测试僵尸的 抛射物(PROJECTILE的伤害调整被 测试僵尸2 所继承)
  • 模板生物的选项与 被继承选项的生物 相合并(当选项为一串列表). (合并)
    • 如: Skills / KillMessages 是一个关于技能/关于击杀信息的列表, 所以被继承生物将同时拥有双方的技能与击杀信息
    • AIGoalSelectorsAITargetSelectors 也如此, 值得一提的是, 模板生物的AI行动器与AI目标选择器优先级高于被继承生物

为了便于理解, 下表列出了模板可用的选项,

选项 (位于模板生物配置内) 中文 如何继承 (若被继承生物也拥有该选项)
Type 种类 覆盖
Display 显示名 覆盖
Health 生命 覆盖
Damage 近身攻击伤害 覆盖
Armor 额外生命 覆盖
Bossbar BOSS血条 覆盖
Faction 阵营 覆盖
Mount 坐骑 覆盖
Options 实体选项 部分继承
Modules 威胁度受伤间隔 部分继承
AIGoalSelectors AI行动器 合并
AITargetSelectors AI目标器 合并
Drops 掉落物 合并
DamageModifiers 伤害调整 合并
Equipment 装备 合并
KillMessages 击杀信息 合并
LevelModifiers 等级 部分覆盖
Disguise 伪装 覆盖
Skills 技能配置 合并
Trades 村民交易 部分覆盖

*

选项过滤

通过在被继承Mythic实体内使用下列语法以令其不继承指定选项

  Exclude:
  - 选项A
  - 选项B
  - ...

例如, 下方的 A生物 不会继承 B生物的 装备AI目标器技能

A:
  Template:B
  Exclude:
  - Equipment
  - AITargetSelectors
  - Skills

链式模板

模板也可以使用其它模板(套娃)

A:
 Type: ZOMBIE
 Faction: 怪物
 Drops:
 - exp 10-15 1
 Options:
  AlwaysShowName: true
  PreventOtherDrops: true
  PreventRandomEquipment: true
  PreventSunburn: true
  PreventItemPickup: true
  PreventJockeyMounts: true
  PreventTransformation: true
 DamageModifiers:
 - PROJECTILE 0.75
 - ENTITY_ATTACK 0.75
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
B:
 Template: A
 Equipment:
 - Iron_Helmet HEAD
 - Iron_Chestplate CHEST
 - Iron_Leggings LEGS
 - Iron_Boots FEET
 - Shield OFFHAND
 AITargetSelectors:
 - clear
 - attacker
 - players
 AIGoalSelectors:
 - clear
 - meleeattack
 - randomstroll
  Skills:
  - skill:测试 @self ~onSpawn
测试僵尸:
 Template: B
 Display: "&2测试生物 &7[<caster.level> 级]&r"
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
 - '尽管 <target.name> 尽力, 仍无法与 <caster.name> 为敌'
 Skills:
 - skill:撕咬 @target ~onTimer:60 0.4 ?targetwithin{d=10}
 - skill:互换 @eir ~onTimer:180 0.6

这样, 该僵尸将继承A、B生物的各种选项

多模板

A:
 Type: ZOMBIE
 Equip:
 - Diamond_Helmet HEAD
 - Diamond_Chestplate CHEST
 - Diamond_Leggings LEGS
 - Diamond_Boots FEET
B:
 Template: A
 Equipment:
 - Iron_Helmet HEAD
 - Iron_Chestplate CHEST
 - Iron_Leggings LEGS
 - Iron_Boots FEET
 - Shield OFFHAND
 AITargetSelectors:
 - clear
 - attacker
 - players
 AIGoalSelectors:
 - clear
 - meleeattack
 - randomstroll
  Skills:
  - skill:测试 @self ~onSpawn
测试僵尸:
 Template: A,B
 Display: "&2测试生物 &7[<caster.level> 级]&r"
 KillMessages:
 - '<target.name> 被 <caster.name> 杀死了'
 - '尽管 <target.name> 尽力, 仍无法与 <caster.name> 为敌'
 Skills:
 - skill:撕咬 @target ~onTimer:60 0.4 ?targetwithin{d=10}
 - skill:互换 @eir ~onTimer:180 0.6

该僵尸将先继承A生物, 再继承B生物

⚠️ **GitHub.com Fallback** ⚠️