やっぱり意味不明…。
発生条件は
ポタで移動する前のマップサイズより、移動後の座標位置が大きい場合。
のようです。
回避方法は
if tm.Block[a][b] = nil then continue;
を
if tm.Block[a][b].MobProcTick < Tick then begin
の前に追加する。
回復速度に関してですが、計算式とデータテーブルを勘違いしてました…。
遅くしてどうするんだ…。
if td.HP2 <> 0 then begin //HP回復速度%
HPDelayFix := HPDelayFix + td.HP2 - 100;
end;
if td.SP2 <> 0 then begin //SP回復速度%
SPDelayFix := SPDelayFix + td.SP2 - 100;
end;
〜略〜
{追加}
for i:=0 to 3 do begin
HPDelay[i] := HPDelay[i] * HPDelayFix div 100;
if HPDelay[i] < 150 then HPDelay[i] := 150;
SPDelay[i] := SPDelay[i] * SPDelayFix div 100;
if SPDelay[i] < 150 then SPDelay[i] := 150;
end;
{追加ココまで}
こんな感じにしておけばいいかと。
これでもダメそうな気がするけど…。