全体の作りがわからない部分があるので的外れになるかもしれませんが、
オブジェクトO_step1がroom内に複数配置されていて、
playerオブジェクトがそれを踏むと✘が◯に、◯が✘に変わる(spriteが変わる)
という前提で考えてみます。
object_get_sprite()
object_set_sprite()
は、オブジェクトアセットのspriteを取得/セットする関数です。
(インスタンスではないというのが要です)
これのせいでロジックがおかしくなっていて意図通りに動かなくなっているように思います。
インスタンスのspriteを取得/セットするには、
sprite_indexでできます(これはインスタンスが持つ読み書き可の変数です)。
sprite_indexの更新だけでできるはずなので、これを踏まえて考えてみてください。
通報 ...
sprite_indexで試してみたところ想定している挙動どうりになりました!
ありがとうございます!!