KAZIK/tools/tests/unavailable_test.inc
Artvasil09 881a0061dc Add native NPC visitors with contracts, Clover slots, Pyramid, and party table scenes
Implement 32x32 BFS visitor navigation and daily contracts system with companion .npc journals; add native assembly scenes for Clover slots, Pyramid cards, Blackjack Party and Russian Party; package animation and sprite packs; add comprehensive offline test suites and rebuild shipping binaries.
2026-10-13 09:47:33 +03:00

84 lines
2 KiB
PHP

.data
unavailableTestIds3D dd INTERACT_ONLINE_RR,INTERACT_UMAMUSUME,INTERACT_HELL_TOWER,INTERACT_TERMINAL,INTERACT_OBSERVER
unavailableTestPath3D db "build\actions\unavailable.bmp",0
.code
RunUnavailableTest3D PROC uses ebx esi edi
local oldBank:DWORD,oldMode:DWORD,oldX:DWORD,oldY:DWORD,oldAngle:DWORD
mov eax,bankroll
mov oldBank,eax
mov eax,engineMode
mov oldMode,eax
mov eax,playerX
mov oldX,eax
mov eax,playerY
mov oldY,eax
mov eax,playerAngle
mov oldAngle,eax
xor esi,esi
unavailable_test_next:
mov engineMode,MODE_WALK
mov eax,unavailableTestIds3D[esi*4]
mov interactTargetId,eax
call Trigger3DInteraction
cmp engineMode,MODE_UNAVAILABLE
jne unavailable_test_fail
call TableBusy3D
test eax,eax
jnz unavailable_test_fail
; No input: stay open, without blocking the frame loop.
call HandleUnavailable3D
cmp engineMode,MODE_UNAVAILABLE
jne unavailable_test_fail
call RenderUnavailable3D
cmp esi,0
jne @F
invoke WriteActionSnapshot3D,OFFSET unavailableTestPath3D
test eax,eax
jz unavailable_test_fail
@@:
mov eax,esi
and eax,3
cmp eax,3
je unavailable_test_click
mov ebx,20h
cmp eax,0
jne @F
mov ebx,45h
@@:
cmp eax,2
jne @F
mov ebx,0Dh
@@:
mov pressedKeys3D[ebx],1
jmp unavailable_test_close
unavailable_test_click:
mov mouseX3D,160
mov mouseY3D,145
mov mouseClick3D,1
unavailable_test_close:
call HandleUnavailable3D
cmp engineMode,MODE_WALK
jne unavailable_test_fail
mov eax,oldBank
cmp bankroll,eax
jne unavailable_test_fail
mov eax,oldX
cmp playerX,eax
jne unavailable_test_fail
mov eax,oldY
cmp playerY,eax
jne unavailable_test_fail
mov eax,oldAngle
cmp playerAngle,eax
jne unavailable_test_fail
inc esi
cmp esi,5
jb unavailable_test_next
mov eax,oldMode
mov engineMode,eax
xor eax,eax
ret
unavailable_test_fail:
mov eax,270
ret
RunUnavailableTest3D ENDP