rpg_objects.js を直接書き換えず、プラグインを作ることで対応されており、ちゃんと競合しにくい書き方をされていて良いですね。
仕様もしっかり定義できているようなので、あとはコードの読み書きに関して作法を知って慣れればお望みのプラグインが書けるようになるかと思います。
何故か、初期状態でLv13で設定したはずがLv1になってしまいます。
どうしてレベルが下がるのか分からないので投稿させていただきました。
Game_Actor.prototype.changeLevel 関数は、その名前の通り、アクターのレベルを変更する関数です。
アクターのレベルを、引数として渡した level にする という処理をしています。
ですので、1を渡してしまうとレベル1になるのは自然です。
アクターをレベルアップする処理を行う levelUp 関数もありますので、そちらを呼ぶほうがきれいな気はします。
が、戦闘終了時に経験値を入手する処理が入るとそこでレベルダウンしてしまう可能性があるので、 changeLevel をそのまま使うのであれば、現在レベル+1を渡してあげると良いでしょう。
例えば、以下のようになります。
コード: 全て選択
...
const beforeLevel = $gameActors.actor(n).level;
$gameActors.actor(n).changeLevel(beforeLevel+1, false);
...
ここから先はお節介ですので、余力のある時にお読みください。
人に読んでもらう場合は、せめてコードフォーマットをかけましょう。
ご利用のエディタ次第ではありますが、VSCodeをお使いの場合は、 Shift+Alt+F で自動的に整形してくれます。
独自に定義した attackExp 関数を17行目で変数に退避されていますが、これは必要ありません。
変数番号の41や42、次のレベルまでのダメージ数を表す1000のような、意味のある数値がそのまま書かれています。
これはマジックナンバーと言って、入力ミス等で容易にバグを引き起こす無作法な書き方です。
もしゲーム中で変わらない数値なのであれば、以下のように定数として定義してそれを参照すると良いでしょう。
コード: 全て選択
const EXP_VARIABLE = 42;
21行目、後半の条件式は必ず真になってしまいます。
0 <= $gameVariables.value(41) を評価した後、その真偽値に対して true <= 10 か false <= 10 を評価してしまいます。
この場合、型強制によってtrueは1、falseは0に変換されるため、結果は必ず真になります。
横着せず、素直に && でつなぎましょう。