diff --git a/Templates/BaseGame/game/core/utility/scripts/module.cs b/Templates/BaseGame/game/core/utility/scripts/module.cs index 7d6cc5eed..54cd33b2e 100644 --- a/Templates/BaseGame/game/core/utility/scripts/module.cs +++ b/Templates/BaseGame/game/core/utility/scripts/module.cs @@ -124,14 +124,16 @@ function SimSet::registerDatablock(%scopeSet, %datablockFilePath, %isExclusive) if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts)) error("found" SPC %datablockFilePath SPC "duplicate file!"); if (!%locked || (%locked && %isExclusive)) - { - DatablockFilesList.erase(%i); + { // Replacing an existing entry, update in-place + DatablockFilesList.setKey(%fullPath, %i); + DatablockFilesList.setValue(%isExclusive, %i); + %locked = true; //Done, but don't return and bypass trace logging below } + break; } } - //if we're not locked, or we are exclusive, go ahead and add it to the pile - //(ensures exclusives get re-added after that erasure) - if (!%locked || %isExclusive) + //if we're not locked, go ahead and add it to the pile + if (!%locked) DatablockFilesList.add(%fullPath,%isExclusive); if ($traceModuleCalls) DatablockFilesList.echo(); @@ -222,14 +224,16 @@ function SimSet::queueExec(%scopeSet, %execFilePath, %isExclusive) if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts)) error("found" SPC %execFilePath SPC "duplicate file!"); if (!%locked || (%locked && %isExclusive)) - { - ExecFilesList.erase(%i); + { // Replacing an existing entry, update in-place + ExecFilesList.setKey(%fullPath, %i); + ExecFilesList.setValue(%isExclusive, %i); + %locked = true; //Done, but don't return and bypass trace logging below } + break; } } - //if we're not locked, or we are exclusive, go ahead and add it to the pile - //(ensures exclusives get re-added after that erasure) - if (!%locked || %isExclusive) + //if we're not locked, go ahead and add it to the pile + if (!%locked) ExecFilesList.add(%fullPath,%isExclusive); if ($traceModuleCalls) ExecFilesList.echo();