Skills and Effects

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • The ability to create an unlimited amount of skills and effects that range from faster mining to be able summon mobs and kill your enemies is one of the fantastic main features of RCSkills. This tutorial will explain in detail and depth how to configure skills and effects for the RCSkills plugin.
    RCSkills makes it possible to create multiple skill and effect packages that can be added and removed individually. This makes it possible for other developers to create their own skills and effects and distribute them individually. However it is not possible to use skills or effects from other packages inside your own package. You can only use the main effects that are provided in the core code of RCSkills. You can look at the Configuration tutorial to learn how to add new skills and effects packages.

    If you want to learn how to program new skills and effects, take a look at the RCSkills API tutorial.

    Basic Configuration

    For all configs in the RCSkills plugin, there are some rules and basic configuration schemas you have to learn and get used to in order to create your own skill and effect configurations. You will also need some of this knowledge when configuring Professions and Classes or Mob Abilities.

    Inheritance

    One thing that makes RCSkills such a powerful plugin is its hierarchy in which skills are loaded and able to overwrite other configs higher up in the hierarchy tree. Every programmed skill will create a default config inside the skill-configs folder and every effect inside the effect-configs folder. Normally you dont need to touch these configs or make changes to them, since it is best practice to create your own alias skills for each skill you want to use inside your Professions and Classes. However if you want to make changes globally to all skills and their respective aliases you can apply these changes to the configs inside these two folders. But keep in mind that every other config can and will override these properties as soon as they are defined.

    The inheritance goes as follows:

    skill-configs ◄─ alias-configs ◄─ profession inline configeffect-configs ◄─ skill-configs inline ◄─ alias-configs inline ◄─ profession skill config inline

    An example for this would be that you create an alias skill for a fireball. In the alias skill you set some damage values and a cast time of 3 seconds. Now you add this skill to the mage and priest profession, but you want the mage to be able to cast the fireball instantly. Instead of creating a complete new skill you simply override the cast time in the mage profession config.

    Base Section

    For skill and effect configs there is something called a BaseSection or ConfigurationSection that can be configured to dynamically change with the skill environment (profession, player, level, etc). Whenever you read BaseSection inside an example config you can use any of these sub values to change the result.

    You dont need to specify all values shown below. When nothing is specified it will use a default value that does not modify the end result.

    Source Code

    1. section-name:
    2. # flat base value that does not change
    3. base: 10.5
    4. # the end result will never exceed the cap
    5. cap: 100
    6. # the end result will never be lower than this value
    7. low: 15
    8. # adds combined value of the equiped weapons
    9. weapon-damage: true/false
    10. # multiplies this value with the level of the skill/ability holder (e.g. custom mob)
    11. # in this case if the player has a level of 30 it would add 30 points
    12. level-modifier: 1.0
    13. # same as level-modifier just with the profession level of the skill
    14. # if this is a skill from the warrior it would take the level of the warrior class and multiply it
    15. # you can also use negative values to substract from the end result
    16. prof-level-modifier: -0.5
    17. # the path-level-modifier adds all profession levels for the path of the profession of the skill and multiplies them
    18. # e.g. berserker is a subclass of warrior and on the same path, so the level of the warrior
    19. # and berserker class would be added and then multiplied with this value
    20. path-level-modifier: 0.1
    21. # only applies when the skill is levelable
    22. skill-level-modifier: 0.0
    23. # you can use resource modifiers for all available resources of the player
    24. # this is only an example with the "<resource>" resource. Other resources could be energy, souls, etc
    25. # also note that health is considered a resource and can be used the same as below
    26. # substitute <resource> for the name of your resource, e.g. mana, health
    27. # multiplies the base value of the resource with this value
    28. <resource>-base-modifier: 10
    29. # if set to true, it will multiply with the max value of the resource instead of the current value
    30. <resource>-from-max: true/false
    31. # value to multiply current or max value with
    32. <resource>-modifier: 1.0
    33. # multiplies this value with the percentage value of the resource, e.g. 0.5 if you have 50/100 mana
    34. <resource>-percent-modifier: 5.0
    35. # you can use attributes the same as resource, with the difference that you can only multiply with the attribute value
    36. # replace <attribute> with strength for example and the attribute value will be multiplied with 5
    37. <attribute>-attr-modifier: 5.0
    38. # you can also use the levels of skills and professions outside of the given skill and its profession
    39. # just replace the placeholder with the skill/profession name to multiply the level of the skill or profession with the given value
    40. <skillname>-skill-modifier: 0.0
    41. <profname>-prof-modifier: 0.0
    Display All



    Custom Section

    Every skill and effect has a set of default properties you can configure (e.g. damage, range, cooldown, casttime, etc). Additionally to these default properties a skill can have an infinite number of custom properties that are defined by the programmer of the skill. To see what custom properties are available you need to look at the documentation of the skill that was provided by the person who programmed it. Programmers can take a look at the RCSkills API tutorial for best practices and guidelines on how to program new skills.

    If a skill has custom properties you can configured them under the custom section of the skill. See this excerpt of a skill config:

    Source Code

    1. name: Example Skill
    2. description: 'This is an example skill to demonstrate custom properties.'
    3. # here is the custom section you can configure the given properties
    4. custom:
    5. # the key name is provided by the skill author
    6. bleed: true
    7. # you can have base sections inside the custom section
    8. # also the custom keys can have the same name as other keys from the default skill config
    9. damage:
    10. base: 100
    11. level-modifier: 5.0
    12. # end of the custom section
    13. cooldown:
    14. base: 2.0
    15. # as you can see this property has nothing todo with the custom property
    16. damage:
    17. base: 50
    18. path-level-modifier: 2.0
    Display All


    Creating a Skill

    Before you go all crazy and start creating your skills you should think of a folder structure for your alias-skills/ to avoid chaos later on. A good thing would be to create separate sub folders for your permission skills, classes, professions and global skills. Remember that you can create as many sub folders as you want inside the professions/ and alias-configs/ folders. If you are unsure about how they work, take a look at the Configuration Tutorial.

    An example folder structure for your alias skills could be as follows. You can always move things and create new folders without breaking stuff.

    classes--| warrior--|--| paladin--|--| berserker--| rogue--| --| assassinprofessions--| alchemistpermission-skills--| moderators--| buildersprefixesitem-skillsglobal-skills

    After picking a folder structure that suits your needs it is time to create your first skill. Every alias skill needs a template skill (the programmed skill), so you need to make sure the skill you want to create a config for is loaded (see the skill-configs folder). If the used template skill is non existant it will show you an error in the console what skill does not exist. You server and the RCSkills plugin will work perfectly fine though.

    Every skill has a set of default configuration properties which may or may not affect the outcome of the skill when used. The example skill below lists all those properties, but be aware that you only need to specify the properties you and the skill needs. The example properties below also show you the default values for a normal skill. So if you dont want different values you can keep them completly out of your alias config.

    It is important that the filename is unique and no other skill with this name exists!

    Source Code

    1. # you can disable the skill here
    2. enabled: true
    3. # name displayed to the player
    4. name: Example Skill
    5. # name of the template skill (cannot be an alias skill)
    6. skill: example-skill
    7. description: 'An description that will show when typing /skill info <skillname>.'
    8. usage:
    9. - Details about the skill usage
    10. - can have multiple lines
    11. # you can specify a level formula different from the default one defined in the levels.yml config
    12. formula: default
    13. # you can prevent leveling of the skill by setting this to false
    14. levelable: true
    15. # when setting this to false the skill cannot be /cast ed or binded to an item
    16. # this can be useful when creating hidden skills for custom items
    17. castable: true
    18. # true will hide the skill from all accessable lists of a normal player
    19. # very useful for permission or system skills you dont want the player to see
    20. # use in combination with castable: false for custom item attachment skills
    21. hidden: false
    22. # allows/prevents the usage of the skill in or out of combat
    23. use-in-combat: true
    24. use-out-of-combat: true
    25. # takes a list of skills that will be unlocked and locked together with this skill
    26. # you can make a moderator skill that has sevaral linked skills like worldedit or teleport commands
    27. # you then only need to give the moderator skill and the other skills will be added too
    28. # but you could give someone the worldedit skill only without the moderator skill
    29. linked-skills:
    30. - list of skills
    31. - example2
    32. # you can add additional effect types as a list (list of types: http://git.raid-craft.de/raid-craft-de/skills/blob/master/src/main/java/de/raidcraft/skills/api/combat/EffectType.java)
    33. # the effect types modify the combat behaviour of the skill (like reduction of phyiscal damage)
    34. # the programmer of a skill will already define effect types that make sense for that type of skill but you can add additional effects here
    35. types:
    36. - PHYSICAL
    37. - DEBUFF
    38. # almost the same as the effect type, elements affect the handling of the skill in combat
    39. # list of elements: http://git.raid-craft.de/raid-craft-de/skills/blob/master/src/main/java/de/raidcraft/skills/api/combat/EffectElement.java
    40. elements:
    41. - FIRE
    42. reagents:
    43. # skill requires 5 purple wool every time it is cast
    44. # make sure you use single quotes if the item name has subdata
    45. 'wool:10': 5
    46. # you can also use custom items
    47. awesome_custom_item_name: 1
    48. # you can specify a weapon type if you want the skill to be only useable with that weapon equiped
    49. # list of weapon types: http://git.raid-craft.de/raid-craft-de/raidcraft-api/blob/master/src/main/java/de/raidcraft/api/items/WeaponType.java
    50. weapons:
    51. - SWORD
    52. # please see the separate tutorial section for the configuration of visual effects
    53. visual-effects: {}
    54. # please see the seprate tutorial section for the configuration of requirements
    55. requirements: {}
    56. use-requirements: {}
    57. # shortcut requirement for the level of the profession
    58. # dependant on where the skill is attached you need the profession with this level to unlock the skill
    59. level: 1
    60. # if the skill is levelable you can specify the max level of the skill here
    61. max-level: 10
    62. # see the part about the BaseSection to learn how to configure these properties
    63. # damage of the skill when cast on a target
    64. damage: BaseSection
    65. # casttime/warmup in seconds
    66. casttime: BaseSection
    67. # cooldown in seconds
    68. cooldown: BaseSection
    69. # range in blocks
    70. range: BaseSection
    71. # exp the skill gives (to the profession) when casted
    72. exp: BaseSection
    73. # this is the part where your effect configs go
    74. # take a look at the "Configuring Effects" part of this tutorial to learn what needs to be configured here
    75. # also note that not all skills apply effects and that you need that information from your skill author
    76. effects:
    77. effect-name: {}
    Display All


    Configuring Effects

    Effects are configured inside the skill config because they are attached to the particular skill that triggered the effect. You can define global effect behaviours with the configs inside the effect-configs folder. For example you can define the duration of the combat effect inside the combat.yml config.

    Effects have very little default properties that can be defined and almost always have custom properties or take configuration from their skills. Please ask your skill developer for the properties you can define for the effects of your skills. They will also be able to tell you what skills apply what effects.
    Below is an example config of an effect. The config begins inlined like show above in the skill config. This is not a separate config file!

    Source Code

    1. effects:
    2. # unique name of the effect (see effect-configs/ folder for a list of effect names)
    3. effect-name:
    4. # display name of the effect as shown to the player
    5. name: Example Effect
    6. # messages to show to the player when applied, removed or renewed
    7. # if nothing is set no message will be displayed
    8. activate-message: ''
    9. deactivate-message: ''
    10. renew-message: ''
    11. # same with skills you can disable effects in the config if they are buggy
    12. enabled: true
    13. # if the effect is stackable you can define the stack amount here
    14. max-stacks: 5
    15. # the following sections take a BaseSection, please see the tutorial above to learn how to configure them
    16. # also these sections only apply if the effects are periodic, expirable, and so on and have no effect otherwise
    17. # all values are in seconds
    18. duration: BaseSection
    19. interval: BaseSection
    20. delay: BaseSection
    21. # may or may not be used by the effect - often the effect uses the damage of skill that triggered it
    22. # this is often used for period effects that do damage over time
    23. damage: BaseSection
    24. # same as with the skills: please consult the separate visual effects tutorial
    25. visual-effects: {}
    Display All


    Visual Effects

    To make your custom skills and effects even more awesome you can customize the visual and sound effects of every skill and effect. For this there are multiple triggers available you can attach effects to. With custom resource packs you can even use your own sounds for the visual effects!

    The visual effects play when the defined trigger is called. Every trigger type can have multiple visual effects, including sounds. Skills have the following trigger:
    • CASTING - Called every tick while the skill is casted
    • CAST - Called after the skill was successfully casted
    • LINE - Called for projectiles
    • IMPACT - Called when projectile hits the target (can be ground)
    • HIT - Called when projectiles hits the target and is not mitigated (only calls on entity hit)
    • BOW_FIRE - Called when bow is fired (projectile launch)
    • DAMAGE - Called when target took damage from the skill
    For effects there are different triggers available:
    • APPLY - Called when the effect is applied to the target
    • REMOVE - Called when the effect is removed from the target
    • RENEW - Called when the effect is renewed
    • TICK - Called every time the effect ticks on the target (periodic effects only)
    • DAMAGE - Called every time the target takes damage from the effect
    When using visual and sound effects there are some resources that always have the up to date information about what sound and particle effects are available.
    For custom effects from the EffectLibrary you can use the following resources:


    Example for a visual Effect Configuration:

    Source Code

    1. visual-effects:
    2. CAST:
    3. 1:
    4. type: custom
    5. # ist diesesmal wichtig!
    6. args:
    7. class: ArcEffect # class von hier wählen: https://github.com/Slikey/EffectLib/tree/master/src/main/java/de/slikey/effectlib/effect
    8. # alle weiteren argumente hier genau wie die public felder in der class schreiben:
    9. height: 3
    10. particles: 150
    11. particle: PORTAL # von hier wählen: https://github.com/Slikey/EffectLib/blob/master/src/main/java/de/slikey/effectlib/util/ParticleEffect.java
    12. type: INSTANT # https://github.com/Slikey/EffectLib/blob/master/src/main/java/de/slikey/effectlib/EffectType.java
    13. # alle weiteren parameter gibt es hier: https://github.com/Slikey/EffectLib/blob/master/src/main/java/de/slikey/effectlib/Effect.java
    14. # vector wird z.b. so angegeben
    15. offset: 10,-5,20
    16. iterations: 5
    17. delay: 20
    18. ...
    Display All

    To be continued...

    5,227 times viewed