Variable EXP rewards?

Murg1

Villager
Member
Joined
Feb 27, 2019
Messages
20
Reaction score
1
First Language
English
Primarily Uses
RMMV
Does anyone know how to change the EXP reward based on the level of your actors that are in battle? I need a system where enemies that are 4 or more levels lower than your actors don't grant XP. I don't want players to feel incentivized to grind low enemies.

Currently I am discouraging low level farming by exponentially increasing the XP rewarded for each enemy level, and exponentially increasing the EXP required for each level.

The problem with this method is that at level 50, enemies grant literally 300 trillion EXP and it is an obnoxious number to be working with. Additionally, if someone manages to kill a mob that is 2 or 3 levels higher than them it gives them a HUGE boost to EXP.

I know that Isiah_ExpMultiplier allows RPGmaker to set a custom XP formula based off up to 3 different variables.

So how can I set those variables to the levels of the actors that I have in battle?

One complicating factor is in my game you are continually creating new actor party members as you play. I can't use a static Actor ID in the formula because my actor ID's change throughout the game.

Another complicating factor is that my game allows for you to have 3 or 4 actors on the battlefield at once, so I need to be able to account for all their levels, or at least take an average of all their levels.

Ideas?
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,675
First Language
German
Primarily Uses
RMMV
do you use random enemies or enemy events?

If you use enemy events, then have the event check the party level against the troop before the battleprocessing, and temporarily apply a state to the entire party that reduces XP gain, and remove that state after the battle processing in the event.

If you use random encounters, you need to add a plugin that executes a common event at every random encounter and then have that common event do the calculation. That will be a little more complex because the common event has to identify the troop to determine the level, but it can be done as well.
 

Murg1

Villager
Member
Joined
Feb 27, 2019
Messages
20
Reaction score
1
First Language
English
Primarily Uses
RMMV
do you use random enemies or enemy events?

If you use enemy events, then have the event check the party level against the troop before the battleprocessing, and temporarily apply a state to the entire party that reduces XP gain, and remove that state after the battle processing in the event.

If you use random encounters, you need to add a plugin that executes a common event at every random encounter and then have that common event do the calculation. That will be a little more complex because the common event has to identify the troop to determine the level, but it can be done as well.
Thank you for your reply. I am using both random and pre-set encounters. I quickly Googled Random Encounter Events and found the Himeworks Plugin. (http://himeworks.com/2015/11/random-encounter-events-mv/)

Thank you. I never thought to use that terminology in my previous searches.

Now when it comes to actually setting up an event to check my party level against the encounter level, how do I do that specifically? Obviously the pre-determined events will be easier to do because I know the enemy level, but I am doing random encounters and there is like a level range inside a particular dungeon, how would I test my levels against those unknown levels? Do you know?

Thanks again.

EDIT: and if someone is able to attempt to answer this, please remember I am changing the actors in my party all the time. I can't use the default Common Event Game Data options to call an actor level, because I don't know which actors players will have in their party.
 
Last edited:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,675
First Language
German
Primarily Uses
RMMV
scroll down in tsukihimes description of the plugin until you get to
Accessing Encountered Enemy Information
That will give you a script base where you can get any data from the troop selected for this random encounter.

Then you can use a lot of control variable commands with your actor data and the script access to the troop data to compare them in a mathematical way. Unfortunately that will require you to come up with some form of formula to base your effect on.

For example you could go "add all levels from the actors, multiply the sum with 1000 to get number A1", "add all HP+ATK+DEF+? from all enemies to get number B1" and "Divide B1 by A1 and if the result is lower than 0.7 then apply 50% EXP reduction, if it is lower than .3 apply 90% EXP reduction" and so on.

Of course the example is only faked numbers because no one knows which numbers you based your game on, but the principle should work.
 

Murg1

Villager
Member
Joined
Feb 27, 2019
Messages
20
Reaction score
1
First Language
English
Primarily Uses
RMMV
scroll down in tsukihimes description of the plugin until you get to
Accessing Encountered Enemy Information
That will give you a script base where you can get any data from the troop selected for this random encounter.

Then you can use a lot of control variable commands with your actor data and the script access to the troop data to compare them in a mathematical way. Unfortunately that will require you to come up with some form of formula to base your effect on.

For example you could go "add all levels from the actors, multiply the sum with 1000 to get number A1", "add all HP+ATK+DEF+? from all enemies to get number B1" and "Divide B1 by A1 and if the result is lower than 0.7 then apply 50% EXP reduction, if it is lower than .3 apply 90% EXP reduction" and so on.

Of course the example is only faked numbers because no one knows which numbers you based your game on, but the principle should work.
Thank you so much for your help.

But oh crap haha. I have spent 250 hours in RPG maker MV and I think customizing my EXP tables and EXP rewards is proving to be the most complicated thing I have done yet haha.

I think I am going to be able to use the YEP Advanced Variables and Switches and the command Eval: $gameParty.highestLevel() to call the highest party member level as the point of comparison for my own players. Only testing the highest party member should work from a gameplay stand point, because like for example in World of Warcraft, if a high level player is running low level players through content, it's accepted that those low level players shouldn't get much EXP. People don't expect to be allowed to carry low characters through content.

And for the enemies, I am going to have to figure out how to use $gameTroop as per Hime Works' recommendation to check all of their agility, and then calculate the average agility of all of them so that it's one number being compared to one number. From there, I can divide the agility by my stat scale, (like 10 agility per level, so divide average agility by 10 to get a level approximation.) Agility will work well, because I don't plan on making the speeds of my different character classes very different.

I think I have it figured out logically, but I just need to figure out how to actually implement it.

Thank you again Andar.

If anyone else has any more advice to offer, please do so. I am in over my head here haha.

EDIT: Or wait, instead of calculating the enemy levels through agility, maybe I can just set a variable "troop level" for each troop. :S

EDIT 2: Okay I have successfully run a random encounter event that sets a variable dubbed HighestPartyLvl to the level of my highest party member. Now I need to figure out the other side of the equation (my enemies), and then figure out an appropriate EXP debuff. I will report back as I progress today.

EDIT 3: Wooohoooooo! I did it! One small step for my game, one giant leap for my game dev confidence. I will write up a guide down below for other people who find this thread and need to figure this **** out. Might make a Youtube video or something.
 
Last edited:

Murg1

Villager
Member
Joined
Feb 27, 2019
Messages
20
Reaction score
1
First Language
English
Primarily Uses
RMMV
Thanks again.
 
Last edited:

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

Latest Threads

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,867
Messages
1,017,062
Members
137,575
Latest member
akekaphol101
Top