KAZIK/tools/tests/unavailable_test.inc
Игорь Федосеев eaac8b861e feat: rework artifacts and tower relics
Extend profiles from 280 to 312 bytes with legacy compatibility.
Keep tower relics run-local and share the profile bankroll.
2026-10-30 23:22:19 +03:00

86 lines
2.1 KiB
PHP

.data
; Tower, terminals and observer now have native scenes, not placeholder modals.
unavailableTestIds3D dd INTERACT_ONLINE_RR,INTERACT_UMAMUSUME
unavailableTestCount3D equ ($-unavailableTestIds3D)/4
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,unavailableTestCount3D
jb unavailable_test_next
mov eax,oldMode
mov engineMode,eax
xor eax,eax
ret
unavailable_test_fail:
mov eax,270
ret
RunUnavailableTest3D ENDP