I like how you included the info.txt with the name of the character for players who want to find more pictures of that character online.
The extreme difficulty, long length, and boring repetition of each battle tends to severely discourage the player from ever wanting to backtrack, because they never want to re-do any of those battles. I myself never once turned around during the entire duration of my playthrough. I wanted to get past all the enemies and reach "the goal" whatever it turned out to be.
It's not actually clear that the player can find girls in the caves. I only figured this out after looking at the levels in the editor. It would probably be a good idea to immediately show the girl in each cave, and have the player figure out how to get to them.
I'm not personally a fan of grinding. But I think it would be more fun and meaningful if there were only about 1 or 2 enemies roaming the forest, but they're like bosses that you need to avoid at first and explore the area to prepare for. Of course you'd need a compelling reason to fight them, so maybe each boss also uses a girl in battle that you can capture and acquire.
(Make sure you actually tell the player about this ahead of time) So you explore to find items, abilities, and upgrades to prepare to fight this enemy. Growth doesn't have to occur through experience points or battles. A pokemon's power and defense stats can be raised directly by modifying their variables.
For example, if you wanted to directly change the attack power of the 1st pokemon in your party, you'd modify the number stored in this variable:
- Code: Select All Code
RAM.pokemon.0.power
The 0 is a zero. The pokemon are stored in an array (an ordered list)
... therefore this variable would change the attack power of the 2nd pokemon in your party:
- Code: Select All Code
RAM.pokemon.1.power
Here's how the game stores the pokemon data for your party:
- Code: Select All Code
(RAM)
[pokemon]
(0)
id:"ash"
trainerId:"" (unique trainer ID)
nickname:""
level:1
hp:10
maxHp:10
power:2.5
exp:0
heldItem:"hpBerry"
[moves]
0 = "flail"
1 = "strength"
(1)
id:"pikachu"
trainerId:"" (unique trainer ID)
nickname:""
level:1
hp:10
maxHp:10
power:2.5
exp:0
heldItem:"hpBerry"
[moves]
0 = "quick_attack"
1 = "spark"
(etc...)
If you have 6 pokemon and you capture another one, it gets added to RAM.storage instead of RAM.pokemon. But the variables are exactly the same as above.
The "trainerId" variable is a way to uniquely identify a pokemon the player has in their party or storage regardless of what nickname the player gives them. This is normally an empty string, but you can use anything you want. This allows you to search through the player's party or through their storage for a specific character.
The way attack power works is that when a pokemon attacks, their move uses their attack power and multiplies it by the inherent power of that move. The result is then subtracted from the opponent's HP.
Here's a list of all the game's attacks, their effects, and their inherent attack multipliers:
attack list.txtIf you want to add or replace a pokemon's move, you'd modify the string stored in one of their "move" variables, like so:
- Code: Select All Code
RAM.pokemon.0.moves.0
=
scratch
This would affect the 1st pokemon in your party and change their 1st move to "scratch"
The name you use must exactly match one of the names in that text file. It must be lowercase too. Changing that pokemon's 2nd move would be done by changing this variable:
- Code: Select All Code
RAM.pokemon.0.moves.1
Moves must be added in sequence because they're stored as an array. If the pokemon currently only has 2 moves, and you try to set its 5th move, you wouldn't be able to. But you would be able to set its 3rd move because that would be the next available slot. You can figure out the next available number by looping up from 0 until you find the value:
- Code: Select All Code
undefined
A pokemon's "level" variable actually has no effect on their stats. But the act of leveling-up permanently multiplies their "power" and "maxHp" by 1.5
There's nothing preventing you from increasing or modifying these manually, regardless of the pokemon's displayed level number.