You have several things you can do:
1. get_live --> what you can do, is return a HUGE value (MOV W0, W29, RET) for example.
//original assembly code
LDR W0, [X0, #0x18]
RET
//patched code
MOV W0, W29
RET
/* how to do this with writeData:
MOV W0, W29 = E0031D2A in HEX
*/
writeData(0x10081C830, 0xE0031D2A);
2. set_live --> this is setting your live when your live value changes
- NOP'ing the STR SHOULD work, since this will result in failing to Store (STR) a new value aka infinite health.
3. BalloonController_onTriggerEnter2D --> I THINK if you RET the top of the function right away (return), it will not know your 2D transform was hit, aka your health won't be effected.
- RET'ing the top of the function, is basically returning the function when it gets executed, so nothing will happen.
4. UpdateLiveCanvas --> I can't see the function, but I assume this handles your live when you get hit? If so, you'll likely see a branch of get_live or set_live & near that, you'll see a SUB
SUB means subtract, so if you change this to a ADD, or a NOP you health will also be hacked.
edit:
Oh also,
test without ifGetPrefBool first, sometimes one typo in the tweak.xm & .plist for the key will make you brain dead as f***.
I also suggest to use smaller key names, it's easier to spot a typo then.
edit 2:
You have my discord, I'm always open to help. Waiting for your topic to be approved may take so much time