Quote:
Originally Posted by tempandrew
I've tried moving left all around the x coordinate that is affected, and there doesn't seem to be a place where it happens.
|
I can confirm this, as I've spent countless hours trying to figure this **** out myself.
Anyway, here's a workaround, if you want to use it. I've been using it for quite some time. It's not perfect (in a coding way, somewhat hackish), but it emulates the level 3 shield very very well, although the whole thing is a tiny bit faster. I have this code segment running each frame in a timeout:
PHP Code:
// lizard shield
if (clientr.lizardShield && player.freezetime <= 0 && !player.reading) {
temp.lizGanis = { "idle", "walk", "sit", "swim", "carrystill", "carry" };
for (temp.i = 0; i < 4; i++) {
if (!keydown(i))
continue;
if (!(player.ani.name in temp.lizGanis))
continue;
if (!onwall2( player.x + 1.5 + vecx(i) * 33 / 32 - abs(vecy(i)) - (vecx(i) == 1 ? 1 / 32 : 0), player.y + 2 + vecy(i) * 33 / 32 - abs(vecx(i)) - (vecy(i) == 1 ? 1 / 32 : 0), 1 / 16 + abs(vecy(i)) * 31 / 16, 1 / 16 + abs(vecx(i)) * 31 / 16 )) {
player.x += vecx(i) * 1 / 16;
player.y += vecy(i) * 1 / 16;
}
}
}
The onwall2() call is my super-exotic, one-call-complete-check with an integrated hack to work around the issues with onwall2() and Graal's polygon algorithms. It works perfectly fine, but I didn't bother optimizing it yet. I guess if you assign the divisions to this-prefixed variables in the onCreated() event, it will run a bit faster, but I was lazy, sorry.