Table of Contents

Introduction

"Therefore, if anyone is in Christ, the new creation has come: The old has gone, the new is here!" - 2 Corinthians 5:17

DynDatabaseOverride is a plugin for the DynRPG project. If you've taken the time to download this plugin then odds are you're already familiar with DynRPG and how to use it, but just in case, you can find the main DynRPG website at http://rewking.com/dynrpg/.

The DynDatabaseOverride plugin allows developers to override the default database values of an RPG Maker 2003 game with data stored in .txt (which spreadsheet programs regard as "Tab-Separated Values") files. The plugin can override multiple parts of the database independently, at the start of a game run or in the middle of it, and will track any changes made and reapply them when a saved game is loaded.

Why would you want to be able to override the existing database? The first and most obvious use is to change the way the game works in mid-play. For example, suppose you wanted to give your game varying difficulty levels. By overriding the stat values of enemies, you could adjust the difficulty of combat at run-time, even allowing the player to switch back and forth between different stat setups. Enemy stats aren't the only things you can adjust -- you can also change values related to actors (AKA heroes), skills, items, and more.

Another possible use of this plugin is to simply be able to edit your game's data using a spreadsheet program (i.e. Microsoft Excel or Open Office Calc) rather than the RPG Maker 2003 database editor. Spreadsheets are powerful game design tools, allowing you to make sweeping changes to large groups of data and create formulas to drive values based on other values. The example spreadsheet DynDatabaseOverrideExamples.xls included in this project includes a sample formula which calculates an MP cost amount for a skill based on its stats. DynDatabaseOverride can also export the existing database values of a game at any time into .txt files, which can give you a good starting point to create your alternative data sets.

A quick plug for the integrity and harmony of the RPG Maker community: please buy the official English translation of RPG Maker 2003! Obviously I'm in no position to shame anyone who has used the fan port of RPG Maker 2003 up until now, especially since as of this writing there is no DynRPG patch for the official RPG Maker 2003. Still, now that the official version is available (and not that expensive to boot), there's really no excuse not to purchase a license for at least legitimization, even if you continue to make use of the fan port. The creator of DynRPG, David "Cherry" Trapp, was instrumental in negotiating the creation and release of the official English translation of RPG Maker 2003, and he continues to work on improving it. Let's give the owners of the RPG Maker franchise some motivation to continue working amicably with the modding community! You can purchase RPG Maker 2003 at RPG Maker Web or on Steam.

IMPORTANT NOTES!

For those of you who prefer to dive right in and learn by doing with only occasional looks at the manual for reference, please at least read these vital notes.

Installation and Setup

To install DynDatabaseOverride in an RPG Maker 2003 project:

  1. Make sure that your project is patched with DynRPG
  2. Copy the file DynDatabaseOverride.dll from the DynPlugins folder of the DynDatabaseOverride project to the DynPlugins folder of your project
  3. Copy the folder DynDatabaseOverrideFiles from the DynDatabaseOverride project to the base folder of your project

Configuration Options

DynDatabaseOverride does not have any configuration options. You do not need to modify your project's DynRPG.ini file in order to use DynDatabaseOverride.

Overview of How the Plugin Works

DynDatabaseOverride works by reading special .txt (Tab-Separated Values) files with data representing values in an RPG Maker 2003 game's database and changing the game's database in memory to match that data. This happens while the game is running and does not actually modify the database on the system storage. The .txt files are stored in the DynDatabaseOverrideFiles folder of the game project.

DynDatabaseOverride does not override the absolute entirety of a game's database. There are parts of the database, for example the scripting in Common Events and Battle Events pages, which are too complex to be worth manipulating through spreadsheet data. DynDatabaseOverride focuses on the parts of the database for which the ability to change the data mid-game and/or do design work in a spreadsheet are most likely to be useful. See the section on Data Types for reference about the data which DynDatabaseOverride can override. If there is a part of the database which you would like added to DynDatabaseOverride's capabilities, you can try contacting me, but I make no promises about doing it for you. ;)

Exporting Existing Database Values

Probably the first thing you'll want to do getting started with the DynDatabaseOverride plugin is to export your project's existing database. That will give you a starting point which you can modify to make data files for your custom data sets. There are several ways that DynDatabaseOverride exports data.

First, DynDatabaseOverride will automatically export the entire project database (well, the parts it's capable of overriding, anyway) into files that have "Default" at the start of their names when the game is first run. These files are used to reset the game's database in memory to a baseline when a new game is started or a save game is loaded -- see the section on Importing Values for details. For most developers, the Default files will do fine as a starting point for custom data files. Note that these files are written anew every time the game is run, so any changes you make in them will be lost. You must copy the data in them over to other files to work with.

DynDatabaseOverride also automatically exports files that have "SaveState<number>" at the start of their names representing changes made to the database during runtime whenever the game is saved. This allows the plugin to reapply these changes when the saved game is loaded later on. If no changes are imported during the course of a game (not including at the very start of a new game), then these files are not exported. You should generally avoid modifying these files unless you really want to manually tweak the data values in an ongoing save game.

Finally, just in case you have a reason to export the database values in the middle of a game, DynDatabaseOverride provides a @dyndatabaseoverride_export_database comment command. This command will export the database values into files with names starting with whatever characters you provide.

Making Data Files

Once you have some exported data to work with, you will need to create data files for importing back into the game at run-time. A spreadsheet editing program like Microsoft Excel or Open Office Calc can be used to read and edit .txt data files. A data file for importing has the exact same format as an exported data file; you just need to change the values in it and give it an appropriate name. As noted in the section about exporting, the "Default" and "SaveState<number>" data files are automatically overwritten at certain times by the DynDatabaseOverride plugin, so you should make sure to give your custom data files other names.

Data files follow a general format in which the first row is for optional notes, the second row is for ID numbers, and the third row is sometimes for secondary ID numbers -- for example, for Actors Attributes data, the first ID number row is for the IDs of the Actors, while the second ID number row is for the IDs of the Attributes. The rest of the rows are for the database values associated with those ID numbers. Information about the individual data values can be found in the section on Data Types.

If you only want to change part of the data values for a particular data type, you can delete whole rows or whole columns from the data file. For example, suppose you wanted to change the Attack, Defense, and Intelligence values of Enemies, but nothing else about them. You could delete all of the data rows in an Enemies data file except for the ID, Attack, Defense, and Intelligence rows to accomplish this.

You can also delete columns to prevent specific entities from being affected by the data import. For example, suppose you wanted to change the Price values on medicine Items, but not all the other Items like weapons, armor, etc. You could delete the columns for everything except the medicine Items, and at the same time delete all the rows except for the ID and Price rows.

Note that by "delete" a row or column, I mean remove it entirely from the data file, not just clear the values from its cells. Empty rows or columns will cause problems for DynDatabaseOverride. Also, while deleting rows or columns (apart from the ID rows and the far-left header column) is fine, rearranging the rows is not allowed. They must remain in the same order they are in when exported by DynDatabaseOverride, or some of the data will be skipped when imported.

Also note that the "SaveState<number>" data files exported to show what data values have been changed in mid-play for a given save game will always contain values for all entities of a given data type, although they may omit rows that have not been changed. For example, if you import data changing the Price of just one Item and then save the game to slot 1, the "SaveState1_Items.txt" file will contain the Price data for all Items in the database. This is due to limitations in how the plugin works internally. It will not affect the game since all the Price values apart from the one you changed will have the same values they did originally, although it does mean these save state data files take up a little more storage space than is ideal.

Data Types with Varying Amounts of Data

Certain data types have varying amounts of data in them, and the way they're stored in a game's database is a bit unintuitive. For example, actors, classes, and monsters all have data about how susceptible they are to different attributes and conditions. Since you as the designer decide how many attributes and conditions are in your game, the number of data points about them for actors, classes, and monsters can vary. However, it's not as simple as always having the same number of data points as there are attributes and conditions. RPG Maker 2003 uses a sneaky shortcut which allows it to store less data and at the same time automatically 'fill in' the data points when new attributes and conditions are added. It treats "C" as a default value and does not store data points for any attributes or conditions past the last non-"C" value.

For example, suppose your game has five attributes -- Earth, Fire, Water, Wind, and Lightning. In the RPG Maker 2003 database editor, it might display a particular actor with these attribute susceptibilities:

Internally, however, the database only holds data points for the first three of those attributes. Since all the attributes after Water have the default value of "C", the database doesn't bother storing them. The "Default_Actors_Attributes.txt" file exported by DynDatabaseOverride would reflect this, holding data that looks like this:

Notes (optional)Zack - EarthZack - FireZack - Water
Actor ID111
Attribute ID123
Susceptibility rankCBD

This can make things tricky if you want to be able to override the attribute values of your actors with DynDatabaseOverride, because there's actually no data points to be overridden on this actor for Wind and Lightning. If you try to import a data file that includes data for Wind or Lightning, there will be an error.

A trick you can use to get around this problem is to create an extra attribute (or condition or whatever) which you don't intend to use at all in your game, then set it to a non-default value in any data types you may want to override with DynDatabaseOverride. In our example, you could create an attribute called Unused and set it to E in your actor:

This would result in a "Default_Actors_Attributes.txt" file which looks like this:

Notes (optional)Zack - EarthZack - FireZack - WaterZack - WindZack - LightningZack - Unused
Actor ID111111
Attribute ID123456
Susceptibility rankCBDCCE

From there you could create data files to override any of the attribute values you like.

A similar problem shows up with data types that can involve a different amount of data points associated with different entities. A good example of this is skill learning data for actors and classes. A game's database holds data about which skills each actor or class learns and at what level they learn it, but since most actors and classes will only learn a small number of the skills in the database, the database only stores data points for the skills they do learn. This means that you cannot use DynDatabaseOverride to add more skills to an actor or class than they have in the game's database, only change what skills they are and what level they are learned at.

However, there is a little hack you can use to essentially remove skills from the list. Suppose you have an actor with three skills, and you want to replace them with a set of two skills in a special game mode. The "Default_Actors_Skill_Learning.txt" file's contents might look something like this:

Notes (optional)Zack - VenomZack - BlindZack - Sleep
Actor ID111
Skill learning ID012
Level requirement137
Skill ID123

You cannot use DynDatabaseOverride to reduce the number of skill learning data points in the database, but you can override some of the data points to teach the same skill. If you wanted to remove the Sleep skill, you could create and import a "SpecialMode_Actors_Skill_Learning.txt" file with contents like this:

Notes (optional)Zack - VenomZack - BlindZack - Venom (HACK TO REMOVE SLEEP)
Actor ID111
Skill learning ID012
Level requirement131
Skill ID121

Since the last skill learning data point is now identical to the first one, it effectively does nothing. You can use this trick to change the number of skills an actor or class will learn to whatever you want (except for 0), as long as the game's default database has at least as many skill learning data points in it to begin with.

Using a Spreadsheet to Create Data Files

If you are an advanced developer with some knowledge of how to use a spreadsheet program's formula features, you may want use them to generate data for your data files. For example, you could use formulas to generate easy mode and hard mode versions of enemies' stats, calculate the prices of items based on their stats, or just make one-time modifications to large amounts of data, such as doubling the HP of all actors. Teaching you the ins and outs of spreadsheet formulas is a bit beyond the scope of this manual, but the included spreadsheet file DynDatabaseOverrideExamples.xls does provide some samples of formulas you might like to use or modify for your purposes.

Note that if you try to use formulas in the .txt files used for data files by DynDatabaseOverride, those formulas will not be saved. Your spreadsheet program may (in fact probably will) allow you to use formulas, but they will be discarded when you exit the program, leaving only the resulting values. This is because .txt is a very simple file format intended to hold only values. If you want to retain your formulas, you will need to use a spreadsheet file format such as .xls or .ods. DynDatabaseOverride will not be able to use that spreadsheet file directly, though. For the actual data files which DynDatabaseOverride uses, you will need to save the values in .txt format. This can be done either by copying the values from the spreadsheet file to the relevant .txt file in your spreadsheet program, or by exporting a particular sheet of the spreadsheet as a .txt file. See the Instructions sheet in DynDatabaseOverrideExamples.xls for more about exporting.

Importing Values to Override the Database

Once you have data files ready, you can import them with DynDatabaseOverride to change the values in the database. You can import files individually according to their data types, or you can import groups of files with the same start to their name. The comment commands section details how to use comment commands in mid-play to import files, and you can look in the map events in the example DynDatabaseOverride project to see examples of their use.

In addition to allowing you to manually import data, DynDatabaseOverride automatically imports data at certain points. First, when the game is first run, DynDatabaseOverride will import any data files with a name consisting of "Starting" and one of the standard file names endings for data types -- for example, "Starting_Actors.txt". This is useful for developers who want to use DynDatabaseOverride to edit parts of their game's data using a spreadsheet program rather than the RPG Maker 2003 database editor.

Second, when a new game is started or a saved game is loaded, DynDatabaseOverride will import the "Default" files. This resets the database to a ground state, so that if the player comes back to the main menu during play to start a new game or load a saved game, any changes that were made to the database while they were playing before are wiped away. The "Starting" files are imported before DynDatabaseOverride exports the "Default" files, so any changes caused by the "Starting" files are included in the "Default" files.

Finally, when a saved game is loaded, after the "Default" files are imported, DynDatabaseOverride will import any data files with a name consisting of "SaveState<number>" (where "<number>" is the save game slot number) and one of the standard file names endings for data types -- for example, "SaveState1_Actors.txt". As explained in the section on exporting, these files are automatically exported whenever the game is saved, and they contain whatever data has been manually imported during play. Importing them sets the database back to the state it was in when the game was saved.

Data Types

This section is a reference for the data types which DynDatabaseOverride can override in a game's database. They are organized by the data files they are contained in.

Actors (aka Heroes)

Standard file name ending: "_Actors.txt"

NOTE: The following fields have been disincluded from DynDatabaseOverride because they cause issues when directly manipulated by DynRPG:

  • Charset file name
  • Charset ID
  • Charset transparent
  • Faceset file name
  • Faceset ID
ID: The actor's ID number. Starts at 1.
Name: The actor's name.
Degree: The actor's degree (aka title).
Min level: The actor's minimum level. Ranges from 1 to the maximum level.
Max level: The actor's maximum level. Ranges from 1 to 99.
Allow critical hit: Whether the actor is allowed to make critical hits. 0 for false, 1 for true.
Critical hit probability: The probability (as 1 divided by this number) of the actor making a critical hit. Ranges from 1 to 100.
Two weapons: Whether the actor is allowed to wield two weapons. 0 for false, 1 for true.
AI control: Whether the actor is controlled by the computer. 0 for false, 1 for true.
Lock equipment: Whether the actor's equipment is locked. 0 for false, 1 for true.
Mighty guard: Whether the actor has mighty guard. 0 for false, 1 for true.
Exp primary: The actor's primary experience stat. Ranges from 1 to 2000.
Exp secondary: The actor's secondary experience stat. Ranges from 1 to 2000.
Exp tertiary: The actor's tertiary experience stat. Ranges from 0 to 2000.
Weapon ID: The item ID of the actor's starting weapon. Starts at 1.
Shield ID: The item ID of the actor's starting shield. Starts at 1.
Armor ID: The item ID of the actor's starting armor. Starts at 1.
Helmet ID: The item ID of the actor's starting helmet. Starts at 1.
Accessory ID: The item ID of the actor's starting accessory. Starts at 1.
Unarmed battle animation ID: The ID of the animation to use when the actor makes an unarmed attack.
Class ID: The ID of the actor's class. Starts at 1. Note: Overriding the actor's class ID will not automatically cause the actor's stats to change to those of the class. This is true even in the normal operations of RPG Maker 2003 -- you can set an actor's class in the database editor, but the actor's stats will not change accordingly unless you click the "Apply" button next to the class dropdown.
Battle graphic ID: The ID of the actor's battle graphic (aka battle sprite or animation 2). Starts at 1.
X pos in battle: The actor's X position on the screen during battle (unless automatic character placement is used).
Y pos in battle: The actor's Y position on the screen during battle (unless automatic character placement is used).

Actors (aka Heroes) HP

Standard file name ending: "_Actors_HP.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's maximum HP at the level described. Ranges from 1 to 9999.

Actors (aka Heroes) MP

Standard file name ending: "_Actors_MP.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's maximum MP at the level described. Ranges from 1 to 999.

Actors (aka Heroes) Attack

Standard file name ending: "_Actors_Attack.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's attack stat at the level described. Ranges from 1 to 999.

Actors (aka Heroes) Defense

Standard file name ending: "_Actors_Defense.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's defense stat at the level described. Ranges from 1 to 999.

Actors (aka Heroes) Intelligence

Standard file name ending: "_Actors_Intelligence.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's intelligence stat at the level described. Ranges from 1 to 999.

Actors (aka Heroes) Agility

Standard file name ending: "_Actors_Agility.txt"

ID: The actor's ID number. Starts at 1.
Level <number>: The actor's agility stat at the level described. Ranges from 1 to 999.

Actors (aka Heroes) Skill Learning

Standard file name ending: "_Actors_Skill_Learning.txt"

NOTE: Importing skill learning data during the game will not immediately change the actors' known skills. You will need to adjust skills yourself if you wish to change them.

NOTE: This data type involves varying amounts of data.

ID: The actor's ID number. Starts at 1.
Skill learning ID: The skill learning data's ID number. Starts at 0.
Level requirement: The level at which the skill is learned. Ranges from 1 to 99.
Level requirement: The skill's ID number. Starts at 1.

Actors (aka Heroes) Conditions

Standard file name ending: "_Actors_Conditions.txt"

NOTE: This data type involves varying amounts of data.

ID: The actor's ID number. Starts at 1.
Condition ID: The conditions's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the actor to the condition. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Actors (aka Heroes) Attributes

Standard file name ending: "_Actors_Attributes.txt"

NOTE: This data type involves varying amounts of data.

ID: The actor's ID number. Starts at 1.
Attribute ID: The attribute's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the actor to the attribute. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Classes

Standard file name ending: "_Classes.txt"

ID: The class's ID number. Starts at 1.
Name: The class's name.
Two weapons: Whether the class is allowed to wield two weapons. 0 for false, 1 for true.
AI control: Whether the class is controlled by the computer. 0 for false, 1 for true.
Lock equipment: Whether the class's equipment is locked. 0 for false, 1 for true.
Mighty guard: Whether the class has mighty guard. 0 for false, 1 for true.
Exp primary: The class's primary experience stat. Ranges from 1 to 2000.
Exp secondary: The class's secondary experience stat. Ranges from 1 to 2000.
Exp tertiary: The class's tertiary experience stat. Ranges from 0 to 2000.
Battle graphic ID: The ID of the class's battle graphic (aka battle sprite or animation 2). Starts at 1.
Battle command 0: The ID of the first battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.
Battle command 1: The ID of the second battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.
Battle command 2: The ID of the third battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.
Battle command 3: The ID of the fourth battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.
Battle command 4: The ID of the fifth battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.
Battle command 5: The ID of the sixth battle command in the class's list. -1 or 0 indicates no battle command, ID numbers start at 1.

Classes HP

Standard file name ending: "_Classes_HP.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's maximum HP at the level described. Ranges from 1 to 9999.

Classes MP

Standard file name ending: "_Classes_MP.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's maximum MP at the level described. Ranges from 1 to 999.

Classes Attack

Standard file name ending: "_Classes_Attack.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's attack stat at the level described. Ranges from 1 to 999.

Classes Defense

Standard file name ending: "_Classes_Defense.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's defense stat at the level described. Ranges from 1 to 999.

Classes Intelligence

Standard file name ending: "_Classes_Intelligence.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's intelligence stat at the level described. Ranges from 1 to 999.

Classes Agility

Standard file name ending: "_Classes_Agility.txt"

ID: The class's ID number. Starts at 1.
Level <number>: The class's agility stat at the level described. Ranges from 1 to 999.

Classes Skill Learning

Standard file name ending: "_Classes_Skill_Learning.txt"

NOTE: Importing skill learning data during the game will not immediately change the actors' known skills. You will need to adjust skills yourself if you wish to change them.

NOTE: This data type involves varying amounts of data.

ID: The class's ID number. Starts at 1.
Skill learning ID: The skill learning data's ID number. Starts at 0.
Level requirement: The level at which the skill is learned. Ranges from 1 to 99.
Level requirement: The skill's ID number. Starts at 1.

Classes Conditions

Standard file name ending: "_Classes_Conditions.txt"

NOTE: This data type involves varying amounts of data.

ID: The class's ID number. Starts at 1.
Condition ID: The conditions's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the class to the condition. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Classes Attributes

Standard file name ending: "_Classes_Attributes.txt"

NOTE: This data type involves varying amounts of data.

ID: The class's ID number. Starts at 1.
Attribute ID: The attribute's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the class to the attribute. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Skills

Standard file name ending: "_Skills.txt"

ID: The skill's ID number. Starts at 1.
Name: The skill's name.
Description: The skill's description.
Use message 2K: Use message #1. Only relevant for projects ported from RPG Maker 2000.
Use message 2K alt: Use message #2. Only relevant for projects ported from RPG Maker 2000.
Evasion type: This field is included in the Skill data type of DynRPG with the description "Evasion Type and failure message?". It does not appear to have any corresponding controls in the RPG Maker 2003 database editor. My best guess is that this is a value which normally is automatically determined by other data in the skill, such as whether there are non-zero attack influence and intelligence influence values, conditions, etc.
Skill type: The type of skill. Allows the following values:
  • Normal
  • Teleport
  • Escape
  • Switch
  • Custom Skill Type <number>
MP consumed: The MP consumed as a plain number by the skill. Ranges from 0 to 999.
Is MP percent: Whether the skill's MP consumption involves a percentage of the battler's maximum MP. 0 for false, 1 for true.
MP consumed percent: The MP consumed as a percentage of the battler's maximum MP by the skill. Ranges from 0 to 100.
Target: The skill's target. Allows the following values:
  • Single enemy
  • All enemies
  • Self
  • Single ally
  • All allies
Switch ID: The ID of the switch turned ON when the skill is used if the skill's type is "Switch". Starts at 1.
Battle animation ID : The ID of the skill's battle animation in the skill's list. Starts at 1.
Use in field: Whether the skill can be used in the field if the skill's type is "Switch". 0 for false, 1 for true.
Use in battle: Whether the skill can be used in battle if the skill's type is "Switch". 0 for false, 1 for true.
Attack influence: The skill's attack influence. Ranges from 0 to 10.
Intelligence influence: The skill's intelligence influence. Ranges from 0 to 10.
Variance: The skill's variance. Ranges from 0 to 10.
Effect rating: The skill's effect rating. Ranges from 0 to 9999.
Success rate: The skill's success rate as a percentage. Ranges from 0 to 100.
Affects HP: Whether the skill affects HP. 0 for false, 1 for true.
Affects MP: Whether the skill affects MP. 0 for false, 1 for true.
Affects attack: Whether the skill affects attack. 0 for false, 1 for true.
Affects defense: Whether the skill affects defense. 0 for false, 1 for true.
Affects intelligence: Whether the skill affects intelligence. 0 for false, 1 for true.
Affects agility: Whether the skill affects agility. 0 for false, 1 for true.
Absorb: Whether the skill absorbs. 0 for false, 1 for true.
Attribute resist: Whether the skill affects resistance to an attribute (increase for ally, decrease for enemy). 0 for false, 1 for true.
Inflict/remove condition (0 = inflict, 1 = remove): Whether the skill inflicts or removes conditions. 0 for inflict, 1 for remove.

Skills Conditions

Standard file name ending: "_Skills_Conditions.txt"

NOTE: This data type involves varying amounts of data.

Skill ID: The skill's ID number. Starts at 1.
Condition ID: The conditions's ID number. Starts at 1.
Affects condition: Whether the skill inflicts or removes the condition. 0 for false, 1 for true.

Skills Attributes

Standard file name ending: "_Skills_Attributes.txt"

NOTE: This data type involves varying amounts of data.

Skill ID: The skill's ID number. Starts at 1.
Attribute ID: The attribute's ID number. Starts at 1.
Affects attribute: Whether the skill inflicts or removes the attribute. 0 for false, 1 for true.

Skills Animations

Standard file name ending: "_Skills_Animations.txt"

NOTE: This data type involves varying amounts of data.

Skill ID: The skill's ID number. Starts at 1.
Actor ID: The actor's ID number. Starts at 1.
Battler pose: Which battler pose to use. Allows the following values:
  • Idle Stance
  • Right Hand
  • Left Hand
  • Skill Use
  • Dead
  • Damage
  • Bad Status
  • Defending
  • Walking Left
  • Walking Right
  • Victory
  • Item
  • Custom Pose <number> (number ranges from 13 to 32)
Movement: Which movement to use. Allows the following values:
  • None
  • Step Forward
  • Jump Forward
  • Move to Target
Add after image: Whether to add an after image. 0 for false, 1 for true.

Items

Standard file name ending: "_Items.txt"

ID: The item's ID number. Starts at 1.
Name: The item's name.
Description: The item's description.
Type: The type of item. Allows the following values:
  • Common Item
  • Weapon
  • Shield
  • Armor
  • Helmet
  • Accessory
  • Medicine
  • Skill Book
  • Seed
  • Skill Scroll
  • Switch
Price: The item's price. Ranges from 0 to 999999.
Number of uses: The number of times the item can be used (for medicines, skill books, seeds, skill scrolls, and switches only). Ranges from 0 (which indicates unlimited) to 5.
Attack: The item's attack stat (for weapons, shields, armor, helmets, and accessories only). Ranges from -500 to 500.
Defense: The item's defense stat (for weapons, shields, armor, helmets, and accessories only). Ranges from -500 to 500.
Intelligence: The item's intelligence stat (for weapons, shields, armor, helmets, and accessories only). Ranges from -500 to 500.
Agility: The item's agility stat (for weapons, shields, armor, helmets, and accessories only). Ranges from -500 to 500.
Two-handed: Whether the item is two-handed (for weapons only). 0 for false, 1 for true.
MP consumed: How much MP is consumed when the item is used (for weapons only). Ranges from 0 to 999.
Hit probability: The item's hit probability (for weapons only). Ranges from 0 to 100.
Critical bonus: The item's critical bonus (for weapons only). Ranges from 0 to 100.
Battle animation ID: The ID number of the item's battle animation (for weapons only). Starts at 1.
Always attack first: Whether the item provides the option always attack first (for weapons only). 0 for false, 1 for true.
Attack twice: Whether the item provides the option attack twice (for weapons only). 0 for false, 1 for true.
Attack all enemies: Whether the item provides the option attack all enemies (for weapons only). 0 for false, 1 for true.
Ignore enemy evasion: Whether the item provides the option ignore enemy evasion (for weapons only). 0 for false, 1 for true.
Prevent critical hits: Whether the item provides the option prevent critical hits (for shields, armor, helmets, and accessories only). 0 for false, 1 for true.
Increased evasion: Whether the item provides the option increased evasion (for shields, armor, helmets, and accessories only). 0 for false, 1 for true.
Half MP consumption: Whether the item provides the option half MP consumption (for shields, armor, helmets, and accessories only). 0 for false, 1 for true.
No terrain damage: Whether the item provides the option no terrain damage (for shields, armor, helmets, and accessories only). 0 for false, 1 for true.
Cursed: Whether the item provides the option cursed (for weapons, shields, armor, helmets, and accessories only). 0 for false, 1 for true.
Target: The item's target (for medicines only). Allows the following values:
  • Single Ally
  • All Allies
HP restore percent: The amount of HP the item restores as a percentage of the target's maximum HP (for medicines only). Ranges from 0 to 100.
HP restore units: The amount of HP the item restores as a plain number (for medicines only). Ranges from 0 to 9999.
MP restore percent: The amount of MP the item restores as a percentage of the target's maximum MP (for medicines only). Ranges from 0 to 100.
HP restore units: The amount of MP the item restores as a plain number (for medicines only). Ranges from 0 to 999.
Only usable on the field map: Whether the item is only usable on the field map (for medicines only). 0 for false, 1 for true.
Only usable on dead characters: Whether the item is only usable on dead characters (for medicines only). 0 for false, 1 for true.
Add max HP: The amount of maximum HP the item adds to the target (for seeds only). Ranges from -50 to 50.
Add max MP: The amount of maximum MP the item adds to the target (for seeds only). Ranges from -50 to 50.
Add attack: The amount of attack the item adds to the target (for seeds only). Ranges from -50 to 50.
Add defense: The amount of defense the item adds to the target (for seeds only). Ranges from -50 to 50.
Add intelligence: The amount of intelligence the item adds to the target (for seeds only). Ranges from -50 to 50.
Add agility: The amount of agility the item adds to the target (for seeds only). Ranges from -50 to 50.
Message shown when used: The type of message to show when the item is used (for skill scrolls only). Allows the following values:
  • Item Name
  • Name of Associated Skill
Invoke skill when used: Whether to invoke a skill when the item is used in the item menu (for weapons, shields, armor, helmets, and accessories only). 0 for false, 1 for true.
Skill ID: The ID number of the skill associated with the item (for weapons, shields, armor, helmets, accessories, skill books, and skill scrolls only). Starts at 1.
Skill ID: The ID number of the switch to turn ON when the item is used (for switches only). Starts at 1.
Activation allowed in field: Whether to using the item in the field (for switches only). 0 for false, 1 for true.
Activation allowed in battle: Whether to using the item in battle (for switches only). 0 for false, 1 for true.
Condition effectiveness: The effectiveness of the item at inflicting, removing, or resisting conditions (for weapons, shields, armor, helmets, and accessories only). Not used for items which inflict a condition on the wearer. Ranges from 0 to 100.
Condition resist or inflict: Whether the item resists or inflicts conditions (for weapons, shields, armor, helmets, and accessories only). Allows the following values:
  • Inflict
  • Resist (for weapons, this really means remove)
Weapon trajectory: The item's weapon trajectory if using a ranged weapon animation (for weapons only). Allows the following values:
  • Fly Straight to Target
  • Return to User After Striking
Weapon targetting: The item's weapon targetting if using a ranged weapon animation (for weapons only). Allows the following values:
  • Single Target
  • Fly Down the Center of the Screen
  • Strike Each Enemy Simultaneously
  • Strike Each Enemy in Turn

Items Usable By Actors (aka Heroes)

Standard file name ending: "_Items_Usable_By_Actors.txt"

NOTE: Whether an item is usable by a particular actor depends on both the usable by actor flag and the usable by class flag for that actor. This includes the option of an item being usable if the flag for class "(None)" is true and the actor does not have a class, even if the usable by actor flag for that actor is false.

NOTE: This data type involves varying amounts of data.

Item ID: The item's ID number. Starts at 1.
Actor ID: The actor's ID number. Starts at 1.
Actor can use: Whether the item is usable by the actor. 0 for false, 1 for true.

Items Usable By Classes

Standard file name ending: "_Items_Usable_By_Classes.txt"

NOTE: Whether an item is usable by a particular actor depends on both the usable by actor flag and the usable by class flag for that actor. This includes the option of an item being usable if the flag for class "(None)" is true and the actor does not have a class, even if the usable by actor flag for that actor is false.

NOTE: This data type involves varying amounts of data.

Item ID: The item's ID number. Starts at 1.
Class ID: The class's ID number. 0 indicates "(None)", ID numbers start at 1.
Class can use: Whether the item is usable by the class. 0 for false, 1 for true.

Items Conditions

Standard file name ending: "_Items_Conditions.txt"

NOTE: This data type involves varying amounts of data.

Item ID: The item's ID number. Starts at 1.
Condition ID: The conditions's ID number. Starts at 1.
Affects condition: Whether the item inflicts or removes the condition. 0 for false, 1 for true.

Items Attributes

Standard file name ending: "_Items_Attributes.txt"

NOTE: This data type involves varying amounts of data.

Item ID: The item's ID number. Starts at 1.
Attribute ID: The attribute's ID number. Starts at 1.
Affects attribute: Whether the item inflicts or removes the attribute. 0 for false, 1 for true.

Items Weapon Animations

Standard file name ending: "_Items_Weapon_Animations.txt"

NOTE: In the RPG Maker 2003 database editor there is an option to set the animation type to battle and a dropdown to select which battle animation to use. However, DynRPG does not have a corresponding field for the battle animation ID, so I was unable to include the ability to import the battle animation ID in DynDatabaseOverride.

NOTE: This data type involves varying amounts of data.

Item ID: The item's ID number. Starts at 1.
Actor ID: The actor's ID number. Starts at 1.
Battler pose: Which battler pose to use. Note: there's no corresponding control in the RPG Maker 2003 database editor for this field, and this actually doesn't seem to have any effect when it is imported. Nevertheless, DynRPG has this field, so I include it in DynDatabaseOverride just in case. Allows the following values:
  • Idle Stance
  • Right Hand
  • Left Hand
  • Skill Use
  • Dead
  • Damage
  • Bad Status
  • Defending
  • Walking Left
  • Walking Right
  • Victory
  • Item
  • Custom Pose <number> (number ranges from 13 to 32)
Animation type (0 = weapon, 1 = battle): Whether the animation type is weapon or battle. 0 for weapon, 1 for battle.
Weapon animation ID: The ID number of the weapon animation if the animation type is weapon. 0 indicates "(None)", ID numbers start at 1.
Movement before attack: Which movement to use. Allows the following values:
  • None
  • Step Forward
  • Jump Forward
  • Move to Target
Add after image: Whether to add an after image. 0 for false, 1 for true.
Number of attacks: The number of times to attack. Allows the following values:
  • Once
  • Twice
  • Three times
Ranged weapon: Whether the weapon is a ranged weapon. 0 for false, 1 for true.
Ranged weapon animation ID: The ID number of the ranged weapon animation if the weapon is a ranged weapon. Starts at 1.
Ranged weapon animation speed: The speed of the ranged weapon animation if the weapon is a ranged weapon. Allows the following values:
  • Fast
  • Medium
  • Slow

Enemies (aka Monsters)

Standard file name ending: "_Enemies.txt"

ID: The enemy's ID number. Starts at 1.
Name: The enemy's name.
File name: The name of the file used for the enemy's sprite, not including ".png" or other extension.
Color alteration: The color alteration value for the enemy's sprite. Ranges from 0 to 359 (RPG Maker 2003 database editor sets this in 10-unit increments, but you can go finer-grained with DynDatabaseOverride if you want).
Is transparent: Whether the enemy is transparent. 0 for false, 1 for true.
Is flying: Whether the enemy is flying. 0 for false, 1 for true.
Charset Transparent: Whether the charset (map sprite) is transparent. 0 for false, 1 for true.
Max HP: The enemy's maximum HP. Ranges from 1 to 99999.
Max MP: The enemy's maximum MP. Ranges from 0 to 9999.
Attack: The enemy's attack stat. Ranges from 1 to 999.
Defense: The enemy's defense stat. Ranges from 1 to 999.
Intelligence: The enemy's intelligence stat. Ranges from 1 to 999.
Agility: The enemy's agility stat. Ranges from 1 to 999.
Experience: The enemy's experience value. Ranges from 0 to 9999999.
Money: The enemy's money value. Ranges from 0 to 999999.
Item ID: The ID number of the item which the enemy may drop on defeat. 0 indicates none, otherwise starts at 1.
Item probability: The probability as a percentage that the enemy will drop an item on defeat. Ranges from 0 to 100.
Allow critical hit: Whether the enemy is allowed to make critical hits. 0 for false, 1 for true.
Critical hit probability: The probability (as 1 divided by this number) of the enemy making a critical hit. Ranges from 1 to 100.
Attacks often miss: Whether the enemy's attacks often miss. 0 for false, 1 for true.

Enemies (aka Monsters) Conditions

Standard file name ending: "_Enemies_Conditions.txt"

NOTE: This data type involves varying amounts of data.

ID: The enemy's ID number. Starts at 1.
Condition ID: The conditions's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the enemy to the condition. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Enemies (aka Monsters) Attributes

Standard file name ending: "_Enemies_Attributes.txt"

NOTE: This data type involves varying amounts of data.

ID: The enemy's ID number. Starts at 1.
Attribute ID: The attribute's ID number. Starts at 1.
Susceptibility rank: The susceptibility of the enemy to the attribute. Allows the following values:
  • A
  • B
  • C
  • D
  • E

Enemies (aka Monsters) Behaviors

Standard file name ending: "_Enemies_Behaviors.txt"

NOTE: This data type involves varying amounts of data.

ID: The enemy's ID number. Starts at 1.
Behavior ID: The behavior data's ID number. Starts at 0.
Precondition: The precondition type. Allows the following values:
  • None
  • Switch
  • Turns Elapsed
  • Enemies Present
  • Monster HP
  • Monster MP
  • Party Level Average
  • Party Exhaustion
Precondition param 1: Parameter 1 for the precondition. The meaning of the parameter and the values it can take depend on the precondition type. Note that this is not used for switch preconditions; for that, see Precondition switch ID.
Precondition param 2: Parameter 2 for the precondition. The meaning of the parameter and the values it can take depend on the precondition type.
Precondition switch ID: The ID number of the switch for the precondition if the precondition type is switch. Starts at 1.
Priority: The priority value of the behavior. Ranges from 1 to 100.
Switch on: Whether the action turns a switch ON. 0 for false, 1 for true.
Switch on ID: The ID number of the switch turned ON by the action. Starts at 1.
Switch off: Whether the action turns a switch OFF. 0 for false, 1 for true.
Switch off ID: The ID number of the switch turned OFF by the action. Starts at 1.
Action kind: The kind of action. Allows the following values:
  • Basic
  • Skill
  • Transform
  • Item
  • None
  • Random
Basic action type: The basic action type if the action kind is basic. Allows the following values:
  • Attack
  • Double Attack
  • Defend
  • Observe Battle
  • Charge Up
  • Self-Destruct
  • Escape
  • No Action
  • Change Row
Skill ID: The ID number of the skill if the action kind is skill. Starts at 1.
Transform ID: The ID number of the enemy to transform to if the action kind is transform. Starts at 1.

Attributes

Standard file name ending: "_Attributes.txt"

ID: The attribute's ID number. Starts at 1.
Name: The attribute's name.
Type: The attribute's type. Allows the following values:
  • Weapon
  • Magic
Damage multiplier A: The damage multiplier to use against a target with susceptibility rank A to the attribute. Ranges from 0 to 1000.
Damage multiplier B: The damage multiplier to use against a target with susceptibility rank B to the attribute. Ranges from 0 to 1000.
Damage multiplier C: The damage multiplier to use against a target with susceptibility rank C to the attribute. Ranges from 0 to 1000.
Damage multiplier D: The damage multiplier to use against a target with susceptibility rank D to the attribute. Ranges from 0 to 1000.
Damage multiplier E: The damage multiplier to use against a target with susceptibility rank E to the attribute. Ranges from 0 to 1000.

Conditions

Standard file name ending: "_Conditions.txt"

ID: The condition's ID number. Starts at 1.
Name: The condition's name.
Persists after battle: Whether the condition persists after battle. 0 for false, 1 for true.
Color: The ID number of the text color associated with the condition. Ranges from 1 to 20.
Priority: The condition's priority. Ranges from 0 to 100.
Action restriction: The action restriction imposed by the condition. Allows the following values:
  • No Restriction
  • No Action Allowed
  • Attack Enemies Randomly
  • Attack Allies Randomly
Hit percentage: The condition's base hit percentage. Ranges from 0 to 100.
Evade all attacks: Whether the condition has the effect "evade all attacks". 0 for false, 1 for true.
Reflect skills: Whether the condition has the effect "reflect skills". 0 for false, 1 for true.
Equipment cannot be changed: Whether the condition has the effect "equipment cannot be changed". 0 for false, 1 for true.
Susceptibility A: The percent multiplier of susceptibility a target has to the condition when they have susceptibility rank A. Ranges from 0 to 100.
Susceptibility B: The percent multiplier of susceptibility a target has to the condition when they have susceptibility rank B. Ranges from 0 to 100.
Susceptibility C: The percent multiplier of susceptibility a target has to the condition when they have susceptibility rank C. Ranges from 0 to 100.
Susceptibility D: The percent multiplier of susceptibility a target has to the condition when they have susceptibility rank D. Ranges from 0 to 100.
Susceptibility E: The percent multiplier of susceptibility a target has to the condition when they have susceptibility rank E. Ranges from 0 to 100.
Recovery turns: Minimum number of turns which must pass before the condition has a chance of abating (every action by every battler counts as a turn, not just the battler afflicted with the condition). Ranges from 0 to 999.
Recovery turns percent: Percent chance of the condition abating each turn after the recovery turns. Ranges from 0 to 100.
Recovery physical percent: Percent chance of the condition abating when the afflicted battler takes physical damage. Ranges from 0 to 100.
Base stat alteration: What type of base stat alteration the condition causes. Allows the following values:
  • None
  • Half
  • Double
Alters attack: Whether the condition alters the attack stat. 0 for false, 1 for true.
Alters defense: Whether the condition alters the defense stat. 0 for false, 1 for true.
Alters intelligence: Whether the condition alters the intelligence stat. 0 for false, 1 for true.
Alters agility: Whether the condition alters the agility stat. 0 for false, 1 for true.
Prevent skill by attack: Whether the condition prevents the afflicted battlers from using skills by their attack influence. 0 for false, 1 for true.
Prevent skill attack influence: The attack influence at which this condition prevents skills from being used. Ranges from 0 to 999 (don't know why since influence can only go from 0 to 10, but that's how it is in the RPG Maker 2003 database editor).
Prevent skill by intelligence: Whether the condition prevents the afflicted battlers from using skills by their intelligence influence. 0 for false, 1 for true.
Prevent skill intelligence influence: The intelligence influence at which this condition prevents skills from being used. Ranges from 0 to 999 (don't know why since influence can only go from 0 to 10, but that's how it is in the RPG Maker 2003 database editor).
HP alteration type: The type of alteration to HP the condition causes. Allows the following values:
  • None
  • Recovery
  • Damage
HP damage percent: What percentage of the battler's maximum HP will be taken or restored each turn when inflicted with the condition if the HP alteration type is Recovery or Damage. Ranges from 0 to 100.
HP damage units: How much HP as a plain number will be taken or restored each turn when inflicted with the condition if the HP alteration type is Recovery or Damage. Ranges from 0 to 999.
HP damage on step: How much HP as a plain number will be taken or restored every X steps in the field when inflicted with the condition if the HP alteration type is Recovery or Damage. Ranges from 0 to 999.
HP damage step number: How many steps in the field take place between HP being taken or restored when inflicted with the condition if the HP alteration type is Recovery or Damage. Ranges from 0 to 100.
MP alteration type: The type of alteration to MP the condition causes. Allows the following values:
  • None
  • Recovery
  • Damage
MP damage percent: What percentage of the battler's maximum MP will be taken or restored each turn when inflicted with the condition if the MP alteration type is Recovery or Damage. Ranges from 0 to 100.
MP damage units: How much MP as a plain number will be taken or restored each turn when inflicted with the condition if the MP alteration type is Recovery or Damage. Ranges from 0 to 999.
MP damage on step: How much MP as a plain number will be taken or restored every X steps in the field when inflicted with the condition if the MP alteration type is Recovery or Damage. Ranges from 0 to 999.
MP damage step number: How many steps in the field take place between MP being taken or restored when inflicted with the condition if the MP alteration type is Recovery or Damage. Ranges from 0 to 100.
Animation ID: The animation pose ID an actor shows while inflicted with the condition (assuming it is the highest-priority condition). Ranges from 1 to 32.
Message 2K ally state: Message for ally state. Only relevant for projects ported from RPG Maker 2000.
Message 2K enemy state: Message for enemy state. Only relevant for projects ported from RPG Maker 2000.
Message 2K already in: Message for already in. Only relevant for projects ported from RPG Maker 2000.
Message 2K regular: Message for regular. Only relevant for projects ported from RPG Maker 2000.
Message 2K recovery: Message for recovery. Only relevant for projects ported from RPG Maker 2000.

Comment Commands

Comment commands are the primary way for RPG Maker 2003 scripting in-game to communicate with DynRPG plugins. To make a comment command in RPG Maker 2003, use the Insert Comment event command option in the scripting of an event and put the appropriate text within the comment. Often, you will want to use variable values rather than preset values as arguments. You can do this by using DynRPG's standard syntax for a variable in a comment command, which is a V followed by the number of the variable you wish to reference. For example,

@dyndatabaseoverride_export V10

would use the value of the game's 10th variable as the argument of the command.

@dyndatabaseoverride_export_database "<file name base>"

Exports all database values which DynDatabaseOverride is concerned with to .txt files -- see the Exporting section. The file name base argument is placed at the beginning of the file name for each exported file. For example,

@dyndatabaseoverride_export_database "exported"

would export "exported_Actors.txt", "exported_Classes.txt", "exported_Skills.txt", etc.

@dyndatabaseoverride_import_database "<file name base>"

Imports all .txt files with the given file name base to the database -- see the Importing section. Note that unlike all of the other import comment commands, this command does not take a full file name including the .txt as an argument. It takes only the first part of the file name which is expected to be common to all files involved, with the rest being the standard naming convention for data files. For example,

@dyndatabaseoverride_import_database "easy"

would import "easy_Actors.txt", "easy_Classes.txt", "easy_Skills.txt", etc. Any files which are not found will be skipped.

@dyndatabaseoverride_import_<subset> "<file name>"

Imports a file with the given file name to the database as the particular subset of data that's part of the command name -- see the Importing section. Yes, I'm being a little lazy here and giving you just one entry to describe tons of extremely similar comment commands. For example,

@dyndatabaseoverride_import_actors "easy_Actors.txt"

would import "easy_Actors.txt" into the database as actor information. Note that the file name can be anything at all; you do not have to follow the standard naming convention with this command, or even have the file name end with ".txt". The contents of the file, however, must follow the correct format for the data subset expected.

The full list of subsets which can be used for the <subset> part of the comment command are:

DynDatabaseOverride Source Code

The source code for the DynDatabaseOverride plugin is provided in the DynPlugins/DynDatabaseOverride folder of the DynDatabaseOverride demo project. Feel free to modify the plugin to suit your purposes, release alternate versions, use snippets of code in other projects, etc. Some credit to Aubrey the Bard would be appreciated if you use a significant portion of the source code, but I won't make a big deal out of it. Instructions for creating DynRPG plugins can be found on the Getting Started page of the DynRPG website.

Contact

I would be glad to hear about bug reports for this plugin, projects in which it is being used, comments and criticisms, suggestions for future plugins, etc. Here are some ways to contact me:

Change Log

v1.0 (03/09/2021):