Skip to content

MythicMobs 集成

QueDP 深度集成了 MythicMobs,提供双向交互能力:

  • 副本脚本 → MM 技能:在副本脚本中让玩家释放 MythicMobs 技能
  • MM 技能 → 副本动作:在 MythicMobs 技能中触发副本动作

前置要求

需要服务器安装 MythicMobs 5.x 插件


功能1:副本脚本释放 MM 技能

在副本脚本中,可以让玩家释放 MythicMobs 技能。

基础语法

javascript
action.cast_skill(选择器, 技能名)

参数说明

参数类型说明
选择器String施法者选择器(谁释放技能)
技能名StringMythicMobs 技能名称

使用示例

示例1:波次完成奖励

javascript
// monsters.yml - 第一波完成时
action.message('@所有玩家', '&a第一波完成!');
action.cast_skill('@所有玩家', 'HealingAura');
action.cast_skill('@所有玩家', 'SpeedBoost');

示例2:Boss 阶段技能

javascript
// scripts.yml - Boss 血量检查
function checkBossPhase() {
  var bossHealth = getVar('boss_health');
  
  if (bossHealth < 500 && !getVar('phase2_triggered')) {
    setVar('phase2_triggered', true);
    action.message('@所有玩家', '&c&lBoss 进入第二阶段!');
    action.cast_skill('@所有玩家', 'DefensiveShield');
  }
  
  if (bossHealth < 200 && !getVar('phase3_triggered')) {
    setVar('phase3_triggered', true);
    action.message('@所有玩家', '&4&lBoss 狂暴了!');
    action.cast_skill('@所有玩家', 'EmergencyHeal');
  }
}

示例3:随机技能奖励

javascript
// tasks.yml - 击杀里程碑
var kills = (getVar('总击杀') || 0) + 1;
setVar('总击杀', kills);

if (kills % 10 == 0) {
  var skills = ['Heal', 'SpeedBoost', 'StrengthBuff', 'JumpBoost'];
  var randomSkill = skills[Math.floor(Math.random() * skills.length)];
  
  action.cast_skill('@随机', randomSkill);
  action.message('@所有玩家', '&e随机玩家获得了技能奖励!');
}

MythicMobs 技能配置

技能效果、目标、持续时间等由 MythicMobs 配置定义:

yaml
# plugins/MythicMobs/Skills/dungeon_skills.yml

# 治疗光环
HealingAura:
  Skills:
  - heal{amount=10} @self
  - effect:particles{particle=heart;amount=20;speed=0.1;hS=0.5;vS=0.5} @self
  - effect:sound{s=entity.player.levelup;v=1;p=1.5} @self

# 速度增益
SpeedBoost:
  Skills:
  - effect:potion{type=SPEED;duration=600;level=1} @self
  - message{m="&a获得速度提升!"} @self

# 防御护盾
DefensiveShield:
  Skills:
  - effect:potion{type=DAMAGE_RESISTANCE;duration=600;level=1} @self
  - effect:potion{type=ABSORPTION;duration=600;level=1} @self
  - effect:particles{particle=barrier;amount=30;speed=0} @self

# 紧急治疗
EmergencyHeal:
  Skills:
  - heal{amount=20} @self
  - effect:potion{type=REGENERATION;duration=200;level=2} @self
  - message{m="&c&l紧急治疗!"} @self

功能2:MM 技能触发副本动作

在 MythicMobs 技能中,可以触发副本的各种动作。

基础语法

yaml
Skills:
- dungeonaction{action="action.xxx(...)"} @self

参数说明

参数类型必需说明
actionString要执行的副本动作 JavaScript 代码
dungeonString指定副本 ID(默认自动查找)

自动识别副本

系统会自动识别怪物所在的副本,无需手动指定 dungeon 参数

使用示例

示例1:Boss 死亡完成副本

yaml
# plugins/MythicMobs/Mobs/boss.yml

DungeonBoss:
  Type: WITHER_SKELETON
  Display: '&c&l地牢守护者'
  Health: 1000
  Damage: 20
  Skills:
  # Boss 死亡时完成副本
  - dungeonaction{action="action.message('@all','&a&l击败了 Boss!')"} @self ~onDeath
  - dungeonaction{action="action.title('@all','&a&l胜利','&7恭喜通关')"} @self ~onDeath
  - dungeonaction{action="action.complete_dungeon()"} @self ~onDeath

支持的动作

所有副本动作都可以在 MythicMobs 技能中使用:

类型示例
消息action.message('@all','消息')
标题action.title('@all','主标题','副标题')
音效action.sound('@all','ENTITY_PLAYER_LEVELUP')
特效action.particle('@all','HEART',20)
传送action.teleport('@all','0,65,0')
治疗action.heal('@all',10)
药水action.potion('@all','SPEED','30秒',1)
怪物组action.spawn_group('援军')
障碍物action.create_obstacle('火墙')
奖励action.grant_reward('击杀奖励')
副本控制action.complete_dungeon(), action.fail_dungeon()
技能action.cast_skill('@all','Heal')
自定义函数function.xxx()

注意事项

技能必须存在

使用 action.cast_skill() 时,技能必须在 MythicMobs 配置中定义,否则会静默失败。


相关文档

基于 MIT 许可发布