Can I "evolve" a hero into another?
This is by no means complete, and probably never will be. Do not be afraid to add new ideas, or alter the ones here in the name of accuracy and/or ease of reading.
To Answer the Question
Yes, you can "evolve" a hero into another.
An item that brings up a script could evolve Pikachu by use of a Thunderstone.
A script that is brought up after each battle could evolve a character by level.
NPCs could be sought out to "train" heroes to achieve "Class Upgrades".
Using tags set by attacks could be used to have a hero specialize in skills he practices more often.
Evolution by item
1) Create the base hero and what he evolves into.
2) Make a script that removes the first hero from the party adds the second, then, if desired, set the second hero's level to that of the first, remove the equipment from the first and equip it to the second, and if you thought to have global variables record stat bonuses from usable items ahead of time, adjust the second hero's stats accordingly.
A script that does most of this is
If multiple characters can evolve from the same item, then have the script ask the player to select a hero before any of this happens and have it set a variable to work from. If the item can evolve the character into different things, you may want to make a menu that would give advice to the player and allow them to chose from a custom menu.
Also, you might want to add some graphic and audio effects. Usually a "Shing" sound or a rising hum or short burst of notes with the screen slowly fading into a color (usually white or multiple colors based on the hero, elementals, job classes, or whatever definitions you might come up with) is usually enough. If you really want to impress the player, you could get crazy with the walkabout graphics or mess around with screen shots if the item requires the player to use it at a specific location.
3) Remove or lock away the original hero. If you plan to use the original version later on in the game for whatever reason, never remove the hero from the game.
4) Make an item that calls this script.
5) Find a suitable location in the game for the player to find this item. Possibly a major challenge if the new hero is powerful enough, or just that awesome.
Other possible locations include rare drops or items to be stolen from certain enemies. Secret areas or other cheating methods that make the hero godlike in power. Purchased in stores as a joke, such as armor "upgrades" for the lead female that show more skin each time until all that's covered is what would otherwise require a censor bar and a large helmet that completely hides her face.
A wizard comes across a new spell book and becomes capable of more advanced spells that she learns through leveling, separate from the ones she can still purchase. Remember to add the spells already known to the first hero to the new hero.
A Shaman who learns his abilities from capturing evil spirits and absorbs them might need a stronger device for capturing more powerful spirits. Remember to add the spells already known to the first hero to the new hero, unless it is impossible to transfer his spirits between devices... some players might loose interest in this hero if there are necessary or favorite spells that need to be sought out again, especially if this happens more than once.
A hero finds a new weapon that gives him a completely new list of skills. Say he used a spear at first and a sword later on. If he can switch between the two, make sure that he has another item that allows him to go back to the old one possibly given by the script. If the fighting styles are different enough, and the stats are pretty balanced against each other, some players might actually enjoy the opportunity to have the option to have separate characters in battle, but the same character outside of battle, as this method allows for more options to the player, while less complications with out of combat scenes for the developer.
Evolution by Character Level
1) Make the two heroes and have an after battle script check what level the hero is. If the game already has an after battle script, alter it the add this effect in. If the script finds the hero to be of level to evolve, then have it continue with an if statement with a long continuation... or just let it call up another script.
2 and 3) These steps are about the same as those listed in "Evolution by item" (above). Generally speaking you probably don't need to select a character, unless you do something outlandish such as a teacher who knows of all forms of combat, but is frail from old age and every few level he can cause another hero to evolve after remembering some of his old techniques (which could double as his way to learn new abilities, which would be different based on the hero the player chooses to evolve), but sometimes you might be better off going with what might natural to the player.
4) Find a way to test it. Naturally, you would want to test everything in the game twice over, but this one may need lengthy tests and a lot of tweaking.
Evolution through leveling tends to lend itself to martial artists who have their main attack change a lot as they surpass the strength of the few weapons they can equip. This may be done by just changing their basic attack instead.
Monsters that go through different stages in life and grow through obtaining wisdom from the world around them such as a Dragon found while still in her egg. If the game grants XP as "quest rewards" or the character starts off at a low level late in the game and can level through exploration, then this idea may work, but it would take a lot of attention to very minor details.
Also, a "Monster Trainer" such as those found in Pokemon, could find that their creatures evolve in this way.
Evolution for Sale
This method is similar to that of "Evolution by Items", so much so that the only true difference is that the script would be initialized by an NPC or a Text Box. From this point there really isn't a difference, other than what would be appropriate for the player to see while the hero is evolving and the possibility that the hero needs to pay or otherwise prove that he is worthy of this service (a lengthy quest, solving a few puzzles, being at a high enough level, knowing a certain attack, etc).
A short montage of the training or the screen fading to black and hearing the sounds of someone getting smacked about and yelping might work, but really fading out and fading back in could be a display of the passing of time. Maybe the hero being trained might have to complete a few challenges on the spot to evolve.
Class Upgrades--A knight becomes a Paladin, a Mage becomes a Wizard, a Thief becomes an Assassin, a Wrestler becomes a Monk, a Force Sensitive becomes a Jedi then a Jedi Knight to a Jedi Master or a Dark Jedi to a Sith Lord, a Gladiator to a Berzerker, a Scout to a Ranger... and so on.
Specializations--A Knight tutored to increase his skills with a favored weapon, a Wizard takes the hero as an apprentice to expand his study in a specific type of magic, a Jack of all Trades styled hero could learn from one of the tutors that the other heroes went to for Class Upgrades and become a little more like one of the other heroes.
Class Trees--Multiple tutors exist in the game that are accessible to the hero. Each one changes his skills differently but only one can be chosen. Later on, they can be found again and each will evolve the character further into having the skills as though they had picked two different classes early on or are just overly exaggerated versions of their initial choice. Continuing this for too long will soak up the number of heroes you can have in the game, unless you don't mind doing it all through plot scripting (changing sprite sets/palettes, locking/unlocking skill menus, raising and possibly lowering stats usually with each level unless just one major adjustment is desired, messing with what skills can and can't be learned, etc).
Evolution Through Battle
1) Each skill used by the character should be set to alter a tag. These can be unique tags for each skill, or tags for set categories.
2) Make (or alter an existing) after battle script that checks which skills have been used so that if the tag returns true, then certain global variables are raised.
If you have a unique for each skill then you may choose to have the more costly skills to add more to the variable than the cheaper ones, but be careful with this as you will need to script whether this allows a player to gain points only on the strongest used (or strongest known) or, if left alone, get points from every skill used (will not count multiple uses of the same). Also on individual skill tags, the option to have each individual skill raise in power is also present.
Having skills share tags is less complicated, but doesn't give as many options.
3) Make a target number that the global variables have to reach, and place an if statement in the script after the part where the variables are calculated. This if statement should call a script (or have a length of effects) that produce the desired result.
A hero with three commands (Fight, Sword, and Magic where Sword and Magic are skill menus) is given a set of tags that are triggered when he uses "Fight" or any skill in the other two. Every time they hit the tag a set number of times the character gains a small stat bonus that makes that command better. Fight would add more damage to the hero's basic attack, Sword would raise his accuracy and dodge slightly and add new skills to that menu, and Magic would increase the heroes skill with magic and grant new skills to that menu. After a great amount of battles the hero would jump to a new class. There could be seven based on the values of the different variables. If one tag was way higher than the others by a great amount (Fight would probably be the highest but need to reach a much higher goal) then the new class would be based solely on that one, but if another was pretty close (let's say 80% of the way to the evolution value) then the class would mix the strengths of the the two. If both of the other two were in that range, the hero would evolve into a generalist.
If the hero is in a black and White setting where it is believed that Good is always good and Evil is always evil, the main hero may discover that corruption isn't as obvious as it first seemed. Some of his attacks would be tagged as evil, and others would be good. There would be only one global variable that would raise and lower based on this. If his alignment dropped too far, he would go through a class change where his dark powers are enhanced and his good powers are wimpy, the opposite could be true if he became too good. The good/balanced/evil classes would be able to switch between each other at any time but becoming pure evil or pure good would make the hero incredibly powerful but beyond redemption/corruption and loose access to skills of the opposite alignment. Maybe there would be chances to alter your alignment outside of combat as well.
Evolution without Scripting
1) Create both versions of the hero, set the second hero to show up at level "Party Average", and text boxes for the event. You may want to use images that cover the screen as this method is pretty ugly.
2) Using the text box options remove all characters from the party except for the one who will be evolving. The next text box should add the evolved form of your character and delete the old one.
3) If you know who the other party members would be, then you can add them back into the party. This isn't necessary, but it's perhaps convenient for the player.