RPG Maker 2003

RPG Maker 2003

Not enough ratings
Making things, FAQ thingy
By prpl_mage
Do you want to know how to make a certain thing for your game? Such as sidequests, party swap systems, item crafting or upgrading and whatnot.
This guide just might help you!
   
Award
Favorite
Favorited
Unfavorite
Introduction
This is a guide I started way back to help users (such as yourself) to understand how to do things in the maker. Mostly "outside the box" kind of things since the maker is kinda limited in some sense.

Since people have questions I decided to make a complete guide for each question that I or someone else answered. But that took a lot of time so I simply didn't get anywhere. Anyway, a couple of years later I realized this was still laying around with unfinished sections where I had begun rewriting my forum answers into complete guides. So I simply decided to seek out all the other questions I had answered since then, add it in here and publish it.

Feel free to drop a question in this guide or make a thread in the forum / discussion board if there's something else you're trying to do but don't know how to get started. The forum is better since it'll reach more people who may be more competent at this than me after all.
The Tools
Variables and Switches (Of course)

Variables are great because just like in math, you assign value to them. In programming nothing really has any use unless you specify and assign things to them. But that last part don't matter since 2k3 is all drag and drop.

Since variables can hold varied information (0-999) we can use the same variable to read different outcomes, which is what we will use for a lot of things in this guide.

Unlike a variable, Switches are either ON or OFF, which severely limits options.
However, because of how 2k3 is structured Switches are useful for a couple of things such as triggers

Back to variables. Most of the time variables will be used for counting. If the value starts at 0 and an event adds 1 each time to that variables value then we have practically made a counter to keep track of things.
So if you have a parallel process that waits 1 second, then increases a VAR then we have a clock (although useless for the player unless we screw around with it) we can use to keep track of time such as a time limit for a mini game.

Likewise variables can be used to just store information. In one of my earlier projects the player could decorate their base. For banners there were 5 options, for the throne there was 2.
All "banner" events had event pages based on the value of the "Banner ID" variable. Each with its own graphic. When the player talked to the servant and picked that option the variable was set to a new value depending on the choice (0-4). And that was the entire system really. Same with the throne but only less options.
So the numbers themselves didn't represent value but instead order (systematic order) or ID of a specific thing to be loaded.

The maker has some different palces where we can enter event commands to "program" the game we're making.

On the maps the players visit we can add events for the player to interact with (action key), or that could activate when moved into the player (collision). Or when the player enters a specific tile (touched by). We can also make an event run an event the moment a trigger is triggered (auto start) or have something run in the background even while other events are playing out (paralell process). Events can also have several pages, meaning that the same event can have several different functions, although this is just a newbie friendly way of using branches.

We also have 2 things in the database. Battle events and common events.
The battle events are local, meaning that they are only active in that specific battle. Useful for making fancy boss fights.
Common events are global on the other hand, meaning that they can be triggered and also effect the game regardless of map. With some limitations.

To learn more about the different Event Commands that you will use to do any kind of programming in this maker: https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=1390704187

And with that basic knowledge in hand, let's move on to explaining how to do things.
--Battle related stuff--
________________________________________________________________________________
Elemental bonuses
To change how much damage an enemy takes from certain element or attack types change the resistance of the monster in the Monster tab (for example: fire)

You also need to change a weapon or skill to actually inflict that type of damage (such as fire)

You can also edit the effect of the different resistance levels in one of the tab, I think it's called Attributes or something in the database.
If the multiplier E is set to 0 for example, that means that a monster resistance of E resists the damage completely. If it is A, and A is set to 200, then they take double damage basically. If the resistance is set lower than 0 then the hero/monster will absorb and heal instead of taking damage.

Unfortunately, the maker does not have a way to track elemental damage inflicted on enemies or parties aside from the built in system. So if you want something special to happen when you use a specific element against an enemy or boss then you need to do a lot of extra work (it's honestly just worth it for specific bosses, too much work in this system).
Stealing skills (player)
If the goal is for the player to have a skill that "steals" items from enemies in combat.

There are two ways to go about this, one is a lot more work than the other, or at least another layer of complexity.
Here's the gist. The player chooses something that triggers a switch to be ON, when the switch is ON the battle event is called. In Each battle group you then decide what the player will get from using the steal. And at the end of the event the switch is turned OFF.


First off: How to activate the Steal skill?
Option 1
In the Skill tab you can create a new skill and change the type to be "Switch" in which case the usage of the skill will only activate a switch but not do any damage etc, which is good in this case. You can also add a cost and sound effect or something. But you only need the skill to activate a switch that can be used later. So feel free to name one of the Switches "BS Steal". Then add the newly created Steal skill to a character (that also has the Skill Battle command. With that you're done and ready for the next step.
Option 2
The other way is to use a specific battle command for the character with this ability. Make a copy of the Attack Command in Battle Layout. This copy is renamed "Steal" and will unlike the switch skill also choose a target - but it will not have a cost and it will also attack the target like any other Attack Command. But it also makes it possible to give individual steals for different kinds of monsters.
Now, you're possibly seeing the advantage of this, especially for the next question I'm going to explain.

Secondly: How to make the engine react to the trigger:
We now have two different ways to trigger the game into knowing that the player is stealing from an enemy. So how do we make the engine actually give the player anything? The answer is battle events. In each Troop slot you need to add an event tab with what the steal command is supposed to do.
Option 1
In the battle event trigger add a condition that the Switch BS Steal is ON. This means that the battle event will only activate once that switch in particular is ON, and that switch is only ON when you use the skill.

Option 2
If you went the Battle Command route then you instead need to add a slightly more complicated trigger for the battle event. That a specific character used a specific battle command (in other words, your newly created Steal battle command. You can also temporarily change the character's stats here if you want to make the Steal battle command do less / no damage compared to a normal attack.

Then add whatever cool sound effect or battle animation that you want to play to symbolize that you are stealing.
Next up, if you want this to be chance based then go ahead and use a temporary varaible (this can be any variable that isn't supposed to store any important value for later use), and a Variable Operations command to set that temporary variable between 1-6 to randomize it. Next throw in a Conditional Branch that checks if it is 3 or higher (If var => 3) and if it is then the player succeded, you give the player a success sound. With failure, do the opposite.
Regardless if you want to make this chance based or not, the next thing you want is to actually get something from the steal. So add a Message of what the player got and an item command to actually add that item to the player.

Option 1
At the very end of the command, remember to switch the Switch OFF again or the event will keep on looping and locking the game.
Option 2
If you used the Steal Battle Command instead, then you haven't activated any switch, just add an "End Event Processing" command.

So yeah, that's it really. Trigger and reaction. After you've made this for one battle group feel free to copy that tab and paste it into all other troops' battle events so you don't need to repeat it.

But wait, what if I want different enemies to give different items? Yeah, that's when we need the battle command instead, because option 1 with the skill doesn't specify a target you can't be picky. Choose rewards based on the Troop.
Option 2
In conditional branches in Battle Events, one of the options is "The target is X" Where X is a monster in the troop. When using a command with a target, you can use this to get the engine to know which one you just used your skill on.
So aside from what was mentioned above about how to make the engine do what you want - now you can also add Conditional Branches after the success in which the message and item given changes based on the target. So if there are 4 different enemies - then you need 4 different conditional branches, each one checking for each target.
Something like this:
IF target is Slime 1 > Message > Add Potion.
else
IF target is Pixie 1 > Message > Add Mana Dust
else
IF target is Slime 2 > Message > Add Potion.
end
End event processing

Just keep in mind that if you copy this tab and paste it into a new Troop, you may need to double check all of these branches to ensure that there aren't too few so that the event crashes (if the game only checks for 4 different enemies but the target is an enemy that isn't specified in the event).
Scan enemy
By reading the above you now know how to go about to make a custom battle command and the same skill and knowledge can be used for this one as well.
Like for steal we need a skill that activtes a switch or a battle command (if we want to pick a target), also worth mentioning that you can also have items that activates switches as well. So that's a third option.
Next, just like with steal we need to add a battle event with a condition that will react to the thing being used. And when it triggers we add sound effects/animations and messages to display the information we want.
There is a way to use the make to add a health bad to the enemies with pictures but that's a different process alltogether. But what you can do is use variables and message commands to display values stored in variables.
So for this we want to have as many variables assigned as values displayed at one time. Most likely 2 .
So with Variable Operations you can go towards the bottom and set variable 1 to be Equal to : Monster 1 Max HP, then set varaible 2 to: Monster 1 curent HP. We now have these values stored in the variables.
Next we use the Display message command and write" Green Slime HP /v[2] / /v[1] " Which will change the odd "/v[]" boxes to the values stored in variable 2 and 1 respectively.

Just like with steal - if you want to pick a target then you will need to add conditional branches to see which target was picked, and then display the correct information. And when you copy this to other Troops, you need to double check that the engine isn't trying to set a variable equal to a monster's value that isn't in the combat - or it will crash.
Blue Magic, Jump
Blue magic (aka, learn skills when enemies use the skill on you)

For the "blue magic learning" you will need a skill or battle command that activates a switch. Then in each of the different Battle Group tabs you need to make a battle command that triggers on that Switch to give the character the skill in question.
So if you're fighting a bunch of slimes in the swamp, then the battle group for slimes in the swamp will teach you poison gas etc. Then turn the Switch OFF.
The setup is very similar to the Steal command detailed above, but what you get from using the skill is different.


Jump
Well, the easiest way would be with switches and a status. A status that makes the chacter avoid 100%. So use a skill, activate the switch. Or a battle command that activates a switch - the same as the above examples.

In the battle event, that triggers when the switch is ON, give the character a status with 100% dodge, and an animation that is blank ( add an extra in the characters battle animation and make sure the status effects uses that). Then activate another switch, and turn the previous one OFF.
Then we make another battle event. Next time it is that character's turn to act (Hero 2 can act) and the second switch is ON. Do the Jump damage animation and damage then remove the evasion status, instead give the character a 1 turn stun to end the turn straight away without acting, and turn the switch OFF (to prevent the character from taking its turn as well).

Also, remember to add a battle command that turns all your battle related switches like these OFF at the end of a battle. Or as a parell process on the map / common event.
Revive enemies / Call support
Enemy reviving enemies
For the revive thing I'm trying to remember if 2k3 let enemies use the revive to affect defeated monsters, maybe it only worked if it was a skill that "targets all allies". In that case just give a monster a skill like that and in the behaviour in the Monster entry set it so that it has priority 99 when number of monsters in battle is 1.

In the Monster tab (enemy?) you can create your monsters and add skills to their list of behaviour. There is a list when you add a new action and also a priority slot. The higher the priority - the more likely it is that the enemy will use that action on their turn.

So when you've killed the other monster, the monster will prioritize using the revive skill and remove death and heal everyone, then it continues like normal.

Now, if the engine doesn't have that built in we need to make the game realize it should force a monster to revive anyway,


Call enemies thing

Our second way of doing the revive is actually the same thing in theory as we will do to activate the "call for allies" as well, so let's just mash them together.

Since the skill itself doesn't matter, we just want a cool sound effect or animation really so we'll just create any old skill to use as a decoy.
BUT when we add that skill to the monster, we also check the box that it will activate a switch. Let's name that switch "Enemy combat skill1" and that the skill is used (priority 99) when the number of monsters in battle is less than 2.

With all of that set we move on to the Battle Group tab and an entry with our reviving/calling monster in it. We now add enemies to the battle but right click the object and choose "Hide". This means that the monster entry is present in the battle group but is not really part of the battle until shown. So add as many hidden enemies as you want the cap to be for reviving/calling.

At the very first round we want to set Switch "Enemy combat skill1" to OFF, which will trigger on the first turn and then not again. This is to prevent the upcomming event from running at the start of combat per chance.
Next up we create a new battle event that is triggered when the switch "Enemy combat skill1" is ON. In this entry we can add a cool sound effect and animation if we haven't already done that in the skill. Next we use the event command to Show enemy and pick from the list.
Now, if this is supposed to repeat and show new enemies each time then we need to be a bit smart about it. So we'll use a temporary variable that can increase by 1 each time the event is triggered (also add to that start of combat event to set this variable to 0 if you go this way).
So we'll use a conditional branch. If VAR = 0 > Show monster 2. Then increase the VAR by 1 and turn the "enemy combat skill1" OFF.
The next conditional branch will check for VAR = 1 and Show monster 3. Then increase the VAR by 1 etc. Repeat until done.

This way the monster entry will use the skill, the switch turns ON. The battle event triggers and Shows (revives/calls) a Hidden monster and then let's the engine know what monster to Show next time.

Also, if you use this process for reviving, then another way could be to double the enemy's HP in the monster TAB and add a battle event that triggers when their HP is below half, increase their hp back up and then hide them. This way you don't have to worry about there suddenly being more enemies than before.
Gravity: Skills dealing percentile damage
This is the kind of thing you will have to solve in 1 of 2 ways:

1. Create a "Poison" status effect that lasts 1 turn and deals 50% of hp as damage. However, this means 50% of max hp, so using it twice would reduce them to 0 or 1 (if it can't kill)

2. Use battle events. The skill activates a switch, in each battle event set a condtiion for that switch then check the target manually for each enemy. Set temp var to target hp, divide that by half, change hp command > remove hp equal to your varaible. Trun switch off.
Enemy skills that heal the players
I always added a new element called "heal" that all the characters had such a good resistance against that they would heal instead of taking damage. So if the attack deals 100 damage, the characters would have -100% on the resistance against that and heal 100 instead.
That way you could also inflict a status effect - however, this won't solve your problem because you want the healing to also ressurect - and damage spells can't do that.

So I actually think the battle event route is the only way to go. Check if a character is dead, revive it if the enemy has enough mp, and then inflict the status, turn some switch on/off probably.
Items that deals damage / single us skills
If an item is of the "special" type a drop down window will show up where you can specify "Skill to activate", you can use this to create a single use (or more if specified) item that performs a skill from the game. Such as an explosion that deals damage to enemies, a buffing spell that increases resistance.
Dialogues during battle
Easiest solution would be to use Switches to prevent it from playing again.

Either use a temporary switch for multiple battles or dedicate a speciific switch for this purpose alone. Such as a one time dialogue thing.

You have the battle event setup with the condition you have in mind. Such as a character using a specific skill command, a char dying etc, turns passed, boss hp etc.
But at the start of it you add a conditional branch that checks that the Switch is OFF, if it is then you add your message box and other things you want to happen. If it isn't, then nothing, just end the event processing. Also, at the end of the message, you activate that Switch so the game knows it has been played and will prevent it from triggering over and over again.

That way we have a condition to play the message, the switch is turned on once the message play, and when it tries to play again (because the condition may once more be fulfilled) it detect that the switch is ON so it skips it from playing.
Front facing battle system
Well yes.
But it's not an option in the maker, it just means that you need to get resources that are front/ back facing and that you allign those to match what you want.

The battle screen is just a screen after all.

More details:
In Battle Layout you can change where the Heroes are located.
In Troops you can change where the monsters as located.
You can replace the hero sprites with a blank sheet to make them all invisible, or make something else to represent them.
You'll need to make all battle animations front facing as well. Or just, change the ones with exessive movement.
Change Hero Battle Animation / Class
Sometimes you want your character to enter some sort of super state or to gain a different battle animation set. While there are commands that allow you to change a character's name, faceset, commands and overworld sprite - there is none for their battle animation.

Class is the easiest way to change this since that only affects battle sprite etc, that way if it's only something battle related you don't need to mess with the rest. The alternative would be to make a duplicate of the hero and switch between them which could create some issues with stats and so.

In the event command: Change Actor Class, the second option is about level. "No change" or "set to 1". So pick no change.

Then you can set if skills changes or not. And finally Parameters (stats). The options here being "No change", "halve" or "set to level 1". So pick no change here as well. Now only the battle sprite, the battle commands and maybe some battle skills will be changed but it will still be treated as the same character for all other purposes.

What if you want all the equipment to carry over when the class is changed?

In the event that changes the class, you can store the hero's equipment ID in different variables before the change. So one variable for each: Hand 1, Hand 2, Head, Armor, Accessory 1, Accessory 2. Either use 6 temporary variables only used for this event, or dedicate 6 varaibles for it.

Control Variable > ""VAR:HAT"" > Set > Player > ""The Hero"" > Head ID. etc

Then after the class change is made. Use the Change Actor Equipment and choose the corresponding varaible for each of the equipment types.

Change equipment > Fixed > ""The Hero"" > Change > ""VAR:HAT"". etc

That way it will equip the hero with the same items it had seconds earlier.
--Non battle stuff--
________________________________________________________________________________
"Kill stuff" Quest
What is it?
Maybe you want a quest in your game that asks the player to defeat a certain amount of a specific enemy type for a reward. I call this, a "kill stuff"-quest.

In theory
The simplest way to do this is to Make 2 Switches and then a variable
First switch is activated when the quest is initiated / started
The second switch upon completion (So that the player can't repeat it)

When the switch is ON, progress can be made to your variable (which is basically your kill count)
If killing slimes is the quest - then you increase the variable at the end of a battle involving slimes.
If you use random battles then you need this event to go into every Monster Group that has slimes in the database.
if you use on-map encounters then add it to the victory condition of those involving slimes
By using the Switch as a prerequirement you can't make progress unless the quest is undertaken and we can avoid some bugs.

Example. What to actually do
Create an event that will initiate the quest. It could be a NPC, or an object. For this example, we have a quest board.

Quest board event
Message
Show choices
Player choose the quest
Message
Activate Switch: "Kill Quest 1 taken"

In the Battle events
If Switch "Kill Quest 1 taken" is ON:
Control variable "0001 Slime tally" +1 (if there was one slime in that battle)

Quest board event
(When interacted with again)
if Switch "Quest 1 Finished" is ON:
End event
Else
If Switch "Kill Quest 1 taken is ON:
if Var "slime tally" is greater than or equal to 5
Display message: Quest complete
Change gold: + 500
Activate "Quest 1 Finished"
Else
Display message: "You have defeated \v0001 out of 5 Slimes"
Collectathon Quest
A quest where the player needs to find and bring a quesgtiver a certain amount of items.

I usually make an event with 3 pages for simplicitys sake, you don't need to but it makes it easier to keep track of the state. Let's say that the event is a quest giver, a NPC.

The first page is when you first interact with the questgiver, the second is for when the quest is in progress and the last is when it is already finished
I usually use a variable for this called something like "Quest 3 Vases" or smth. (0, not started. 1, progres. 2, finished) but it can also be done with switches "Quest 3 Vases" , "Quest 3 Vases completed" that are ON/OFF.

When you interact with the event the quest is not yet started and you get your message, hints and everything about what to do. Then at the end the variable is increased / the switch is turned ON to signal to the game that you have started the quest.

This in turn can also be used to make the items appear in the world, or make it possible to pickup the items if they have been there all along. Do this with a page / or conditional branch that checks for the quest to be in progress for those item looking events. Like 3 different vases hidden in a mansion.

Next on the second page of the quest event when interacted with the game will set a variable equal to the number of the item you have. I usually create a variable called "TEMP" for these instances. A variable that is used in an event in specific and then not needed for later. Let's say you need 3 Vases. Then this temporary variable will set a value equal to the number of Vase the player has in their inventory. If you have 1, it will have the value 1 etc.
Variable operations > TEMP > SET > Other > Number of: Vase

After setting the varaible to the correct value (how many vases you have), a conditional branch follows that checks if the value of that variable is 3 or more (the amount needed).
If it is (YES), you progress with what is supposed to happen. You remove 3 Vases, get your reward or unlock the thing that is locked and then increase the quest varaible / activate a switch to signal that the quest is completed.
If it isn't (NO/ELSE), then tell the player how many Vases they have (using the \v000# message command where you replace all those 0s and # with the Varaible's ID) and repeat part of the quest information message that usually have some sort of hint in it.

If the quest is complete and the NPC is interacted with again, since the third page will trigger from the quest being finished - it will not activate the quest again, maybe just a message with a thank you or somehing.
Cutscene / Moving the camera away from player
To move events on the map you will most likely use the "Move event" command.

To move the camera there are two main ways.
1. Use the Scroll Map command, set a direction and how long to move it.
2. Make the player invisible with the "Show/Hide Player" and use the Move Event command to move the player, the camera follows the player.

Note, the camera can't move if the map stops somewhere. So you may want a black outside of the map if you want certain things centered.
Secret area: Fake wall, Invisible floor
For fake walls
If you have it on your tileset already you can have a tile that is "above the player", symbol for that is a star. If not, you can make an event using a tileset tile from the upper layer of the tileset, or from a charset and make it "above the player". That way when the player walks into it they will simply walk through it. Just ensure that the tile underneath is passable.

For invisible floor
You need to place an event that uses the "graphics" from the tileset, a piece of the tileset that has the "below hero" collision (marked by cicle in the Tileset tab).

The event itself is just "below hero" on collision and no event commands. Use the pages or just add a precondition if something is supposed to trigger it.
Invisible walls
To make an invisible wall for certain parts of your game. Such as preventing a player from making a choice or participating in a cutscene.
This is also useful if you're making a custom menu system and want control over where the player is.

Create a top layer tile that is just the transparent background but change the collision to "Same as hero".

Or just place an Event on the map that is "Same as hero" with no actual event commands.

Since the object has the same collision as the player, the player cannot pass it.
Walking sound and speed
Walking sound

There is a way which actually quite simple.

In the database under the "Terrain" tab you can change so that different "terrains" have different step sounds.The option is called "Footsteps".

Create new ones if you need to.

Next up go to the Tilesets you are using and assign the correct Terrain to the correct tile based on how you want it to sound.

I you want to make it more complicated then you need to fill your maps with events that activate on Hero Touch, transparent and below hero that simply plays a sound effect and then ends process.


Walking speed

Events have 6 different movement speeds. 4 is normal.
To change the movement speed of "the player" you need to add a "Set Move Route" command and then pick "Player" and then choose the move action "Decrease speed". That will decrease it to 5 (weird I know) which is slower, but it's noticable slower mind you (I think it's half speed).

Basically, the movement speed is only controlled by an increase or decrease. The lowest is -6 and the highest is +6.

If you want speed +4 you can't just add an event that increases speed 4 times, if it starts at -2 it will only go to +2. But if it happens to be +2 already when activated it will become +6. That's why you need to be smart about it.

So how? If you want speed +4 you have to first decrease it to the lowest (or highest depending of preference) and then increase it the desired number of steps. So after you decrease the speed to -6 you increase it by 10, that way it will end up at +4.
Showing two characters in a dialogue instead of only one face
You can make a new faceset picture showing both characters in the same picture but one half is one character and the other one is the second. Or them facing each other. Then you would approach this just like you normally would (show face, show message).

But you can't do this with the built in message and show face event commands if you want both faces the same size. Instead we need a work around.

So instead we'll cut out the faceset avatars and save each that is going to be used this way as an individual picture. Then you import it as Picture instead of faceset.

In the event that shows the dialogue you will instead use "Show picture" and assign the first character as "picture 1" and choose the face picture. And then the second character is added with another "Show picture" command and assign it as "picture 2" and place it on the other side. Now make sure that you check the boxes at the bottom of the command window to make it appear on a layer above the message box, and enter the coordinates for the screen to align them where you want them to be. And make room for the second head in the message box.

Ooooor. Just place the character faces above the message box, as in "north of it", that way you can utilize the entire message box and don't need to keep that in mind. You can even use a full bust of a character like in fire emblem instead of a box. Or add a border around the face.

Just remember to erase picture 1 and 2 when the message box is done or the faces will stay there.
Items/Equipment with durability
Haven't done this myself except for "utility items" used on the overworld (pickaxes and such), but let's get to it.


How the decay actually works depends on how you've set up your battle system, but yeah it's mostly a matter of variables, and then giving the player some sort of chance to see the state of the weapon.

And then it's a question if you have a "bracketed profile" with less defence or less damage for the equipment once it reaches below a certain number.

The problem here being that each weapon and armour piece etc needs it's own set of at least 2 variables and a switch.
Max durability, Current Durability and a switch for Broken. (+ more if you do bracketed profiles and such)

So if weapons are simply bought from a shop then you're gonna have a problem. And a tool like GameMaker that handles local variables is better suited for what you're trying to make.
If equipment is unique however, and you only get one of each then it's more doable.

As for actually setting it up. You mentioned a sword let's go with that.

Your Slim Sword has 250 durability. So upon the start of the game we set SS Max D to 250, then SS D to 250.
Next up for each event that affects durabilty we need to see which items are equipped. (I you're using the default equip system then simply use that check, otherwise you need to use a variable to check the ID of the equipped weapon, so in this case probably 1)
Each time your attack event triggers and the Slim Sword is equipped then reduce SS D by 1.
For each parry, if the Slim Sword is equipped, reduce SS D by 3.
For each time an enemy hits you with an attack using the Corrode element (not possible in the default battle system without a lot of work) while using Slim Sword then reduce SS D by 3
If you die with Slim Sword equipped, reduce SS D by ((SS Max D x 25) / 100)) - that's 25% of max durability.

So that will keep reducing your durability.
Next up you might want to give your player some sort of warning when it's about to break.
A simple way would be to have a common event, parelll process, check to see if Slim Sword is equipped. Then see if SS D is less than ((SS Max D x33) /100).
If it is, then Show a picture of a Yellow Sword in the top left corner using a Show Picture command.
If it is 0 or lower, then show a red picture instead and activate SS Broken ON, and also a shared Switch for "Weapon Broken" (which will stop you from attacking, or change your damage to 0, or 1 or whatever you see fit)
Note that a else case for this paralell process should be to set that Weapon Broken switch to OFF so that if you have a working weapon then everything is fine.

Next up is repairing.
The coolesy way would be to set the cost to SS Max D ´- SS D x a gold cost so the more broken the weapon is the more expemsive it is to repair.
Now you wanted max dutasbility to decrease over time. So here you could add a new Var for "SS repair count". So that for every third repair SS Msx D is reduced by 1. Or just sip that and reduce by 1 for each time.
And them you set SS D to SS Max D, making it equal to the max again, fully repaired.
Or, repair ir based on how much momey you had instead, removing the speed bump of having a broken sword but not enough g to repair it.
Of course even simpler would be to set repair cost to a static value independant from weapon and durabilty.
Filters / weather
How to add a filter system over the screen when an item is used. For example, implementing a grayscale filter, or if theres a heavy storm to have a lot of snow particles over the screen.

There is a command called "Tint Screen" in which you can change colours and saturation, drop that saturation all the way down and everyting will be grayscaled.

There is also a command called "Weather" in which "Snowstorm" is an option, you can tweak it a little as well.

Otherwise you can make your own snowfall with pictures, prefereably a spritesheet type that just repeats and follow the hero.

If you make an item of the "Switch" type you can assign a switch the item will turn ON when used.
Then make a Common Event in the database that is triggered when that switch is ON.
In that event, tint the screen with the same command, then add a "Wait" command for X seconds, and after it is concluded, tint the screen back and turn the Switch OFF (or it will repeat).

As for the picture. When you make your snowfall, you make it like a sprite sheet for a battle animation where each picture is part of the same file but next to each other (or on top of, your choice) as long as the dimensions are the same for the pictures you can use the spritesheet function of the "Show Picture" command to assign how many pictures it should be and how fast it should loop.
Hero chased by large sprite
The question was about the player being followed by a large ghost.

First of all picture

By importing a picture into the picture folder and using the "Show Picture" command you can set up a picture at a specific coordinate (X and Y).
You then need to set an event to check the hero's current position (X and Y) and set up an event that controls the ghost's movement towards the hero based on those coordinates. (+ or - to the X or Y values if the player is above, below, to the right, to the left etc.)

(You can also just make a transparent event that follows the player and then store the coordinates of that one and set the picture's coordinates equal to the event, but it can be clunky in its movement)

Collision with the picture
To teleport the player to a new map as a result of being caught, you need a parallel process that checks if the ghost's coordinates and the hero's coordinates are the same. Conditional branches to check the values etc. If both are true (or within a margin), you turn on a Switch that triggers a second event that plays some cool sound effect and then you add a "Transfer Player" command to teleport the player to a different map.
Timing / rythm mini game
Simple answer. Through a lot of work and manually synching a song with button presses.

Longer answer.
First you need a song.
Then you need some sort of paralell process event running according to the "timing" of the song.
Last you need a paralell process event that checks for player input
(and you probably want some sort of graphical representation of what's going on).

When you have decided your song you need to decide at what point you want the player to press what button. To set this up you need a paralell process ( can run alongside other events) with Wait commands and then triggering of switches / advancing a variable.
Say that the first button press will be when the song is at 7seconds. Then you play the song, wait command 6.8 seconds, activate Switch PRESS 1. wait 1s, turn PRESS 1 OFF.
That will later give the player a 1 second window of when to press the button before the switch is turned off again.
And then you just continue like that for the rest of the song. Cue completion screen at the end of the song.

The next event will check for player inputs.
Paralell process once more, this time with a Key input command that checks for the input of whatever input you want (let's go with action key (5)).
So key input, only action key (5), store in variable INPUT
When the player has correctly pressed the action key set up a conditional branch that checks the input (kinda uneccessary here but you'll need it if you want more than one input.) Therefore another conditional branch, is variable INPUT 5? If yes, check if the switches are on.
New conditional branch, this time to check if switch Press 1 is ON. if it is, play sound effect of success and reward player with however you want to reward them, then turn switch Press 1 OFF (or player can mash for multiple points).
If that Switch isn't ON, check for the next switch etc (if you use different switches for different inputs for example).
If none of the PRESS switches are ON? Well that means the player screwed up, So your Else case will be a bad sound effect and penalize the player for it.

Clarification

So we need two events for this to work, one that keeps track of the song and one that keeps track of what the player does.

The second event that handles the input is the thing that actually lets the player do the thing so to speak. (Technically, it's the thing that lets the game know that the player is doing the thing but whatever).
Being parallel process the event runs even if other events run, meaning it will not interrupt the first event. It will just repeat over and over again, forever.

To simplify the system I decided to use a single Switch (PRESS 1).
PRESS 1 indicates a moment in the song where you want the player to press the button.
The concept is this, when the player presses the button while PRESS 1 is ON, they are pressing at the right time.
If the switch is OFF however - they are not pressing it at the right tie.

To actually check the player's input we need to use the Key Input command, this will store a value in a variable or just progress once the valid keys are pressed.
If you want the same button pressed at all times you don't really need to store the value. Just check the box that waits for input.
If you want the player to press different buttons however, we're gonna need to store it. And at that point we will need a conditional branch to check what button was pressed (what value was stored in the variable).
BUT if we only roll with the Action Key then ignore that part and move to the next bit.

The conditional branch will check if the switch (PRESS 1) is on, this will achieve the concept above, the key was pressed at the correct time.
If this branch is true (YES)
Then the player will get whatever reward or point you want this to generate.
Turn the Switch OFF so that the player can only earn points once per "moment".
If this branch is false (NO)
Then the player will get penalized for not pressing at the right moment.

And that's it, once the event reaches the bottom it will repeat since it's paralell process and the player is back at the input step. Maybe add a 0.1 wait command to stop the player from triggering a bad press afterwards.

So something like this.

Key Input processing [temp] (5) Wait
Cond Branch : Switch [Press 1] is ON
YES
Sound effect : yay
Change Gold : +10
Control Switch [PRESS 1] = OFF
NO
Sound effect : boo
Change gold: -5
Wait: 0.1 sec
Stealth section
It's doable but really easier in other makers.

What you need to do for each individual "enemy" is to have paralell process event always checking thier facing (this is under conditional branch as an option to "sprite"). Then you need to constantly keep a X and Y variable updated for the enemy's current position on the map.
Then you need to keep a X and Y for the player's position.

Next you need a conditional branch to react when these two factors are true:
1. The enemy is facing the direction of your hero.
2. The player is withing range.
Doing this isn't all that complicated really but still needs work.

So if Enemy 1 is facing Right, then if the player's X position is higher than Enemy 1 it means they are in front of them. HOWEVER, you might be in one end of the map compared to the enemy so you also need to see if the Player Y is 5 more or equal to Enemy 1 Y or 5 less or equal to Enemy 1 Y.
I hope you get the point.
Now to the tricky part. Cover, doing the above solution will get you caught even if there is a wall inbetween you if you are close enough. The best way to solve it is to mess around with the Terrain ID thing and put some more effort into the map design.

I would advice to make small rooms with a maximum of 3 enemies at a time or setting up those variables might be a chore.

There are of course some more manual ways of doing this, such as having a "cone" of invisible events changing position in relation to the Enemies. And them touching the hero will trigger the getting caught. If you prefer that way then go ahead, it's not foolproof however and tends to lagg behind.
Moving backgrounds
There is generally two ways to go about making animated backgrounds as far as I remember.

One is only possible in the steam version.

1. Use a picture.
You can create a picture which is a "set", meaning that all the frames of the animation is in the same picture file side by side. When you import the file it's gonna look bananas because it's just this long thing with pictures side by side. But then when you use the Show Picture command you can choose to make a set out of it, deciding how many rows and columns the picture is going to be divided up into to create the frames of the set. You then assign the picture to automatically cycle between the frames on repeat.
So you create a Common event in the database which is only triggered when called. You use the Show Picture command and splice up the image into the frames and set the animation.
But in the Show Picture command you also need to check the bottom of the window that the picture will be shows on the correct layer. Above the battle background but below battle animations, battle chars and monsters etc.
And then end event process.
Then in your troops you have a call event command which directs you to the common event you created. That way when battle starts the event is called and the picture is played in the background.

2. Manually alter the battle background.
Create a lot of different versions of the background you want animated and then import all of them. So you have like "Dungeon 01" and then "Dungeon 02" etc.
In the battle event you will use the Change Battle Background command to set it to the first picture in the animation you are going to create. Then add a wait command and a new change background command to change it to the next one in line.
Continue the same way until the animation is complete upon which it will loop back to the beginning. This battle event will just be rolling in the background during your battles.
It acheives the same thing as 1, but with some more manual work.
9 Comments
prpl_mage  [author] 18 hours ago 
Hmm, try to stall a few rounds after the first one is defeated and see if the variable increases everytime it would be that monsters turn. It could be that the check is repeated even if the process is ended. You might need a switch or something to turn ON then to prevent it from re-running if that's the case.
madoca la loca 8 Oct @ 4:07pm 
First off I wanna say thank you for the F9 menu, I had no clue I could open up such a thing, this'll save me hours !! But I've tried the End Processing Event after the enemy's HP reaches 0% and... got a bit of inconsistent results? Sometimes, when there's two enemies, the value would only go up by one. And sometimes when there's a singular enemy defeated, it shoots up to 7. Either I don't know how to properly set the enemy death condition, or somethin else is happenin
prpl_mage  [author] 8 Oct @ 10:33am 
Hmm, when you testplay your project you can press F9 to get the switch and variable window. Check what value your variable is.
It's likely that you need to add a stop of some sort to the battle event so that it only triggers at the start or end of the battle (or preferably whenever the type of enemy is killed). A simple "End Event process" should work.
madoca la loca 7 Oct @ 5:12pm 
Hello ! I'm having a bit of a hard time making the "Kill Stuff" quest work. I'm using random encounters, and I do have the battle condition of adding 1 to the "enemies killed tally" in every Troop this specific enemy is encountered in. But, even if I encountered and finished battle with at least one (I made it so the quests asks for 10 of them), when I talk to the NPC, it completes the quest as if I've already killed 10 of them. I don't think it's an issue with the NPC either, I've reviewed the events a thousand times over and I've got no clue what I'm doing wrong. Sorry if this is too much trouble !
hamburger27 7 Sep @ 1:11pm 
nah ill read it, i dont learn anything from copy pasting
and ill let you know if i need help
prpl_mage  [author] 7 Sep @ 12:47pm 
I mean, you don't need to read it unless it feels motivated. But let me know what you want help with and I can probably give you some pointers.

Otherwise the later makers like RPGM MV have script support and you can simply ask for a script from the community and paste it in. That's also an option.
hamburger27 7 Sep @ 11:39am 
okay fine ill read it out of respect to you
prpl_mage  [author] 7 Sep @ 10:09am 
Then maybe a Youtube guide is more up your alley than a text-based guide I suppose.
hamburger27 6 Sep @ 4:52pm 
1 problem
i dont like reading