• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • 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.

[Developing] Pokemon Great Tenkaichi

What battle screen do you prefer? [i](Please read the new battle screen description before voting.)[

  • New battle screen ([url=https://www.pokecommunity.com/showthread.php?p=9751247#post9751247]described

    Votes: 4 80.0%
  • Classic Pokemon battle screen

    Votes: 1 20.0%

  • Total voters
    5
  • Poll closed .

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Also for adding the stats may I suggest to keep track of the data using js. The reason for that is that it will become a lot easyier to rebuild the stats in the future and possible generate guides or wikia data for it. Here's a small example:

Code:
ignoreCaps = (string1, string2) => string1.toUpperCase() === string2.toUpperCase() ? string2 : "";
data = {
  fighters: {
    categories: ["Starting", "Early", "Average", "Semi-Pseudo", "Pseudo-legendary", "Legendary", "Mythical"],
    stats: ["hp", "atk", "def", "spd", "satk", "sdef"],
    content: {}
  }
};
addFighter = (name, category, hp, atk, def, spd, satk, sdef) => {
  data.fighters.content[name] = {};
  data.fighters.content[name].name = name;
  data.fighters.content[name].category = (() => {
    var e;
    for (e in data.fighters.categories) {
      e = ignoreCaps(category, data.fighters.categories[e]);
      if (e != "") return ignoreCaps(category, e);
    }
    if (e === "") return "Unknown";
  })();
  data.fighters.content[name].stat = {};
  data.fighters.content[name].stat.hp = hp
  data.fighters.content[name].stat.atk = atk
  data.fighters.content[name].stat.def = def
  data.fighters.content[name].stat.spd = spd
  data.fighters.content[name].stat.satk = satk
  data.fighters.content[name].stat.sdef = sdef
};

When the "addFighter" function is compleetly setup the data can be added with one simple line. Currently that's:

Code:
addFighter("Kid Goku", "Starting", 45, 49, 49, 45, 65, 65);

With all the data stored in a object you can convert it pretty much to anything. Here's a conversion function that alerts part of the pokémon essentials data:

Code:
printFighter = (name) => {
  var esName = "Name=" + data.fighters.content[name].name;
  //InternalName=BULBASAUR
  //Type1=GRASS
  //Type2=POISON
  var esStats = "BaseStats=";
  for (var i in data.fighters.stats) {
    var stat = data.fighters.stats[i];
    esStats += data.fighters.content[name].stat[stat];
    if (i != data.fighters.stats.length - 1) esStats += ",";
  }
  alert(esName + "\n" + "InternalName=BULBASAUR" + "\n" + "Type1=GRASS" + "\n" + "Type2=POISON" + "\n" + esStats);
};

When the "printFighter" function is compleetly setup the data can be printed with one simple line. Currently that's:

Code:
printFighter("Kid Goku");

Right now it alert the following content:

[S-HIGHLIGHT]Name=Kid Goku
InternalName=BULBASAUR
Type1=GRASS
Type2=POISON
BaseStats=45,49,49,45,65,65[/S-HIGHLIGHT]

Actually I already have all the fighter entries, all that is missing are the stats, using js only for that may be too much... I'll decide what to do!
 
Last edited:
128
Posts
11
Years
  • Seen Dec 29, 2020
There's a big problem with that; All the fighters the in-game trainers use have happiness=0, so using happiness in formulas isn't so recommended!
Ow that stucks, I think it's still possible tho when it's done like this:

Base Power [ 50 + (0.5 * ( ( 1+ Friendship ) - ( ( 1+ Target Friendship ) / 2 ) ) ) ]

Technically it would give 256 points for Friendship but I doubt many would bother by it. Or does essentials calculate additional things with the friendship variable when it's called by moves?

Actually I already have all the fighter entries, all that is missing are the stats, using js only for that may be too much... I'll decide what to do!
Yeah your right, for an ingame edite something like Python or Java would probally do that stuff a lot faster. But automating that would actually be very simple:

//Get file
//Stream & buffer file (loop through each line) (all data from the file should be stored in a variable)
//Check if index 8 of line is "="
//Check if left handling of "=" is "BaseStats" (so 0 to index is BaseStats)
//If true override right handling of "=" (basicly index to line.length is value BaseStats)
//Print Array of stats to location and format it with ","

I actually really like what I code so far. Maybe I write a full js version to covert the pokémon essential data to objects and the other way arround and share it with the pokémon community.
 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Ow that stucks, I think it's still possible tho when it's done like this:

Base Power [ 50 + (0.5 * ( ( 1+ Friendship ) - ( ( 1+ Target Friendship ) / 2 ) ) ) ]

Technically it would give 256 points for Friendship but I doubt many would bother by it. Or does essentials calculate additional things with the friendship variable when it's called by moves?

Actually I was checking some things because there are 2 moves in the Pokemon games that scales with happiness, and by checking their formulas, they are very simple and they actually use happiness... I have to find where the happiness of a trainer's fighter is set, if it's always 0 calculations based on happiness will be too unbalanced favoring the player, because he'll be the only one with high happiness values...I'll let you know something when I find the proper section.

Update
Ok... already found! eheh
The happiness value for all the trainers' fighters is 70 by default, but it is easily editable when needed, so after all some particular moves based on happiness can be done!

Yeah your right, for an ingame edite something like Python or Java would probally do that stuff a lot faster. But automating that would actually be very simple:

//Get file
//Stream & buffer file (loop through each line) (all data from the file should be stored in a variable)
//Check if index 8 of line is "="
//Check if left handling of "=" is "BaseStats" (so 0 to index is BaseStats)
//If true override right handling of "=" (basicly index to line.length is value BaseStats)
//Print Array of stats to location and format it with ","

I actually really like what I code so far. Maybe I write a full js version to covert the pokémon essential data to objects and the other way arround and share it with the pokémon community.

In that case we aren't so different! I also like to code things a lot! eheh
 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
For everyone who is wondering what I'm doing... I'm writing a program to speed up things, mainly to edit Pokemon entries in a faster way.
It's almost ready!

Once finished I'll post it along with the fighter list and I'll explain what to do if someone wants to help giving stats.
 
128
Posts
11
Years
  • Seen Dec 29, 2020
I found another intressting character named Yamoshi. This was the first super saiyan (only was able to reach the form in ape state, so golden ape actually). Later he achieved SSJ-God with the ritual. I found this fanmade model:



Could be used as a bonus character in the future or something. Maybe even something hidden that you can obtain after compleeting the game.

Art: https://www.youtube.com/watch?v=ZcAklktTARQ
Source: http://dragonball.wikia.com/wiki/Yamoshi


----

I also check a little bit of the dragonball map. I thought it could be usefull to have an idea to determ the strength of specific fighters:

 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
I discovered Yamoshi yesterday! He can be an interesting addition, a special fighter obtainable with particular steps... I hope to remember him for future updates!

The map can be useful, I can use it as base to create the world map, thanks.
 
128
Posts
11
Years
  • Seen Dec 29, 2020
I discovered Yamoshi yesterday! He can be an interesting addition, a special fighter obtainable with particular steps... I hope to remember him for future updates!

The map can be useful, I can use it as base to create the world map, thanks.

I found the map on google but I'm currently adding the missing data to it. Their are a lot more locations missing that need to be added their. Than their is the fact that not all area probally should be included in the rom hack because of their little to no use. And finally their is the factor of creating additional areas and fanfiction changes to make some fighters more realistic to be in that location. To take the Namekians for example. They can be handled like Clefairy where some fights strand of the planet and can be found on certain location. Or you can you can go for a settlement where the Namekian actually started a village on the planet. And the last one would be that they actually life on Namek and you need a spaceship to get their.
 

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
I found the map on google but I'm currently adding the missing data to it. Their are a lot more locations missing that need to be added their. Than their is the fact that not all area probally should be included in the rom hack because of their little to no use. And finally their is the factor of creating additional areas and fanfiction changes to make some fighters more realistic to be in that location. To take the Namekians for example. They can be handled like Clefairy where some fights strand of the planet and can be found on certain location. Or you can you can go for a settlement where the Namekian actually started a village on the planet. And the last one would be that they actually life on Namek and you need a spaceship to get their.

I have an idea on the reason why certain fighters will be present with some others, because if we want to use only the original Dragon Ball story, for example, all the fighters from other universes won't be found anywhere.
I'm aiming to create a story that motivates the presence of DragonBall fighters instead of Pokemons, and the idea is to create it in a way that lets me to expand things in the future.
 
128
Posts
11
Years
  • Seen Dec 29, 2020
I have an idea on the reason why certain fighters will be present with some others, because if we want to use only the original Dragon Ball story, for example, all the fighters from other universes won't be found anywhere.
I'm aiming to create a story that motivates the presence of DragonBall fighters instead of Pokemons, and the idea is to create it in a way that lets me to expand things in the future.

The only thing you have to be carefull when doing is that you don't lose the competive aspect from the experience. It's a good idea to make some fighters only available by quest. However by doing this you miss out the opportunity to catch one with a better nature or overal base stats. For example if the fighter Hit you gain from a quest has an awfull base speed. Some would probally move towards another fighter since their wouldn't be a way to get a better one. It's also a way to lose out the chance to obtain a shiny version from it what again is cutting out another group of players that love that specific fighter.

Than their is the last group that I would like to call breeding. This type of playerbase tries to use breeding to obtain pokémon/fighters with better stats and possible new moves they wouldn't learn otherwise. Their are actually a lot of shapeshifters in dragonball:
- Mai (could use the ability in the movies)
- Oolong
- Puar
- <Neko Majins (race)> Neko Majin Z > Super Neko Majin

latest


Source:
- http://dragonball.wikia.com/wiki/Shapeshifting
- http://dragonball.wikia.com/wiki/Mai/Dragonball_Evolution
- http://dragonball.wikia.com/wiki/Neko_Majin_(race)

With this I also found an new evil saiyan:

Source: http://dragonball.wikia.com/wiki/Onio



It seems that the the shapeshift of Neko Majin Z is very different than the others so that's why I would suggest something like this:
- The Hyperbolic Time Chamber in the The Lookout. Will act as the typical daycare center. The main differents however is that a fighter can only be their with a time limit. After the time has ended the fighter won't be levelup anymore. The big different with this system is that the fighters will gain a lot more exp than an usual day-care center. Also by placing two fighters in it add ones will futher boost their chance to gain exp. Something else that this system needs is some parameters like the abilities to check out the new moves they are able to learn. As well as well when they evolved during the training.
- Neko Majin Z/Super Neko Majin acts like Ditto. So when paring him with another fighter will give a chance to obtain a 3th fighters. No eggs this time, just a capsule with a level 1 fighter.

Neko Majin Z could be a fighter you obtain in some kind of side quest later on in the game. To open up the option to get fighters with better stats that are only obtainable ones or chances to get a shiny.
 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
I was also thinking about the breeding system, I still haven't decided what to do...
some fighters will be completely unobtainable if I use the regular pokemon breeding system because it work using groups of species and the resulting species is always determined by the female pokemon. That system won't let me to obtain any male fighter because the gender rates don't vary like they do with pokemon.

As i already said, I still have to decide what to do.
 

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Another thing I forgot to say... There will be certain fighters only obtainable by quests, like the legendary pokemons, but not too many of them for the reason you said, I don't want to remove the possibility to obtain the same species more than once.

I was also thinking on a system that can work similarly to the breeding one... Bio broly can give you a hint of what I'm thinking!
For now it's just an idea, but if I manage to balance everything it can be a good way to let trainers obtain the same fighter more than once
 
128
Posts
11
Years
  • Seen Dec 29, 2020
Great,

I just came with another idea for an alternation how "Obedience" for fighters work. In the current pokémon system. Fighters that don't listen to it's trainer will often skip turns and so. But how about we change that to something like an off-guard system (typical Goku style). Where the fighter defense and special defense sharply drops for a turn. A lot more of those typical dragonball things could be in their rather. Not all of them could be replaced but some of them could be intressting.

Source: https://bulbapedia.bulbagarden.net/wiki/Obedience
 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Great,

I just came with another idea for an alternation how "Obedience" for fighters work. In the current pokémon system. Fighters that don't listen to it's trainer will often skip turns and so. But how about we change that to something like an off-guard system (typical Goku style). Where the fighter defense and special defense sharply drops for a turn. A lot more of those typical dragonball things could be in their rather. Not all of them could be replaced but some of them could be intressting.

Source: https://bulbapedia.bulbagarden.net/wiki/Obedience

It depends on how essentials handles obedience, I have to check.
 
128
Posts
11
Years
  • Seen Dec 29, 2020
I've written everything in the main post, now I hope some people will help!
Does this work? What seperate hidden character did you use seperate the lines. It's kinda anyoing to read them manual now. Why didn't you implement [S-HIGHLIGHT]\n[/S-HIGHLIGHT] to make it visually more apealing. It's also hard to update now when you just need to make a small edit without using the program. It's much easyier to buffer it from line to line since one line has a limit on how characters you can load from a file. This get's even worse in an online situation.

Edite: Nvm, .txt just didn't support the nextline command that was used js still supported it. I converted the data to js to give a better overview for myself. We still need some guidelines for the average stats used. Have you decided what will be the starter(s) or if their would be a starter add all?

353 fighters to work with. That some nice work ;)
 
Last edited:

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Does this work? What seperate hidden character did you use seperate the lines. It's kinda anyoing to read them manual now. Why didn't you implement [S-HIGHLIGHT]\n[/S-HIGHLIGHT] to make it visually more apealing. It's also hard to update now when you just need to make a small edit without using the program. It's much easyier to buffer it from line to line since one line has a limit on how characters you can load from a file. This get's even worse in an online situation.

Edite: Nvm, .txt just didn't support the nextline command that was used js still supported it. I converted the data to js to give a better overview for myself. We still need some guidelines for the average stats used. Have you decided what will be the starter(s) or if their would be a starter add all?

353 fighters to work with. That some nice work ;)

Actually I maintained the same format as the original file, with a commented line made of - - - - - between each entry.
It must be only a problem of the tool you used to open the txt file that doesn't read newlines.

Regarding the starters, I haven't decided! I was thinking to use kid Goku as on of the starters... The other ones could be an evil character, someone like frieza, and a third one I still haven't decided, maybe Vegeta.
 
Last edited:
128
Posts
11
Years
  • Seen Dec 29, 2020
Actually I maintained the same format as the original file, with a commented line made of - - - - - between each entry.
It must be only a problem of the tool you used to open the txt file that doesn't read newlines.

Regarding the starters, I haven't decided! I was thinking to use kid Goku as on of the starters... The other ones could be an evil character, someone like frieza, and a third one I still haven't decided, maybe Vegeta.

Having some type variation could indeed be intressting. I looped through all lines and it seems you currently have:

Saiyan, Ssj, God, Earthling, Namekian, Alien, Beast, Demon, Dark, Friezarace, Android, Tuffle, Dragon

I'm not sure it's a good idea to try to create 3 starters. Despite Frieza looks intressting as starter. I think it will shake the ballance of popularity. Why not just stick with Kid Goku as starter? Or just include someone else as starter. The main reason for that is that Goku has a large variation of evolutions making it very difficult to mess up when you evolved him into the wrong direction (unless you are going to make him available later on in the wild).

When I noticed from experience from previous dragon ball hacks. One that I remembered included Goku, Gohan & Vegata as starter. But that was a time where both 3 characters where about equal in popularity. I did notice in that version that Freeze was obtainable way to late in that game what caused a lot of problems for his use.

So personally I think it's just easyier to include Goku as the only starter. Their will be enouge unique characters avaiable in the game that are hard to obtain and it's not like many people are not going to pick Goku anyway when the other starters won't give you a specific advantage while progressing in the game.

So I see 3 options for the starters:
- Kid Goku as only starter
- Kid Goku, Vegeta & Gohan as starter
- (Unique Typings) Kid Goku, Freeza and probally a typing that would make for a sort a ballance trio like an Alien or Dragon.

Their is a 4th option however and that's just creating 3 fake starters that have these typings in mind. Starters that you can ballance and each have 2 evolutions & a mega evolution.

It's a difficult topic since their is a high chance every player will endup with the same team and that would suck for the experience when they don't have room to explore new things. But not enouge main characters obtainable early would suck as well.
 

LorisC

Nothing is real, everything is permitted!
203
Posts
6
Years
Having some type variation could indeed be intressting. I looped through all lines and it seems you currently have:

Saiyan, Ssj, God, Earthling, Namekian, Alien, Beast, Demon, Dark, Friezarace, Android, Tuffle, Dragon

I'm not sure it's a good idea to try to create 3 starters. Despite Frieza looks intressting as starter. I think it will shake the ballance of popularity. Why not just stick with Kid Goku as starter? Or just include someone else as starter. The main reason for that is that Goku has a large variation of evolutions making it very difficult to mess up when you evolved him into the wrong direction (unless you are going to make him available later on in the wild).

When I noticed from experience from previous dragon ball hacks. One that I remembered included Goku, Gohan & Vegata as starter. But that was a time where both 3 characters where about equal in popularity. I did notice in that version that Freeze was obtainable way to late in that game what caused a lot of problems for his use.

So personally I think it's just easyier to include Goku as the only starter. Their will be enouge unique characters avaiable in the game that are hard to obtain and it's not like many people are not going to pick Goku anyway when the other starters won't give you a specific advantage while progressing in the game.

So I see 3 options for the starters:
- Kid Goku as only starter
- Kid Goku, Vegeta & Gohan as starter
- (Unique Typings) Kid Goku, Freeza and probally a typing that would make for a sort a ballance trio like an Alien or Dragon.

Their is a 4th option however and that's just creating 3 fake starters that have these typings in mind. Starters that you can ballance and each have 2 evolutions & a mega evolution.

It's a difficult topic since their is a high chance every player will endup with the same team and that would suck for the experience when they don't have room to explore new things. But not enouge main characters obtainable early would suck as well.

I'm was thinking to make almost everyone available to catch, even the starters, of course not as common finds.
I hate the fact that in almost every pokemon game there's something unobtainable.

Said that, it doesn't mean that it'll be simple to have everyone.

The idea of using a single starter can be interesting, but it removes the opportunity to choose what you want from the beginning.
I still haven't decided what to do...
 
128
Posts
11
Years
  • Seen Dec 29, 2020
I think the current ballance might be a little bit hard. I just generated a list to generate the amount of fighters their exist with that specific primary type. And this was the result:

Number of total fighters with primary type:
  • SAIYAN = 37
  • SSJ = 41
  • GOD = 12
  • EARTHLING = 32
  • NAMEKIAN = 6
  • ALIEN = 110
  • BEAST = 5
  • DEMON = 49
  • DARK = 0
  • FRIEZARACE = 16
  • ANDROID = 36
  • TUFFLE = 9
  • DRAGON = 0

I notice that their where still are a lot of fighters missing. So in the long run it probally wouldn't matter but it might help for some insight. I noticed that things like the Shenron line isn't included yet so that would probally fill in some holes. It will be a difficult task however to generate 110 unique fighters with the Alien type. I probally can do a list with the secondary typing included as well.

If you want some type of overview just ask. With data object that I have generated I can print data rather easy. Here's an example of the code I used to generate the list above:

Code:
//data object not included
var typeList = {};
for (var type of data.types) typeList[type] = [];
for (var fighters in data.content) {
  tempType = data.content[fighters]["Type1"];
  for (var type of data.types)
    if (tempType === type) typeList[type].push(data.content[fighters]);
}
print = "";
for (var type of data.types) {
  print += type + " = " + typeList[type].length + "\n";
}

Code:
[B]Number of total fighters with primary type (without secondary typing):[/B]
[LIST]
[*]SAIYAN = 28
[*]SSJ = 30
[*]GOD = 10
[*]EARTHLING = 31
[*]NAMEKIAN = 6
[*]ALIEN = 105
[*]BEAST = 0
[*]DEMON = 38
[*]DARK = 0
[*]FRIEZARACE = 14
[*]ANDROID = 29
[*]TUFFLE = 6
[*]DRAGON = 0
[/LIST]

[B]Number of total fighters with primary type (with secondary typing):[/B]
[LIST]
[*]SAIYAN = 9
[*]SSJ = 11
[*]GOD = 2
[*]EARTHLING = 1
[*]NAMEKIAN = 0
[*]ALIEN = 5
[*]BEAST = 5
[*]DEMON = 11
[*]DARK = 0
[*]FRIEZARACE = 2
[*]ANDROID = 7
[*]TUFFLE = 3
[*]DRAGON = 0
[/LIST]
 
Last edited:
Back
Top