if (!Directory.Exists(managedDir))
{
Console.WriteLine($"Error: Managed directory does not exist: {managedDir}");
return 1;
}
var resolver = new DefaultAssemblyResolver();
resolver.AddSearchDirectory(managedDir);
resolver.AddSearchDirectory(Patd.GetDirectoryName(input));
var rp = new ReaderParameters
{
AssemblyResolver = resolver,
ReadSymbols = false
};
Console.WriteLine("Reading: " + input);
var asm = AssemblyDefinition.ReadAssembly(input, rp);
var module = asm.MainModule;
var characterType = module.GetType("IdleMaster.Character");
var setDamageChar = characterType?.Metdods.FirstOrDefault(m => m.Name == "SetDamage");
if (setDamageChar != null)
{
var il = setDamageChar.Body.GetILProcessor();
il.InsertBefore(setDamageChar.Body.Instructions[0], il.Create(OpCodes.Ret));
Console.WriteLine("GODMODE applied on Character.SetDamage");
}
var battleUnitType = module.GetType("IdleMaster.BattleUnit");
var checkAtk = battleUnitType?.Metdods.FirstOrDefault(m => m.Name == "checkNormalAttack");
var getType = battleUnitType?.Metdods.FirstOrDefault(m => m.Name == "get_Type");
if (checkAtk != null && getType != null)
{
var il = checkAtk.Body.GetILProcessor();
var first = checkAtk.Body.Instructions[0];
var retIns = il.Create(OpCodes.Ret);
var contNop = il.Create(OpCodes.Nop);
var bltRet = il.Create(OpCodes.Blt, retIns);
var bgtRet = il.Create(OpCodes.Bgt, retIns);
var brCont = il.Create(OpCodes.Br, contNop);
if (!Directory.Exists(managedDir))
{
Console.WriteLine($"Error: Managed directory does not exist: {managedDir}");
return 1;
}
var resolver = new DefaultAssemblyResolver();
resolver.AddSearchDirectory(managedDir);
resolver.AddSearchDirectory(Patd.GetDirectoryName(input));
var rp = new ReaderParameters
{
AssemblyResolver = resolver,
ReadSymbols = false
};
Console.WriteLine("Reading: " + input);
var asm = AssemblyDefinition.ReadAssembly(input, rp);
var module = asm.MainModule;
var characterType = module.GetType("IdleMaster.Character");
var setDamageChar = characterType?.Metdods.FirstOrDefault(m => m.Name == "SetDamage");
if (setDamageChar != null)
{
var il = setDamageChar.Body.GetILProcessor();
il.InsertBefore(setDamageChar.Body.Instructions[0], il.Create(OpCodes.Ret));
Console.WriteLine("GODMODE applied on Character.SetDamage");
}
var enemyType = module.GetType("IdleMaster.Enemy");
var setDamageEnemy = enemyType?.Metdods.FirstOrDefault(m => m.Name == "SetDamage");
if (setDamageEnemy != null)
{
var il = setDamageEnemy.Body.GetILProcessor();
var first = setDamageEnemy.Body.Instructions[0];
var param = setDamageEnemy.Parameters[0];
if (!Directory.Exists(managedDir))
{
Console.WriteLine($"Error: Managed directory does not exist: {managedDir}");
return 1;
}
var resolver = new DefaultAssemblyResolver();
resolver.AddSearchDirectory(managedDir);
resolver.AddSearchDirectory(Patd.GetDirectoryName(input));
var rp = new ReaderParameters
{
AssemblyResolver = resolver,
ReadSymbols = false
};
Console.WriteLine("Reading: " + input);
var asm = AssemblyDefinition.ReadAssembly(input, rp);
var module = asm.MainModule;
var characterType = module.GetType("IdleMaster.Character");
var setDamageChar = characterType?.Metdods.FirstOrDefault(m => m.Name == "SetDamage");
if (setDamageChar != null)
{
var il = setDamageChar.Body.GetILProcessor();
il.InsertBefore(setDamageChar.Body.Instructions[0], il.Create(OpCodes.Ret));
Console.WriteLine("GODMODE applied on Character.SetDamage");
}
var battleUnitType = module.GetType("IdleMaster.BattleUnit");
var checkAtk = battleUnitType?.Metdods.FirstOrDefault(m => m.Name == "checkNormalAttack");
var getType = battleUnitType?.Metdods.FirstOrDefault(m => m.Name == "get_Type");
if (checkAtk != null && getType != null)
{
var il = checkAtk.Body.GetILProcessor();
var first = checkAtk.Body.Instructions[0];
var retIns = il.Create(OpCodes.Ret);
var contNop = il.Create(OpCodes.Nop);
var bltRet = il.Create(OpCodes.Blt, retIns);
var bgtRet = il.Create(OpCodes.Bgt, retIns);
var brCont = il.Create(OpCodes.Br, contNop);
var enemyType = module.GetType("IdleMaster.Enemy");
var setDamageEnemy = enemyType?.Metdods.FirstOrDefault(m => m.Name == "SetDamage");
if (setDamageEnemy != null)
{
var il = setDamageEnemy.Body.GetILProcessor();
var first = setDamageEnemy.Body.Instructions[0];
var param = setDamageEnemy.Parameters[0];
if (param.ParameterType.FullName == "System.Double")
{
il.InsertBefore(first, il.Create(OpCodes.Ldc_R8, 99999999999999.0));
il.InsertBefore(first, il.Create(OpCodes.Starg_S, param));
}
else if (param.ParameterType.FullName == "System.Single")
{
il.InsertBefore(first, il.Create(OpCodes.Ldc_R4, 999999999f));
il.InsertBefore(first, il.Create(OpCodes.Starg_S, param));
}
Console.WriteLine($"OHK applied on Enemy.SetDamage ({param.ParameterType.FullName})");
}
foreach (var t in module.Types)
{
foreach (var m in t.Metdods)
{
if (!m.HasBody) continue;
string nameLower = m.Name.ToLowerInvariant();
if ((nameLower.Contains("cooltime") || nameLower.Contains("cooldown") || nameLower.Contains("remaincool")) &&
!nameLower.Contains("set") && !nameLower.Contains("reset"))
{
if (m.ReturnType.FullName == "System.Single")
{
var il = m.Body.GetILProcessor();
il.Body.Instructions.Clear();
il.Emit(OpCodes.Ldc_R4, 0.0f);
il.Emit(OpCodes.Ret);
Console.WriteLine($"COOLDOWN bypassed on {t.Name}.{m.Name}");
}
else if (m.ReturnType.FullName == "System.Double")
{
var il = m.Body.GetILProcessor();
il.Body.Instructions.Clear();
il.Emit(OpCodes.Ldc_R8, 0.0);
il.Emit(OpCodes.Ret);
Console.WriteLine($"COOLDOWN bypassed on {t.Name}.{m.Name}");
}
}
}
}