Skip to content

Commit 07d0c41

Browse files
committed
rework logic.
1 parent 7edfc84 commit 07d0c41

1 file changed

Lines changed: 20 additions & 23 deletions

File tree

KSPCommunityFixes/BugFixes/ModuleIndexingMismatch.cs

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -411,35 +411,32 @@ static IEnumerable<CodeInstruction> ShipConstruct_LoadShip_Transpiler(IEnumerabl
411411
}
412412
else
413413
{
414-
try
414+
for (int i = 0; i < code.Count - 5; i++)
415415
{
416-
for (int i = 0; i < code.Count - 5; i++)
416+
//// part.LoadModule(configNode2, ref moduleIndex);
417+
// ldloc.s 6
418+
// ldloc.3
419+
// ldloca.s 39
420+
// callvirt instance class PartModule Part::LoadModule(class ConfigNode, int32&)
421+
// pop
422+
// br
423+
if (code[i].opcode == OpCodes.Ldloc_S
424+
&& code[i + 1].opcode == OpCodes.Ldloc_3
425+
&& code[i + 2].opcode == OpCodes.Ldloca_S
426+
&& code[i + 3].opcode == OpCodes.Callvirt && ReferenceEquals(code[i + 3].operand, Part_LoadModule)
427+
&& code[i + 4].opcode == OpCodes.Pop
428+
&& code[i + 5].opcode == OpCodes.Br)
417429
{
418-
//// part.LoadModule(configNode2, ref moduleIndex);
419-
// ldloc.s 6
420-
// ldloc.3
421-
// ldloca.s 39
422-
// callvirt instance class PartModule Part::LoadModule(class ConfigNode, int32&)
423-
// pop
424-
// br
425-
if (code[i].opcode == OpCodes.Ldloc_S
426-
&& code[i + 1].opcode == OpCodes.Ldloc_3
427-
&& code[i + 2].opcode == OpCodes.Ldloca_S
428-
&& code[i + 3].opcode == OpCodes.Callvirt && ReferenceEquals(code[i + 3].operand, Part_LoadModule)
429-
&& code[i + 4].opcode == OpCodes.Pop
430-
&& code[i + 4].opcode == OpCodes.Br)
430+
originalFound = true;
431+
for (int j = i; j < i + 6; j++)
431432
{
432-
originalFound = true;
433-
for (int j = i; j < i + 6; j++)
434-
{
435-
code[j].opcode = OpCodes.Nop;
436-
code[j].operand = null;
437-
}
438-
break;
433+
code[j].opcode = OpCodes.Nop;
434+
code[j].operand = null;
439435
}
436+
break;
440437
}
441438
}
442-
catch
439+
if (!originalFound)
443440
{
444441
code = new List<CodeInstruction>(instructions);
445442
for (int i = 0; i < code.Count - 5; i++)

0 commit comments

Comments
 (0)