From 4e618ff322cc0a6b1b7b8947983e4055b96e43d2 Mon Sep 17 00:00:00 2001 From: Astatin Date: Fri, 2 May 2025 15:28:14 +0200 Subject: Make stairs avoid bunny room --- map/objects.gbasm | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'map/objects.gbasm') diff --git a/map/objects.gbasm b/map/objects.gbasm index bb3a35a..a79a954 100644 --- a/map/objects.gbasm +++ b/map/objects.gbasm @@ -27,12 +27,27 @@ Find_Free_Object_slot: ; Return free object slot in HL ($80 if none is found) RET +Spawn_object_in_random_room_avoid_bunny: ; Object tile in A, Object jump table id in E, Object pointer in HL + LD (HL+), A + + .retry: + CALL =.retry.entrypoint + JR =.retry + .retry.entrypoint: + LD A, $mem_bunny_current_room_idx + CALL =Pick_Random_Room_Avoid_A + JR =Spawn_object_in_random_room.place_object_in_room_A + Spawn_object_in_random_room: ; Object tile in A, Object jump table id in E, Object pointer in HL LD (HL+), A - .place_in_random_room: + .retry: + CALL =.retry.entrypoint + JR =.retry + .retry.entrypoint: LD A, $mem_number_of_rooms CALL =RNG_Bound + .place_object_in_room_A: SLA A SLA A ADD low($mem_room_list) @@ -69,7 +84,8 @@ Spawn_object_in_random_room: ; Object tile in A, Object jump table id in E, Obje CALL =Is_Collisionable CP $00 - JR NZ, =.place_in_random_room + RET NZ + ADD SP, $02 CALL =Check_other_object_collision CP $00 @@ -139,7 +155,7 @@ Check_other_object_collision: ; Object in HL (with only sprite x & y set), will Spawn_stairs: LD A, $60 LD E, $01 - JP =Spawn_object_in_random_room + JP =Spawn_object_in_random_room_avoid_bunny Spawn_carrot: LD A, $64 -- cgit v1.2.3-70-g09d2