protected override void apply(ProcessHandle processHandle) { FixedMemoryAddress currentHeartsAddress = new(new IndirectMemoryAddress(processHandle, MODULE_NAME, CURRENT_HEARTS_OFFSETS).address); //used twice, so don't reevaluate address IndirectMemoryAddress maxHeartsAddress = new(processHandle, MODULE_NAME, MAX_HEARTS_OFFSETS); int currentHearts = MemoryEditor.readFromProcessMemory <int>(processHandle, currentHeartsAddress); int maxHearts = MemoryEditor.readFromProcessMemory <int>(processHandle, maxHeartsAddress); if (currentHearts < maxHearts) { Trace.WriteLine($"Setting health to {maxHearts:N0}..."); MemoryEditor.writeToProcessMemory(processHandle, currentHeartsAddress, maxHearts); } }