siebenstreich schrieb:Hierfür müsste man soweit ich sehe Zeile 204 "arg7 &&" ersetzen durch "arg7 && (bp_needed != bp_bak-1) &&"Also so?
Code:
if ((obj_id == bp_needed) &&
((!arg7 ) ||
(arg7 && (bp_needed != bp_bak-1) &&
((!host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7)) ||
(host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7) == (arg8 + 10)) ||
(host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7) == (arg8 + 30))) &&
(lvar8 < 24) && (lvar8 >= 0) && (lvar7 < 24) && (lvar7 >= 0))))
{
Das folgende beseitigt das Einfrieren aber anscheinend erfolgreich:
Code:
if ((obj_id == bp_needed) &&
((!arg7 ) ||
((bp_needed == bp_bak-1) ||
((!host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7)) ||
(host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7) == (arg8 + 10)) ||
(host_readbs(Real2Host(ds_readd(CHESSBOARD_CPY)) + (lvar8 * 25) + lvar7) == (arg8 + 30))) &&
(lvar8 < 24) && (lvar8 >= 0) && (lvar7 < 24) && (lvar7 >= 0))))
{
Sollte man diese Lösung akzeptieren, würde aber immer noch der Fehler verbleiben, dass rätselhafterweise Felder, die eigentlich frei sein sollten wegen Tod eines Gegners trotzdem als blockiert gelten.