From b6e5c96b5e353f3bbb70b2fd0f49a50c8fc0ee79 Mon Sep 17 00:00:00 2001 From: AdAstra-LD <76622070+AdAstra-LD@users.noreply.github.com> Date: Mon, 16 Jan 2023 10:12:03 +0100 Subject: [PATCH] Better handling of UseScript for functions --- DS_Map/ROMFiles/ScriptFile.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/DS_Map/ROMFiles/ScriptFile.cs b/DS_Map/ROMFiles/ScriptFile.cs index aedbd06..2ae5bef 100644 --- a/DS_Map/ROMFiles/ScriptFile.cs +++ b/DS_Map/ROMFiles/ScriptFile.cs @@ -695,14 +695,19 @@ namespace DSPRE.ROMFiles { } } else { int functionUsescript = currentFunction.usedScript - 1; - if (functionUsescript >= scriptOffsets.Count) { + + //Find script with same ID as the function's referenced UseScript + int scriptUsedByFunction = scriptOffsets.FindIndex(ind => ind.ID == currentFunction.usedScript); + + if (functionUsescript >= scriptOffsets.Count || scriptUsedByFunction < 0) { MessageBox.Show($"Function #{currentFunction.manualUserID} refers to Script {currentFunction.usedScript}, which does not exist.\n" + $"This Script File can't be saved.", "Can't resolve UseScript reference", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } + functionOffsets.Add(new ContainerReference() { ID = currentFunction.manualUserID, - offsetInFile = scriptOffsets[currentFunction.usedScript - 1].offsetInFile + offsetInFile = scriptOffsets[scriptUsedByFunction].offsetInFile }); } }