Atherys / AtherysRPG

An RPG plugin created for the A'therys Horizons server
GNU General Public License v3.0
3 stars 3 forks source link

Implement Classes #107

Closed cicetil closed 2 years ago

cicetil commented 2 years ago

As we slowly transition out of the pure skill-picking freedom design, we should implement a more player-intuitive way of choosing an archetype, their starting skills, and resetting skills. This would also allow us to expand the system by adding class-unique benefits such as passive effects using attributes. Instead of a player choosing their starting skill, they will choose a class which gives them access to configured skills. Players can use /class to show a list of all classes, a description, and skills included. /class choose <class> will allow players to choose the class they want. A confirmation text will display which can be clicked to confirm choosing that class. Once a class is chosen, the player is given the skills and/or other effects listed in the config. Players can only have a single class at a time.

There should also be an admin-only command to force-change a specific player's class. /class set <player> <class>

Only skills with the root-skill parent node can be granted to classes. When a player uses /skills reset it should not remove the skills granted by their class, just reset their skills to the default for that class. When a player chooses a different class, it will reset all of their unlocked skills and attributes. Any granted skills will also be removed before giving them the new class's skills. Players should not be able to use /skills without having a class. Doing so will give a message telling them to choose a class.

Example Config

classes {

   "Initiate" {
        starting-skills= [
           "fireball"
          ]
       },
   "Knave" {
        starting-skills= [
           "sprint"
          ]
       },
   "Acolyte" {
        starting-skills= [
           "invocation"
          ]
       },
   "Squire" {
        starting-skills= [
           "shield"
          ]
       },
   "Brawler" {
        starting-skills= [
           "bash"
          ]
       }
   }

Each class has a name and a list of starting-skills which is unlocked with that class. This system can later be expanded to grant starting attributes. This could allow for for bonus unique passive effects for each class.