RenderRRPartyCharacters3D PROC uses ebx esi edi local px:DWORD,frame:DWORD,ink:DWORD xor ebx,ebx rr_party_draw_guest: cmp ebx,rrPartyCount3D jae rr_party_draw_done mov esi,rrPartyX3D[ebx*4] cmp rrPartyCount3D,2 jne @F imul esi,ebx,200 add esi,132 @@: mov px,esi mov frame,ebx lea edi,[ebx+1] mov ink,00D7C7A4h bt rrPartyAlive3D,edi jnc rr_party_inactive cmp rr3d_turn,edi jne rr_party_draw_body cmp rr3d_state,RR_RAISE je rr_party_active_body cmp rr3d_state,RR_FIRE je rr_party_active_body cmp rr3d_state,RR_DRY jne rr_party_draw_body rr_party_active_body: add frame,3 mov ink,00FFE09Ah rr_party_draw_body: mov animOpacity3D,255 jmp rr_party_body rr_party_inactive: mov ink,00697873h cmp rr3d_turn,edi jne rr_party_caption cmp rr3d_state,RR_DRY jne rr_party_caption mov eax,700 sub eax,rr3d_timer jle rr_party_caption imul eax,255 xor edx,edx mov ecx,700 div ecx mov animOpacity3D,eax rr_party_body: invoke DrawAnimSprite3D,OFFSET rrPartyArt3D,frame,px,48,176,176 rr_party_caption: mov animOpacity3D,255 lea eax,[esi+16] invoke DrawBuckshotText3D,eax,38,rrPartyNames3D[ebx*4],ink mov ecx,OFFSET rrPartyOutText3D bt rrPartyAlive3D,edi jnc @F mov ecx,OFFSET rrPartyAliveText3D cmp rr3d_state,RR_READY je @F cmp rr3d_state,RR_WIN je @F cmp rr3d_turn,edi jne @F mov ecx,OFFSET rrPartyTurnText3D @@: lea eax,[esi+16] invoke DrawBuckshotText3D,eax,230,ecx,ink inc ebx jmp rr_party_draw_guest rr_party_draw_done: mov animOpacity3D,255 ret RenderRRPartyCharacters3D ENDP ; A shared tabletop revolver is passed to the highlighted seat; no extra arm layer. RenderRRPartyGun3D PROC uses ebx local target:DWORD,t:DWORD,px:DWORD,py:DWORD mov ebx,rr3d_turn dec ebx cmp ebx,3 jae rr_party_gun_done mov eax,rrPartyX3D[ebx*4] cmp rrPartyCount3D,2 jne @F imul eax,ebx,200 add eax,132 @@: add eax,88 shr eax,1 mov target,eax mov eax,750 cmp rr3d_state,RR_RAISE jne @F mov eax,rr3d_timer cmp eax,750 jbe @F mov eax,750 @@: mov t,eax mov eax,target sub eax,160 imul eax,t cdq mov ecx,750 idiv ecx add eax,160 mov px,eax mov eax,19 imul eax,t xor edx,edx div ecx mov edx,151 sub edx,eax mov py,edx invoke DrawRouletteSprite3D,0,px,py,98,52,0 rr_party_gun_done: ret RenderRRPartyGun3D ENDP RenderRRPartyControls3D PROC uses ebx esi cmp rrPartyCount3D,1 jbe @F invoke DrawBuckshotText3D,244,414,OFFSET rrPartyPoolText3D,00EBD5A0h mov eax,rrPartyStake3D test eax,eax jnz rr_party_pool_locked mov eax,rr3d_bet rr_party_pool_locked: imul eax,rrPartySize3D invoke DrawBuckshotNumber3D,296,414,eax,00FFFFFFh @@: cmp rr3d_state,RR_READY jne rr_party_controls_done invoke DrawBuckshotText3D,280,462,OFFSET rrPartyCountText3D,00D7C7A4h xor ebx,ebx rr_party_control: mov esi,ebx imul esi,20 add esi,188 mov eax,0025352Dh mov ecx,00766B51h lea edx,[ebx+1] cmp edx,rrPartyCount3D jne @F mov eax,003D6546h mov ecx,00EBD5A0h @@: invoke DrawBoxBorder,esi,226,18,13,eax,ecx,1 lea ecx,rrPartyDigits3D[ebx*2] lea eax,[esi*2+14] invoke DrawBuckshotText3D,eax,462,ecx,00EFE7D4h inc ebx cmp ebx,3 jb rr_party_control rr_party_controls_done: ret RenderRRPartyControls3D ENDP RenderRussianExit3D PROC cmp engineMode,MODE_RUSSIAN jne rr_party_exit_done cmp cardExitActive3D,0 jne rr_party_exit_show cmp rr3d_state,RR_READY je rr_party_exit_show cmp rr3d_state,RR_WIN je rr_party_exit_show cmp rr3d_state,RR_PLAYER jne rr_party_exit_done rr_party_exit_show: call RenderCardExit3D rr_party_exit_done: ret RenderRussianExit3D ENDP