taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
TAA_SkillMastery - v1.2.2
Created by taaspider

Terms of Use
Any plugins developed by taaspider are free for use for both commercial and noncommercial RPG Maker games, unless specified otherwise. Just remember to credit "taaspider".

Redistribution of parts or the whole of taaspider plugins is forbidden (which also includes reposting), unless it comes from the official website (linked within the post). You are allowed to edit and change the plugin code for your own use, but you're definitely not allowed to sell or reuse any part of the code as your own. Although not required to use my plugins, a free copy of your game would be nice!


Introduction
This plugin provides functions to add levels and specific level settings to skills. Its goal is to allow a sense of skill mastery, meaning that as a character uses a skill he may slowly get better at using it. What "getting better" means is completely up to the developer: the skill can get stronger, require less MP to cast, add a state with a critical blow, boost party morale increasing defense, and so on. The plugin includes damage modifiers and custom effects that can be applied to specific skill levels, increasing the fealing of getting more powerful as skill mastery grows!

Here's a list of the plugin's main features:
  • Loading skill level data through a JSON file, making it easier to configure and evolve level data throughout the game development;
  • If you're not comfortable working with JSON files, you can also configure skill level data through the Plugin Manager;
  • Provides not only formulas for level variations, but also allow more refined control of each skill aspect for each new level;
  • Allow TP gain to be affected by skill level progression;
  • Skill descriptions change as it levels up;
  • Have specific effects (like applying a state or setting a variable) change as the skill progresses;
  • Make as so skill levels can have specific requirements that must be met before skill XP can be gained to achieve the next level (or prevent a character to learn it in the first place);
  • Allow skills to only gain XP for each battle won, or even restricting it to only when the actor survive the battle;
  • Allow enemy skills to progress as well;
  • Have some skills be unable to level up (like default Attack and Guard skills);


Warning: I'm yet to test the plugin with large numbers of skills, both using a JSON file or the Plugin Manager as source. Although I don't expect that to be a problem while playing the game, I'm worried that its initial setup may affect game load time. If you do test it out before I do please let me know the results so I can act on it faster!

Screenshots


How to Use

You can download the plugin here.

You can also test the plugin using my sample demo project. It was built with MV, but you can open it with MZ as well (just open the game.rmmzproject file and you're good to go).

Place the file in your game's data folder and tell the plugin through the Plugin Manager its name and how to read its objects. While using this option, ignore the parameter "Plugin Manager Skills" should be ignored, as it won't be used.

You can find below basic instructions as to how to setup your JSON file. You must follow the same structure, but you can change each object name to your liking through the plugins parameters.

[
{
"id": <skill id>,
"xpType": 1,
"default": {
"mpCost": <cost>,
"tpCost": <cost>,
"tpGain": <gain>,
"damage": "<damage formula>",
"req": "<requirement, if any>",
"description": "<skill description>",
"dmgMods": [ "<damage modifier tags here", "<dmgMods>", ... ],
"customEffects": [ "<effects tags here>", "<effects>", ... ]
},
"formulas": {
"mpCost": "<cost formula>",
"tpCost": "<cost formula>",
"tpGain": "<gain formula>",
"xp": "<xp formula>"
},
"levels": [
{
"mpCost": <cost>,
"tpCost": <cost>,
"tpGain": <gain>,
"damage": "<damage formula>",
"req": "<requirement, if any>",
"description": "<skill description>",
"dmgMods": [ "<damage modifier tags here", "<dmgMods>", ... ],
"customEffects": [ "<effects tags here>", "<effects>", ... ]
},
{
"mpCost": <cost>,
...
}
]
},
{
"id": <skill id>,
...
}
]

"xpType" must be used to identify how the skill gains xp. There are three possible values:
  1. Skill uses
  2. Battles won
  3. Battles survived
If no value is provided, the plugin will assume "Skill uses" as default.

The "default" tag includes what are the default values if no level specific data is found (so if these are set, you probably won't need to define data for the skill's first level). The plugin will always search first for specific level data, then defaults, and if none are found it will use the values set through RPG Maker's interface.

The "formulas" array is optional, and must be used only if you want to set formulas for MP and TP cost, TP gain or a custom XP curve formula. If setting a formula, the word "level" will be replaced by the plugin with the current skill level.

The "levels" array is used to include specific changes introduced by each level. You don't need to defined all tags for each level if their values are not changed. For example, if MP cost remains constant until level 5, you can omit the mpCost tag from levels 1 to 4 and use it only on the default array, or defined it only on levels 1 and 5.

The "requirements" tag work different than the others, as it is cumulative. So a higher level requirement is the sum of all previous level requirements. That is to prevent inconsistencies if a character tries to learn a skill at a higher level without meeting the requirements for its weaker versions.

The "levels" array must list level object in order. If you want to skip changes on a level, simply replace the object with "null" or an empty object "{}", like the example below:

"levels":[
null,
{
"mpCost": 100
},
{},
{
"tpCost": 10
}
]

If a skill has no data defined in the JSON file, skill levels will be disabled (the skill will always be listed as being at the starting level).

The tags "dmgMods" and "customEffects" are arrays of specific plugin code that allows you to program damage modifiers and special custom effects for each level. For a list of supported tags, please refer to the proper section below.

Configuring skills through the plugin manager follows a similar structure as doing that from a JSON file. The same options are applied, but a few details are handled differently:
  • Whenever MP Cost, TP Cost or TP Gain are set as -1, the value is ignored by the plugin;
  • Blank descriptions, requirements, or damage formulas on a specific skill level won't override the previous level value, contrary to what happens when using a JSON file;
Just keep those rules in mind and follow the parameter windows. Remember that a parameter set in one level overwrites the value set in a previous level, but Custom Effects and Damage Modifiers must be set for each level for it to take effect (those two are not incremental like the rest).

Skill requirements are treated as eval statements. To make use of the user's data (be it an enemy or an actor), use the suffix "a". For example, to define a requirement where agility is higher than 80, use:
a.agi > 80

You can add more conditions with && (and) or || (or). For example: a skill level that requires agility higher than 80, and also have the skill with id 10 already learned:
a.agi > 80 && a.hasSkill(10)

If you want to set a requirement for having a skill at a specific level, just use the function hasSkill with two parameters, being the first the skill id and the second the required level:
a.agi>80 && a.hasSkill(10, 2)

Damage Modifiers are special codes that changes the skill damage formula. Any specific skill can have multiple modifiers. If a level specific modifier is set, it replaces any previous modifiers for the skill. This makes it easier to manage damage progression from one level to another.

Currently, the following modifiers are supported:

CRITICAL: <TYPE>
Replace <TYPE> with one of the options below:
- 0 or NORMAL: Fall back to MVs default critical hit formula;
- 1, NEVER or DISABLE: Remove any chance of the skill resulting in a critical hit;
- 2, ALWAYS, ENABLE or FORCE: Force critical hits on all skill uses;
Examples:
CRITICAL: 0
CRITICAL: ENABLE
CRITICAL: NEVER

DAMAGE MOD: <mod>
DAMAGE MODIFIER: <mod>
Use one of "<mod>" formats to change the skill damage formula:
- <oper> x, <oper> x%: Replace <oper> by +, -, * or /. This will apply the specified operand to add, remove, multiply or divide the damage formula result by the specified number;
Examples:
DAMAGE MOD: +10
DAMAGE MOD: *2
DAMAGE MOD: -5
DAMAGE MODIFIER: +2%
DAMAGE MODIFIER: *10%
- EVAL <expression>: Applies an eval to <expression> to append a clause to the damage formula results;
Examples:
DAMAGE MOD: EVAL * (a.hp/a.mhp)
DAMAGE MOD: EVAL + (a.mp/5)

Despite all examples being listed in upper case, the plugin is case insensitive.

While damage modifiers are applied before the skill is performed, changing the damage output, custom effects are applied AFTER the skill use.

Currently, the following tags are supported:

ADD STATE: <state> <who>
REMOVE STATE: <state> <who>
Use this effect to add or remove a state effect after the skill is used. Replace <state> with the state ID or state name enclosed in double quotes, while <who> must be replaced by one of the following clauses, specifying who will be affected:
  • USER: Affects the skill user;
  • PARTY: Affects the user's whole party (or troop, if used by an enemy);
  • TARGET, or TARGETS: Affects the skill target, be it one or many;
  • DEAD ALLIES: Affects all KOed party, or troop, members;
  • DEAD ENEMIES: Affects all KOed enemies, or party members;
  • ALIVE ALLIES: Affects all alive party, or troop, members;
  • ALIVE ENEMIES: Affects all alive enemies, or party members;
  • PARTY BUT USER: Affects the whole party, except the user;
  • ENEMIES BUT TARGET: Affects all enemies, except the skill targets;
Examples:
ADD STATE: 10 USER
REMOVE STATE: "Poison" ALIVE ALLIES
ADD STATE: "Bleed" ENEMIES BUT TARGET
REMOVE STATE: 15 PARTY

SWITCH n: <action>
SWITCH n - m: <action>
SWITCH n to m: <action>
Changes one or a series of switches states (replace n and m to specify your range). The tag <action> can be replaced with one of the following effects:
  • on: Set the switch to TRUE;
  • off: Set the switch to FALSE;
  • toggle: Toggle switch value;
  • switch x: Copy switch x value;
Examples:
SWITCH 1: on
SWITCH 5 - 10: off
SWITCH 2 - 4: toggle
SWITCH 10: switch 1

SWITCH n: EVAL <expression>
SWITCH n - m: EVAL <expression>
Changes one or a series o switches states (replace n and m to specify your range) according to the result of an eval operation. The tag <expression> must be replaced with a script that returns true or false, or integers (where anything greater than zero will become true, and less or equal to zero false).
Examples:
SWITCH 1: EVAL a.hp/a.mhp > 0.5
SWITCH 2 - 8: EVAL a.hasSkill(4, 5) && a.mp > 150

VAR x <action>
VAR x - y <action>
VARIABLE x <action>
VARIABLE x to y <action>
Changes one or a series of variable values (replace x and y to specify your range). The tag <action> can be replaced with one of the following effects:
  • = N: Sets the variable or range to value N. You can also set to the same value of the variable N using "= v[N]" instead;
  • += N: Add N to the value of the variable. You can also add the value of the variable N using "+= v[N]" instead;
  • -= N: Subtract N from the value of the variable. You can also subtract the value of the variable N using "-= v[N]" instead;
  • *= N: Multiply the variable's value by N. You can also multiply by the the value of the variable N using "*= v[N]" instead;
  • /= N: Divide the variable's value by N. You can also divide by the value of the variable N using "/= v[N]" instead;
  • %= N: Replace the variable's value by the rest of the division of its current value by N. You may also use "%= v[N]" to divide by the value of the variable N;
Examples:
VAR 1 = 10
VARIABLE 7 += v[8]
VAR 2 - 7 *= 2
VAR 1 to 4 /= 3

VAR x: EVAL <expression>
VAR x - y: EVAL <expression>
VARIABLE x: EVAL <expression>
VARIABLE x - y: EVAL <expression>
Changes one or a series of variable values (replace x and y to specify your range) according to the result of an eval operation. The tag <expression> must be replaced with a script that returns integers greater or equal to zero.
Examples:
VAR 1: EVAL Math.floor((a.hp / a.mhp) * 100)
VARIABLE 6 - 11: EVAL Math.round(a.mp / a.hp)
VARIABLE 3: EVAL $gameVariables.value(1) + a.hp

EVAL: <eval clause>
Runs an eval on the <eval clause>. You can access the skill user data using the object "a" (a.hp, a.mp, a.hasSkill(<skillId>), a.actorId(), ...).
Examples:
EVAL: $gameVariables.setValue(1, a.actorId())
EVAL: a.hp > 100 ? $gameVariables.setValue(1, a.hp) : $gameVariables.setValue(1, 100)
EVAL: $gameVariables.setValue(1, Math.min(100, a.hp))

COMMON EVENT: N
Call common event of number N. One important limitation though, is that a multiple Common Event calls as custom effects of the same skill is not currently supported. If you try to insert two or more COMMON EVENT effect, only the last one will be run. You can have one for each level, but not more than one by level.
Examples:
COMMON EVENT: 10

ON CRITICAL
Add this clause to the start of any of the previous custom effect tags so that it will only take effect if the skill has landed a critical hit.
Examples:
ON CRITICAL ADD STATE: 5 USER
ON CRITICAL SWITCH 3: on
ON CRITICAL VAR 7 += 1
ON CRITICAL COMMON EVENT: 2

Note tags can be applied to classes, actors or enemies to define starting skill levels. You can set it one at a time using the full tag, or enclose a list of skills between skill mastery tags:

<TAA_SKM: S[1], L[1], X[10]>

or

<TAA_SKM>
S[1], L[1]
S[2], L[2], X[11]
</TAA_SKM>

You can also specify an interval for L and X, like this:

<TAA_SKM: S[1], L[1,3], X[0,5]>

or

<TAA_SKM>
S[1], L[1,3], X[0,5]
</TAA_SKM>

"S" stands for skill, so the number inside the square brackets must be a valid skill id. "L" means level, and defines the starting level. "X" is xp and is an optional tag. It defines that the skill starts with an amount of xp already gained. This allows you to setup enemies and make it more likely that their skills can level up during battle, or that a playable character included to the party have a skill halfway to the next level.

If you specify an interval for L or X instead of a fixed number, the plugin will calculate a random number inside the interval. This way you can have, for example, enemies in a troop with random experience in the same skill, so that each one may level up at different times. The goal here is to create a layer of unpredictability and make things a bit more interesting to the player!

$gameSystem.getSkillMpCost(skillId, level)
Based on a skill ID and level, returns the skill MP cost. If level is omitted, returns the cost for the skill's first level.​

$gameSystem.getSkillTpCost(skillId, level)
Based on a skill ID and level, returns the skill TP cost. If level is omitted, returns the cost for the skill's first level.​

$gameSystem.getSkillTpGain(skillId, level)
Based on a skill ID and level, returns the skill base TP gain. If level is omitted, returns the base gain for the skill's first level.​

$gameSystem.getSkillDescription(skillId, level)
Based on a skill ID and level, returns the skill's description. If level is omitted, returns the description for the skill's first level.​

$gameSystem.getDamageFormula(skillId, level)
Based on a skill ID and level, returns the skill's damage formula as text. If level is omitted, returns de formula for the skill's first level.​

$gameSystem.actorMeetsRequirements(skillId, level, actorId)
Checks if the actor meets the specific requirements to the referenced skill at the specified level. If level is undefined or out of the allowed level range, returns analysis for the skill's first level.​

$gameSystem.getSkillXpType(skillId)
Based on a skill ID, returns the XP type for the skill: 1 for skill uses, 2 for battles won and 3 for battles survived.​

$gameSystem.getSkillLevel(skillId, actorId)
Based on the skill and actor IDs, returns the skill level. If the actor doesn't know the skill, returns 0.​

$gameSystem.learnSkill(actorId, skillId, customLevel, customXp)
Teaches an actor the referenced skill. You can use parameters customLevel and customXp to start the skill at a specific level, and/or halfway to the next level. These two can be ignored if you wish the actor to learn the skill at its initial level and with no previous experience.​

$gameSystem.getSkillProgression(actorId, skillId)
Returns a number between 0 and 1, where 1 means the next level has been achieved (or the maximum level has been reached).​

$gameSystem.isSkillKnown(actorId, skillId)
Returns true if the actor knows the skill, or false if he doesn't.​

$gameSystem.hasSkill(actorId, skillId, skillLevel)
Return true if actor has skill with level greater or equal to skillLevel. If skillLevel is omitted, return true if has skill with level greater or equal to minimum level.​

$gameSystem.getCurrentSkillXp(actorId, skillId)
Returns the current XP for the skill.​

$gameSystem.getSkillXpToNextLevel(actorId, skillId)
Returns how much XP the actor must gain to reach the next skill level.​

$gameSystem.getSkillUses(actorId, skillId)
Returns the number of times the skill has been used by the actor.​

$gameSystem.gainSkillXp(actorId, skillId, xp)
Adds the specified amount of XP to actor skill.​

$gameSystem.setSkillLevel(actorId, skillId, level)
Set skill level for actor capped at the maximum allowed value.​

Learn Skill
Teach a new skill to an actor setting its initial level and XP. Using the engine default command to add a skill will still work with the skill being added at the minimum level.​

Learn Multiple Skills
Teach a set of skills to an actor at the same time. All skills will be added at their initial levels.​

Gain Skill XP
Increase experience for an actor skill. The amount of experience gained can be determined by a flat value (parameter XP) or through a variable (parameter XP from Variable). If XP from Variable is set to a valid variable, its value is used. Otherwise the flat XP value is applied.​

Change Level
Change an actor skill level. The amount of levels to change can be specified either by a flat value (Level Change) or through a valid variable (Level Change from Var).​

Notes:
  • Obviously this plugin is not compatible with any other that provide skill levels. If the plugin do not customize skill structure, it should be compatible. But at least for now I cannot garantee plugin compatibility.
  • Version 1.2.2:
    • Changed one function call to prevent crashes when using a skill not properly initialized.
    • Added a condition for drawing Skill Mastery gauges to prevent compatibility issues with other plugins.
    • Fixed a bug that could cause the game to crash while reading skill mastery data at boot when using the Plugin Manager as datasource.
    • Added the variable id referencing the current skill ID when evaluating skill requirements.
    • Added two new parameters:
      • Enemy Skill Level Up: allows to disable skill leveling for enemies.
      • Lock Trait Skills: allows to prevent skills made available by traits from leveling up. If enabled, only skills the actor have effectively learned can gain experience.
  • Version 1.2.1:
    • Fixed a bug that causes the equip scene to crash on MZ;
  • Version 1.2.0:
    • Added MZ compatibility;
    • Added a new parameter to specify a list of skills which should not be leveled (like, for example, default attack and guard skills). This prevents this skills from triggering level up animations and having a level added to their names on the skill list;
  • Version 1.1.1:
    • Added support to variables within the SUMMON custom effect clause;
  • Version 1.1.0:
    • Fixed a bug when skill level was not initialized on database. Using the skill would cause the game to crash;
    • Updates custom effect for Add/Remove state:
      • Changed function used to apply/remove state, so that state resistance and intensity are considered. Previously states were added and removed always with 100% chance;
      • Added option to define how likely the state will be applied/removed, much like what we have in the editor;
      • Added options to create conditions before applying/removing states. There's three options: check value of one variable; test one switch; or go wild with an eval clause;
    • Added custom effect integrated with TAA_EnemyReinforcements, allowing skill levels to change reinforcement summoning behavior.
    • Added a new plugin parameter that allows you to disable EnemyReinforcements note tags and use only custom effect for skill levels. If the parameter is disabled, tags included in a skill are always processed, regardless of the skill level. Otherwise, only custom effect SUMMON clauses are considered;
  • Version 1.0.2:
    • Few minor bug fixes;
    • Change in terms of use;
  • Version 1.0.1:
    • Included new custom effects:
      • EVAL clause;
      • Setting variables with eval clauses;
      • Setting switches with eval clauses;
    • Included the option to use intervals for level and xp note tags;
  • Version 1.0.0: Initial release!
 
Last edited:

jno8034

Villager
Member
Joined
Mar 4, 2021
Messages
9
Reaction score
3
First Language
English
Primarily Uses
RMMZ
I hope its okay that I bump this back up.
This is the first plugin I've ever used that has me completely stumped.

I'm trying to build a bootleg Legend of Dragoon addition system in my game so this plugin was perfect since YEP doesn't have a Skill Mastery Plugin for MZ.

I tried to integrate this into my existing project and it didn't seem to be working so I decided to just make sure everything was working and opened a brand new fresh file no other Plugins, no anything. I cleared everything out except for 1 actor, with 1 skill, and no matter what I manipulate, either through the Plugin Manager or the JSON file itself (admittedly not a strong suit of mine), it's essentially as if the plugin isn't even turned on. There's no noticeable change going on.
I tried the demo project and that all works fine, so I'm really confused as to why this isn't working for me.

Not asking for a step by step hand-hold, but maybe some clearer guidance on what things to make sure are done, like a checklist from OP. Or some ideas from others who have had this Plugin working for them.

Thank you so much in advance.
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
I hope its okay that I bump this back up.
This is the first plugin I've ever used that has me completely stumped.

I'm trying to build a bootleg Legend of Dragoon addition system in my game so this plugin was perfect since YEP doesn't have a Skill Mastery Plugin for MZ.

I tried to integrate this into my existing project and it didn't seem to be working so I decided to just make sure everything was working and opened a brand new fresh file no other Plugins, no anything. I cleared everything out except for 1 actor, with 1 skill, and no matter what I manipulate, either through the Plugin Manager or the JSON file itself (admittedly not a strong suit of mine), it's essentially as if the plugin isn't even turned on. There's no noticeable change going on.
I tried the demo project and that all works fine, so I'm really confused as to why this isn't working for me.

Not asking for a step by step hand-hold, but maybe some clearer guidance on what things to make sure are done, like a checklist from OP. Or some ideas from others who have had this Plugin working for them.

Thank you so much in advance.
Hi there!

Well, I haven't gotten much feedback from this one. Since I wrote all the code, I'm biased when it comes to reading the documentation hehe
Can you send me this test project you mentioned? I can take a look and see what's missing to point you to the right direction and add more details to the OP.
 

jno8034

Villager
Member
Joined
Mar 4, 2021
Messages
9
Reaction score
3
First Language
English
Primarily Uses
RMMZ
Thanks so much for getting back to me @taaspider

Good News:
I actually had a coding epiphany since the time of posting this and got the plugin to work via the JSON file.

Bad News:
New problem ;_;
I'm really new here and just getting the hang of the forums, so I ended up creating a new question thread with my new problem. I have linked it below. Basically the intended plugin works. I am able to set up random encounters on the default map and plug in skills and see everything working. But the equip screen crashes every single time I try to open it and it actually does that on the sample project you provided here on this post.
https://forums.rpgmakerweb.com/inde...lmastery-v1-2-0-crashing-equip-screen.134222/
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
Thanks so much for getting back to me @taaspider

Good News:
I actually had a coding epiphany since the time of posting this and got the plugin to work via the JSON file.

Bad News:
New problem ;_;
I'm really new here and just getting the hang of the forums, so I ended up creating a new question thread with my new problem. I have linked it below. Basically the intended plugin works. I am able to set up random encounters on the default map and plug in skills and see everything working. But the equip screen crashes every single time I try to open it and it actually does that on the sample project you provided here on this post.
https://forums.rpgmakerweb.com/inde...lmastery-v1-2-0-crashing-equip-screen.134222/
The new issue was actually quite simple to fix (can't believe I didn't see it before). I've replied to the second thread with an attached new version for you to test and confirm if everything is working. If it turn out ok then I'll officialy release it for everyone! :)
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
The fix is finnaly published as version 1.2.1!
 

blade911

Veteran
Veteran
Joined
Jul 24, 2015
Messages
86
Reaction score
29
First Language
English
Primarily Uses
When trying to use with visustella itemequipcore I get error
Cannot read property 'getSkillLevel' of undefined
 
Last edited:

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
When trying to use with visustella itemequipcore I get error
Cannot read property 'getSkillLevel' of undefined
I'll try to setup a test project to replicate the issue. However, it would be really helpful if you could share the whole error message from the console. Can you take a print from the complete error message in the game console and send it here?
 

blade911

Veteran
Veteran
Joined
Jul 24, 2015
Messages
86
Reaction score
29
First Language
English
Primarily Uses
seem itemequipcore and skillstatescore enabled together might be the culprit for me
I'll try to setup a test project to replicate the issue. However, it would be really helpful if you could share the whole error message from the console. Can you take a print from the complete error message in the game console and send it here?
 

Attachments

  • Capture.PNG
    Capture.PNG
    43.7 KB · Views: 15

Puppet Knight

Knight on a Crossbar
Veteran
Joined
Aug 3, 2022
Messages
309
Reaction score
133
First Language
English
Primarily Uses
RMMZ
Hey hey,

Little background ask on this plugin. Will skills level even if they haven't been permanately learned? I'm currently using a tweaked version of Fomars EquipmentSkill system where Actors can't use a skill without an associated weapon without having "mastered" the skill through battler first.



Ideally, skill would still be at Level 1 via your plugin until it has been mastered and then could begin gaining experience.


Unrelated: I cant well get the thing to boot up anyhow. Not sure what I have to update/alter to allow it to play nice with my other plugings


1664889755375.png
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
seem itemequipcore and skillstatescore enabled together might be the culprit for me
oh my... I'm sorry, I may have missed the notification for your reply, I've only seen it now! :o

Does combining those plugins in any way allow shops to sell skills or something like that?
The error is happening because the plugin is trying to draw a leveling gauge for a skill in the shop window, and that was not considered as a possibility when it was developed. It's trying to read the skill level from an actor, but since the shop window is not related to anyone it crashes. This specific part of the code is not triggered when drawing items, weapons and armors in a window, only when listing skills.

Little background ask on this plugin. Will skills level even if they haven't been permanately learned? I'm currently using a tweaked version of Fomars EquipmentSkill system where Actors can't use a skill without an associated weapon without having "mastered" the skill through battler first.
You can try checking the skill leveling requirements. You can try to cook up a formula to prevent the skill from leveling up until you consider it mastered.

Unrelated: I cant well get the thing to boot up anyhow. Not sure what I have to update/alter to allow it to play nice with my other plugings


1664889755375.png
That error indicates there's something wrong with the plugin parameters. It is trying to read the level array object from a skill, but the data is somehow corrupted and its breaking the code. Double check your skill leveling parameters and you may find the issue!!
 

Jufry_A

Villager
Member
Joined
Sep 27, 2018
Messages
11
Reaction score
2
First Language
Indonesia
Primarily Uses
RMMZ
I have an error like this, but I think not affect to game process

1.jpg
Is it normal?
below is my setting:
2.jpg
thanks before :)
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
I have an error like this, but I think not affect to game process

View attachment 245712
Is it normal?
below is my setting:
View attachment 245713
thanks before :)
Hello!

That error is triggered when the plugin finds more than one skill settings for a given skill ID, and it's there just to highlight this and inform the first set of parameters will be used, and the others are discarded.

It does not affect the game in any way. It is meant only to inform the dev so you can double check your plugin parameters! :)

From your settings, it is strange you're getting this message, but you can disregard it, as it does not affect the plugin's results.
 

Emoteph

Warper
Member
Joined
Aug 19, 2022
Messages
2
Reaction score
2
First Language
Norwegian
Primarily Uses
RMMZ
Hi, I've been trying to get your plugin working with the visustella for a while. First I encountered the error mentioned in here with the progress bars. This is solved with disabling the shop window addon to skills from skillscore.

Now I'm suddenly getting an error I can't figure out how to solve that only happens with my 3rd actor.
I restarted a new game and then it seemed to work, but then I saved and tried loading and the error occured again.

I get the error when using the attack or defend action, I can press skills and see the skill (and use skill if I have the tp)

Anyone encountered this error and know what the issue is?
I can't find any other plugins that allow skills to level through usage like this.

Thanks in advance
 

Attachments

  • skillmasteryerror.png
    skillmasteryerror.png
    223.7 KB · Views: 5

Puppet Knight

Knight on a Crossbar
Veteran
Joined
Aug 3, 2022
Messages
309
Reaction score
133
First Language
English
Primarily Uses
RMMZ
Also trying to get this to work with VisuStella if possible:
Currently If this plugin comes comes after Item Equip and Skill States it breaks when opening the Skills menu:

TypeError
Cannot read property 'getSkillLevel' of undefined

1675704741214.png
One fix I've been able to incorporate is disabling Shop settings and not using the updated layout SkillStates Core provides. I'd like to avoid this as the info that Layout provides is pretty cool. But I can live without it. I'd forgo SkillStates entirely if an auto passive state wasn't the cornerstone of my game xD

Alternatively ItemEquipCore can be disabled altogether, but again, that would have pretty hefty implications to my use of the <Equip Slots> note tags for classes.

Is there any fix anyone is aware of so i can have my cake and eat it too? xD

Also For some reason the gauges just don't populate in my skills menu at all. Even if I full on disable SkillStatesCore




Feature request: Is there a way to restrict a skill from gaining experience until an actor.isSkillLearned?
 
Last edited:

Puppet Knight

Knight on a Crossbar
Veteran
Joined
Aug 3, 2022
Messages
309
Reaction score
133
First Language
English
Primarily Uses
RMMZ
Separate silly question.

Do skills listed in the JSON have to be in Database ID order?
 

taaspider

Veteran
Veteran
Joined
Jan 27, 2017
Messages
212
Reaction score
247
First Language
Portuguese
Primarily Uses
RMMV
Hello everyone!

I've quoted and responded to each section below. I've attached a test version for some of the issues, so please read on, try it, and let me know how it goes before a release an official new version!

Since I don't have most of Vizustella's plugins (only the free ones), I can't test most compatibility issues by myself. I'll need to rely on you for that!
Hi, I've been trying to get your plugin working with the visustella for a while. First I encountered the error mentioned in here with the progress bars. This is solved with disabling the shop window addon to skills from skillscore.

Now I'm suddenly getting an error I can't figure out how to solve that only happens with my 3rd actor.
I restarted a new game and then it seemed to work, but then I saved and tried loading and the error occured again.

I get the error when using the attack or defend action, I can press skills and see the skill (and use skill if I have the tp)

Anyone encountered this error and know what the issue is?
I can't find any other plugins that allow skills to level through usage like this.

Thanks in advance
It seems the issue occurs because the skills are not listed as known for the party member. I have changed the code a bit to try and prevent this sort of error. Please try the attached test version and let me know how it goes before I fully release it! :)

Also trying to get this to work with VisuStella if possible:
Currently If this plugin comes comes after Item Equip and Skill States it breaks when opening the Skills menu:

TypeError
Cannot read property 'getSkillLevel' of undefined

1675704741214.png

One fix I've been able to incorporate is disabling Shop settings and not using the updated layout SkillStates Core provides. I'd like to avoid this as the info that Layout provides is pretty cool. But I can live without it. I'd forgo SkillStates entirely if an auto passive state wasn't the cornerstone of my game xD

Alternatively ItemEquipCore can be disabled altogether, but again, that would have pretty hefty implications to my use of the <Equip Slots> note tags for classes.

Is there any fix anyone is aware of so i can have my cake and eat it too? xD
Revising the code, it seems Vizustella's plugins are causing a function originally devised only for skill lists to be triggered. It then tries to access skill level data that does not exists (because the object being read is an item, armor, or whatever but not a skill), and that causes the crash. I've changed the code a bit to prevent the code from going into skill only territory if it does get called due to other plugins. Please try the attached test version before I do an official release! :)

Also For some reason the gauges just don't populate in my skills menu at all. Even if I full on disable SkillStatesCore
Just to be sure... the "Show Mastery Gauge" paramter is enabled, correct?
If it is enabled and its dimensions are properly set, I'll need you to provide me a test project with the issue present so I can try and debug it.

Feature request: Is there a way to restrict a skill from gaining experience until an actor.isSkillLearned?
The plugin already has a requirements feature. You can use it to restrict any skill from gaining experience, including having it automatically be locked when it reaches a certain level, and only unlock it when another requirement is met. Please take a look at the Skill Requirements in the help file and let me know if you have any questions!

Separate silly question.

Do skills listed in the JSON have to be in Database ID order?
No, it doesn't need to be in order. You only have to make sure the IDs are not duplicated, as if that happens the plugin will keep the first object it finds and discard the others when reading the file.
I consider sustaining some king of pattern a good practice though, as it makes it easier to find things while you are working in the file! ;)
 

Attachments

  • TAA_SkillMastery.js
    128 KB · Views: 3

Puppet Knight

Knight on a Crossbar
Veteran
Joined
Aug 3, 2022
Messages
309
Reaction score
133
First Language
English
Primarily Uses
RMMZ
I will take a crack at the test plugin this evening.
The plugin already has a requirements feature.

Definitely know! I guess specifically I wanted to be sure that traited skills aren't being counted as "Learned" so my own skill system works as intended. What I am trying to do is have Lvl 0 coincide with my use of Fomars EquipmentSkills to drive initial skill mastery, and then your plugin take over for future levels of the skill
 

Puppet Knight

Knight on a Crossbar
Veteran
Joined
Aug 3, 2022
Messages
309
Reaction score
133
First Language
English
Primarily Uses
RMMZ
So in essence, I want the Actors ability to start gaining exp for a skill to be restricted by if they have already "learned" the skill. Not just having it added from a trait (in my case from armors)

When I try to add in Requirements via the Plugin manager for a skill, I'm getting the "Duplicated ID" console log and it doesn't seem to be taking the requirements I set
 

Emoteph

Warper
Member
Joined
Aug 19, 2022
Messages
2
Reaction score
2
First Language
Norwegian
Primarily Uses
RMMZ
Hello everyone!

I've quoted and responded to each section below. I've attached a test version for some of the issues, so please read on, try it, and let me know how it goes before a release an official new version!

Since I don't have most of Vizustella's plugins (only the free ones), I can't test most compatibility issues by myself. I'll need to rely on you for that!

It seems the issue occurs because the skills are not listed as known for the party member. I have changed the code a bit to try and prevent this sort of error. Please try the attached test version and let me know how it goes before I fully release it! :)


Revising the code, it seems Vizustella's plugins are causing a function originally devised only for skill lists to be triggered. It then tries to access skill level data that does not exists (because the object being read is an item, armor, or whatever but not a skill), and that causes the crash. I've changed the code a bit to prevent the code from going into skill only territory if it does get called due to other plugins. Please try the attached test version before I do an official release! :)


Just to be sure... the "Show Mastery Gauge" paramter is enabled, correct?
If it is enabled and its dimensions are properly set, I'll need you to provide me a test project with the issue present so I can try and debug it.


The plugin already has a requirements feature. You can use it to restrict any skill from gaining experience, including having it automatically be locked when it reaches a certain level, and only unlock it when another requirement is met. Please take a look at the Skill Requirements in the help file and let me know if you have any questions!


No, it doesn't need to be in order. You only have to make sure the IDs are not duplicated, as if that happens the plugin will keep the first object it finds and discard the others when reading the file.
I consider sustaining some king of pattern a good practice though, as it makes it easier to find things while you are working in the file! ;)

At first few tests it seems to work. I've tried saving and reloading multiple times and no error message so far in combat.
 

Latest Threads

Latest Profile Posts

If anyone knows any C# programmers, please send them my way.
Chilling at night in a tavern.
ChillingAtTavern.png

After 'multiple breakdowns', it's finally over. 10/10 will do this again.
Ever notice that villains can reform and become better people, but heroes can only ever die... or live long enough to see themselves become villains?

Isn't that interesting?
xabileug wrote on Kaelan's profile.
Will you be back?


got inspired by Tekken 5's character select screen and made some new music today for my character select screen.

Forum statistics

Threads
129,842
Messages
1,205,649
Members
170,995
Latest member
RamiroWhitehead
Top