X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=5956c7d899ca466076188317e162b2fbad6382b1;hb=dc85ad3c5d7d4a49cb5dbbed71c93f6649f4bccc;hp=2f2b0381cd79d02f3e6f12b28bf248b4e196359f;hpb=30d4bba6b5c11c262a79d442b67defe7eba9bfde;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 2f2b0381..5956c7d8 100644 --- a/src/game.c +++ b/src/game.c @@ -1222,47 +1222,60 @@ void InitGame() { int start_x = 0, start_y = 0; int found_rating = 0; + int found_element = EL_UNDEFINED; - for(y=0; y < lev_fieldy; y++) + for(y=0; y < lev_fieldy; y++) for(x=0; x < lev_fieldx; x++) { - for(x=0; x < lev_fieldx; x++) + int element = Feld[x][y]; + int content; + int xx, yy; + boolean is_player; + + if (!IS_CUSTOM_ELEMENT(element)) + continue; + + if (CAN_CHANGE(element)) { - int element = Feld[x][y]; + content = element_info[element].change.target_element; + is_player = (ELEM_IS_PLAYER(content) || content == EL_SP_MURPHY); - if (IS_CUSTOM_ELEMENT(element)) + if (is_player && (found_rating < 3 || element < found_element)) { - int xx, yy; + start_x = x; + start_y = y; - for(yy=0; yy < 3; yy++) - { - for(xx=0; xx < 3; xx++) - { - int content; - boolean is_player; + found_rating = 3; + found_element = element; + } + } - content = element_info[element].content[xx][yy]; - is_player = (ELEM_IS_PLAYER(content) || content == EL_SP_MURPHY); + for(yy=0; yy < 3; yy++) for(xx=0; xx < 3; xx++) + { + content = element_info[element].content[xx][yy]; + is_player = (ELEM_IS_PLAYER(content) || content == EL_SP_MURPHY); + + if (is_player && (found_rating < 2 || element < found_element)) + { + start_x = x + xx - 1; + start_y = y + yy - 1; - if (is_player && found_rating < 2) - { - start_x = x + xx - 1; - start_y = y + yy - 1; + found_rating = 2; + found_element = element; + } - found_rating = 2; - } + if (!CAN_CHANGE(element)) + continue; - content = element_info[element].change.content[xx][yy]; - is_player = (ELEM_IS_PLAYER(content) || content == EL_SP_MURPHY); + content = element_info[element].change.content[xx][yy]; + is_player = (ELEM_IS_PLAYER(content) || content == EL_SP_MURPHY); - if (is_player && found_rating < 1) - { - start_x = x + xx - 1; - start_y = y + yy - 1; + if (is_player && (found_rating < 1 || element < found_element)) + { + start_x = x + xx - 1; + start_y = y + yy - 1; - found_rating = 1; - } - } - } + found_rating = 1; + found_element = element; } } }