- Darts: native 500-point match against Max with sway/fatigue mouse aim, parabolic throw camera, raster arm animations, and 16 camera-relative flying dart views - AI Observer: autonomous spectator mode for Hold'em, Blackjack, Durak, and Billiards with profile isolation and playback controls - Fortune Session: raster sprite packs, mist/orb animations, tarot divination spreads, and pack tools - Hall Integration: wall dartboard in lounge, observer terminal dispatch, and bot turn hooks - Packaging & Verification: updated installer streaming hash, synchronized launcher, passing check suites and release smoke checks
206 lines
5.6 KiB
PHP
206 lines
5.6 KiB
PHP
|
|
.code
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; TriggerCharmLossProtection: Checks Devil's Contract and Clover to save bet
|
|
; Input: betAmount (DWORD)
|
|
; Output: eax = 1 if saved (bet refunded to bankroll), 0 if not saved
|
|
; ------------------------------------------------------------------------------
|
|
TriggerCharmLossProtection PROC uses ebx ecx edx, betAmount:DWORD
|
|
cmp obsActive3D,0
|
|
jne protection_none
|
|
; 1. Check Devil's Contract (50% chance to refund full bet)
|
|
cmp charmDevilUses, 0
|
|
jle check_clover
|
|
|
|
invoke RandomRange, 100
|
|
cmp eax, 50
|
|
jge check_clover
|
|
|
|
; Devil Contract Triggered!
|
|
dec charmDevilUses
|
|
mov eax, betAmount
|
|
test eax, eax
|
|
jz @F
|
|
add bankroll, eax
|
|
@@:
|
|
invoke CopyString3D, OFFSET msgCharmDevilSave, OFFSET flashMessage
|
|
mov flashTimer, 120
|
|
invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1
|
|
call SaveProgress3D
|
|
mov eax, 1
|
|
ret
|
|
|
|
check_clover:
|
|
; 2. Check Clover of Luck (15% chance to refund bet)
|
|
cmp charmCloverUses, 0
|
|
jle protection_none
|
|
|
|
invoke RandomRange, 100
|
|
cmp eax, 15
|
|
jge protection_none
|
|
|
|
; Clover Triggered!
|
|
dec charmCloverUses
|
|
mov eax, betAmount
|
|
test eax, eax
|
|
jz @F
|
|
add bankroll, eax
|
|
@@:
|
|
invoke CopyString3D, OFFSET msgCharmCloverSave, OFFSET flashMessage
|
|
mov flashTimer, 120
|
|
invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1
|
|
call SaveProgress3D
|
|
mov eax, 1
|
|
ret
|
|
|
|
protection_none:
|
|
xor eax, eax
|
|
ret
|
|
TriggerCharmLossProtection ENDP
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; TriggerCharmWinBonus: Grants +15% extra payout on slot / roulette win
|
|
; Input: winAmount (DWORD)
|
|
; Output: eax = bonus amount added to bankroll, 0 if no horseshoe active
|
|
; ------------------------------------------------------------------------------
|
|
TriggerCharmWinBonus PROC uses ebx ecx edx, winAmount:DWORD
|
|
cmp charmHorseshoeUses, 0
|
|
jle bonus_none
|
|
|
|
mov eax, winAmount
|
|
test eax, eax
|
|
jle bonus_none
|
|
|
|
; Calculate 15% bonus: (winAmount * 15) / 100
|
|
imul eax, 15
|
|
xor edx, edx
|
|
mov ecx, 100
|
|
div ecx
|
|
cmp eax, 1
|
|
jge @F
|
|
mov eax, 1
|
|
@@:
|
|
mov ebx, eax
|
|
add bankroll, ebx
|
|
dec charmHorseshoeUses
|
|
invoke CopyString3D, OFFSET msgCharmHorseshoeWin, OFFSET flashMessage
|
|
mov flashTimer, 120
|
|
invoke PlayCasinoSound3D, OFFSET soundCoin, 0, 1
|
|
call SaveProgress3D
|
|
mov eax, ebx
|
|
ret
|
|
|
|
bonus_none:
|
|
xor eax, eax
|
|
ret
|
|
TriggerCharmWinBonus ENDP
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; TriggerCharmBulletProtection: Protects player from fatal gunshot
|
|
; Output: eax = 1 if saved (bullet misfired), 0 if no skull active
|
|
; ------------------------------------------------------------------------------
|
|
TriggerCharmBulletProtection PROC uses ebx ecx edx
|
|
cmp charmSkullUses, 0
|
|
jle bullet_none
|
|
|
|
dec charmSkullUses
|
|
invoke CopyString3D, OFFSET msgCharmSkullSave, OFFSET flashMessage
|
|
mov flashTimer, 140
|
|
invoke PlayCasinoSound3D, OFFSET rrDrySound3D, 0, 1
|
|
call SaveProgress3D
|
|
mov eax, 1
|
|
ret
|
|
|
|
bullet_none:
|
|
xor eax, eax
|
|
ret
|
|
TriggerCharmBulletProtection ENDP
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; DrawCharmsHUD: Draws active charm badges with remaining charges
|
|
; Input: drawX, drawY (screen coordinates)
|
|
; ------------------------------------------------------------------------------
|
|
DrawCharmsHUD PROC uses ebx esi edi, drawX:DWORD, drawY:DWORD
|
|
local curX:DWORD, tempBuf[16]:BYTE
|
|
|
|
mov eax, charmCloverUses
|
|
or eax, charmHorseshoeUses
|
|
or eax, charmSkullUses
|
|
or eax, charmDevilUses
|
|
test eax, eax
|
|
jz hud_done
|
|
|
|
mov eax, drawX
|
|
mov curX, eax
|
|
|
|
; 1. Clover Badge
|
|
cmp charmCloverUses, 0
|
|
jle check_horse_hud
|
|
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeCloverPrefix, 0080FF80h
|
|
add curX, 32
|
|
invoke FormatNumber, charmCloverUses, ADDR tempBuf
|
|
invoke DrawString8x8, curX, drawY, ADDR tempBuf, 00FFFFFFh
|
|
cmp charmCloverUses, 10
|
|
jb @F
|
|
add curX, 8
|
|
@@:
|
|
add curX, 8
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeCloseBracket, 0080FF80h
|
|
add curX, 16
|
|
|
|
check_horse_hud:
|
|
; 2. Horseshoe Badge
|
|
cmp charmHorseshoeUses, 0
|
|
jle check_skull_hud
|
|
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeHorsePrefix, 00FFE060h
|
|
add curX, 32
|
|
invoke FormatNumber, charmHorseshoeUses, ADDR tempBuf
|
|
invoke DrawString8x8, curX, drawY, ADDR tempBuf, 00FFFFFFh
|
|
cmp charmHorseshoeUses, 10
|
|
jb @F
|
|
add curX, 8
|
|
@@:
|
|
add curX, 8
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeCloseBracket, 00FFE060h
|
|
add curX, 16
|
|
|
|
check_skull_hud:
|
|
; 3. Skull Badge
|
|
cmp charmSkullUses, 0
|
|
jle check_devil_hud
|
|
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeSkullPrefix, 0080FFFFh
|
|
add curX, 32
|
|
invoke FormatNumber, charmSkullUses, ADDR tempBuf
|
|
invoke DrawString8x8, curX, drawY, ADDR tempBuf, 00FFFFFFh
|
|
cmp charmSkullUses, 10
|
|
jb @F
|
|
add curX, 8
|
|
@@:
|
|
add curX, 8
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeCloseBracket, 0080FFFFh
|
|
add curX, 16
|
|
|
|
check_devil_hud:
|
|
; 4. Devil Contract Badge
|
|
cmp charmDevilUses, 0
|
|
jle hud_done
|
|
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeDevilPrefix, 00FF6060h
|
|
add curX, 32
|
|
invoke FormatNumber, charmDevilUses, ADDR tempBuf
|
|
invoke DrawString8x8, curX, drawY, ADDR tempBuf, 00FFFFFFh
|
|
cmp charmDevilUses, 10
|
|
jb @F
|
|
add curX, 8
|
|
@@:
|
|
add curX, 8
|
|
invoke DrawString8x8, curX, drawY, OFFSET badgeCloseBracket, 00FF6060h
|
|
add curX, 16
|
|
|
|
hud_done:
|
|
ret
|
|
DrawCharmsHUD ENDP
|