Instanced Dungeon Difficulty
Instanced dungeons have a special setting to easily define different difficulties for the dungeon.
How it works
Difficulties are modeled in part after Final Fantasy 14's level sync system.
Elite armor and weapons get specific elite damage and elite defense based on their level, as you can see on items. When in an instanced dungeon with a difficulty on, the level of the item will be temporarily and invisibly lowered to match the level sync.
EliteMobs uses exponential scaling, where every 5 levels of difference doubles the effective power. For example, a level 50 sword is significantly more powerful than a level 45 sword. If a player is in an instanced dungeon with a difficulty that level syncs gear to level 45, the level 50 sword will act as a level 45 sword with proportionally reduced damage.
However, if that sword has level 10 sharpness, it will still add the same amount of damage on top of the base damage.
This means that, in instanced dungeons with difficulties, what matters is not so much the level of the gear but the quality of the gear. Players seeking to beat the mythic difficulty will have to work towards getting high quality items from other instanced dungeons and possibly heavily interact with the item upgrade system.
This also makes it nearly impossible for veteran players to stomp on old high-difficulty content and provides an incentive to do it even if their level is well beyond the level of the dungeon.
Party system
EliteMobs has session-only parties with up to five members. When one party member selects an instanced dungeon, EliteMobs snapshots the current roster and starts a clickable ready check. The initiator counts as ready automatically; every other member has to accept the exact dungeon and difficulty before world preparation begins. Dynamic-dungeon prompts also include the selected level. A decline, timeout, roster change, unavailable member, permission failure, capacity failure, active-instance conflict, or cancelled MagmaCore MatchJoinEvent preflight aborts group entry instead of moving only part of the party. EliteMobs' PlayerJoinDungeonEvent is a non-cancellable notification fired after admission.
Personal item-enchantment challenges remain solo because the challenge temporarily owns the initiating player's item.
To account for multiple players once inside, bosses are designed with specific powers which get more dangerous as more players join the arena. Additionally, bosses receive a health boost that scales with the number of players in the instance. The formula is: scaledHealth = baseHealth * 0.75 * playerCount. For example, with 2 players the boss has 1.5x its base health, with 3 players 2.25x, and with 5 players 3.75x.
Note: Health scaling only applies when 2 or more players are in the instance. Solo players face bosses with standard health values.
How to define a difficulty
Difficulties are defined in the content_packages folder in the dungeon package file of instanced dungeons. This file is located at /plugins/EliteMobs/content_packages/[your_dungeon_name]/[package_file].yml and should be alongside other dungeon settings like contentLevel and name.
Let's take a look at an example:
difficulties:
- levelSync: 60
name: normal
- levelSync: 50
name: hard
- levelSync: 40
name: mythic
This sets three difficulties. name supplies the menu label. levelSync and
id are optional; omitting levelSync applies no level sync. Recognized difficulty
names can supply a missing ID, as described below. Prefer explicit IDs in new packs.
The name is the name of the difficulty, as will appear in the difficulty setting in-game. This can have any name.
The levelSync sets the item level cap for the instanced dungeon, as explained above in this page.
You can have as many or as few difficulties defined as you want. Simply add or remove entries to the difficulties setting using the same format.
Relative Level Sync
Level sync can also use relative values instead of absolute numbers. Always quote the value. YAML resolves an
unquoted +5 to the plain integer 5, and the leading + is gone by the time EliteMobs looks at it -- so levelSync: +5
silently becomes an absolute sync at level 5, and levelSync: +0 becomes an absolute 0, which disables level sync
entirely. Unquoted negatives such as levelSync: -10 happen to survive, because the - is preserved and EliteMobs still
reads it as relative -- but quoting every value is the only form that is unambiguous:
difficulties:
- levelSync: '+5'
name: easy
- levelSync: '+0'
name: normal
- levelSync: '-10'
name: hard
Relative values are calculated from the dungeon's base content level, and the result is never allowed below 1. For example, if a dungeon has content level 60:
levelSync: '+5'becomes 65levelSync: '+0'becomes 60levelSync: '-10'becomes 50
This is particularly useful for dynamic dungeons where the content level may vary. On a dynamic dungeon the content level is only known once the instance is created, so the relative value resolves at that point.
An absolute levelSync: 0 — or any value EliteMobs cannot parse — means no level sync at all for that difficulty.
Optional Difficulty ID Field
Set an id on each difficulty entry for power and loot filters. The standard
numeric mapping is 0 = NORMAL, 1 = HARD, 2 = MYTHIC.
Current testing builds also recognize Normal/Hard/Mythic and legacy Easy/Medium/Hard labels, ignoring case, color formatting and surrounding whitespace. The whole package determines which naming scheme applies. Easy or Medium selects the legacy scheme unless its IDs explicitly declare Normal or Mythic. Detection happens before translation; numeric IDs always keep their fixed meaning. A recognized name supplies a missing ID, or supplies a tier for a custom ID.
Unknown definitions warn in console with the package filename. Custom IDs retain
exact matching for authored filters. For automatic loot, an explicit original-ID
mapping in ClassLootSettings.yml takes precedence, followed by the resolved tier
and the configured default. Give unusual names explicit IDs instead of relying on
a guess about what they mean.
difficulties:
- levelSync: 60
name: normal
id: 0
- levelSync: 50
name: hard
id: 1
Powers based on difficulty
It is possible to configure bosses to only have powers at specific difficulties. Let's look at an example:
powers:
- filename: invulnerability_fire.yml
difficultyID:
- 1
- 2
Note: this is a part of the configuration file of the custom boss!
In this case, the boss will only have fire invulnerability for difficulties with the ID 1 and 2.
Loot based on difficulty
It is possible to configure bosses to drop loot specific to an instanced dungeon difficulty. Let's look at an example:
uniqueLootList:
- filename: himiko_boss_drop_axe_tank_normal.yml
chance: 0.05
difficultyID: 0
Note: this is a part of the configuration file of the custom boss!
In this case, the boss will only drop the loot himiko_boss_drop_axe_tank_normal.yml for difficulty 0 and has 5% chance of doing so.
Balancing Normal, Hard and Mythic rewards
The example above gates an authored item file to one difficulty. To give every class appropriate equipment without maintaining three versions of every item, use automatic class loot. It selects difficulty/rank enchantment profiles while keeping each item's name and lore in one place.
The guide includes a table of primary enchantment ceilings and the budget formula used to roll actual drops. Increasing difficulty does not automatically multiply a boss's HP or loot statistics; level sync, powers, boss values and reward profiles each control their own part of the encounter.