スクリプトに関する変な質問で申し訳ない
ユニットがレベルアップとクラスチェンジの時
指定するアイテムを自動的にもっと強い物に変更するシステムを作りたいけど
以下のスクリプト実行が終わったら、確かにアイテムは変更されたけど
何故かF12押してゲーム再起動した後、ゲームに入るとフリーズになって
しかもSRPG Studio自身のエラーメッセージがないから、理由は全く分かりません

count = UnitItemControl.getPossessionItemCount(unit); //count ← この人の持ち物総数

for(i = 0;i < count; i++) {
item = UnitItemControl.getItem(unit ,i); //item ← この人i番目のアイテム
if (item === null) { break; } //アイテム持ってないなら判断する必要も無くなる
itemId = item. getId(); //itemID ← i番目アイテムのID
if (!item.isWeapon) { itemId += 65536; } //武器じゃないなら、ID+65536
if (itemId === beforeItemId ) //beforeItemIdは変更前のアイテムID
{
targetItem = ItemControl.getItemDataFromId(afterItemId); //afterItemIdは変更後のアイテムID
UnitItemControl.setItem(unit, i , targetItem); //i番目のアイテムは指定するアイテムに変更
//↑↑↑ここを消せればフリーズは無くなるけど、それではアイテムは変更できません
ItemControl.updatePossessionItem(this._unit);
break; //変更終わったら、その後のアイテムを判断する必要も無くなる
}
}

ItemControl. getItemDataFromId = function(id) { //return(id変数が対応するアイテム)
var item,list;
if(id < 65536) //武器ならそのままidの内容
list = root.getBaseData().getWeaponList();
item = list.getDataFromId(id);
}
else { //アイテムなら id - 65536
list = root.getBaseData().getItemList()
item = list.getDataFromId(id - 65536);
}

return item;
};

もしかしてアイテム変更する時、setItemが終わった後
他に何かやるべくことでもありますのでしょうか?

長文ですいません