やっぱり意味不明…。
発生条件は
ポタで移動する前のマップサイズより、移動後の座標位置が大きい場合。
のようです。
回避方法は
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;
{追加ココまで}
こんな感じにしておけばいいかと。
これでもダメそうな気がするけど…。
//--------------------------------------------------------------------------
$007d: //MAPロード完了
begin
tm := Map.Objects[Map.IndexOf(tc.Map)] as TMap;
while tm.Mode < 2 do
Application.ProcessMessages;
if tc.tmpMap <> '' then begin
tc.Map := tc.tmpMap;
tc.tmpMap := '';
end;
tc.MData := tm;
if CharaPID.IndexOf(tc.PID) = -1 then CharaPID.AddObject(tc.PID, tc);
移動時の範囲チェックエラーの個所が2つ出ましたので、下記に記したいと思います。
お役に立てれますかどうかは判りませんが、皆様方の何かのご助力になれれば幸いです。
main.pas
if (tc.MMode = 0) and (tm.gat[NextPoint.X][NextPoint.Y] <> 0) then begin
game.pas
tm.Block[tc.Point.X div 8][tc.Point.Y div 8].CList.AddObject(tc.PID, tc);
>92
ある程度ソースを居れては抜いてのテストしていた時にですが、
>90のソースに差し替えない状態で、気づいた時にはポータル移動時のエラーが出なくなりました。
此方では独自に変更した点も無かったので、理由が判りません(汗
もう少し時間をかけて見ていきたいと思います。
>88
追加〜追加ここまでの中のソースも一緒に差し替えた所、
回復速度が前の時と同じくカードの適用がされていないようです。
if td.HP1 <> 0 then begin //MAXHP%(1001以上で+)
if td.HP1 > 1000 then begin
MAXHP := MAXHP + (td.HP1 - 1000);
end else Inc(MAXHPPer,(td.HP1-100));
end;
if td.HP2 <> 0 then begin //HP回復速度%
HPDelayFix := HPDelayFix + td.HP2 - 100;
end;
if td.SP1 <> 0 then begin //MAXSP%(1001以上で+)
if td.SP1 > 1000 then begin
MAXSP := MAXSP + (td.SP1 - 1000);
end else Inc(MAXSPPer,(td.SP1-100));
end;
if td.SP2 <> 0 then begin //SP回復速度%
SPDelayFix := SPDelayFix + td.SP2 - 100;
end;
end;
end;
//------------------------------------------------------------------------------
替えた個所はここのみで正常に機能が働いたので、(カード・自然回復共)
後者の追加内部は変更せず、U0x003のままで問題無いと思います。
追加内部だけを変更しない事で、
何かの不具合が生じてしまう様でしたら話は別になってしまうのですが…
お忙しいこと重々承知しておりますが、もしお時間取れます様でしたら
此方の方ご確認頂ければ幸いです。
引き続き、他の変更個所も調べていきたいと思います。