I think a small plugin might be the easiest way to do this. It can read each actor’s growth straight from their class, so the same item works for every actor even if they grow differently.
Make a new text file in your project’s js/plugins folder named LevelGrowthItems.js and paste this in. Then add it in the Plugin Manager below your Yanfly plugins:
/*:
* @plugindesc Items with <Level Growth> in their note give the target one level's worth of stat growth.
*/
(function() {
function levelGrowth(actor) {
var level = actor._level;
var high = Math.min(level + 1, actor.maxLevel());
var low = high - 1;
for (var i = 2; i < 8; i++) {
actor._level = high;
var gain = actor.paramBase(i);
actor._level = low;
gain -= actor.paramBase(i);
actor._level = level;
actor.addParam(i, gain);
}
}
var _testApply = Game_Action.prototype.testApply;
Game_Action.prototype.testApply = function(target) {
if (this.item().meta['Level Growth'] && target.isActor()) {
return this.isForDeadFriend() === target.isDead();
}
return _testApply.call(this, target);
};
var _apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_apply.call(this, target);
if (this.item().meta['Level Growth'] && target.isActor() && target.result().isHit()) {
levelGrowth(target);
this.makeSuccess(target);
}
};
})();
Next, put <Level Growth> in the item’s note box and set its scope to 1 Ally. When it’s used, the actor gains the Attack, Defense, M. Attack, M. Defense, Agility and Luck they would get from their next level up. To include Max HP and Max MP too, change i = 2 to i = 0.