Skills are amazing and unique abilities that players can use to defeat their enemies or buff their party mates fighting and surviving. Skills are either passive i.e they do not require a casting action and are triggered by a specific action (like hitting an entity, or being damaged), or active.
Before casting skills, players must first bind them i.e choose a keybind that they will need to press in order to run that skill.
Skills are class-specific. When changing class, a player will lose their previous skills and gain new ones.
Binding skills
Every player has multiple skill slots which they can use to bind active skills to certain keybinds. You cannot cast any active skill unless it is bound. The number of skill slots a player has is determined by the player's class, and is configurable : for example, magic-oriented classes like Mages and Wizards can have more skill slots (and therefore skill casting opportunities) than physical-oriented classes like Warriors or Brutes. You may find more information about skill slots under the player classes wiki page.
You may bind skills using the skill GUI (type /skills
to open it up). You may see your current bound skills on the right side of the GUI. After selecting a skill by clicking on it, you can click any of the books on the right side to bind the selected skill. The book item will then update and show the bound skill. Some skill slots (see Player Classes can have the can-manually-bind
field toggled off, in which case the only way to bind a skill to this slot is to use the /mmocore admin skill bind <skill> <player>
command.
Since MMOCore 1.11, you can choose to have your passive skills require binding or not. In your class skill configuration, set the needs-bound
field to false
to make your skill permanent. Permanent skills always take effect as soon as they are unlocked by the player. Only passive skills can be permanent.
Once your skills are upgraded and bound, you may cast them.
Upgrading a skill
Upgrading a skill increases its power. Players can choose the skill they would like to upgrade based on their play style and skill path they decided to follow. Upgrading a skill takes one skill point which are earned when leveling up. You can upgrade your skills in the skill GUI (/skills
).
Select the skill you'd like to upgrade by clicking on it, once it's selected it will change the GUI name. You can then upgrade the selected skill by clicking on the corresponding item. On the upgrade item column, you can see how powerful the spell would be with a higher level.
Skill Unlocking
Each skill can be locked, unlocked but not usable, or usable. Locking a skill means that it cannot be seen in the player's skills UI, and the player is unaware of its existence. When a skill is unlocked, it becomes visible to the player UI but can only be bound to a slot if the player meets the level requirements associated with the skill. A skill can be unlocked or locked through triggers(recommended) or commands.
If you unlock a skill for which information is not filled in the class folder, it will be considered directly usable(at level 1) and won't be upgradable.
Skill categories & formula
Each skill can be assigned to a list of categories through the field categories
. By default, each skill is associated to two categories:
- its skill ID which name is the skill ID and to the categorie PASSIVE/ACTIVE depending on if it is an passive/active skill. These categories can be used to parse formulas and target a specific subset of skills.
Formulas enable the user to check if a condition on the skill categories is met. You can use all the classic operators for the such as !(negation), ||(or) and &&(and). They can be used to filter which skills can be bound to a specific skill slot or to apply skill buffs to a subset of skills.
Examples slot config for class file. For more details check Skill Slots
# The valid format for
formula: "<FIRE_STORM>" #Will only target fire storm
formula: "!<PASSIVE>&&<FIRE>" #Will target active skills with the fire category
#This is the same as <ACTIVE>&&<FIRE>
Example categories add to the skill file in the skills folder
categories:
- "CATEGORY_1" #Referened with <CATEGORY_1> in a formula
- "CATEGORY_2"
Skill Buffs
A skill buff modifies the value of a certain skill modifier. It can target one or multiple skills using category formulas and can only target 1 modifier. Skill Buffs can only be created through skill slots and triggers.
#Example
triggers:
- 'skill_buff{formula="true";modifier="cooldown";amount=-10;type="RELATIVE"}' #-10% cooldown to all skills.
- 'skill_buff{formula="<FIRE_STORM>";modifier="damage";amount=20;type="FLAT"}'#+20 dmg to fire storm.
- 'skill_buff{formula="<MY_OWN_CATEGORY>";modifier="damage";amount=20;type="FLAT"}'
#Will target all the skills who have MY_OWN_CATEGORY in their categories list.
Skill Folder
The /skills
folder houses all of the skills that come with the plugin. Most skills are hardcoded into the plugin jar. If you do not want to use a skill, simply do not assign it to a class. Each skill has its own YAML configuration file, where you can edit its lore, , how it looks in the /skills menu, and the default parameter values for that skill.
MMOCore comes with 90+ default skills which it shares with MythicLib and MMOItems. MMOCore also enables you to create your own skills, either using the MythicMobs, MythicLib/MMOLib or even SkillAPI scripting language. More information below.
Example Skill
name: Fire Storm
material: 'BLAZE_POWDER:1'
lore:
- Casts a flurry of 6 fire projectiles onto
- nearby enemies, proritizing the initial
- target. Each projectile deals &c{damage} &7damage
- and ignite the target for &c{ignite} &7seconds.
- ''
- '&e{cooldown}s Cooldown'
- '&9Costs {mana} Mana'
damage:
base: 5.0
per-level: 3.0
#Optional: The decimal format used for this skill parameter.
decimal-format: '0.#'
ignite:
base: 2.0
per-level: 0.1
mana:
base: 15.0
per-level: 2.0
cooldown:
base: 5.0
per-level: -0.1
max: 5.0
min: 1.0
This is an example skill showing the name option, lore, and several attribute modifiers.
For each skill you can edit the display name, how it looks in the /skills, and then all of its modifiers. The base option is how much damage/value it will have by default, and then per-level is what it will change by each time you level up the skill using skill points. There is a max and minimum for these values as well, that way you can't have a -2sec cooldown. You can also set a specific `decimal-format ` for each parameter that will be used when parsing the corresponding placeholder, if it is not specified the default mythiclib decimal format will be used.
The material
option determines what icon will display in the player's skill list. Using <MATERIAL_NAME>:<integer>
will apply a custom model data to your skill icon, where the integer input is the custom model data being used.
Finally the unlocked-by-default
option enables to say if a skill is unlocked or not by default. If this option is not filled the skill will be considered as unlocked-by-default.
Binding MythicMobs skills to MMOCore skills
Since MMOCore 1.9 custom skills are handled within MythicLib, please refer to this wiki page.
Making a passive skill
If you want to make a passive skill (using MythicMobs or SkillAPI) all you have to do is add passive-type: TYPE
to your skill YML file in the '/skills' folder. Adding a passive type to your skill will prevent it from being bound and will automatically cast during specific events, depending on the passive type specified. You can see all Trigger Types on this page.
Editing the skill menu
# GUI display name
name: 'Selected Skill: &6{skill}'
# Number of slots in your inventory. Must be
# between 9 and 54 and must be a multiple of 9.
slots: 54
items:
skill:
slots: [ 10,11,12,19,20,21,28,29,30,37,38,39]
function: skill
name: '&a{skill} &6[{level}]'
lore:
- ''
- '{unlocked}&a✔ Requires Level {unlock}'
- '{locked}&c✖ Requires Level {unlock}'
- '{max_level}&e✔ Maximum Level Hit!'
- ''
- '{lore}'
next:
slots: [ 47 ]
function: next
item: PLAYER_HEAD
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTliZjMyOTJlMTI2YTEwNWI1NGViYTcxM2FhMWIxNTJkNTQxYTFkODkzODgyOWM1NjM2NGQxNzhlZDIyYmYifX19
name: '&aNext'
lore: { }
previous:
slots: [ 2 ]
function: previous
item: PLAYER_HEAD
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmQ2OWUwNmU1ZGFkZmQ4NGU1ZjNkMWMyMTA2M2YyNTUzYjJmYTk0NWVlMWQ0ZDcxNTJmZGM1NDI1YmMxMmE5In19fQ==
name: '&aPrevious'
lore: { }
reallocate:
slots: [45]
function: reallocation
item: CAULDRON
name: '&aReallocate Skill Points'
lore:
- ''
- 'You have spent a total of &6{total}&7 skill points.'
- '&7Right click to reallocate them.'
- ''
- '&eCosts 1 skill reallocation point.'
- '&e◆ Skill Reallocation Points: &6{points}'
slot:
slots: [ 8,17,26,35,44,53 ]
function: slot
item: GRAY_DYE
name: '&aSkill Slot {slot}'
no-skill: '&cNone'
lore:
- '&7Current Skill: &6{skill}'
- ''
- '{slot-lore}'
- ''
- '&7&oCast this spell by pressing [F] followed'
- '&7&oby the keybind displayed on the action bar.'
- ''
- '&e► Left click to bind {selected}.'
- '&e► Right click to unbind.'
- '&e► Shift left click to select.'
skill-level:
slots: [ 6,15,24,33,42,51 ]
function: level
# Skill level offset, should be changed
# according to the amount of inventory
# slots the skill-level item occupies.
offset: 2
# Item displayed if the skill level is
# too low to display a level item in the GUI
too-low:
item: AIR
item: LIME_DYE
name: '&a{skill} Level {roman}'
lore:
- ''
- '{lore}'
upgrade:
slots: [ 15 ]
function: upgrade
item: GREEN_STAINED_GLASS_PANE
name: '&a&lUPGRADE {skill_caps}'
lore:
- '&7Costs 1 skill point.'
- ''
- '&eCurrent Skill Points: {skill_points}'
First of all you can edit the general GUI settings like its name and slots.
name: Your Skills
slots: 45
Notice how the config sections that fall under the items
section share very similar properties: name
(the item display name), lore
(the item description/lore), item
(the item material), slots
(where the item is placed in the inventory, it can be a list) and function
(what the item does). These can (and should) all be edited to your needs.
Editing Item Slots
If you want to have your item displayed on multiple slots, use something like
slots: [1, 2, 3, 4]
The following formats won't work
slots: 1
slot: 1
Item Functions
function
is the most confusing option when editing MMOCore custom GUIs. This option dictates how the item behaves when clicked, and what placeholders to parse in the item lore. Let's go over all the items in the GUI specifically.
next
and previous
are the easiest ones, these are the items used for pagination.
skill
is the item displayed for every skill available to the player. Its lore is a bit complicated
- The line starting with {unlocked} only displays if the player has unlocked the skill
- The line starting with {locked} only displays if the player has NOT unlocked the skill yet
- The line starting with {max_level} displays when the player has reached the max skill level
- {lore} pastes the entire skill description (see this)
switch
is the item that you'd click when switching from binding to upgrading mode
skill-slot
is the item used in the binding mode
skill-level
are the items used to tell the player how the selected skill would behave if it had a higher level
upgrade
is the item clicked when you want to upgrade the selected skill
****