Original Source
- Original title: TAA_EnemyLevels (v1.2.0)
- Original author: taaspider
- Original date: November 1, 2020
- Source thread: https://forums.rpgmakerweb.com/threads/taa_enemylevels-v1-2-0.129442/
- Source forum path: Game Development Engines > RPG Maker Javascript Plugins > JS Plugin Releases (RMMZ)
Summary
TAA_EnemyLevels - v1.2.0 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".
Archived First Post
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 goal is to provide enemies their own leveling system. It allows enemy levels to change as the party level increases, customize levels on specific maps, create a base level that affects leveling throughout the whole game (so you can create an item, for example, that increases difficulty by increasing all enemy levels), and change enemy names and sprites according to their level.
The plugin also provides experience and gold modifiers that can customize even further how enemy levels affect your game progress.
Main Features
- Add levels to enemies and define how their stats will change with their levels;
- Provide multiple options on how to feed your game with enemy level data. You can use note tags, the Plugin Manager or even an external JSON file;
- Control enemy levels with three alternatives: (1) set enemy level range with map note tags; (2) use variables to control enemy level range; (3) or use a dynamic leveling system that always stays close to your party level;
- Use a variable value as a modifier to increase your game difficulty by increasing all enemy levels;
- Use experience and gold modifiers to change how their values are calculated after the battle;
- Setup skills that can increase or decrease enemy levels;
- Change enemy names and sprites as their level increases;
View attachment 166251
View attachment 166252
How to Use
WARNING: This plugin requires RPG Maker MV 1.5.0 or above! Please make sure your RPG Maker MV software is up to date before using this plugin. If you're an MZ owner, you don't need any specific version.
First of, 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).
One important thing to note is that I can't be sure the experience distribution modifier will be 100% compatible to any aftermath scene plugin. If for some reason it isn't and you don't want to disable it you may need to contact the aftermath scene plugin developer.
Level Priority
Enemy levels are set using three different layers, where only one is actually applied at enemy initialization. Those three are:
Manual Upper Level
Level Modifier
Note tags an be used regardless of which one of the two you choose, and has a higher priority than both. That means if an enemy have its formulas set in a JSON file, for example, but also have note tags, the note tags will overwrite whatever is loaded from the file.
If none of the three methods are specified, the default formulas set through plugin parameters are used.
OBS.: The JSON file can be shared with other plugins from the TAA library, so you can concentrate all enemy config data in one place.
- This should point to a JSON file containing your enemy level data. The file must be place inside your game's data folder. The JSON file must have a structure similar to this:
You can customize the object's tags as you wish using the next parameters.
IMPORTANT:
- <enemy ID> must be a valid enemy ID in the database, and must be unique in your JSON file. More than one entry for the same id can (and will) generate errors.
- <resistance percentage> should be a value between 0 and 100. 0 means the enemy has no chance of avoiding a level change skill, whereas a value of 100 means it will always resist a level change. Any value between indicates how likely it is to resist the change.
- <class ID> is an optional parameter. If present, enemy stats will be based on the specified class stats, including experience, which will be based on the class experience curve. However, experience can be customized setting the "exp" formula. Gold must still have its own formula (even if it is the default one), and parameters cannot be customized outside of the class when it is set. Also, when using class based parameters the enemy will inherit class traits, although enemy specific traits will take precedence. If you wish to use formulas instead of class based parameters, simply omit the class object, or set it to 0.
- "traits" is another optional array included on version 1.2.0. You can include one or more <trait clauses> in the array as described in the Traits section below.
As of version 1.2.0 or higher, there's a new parameter called "Class". When it is set to a valid class ID, all enemy stats will be based on the class parameter curves, including experience, which will be based on the class experience curve. However, experience can be customized setting the "exp" formula. Gold must still have its own formula (even if it is the default one), and parameters cannot be customized outside of the class when it is set. Also, when using class based parameters the enemy will inherit class traits, although enemy specific traits will take precedence. If you wish to use formulas instead of class based parameters, simply set the class parameter to 0.
There is also a new parameter called "Traits", which allow custom traits based on enemy level. Read more on this new feature in the following section.
Configuring level based traits is pretty much the same with Json or Plugin Manager based settings. Each trait clause can be used to set a specific trait, but all clauses start with the minimum level the enemy must have for that trait to take effect:
LEVEL <lvl>: <trait clause>
<lvl> identifies when that trait clause starts to be considered. That is, it will only take effect when the enemy level is greater or equal to <lvl>
Trait clauses are also not stackable. That means that if your enemy have, for example, a trait for 2% evasion by default, and you add a trait clause for 4% at level 3, all enemies units with level greater or equal to 3 will have its original trait replaced by the new one. That is the new evasion stats becomes 4% and not 6%. That also ensures you don't need (and shouldn't) repeat all traits for all levels. Just set what must change and at what level and you're good to go.
See a full explanation for all available trait clauses below.
Elemental rate
WARNING: Trait clauses must be ordered by level to work properly. Unordered clauses may not work as intended.
Enemy Name Display
Preserve Stats
Resist Level Change
Experience Value Modifier
Gold Modifier
A map note tag has the following format:
enemyId must be replaced by the enemy ID, while lowerLevel and upperLevel represents the level range the enemy can have. Whenever a battle is triggered with this enemy, a random level value between lowerLevel and upperLevel is generated.
The condition clause is optional. If not present, the level range is always used. The following data can be used inside the eval code:
Here are a few examples:
You can also simplify a list of tags for the same enemy as follows:
Class settings works the same as with JSON or Plugin Manager settings. If it is set and is a valid class, the enemy parameters will be based on the class parameter curves. Gold and experience can still have their own formulas when basing parameters in a class, but not the enemy stats.
When setting class base parameters through note tags, the default experience formula gets ignored. That means that unless you specify another formula also using note tags, enemy experience will be calculated using the class experience curve.
Other tags can be used to customize if the level must be shown for the enemy, if stats are preserved, and even battler image changes according to level:
One important thing to note is that the effect of the skill changes according to the enemy target resistance to level change. If resistance is 0, the skill takes full effect and all levels are gained/lost. Likewise, a resistance of 100 nullify all level change effects.
A resistance between 0 and 100 will trigger a random validation for each level to gain or lose. Take this tag as an example:
This resistance, however, works differently when using multiply or divide levels. In this case, resistance can either fail or succeed the level change, but never an intermediate result.
$gameSystem.setShowEnemyLevel(state)
$gameSystem.enemyLevelPreserveStats()
$gameSystem.enemyLevelResistChange()
$gameSystem.enemyLevelRule()
$gameSystem.setEnemyLevelRule(rule)
$gameSystem.enemyLevelNegativeFluctuation()
$gameSystem.setNegativeRange(value, action)
- if not present (undefined), or equal to '=' or 'set': Change lower level range to the exact value of 'value' + '+', 'add', 'gain' or 'increase': adds value to the current lower level range value
- '-', 'remove', 'lose' or 'decrease': subtract value from the current lower level range value
- '*' or 'multiply': multiply value to the current lower level range value
- '/' or 'divide': divide current lower level range value by 'value'
$gameSystem.setPositiveRange(value, action)
- if not present (undefined), or equal to '=' or 'set': Change upper level range to the exact value of 'value'
- '+', 'add', 'gain' or 'increase': adds value to the current upper level range value
- '-', 'remove', 'lose' or 'decrease': subtract value from the current upper level range value
- '*' or 'multiply': multiply value to the current upper level range value
- '/' or 'divide': divide current upper level range value by 'value'
- Use '=' to set the enemy level to exactly 'value'
- Use '+' to add 'value' to the current enemy level
- Use '-' to decrease 'value' from the current enemy level
- Use '*' to multiply current enemy level by 'value'
- Use '/' to divide current enemy level by 'value'
Change Dynamic Level Rule
Change Level Range
- Having a base value of 0 for experience or gold in the editor can cause them to be zero if the player pushes buttons to fast and don't wait for the modifiers to be properly applied (they do not cause any percitble slowdown to the aftermath sequence). I couldn't quite figure out how to prevent this, but a simple workaround is to make sure that all enemies have the experience and gold editor fields set to something greater than zero, even if the base value is not used in their parameter formulas;
- Version 1.2.0:
- Added functions to allow enemy parameters to be based on class settings;
- Added customized traits based on enemy level;
- Added note tags to setup enemy parameters by class an level specific traits;
- Version 1.1.0:
- Included support functions used by TAA_EnemyReinforcements;
- Version 1.0.0:
- Fixed a bug on battler image variations on level change;
- Fixed a bug on applying intermediary level change resistances;
- Fixed a bug in the experience distribution modifier that would cause experience to be reduced to zero;
- Added a parameter that determines how much each mob member will affect gold and experience if the proper modifiers are selected;
- Fixed a bug in the battle logs when decreasing an enemy level;
- Added the ability to change the enemy name with its level;
- Version 0.8.0:
- A few fixes and changes
- Beta release
- Version 0.7.0:
- Added functions to change enemy level through skills
- Added Plugin Commands for both MV and MZ
- Version 0.6.0:
- Included modifiers to experience and gold earned at the end of the battle
- Added feature to allow changes on the enemy battler according to its level
- Added note tags as an alternative to setup enemy formulas
- Version 0.5.0:
- Initial version with enemy levels and datasource setup
Features Mentioned
- Add levels to enemies and define how their stats will change with their levels;
- Provide multiple options on how to feed your game with enemy level data. You can use note tags, the Plugin Manager or even an external JSON file;
- Control enemy levels with three alternatives: (1) set enemy level range with map note tags; (2) use variables to control enemy level range; (3) or use a dynamic leveling system that always stays close to your party level;
- Use a variable value as a modifier to increase your game difficulty by increasing all enemy levels;
- Use experience and gold modifiers to change how their values are calculated after the battle;
- Setup skills that can increase or decrease enemy levels;
- Change enemy names and sprites as their level increases;
Downloads / Referenced Files
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadLicense / Terms Note
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...
Creator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
Topic Summary
Loading summary...