• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Archive] Pokemon Essentials: Starter Kit for RPG Maker XP

Status
Not open for further replies.
I have a bit of an odd question, and it likely won't have a simple solution. When defining trainers to set up trainer battles, you select their pokemon and their levels. Would it be possible to make the levels more dynamic, where they would be adjusted to, say, the average level of your party? If that much is possible, then it would be a small step to something like your party's average + 5 levels, and so on. This would help keep the difficulty consistent, and could punish players who over-level a single pokemon.
It's possible, yes, if a little involved. There's a part of the scripts that loads a trainer's Pokémon and sets their levels - all you'd have to do would be to insert a formula in there rather than the line "set level equal to whatever it is in the trainers.txt file".

You'd have to come up with a decent formula, though. To take the average level of the player's party seems a good start, but what if the player just levels up one Pokémon and fills up their party with Level 2 Pidgey? The average of one Level 100 Pokémon and the rest filler is about Level 18 - the one Pokémon they've been training can wipe anything out.

How about taking the average of the three highest Level Pokémon in the party? How about adding a random number to that level, for variety? How about doing all that, and then taking whichever is the greater of that calculated number and whatever number is in pokemon.txt (so the trainer's Pokémon don't end up being really weak)?

It'd be tough to come up with a decent formula that wouldn't make things unfair or too easy. And then you might have a problem with the species being used, e.g. a way overleveled Rattata or an impossibly weak Rhydon. A fix that changes the species used would be very complicated indeed.

Remember that once you can do this to enemy trainers' Pokémon, though, it's almost trivial to do it to wild Pokémon as well.
 
I have two questions:

1. How can I change a species into a different one? This might be misleading, so I'll give an example:

Basically, I have an event that when you talk to it, it will check if a Deoxys, for example, is the first in a party. That's the easy part.

Then, if true, I want Deoxys to change into a different Pokemon, say a different form (which I have a way of doing, very tedious, though)

2. What is the internal dex number of a Pokemon and how can I set one for a Pokemon?

:) Thanks in advance! :)
 
Again... the first section of the script in Pokemon Utilities has to do with the day and night tinting. Does anyone know what hours the numbers shown represent? Like the #0, #16, #32 and so on? I was hoping to change the tint colors to something less harsh...
 
How i can do a npc what do something when i appears in X map and later do other stuff???
Sorry for my bad english
 
I have a bit of an odd question, and it likely won't have a simple solution. When defining trainers to set up trainer battles, you select their pokemon and their levels. Would it be possible to make the levels more dynamic, where they would be adjusted to, say, the average level of your party? If that much is possible, then it would be a small step to something like your party's average + 5 levels, and so on. This would help keep the difficulty consistent, and could punish players who over-level a single pokemon.

This is a good idea. However, it would take away the leveling curve and an changing amount of difficulty that a game has to make combat fun :P
 
This is a good idea. However, it would take away the leveling curve and an changing amount of difficulty that a game has to make combat fun :P
I figure I'll keep the wild pokemon progressively stronger, so that you'll have to level up just to get to further areas. Also, I might try to make it vary between two different types of trainers. If it is a gym leader or elite four or something, make all of the pokemon the same level as your strongest pokemon + 5 levels or so. That way, if your team is unbalanced and relies heavily on one high level pokemon, it likely won't survive more than a couple of the opponent's pokemon. If you team is balanced, however, you could expect to fight opponents at your exact level, which tends to be fairly difficult. This way, you can't over level for gym leaders, etc., so that you will always have a challenge. Then for common trainers, make it the same as your highest level pokemon. It'll probably require a little more depth than that, but it's the basic idea. I am not opposed to trying this for wild pokemon as well. In fact, it would make the wild battles more challenging (although there is the problem with over-leveled basic pokemon Maruno mentioned). In this way, you could TRY to do a low level playthrough, but all of the pokemon would give a fair amount of experience, as well as a challenge, making it nearly impossible not to reach high levels by endgame (although repels could be a nuisance in this regard). In order to prevent any workarounds, I'll try to set a minimum level for different trainers and gym leaders pokemon (this part would become quite involved to script), that way you will be required to meet a minimum.
 
In response to the request for balanced levels, I've made a function that generates a suggested level for opponents based on the levels of the player's Pokemon. The code follows:
Code:
def pbBalancedLevel(party)
 return 5 if party.length==0
 # Calculate the mean of all levels
 sum=0
 party.each{|p| sum+=p.level }
 return 5 if sum==0
 average=sum.to_f/party.length.to_f
 # Calculate the standard deviation
 varianceTimesN=0
 for i in 0...party.length
  deviation=party[i].level-average
  varianceTimesN+=deviation*deviation
 end
 stdev=Math.sqrt(varianceTimesN/party.length)
 mean=0
 weights=[]
 # Skew weights according to standard
 # deviation
 for i in 0...party.length
  weight=party[i].level.to_f/sum.to_f
  if weight<0.5
   weight-=(stdev/100.0)
   weight=0.001 if weight<=0.001
  else
   weight+=(stdev/100.0)
   weight=0.999 if weight>=0.999
  end
  weights.push(weight)
 end
 weightSum=0
 weights.each{|weight| weightSum+=weight }
 # Calculate the weighted mean, assigning
 # each weight to each level's contribution
 # to the sum
 for i in 0...party.length
  mean+=party[i].level*weights[i]
 end
 mean/=weightSum
 # Round to nearest number
 mean=mean.round
 # Add 2 to the mean to challenge 
 # the player
 mean+=2
 # Adjust level to minimum and maximum
 mean=1 if mean<1
 if mean>PBExperience::MAXLEVEL
  mean=PBExperience::MAXLEVEL
 end
 return mean
end
Here's how code would use this function:
Code:
 balancedLevel = pbBalancedLevel($Trainer.party)
 
Last edited:
How i can do the " ! " symbol for me and/or for other npc.

See image

Good bye
 
In response to the request for balanced levels, I've made a function that generates a suggested level for opponents based on the levels of the player's Pokemon. The code follows:
Code:
def pbBalancedLevel(party)
 return 5 if party.length==0
 # Calculate the mean of all levels
 sum=0
 party.each{|p| sum+=p.level }
 return 5 if sum==0
 average=sum.to_f/party.length.to_f
 # Calculate the standard deviation
 varianceTimesN=0
 for i in 0...party.length
  deviation=party[i].level-average
  varianceTimesN+=deviation*deviation
 end
 stdev=Math.sqrt(varianceTimesN/party.length)
 mean=0
 weights=[]
 # Skew weights according to standard
 # deviation
 for i in 0...party.length
  weight=party[i].level.to_f/sum.to_f
  if weight<0.5
   weight-=(stdev/100.0)
   weight=0.001 if weight<=0.001
  else
   weight+=(stdev/100.0)
   weight=0.999 if weight>=0.999
  end
  weights.push(weight)
 end
 weightSum=0
 weights.each{|weight| weightSum+=weight }
 # Calculate the weighted mean, assigning
 # each weight to each level's contribution
 # to the sum
 for i in 0...party.length
  mean+=party[i].level*weights[i]
 end
 mean/=weightSum
 # Round to nearest number
 mean=mean.round
 # Add 2 to the mean to challenge 
 # the player
 mean+=2
 # Adjust level to minimum and maximum
 mean=1 if mean<1
 if mean>PBExperience::MAXLEVEL
  mean=PBExperience::MAXLEVEL
 end
 return mean
end
Here's how code would use this function:
Code:
 balancedLevel = pbBalancedLevel($Trainer.party)
Thanks Poccil, I'll try it out. Also, I found that to actually change the opponents level automatically (to have the script modify it to the specified amount regardless of what you set it at in the editor), you actually to make an edit to PokemonTrainers, not PokemonScreen. I found that Pokemon screen would only change it when you specified the level, and would only change it in regards to current circumstance, never adjust for future changes. By editing PokemonTrainers, it is automatic.

@VEGET@: Select the Show Animation command in an event, and choose EM Exclamation.

EDIT: Poccil, I tried it and it worked great, however it only pitted me against pokemon equal to my highest level. Using the script you provided, I think I can change it up a little and make the opponents randomly have pokemon up to five levels lower or higher.
 
Last edited:
Hey everyone, I was wondering if anyone knew how to change it so that when you use the running shoes that your sprites auctually changes into a running sprite instead of just walking fast?
 
Hey everyone, I was wondering if anyone knew how to change it so that when you use the running shoes that your sprites auctually changes into a running sprite instead of just walking fast?

In metadata.txt, replace the second last entry of Player A or B, with the filename of your running sprite minus the extension. For example, the male player (PlayerA) has "Red" set by default; if you had a running sprite called "running.png", then you would replace the second last "Red" with "running".


I'm probably in over my head here, but would it be possible to modify the Perspective script to support tile priorities, or to an extension, upper-layer support? In other words, how do I make layers 2 and 3 appear 'flat' (i.e buildings and trees)?
 
Thank you, but auctually I was asking if you could change it so that when you pushed b (well in this case z) that your sprite would change from walking to running and then once you let go the sprite goes back to normal like in a normal pokemon game

also to anyone who knows how do you change the color of the text in battle?
 
Last edited:
Xblaze1234, read what I said carefully. I know what you meant; I told you how to do this. By default, "Red" is used for everything, giving the illusion that Essentials doesn't support running sprites (when it actually does). The second last entry in PlayerA is for the running sprite. Changing this value will do exactly what you want it to do.

As for changing battle text colors, in Pokemon_ActualScene search for the beginning of the "PokeBattle_Scene" class. There's a whole heap of values you can edit to change colors, positions, etc. Here's an exerpt:

Code:
class PokeBattle_Scene

USECOMMANDBOX=false # If true, expects a file named Graphics/Pictures/commandbox.png
USEFIGHTBOX=false # If true, expects a file named Graphics/Pictures/fightbox.png
MESSAGEBASECOLOR=Color.new(82,82,90)
MESSAGESHADOWCOLOR=Color.new(165,165,173)
MENUBASECOLOR=Color.new(82,82,90)
MENUSHADOWCOLOR=Color.new(165,165,173)
BOXTEXTBASECOLOR=Color.new(55,49,41)
BOXTEXTSHADOWCOLOR=Color.new(165,173,148)

I'm using an older version of Essentials, but I believe this part should be the same in yours.
 
Ok I figured out the running sprites but sadly I dont have that file in my version of the starter kit for the text color change...

alright never mind I think I can manage to figure that one out but now to something that I have been very cerious about...what script would you have to write to make a pokemon follow you? and how do you put places on a custom map (for fly and such)
 
Last edited:
Xblaze1234, you do have that script on your version of Essentials, assuming you are using the latest version. I just downloaded the latest one and checked; its all there. Check lines 185 onwards in Pokemon_ActualScene.

As for a Pokémon follow script, there was one posted here a while ago.

Editing the town map is incredibly simple, and is covered in the notes - which I really suggest you read thoroughly. It's usually as simple as usign townmapgen.html.
 
But you see I cant find Pokemon_ActualScene anywhere even when I search it so it must be under a different file name. Also thank you for helping me with all of this I am new to this kind of thing I would think that these are some pretty dumb questions...
 
But you see I cant find Pokemon_ActualScene anywhere even when I search it so it must be under a different file name. Also thank you for helping me with all of this I am new to this kind of thing I would think that these are some pretty dumb questions...
It's not a file, it's a script section. Press F11 while you're in RPG Maker XP, and a window will pop up with all the scripts in it. On the left is a list of all the script sections - PokeBattle_ActualScene is one of those sections (about halfway down).

I must warn you, though, that if you don't even know this much then trying to edit the scripts is a really dangerous thing to do.
 
I'm probably in over my head here, but would it be possible to modify the Perspective script to support tile priorities, or to an extension, upper-layer support? In other words, how do I make layers 2 and 3 appear 'flat' (i.e buildings and trees)?
I saw a script like that recently, but can't remember what it was called. It was supposed to be perspective, support priorities, and also "spinning" the map (like in FFT), for a view from different directions. If I come across it again, I'll let you know.
 
Status
Not open for further replies.
Back
Top