n-ko wrote: ↑Fri Mar 04, 2022 12:34 pm
Sad to see "Set Monster HP to Zero" go. Slidehack results in game error null pointer exception in game. CE stops responding after using this table and CE speedhack if speedhack is activated after table. Also had some glitches that I couldn't immediately reproduce (long wait times to change levels after killing bosses with certain settings). I will poke around some more and report findings. Perhaps it is time to learn how all this stuff actually works.
I am working on a better script for monster Hp.
I currently found 2 addresses that are handling the monster health, I can set it very low, so at stage level 1800, the monsters having 200e+ hp instead of 500e+++
The thing is, they are using very complex math tasks to handle their health.
The health is actually a weird high 8byte.
We can set the number to 0, monsters having 0 hp. even on 2000, but you can't kill anything.(0/-18hp, on lvl1)
so, I am looking for the instruction that allow us to kill monster with 0 or minus hp.
I did dump their Engine.Numeric.Quad and saw their crazy math obfuscating.
For every math task, they are using "roots, add, sub" etc.
They have rewritten every method for rounds, minus, plus, etc.
There you can see, highest and lowest number possible.
Don't forget, it's a quadword.
public static Quad Round(Quad value)
{
if (value.Exponent <= -9223372036854775805L)
return value;
if (value.Exponent <= -65L)
return Quad.Zero;
if (value.Exponent >= 0L)
return value;
bool flag = (value.SignificandBits & 9223372036854775808UL) > 0UL;
if (value.Exponent == -64L)
return !flag ? Quad.One : Quad.NegativeOne;
ulong num = value.SignificandBits & (ulong) ((1L << (int) -value.Exponent) - 1L);
if (num == 0UL || ((long) num & 1L << (int) (-value.Exponent - 1L)) == 0L)
return new Quad(value.SignificandBits >> (int) -value.Exponent << (int) -value.Exponent, value.Exponent);
return flag ? new Quad(value.SignificandBits >> (int) -value.Exponent << (int) -value.Exponent, value.Exponent) - (Quad) 1 : new Quad(value.SignificandBits >> (int) -value.Exponent << (int) -value.Exponent, value.Exponent) + (Quad) 1;
}