PDA

View Full Version : -Free For All RMXP Pokémon CBS-


Ruyin
January 2nd, 2007, 7:38 PM
-RMXP Pokémon CBS-

Calling all scripters!

Recently when I was browsing a site that I'm not allowed to name, ;) , I found a bad-looking Pokémon CBS/Starter Kit. It was entirely in Portuguese and looked like someone had taken a dump on the graphics. I downloaded this program and found that it had, actually a nearly functional CBS, so I set out translating and fixing some bugs in the game. The result is a NEARLY functional Pokémon Battle System.

Why are you posting here?

Well, my knowledge of RGSS is not enough to complete the battle system, so I need some help. Here is a list of things that are wrong with this CBS:

-Bad Framerate
-PP can be set and viewed, but you can continue to use the Move past 0
-Catching System is unavailable
-I haven't been able to figure out how to set evolutions for custom Pokémon, but it works for the Pokémon included
-The Pokémon are treated as actors, so like 001: Bulbasaur, 002: Ivysaur, etc., so I don't know how to set a player graphic without having the player appear in battle.
-I don't know how you would go about adding more than one of the same Pokémon

So if you are able to help with any of those, please post a reply!

Who Made This?
This CBS was made by Gleen of RMXP.ORG - Full credit for the CREATION goes to him.

So what have you done, apart from re-posting it here?
Like I said before, I translated about 95% of the text and script into Queen's English, as well as fixing a LOT of graphics, fonts, text positions in scripts and so on.

Screenshots
Pidgey vs. Bulbasaur
[img=http://img230.imageshack.us/img230/1243/screen1pnglf5.th.png] (http://img230.imageshack.us/my.php?image=screen1pnglf5.png)

Move selection (I'm aware tackle is a NORMAL move:laugh: )
[img=http://img506.imageshack.us/img506/8066/screen2pngla8.th.png] (http://img506.imageshack.us/my.php?image=screen2pngla8.png)

Pokémon Selection
[img=http://img453.imageshack.us/img453/4792/screen3pngyf1.th.png] (http://img453.imageshack.us/my.php?image=screen3pngyf1.png)

Pokémon Summary
[img=http://img515.imageshack.us/img515/6229/screen4pngsu5.th.png] (http://img515.imageshack.us/my.php?image=screen4pngsu5.png)

Winning the battle (notice the increase exp and the level)
[img=http://img405.imageshack.us/img405/9869/screen5pngtr4.th.png] (http://img405.imageshack.us/my.php?image=screen5pngtr4.png)

So, where do I get it?

Here (http://www.filefactory.com/file/c0a20b/)

Remember, I need help if we are to make the FIRST EVER FREE FOR ALL POKéMON CBS!

Using It
If you wish to download this unfinished version you must give me and Gleen credit.

Dawson
January 3rd, 2007, 7:18 AM
Does Gleen know that you've translated it and are posting it on other sites asking for a share of the credits for very minimal work?

It didn't work for me, BTW.

~Azura
January 3rd, 2007, 8:39 AM
What happens when you try to open it, Dawson?

Incompatible version maybe?

RM2K3kid
January 3rd, 2007, 9:25 AM
Is it just me or is there a lot of missing files.. and what did you translate? not much by the looks of it.

Mr. Typhlosion
January 3rd, 2007, 9:31 AM
By me is also missing files + script errors :(

RM2K3kid
January 3rd, 2007, 9:45 AM
Go into the scripts and to the bottom and select main. Copy and paste this over the main script.
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
# After defining each class, actual processing begins here.
#==============================================================================

begin
$fontface = "Pokemon RS"
$fontsize = 18
# Prepare for transition
Graphics.freeze
# Make scene object (title screen)
$scene = Scene_Title.new
# Call main method as long as $scene is effective
while $scene != nil
$scene.main
end
# Fade out
Graphics.transition(20)
rescue Errno::ENOENT
# Supplement Errno::ENOENT exception
# If unable to open file, display message and end
filename = $!.message.sub("No such file or directory - ", "")
print("Unable to find file #{filename}.")
end

That will make it easier to read the error.

Edit: Oh BTW I went over to RMXP.org and took a look at Gleen's thread. It seems that someone already beat you to translating it into English. I wont link but its in page 6 of his thread by a guy called ichabod. Plus its a slightly newer version than your translation.

Ruyin
January 3rd, 2007, 1:45 PM
Yes, I'm aware that there is a translation by Ichabod, but he failed to translate the file names and such. If you can tell me what files are missing I will be able to post them for you.

Dawson: I have contacted Gleen, and he has given me permission to distribute my edit, as long as I give him full credit for the creation.

EDIT: I will post the ORIGINAL in-game screenshots by Gleen and you can decide whether you think it was a minimal edit.

http://i10.tinypic.com/2ywybnt.jpg
http://i10.tinypic.com/2zi1mkg.jpg
http://i18.tinypic.com/45335l2.jpg


EDIT 2: Oh, crap, I've just downloaded the file, I uploaded the wrong one! This is from the early stages of my editing. Just give me a while and I'll post the new one.

The Dash
January 3rd, 2007, 2:42 PM
It looks very ugly IMHO, set it to Blizzey's window size, it looks nice in that because it is a perfect 2x.

Ruyin
January 3rd, 2007, 3:04 PM
I'll get onto that Dash! I'm just translating and editing some things that were not done yet.

spike6958
January 3rd, 2007, 4:08 PM
looks ok ill download it when you upload the right version

Ruyin
January 3rd, 2007, 4:16 PM
Okay, spike. You might as well download now though because the only major problems that I could see in the one I uploaded is the bag feature, so you should be alright if you don't go into the bag.

~Azura
January 3rd, 2007, 5:41 PM
Man, the graphics are too messed up!
And I can't open it too =/

It seems worse than Blizzy's btw LOL

Blizzy's was more... let's say... solid.


Edit: I see no chipset on mine...

Ruyin
January 3rd, 2007, 8:53 PM
I don't know why you guys can't open it, it works fine for me...

Azura, can you tell me what actually happens when you open it?

EDIT: Since no-one seem to be to open it, I have decided to stop working on it to continue my game. Anyone is welcome to continue it if they get permission from Gleen. I'll just wait for your CBS Azura :) .

~Azura
January 4th, 2007, 4:42 AM
Well, to start with... I don't even see the Tilesets folder.
I can open it in RMXP, but if I testplay it, it exits immediatelly, with no error message.

Ruyin
January 4th, 2007, 2:36 PM
Well, like I said, I'm going to start working on my game now, and I've just started to learned RGSS (Hooray for local variables and def methods!) so, if I can make any sense out of it I'll start my own CBS.

Ruyin out.

Me™
January 5th, 2007, 7:10 AM
You know what the big problem is?

NO-one ever made the complete Poké Database... I have made a start but it is far from being finished. Therefor you can not make a cool CBS as no-one has the data to make the battle classes... So...

Anyone voluteering?

~Azura
January 5th, 2007, 10:24 AM
DATABASE STATUS

v.0.4b | Build 1507

*Move database:
- 375 Moves (includes 'Evolution')
- Power Points
- Effects
- Power
- Accuracy
- Descriptions

*Pokémon database:
- 251 Pokémons
- Effort Values
- Growth rate
- Gender rate
- Evolution mode (Stone, Trade, etc)
- Type 1 and Type 2
- Effectiveness
- Move learnings
- Base stats
- Catch rate
- Experience
- TM/HM list
- Held Item (Wild Pokémons)
- Sprites (Front, Back and Overworld)

*Item database:
- 285 Items
- No descriptions
- Nothing done basically

That's what I have so far, in terms of database. I've been doing that for 8 months now.

Me™
January 5th, 2007, 10:55 AM
OMG... in code? How do you format it?
You are WAY further then I am... I did: form the 251 pokemons...

Finished:
General = load_poke_data("Poke_General.rxdata",Key[0]) # Finished
Basestats = load_poke_data("Poke_Stats.rxdata",Key[0]) # Finished
Natures = load_poke_data("Poke_Natures.rxdata",Key[0]) # Finished
States = load_poke_data("Poke_StatusFX.rxdata",Key[0]) # (Un)Finished?
Pokeballs = load_poke_data("Poke_Balls.rxdata",Key[0]) # Finished
Fast = load_poke_data("Poke_EXPFast.rxdata",Key[1]) # Finished
Medium = load_poke_data("Poke_EXPMed.rxdata",Key[1]) # Finished
Slow = load_poke_data("Poke_EXPSlow.rxdata",Key[1]) # Finished
Parabolic = load_poke_data("Poke_EXPPara.rxdata",Key[1]) # Finished

Erm.. lets see what that means:

- General is a hash with ID, name, type 1 and 2, weigth and height.
- Basestats is a hash by ID with all the base stats except the first generation games Special stat (Which was stupid btw)
- Natures is a hash by nature ID with, name, raise and lower
- States is a hash by state ID with name only
- Pokeballs is a hash by pokebal ID with name and catch rate multiplier
- Fast, Medium, Slow, Parabolic are arrays with the names of the pokemon that belong in that cat.

Then... I have from the 'other' hash (a hash with : EXP_base, Gender Rate, Happiness, Eggsteps, Catchrate) only the ifrst pokemon...
Move 1, 22, 33, 45, 73, 77, 79 I have in a hash with name, Battle Type, Contest Type, Power, Accuracy, PP, AP and JP. (Yes, those are bulbasuars moves.. XP)
I only have the move list form Bulbasaur...
I have the Evolution lists from the first 9 pokemon...

I have NO descriptions or whatsoever...
No Technical or Hidden Machines or wahtsoever
Abilities, Items, Berries and ribbons = Zeró

So.. would you like to share?

p.s. - Effort Values << That is stupid. EV's are not constant

Me™
January 5th, 2007, 1:21 PM
Okay.. I just did the Effectivines. If somone wants it. Here it is:


module Pokemon_DataBase
Effectiviness = Table.new(0x19, 0x19)

Effectiviness[0x01, 0x00] = 0x14; Effectiviness[0x08, 0x00] = 0x00; Effectiviness[0x14, 0x14] = 0x05; Effectiviness[0x15, 0x14] = 0x14; Effectiviness[0x16, 0x14] = 0x05; Effectiviness[0x19, 0x14] = 0x05; Effectiviness[0x04, 0x14] = 0x14;
Effectiviness[0x07, 0x14] = 0x05; Effectiviness[0x05, 0x14] = 0x14; Effectiviness[0x09, 0x14] = 0x05; Effectiviness[0x14, 0x15] = 0x05; Effectiviness[0x15, 0x15] = 0x05; Effectiviness[0x17, 0x15] = 0x14; Effectiviness[0x16, 0x15] = 0x14;
Effectiviness[0x19, 0x15] = 0x05; Effectiviness[0x09, 0x15] = 0x05; Effectiviness[0x17, 0x17] = 0x05; Effectiviness[0x04, 0x17] = 0x14; Effectiviness[0x02, 0x17] = 0x05; Effectiviness[0x09, 0x17] = 0x05; Effectiviness[0x14, 0x16] = 0x14;
Effectiviness[0x15, 0x16] = 0x05; Effectiviness[0x17, 0x16] = 0x05; Effectiviness[0x16, 0x16] = 0x05; Effectiviness[0x19, 0x16] = 0x14; Effectiviness[0x03, 0x16] = 0x14; Effectiviness[0x04, 0x16] = 0x05; Effectiviness[0x02, 0x16] = 0x14;
Effectiviness[0x07, 0x16] = 0x14; Effectiviness[0x14, 0x19] = 0x14; Effectiviness[0x19, 0x19] = 0x05; Effectiviness[0x01, 0x19] = 0x14; Effectiviness[0x05, 0x19] = 0x14; Effectiviness[0x09, 0x19] = 0x14; Effectiviness[0x02, 0x01] = 0x14;
Effectiviness[0x18, 0x01] = 0x14; Effectiviness[0x07, 0x01] = 0x05; Effectiviness[0x05, 0x01] = 0x05; Effectiviness[0x1B, 0x01] = 0x05; Effectiviness[0x16, 0x03] = 0x05; Effectiviness[0x01, 0x03] = 0x05; Effectiviness[0x03, 0x03] = 0x05;
Effectiviness[0x04, 0x03] = 0x14; Effectiviness[0x18, 0x03] = 0x14; Effectiviness[0x07, 0x03] = 0x05; Effectiviness[0x15, 0x04] = 0x14; Effectiviness[0x17, 0x04] = 0x00; Effectiviness[0x16, 0x04] = 0x14; Effectiviness[0x19, 0x04] = 0x14;
Effectiviness[0x03, 0x04] = 0x05; Effectiviness[0x05, 0x04] = 0x05; Effectiviness[0x17, 0x02] = 0x14; Effectiviness[0x16, 0x02] = 0x05; Effectiviness[0x19, 0x02] = 0x14; Effectiviness[0x01, 0x02] = 0x05; Effectiviness[0x04, 0x02] = 0x00;
Effectiviness[0x07, 0x02] = 0x05; Effectiviness[0x05, 0x02] = 0x14; Effectiviness[0x01, 0x18] = 0x05; Effectiviness[0x18, 0x18] = 0x05; Effectiviness[0x07, 0x18] = 0x14; Effectiviness[0x08, 0x18] = 0x14; Effectiviness[0x1B, 0x18] = 0x14;
Effectiviness[0x14, 0x07] = 0x14; Effectiviness[0x16, 0x07] = 0x05; Effectiviness[0x01, 0x07] = 0x05; Effectiviness[0x04, 0x07] = 0x05; Effectiviness[0x02, 0x07] = 0x14; Effectiviness[0x05, 0x07] = 0x14; Effectiviness[0x00, 0x05] = 0x05;
Effectiviness[0x14, 0x05] = 0x05; Effectiviness[0x15, 0x05] = 0x14; Effectiviness[0x16, 0x05] = 0x14; Effectiviness[0x01, 0x05] = 0x14; Effectiviness[0x03, 0x05] = 0x05; Effectiviness[0x04, 0x05] = 0x14; Effectiviness[0x02, 0x05] = 0x05;
Effectiviness[0x09, 0x05] = 0x14; Effectiviness[0x00, 0x08] = 0x00; Effectiviness[0x01, 0x08] = 0x00; Effectiviness[0x03, 0x08] = 0x05; Effectiviness[0x07, 0x08] = 0x05; Effectiviness[0x08, 0x08] = 0x14; Effectiviness[0x1B, 0x08] = 0x14;
Effectiviness[0x14, 0x1A] = 0x05; Effectiviness[0x15, 0x1A] = 0x05; Effectiviness[0x17, 0x1A] = 0x05; Effectiviness[0x16, 0x1A] = 0x05; Effectiviness[0x19, 0x1A] = 0x14; Effectiviness[0x1A, 0x1A] = 0x14; Effectiviness[0x01, 0x1B] = 0x14;
Effectiviness[0x18, 0x1B] = 0x00; Effectiviness[0x07, 0x1B] = 0x14; Effectiviness[0x08, 0x1B] = 0x05; Effectiviness[0x1B, 0x1B] = 0x05; Effectiviness[0x00, 0x09] = 0x05; Effectiviness[0x14, 0x09] = 0x14; Effectiviness[0x16, 0x09] = 0x05;
Effectiviness[0x19, 0x09] = 0x05; Effectiviness[0x01, 0x09] = 0x14; Effectiviness[0x03, 0x09] = 0x00; Effectiviness[0x04, 0x09] = 0x14; Effectiviness[0x02, 0x09] = 0x05; Effectiviness[0x18, 0x09] = 0x05; Effectiviness[0x07, 0x09] = 0x05;
Effectiviness[0x05, 0x09] = 0x05; Effectiviness[0x08, 0x09] = 0x05; Effectiviness[0x1A, 0x09] = 0x05; Effectiviness[0x1B, 0x09] = 0x05; Effectiviness[0x09, 0x09] = 0x05

Types = { 0x00 => 'Normal', 0x01 => 'Fighting', 0x02 => 'Flying', 0x03 => 'Poison', 0x04 => 'Ground', 0x05 => 'Rock', 0x07 => 'Bug', 0x08 => 'Ghost', 0x09 => 'Steel', 0x14 => 'Fire', 0x15 => 'Water', 0x16 => 'Grass', 0x17 => 'Electric', 0x18 => 'Psychic', 0x19 => 'Ice', 0x1A => 'Dragon', 0x1B => 'Dark' }
Types['invert'] = { 'Normal' => 0x00, 'Fighting' => 0x01, 'Flying' => 0x02, 'Poison' => 0x03, 'Ground' => 0x04, 'Rock' => 0x05, 'Bug' => 0x07, 'Ghost' => 0x08, 'Steel' => 0x09, 'Fire' => 0x14, 'Water' => 0x15, 'Grass' => 0x16, 'Electric' => 0x17, 'Psychic' => 0x18, 'Ice' => 0x19, 'Dragon' => 0x1A, 'Dark' => 0x1B }
Multipliers = { 0x00 => 0.0, 0x05 => 0.5, 0x14 => 2.0}
end



And the method:

def get_effect_multiplier(amovetype,dtype)
if amovetype.is_a?(String)
amovetype = amovetype.downcase.capitalize
amovetype = Pokemon_DataBase::Types['invert'][amovetype]
end
if dtype.is_a?(String)
dtype = dtype.downcase.capitalize
dtype = Pokemon_DataBase::Types['invert'][dtype]
end
multiplier = Pokemon_DataBase::Effectiviness[amovetype,dtype]
multiplier = Pokemon_DataBase::Multipliers[multiplier]
return multiplier
end


How to use this?

get_effect_multiplier(ATTACK type , POKEMON type)

For ATTACK type/POKEMON type you can use the following types of data:
- A string: FIRE, Fire, FiRe, firE
- A integer: 0x14, 20

so calling this:
p get_effect_multiplier(20 ,'Water') # 20 = 0x14 = Fire
-> wil return 0.5 as expected

What if your pokemon has 2 types? both types are considered in figuring a type's effectiveness. For example, an electric-type attack would deal 4 times the damage to a Water/Flying type Pokemon, like Gyarados, but no damage at all to a Water/Ground type Pokemon, like Quagsire. This means you could do:

p get_effect_multiplier('Electric' , 'Water') * get_effect_multiplier('Electric', 'Flying' )
-> will return 4.0
p get_effect_multiplier('Electric' , 'Water') * get_effect_multiplier('Electric', 'Ground' )
-> Will return 0.0

It was quite some work, so.. credit appreciated. Also, what are all those haxadecimals doing there? Well, this comes form the actual pokemon game. So the data is real, I 'just' needed to convert it to a table... which costs time..

Me™

p.s. I just did the multipliers hash.. because I wanted. You could do this instead (in the method):

Pokemon_DataBase::Effectiviness[amovetype,dtype].to_f / 10

Ruyin
January 5th, 2007, 2:23 PM
Azura and Me™, uh, I'm sure that will be really helpful but due to my n00bishness at RGSS I can't really make much use of it... :)

~Azura
January 5th, 2007, 6:48 PM
I see, you're using plain text files to load data, isn't it (although I don't use rxdata extensions)? I use a method similar to that and then store the information on global variables, so I can load properly later.

However, some of the information I just input normally on RMXP's database, like battler graphic, Exp, Item held, Base Stats, etc, what saves me a lot of unnecessary work.

I have two classes to store Pokémon information: (comments are from my scripts)

#================================================================
#GAME_DATABASE
#================================================================
# This class converts values entered into RmXP's default
# database and create new variables to store those values,
# so it's more easy to read and update the code.
#
# NOTE:
# game_id: unique ID for each Pokémon (even if they are the same kind)
# pk_id: normal ID for each Pokémon
#
# So:
# Two Charizards have the same pk_id, but different game_id.
#
# Edit: (Build 6806)
#
# - removed setup_exp and setup_ev methods because they might
# be unstable at the moment. They're not used.
# - created methods for returning data from database (build 3
# directly retrieved that data to the hashes).
# - variable 'pk_id' is now a class variable.
#================================================================
class Game_Database
(...)
#==========================================================
#SETUP
#==========================================================
# This method create a hash (Hash.new) for every 'slot'
# in $database. Each slot will be accessed via 'pk_id'.
def setup(pk_id)
@pk_id = pk_id
$database[@pk_id] = Hash.new(nil)
$database[@pk_id]["Name"] = name
$database[@pk_id]["Type1"] = type1
$database[@pk_id]["Type2"] = type2
$database[@pk_id]["Growth Rate"] = growth_rate
$database[@pk_id]["Gender Ratio"] = gender_ratio
$database[@pk_id]["MaxHP"] = maxhp
$database[@pk_id]["Attack"] = attack
$database[@pk_id]["Defense"] = defense
$database[@pk_id]["Sp.Attack"] = sp_attack
$database[@pk_id]["Sp.Defense"] = sp_defense
$database[@pk_id]["Speed"] = speed
$database[@pk_id]["Base Exp"] = base_exp
$database[@pk_id]["Rareness"] = rareness
$database[@pk_id]["Wild Item"] = wild_item
$database[@pk_id]["Wild Item %"] = wild_item_rate
$database[@pk_id]["Battler Front"] = battler_front
$database[@pk_id]["Battler Back"] = battler_back
end




#================================================================
#GAME_POKÉMON
#================================================================
# This class controls all the data that is unique
# for each Pokémon, like Nickname, Gender, Nature,
# Effort Values, Individual Values, etc.
# For Trainer's unique variables, refer to Game_Trainer class.
#
#
# Edit: (Build 6806)
#
# - removed methods and variables that might be unstable or
# not used.
# - variable 'game_id' is now a class variable.
#================================================================
class Game_Pokemon
(...)
#==============================================================
#SETUP
#==============================================================
def setup(pk_id, level, where, nickname)
# Generate next unique ID:
refresh_game_id
# Correct level, if greater than MAX_LEVEL constant:
level = level > MAX_LEVEL ? MAX_LEVEL : level
# Create a hash for $game slot:
$game[@game_id]
$game[@game_id]["Name"]
$game[@game_id]["Nickname"]
$game[@game_id]["Level"]
$game[@game_id]["Gender"]
$game[@game_id]["Nature"]
$game[@game_id]["Type1"]
$game[@game_id]["Type2"]
$game[@game_id]["Met In Where"]
$game[@game_id]["Met In Level"]
$game[@game_id]["Name Gender"]
$game[@game_id]["Default ID"]
$game[@game_id]["OT ID"]
$game[@game_id]["OT Name"]
$game[@game_id]["Item"]
$game[@game_id]["Battler Front"]
$game[@game_id]["Battler Back"]
$game[@game_id]["Lucky Flag"]
$game[@game_id]["Exp Now"]
$game[@game_id]["Exp"]
$game[@game_id]["IV"]
$game[@game_id]["IV"]["MaxHP"]
$game[@game_id]["IV"]["Attack"]
$game[@game_id]["IV"]["Sp.Attack"]
$game[@game_id]["IV"]["Defense"]
$game[@game_id]["IV"]["Sp.Defense"]
$game[@game_id]["IV"]["Speed"]
$game[@game_id]["EV"]
$game[@game_id]["EV"]["MaxHP"]
$game[@game_id]["EV"]["Attack"]
$game[@game_id]["EV"]["Sp.Attack"]
$game[@game_id]["EV"]["Defense"]
$game[@game_id]["EV"]["Sp.Defense"]
$game[@game_id]["EV"]["Speed"]
$game[@game_id]["Base Stat"]
$game[@game_id]["Base Stat"]["MaxHP"]
$game[@game_id]["Base Stat"]["Attack"]
$game[@game_id]["Base Stat"]["Sp.Attack"]
$game[@game_id]["Base Stat"]["Defense"]
$game[@game_id]["Base Stat"]["Sp.Defense"]
$game[@game_id]["Base Stat"]["Speed"]
$game[@game_id]["Stat"]
$game[@game_id]["Stat"]["MaxHP"]
$game[@game_id]["Stat"]["HP"]
$game[@game_id]["Stat"]["Attack"]
$game[@game_id]["Stat"]["Sp.Attack"]
$game[@game_id]["Stat"]["Defense"]
$game[@game_id]["Stat"]["Sp.Defense"]
$game[@game_id]["Stat"]["Speed"]
$game[@game_id]["Move Name"]
$game[@game_id]["Move PP"]
$game[@game_id]["Move PP Now"]
$game[@game_id]["Move Critical Flag"]
$game[@game_id]["Move Type"]
$game[@game_id]["Move HM"]
$game[@game_id]["Move Damage"]
$game[@game_id]["Move Effect Type"]
$game[@game_id]["Move Effect Rate"]
$game[@game_id]["Move Accuracy"]
$game[@game_id]["Move Priority"]
end






As I write my code, I add new information to $game.
You can use that list if it helps you.
And dude... why bother using hex? To me it just makes things more complicated and your code more dirty...

And about Effort Values... they're are constant. You're mistaking with Internal Values (that are random, 0~31)
Check this:


Individual Values
Individual Values range from 0 to 31. These values are important in determining the Pokemon's final stats. There are six Individual Values for HP, Attack, Defense, Speed, Special Attack, and Special Defense. They are randomly determined when you encounter a wild Pokemon or obtain a Pokemon internally.


Effort Values

The Effort Values or EVs, indicate the amount of training that a Pokemon has made. Whenever a Pokemon defeats another Pokemon in an internal battle (wild or trainer), it will earn a number of EVs depending on the species of the Pokemon defeated. The limit that a Pokemon can earn is 510. A Pokemon can earn up to 255 EVs per stat (HP, Attack, Defense, Speed, Special Attack, Special Defense). The stat enhancers (HP Up, Protein, Iron, Carbos, Calcium, and Zinc, respectively) increase the EVs of the respective stat by 10. Each stat enhancer only takes effect if the EV for that stat would increase to 100 or less. In the Emerald version, certain Berries can decrease a Pokemon's effort values by 10 (Pomeg Berry, Kelpsy Berry, Qualot Berry, Tamato Berry, Hondew Berry, and Grepa Berry, respectively).

The Macho Brace and the PokeRus virus each will double the EVs that a Pokemon will earn.

Using Exp.Share gives the same amount of EVs to each participant in defeating a Pokemon. The Macho Brace and the PokeRus virus have no effect on this distribution.

When your Pokemon has earned the maximum of 510 EVs, it can receive an Effort Ribbon in Slateport's outdoor market.


~Azura.

Me™
January 6th, 2007, 2:09 AM
No I am not ::). Effort Values are training values. You can't 'set' them for a pokemon. For every pokémon they are set to zeró at the start of the game. They gain EV's. When Battling them. I guess what you DID set was the Battle EV you can gain from a pokémon, right?

For the data I first write everything done in RMXP. I use a module, so I do not need to do a global (the data is not going to change, so I go for less memory_usage). When I am done with a 'thing' like all base stats, I write it to a file in binmode. This means it will be saved as computer language. And at last I encrypt the files with my encryption tool that also can be used to encrypt music.

The site you used is good. I use it too, however... some things seem to differ from Ruby And Sapphire, I noticed... Either way... Like I said I used a module with Constants rather then a very big hash. So.. I guess Ill stick with that ;p...

http://www.upc.pkmn.co.uk/games/gs/guides/detervalues.html
DVs are based on a 16-digit scale of 0-15. There are four different stats a Pokémon has DVs for--Attack DV, Defense DV, Speed DV, and Special DV. The Special DV determines the Special Attack and Special Defense stats. There is a fifth kind of DV -- the HP DV -- which is determined by using all four of the other DVs.

The Deter Value comes in many different names - the Diversification Value, the Determination Value, the gene, the eigenvalue, and the Individual Value. There are many other names, but I prefer the Deter Value.


And dude... why bother using hex? To me it just makes things more complicated and your code more dirty...
^
It is equally fast for RMXP (from octals to haxadeciamls is one step, from octals to deciamals too). And If you want, you could just convert tha numbers ^^. It are hexadecimals because It is pulles out of the pokemon game, with a hack hex editor... XP

~Azura
January 6th, 2007, 3:58 AM
p.s. - Effort Values << That is stupid. EV's are not constant

Of course EV's are constant, that's what I'm talking about. Growlithe always gives you 1 attack ev, Nidorino gives you 2 points, etc.

the data is not going to change

Wth, what do you mean by not going to change? Stats change all the time, and when your pokémon evolves? You're not thinking ahead...

In my 'big' hash ($pokemon) almost all the values are changed when the Pokémon battles or evolves.

The one that is fix is $database, that is not big at all.


It is equally fast for RMXP (from octals to haxadeciamls is one step, from octals to deciamals too).

Really fast. (...)

DVs are based on a 16-digit scale of 0-15. There are four different stats a Pokémon has DVs for--Attack DV, Defense DV, Speed DV, and Special DV. The Special DV determines the Special Attack and Special Defense stats. There is a fifth kind of DV -- the HP DV -- which is determined by using all four of the other DVs.

That's GS DV's (That is the same as the RS IV's, except that is ranges from 0 to 31)

They're NOT constant, so or you couldn't explain yourself right or you really did mistake them ;)

Dawson
January 6th, 2007, 7:06 AM
AzuraBR & Me™, this thead has kind of run it's course since the thread starter has quit the project, so I'm going to have to close this. By all means, continue your discussion in this (http://www.pkmncommunity.com/showthread.php?p=2345930#post2345930) thread to keep it all in one place. Thanks. Anyway..

-Closed-