[FROG] Level-based Traits for Classes, Actors and Races

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
Level-based Traits 1.0
by Frogboy

Introduction

Alright! My Fire Mage has all her awesome fiery skills of fieriness. Now all she needs are fire-based traits to go with them and she ... will ... be … finished. Okay, so she should probably start out with 10% fire protection and it’ll scale up until around level 50 where she will gain full immunity. Let’s enter this into the editor and … uhhh … crap! * sad trombone *

By default RPG Maker only gives you the ability to make it so that a character either has a trait or doesn’t have a trait. There’s no in-between. Full fire immunity seems a bit too much for a level 1 Fire Mage. And what about my Fighter? He was supposed to get an extra attack every 10 levels? He can’t start with 6 attacks!!!

Well fear not, you can now do these things and more. Actually, you’ve been able to for quite some time with other plugins, so why does this one even exist? I’m glad you asked! All of these other plugins were developed before RPG Maker MV 1.5 which means they rely on you learning how MV stores and processes traits in order to utilize them. So you have to navigate look-up tables and then enter cryptic text into Note tags that you'll totally remember the meaning of a few weeks from now. /s

That’s where this plugin comes into play. I’ve been trying to figure out a good way to implement this feature into RPG Maker MV for a while and the plugin upgrade for 1.5 finally made it possible. Now you can define level-based traits in an easy to understand way that closely resembles the editor itself.

snap2.png snap.png
It's just like using the editor to add traits but with more power.

Here are few examples of what you can easily do as your characters go up in level.

  • Adjust Elemental Resistance
  • Increase Hit%, Critical% and/or Evade%
  • Resist status ailments better
  • Gain immunity to Poison and/or Disease
  • Gain Extra Attacks
  • Reduce Floor Damage
  • Gain a chance to Poison or Blind when attacking
  • Gain addition Skill Types
  • Gain new weapon and armor proficiencies
  • No longer risk being surprised during encounters

How to Use

Using this plugin is easy. I’m kind of hoping that will become my signature. Just about everything you need is right there in the parameters. Every beneficial trait that is relevant to actors, classes or races is listed along with several parameters. I've separated this plugin into three so that you can add only the functionality you need. If you only want to use this for classes and not the others, you can just install that. Having all of this in one plugin was a bit messier in the parameters and required more processing power if you only need one or two of these. If you do need level-based traits for actors, classes and races then just install all three plugins and you're good to go.

Description - This is text that you’ll want to enter so that you’ll know what that particular level-based trait is. An example would be something like “Fire Mage - 20% Fire Resist Lvl 1”. This isn’t required but is very helpful so you know what each one is doing at a glance.

Class/Actor/Race - This is where you select the class, actor or race that this level-based trait belongs to.

Start Level - This is the level that the actor or class gains this trait.

End Level - This is the level that this trait will expire. Because of the way MV stacks traits, it’s often times better to remove one and then replace it with a better version. Otherwise, newer version will be combined and produce harder to manage results.

Trait-specific Parameters - There will always be one or two parameters that you will fill in just as you would in the editor itself. Most of the time, you’ll be able to select easy to understand options from drop-down lists like “Encounter Half” for Party Ability. The exception to this are your custom Types in the database. For whatever reason, the 1.5 plugin parameters don’t have an option to generate a select list from these so you have to enter in the ID until this oversight is remedied.


Examples:

I want my Fighter to gain an extra attack every 10 levels.

Under Class-based Traits -> Attack -> Extra Attacks, enter in these parameter values. Because Extra Attacks are added and not multiplied, you can just add one extra attack every 10 levels and they will accumulate.

Description: Fighter Lvl 10 - 2 Attacks
Class: Select Fighter from the list
Start Level: 10
End Level: 100 (This is always the default end value)
Extra Attacks: 1

Description: Fighter Lvl 20 - 3 Attacks
Class: Select Fighter from the list
Start Level: 20
End Level: 100
Extra Attacks: 1

… do the same for levels 30 and 40 …

Description: Fighter Lvl 50 - 6 Attacks
Class: Select Fighter from the list
Start Level: 50
End Level: 100
Extra Attacks: 1


I want my Fire Mage to gain fire resistance as she levels up.

snap3.png
By adding a short description, you can know at a glance what each entry is doing.

Under Class-based Traits -> Rates -> Element Rate, enter in these parameter values. Because Element Rate is multiplied when stacked, you’ll want to set each one to expire when the next kicks in so that only one is ever added to the actor or class at a time.

Description: Fire Mage Lvl 1 - 20% Resist
Class: Select Fire Mage from the list
Start Level: 1
End Level: 10
Element ID: 2 (Sorry, no way to make list from this)
Percentage: 80

Description: Fire Mage Lvl 10 - 40% Resist
Class: Select Fire Mage from the list
Start Level: 10
End Level: 20
Element ID: 2
Percentage: 60

Description: Fire Mage Lvl 20 - 60% Resist
Class: Select Fire Mage from the list
Start Level: 20
End Level: 30
Element ID: 2
Percentage: 40

Description: Fire Mage Lvl 30 - 80% Resist
Class: Select Fire Mage from the list
Start Level: 30
End Level: 40
Element ID: 2
Percentage: 20

Description: Fire Mage Lvl 40 - Fire Immunity
Class: Select Fire Mage from the list
Start Level: 40
End Level: 100
Element ID: 2
Percentage: 0


Races

You will need the FROG_RaceCore plugin to utilize the Races version of the Level-based Traits plugin.

For my examples, I’ll draw mostly from Dungeons & Dragons where such a system is part of the core character creation mechanic. Like D&D, my examples will all apply at level 1 and be permanent but this plugin does allow you to be more creative and have them scale up with level like in the examples I detailed for actors and classes.

Example:

Dwarf

This race is usually quite hearty and has better constitution than most. As such, they would likely receive a bonus to Max HP and better resistance to Poison. They also tend to be more resistant to Magic.

Under Race-based Traits -> Param -> Parameter -> Max HP, enter in these parameter values.
Description: Dwarven HP Up
Race: Dwarf
Start Level: 1
End Level: 100
Parameter: Max HP
Percentage: 110

Under Race-based Traits -> Rate -> State Rate -> Poison, enter in these parameter values.
Description: Dwarven Poison Resistance
Race: Dwarf
Start Level: 1
End Level: 100
Parameter: Poison
Percentage: 50

Under Race-based Traits -> Param -> Parameter -> Magic Defense, enter in these parameter values.
Description: Dwarven Magic Resistance
Race: Dwarf
Start Level: 1
End Level: 100
Parameter: Magic Defense
Percentage: 120

Elf

This race is typically more lean and nimble than most others. They are usually more attuned with Magic as well. As such, they would receive a bonus to Agility and Magic Attack but take a penalty to Max HP and be more susceptible to Poison. Elves are also taught to use swords and bows from a young age so should gain weapon proficiency in those. They may need to have a slight decrease to Defense as well to balance them out. I’m not going to list out how to set this one or the other common race archetypes as it should be pretty easy to figure out. If you need any help with this, just ask.


Script Calls and Plugin Commands

All races are initially assigned a Default Race that can be configured within the plugin parameters. It doesn't make much sense to just assign races as you could just as easily give the relevant traits to the actor or class instead. So typically, you'll allow the player to choose their character's race and use one of the following two methods to assign it. You can also get any actor’s race if you need to use it outside of this plugin.

Script Commands to get and set races

Code:
FROG.LBTR.setRace(actorId, race);
FROG.LBTR.getRace(actorId);

Plugin Commands to get and set races (Don't include the brackets)

Code:
SET_RACE [actorId] [race]
GET_RACE [actorId] [variableId]

Terms of Use

This plugin can be used in commercial or non-commercial projects. Credit Frogboy in your work.


Changelog

Version 1.0 - Initial release


Download

My Plugins Page - https://frogboymv.github.io/
All Level-based Traits Plugins - https://github.com/FrogboyMV/LevelBasedTraits
Race Core - https://github.com/FrogboyMV/RaceCore
 
Last edited:

gambitben

Veteran
Veteran
Joined
Jun 8, 2013
Messages
161
Reaction score
127
First Language
Spanish English
Primarily Uses
RMMV
I've been following couple of plugins you've done for quite some time now and I have to say: you are a blessing for this community. Every plugin you make is not only useful but clean and well thought. I say kudos to you. Also you have a DQ slime in your pic, even more kudos ;). I'll definitely use this. Thank you so much, keep up the amazing work. Someone had to say this :)
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
Hey, thank you! I very much appreciate it. As someone who has tried using plugins that sounded great but then didn't really want to go through the hassle of figuring them out, I try to make mine very easy to set up. I'm not criticizing other developers as there's definitely a need for all types of plugins and the confusing ones will often times have more power user functionality that may be needed. But for mine, I'm mostly shooting for more targeted functionality that you can just install, easily configure and it just works for its intended purpose. The new plugin parameters are also a godsend for this goal and can often times even eliminate the need to use note tags completely which is why my personal plugins are finally making their way out to the rest of community.

So yeah, thanks again! I will keep releasing plugins when I think there's a need and I have them polished enough to put out there.
 

PathosFear

Veteran
Veteran
Joined
Dec 23, 2012
Messages
53
Reaction score
10
First Language
Swedish
Primarily Uses
N/A
Is this compatable with yanfly, and if so, in what order should I place the plugins? :)
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
It's hard to say precisely because Yanfly has about a million plugins but I believe it is for the most part. This plugin isn't greedy which is a term I use (don't know if a real term exists) when a plugin overwrites existing methods as opposed to just extending them. If a plugin only extends methods, it's usually won't conflict with other plugins. The only way to know for sure is to plug it in and see if you get any issues. Because this plugin isn't greedy, it shouldn't matter where you place it in your list.
 

Johan

Villager
Member
Joined
Feb 23, 2017
Messages
14
Reaction score
2
First Language
Swedish
Primarily Uses
RMMV
Hey Frogboy!
I have one question for you;
Is it possible to add element rate via plugin command or script ?
This plugin is nice :) But this plugin doesn't fit into my game that I'm trying to do :( but very close to it.

Will only use one "Main-Actor", and you will start with 0 from all stats and have to build your char by your self how you want it to be.
Even spells. (Kind of Dark soul 3, but something extra to it. Iknow there is someone that has done DS3 for RPGMV.) (Read more on my other post)

I'm going to keep this plugin anyway because I'm planning to use about 10-20 Actor more actor that you can't change stats on.
(Will be most used for to hire NPC for some troops you needs help with).

Sorry for 2x posting :(
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
This plugin probably isn't what you want for such a system. I'm currently working on a plugin that is designed to mimic Skills from Dungeons & Dragons. It basically gives you a bunch of actor variables and allows the player build those up via points they earn when leveling up similar to SumRndmDde's Stat Distribution plugin. The difference is that these are mostly intended to be used out of battle but there's nothing stopping you from doing so.

While this isn't what you're looking for, there is also a add-on plugin that enables traits to be added not based on level like these plugins but by the amount the player builds up their Talents. This way, the player can choose to build up things like a Weapon Proficiency talent or an Elemental Resistance talent and such.

I've been saying this for a while now but I really am close to releasing it now. I'm can't say if it's exactly what you're looking for but it sounds a lot closer than the level based trait plugins here.
 

Parallax Panda

Got into VxAce ~2014 and never stopped...
Veteran
Joined
Oct 29, 2015
Messages
1,038
Reaction score
1,312
First Language
Swedish
Primarily Uses
RMMV
@Frogboy

Hello Frogboy, I'm trying to test out adding extra attacks for a fighter when he levels up but I get no results when performing a "Battle Test" from the troop menu in the database.

I wonder what I'm doing wrong (or if this plugin maybe has some issues with the latest verion of MV? This is how I have it set up. I added one trait for an extra attack to be gained at level 7 and that should expire at level 14 when you'll get another trait that adds 2 extra attacks instead.



And while it's not included in the screenshot here, Harold is set to "Fighter" which is the second class (ID002) in the database under the class tab.
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
@Parallax Panda
I will try to replicate this and see if I can find an issue. Thanks for bringing this to my attention.
 

ryu395

Warper
Member
Joined
Jun 11, 2019
Messages
2
Reaction score
0
First Language
German
Primarily Uses
RMMV
The parameters where do I need to set them? (when I add the plugins (core and levelbasedtraits)they all show empty with no parameters in the menu) MV v. 1.6.2
 

ryu395

Warper
Member
Joined
Jun 11, 2019
Messages
2
Reaction score
0
First Language
German
Primarily Uses
RMMV
I've also got a problem with the plugin. An inconsistency I don't understand.
I'm using the plugin to increase the hit chance based on level. Now it works out pretty well.....EXCEPT suddenly the to hit chance drops after a event where I have text and sound effects and then after a battle it is raised again to the correct value.
(other text and sound effects don't have the problem).

My character starts at level 5. I have a base to hit probability of 100 set for his class (its the first class in the list). Then I use the plugin:
["{\"Description\":\"\",\"Class\":\"1\",\"Start Level\":\"1\",\"End Level\":\"100\",\"Ex-Parameter\":\"0\",\"Percentage\":\"15\"}","{\"Description\":\"\",\"Class\":\"1\",\"Start Level\":\"2\",\"End Level\":\"100\",\"Ex-Parameter\":\"0\",\"Percentage\":\"5\"}","{\"Description\":\"\",\"Class\":\"1\",\"Start Level\":\"3\",\"End Level\":\"100\",\"Ex-Parameter\":\"0\",\"Percentage\":\"15\"}","{\"Description\":\"\",\"Class\":\"1\",\"Start Level\":\"4\",\"End Level\":\"100\",\"Ex-Parameter\":\"0\",\"Percentage\":\"5\"}","{\"Description\":\"\",\"Class\":\"1\",\"Start Level\":\"5\",\"End Level\":\"100\",\"Ex-Parameter\":\"0\",\"Percentage\":\"5\"}"

What is now is that the to hit is 140%. Then 2 events happen where the to hit stays as is....then after a third text + sound effect event suddenly it drops to 110%. After th enext combat though it is 140% again.
 

adamspecial

Veteran
Veteran
Joined
Mar 21, 2018
Messages
34
Reaction score
6
First Language
Italian
Primarily Uses
RMMV
Hi @Frogboy
I'm looking to have the traits value added by your plugin being calculated by a formula. For example, the Poisoned State Rate should be something like 100 - this.atk. However, no formula works (I always get a NaN% as a result in the in game status menu), and I'm guessing no formula will ever work. Is my assumption correct? Should I just give it up?
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
@adamspecial
Did you enable Add to Formulas in the Talents plugin parameters? Are you using the abbreviation in the formula box?
 

adamspecial

Veteran
Veteran
Joined
Mar 21, 2018
Messages
34
Reaction score
6
First Language
Italian
Primarily Uses
RMMV
@adamspecial
Did you enable Add to Formulas in the Talents plugin parameters? Are you using the abbreviation in the formula box?
I'm sorry it took a while to reply, but I was trying to wrap my head around yours and gave up.

Are you saying I should have your Talent Core plugin enabled? From what I read, the Add to Formulas option only enables a talent's score to be used in formulas. I used every kind of abbreviation I know (this.atk, a.atk, user.atk, actor.atk) nothing works.
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
Formula boxes use a for the attacker and b for the defender. With Add to Formulas turned on, you can use Talent abbreviations just as you would attack .atk or defense .def. So if you have a Steal skill that utilizes a talent called Pick Pocket with an abbreviation of .pick, you could include a.pick in your formula to calculate something.

As far as Poison State Rate is concerned, I don't believe RMMV allows this to be calculated with a formula by default. I'd bet that Yanfly has a plugin that would get you around that restriction, though.

If I have the wrong idea about what you're trying to do, sorry about that.
 

adamspecial

Veteran
Veteran
Joined
Mar 21, 2018
Messages
34
Reaction score
6
First Language
Italian
Primarily Uses
RMMV
Formula boxes use a for the attacker and b for the defender. With Add to Formulas turned on, you can use Talent abbreviations just as you would attack .atk or defense .def. So if you have a Steal skill that utilizes a talent called Pick Pocket with an abbreviation of .pick, you could include a.pick in your formula to calculate something.

As far as Poison State Rate is concerned, I don't believe RMMV allows this to be calculated with a formula by default. I'd bet that Yanfly has a plugin that would get you around that restriction, though.

If I have the wrong idea about what you're trying to do, sorry about that.
No worries. I just wished for you to confirm that not even with your plugin one can sneak formulas inside a state rate. Unfortunately, I don't think Yanfly (or anyone) has ever done something like this. Thank you anyway!
 

Frogboy

I'm not weak to fire
Veteran
Joined
Apr 19, 2016
Messages
1,684
Reaction score
2,180
First Language
English
Primarily Uses
RMMV
Correct. This plugin won't do that. You might be able to construct your own rate within the formula box, though. For instance, you could calculate your own 50% Poison rate by doing something like...

Code:
(Math.random() > .5) ? b.addState(4) : 0;
This just uses a random number but it could incorporate a Poison Resistance talent or something. This could be very tedious to set up and debug, though. Every different Poison attack would need to be set up like this.

Edit: When I say formula box, I mean the one labeled formula in Skills and Items, not in States.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

I wrote a nice animated preloading system for mv+mz today. It only supports graphic assets atm, should it support audio too? See it in action in my recent minigame @
I posted my first commercial game on the forums, and now waiting for approval.
fingers crossed.
TMW the air quality is so bad, your hair changes color every time you wash it. :LZYyuck:
Finished two animations today. :kaojoy:
Sigony wrote on Ksi's profile.
Just wanna say that I love your videos.
When are you fighting Floyd Mayweather?

Forum statistics

Threads
102,999
Messages
996,634
Members
134,482
Latest member
Kartof
Top