PixelShift seems pretty good, with my experience with it.
Simba Code:
Function PixelCheck: Integer;
var
Player: TBox;
begin
Player.X1 := MSCX-10;
Player.X2 := MSCX+10;
Player.Y1 := MSCY-10;
Player.Y2 := MSCY+10;
Result := PixelShift(Player , RandomRange(100, 200));
if (Result > 150) then
Status('Pixel Shift = ' + IntToStr(Result) + '. Still fighting.')
else
Status('Pixel Shift = ' + IntToStr(Result));
end;
Function IsFighting: Boolean;
begin
if (PixelCheck > 150) then
MarkTime(FightTime)
else
begin
if (Check = 0) then
begin
IncEx(Wait1, 150);
IncEx(Wait2, 200);
end;
Inc(Check);
end;
Result := (TimeFromMark(FightTime) < RandomRange(Wait1, Wait2));
end;
Check, Wait1, Wait2 are all reset at the beginning of each fighting loop; after it finishes a fight. They are global vars because of that. I've only tested this with Melee, and it has to be the highest angle.