diff --git a/.gitignore b/.gitignore index 8568fc9..d088235 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ __pycache__/ *.obj /tools/vendor/ /tools/generated_frames/ +/graphify-out/ # Generated build/test output; keep packaging source and shipping exe files. /build/actions/ diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index b5a8caf..dae3eeb 100644 Binary files a/build/graphics/poker.exe and b/build/graphics/poker.exe differ diff --git a/casino3d.inc b/casino3d.inc index 2903f96..0f9d88e 100644 --- a/casino3d.inc +++ b/casino3d.inc @@ -167,6 +167,7 @@ include src_graphics\unavailable_data.inc include src_graphics\native_slots_data.inc include src_graphics\native_clover_data.inc include src_graphics\native_coin_data.inc +include src_graphics\hell_tower_data.inc .data ALIGN 4 @@ -204,6 +205,7 @@ playerPlaneX dd (FP_1 * 66 / 100) playerPlaneY dd 0 engineMode dd 0 +startInHellTower dd 0 interactTargetId dd 0 interactPromptPtr dd 0 dancerLuckBuff dd 0 @@ -3226,6 +3228,24 @@ dice_roll_lost: ret dice_handle_result: + cmp tournamentMode, 1 + jne @F + invoke Pressed3D, 20h + test eax, eax + jnz dice_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz dice_tourney_report + ret +dice_tourney_report: + cmp dice3d_win, 0 + je dice_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +dice_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +@@: invoke Pressed3D, 20h test eax, eax jz dice_done @@ -3660,6 +3680,24 @@ skulls_pick_3: ret skulls_handle_reveal: + cmp tournamentMode, 1 + jne @F + invoke Pressed3D, 20h + test eax, eax + jnz skulls_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz skulls_tourney_report + ret +skulls_tourney_report: + cmp skulls3d_win, 0 + je skulls_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +skulls_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +@@: invoke Pressed3D, 20h test eax, eax jz skulls_input_done @@ -4275,6 +4313,24 @@ skill_handle_round_wait: ret skill_handle_end_wait: + cmp tournamentMode, 1 + jne @F + invoke Pressed3D, 20h + test eax, eax + jnz skill_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz skill_tourney_report + ret +skill_tourney_report: + cmp skill3d_state, 4 + jne skill_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +skill_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +@@: invoke Pressed3D, 20h test eax, eax jz skill_input_done @@ -4796,7 +4852,7 @@ check_target_umamusume: check_target_hell: cmp eax, INTERACT_HELL_TOWER jne check_target_shop - call BeginUnavailable3D + call InitHellTower3D ret check_target_shop: @@ -5153,8 +5209,15 @@ include src_graphics\billiards.inc include src_graphics\buckshot.inc include src_graphics\russian_table.inc include src_graphics\unavailable.inc +include src_graphics\hell_tower.inc ; --- Main Loop of the 3D Casino Engine --- +StartHellTower3D PROC uses ebx esi edi + mov startInHellTower, 1 + call StartCasino3D + ret +StartHellTower3D ENDP + StartCasino3D PROC uses ebx esi edi call Init3DEngine test eax, eax @@ -5162,6 +5225,10 @@ StartCasino3D PROC uses ebx esi edi invoke timeGetTime mov rngSeed3D, eax mov previousTick3D, eax + cmp startInHellTower, 1 + jne engine_loop + mov startInHellTower, 0 + call InitHellTower3D engine_loop: invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE test eax, eax @@ -5223,6 +5290,11 @@ leave_table: jmp engine_tick leave_idle_table: mov paused3D, 0 + cmp tournamentMode, 1 + jne @F + call TowerExitToHall + jmp engine_tick +@@: mov engineMode, MODE_WALK call ClearKeys3D invoke PlayCasinoSound3D, 0, 0, 0 @@ -5264,6 +5336,12 @@ check_walk_mode: call RenderMinimap jmp present_frame check_slots_mode: + cmp engineMode, MODE_HELL_TOWER + jne @F + call HandleHellTowerInput + call RenderHellTower3D + jmp present_frame +@@: cmp engineMode,MODE_CLOVER jne @F call HandleNativeClover3D @@ -5458,6 +5536,7 @@ pause_low_spec_saved: call SaveProgress3D jmp engine_shutdown present_frame: + call RenderTowerInGameBadge mov eax, engineMode cmp eax, lastPersistMode3D je @F diff --git a/poker.asm b/poker.asm index 19b6ac6..09a7a09 100644 --- a/poker.asm +++ b/poker.asm @@ -108,7 +108,7 @@ UnlockAchievement PROTO :DWORD, :DWORD ShowBestiaryPage PROTO :DWORD, :DWORD, :DWORD .data -; === Ãëîáàëüíûå äåñêðèïòîðû, áóôåðû êîíñîëè, RNG è âðåìåííàÿ ïàìÿòü === + hOut dd 0 hIn dd 0 charsWritten dd 0 @@ -118,43 +118,17 @@ printLen dd 0 wideLen dd 0 seed dd 0 inputBuffer db 32 dup(0) -cheatBuffer db 32 dup(0) wideBuffer dw 4096 dup(0) utf8Buffer db 8192 dup(0) -frameBuffer db 32768 dup(0) deckUsed db 52 dup(0) -onlineWsaData db 400 dup(0) -onlineAddr db 16 dup(0) -onlineIp db 32 dup(0) -onlineListenSock dd -1 -onlinePeerSock dd -1 -onlineWsaReady dd 0 -onlinePacket dd 0, 0 -onlineLocalRoll dd 0 -onlineRemoteRoll dd 0 -onlineGameMode dd 0 -onlineHostIp dd 0 -onlineAction dd 1 consoleRectTiny dw 0, 0, 119, 34 consoleRect160 dw 0, 0, 159, 44 consoleRect140 dw 0, 0, 139, 39 consoleRect120 dw 0, 0, 119, 34 ; === Îáùèå ñ÷åò÷èêè î÷êîâ è ñîñòîÿíèå ñòàðûõ êàðòî÷íûõ ðåæèìîâ === -playerTotal dd 0 -dealerTotal dd 0 -playerAces dd 0 -dealerAces dd 0 -playerCards dd 0 -; === Ñîñòîÿíèå CloverPit / ñëîò-ìàøèí: ñåòêà, âûïëàòû, êîìáèíàöèè === -slotA dd 0 -slotB dd 0 -slotC dd 0 -slotD dd 0 -slotE dd 0 slotMatch dd 0 slotWinMask dd 0 -slotCurrentCell dd 0 slotBestMultiplier dd 0 slotComboNamePtr dd 0 slotBlockMask dd 0 @@ -164,27 +138,9 @@ slotComboNames dd 32 dup(0) slotComboMults dd 32 dup(0) slotComboMasks dd 32 dup(0) slotGrid dd 15 dup(0) -slotVisible dd 0 -; === Îáùàÿ êàðòî÷íàÿ ìîäåëü: ðóêè èãðîêà, AI è êàðòû íà ñòîëå === -playerHand21 dd 10 dup(0) -aiHand21 dd 10 dup(0) -communityHand dd 5 dup(0) -pokerPlayerEvalHand dd 7 dup(0) -pokerAIEvalHand dd 7 dup(0) -playerCnt21 dd 0 -aiCnt21 dd 0 -communityCnt dd 0 -revealAI21 dd 0 -dangerLvl21 dd 0 -cardsLeft21 dd 0 rowIndex dd 0 -pokerPlayerScore dd 0 -pokerAIScore dd 0 -pokerEvalCount dd 0 -; === Ýêîíîìèêà àêêàóíòà: áàíê, öåëü, ñòàâêà è ÷èò-ôëàãè === bankroll dd 10000 targetBank dd 50000 -currentBet dd 0 cheatLuckyWin dd 0 cheatGodMode dd 0 cheatSlotJackpot dd 0 @@ -192,36 +148,16 @@ settingsVolume dd 10 settingsLowSpec dd 0 settingsIntroEnabled dd 1 settingsDbdWindowEnabled dd 0 -animFrameCounter dd 0 -animWidth dd 0 -animHeight dd 0 secretEndingSeen dd 0 vipTaxAmount dd 0 ; === Êðóïüå-êîììåíòàòîð: ÷òåíèå ôðàç èç dealer_phrases.txt === -dealerFileHandle dd 0 -dealerLineLen dd 0 -dealerPhraseCount dd 0 -dealerPhrasePick dd 0 -dealerScanMode dd 0 -dealerWantedTag db 0 -; === Ìàãàçèí: êóïëåííûå ðóáàøêè, âûáðàííàÿ ðóáàøêà è òàëèñìàíû === shopBackOwned dd 1 shopBackStyle dd 0 shopCharmLevel dd 0 shopCharmUses dd 0 achievements dd 0 -pokerRaiseAmount dd 0 -pokerAIRaiseAmount dd 0 -; === Ôàéëû, àêêàóíòû, ñîõðàíåíèÿ, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ === saveHandle dd 0 -achievementHandle dd 0 findHandle dd 0 -danceHandle dd 0 -danceBytes dd 0 -frameBytes dd 0 -introLoopSeen dd 0 -introSkipLoop dd 0 -accountCount dd 0 selectedAccount dd 0 accountNameLen dd 0 saveBuffer dd 80 dup(0) @@ -236,25 +172,10 @@ gameStatsPlayed dd 11 dup(0) gameStatsWon dd 11 dup(0) gameStatsLost dd 11 dup(0) gameStatsDraw dd 11 dup(0) -leaderBestBank dd 0 -leaderBestWins dd 0 -leaderBestLosses dd 0 -leaderValidCount dd 0 -leaderScanIndex dd 0 leaderAccountPtr dd 0 -leaderBestGameWins dd 11 dup(0) -leaderBestGameLosses dd 11 dup(0) -leaderBestBankName db 64 dup(0) -leaderBestWinsName db 64 dup(0) -leaderBestLossName db 64 dup(0) -leaderBestGameWinNames db 11 dup(64 dup(0)) -leaderBestGameLossNames db 11 dup(64 dup(0)) -; === Íàñòðîéêè ñëîæíîñòè, âðåìåííûå ïåðåìåííûå ïîêåðà è ìèíè-èãð === aiDifficulty dd 2 bankRecovered dd 0 saveTampered dd 0 -pokerReplaceIndex dd 0 -pokerReplaced dd 0 pokerStraight dd 0 pokerFlush dd 0 pokerHigh dd 0 @@ -263,56 +184,6 @@ pokerTrip dd 0 pokerPairHigh dd 0 pokerPairLow dd 0 ; === ×åðåïà è øàðèê: ïîçèöèÿ øàðèêà, âûáîð è ÷èñëî ïåðåìåøèâàíèé === -skullBallPos dd 0 -skullGuess dd 0 -skullStep dd 0 -skullMax dd 0 -; === Ðóññêàÿ ðóëåòêà: áàðàáàí, ïàòðîíû, õîä è ìíîæèòåëü === -rrBulletMask dd 0 -rrBullets dd 0 -rrChamber dd 0 -rrTurn dd 0 -rrPayout dd 0 -; === Buckshot Roulette: ïàòðîíû, çäîðîâüå, ïðåäìåòû è ñîñòîÿíèå õîäà === -bsShells dd 8 dup(0) -bsShellIndex dd 0 -bsShellCount dd 0 -bsLiveCount dd 0 -bsBlankCount dd 0 -bsPlayerHP dd 0 -bsAIHP dd 0 -bsTurn dd 0 -bsDamage dd 1 -bsKnownShell dd 0FFFFFFFFh -bsSkipPlayer dd 0 -bsSkipAI dd 0 -bsPlayerGlass dd 0 -bsPlayerSaw dd 0 -bsPlayerBeer dd 0 -bsPlayerCuffs dd 0 -bsAIGlass dd 0 -bsAISaw dd 0 -bsAIBeer dd 0 -bsAICuffs dd 0 -bsTarget dd 0 -bsShell dd 0 -bsAction dd 0 -; === Ìèíè-èãðû îðåë/ðåøêà, êîñòè è êàçèíî-ðóëåòêà === -coinPick dd 0 -coinResult dd 0 -diceA dd 0 -diceB dd 0 -diceSum dd 0 -diceChoice dd 0 -casinoRouletteBetType dd 0 -casinoRouletteBetNumber dd 0 -casinoRouletteResult dd 0 -casinoRouletteResultIndex dd 0 -casinoRouletteSpinIndex dd 0 -casinoRouletteSpinSteps dd 0 -casinoRouletteSpinCounter dd 0 -casinoRouletteVisibleCount dd 0 -; === Äóðàê: ðóêè, êîëîäà, êîçûðü, ñòîë àòàêè è çàùèòû === durakPlayerHand dd 40 dup(0) durakAIHand dd 40 dup(0) durakPlayerCnt dd 0 @@ -320,41 +191,18 @@ durakAICnt dd 0 durakDeckLeft dd 0 durakTrumpCard dd 0 durakTrumpSuit dd 0 -durakAttackCard dd 0FFFFFFFFh -durakDefenseCard dd 0FFFFFFFFh -durakPlayerTurn dd 1 -durakChoice dd 0 durakTableCnt dd 0 durakAttackCards dd 6 dup(0) durakDefenseCards dd 6 dup(0FFFFFFFFh) -durakTempHand dd 6 dup(0) -durakSafeTurns dd 0 -durakLoopGuard dd 0 -; === Skill Check, ñòðåññ, ïîäîçðåíèå êàçèíî è òóðíèð-áàøíÿ === -skillNeedle dd 0 -skillDir dd 1 -skillSuccessStart dd 0 -skillSuccessEnd dd 0 -skillPerfectPos dd 0 -skillGaugeIndex dd 0 -skillFrameCount dd 0 -skillHits dd 0 -skillMisses dd 0 -skillResult dd 0 -skillPerfects dd 0 -skillDelay dd 45 casinoSuspicion dd 0 stressLevel dd 0 lastGameResult dd 0 -tournamentStage dd 0 tournamentMode dd 0 dailyDateKey dd 0 dailyRewardMask dd 0 dailyProgressPacked dd 0 dailyTaskPacked dd 0 systemTime dw 8 dup(0) -pulseCycles dd 0 -; === Âðåìåííûå ñ÷åò÷èêè ðàíãîâ è ìàñòåé äëÿ îöåíêè ïîêåðà === rankCounts db 13 dup(0) suitCounts db 4 dup(0) @@ -363,2001 +211,7 @@ nl db 13,10,0 dotSpaceText db ". ",0 clearLines db 13,10,13,10,13,10,13,10,13,10,13,10,0 -titleText db "==============================",13,10 - db " ASSEMBLER CASINO",13,10 - db "==============================",13,10,0 -menuText db "1. Ìàãàçèí",13,10 - db "2. 21 / Î÷êî",13,10 - db "3. Poker",13,10 - db "4. CloverPit",13,10 - db "5. ×åðåïà è øàðèê",13,10 - db "6. Ðóññêàÿ ðóëåòêà",13,10 - db "7. Îðåë è ðåøêà",13,10 - db "8. Êîñòè",13,10 - db "9. Êàçèíî-ðóëåòêà",13,10 - db "10. Slot machine",13,10 - db "11. Äóðàê",13,10 - db "12. Êðþê: Skill Check",13,10 - db "13. Buckshot Roulette",13,10 - db "14. Íàáëþäàòåëü AI vs AI",13,10 - db "15. Îáó÷åíèå",13,10 - db "16. Äîñòèæåíèÿ",13,10 - db "17. Ñòàòèñòèêà ïî èãðàì",13,10 - db "18. Åæåäíåâíûå çàäàíèÿ",13,10 - db "19. Íàñòðîéêè",13,10 - db "20. Online Casino (Radmin)",13,10 - db "21. Umamusume Ñêà÷êè",13,10 - - db "25. 3D-ÊÀÇÈÍÎ (DOOM / Wolf3D Raycaster 2.5D) [NEW]",13,10 - - db "0. Exit",13,10,0 -choiceText db "Âûáîð: ",0 -badChoiceText db "Íåò òàêîãî ïóíêòà.",13,10,0 -accountMenuText db "1. Âîéòè â àêêàóíò",13,10 - db "2. Ñîçäàòü àêêàóíò",13,10,0 -accountPromptText db "Ââåäèòå èìÿ àêêàóíòà ëàòèíèöåé: ",0 -accountBadText db "Èìÿ äîëæíî ñîäåðæàòü õîòÿ áû îäíó áóêâó èëè öèôðó.",13,10,0 -accountLoginText db "Àêêàóíò çàãðóæåí: ",0 -accountCreateText db "Àêêàóíò ñîçäàí: ",0 -accountListTitle db "Âûáåðèòå àêêàóíò:",13,10,0 -accountNoFilesText db "Ñîõðàíåííûõ àêêàóíòîâ ïîêà íåò.",13,10,0 -accountSelectText db "Íîìåð àêêàóíòà: ",0 -pauseText db 13,10,"Íàæìèòå ëþáóþ êëàâèøó...",0 -bankText db "Âàø áàíê: $",0 -betText db "Ââåäèòå ñòàâêó: $",0 -betChosenText db "Âû ïîñòàâèëè $",0 -badBetText db "Ñòàâêà äîëæíà áûòü ÷èñëîì áîëüøå 0.",13,10,0 -tooBigBetText db "Ó âàñ íåò ñòîëüêî äåíåã.",13,10,0 -suspicionText db "Ïîäîçðåíèå êàçèíî: ",0 -suspicionCalmText db "òèõî",13,10,0 -suspicionWatchText db "çà òîáîé ñìîòðÿò",13,10,0 -suspicionHuntText db "îõðàíà ðÿäîì",13,10,0 -suspicionUpText db "Ïîäîçðåíèå âûðîñëî.",13,10,0 -suspicionFineText db "Îõðàíà çàìåòèëà ìóòíóþ èãðó. Øòðàô: $",0 -stressText db "Ñòðåññ ñòàâêè: ",0 -stressLowText db "ñïîêîéíî",13,10,0 -stressMidText db "ïóëüñ ðàñòåò",13,10,0 -stressHighText db "ðóêè äðîæàò",13,10,0 -stressMaxText db "ïàíèêà",13,10,0 -cheatMoveText db "Øóëåðñòâî: 3 - ïîäñìîòðåòü, 4 - ïîäìåíèòü êàðòó.",13,10,0 -cheatPeekText db "Òû íåçàìåòíî ïîäñìîòðåë êàðòó:",13,10,0 -cheatSwapText db "Òû ïîäìåíèë êàðòó ïîä ðóêàâîì.",13,10,0 -cheatNoTargetText db "Ñåé÷àñ íå÷åãî ïîäìåíÿòü.",13,10,0 -tournamentTitle db 13,10,"--- Ñåêðåòíûé ðåæèì: Àäñêàÿ áàøíÿ ---",13,10,0 -tournamentIntro db "Àäñêàÿ áàøíÿ êàçèíî: 10 ýòàïîâ ïîäðÿä. Ïðîèãðàë - íà÷èíàåøü çàíîâî.",13,10 - db "Âõîä ñêðûò. Êîä 666 ïðèíÿò. Ìóçûêó ìîæíî ìåíÿòü êëàâèøåé M ïåðåä ýòàïîì.",13,10,0 -tournamentStageText db 13,10,"Ýòàï áàøíè: ",0 -tournamentMusicHint db "M - ñëó÷àéíî ñìåíèòü ìóçûêó áàøíè, ëþáàÿ äðóãàÿ êëàâèøà - íà÷àòü ýòàï",13,10,0 -secretHellText db 13,10,"Ñåêðåòíûé êîä ïðèíÿò. Êàçèíî îïóñêàåò òåáÿ â Àäñêóþ áàøíþ...",13,10,0 -hellStageCurseText db "Ïðîêëÿòèå ýòàïà: ",0 -hellCurse1 db "êðóïüå áîëüøå íå ìîðãàåò.",13,10,0 -hellCurse2 db "ìóçûêà èãðàåò, äàæå åñëè òû ïðîèãðûâàåøü.",13,10,0 -hellCurse3 db "êàæäàÿ ñòàâêà ïàõíåò ñåðîé.",13,10,0 -hellCurse4 db "îõðàííèê óæå çíàåò òâîå èìÿ.",13,10,0 -tournamentFailText db 13,10,"Àäñêàÿ áàøíÿ çàêðûëà äâåðè. Òóðíèð íà÷èíàåòñÿ çàíîâî.",13,10,0 -tournamentWinText db 13,10,"ÒÛ ÂÛÆÈË Â ÀÄÑÊÎÉ ÁÀØÍÅ! Ñåêðåòíûé áîíóñ: $66600",13,10,0 -tournamentFire1 db 13,10," . * .",13,10," ASSEMBLER CASINO",13,10," . | .",13,10," ___ /---\ ___",13,10," /___\ | T | /___\",13,10,0 -tournamentFire2 db 13,10," * \ | / \ | / *",13,10," -- TOWER CLEARED --",13,10," * / | \ / | \ *",13,10," ___ /---\ ___",13,10," /___\ | 10| /___\",13,10,0 -tournamentFire3 db 13,10," * . * . * . * . * . * . *",13,10," $$$ FIREWORKS $$$",13,10," . * . * . * . * . * . * .",13,10," \ \ | / /",13,10," \__\_|_/__/",13,10,0 -tournamentFire4 db 13,10," ============ JACKPOT SKY ============",13,10," * * * * *",13,10," * CASINO CHAMPION *",13,10," * * * * *",13,10," =====================================",13,10,0 -dailyTitle db 13,10,"--- Åæåäíåâíûå çàäàíèÿ ---",13,10,0 -dailyIntro db "Êàæäûé êàëåíäàðíûé äåíü êàçèíî âûáèðàåò 3 çàäàíèÿ èç 40.",13,10,0 -dailyDateText db "Äàòà çàäàíèÿ: ",0 -dailyPoolText db "Ïóë çàäàíèé: 40. Ñåãîäíÿ âûáðàíî: 3",13,10,0 -dailySlashText db " / ",0 -dailyRewardText db " Íàãðàäà: $",0 -dailyClaimText db "Åæåäíåâíàÿ íàãðàäà ïîëó÷åíà: +$",0 -dailyDoneText db " [ïîëó÷åíî]",13,10,0 -dailyOpenText db " [â ïðîöåññå]",13,10,0 -settingsTitle db 13,10,"--- Íàñòðîéêè êàçèíî ---",13,10,0 -settingsMenuText db "1. Òèøå",13,10 - db "2. Ãðîì÷å",13,10 - db "3. Ïðîôèëü àíèìàöèé",13,10 - db "4. Ïåðåêëþ÷èòü èíòðî",13,10 - db "5. Ïåðåêëþ÷èòü DBD-îêíî",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -settingsVolumeText db "Ãðîìêîñòü: ",0 -settingsVolumeHint db "0 - áåç çâóêà, 10 - ìàêñèìóì",13,10,0 -settingsModeText db "Ïðîôèëü àíèìàöèé: ",0 -settingsNormalText db "îáû÷íûé",13,10,0 -settingsLowText db "ñëàáûé ÏÊ",13,10,0 -settingsIntroText db "Èíòðî: ",0 -settingsDbdText db "DBD-îêíî: ",0 -settingsOnText db "âêë",13,10,0 -settingsOffText db "âûêë",13,10,0 -settingsCinematicText db "Cinematic - ìàêñèìóì",13,10,0 -settingsAdaptiveText db "Adaptive - ìÿã÷å",13,10,0 -settingsStableText db "Stable - ìåíüøå ðÿáè",13,10,0 -settingsAnimHintText db "Cinematic: âñå êàäðû; Adaptive: ìåíüøå ðÿáè; Stable: äëÿ ñëàáûõ ÏÊ.",13,10,0 -vipStatusText db "VIP-ñòàòóñ: ",0 -vipBronzeText db "Bronze",13,10,0 -vipSilverText db "Silver",13,10,0 -vipGoldText db "Gold",13,10,0 -vipDiamondText db "Diamond",13,10,0 -vipTaxText db "Êîìèññèÿ êàçèíî: $",0 -secretEndingTitle db 13,10,"========================================",13,10," ÊÀÇÈÍÎ ÏÐÈÇÍÀËÎ ÒÅÁß ÑÂÎÈÌ",13,10,"========================================",13,10,0 -secretEndingBody db "Òû ñîáðàë âñå äîñòèæåíèÿ, ñêóïèë ðóáàøêè è âûíåñ áàíê òàê, ÷òî êðóïüå áîëüøå íå ñïîðèò.",13,10,"Äâåðè ñëóæåáíîãî ëèôòà îòêðûâàþòñÿ. Íà òàáëè÷êå îäíà ôðàçà: HOUSE PLAYER.",13,10,"Ñåêðåòíàÿ êîíöîâêà îòêðûòà.",13,10,0 -secretEndingArt1 db " .---. .---. .---.",13,10," / $ / / VIP / / $ /",13,10," \\____/ \\____/ \\____/",13,10,0 -secretEndingArt2 db " ======= ASSEMBLER CASINO PRIVATE FLOOR =======",13,10," cards slots roulette secrets",13,10," =================================================",13,10,0 -dailyReadyText db " [ãîòîâî ê ïîëó÷åíèþ]",13,10,0 -dailyTaskName01 db "Ñûãðàòü 3 èãðû",0 -dailyTaskName02 db "Ñûãðàòü 5 èãð",0 -dailyTaskName03 db "Ñûãðàòü 7 èãð",0 -dailyTaskName04 db "Ïîáåäèòü 1 ðàç",0 -dailyTaskName05 db "Ïîáåäèòü 2 ðàçà",0 -dailyTaskName06 db "Ïîáåäèòü 3 ðàçà",0 -dailyTaskName07 db "Ïðîèãðàòü 1 ðàç",0 -dailyTaskName08 db "Ïðîèãðàòü 2 ðàçà",0 -dailyTaskName09 db "Ñäåëàòü íè÷üþ 1 ðàç",0 -dailyTaskName10 db "Ïîñòàâèòü îò $5000",0 -dailyTaskName11 db "Ïîñòàâèòü îò $5000 òðè ðàçà",0 -dailyTaskName12 db "Ïîñòàâèòü îò $10000",0 -dailyTaskName13 db "Ñûãðàòü â 21",0 -dailyTaskName14 db "Ïîáåäèòü â 21",0 -dailyTaskName15 db "Ñûãðàòü â Poker",0 -dailyTaskName16 db "Ïîáåäèòü â Poker",0 -dailyTaskName17 db "Ñûãðàòü â CloverPit",0 -dailyTaskName18 db "Ïîáåäèòü â CloverPit",0 -dailyTaskName19 db "Ñûãðàòü â ðóññêóþ ðóëåòêó",0 -dailyTaskName20 db "Ïîáåäèòü â ðóññêóþ ðóëåòêó",0 -dailyTaskName21 db "Ñûãðàòü â ÷åðåïà",0 -dailyTaskName22 db "Ïîáåäèòü â ÷åðåïà",0 -dailyTaskName23 db "Ñûãðàòü â îðëà è ðåøêó",0 -dailyTaskName24 db "Ïîáåäèòü â îðëà è ðåøêó",0 -dailyTaskName25 db "Ñûãðàòü â êîñòè",0 -dailyTaskName26 db "Ïîáåäèòü â êîñòè",0 -dailyTaskName27 db "Ñûãðàòü â êàçèíî-ðóëåòêó",0 -dailyTaskName28 db "Ïîáåäèòü â êàçèíî-ðóëåòêó",0 -dailyTaskName29 db "Ñûãðàòü â Slot machine",0 -dailyTaskName30 db "Ïîáåäèòü â Slot machine",0 -dailyTaskName31 db "Ñûãðàòü â äóðàêà",0 -dailyTaskName32 db "Ïîáåäèòü â äóðàêà",0 -dailyTaskName33 db "Ñûãðàòü â Skill Check",0 -dailyTaskName34 db "Ïîáåäèòü â Skill Check",0 -dailyTaskName35 db "Ñûãðàòü 2 êàðòî÷íûå èãðû",0 -dailyTaskName36 db "Ïîáåäèòü â êàðòî÷íîé èãðå",0 -dailyTaskName37 db "Ñûãðàòü 3 èãðû óäà÷è",0 -dailyTaskName38 db "Ïîáåäèòü 2 ðàçà â èãðàõ óäà÷è",0 -dailyTaskName39 db "Ñûãðàòü 2 îïàñíûå èãðû",0 -dailyTaskName40 db "Ïîáåäèòü â îïàñíîé èãðå",0 -dailyTaskNameTable dd OFFSET dailyTaskName01, OFFSET dailyTaskName02, OFFSET dailyTaskName03, OFFSET dailyTaskName04 - dd OFFSET dailyTaskName05, OFFSET dailyTaskName06, OFFSET dailyTaskName07, OFFSET dailyTaskName08 - dd OFFSET dailyTaskName09, OFFSET dailyTaskName10, OFFSET dailyTaskName11, OFFSET dailyTaskName12 - dd OFFSET dailyTaskName13, OFFSET dailyTaskName14, OFFSET dailyTaskName15, OFFSET dailyTaskName16 - dd OFFSET dailyTaskName17, OFFSET dailyTaskName18, OFFSET dailyTaskName19, OFFSET dailyTaskName20 - dd OFFSET dailyTaskName21, OFFSET dailyTaskName22, OFFSET dailyTaskName23, OFFSET dailyTaskName24 - dd OFFSET dailyTaskName25, OFFSET dailyTaskName26, OFFSET dailyTaskName27, OFFSET dailyTaskName28 - dd OFFSET dailyTaskName29, OFFSET dailyTaskName30, OFFSET dailyTaskName31, OFFSET dailyTaskName32 - dd OFFSET dailyTaskName33, OFFSET dailyTaskName34, OFFSET dailyTaskName35, OFFSET dailyTaskName36 - dd OFFSET dailyTaskName37, OFFSET dailyTaskName38, OFFSET dailyTaskName39, OFFSET dailyTaskName40 -cheatAppliedText db "CHEAT ACTIVATED: ",0 -cheatBadText db "Unknown cheat code.",13,10,0 -cheatMoneyText db "+$50000",13,10,0 -cheatSevenText db "+$7777",13,10,0 -cheatWinText db "next loss becomes win",13,10,0 -cheatGodText db "losses become wins",13,10,0 -cheatFairText db "fair play restored",13,10,0 -cheatGoalText db "bank moved to current goal",13,10,0 -cheatResetText db "bank reset to $10000",13,10,0 -cheatEasyText db "AI difficulty EASY",13,10,0 -cheatNormalText db "AI difficulty NORMAL",13,10,0 -cheatHardText db "AI difficulty HARD",13,10,0 -cheatJackpotText db "next slot spin is forced jackpot",13,10,0 -cheatRichText db "+$250000",13,10,0 -cheatDoubleText db "bank doubled",13,10,0 -cheatPoorText db "bank set to $1",13,10,0 -cheatShopText db "+$30000 for shop",13,10,0 -cheatBacksText db "all card backs unlocked",13,10,0 -cheatCharmText db "luck talisman maxed",13,10,0 -cheatNoCharmText db "luck talisman removed",13,10,0 -cheatAchText db "all achievements unlocked",13,10,0 -cheatSavedText db "CHEAT: loss changed into win.",13,10,0 -cheatCodeMoney db "MONEYRAIN",0 -cheatCodeSeven db "SEVENS",0 -cheatCodeWin db "WINNEXT",0 -cheatCodeGod db "GODMODE",0 -cheatCodeFair db "FAIRPLAY",0 -cheatCodeGoal db "GOAL",0 -cheatCodeReset db "RESETBANK",0 -cheatCodeEasy db "EASYAI",0 -cheatCodeNormal db "NORMALAI",0 -cheatCodeHard db "HARDAI",0 -cheatCodeJackpot db "JACKPOT",0 -cheatCodeRich db "HIGHROLLER",0 -cheatCodeDouble db "DOUBLECASH",0 -cheatCodePoor db "ONEBUCK",0 -cheatCodeShop db "SHOPPING",0 -cheatCodeBacks db "ALLBACKS",0 -cheatCodeCharm db "MAXCHARM",0 -cheatCodeNoCharm db "NOCHARM",0 -cheatCodeAch db "ACHIEVER",0 -moneyWinText db "Âûèãðûø: +$",0 -moneyLoseText db "Ïðîèãðûø: -$",0 -moneyDrawText db "Ñòàâêà âîçâðàùàåòñÿ.",13,10,0 -casinoKickText db 13,10,"Ó âàñ íå îñòàëîñü äåíåã. Âàñ âûâîäÿò èç êàçèíî.",13,10,0 -casinoExitText db "Íàæìèòå ëþáóþ êëàâèøó, ÷òîáû âûéòè...",0 -welcomeText db 13,10,"Äîáðî ïîæàëîâàòü â ASSEMBLER CASINO!",13,10,"Óäà÷à ëþáèò ñìåëûõ, íî êàçèíî ëþáèò ìàòåìàòèêó.",13,10,0 -difficultyText db 13,10,"Ñëîæíîñòü AI: 1 - Easy, 2 - Normal, 3 - Hard: ",0 -difficultyNowText db "Ñëîæíîñòü AI: ",0 -easyName db "Easy",13,10,0 -normalName db "Normal",13,10,0 -hardName db "Hard",13,10,0 -statsGamesText db "Èãð ñûãðàíî: ",0 -statsWinsText db "Ïîáåä: ",0 -statsLossText db "Ïîðàæåíèé: ",0 -statsDrawText db "Íè÷üèõ: ",0 -statsBestWinText db "Ìàêñ. âûèãðûø: $",0 -statsBestLossText db "Ìàêñ. ïðîèãðûø: $",0 -statsByGameTitle db 13,10,"--- Ñòàòèñòèêà è ëèäåðû êàçèíî ---",13,10,0 -statsLinePlayed db " èãð: ",0 -statsLineWins db " ïîáåä: ",0 -statsLineLoss db " ïîðàæåíèé: ",0 -statsLineDraw db " íè÷üèõ: ",0 -leaderCurrentTitle db "Òåêóùèé àêêàóíò:",13,10,0 -leaderTitle db 13,10,"Ëèäåðû ñðåäè âñåõ àêêàóíòîâ:",13,10,0 -leaderNoDataText db "Íåò ñîõðàíåíèé àêêàóíòîâ.",13,10,0 -leaderBankText db "Ñàìûé áîëüøîé áàíê: ",0 -leaderWinsText db "Áîëüøå âñåãî ïîáåä: ",0 -leaderLossText db "Áîëüøå âñåãî ïîðàæåíèé: ",0 -leaderGameTitle db 13,10,"Ëèäåðû ïî èãðàì:",13,10,0 -leaderGameWinText db " ïîáåäû: ",0 -leaderGameLossText db " ïîðàæåíèÿ: ",0 -leaderDashText db "-",0 -leaderOpenText db " (",0 -leaderCloseText db ")",0 -leaderMoneyPrefix db "$",0 -statsGame21 db "21 / Î÷êî",0 -statsGamePoker db "Poker",0 -statsGameClover db "CloverPit",0 -statsGameRR db "Ðóññêàÿ ðóëåòêà",0 -statsGameSkulls db "×åðåïà",0 -statsGameCoin db "Îðåë/ðåøêà",0 -statsGameDice db "Êîñòè",0 -statsGameCasinoRoulette db "Êàçèíî-ðóëåòêà",0 -statsGameClassicSlot db "Slot machine",0 -statsGameDurak db "Äóðàê",0 -statsGameSkillCheck db "Êðþê: Skill Check",0 -statsGameNames dd OFFSET statsGame21, OFFSET statsGamePoker, OFFSET statsGameClover, OFFSET statsGameRR, OFFSET statsGameSkulls - dd OFFSET statsGameCoin, OFFSET statsGameDice, OFFSET statsGameCasinoRoulette, OFFSET statsGameClassicSlot, OFFSET statsGameDurak - dd OFFSET statsGameSkillCheck -bankRecoveredText db "Ïîñëå ïðîøëîãî âèçèòà êàçèíî âûäàëî íîâûé ñòàðòîâûé áàíê: $10000",13,10,0 -saveTamperedText db "Ñîõðàíåíèå ïîâðåæäåíî èëè èçìåíåíî. Êàçèíî âûäàëî ÷èñòûé ñòàðòîâûé áàíê.",13,10,0 -goalText db "Öåëü èãðû: äîâåñòè áàíê äî $",0 -victoryText db 13,10,"+====================================+",13,10 - db "| ÄÆÅÊÏÎÒ ÆÈÇÍÈ |",13,10 - db "+====================================+",13,10,13,10,0 -victoryReachedText db "Òû ïîäíÿë áàíê äî $",0 -victoryTailText db "Îõðàíà óæå íåðâíè÷àåò.",13,10 - db "Êàçèíî ïðèçíàåò ïîðàæåíèå.",13,10,13,10 - db "Çàáèðàé âûèãðûø è óõîäè êðàñèâî.",13,10,0 -victoryExitText db "Íàæìèòå ëþáóþ êëàâèøó, ÷òîáû ïðîäîëæèòü èãðó...",0 -nextGoalText db "Ñëåäóþùàÿ öåëü: $",0 -croupierPrefix db 13,10,"Êðóïüå: ",0 -croupierWin1 db "Êðàñèâî. Ôèøêè èäóò ê âàì.",13,10,0 -croupierWin2 db "Ñòîë ñåãîäíÿ ÿâíî íà âàøåé ñòîðîíå.",13,10,0 -croupierWin3 db "Õîðîøèé óäàð ïî áàíêó êàçèíî.",13,10,0 -croupierLose1 db "Êàçèíî çàáèðàåò ñòàâêó.",13,10,0 -croupierLose2 db "Íå ëó÷øèé ðàñêëàä, íî âå÷åð åùå æèâîé.",13,10,0 -croupierLose3 db "Ôèøêè óõîäÿò ñî ñòîëà.",13,10,0 -croupierDraw1 db "Ñòàâêà îñòàåòñÿ ïðè âàñ.",13,10,0 -croupierDraw2 db "Íèêòî íå ñäâèíóë áàíê. Èãðàåì äàëüøå.",13,10,0 -croupierDraw3 db "Ðîâíî. Áåç ïîáåäèòåëÿ.",13,10,0 -croupierWinList dd OFFSET croupierWin1, OFFSET croupierWin2, OFFSET croupierWin3 -croupierLoseList dd OFFSET croupierLose1, OFFSET croupierLose2, OFFSET croupierLose3 -croupierDrawList dd OFFSET croupierDraw1, OFFSET croupierDraw2, OFFSET croupierDraw3 -dealerFileName db "assets\data\dealer_phrases.txt",0 -pulseTitleText db 13,10,"Ïóëüñ ñòàâêè:",13,10,0 -pulseFrame1 db " _/\_ ñïîêîéíî",13,10,0 -pulseFrame2 db " _/\/\_ íàïðÿæåíèå",13,10,0 -pulseFrame3 db " _/\/\/\_ ðèñê",13,10,0 -pulseFrame4 db " _/\/\/\/\_ ñåðäöå êîëîòèòñÿ",13,10,0 -pulseFrame5 db " _/\/\_/\_ âäîõ...",13,10,0 -observerTitle db 13,10,"--- Íàáëþäàòåëü AI vs AI ---",13,10,0 -observerIntro db "AI-1 è AI-2 èãðàþò 5 áûñòðûõ ðàóíäîâ â 21 áåç ñòàâîê.",13,10,0 -observerRoundText db 13,10,"Ðàóíä ",0 -observerAI1Text db "AI-1 î÷êè: ",0 -observerAI2Text db "AI-2 î÷êè: ",0 -observerWin1Text db "AI-1 çàáèðàåò ðàóíä.",13,10,0 -observerWin2Text db "AI-2 çàáèðàåò ðàóíä.",13,10,0 -observerDrawText db "Íè÷üÿ ìåæäó æåëåçêàìè.",13,10,0 -observerDoneText db 13,10,"Íàáëþäåíèå îêîí÷åíî.",13,10,0 -observerMenuText db "1. Ðóññêàÿ ðóëåòêà",13,10 - db "2. 21 / Î÷êî",13,10 - db "3. Poker",13,10 - db "4. Äóðàê",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -observer21Title db 13,10,"--- AI vs AI: 21 / Î÷êî ---",13,10,0 -observerPokerTitle db 13,10,"--- AI vs AI: Poker ---",13,10,0 -observerDurakTitle db 13,10,"--- AI vs AI: Äóðàê ---",13,10,0 -observerRRTitle db 13,10,"--- AI vs AI: Ðóññêàÿ ðóëåòêà ---",13,10,0 -observerAI1CardsText db 13,10,"Êàðòû AI-1:",13,10,0 -observerAI2CardsText db 13,10,"Êàðòû AI-2:",13,10,0 -observerAI1RaiseText db "AI-1 ïîâûøàåò ñòàâêó.",13,10,0 -observerAI2RaiseText db "AI-2 ïîâûøàåò ñòàâêó.",13,10,0 -observerCallText db "Ñîïåðíèê îòâå÷àåò.",13,10,0 observerFold1Text db "AI-1 äåëàåò ôîëä.",13,10,0 -observerFold2Text db "AI-2 äåëàåò ôîëä.",13,10,0 -observerShotAI1Text db "Âûñòðåë äîñòàëñÿ AI-1. Ïîáåäèë AI-2.",13,10,0 -observerShotAI2Text db "Âûñòðåë äîñòàëñÿ AI-2. Ïîáåäèë AI-1.",13,10,0 -shopMainMenuText db "1. Ðóáàøêè êàðò",13,10 - db "2. Òàëèñìàíû",13,10 - db "3. Áåñòèàðèé òàëèñìàíîâ",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -shopBackTitle db 13,10,"--- Ìàãàçèí: ðóáàøêè êàðò ---",13,10,0 -shopCharmTitle db 13,10,"--- Ìàãàçèí: òàëèñìàíû ---",13,10,0 -shopBackMenuText db "1. Ñèíÿÿ ðóáàøêà êàðò - $3000",13,10 - db "2. Êðàñíàÿ ðóáàøêà êàðò - $3000",13,10 - db "3. Çîëîòàÿ ðóáàøêà êàðò - $10000",13,10 - db "4. Ðóáàøêà ×åðåï - $12000",13,10 - db "5. Rubashka CloverPit - $15000",13,10 - db "6. Rubashka Arcane kart - $17000",13,10 - db "7. Rubashka Noir kart - $18000",13,10 - db "8. Rubashka Diamond kart - $20000",13,10 - db "9. Rubashka Rider kart - $22000",13,10 - db "10. Rubashka Bee kart - $22000",13,10 - db "11. Rubashka Fan kart - $23000",13,10 - db "12. Rubashka Web kart - $24000",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -shopCharmMenuText db "1. Òàëèñìàí Êëåâåð: 7%, 3 çàðÿäà - $12000",13,10 - db "2. Òàëèñìàí Êîëîêîë: 14%, 3 çàðÿäà, +4 ïîäîçðåíèÿ - $18000",13,10 - db "3. Òàëèñìàí Àëìàç: 21%, 3 çàðÿäà, +8 ïîäîçðåíèÿ - $25000",13,10 - db "4. Òàëèñìàí ×åðåï: 28%, 2 çàðÿäà, øòðàô ïîëîâèíà ñòàâêè - $32000",13,10 - db "5. Òàëèñìàí Ïàóòèíà: 35%, 1 çàðÿä, +20 ïîäîçðåíèÿ - $40000",13,10 - db "6. Òàëèñìàí Ï÷åëà: 12%, 5 çàðÿäîâ - $30000",13,10 - db "7. Òàëèñìàí Ëóíà: 18%, 4 çàðÿäà, +8 ïîäîçðåíèÿ - $36000",13,10 - db "8. Òàëèñìàí Êîðîíà: 24%, 2 çàðÿäà, +12 ïîäîçðåíèÿ - $52000",13,10 - db "9. Òàëèñìàí Çåðêàëî: 16%, 4 çàðÿäà, +6 ïîäîçðåíèÿ - $42000",13,10 - db "10. Òàëèñìàí Êîñòü: 10%, 6 çàðÿäîâ - $35000",13,10 - db "11. Êðîâàâàÿ ìîíåòà: 40%, 1 çàðÿä, øòðàô 25% ñòàâêè è +25 ïîäîçðåíèÿ - $65000",13,10 - db "12. Ïåñî÷íûå ÷àñû: 22%, 2 çàðÿäà, +15 ïîäîçðåíèÿ - $48000",13,10 - db "13. Ïîäêîâà: 9%, 8 çàðÿäîâ - $39000",13,10 - db "14. Ìàñêà äæîêåðà: 33%, 1 çàðÿä, +30 ïîäîçðåíèÿ - $70000",13,10 - db "15. Ïåðî ôåíèêñà: 26%, 2 çàðÿäà, +10 ïîäîçðåíèÿ - $56000",13,10 - db "16. Ñëîìàííûé êîìïàñ: 19%, 3 çàðÿäà, +12 ïîäîçðåíèÿ - $44000",13,10 - db "17. Çîëîòîé çóá: 15%, 5 çàðÿäîâ, øòðàô 20% ñòàâêè - $47000",13,10 - db "18. Õðóñòàëüíûé ãëàç: 31%, 1 çàðÿä, +18 ïîäîçðåíèÿ - $60000",13,10 - db "19. Ðæàâûé êëþ÷: 13%, 6 çàðÿäîâ - $41000",13,10 - db "20. ×åðíàÿ ñâå÷à: 38%, 1 çàðÿä, øòðàô 33% ñòàâêè è +35 ïîäîçðåíèÿ - $76000",13,10 - db "21. Ñ÷àñòëèâàÿ ôèøêà: 20%, 4 çàðÿäà - $50000",13,10 - db "22. Çìåèíîå êîëüöî: 29%, 2 çàðÿäà, +16 ïîäîçðåíèÿ - $62000",13,10 - db "23. Îñêîëîê òóçà: 17%, 5 çàðÿäîâ, +7 ïîäîçðåíèÿ - $53000",13,10 - db "24. Äîãîâîð ñ äüÿâîëîì: 50%, 1 çàðÿä, øòðàô 50% ñòàâêè è +45 ïîäîçðåíèÿ - $100000",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -shopTitle db 13,10,"--- Ìàãàçèí êàçèíî ---",13,10,0 -shopMenuText db "1. Ñèíÿÿ ðóáàøêà êàðò - $3000",13,10 - db "2. Êðàñíàÿ ðóáàøêà êàðò - $3000",13,10 - db "3. Çîëîòàÿ ðóáàøêà êàðò - $10000",13,10 - db "4. Ðóáàøêà ×åðåï - $12000",13,10 - db "5. Ðóáàøêà CloverPit - $15000",13,10 - db "6. Òàëèñìàí Êëåâåð: 7%, 3 çàðÿäà - $12000",13,10 - db "7. Òàëèñìàí Êîëîêîë: 14%, 3 çàðÿäà - $18000",13,10 - db "8. Òàëèñìàí Àëìàç: 21%, 3 çàðÿäà - $25000",13,10 - db "9. Rubashka Arcane kart - $17000",13,10 - db "10. Rubashka Noir kart - $18000",13,10 - db "11. Rubashka Diamond kart - $20000",13,10 - db "12. Rubashka Rider kart - $22000",13,10 - db "13. Rubashka Bee kart - $22000",13,10 - db "14. Rubashka Fan kart - $23000",13,10 - db "15. Rubashka Web kart - $24000",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -shopBackText db "Òåêóùàÿ ðóáàøêà: ",0 -shopBackGray db "Ñåðàÿ",13,10,0 -shopBackBlue db "Ñèíÿÿ âîëíà",13,10,0 -shopBackRed db "Êðàñíûé êðåñò",13,10,0 -shopBackGold db "Çîëîòîé áëåñê",13,10,0 -shopBackSkull db "×åðåï",13,10,0 -shopBackClover db "CloverPit",13,10,0 -shopBackArcane db "Arcane",13,10,0 -shopBackNoir db "Noir",13,10,0 -shopBackDiamond db "Diamond",13,10,0 -shopBackRider db "Rider",13,10,0 -shopBackBee db "Bee",13,10,0 -shopBackFan db "Fan",13,10,0 -shopBackWeb db "Web",13,10,0 -shopCharmText db "Òàëèñìàí: ",0 -shopCharmNone db "íåò",13,10,0 -shopCharmClover db "Êëåâåð",0 -shopCharmBell db "Êîëîêîë",0 -shopCharmDiamond db "Àëìàç",0 -shopCharmSkull db "×åðåï",0 -shopCharmWeb db "Ïàóòèíà",0 -shopCharmBee db "Ï÷åëà",0 -shopCharmMoon db "Ëóíà",0 -shopCharmCrown db "Êîðîíà",0 -shopCharmMirror db "Çåðêàëî",0 -shopCharmDice db "Êîñòü",0 -shopCharmBlood db "Êðîâàâàÿ ìîíåòà",0 -shopCharmHourglass db "Ïåñî÷íûå ÷àñû",0 -shopCharmHorseshoe db "Ïîäêîâà",0 -shopCharmJoker db "Ìàñêà äæîêåðà",0 -shopCharmPhoenix db "Ïåðî ôåíèêñà",0 -shopCharmCompass db "Ñëîìàííûé êîìïàñ",0 -shopCharmTooth db "Çîëîòîé çóá",0 -shopCharmEye db "Õðóñòàëüíûé ãëàç",0 -shopCharmKey db "Ðæàâûé êëþ÷",0 -shopCharmCandle db "×åðíàÿ ñâå÷à",0 -shopCharmChip db "Ñ÷àñòëèâàÿ ôèøêà",0 -shopCharmSnake db "Çìåèíîå êîëüöî",0 -shopCharmAce db "Îñêîëîê òóçà",0 -shopCharmDevil db "Äîãîâîð ñ äüÿâîëîì",0 -bestiaryTitle db 13,10,"--- Áåñòèàðèé òàëèñìàíîâ ---",13,10,0 -bestiaryMenuText db "--- Îáû÷íûå ---",13,10 - db "1. Êëåâåð",13,10 - db "2. Êîëîêîë",13,10 - db "6. Ï÷åëà",13,10 - db "10. Êîñòü",13,10 - db "13. Ïîäêîâà",13,10 - db "19. Ðæàâûé êëþ÷",13,10 - db "--- Ðåäêèå ---",13,10 - db "3. Àëìàç",13,10 - db "7. Ëóíà",13,10 - db "9. Çåðêàëî",13,10 - db "12. Ïåñî÷íûå ÷àñû",13,10 - db "15. Ïåðî ôåíèêñà",13,10 - db "16. Ñëîìàííûé êîìïàñ",13,10 - db "17. Çîëîòîé çóá",13,10 - db "21. Ñ÷àñòëèâàÿ ôèøêà",13,10 - db "23. Îñêîëîê òóçà",13,10 - db "--- Ïðîêëÿòûå ---",13,10 - db "4. ×åðåï",13,10 - db "5. Ïàóòèíà",13,10 - db "11. Êðîâàâàÿ ìîíåòà",13,10 - db "14. Ìàñêà äæîêåðà",13,10 - db "20. ×åðíàÿ ñâå÷à",13,10 - db "22. Çìåèíîå êîëüöî",13,10 - db "--- Ëåãåíäàðíûå ---",13,10 - db "8. Êîðîíà",13,10 - db "18. Õðóñòàëüíûé ãëàç",13,10 - db "24. Äîãîâîð ñ äüÿâîëîì",13,10 - db "0. Íàçàä",13,10 - db "Âûáîð: ",0 -bestiaryGoodText db "Ïëþñ: ",0 -bestiaryBadText db "Ìèíóñ: ",0 -bestiaryBackText db 13,10,"0 - íàçàä ê ñïèñêó áåñòèàðèÿ: ",0 -bestiaryCloverArt db 13,10," .-. .-.",13,10," .' V '. CLOVER",13,10," \ \|/ /",13,10," `-+-'",13,10,0 -bestiaryBellArt db 13,10," .---.",13,10," / ___ \ BELL",13,10," / / \ ",13,10," \_\___/_/",13,10," (_) ",13,10,0 -bestiaryDiamondArt db 13,10," /",13,10," /##\ DIAMOND",13,10," /####",13,10," \####/",13,10," \##/",13,10," \/",13,10,0 -bestiarySkullArt db 13,10," .-''''-.",13,10," / O O \ SKULL",13,10," | __ |",13,10," | .____. |",13,10," \__||||__/",13,10,0 -bestiaryWebArt db 13,10," \ | /",13,10," ---\ | /--- WEB",13,10," ---- @ ----",13,10," ---/ | \---",13,10," / | ",13,10,0 -bestiaryBeeArt db 13,10," __",13,10," __/o \__ BEE",13,10," / \__/ ",13,10," \__/==\__/",13,10," \__/",13,10,0 -bestiaryMoonArt db 13,10," .--.",13,10," .' _/ MOON",13,10," / .'",13,10," \ '.",13,10," '.__",13,10,0 -bestiaryCloverInfo db "Êëåâåð: 7%, 3 çàðÿäà.",13,10,"Ïëþñ: ìîæåò ïîëíîñòüþ ñïàñòè ïðîèãðàííóþ ñòàâêó.",13,10,"Ìèíóñ: ñëàáûé øàíñ, áåç äîïîëíèòåëüíûõ áîíóñîâ.",13,10,0 -bestiaryBellInfo db "Êîëîêîë: 14%, 3 çàðÿäà.",13,10,"Ïëþñ: ÷àùå ñïàñàåò ïðîèãðûø.",13,10,"Ìèíóñ: çâîí ïðèâëåêàåò êàçèíî: +4 ïîäîçðåíèÿ ïðè ñðàáàòûâàíèè.",13,10,0 -bestiaryDiamondInfo db "Àëìàç: 21%, 3 çàðÿäà.",13,10,"Ïëþñ: ñèëüíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: áëåñê ïàëèòñÿ îõðàíå: +8 ïîäîçðåíèÿ.",13,10,0 -bestiarySkullInfo db "×åðåï: 28%, 2 çàðÿäà.",13,10,"Ïëþñ: âûñîêèé øàíñ íå ïîòåðÿòü âñþ ñòàâêó.",13,10,"Ìèíóñ: çàáèðàåò ïîëîâèíó ñòàâêè äàæå ïðè ñïàñåíèè.",13,10,0 -bestiaryWebInfo db "Ïàóòèíà: 35%, 1 çàðÿä.",13,10,"Ïëþñ: ïî÷òè àâàðèéíàÿ êíîïêà ïðîòèâ ïðîèãðûøà.",13,10,"Ìèíóñ: +20 ïîäîçðåíèÿ, çàðÿä îäèí.",13,10,0 -bestiaryBeeInfo db "Ï÷åëà: 12%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî ïîïûòîê, õîðîøèé òàëèñìàí íà äëèííóþ èãðó.",13,10,"Ìèíóñ: øàíñ íèæå, ÷åì ó äîðîãèõ òàëèñìàíîâ.",13,10,0 -bestiaryMoonInfo db "Ëóíà: 18%, 4 çàðÿäà.",13,10,"Ïëþñ: áàëàíñ øàíñà è çàðÿäîâ.",13,10,"Ìèíóñ: ëóííûé ñâåò âûäàåò øóëåðà: +8 ïîäîçðåíèÿ.",13,10,0 -bestiaryCrownArt db 13,10," _^_",13,10," .'___'. CROWN",13,10," /_/|_|\_",13,10," /___",13,10,0 -bestiaryMirrorArt db 13,10," .----.",13,10," / .--. \ MIRROR",13,10," | | <> | |",13,10," \ '--' /",13,10," '----'",13,10,0 -bestiaryDiceArt db 13,10," +-----+",13,10," | o o | DICE",13,10," | o |",13,10," | o o |",13,10," +-----+",13,10,0 -bestiaryBloodArt db 13,10," .---.",13,10," / $ $ \ BLOOD COIN",13,10," | *** |",13,10," \_===_/",13,10," drip",13,10,0 -bestiaryHourglassArt db 13,10," \-----/",13,10," \.../ HOURGLASS",13,10," \./",13,10," /\",13,10," /___",13,10,0 -bestiaryCrownInfo db "Êîðîíà: 24%, 2 çàðÿäà.",13,10,"Ïëþñ: ñîëèäíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: êîðîíà ñëèøêîì çàìåòíà: +12 ïîäîçðåíèÿ.",13,10,0 -bestiaryMirrorInfo db "Çåðêàëî: 16%, 4 çàðÿäà.",13,10,"Ïëþñ: íåñêîëüêî ñòàáèëüíûõ ïîïûòîê îáìàíóòü ïðîèãðûø.",13,10,"Ìèíóñ: îòðàæåíèå ïàëèò ðóêè: +6 ïîäîçðåíèÿ.",13,10,0 -bestiaryDiceInfo db "Êîñòü: 10%, 6 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ, ìîæíî æèòü äîëãî.",13,10,"Ìèíóñ: øàíñ ìàëåíüêèé, ýòî òàëèñìàí òåðïåíèÿ.",13,10,0 -bestiaryBloodInfo db "Êðîâàâàÿ ìîíåòà: 40%, 1 çàðÿä.",13,10,"Ïëþñ: ñàìûé ðåçêèé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: çàáèðàåò 25% ñòàâêè è äàåò +25 ïîäîçðåíèÿ.",13,10,0 -bestiaryHourglassInfo db "Ïåñî÷íûå ÷àñû: 22%, 2 çàðÿäà.",13,10,"Ïëþñ: íàäåæíåå ñðåäíåãî.",13,10,"Ìèíóñ: âðåìÿ íå ëþáèò ñâèäåòåëåé: +15 ïîäîçðåíèÿ.",13,10,0 -bestiaryHorseshoeArt db 13,10," __ __",13,10," / \_/ \ HORSESHOE",13,10," | o o |",13,10," \__ __/",13,10," |_|",13,10,0 -bestiaryJokerArt db 13,10," .-^^-.",13,10," / o o \ JOKER",13,10," | .--. |",13,10," \_\__/ _/",13,10," /==\",13,10,0 -bestiaryPhoenixArt db 13,10," /\",13,10," ___/ \___ PHOENIX",13,10," / / /\ \ ",13,10," /_||_\",13,10," \/",13,10,0 -bestiaryCompassArt db 13,10," .---.",13,10," / N \ COMPASS",13,10," | W-+-E |",13,10," \ S /",13,10," '--?'",13,10,0 -bestiaryToothArt db 13,10," .--.",13,10," /$ $\ GOLD TOOTH",13,10," | __ |",13,10," \____/",13,10," drip",13,10,0 -bestiaryEyeArt db 13,10," .-------.",13,10," / .---. \ EYE",13,10," | ( 0 ) |",13,10," \ '---' /",13,10," '-------'",13,10,0 -bestiaryKeyArt db 13,10," __",13,10," ___/ \___ KEY",13,10," (___ ___)",13,10," |__|==",13,10," ==",13,10,0 -bestiaryCandleArt db 13,10," )",13,10," ( ) CANDLE",13,10," .-#-.",13,10," |###|",13,10," |___|",13,10,0 -bestiaryChipArt db 13,10," .-----.",13,10," / $ $ $ \ CHIP",13,10," | $ 777 $ |",13,10," \ $ $ $ /",13,10," '-----'",13,10,0 -bestiarySnakeArt db 13,10," __",13,10," __/ \__ SNAKE RING",13,10," / _ _ ",13,10," \_/ \/ \_/",13,10," hiss",13,10,0 -bestiaryAceArt db 13,10," .---.",13,10," / A \ ACE SHARD",13,10," | ^ |",13,10," \ /_\ /",13,10," '---'",13,10,0 -bestiaryDevilArt db 13,10," /\ /\",13,10," / \_/ \ DEVIL",13,10," | $ $ |",13,10," | ___ |",13,10," \_/###\_/",13,10,0 -bestiaryHorseshoeInfo db "Ïîäêîâà: 9%, 8 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî ïîïûòîê, õîðîøî äëÿ äëèííûõ ñåññèé.",13,10,"Ìèíóñ: øàíñ ìàëåíüêèé, ñïàñàåò ðåäêî.",13,10,0 -bestiaryJokerInfo db "Ìàñêà äæîêåðà: 33%, 1 çàðÿä.",13,10,"Ïëþñ: ñèëüíûé øàíñ ðåçêî îòìåíèòü ïðîèãðûø.",13,10,"Ìèíóñ: ñëèøêîì òåàòðàëüíî: +30 ïîäîçðåíèÿ.",13,10,0 -bestiaryPhoenixInfo db "Ïåðî ôåíèêñà: 26%, 2 çàðÿäà.",13,10,"Ïëþñ: õîðîøèé øàíñ, áóäòî ñòàâêà âîñêðåñàåò èç ïåïëà.",13,10,"Ìèíóñ: +10 ïîäîçðåíèÿ ïðè ñðàáàòûâàíèè.",13,10,0 -bestiaryCompassInfo db "Ñëîìàííûé êîìïàñ: 19%, 3 çàðÿäà.",13,10,"Ïëþñ: ñðåäíèé òàëèñìàí áåç äåíåæíîãî øòðàôà.",13,10,"Ìèíóñ: âåäåò êðèâî: +12 ïîäîçðåíèÿ.",13,10,0 -bestiaryToothInfo db "Çîëîòîé çóá: 15%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ ïðè íîðìàëüíîì øàíñå.",13,10,"Ìèíóñ: áåðåò ïëàòó 20% ñòàâêè ïðè ñïàñåíèè.",13,10,0 -bestiaryEyeInfo db "Õðóñòàëüíûé ãëàç: 31%, 1 çàðÿä.",13,10,"Ïëþñ: ïî÷òè âèäèò ïðîèãðûø çàðàíåå.",13,10,"Ìèíóñ: +18 ïîäîçðåíèÿ, çàðÿä îäèí.",13,10,0 -bestiaryKeyInfo db "Ðæàâûé êëþ÷: 13%, 6 çàðÿäîâ.",13,10,"Ïëþñ: äåøåâëå ìîùíûõ òàëèñìàíîâ è äîëãî æèâåò.",13,10,"Ìèíóñ: øàíñ ñëàáûé, êëþ÷ ÷àñòî íå ïîäõîäèò.",13,10,0 -bestiaryCandleInfo db "×åðíàÿ ñâå÷à: 38%, 1 çàðÿä.",13,10,"Ïëþñ: î÷åíü ñèëüíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: øòðàô 33% ñòàâêè è +35 ïîäîçðåíèÿ.",13,10,0 -bestiaryChipInfo db "Ñ÷àñòëèâàÿ ôèøêà: 20%, 4 çàðÿäà.",13,10,"Ïëþñ: ðîâíûé óíèâåðñàëüíûé òàëèñìàí.",13,10,"Ìèíóñ: áåç ÿðêîãî áîíóñà, ïðîñòî íàäåæíîñòü.",13,10,0 -bestiarySnakeInfo db "Çìåèíîå êîëüöî: 29%, 2 çàðÿäà.",13,10,"Ïëþñ: âûñîêèé øàíñ íà äâà ñïàñåíèÿ.",13,10,"Ìèíóñ: øèïèò íà îõðàíó: +16 ïîäîçðåíèÿ.",13,10,0 -bestiaryAceInfo db "Îñêîëîê òóçà: 17%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ è ÷óòü áîëüøå óäà÷è, ÷åì ó êëþ÷à.",13,10,"Ìèíóñ: +7 ïîäîçðåíèÿ.",13,10,0 -bestiaryDevilInfo db "Äîãîâîð ñ äüÿâîëîì: 50%, 1 çàðÿä.",13,10,"Ïëþñ: ñàìûé ìîùíûé øàíñ ñïàñòè ïðîèãðûø.",13,10,"Ìèíóñ: øòðàô 50% ñòàâêè è +45 ïîäîçðåíèÿ.",13,10,0 -charmPenaltyText db "Öåíà òàëèñìàíà: $",0 -shopCharmUsesText db ", çàðÿäîâ: ",0 -shopBoughtText db "Ïîêóïêà âûïîëíåíà.",13,10,0 -shopSelectedText db "Ðóáàøêà âûáðàíà.",13,10,0 -shopCharmBurnText db "Òàëèñìàí ñãîðåë.",13,10,0 -shopCharmSaveText db 13,10,"Òàëèñìàí âñïûõíóë è ñïàñ ñòàâêó!",13,10,0 -achMenuTitle db 13,10,"--- Äîñòèæåíèÿ ---",13,10,0 -achPopupTop db 13,10,"+--------------------------------------+",13,10,0 -achPopupTitle db "| ÄÎÑÒÈÆÅÍÈÅ ÎÒÊÐÛÒÎ |",13,10,0 -achPopupLeft db "| ",0 -achPopupBottom db "+--------------------------------------+",13,10,0 -achDoneText db "[x] ",0 -achTodoText db "[ ] ",0 -achFirstWinName db "Ïåðâûé âûèãðûø",13,10,0 -achFirstLossName db "Ïåðâûé ïðîèãðûø",13,10,0 -achJackpotName db "Äæåêïîò ïîéìàí",13,10,0 -achHighRollerName db "Áîëüøàÿ ñòàâêà",13,10,0 -achShopperName db "Ïîêóïàòåëü êàçèíî",13,10,0 -achCharmName db "Òàëèñìàí ñðàáîòàë",13,10,0 -achGoalName db "Öåëü äîñòèãíóòà",13,10,0 -achCloverPitName db "CloverPit ðàçîãðåëñÿ",13,10,0 -achClassicSlotName db "Ñòàðûé àâòîìàò ïëàòèò",13,10,0 -achPokerRaiseName db "Ñòàâêà ïîâûøåíà",13,10,0 -achPokerBluffName db "Áëåô ñðàáîòàë",13,10,0 -achRouletteWinName db "Êîëåñî ñóäüáû",13,10,0 -achRussianWinName db "Ñóõîé ùåë÷îê",13,10,0 -achDurakWinName db "Íå äóðàê",13,10,0 -achBackCollectorName db "Êîëëåêöèîíåð ðóáàøåê",13,10,0 -achCharmBuyerName db "Òàëèñìàí â êàðìàíå",13,10,0 -achObserverName db "Ëîæà íàáëþäàòåëÿ",13,10,0 -achSkillCheckName db "Ñ êðþêà ñîðâàëñÿ",13,10,0 -achievementFileName db "runtime\achievement.txt",0 -achievementCmd db "cmd /c start ""Achievement"" tools\tests\achievement_popup.bat",0 -skillTitle db 13,10,"--- Êðþê: Skill Check ---",13,10,0 -skillIntro db "Ïîïàäàé ïî çåëåíîé çîíå. PERFECT äàåò äâîéíîé ïðîãðåññ.",13,10 - db "3 ïðîìàõà - òüìà çàáèðàåò ñòàâêó. 5 ïðîãðåññà - òû ñðûâàåøüñÿ ñ êðþêà.",13,10 - db "Íàæèìàé SPACE èëè ENTER.",13,10,0 -skillHookArt db 13,10 - db " || .:!!!!!!!!!!:.",13,10 - db " || .:!##############!:.",13,10 - db " _____||_____ !#### ENTITY #####!",13,10 - db " /____ ____/ ':!#############!:'",13,10 - db " | | ''!!####!!''",13,10 - db " | | _J",13,10 - db " | | __/ |",13,10 - db " _____| |_____ .-' .-^-. .---- RED LOCKER ----.",13,10 - db " | WOODEN WALL | / /.-.\\\\ | [] [] [] [] [] |",13,10 - db " | || || || || || | |( )| | | [] [] [] [] [] |",13,10 - db " | || || || || || | /|\\___/|\\| | [] [] [] [] [] |",13,10 - db " | || || || || || |__/ | / \\ | \\__ |__________________|",13,10 - db " | || || || || || /_/ \\_\\ J J J",13,10 - db " |________________| _/ \\_ chains and hooks",13,10 - db " >>> SPACE / ENTER - ëîâèòü skill check <<<",13,10,0 -skillStateText db "Ñîñòîÿíèå: ",0 -skillStateGood db "äåðæèøüñÿ",13,10,0 -skillStateWarn db "öåïü ñêðèïèò",13,10,0 -skillStateBad db "òüìà ðÿäîì",13,10,0 -skillProgressText db "Ïðîãðåññ ïîáåãà: ",0 -skillMissText db "Ïðîìàõè: ",0 -skillGaugeHint db 13,10,"Áîëüøîé skill check:",13,10,0 -skillGaugeLeft db "[",0 -skillGaugeRight db "]",13,10,0 -skillGaugeEmpty db "-",0 -skillGaugeSuccess db "#",0 -skillGaugePerfect db "@",0 -skillGaugeNeedle db "|",0 -skillSuccessText db 13,10,"Óñïåõ. Òû óäåðæàëñÿ íà êðþêå.",13,10,0 -skillPerfectText db 13,10,"PERFECT! Ðûâîê ïî÷òè ñîðâàë êðþê.",13,10,0 -skillFailText db 13,10,"Ïðîìàõ. Êðþê äåðíóë ñèëüíåå.",13,10,0 -skillEscapeText db 13,10,"Òû ñîðâàëñÿ ñ êðþêà è âûðâàëñÿ èç òóìàíà!",13,10,0 -skillDarkText db 13,10,"Òüìà çàáðàëà òåáÿ. Ñòàâêà ñãîðåëà.",13,10,0 -coinTitle db 13,10,"--- Îðåë è ðåøêà ---",13,10,0 -coinIntroText db "Óãàäàé ñòîðîíó ìîíåòû. Ïîáåäà äàåò âûèãðûø ðàçìåðîì ñî ñòàâêó.",13,10,0 -coinChoiceText db "1 - Îðåë, 2 - Ðåøêà: ",0 -coinSpinText db "Ìîíåòà ëåòèò...",13,10,0 -; === ASCII-êàäðû àíèìàöèè ìîíåòû === -coinFrame1 db 13,10 - db " ( O )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame2 db 13,10 - db " ( / )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame3 db 13,10 - db " ( | )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame4 db 13,10 - db " ( \ )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame5 db 13,10 - db " ( - )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame6 db 13,10 - db " ( / )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame7 db 13,10 - db " ( | )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame8 db 13,10 - db " ( \ )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame9 db 13,10 - db " ( O )",13,10 - db 13,10 - db " ___________________",13,10,0 -coinFrame10 db 13,10 - db " ( / )",13,10 - db " ",13,10 - db " ___________________",13,10,0 -coinFrame11 db 13,10 - db " ( | )",13,10 - db " ",13,10 - db " ___________________",13,10,0 -coinFrame12 db 13,10 - db " ( \ )",13,10 - db " ",13,10 - db " ___________________",13,10,0 -coinFrame13 db 13,10 - db " ( - )",13,10 - db " ",13,10 - db " ___________________",13,10,0 -coinFrame14 db 13,10 - db " ( O )",13,10 - db " ",13,10 - db " ___________________",13,10,0 -coinPickText db "Òû âûáðàë: ",0 -coinResultText db "Âûïàëî: ",0 -coinHeadsText db "Îðåë",13,10,0 -coinTailsText db "Ðåøêà",13,10,0 -diceTitle db 13,10,"--- Êîñòè ---",13,10,0 -diceIntroText db "Óãàäàé ÷åòíîñòü ñóììû äâóõ êîñòåé. Ïîáåäà äàåò âûèãðûø ðàçìåðîì ñî ñòàâêó.",13,10,0 -diceChoiceText db "1 - ÷åò, 2 - íå÷åò: ",0 -diceRollText db "Êîñòè ëåòÿò ïî ñòîëó...",13,10,0 -diceFirstText db "Ïåðâàÿ êîñòü: ",0 -diceSecondText db "Âòîðàÿ êîñòü: ",0 -diceSumText db "Ñóììà: ",0 -diceEvenText db "×åò",13,10,0 -diceOddText db "Íå÷åò",13,10,0 -; === Êàçèíî-ðóëåòêà: òåêñòû, êîëåñî, öâåòà è êàðìàíû === -casinoRouletteTitle db 13,10,"--- Êàçèíî-ðóëåòêà ---",13,10,0 -casinoRouletteIntro db "Åâðîïåéñêîå êîëåñî: 0 çåëåíûé, ïîëîâèíà ÷èñåë êðàñíûå, ïîëîâèíà ÷åðíûå.",13,10 - db "Ñòàâêà íà ÷èñëî ïëàòèò x35, îñòàëüíûå ñòàâêè ïëàòÿò x1.",13,10,0 -casinoRouletteBetMenu db "1 - ÷èñëî 0-36",13,10 - db "2 - êðàñíîå",13,10 - db "3 - ÷åðíîå",13,10 - db "4 - ÷åò",13,10 - db "5 - íå÷åò",13,10 - db "Âûáîð ñòàâêè: ",0 -casinoRouletteNumberAsk db "Ââåäèòå ÷èñëî 0-36: ",0 -casinoRouletteBadNumber db " ðóëåòêå åñòü òîëüêî ÷èñëà îò 0 äî 36.",13,10,0 -casinoRouletteSpinText db "Øàðèê ñêà÷åò ïî êàðìàíàì êîëåñà... Èòîãîâûé êàðìàí ïðÿìî ïîä ñòðåëêîé ñâåðõó.",13,10,0 -casinoRouletteResultText db 13,10,"Øàðèê îñòàíîâèëñÿ íà: ",0 -casinoRouletteWinText db "Ñòàâêà ñûãðàëà.",13,10,0 -casinoRouletteLoseText db "Ñòàâêà íå ñûãðàëà.",13,10,0 -casinoRouletteWheelTop db " =============================================================",13,10 - db " o",13,10 - db " v",13,10,0 -casinoRouletteWheelBottom db " =============================================================",13,10,0 -casinoRoulettePad db " ",0 -rouletteBigSidePad db " ",0 -rouletteBigSideGap1 db " .-------------------------------------------------. ",0 -rouletteBigSideGap2 db " / .-------------------------------------. \ ",0 -rouletteBigSideGap3 db " | / . . . . . . . . . . . . . . \ | ",0 -rouletteBigSideGap4 db " | | \\ | // ( O ) \\ | | ",0 -rouletteBigSideGap5 db " | | // | \\ --+-- // | | ",0 -rouletteBigSideGap6 db " | \ . . . . . . . . . . . . \ | | ",0 -roulettePocketLeft db "[",0 -roulettePocketRight db "] ",0 -rouletteNumSpace db " ",0 -rouletteRedName db "êðàñíîå",13,10,0 -rouletteBlackName db "÷åðíîå",13,10,0 -rouletteGreenName db "çåëåíûé íîëü",13,10,0 -rouletteWheel dd 0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10 - dd 5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26 -rouletteColors db 0,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 - db 1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 -bankLevelText db "Óðîâåíü áàíêà: ",0 -bankLevelNewbie db "Íîâè÷îê",13,10,0 -bankLevelPlayer db "Èãðîê",13,10,0 -bankLevelHigh db "Õàéðîëëåð",13,10,0 -bankLevelLegend db "Ëåãåíäà êàçèíî",13,10,0 - - -; === Òåêñòû êàðòî÷íûõ èãð: 21, ïîêåð, äóðàê è ïîäñêàçêè === -hitText db "Âçÿòü êàðòó? (y/n): ",0 -againText db "Ñûãðàòü åùå? (y/n): ",0 -yourCardText db 13,10,"Òâîÿ êàðòà:",13,10,0 -dealerCardText db 13,10,"Êàðòà äèëåðà:",13,10,0 -aiThinkText db 13,10,"AI äóìàåò...",13,10,0 -aiMoveText db 13,10,"AI áåðåò êàðòó!",13,10,0 -aiCardsText db 13,10,"Êàðòû AI:",13,10,0 -playerCardsText db 13,10,"Òâîè êàðòû:",13,10,0 -yourScoreText db "Òâîè î÷êè: ",0 -dealerScoreText db "Î÷êè äèëåðà: ",0 -aiScoreText db "Î÷êè AI: ",0 -bustText db "Ïåðåáîð. Òû ïðîèãðàë.",13,10,0 -dealerBustText db "Ó äèëåðà ïåðåáîð. Òû âûèãðàë!",13,10,0 -winText db "Òû âûèãðàë!",13,10,0 -loseText db "Òû ïðîèãðàë.",13,10,0 -drawText db "Íè÷üÿ.",13,10,0 -blackjackText db "Blackjack!",13,10,0 - -twentyOneTitle db 13,10,"--- 21 / Î÷êî ---",13,10,0 -blackjackTitle db 13,10,"--- Blackjack ---",13,10,0 -pokerTitle db 13,10,"--- Poker ---",13,10,0 -pokerModeMenuText db "1. Êëàññè÷åñêèé ïîêåð 1 íà 1 (ïðîòèâ Äèëåðà)",13,10 - db "2. Ñòîë íà 4 ïåðñîíû (Âû ïðîòèâ ïîñåòèòåëåé êàçèíî)",13,10 - db "0. Âûõîä â ãëàâíîå ìåíþ",13,10 - db "Âûáîð: ",0 -slotTitle db 13,10,"--- CloverPit ---",13,10,0 -classicSlotTitle db 13,10,"--- Slot machine ---",13,10,0 -durakTitle db 13,10,"--- Äóðàê ---",13,10,0 -durakInfoText db "Êîçûðü: ",0 -durakDeckText db "Êàðò â êîëîäå: ",0 -durakAICardsText db "Êàðò ó AI: ",0 -durakYourHandText db 13,10,"Òâîè êàðòû:",13,10,0 -durakTableText db 13,10,"Íà ñòîëå: ",0 -durakAttackAsk db "Âûáåðè êàðòó äëÿ àòàêè: ",0 -durakDefendAsk db "×åì áèòü? 0 - âçÿòü: ",0 -durakBadMoveText db "Òàê íåëüçÿ. Âûáåðè äðóãóþ êàðòó.",13,10,0 -durakAITakeText db "AI íå ñìîã îòáèòüñÿ è âçÿë êàðòó.",13,10,0 -durakAIDefendText db "AI îòáèëñÿ êàðòîé: ",0 -durakAIAttackText db "AI àòàêóåò: ",0 -durakPlayerTakeText db "Òû âçÿë êàðòó.",13,10,0 -durakPlayerDefendText db "Òû îòáèëñÿ.",13,10,0 -durakWinText db "Òû âûøåë èç èãðû áåç êàðò. Ïîáåäà!",13,10,0 -durakLoseText db "AI èçáàâèëñÿ îò êàðò ðàíüøå òåáÿ. Òû ïðîèãðàë.",13,10,0 -trainingTitle db 13,10,"--- Îáó÷åíèå ---",13,10,0 -trainingText db "Ãëàâíîå: ñíà÷àëà âûáåðè ñòàâêó. Åñëè áàíê óïàäåò äî 0, êàçèíî âûâåäåò òåáÿ.",13,10 - db "Ìàãàçèí: ðóáàøêè ìåíÿþò âèä çàêðûòûõ êàðò, òàëèñìàíû ìîãóò ñïàñòè ïðîèãðàííóþ ñòàâêó.",13,10 - db "21 / Î÷êî: áåðè êàðòû äî 21. Ïåðåáîð - ïîðàæåíèå. AI äîáèðàåò ïîñëå âñêðûòèÿ.",13,10 - db "Poker: ó òåáÿ 2 êàðòû, íà ñòîëå 3+1+1. Ìîæíî èãðàòü, ôîëäèòü è ïîâûøàòü ñòàâêó.",13,10 - db "CloverPit: ïîëå 5x3. Ïëàòÿò ðàçíûå ëèíèè è ôèãóðû èç îäèíàêîâûõ ñèìâîëîâ.",13,10 - db "×åðåïà: çàïîìíè, ãäå øàðèê, ïîòîì ñëåäè çà ïåðåìåøèâàíèåì ÷åðåïîâ.",13,10 - db "Ðóññêàÿ ðóëåòêà: Easy/Normal/Hard çàäàþò 1/2/3 îïàñíûå êàìåðû áàðàáàíà.",13,10 - db "Îðåë è ðåøêà: âûáåðè ñòîðîíó ìîíåòû è äîæäèñü ïàäåíèÿ.",13,10 - db "Êîñòè: óãàäàé ÷åòíîñòü ñóììû äâóõ êóáèêîâ.",13,10 - db "Êàçèíî-ðóëåòêà: ìîæíî ñòàâèòü íà ÷èñëî, öâåò, ÷åò/íå÷åò, äþæèíû, ïîëîâèíû è êîëîíêè.",13,10 - db "Slot machine: ñòàðàÿ 3x3 ñëîò-ìàøèíà ñ âûïàäåíèåì áàðàáàíîâ è ñðåäíåé ëèíèåé.",13,10 - db "Äóðàê: àòàêóé, ïîäêèäûâàé ñîâïàäàþùèå ðàíãè, îòáèâàéñÿ èëè ïåðåâîäè õîä.",13,10 - db "Êðþê: Skill Check: SPACE/ENTER ïî çåëåíîé çîíå. PERFECT äàåò äâîéíîé ïðîãðåññ.",13,10 - db "Buckshot Roulette: ñ÷èòàé æèâûå/õîëîñòûå, èñïîëüçóé ïðåäìåòû è âûáèðàé öåëü âûñòðåëà.",13,10 - db "Íàáëþäàòåëü: AI vs AI èãðàåò áåç òâîèõ ñòàâîê, ïðîñòî äëÿ ïðîñìîòðà.",13,10 - db "Äîñòèæåíèÿ è ñòàòèñòèêà ñîõðàíÿþòñÿ â àêêàóíò.",13,10,0 -durakDeckVisualText db "Êîëîäà: [ðóáàøêà], èç-ïîä íåå òîð÷èò êîçûðü ",0 -durakAIFaceText db 13,10,"Êàðòû AI:",13,10,0 -durakThrowAsk db "Ïîäêèíóòü êàðòó? 0 - áèòî: ",0 -durakTransferText db "Ïåðåâîä! Õîä ïåðåõîäèò îáðàòíî.",13,10,0 -durakTablePairsText db 13,10,"Êàðòû íà ñòîëå:",13,10,0 -durakSlashText db " / ",0 -durakUnbeatenText db " _ ",0 -durakStuckText db "Ïàðòèÿ çàøëà â òóïèê. Ñ÷èòàåì íè÷üþ.",13,10,0 -skullsTitle db 13,10,"--- ×åðåïà è øàðèê ---",13,10,0 -skullsIntroText db "Ñëåäè çà øàðèêîì. Âûïëàòà çà ïîáåäó: x2.",13,10,0 -skullsShowText db "Ñìîòðè âíèìàòåëüíî: øàðèê ñåé÷àñ çäåñü.",13,10,0 -skullsHideText db "×åðåïà çàêðûâàþò øàðèê...",13,10,0 -skullsShuffleText db "×åðåïà ñêîëüçÿò ïî ñòîëó...",13,10,0 -skullsGuessText db "Ãäå øàðèê? 1 / 2 / 3: ",0 -skullsWinText db "Âåðíî! Øàðèê íàéäåí.",13,10,0 -skullsLoseText db "Ìèìî. Øàðèê áûë ïîä äðóãèì ÷åðåïîì.",13,10,0 -skullsBallText db "Øàðèê áûë ïîä ÷åðåïîì ",0 -skullsSwap12Text db " \\______/",13,10," / \",13,10,0 -skullsSwap23Text db " \\______/",13,10," / \",13,10,0 -skullsSwap13Text db " \\____________________/",13,10," / \",13,10,0 -rouletteTitle db 13,10,"--- Ðóññêàÿ ðóëåòêà ---",13,10,0 -rrIntroText db "Áàðàáàí íà 6 êàìåð. Easy: 1 îïàñíàÿ, Normal: 2, Hard: 3.",13,10,"AI èãðàåò ñ òîáîé ïî î÷åðåäè. Êòî ïîïàë íà îïàñíóþ êàìåðó - ïðîèãðàë.",13,10,0 -rrDangerText db "Îïàñíûõ êàìåð â áàðàáàíå: ",0 -rrSpinText db "Áàðàáàí âðàùàåòñÿ... ",0 -rrSpin1 db "|",13,10,0 -rrSpin2 db "/",13,10,0 -rrSpin3 db "-",13,10,0 -rrSpin4 db "\\",13,10,0 -rrStartsPlayerText db "Ðåâîëüâåð îñòàíîâèëñÿ íà òåáå. Òû ñòðåëÿåøü ïåðâûì.",13,10,0 -rrStartsAIText db "Ðåâîëüâåð îñòàíîâèëñÿ íà AI. Îí ñòðåëÿåò ïåðâûì.",13,10,0 -rrPlayerTurnText db "Òâîé õîä. Íàæìè ëþáóþ êëàâèøó, ÷òîáû íàæàòü íà ñïóñê...",0 -rrAITurnText db "Õîä AI. Îí ïîäíèìàåò ðåâîëüâåð...",13,10,0 -rrClickText db "Ùåë÷îê. Ïóñòî.",13,10,0 -rrBangText db "ÁÀÕ!",13,10,0 -rrPlayerLoseText db "Òåáå íå ïîâåçëî. Ñòàâêà óõîäèò êàçèíî.",13,10,0 -rrAIShotText db "AI âûáûë. Òû ïåðåæèë ýòó ïàðòèþ.",13,10,0 -rrPayoutText db "Âûïëàòà ðóëåòêè çàâèñèò îò ñëîæíîñòè.",13,10,0 -buckshotTitle db 13,10,"--- Buckshot Roulette ---",13,10,0 -buckshotIntro db "Äðîáîâèê çàðÿæåí æèâûìè è õîëîñòûìè ïàòðîíàìè â íåèçâåñòíîì ïîðÿäêå.",13,10 - db "Ñòðåëÿé â ñåáÿ èëè AI. Õîëîñòîé â ñåáÿ îñòàâëÿåò õîä òåáå.",13,10 - db "Ëóïà ðàñêðûâàåò òåêóùèé ïàòðîí, ïèëà äàåò 2 óðîíà, ïèâî âûáðàñûâàåò ïàòðîí, íàðó÷íèêè ïðîïóñêàþò õîä AI.",13,10,0 -bsShotgunArt db 13,10 - db " ,_______________________________________________",13,10 - db " |_________________,----------._ [____] ""-,__",13,10 - db " (_(||||||||||||)___________/ ""--.__",13,10 - db " `----------' [ ))""-, \",13,10 - db " "" `--.__ |",13,10 - db " `----'",13,10 - db " DOUBLE BARREL CASINO",13,10,0 -bsShotgunLoad1 db 13,10 - db " ,_______________________________________________",13,10 - db " |_________________,----------._ [____] ""-,__",13,10 - db " (_(||||||||||||)___________/ ""--.__",13,10 - db " `----------' [ ))""-, \",13,10 - db " "" `--.__ |",13,10 - db " `----'",13,10 - db " Êðóïüå áåðåò äðîáîâèê ñî ñòîëà...",13,10,0 -bsShotgunLoad2 db 13,10 - db " ,_______________________________________________",13,10 - db " |_________________,----------._ [____] ""-,__",13,10 - db " (_(||||||||||||)______/__/ ""--.__",13,10 - db " `----------' / LIVE] ",13,10 - db " __/ BLANK] .__ |",13,10 - db " `----'",13,10 - db " Ñòâîë ïðèîòêðûò. Ïàòðîíû ó êàçåííîé ÷àñòè.",13,10,0 -bsShotgunLoad3 db 13,10 - db " ,_______________________________________________",13,10 - db " |_________________,----------._ [____] ""-,__",13,10 - db " (_(||||||||||||)___________/ ""--.__",13,10 - db " `----------' [ ))""-, \",13,10 - db " "" `--.__ |",13,10 - db " `----'",13,10 - db " ÙÅËÊ. Äðîáîâèê çàêðûò.",13,10,0 -bsShotgunFire db 13,10 - db " *** BOOM ***",13,10 - db " ,_______________________________________________ ***",13,10 - db " |_________________,----------._ [____] ""-,__ *****",13,10 - db " (_(||||||||||||)___________/ ""--.__ ***",13,10 - db " `----------' [ ))""-, \ *",13,10 - db " "" `--.__ |",13,10 - db " `----'",13,10,0 -bsShotgunDry db 13,10 - db " ,_______________________________________________",13,10 - db " |_________________,----------._ [____] ""-,__ click",13,10 - db " (_(||||||||||||)___________/ ""--.__",13,10 - db " `----------' [ ))""-, \",13,10 - db " "" `--.__ |",13,10 - db " `----'",13,10,0 -bsHPText db "HP: òû ",0 -bsAIHPText db " / AI ",0 -bsShellInfoText db "Ïàòðîíû â ðàóíäå: ",0 -bsLiveText db " æèâûõ, ",0 -bsBlankText db " õîëîñòûõ",13,10,0 -bsLeftText db "Îñòàëîñü â äðîáîâèêå: ",0 -bsKnownUnknownText db "Òåêóùèé ïàòðîí: íåèçâåñòíî",13,10,0 -bsKnownLiveText db "Òåêóùèé ïàòðîí: ÆÈÂÎÉ",13,10,0 -bsKnownBlankText db "Òåêóùèé ïàòðîí: õîëîñòîé",13,10,0 -bsItemsText db "Ïðåäìåòû: ëóïà ",0 -bsSawText db ", ïèëà ",0 -bsBeerText db ", ïèâî ",0 -bsCuffsText db ", íàðó÷íèêè ",0 -bsMenuText db 13,10,"1. Ñòðåëÿòü â ñåáÿ",13,10 - db "2. Ñòðåëÿòü â AI",13,10 - db "3. Ëóïà",13,10 - db "4. Ïèëà",13,10 - db "5. Ïèâî",13,10 - db "6. Íàðó÷íèêè",13,10 - db "Âûáîð: ",0 -bsLoadText db 13,10,"Êðóïüå çàðÿæàåò äðîáîâèê...",13,10,0 -bsLiveLoadedText db "Æèâîé ïàòðîí",13,10,0 -bsBlankLoadedText db "Õîëîñòîé ïàòðîí",13,10,0 -bsPlayerTurnText db 13,10,"Òâîé õîä.",13,10,0 -bsAITurnText db 13,10,"Õîä AI...",13,10,0 -bsShootPlayerText db "Âûñòðåë â òåáÿ.",13,10,0 -bsShootAIText db "Âûñòðåë â AI.",13,10,0 -bsDryText db "Ùåë÷îê. Õîëîñòîé.",13,10,0 -bsHitText db "ÁÀÕ! Óðîí: ",0 -bsGlassUseText db "Ëóïà ïîêàçûâàåò ïàòðîí.",13,10,0 -bsSawUseText db "Ïèëà íàäðåçàåò ñòâîë. Ñëåäóþùèé æèâîé âûñòðåë ñèëüíåå.",13,10,0 -bsBeerUseText db "Ïèâî. Ïàòðîí âûëåòàåò èç äðîáîâèêà: ",0 -bsCuffsUseText db "Íàðó÷íèêè çàùåëêíóëèñü. AI ïðîïóñòèò õîä.",13,10,0 -bsNoItemText db "Ýòîãî ïðåäìåòà íåò.",13,10,0 -bsAISawText db "AI èñïîëüçóåò ïèëó.",13,10,0 -bsAIGlassText db "AI ñìîòðèò ïàòðîí ÷åðåç ëóïó.",13,10,0 -bsAIBeerText db "AI âûáðàñûâàåò ïàòðîí ïèâîì.",13,10,0 -bsAICuffsText db "AI íàäåâàåò íà òåáÿ íàðó÷íèêè.",13,10,0 -bsSkipPlayerText db "Òû â íàðó÷íèêàõ è ïðîïóñêàåøü õîä.",13,10,0 -bsSkipAIText db "AI â íàðó÷íèêàõ è ïðîïóñêàåò õîä.",13,10,0 -bsWinText db "AI ïàäàåò. Òû çàáèðàåøü áàíê ñòîëà.",13,10,0 -bsLoseText db "Òû ïàäàåøü. Êðóïüå çàáèðàåò ñòàâêó.",13,10,0 -rrGunUp db 117,117,36,96,36,36,36,117,117,36,36,36,13,10 - - db 80,42,36,96,36,36,36,36,36,36,36,36,13,10 - - db 63,42,36,32,36,36,36,36,36,36,36,36,13,10 - - db 36,58,36,32,36,36,36,36,36,36,36,36,13,10 - - db 34,58,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,78,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,36,82,82,36,36,36,36,36,36,13,10 - - db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,64,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,76,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,42,42,42,117,46,46,13,10 - - db 32,32,36,32,36,36,36,36,36,36,36,36,36,32,96,42,42,42,117,36,42,116,13,10 - - db 32,32,36,120,120,117,117,36,117,36,36,36,36,117,117,117,107,46,36,36,36,63,13,10 - - db 32,32,36,120,36,117,117,56,117,96,96,96,36,117,117,117,54,46,34,36,63,63,13,10 - - db 32,32,36,36,36,63,36,36,36,96,96,96,36,36,36,36,36,96,34,34,63,63,13,10 - - db 32,32,36,36,36,63,36,36,36,32,32,32,36,36,36,36,75,32,32,32,36,36,32,46,46,13,10 - - db 32,32,36,36,36,72,36,36,36,32,32,32,36,36,36,36,75,46,32,32,36,36,36,36,36,78,115,46,13,10 - - db 32,32,36,36,36,36,36,36,36,32,32,32,36,36,36,36,88,46,32,32,82,34,36,36,36,37,37,46,78,13,10 - - db 32,32,36,36,36,37,117,117,36,32,32,32,117,117,117,36,58,58,32,32,82,117,117,117,32,32,34,63,63,58,13,10 - - db 32,32,36,36,36,37,117,117,33,32,32,32,36,117,36,36,36,58,32,32,124,124,117,117,117,117,42,63,36,36,13,10 - - db 32,32,36,63,63,78,32,32,32,32,32,32,36,39,36,36,36,32,32,32,36,36,42,117,117,117,33,39,58,36,13,10 - - db 32,32,36,63,63,46,46,46,46,46,46,46,46,36,36,36,36,32,32,32,36,42,42,96,32,32,100,100,34,34,13,10 - - db 36,46,36,82,100,46,46,46,46,36,46,46,34,63,55,36,117,111,32,32,53,117,117,46,46,43,42,42,42,13,10 - - db 39,42,64,82,46,96,96,34,34,42,42,64,34,34,96,117,117,111,117,120,120,117,96,96,85,43,33,96,13,10 - - db 42,42,64,42,42,120,117,117,42,42,42,34,32,32,32,42,82,82,117,120,36,34,96,96,37,37,13,10 - - db 32,32,32,42,42,120,78,42,42,37,37,32,32,32,32,46,46,117,46,100,36,46,46,117,37,36,36,111,46,13,10 - - db 32,32,32,32,32,34,78,78,96,37,46,46,32,32,36,46,46,34,46,100,117,36,36,36,36,36,36,36,36,36,117,117 - - db 46,46,13,10 - - db 32,32,32,32,32,56,56,64,46,109,34,58,58,58,82,42,34,34,120,36,36,36,36,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,99,13,10 - - db 32,32,32,32,32,36,36,101,34,34,34,58,78,64,32,32,32,32,36,36,78,96,34,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,36,64,32,32,32,34,78,37,117,117,46,32,32,63,63,117,117,117,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,96,96,96,34,42,117,36,36,36,36,36,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,36,36,36,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,94,94,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,42,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,42,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,96 - - db 34,43,36,36,36,42,36,36,36,36,36,36,62,13,10 - - db 0 - -rrGunUpLeft db 32,32,32,32,32,32,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,13,10 - - db 32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,62,13,10 - - db 32,32,32,32,32,117,32,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,62,13,10 - - db 32,32,32,32,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,62,62,13,10 - - db 32,32,32,36,32,36,36,36,32,36,36,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,46,32,78,58,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,62,13,10 - - db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,46,116,32,32,32,32,32 - - db 32,32,115,46,63,32,36,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,62,13,10 - - db 32,36,96,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,46,36,36,63,63,32,32,46 - - db 36,78,37,34,63,36,36,34,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 - - db 117,32,36,32,32,36,36,36,32,36,36,32,36,36,36,32,32,32,32,32,32,32,32,42,117,32,36,63,32,63,32,36 - - db 32,36,32,32,42,39,34,32,32,32,32,32,32,32,46,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 - - db 80,42,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,117,76,42,42,46,36,36,34,63,36,36,36 - - db 36,117,117,117,33,100,42,42,32,32,32,32,117,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,63,58,32,36,32,32,36,36,36,32,36,36,32,36,36,32,36,32,117,32,117,42,32,107,46,34,32,32,36,32,34 - - db 117,32,117,117,32,32,42,96,32,32,32,117,32,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 - - db 32,32,36,58,32,36,32,36,32,36,36,32,36,36,36,32,36,36,32,36,117,32,96,117,54,32,96,32,32,32,82,117 - - db 32,117,117,32,32,43,33,32,32,46,32,36,36,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 - - db 32,32,34,32,78,36,36,32,36,36,36,36,36,36,36,64,36,36,36,36,36,32,117,117,36,36,75,46,32,32,32,124 - - db 124,36,42,96,46,85,37,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,36,13,10 - - db 32,32,32,32,32,32,32,36,36,36,32,82,36,32,36,36,32,36,36,36,32,36,117,32,36,36,75,32,46,32,32,32 - - db 36,32,42,117,96,32,37,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,36,36,36,82,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,88,58,58,32,32 - - db 32,36,117,117,96,96,37,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,96,32,96,36,36,32,36,36,32,36,32,32 - - db 32,32,120,32,34,46,36,32,36,36,32,36,36,32,36,36,36,32,36,36,32,43,13,10 - - db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,96,96,96,32,32,36,36,117,36,36,36,36,111 - - db 32,117,120,36,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,32,117,56,36,32,32,32,32,32,117,117,32,36,36,32,117 - - db 111,32,117,100,117,32,36,34,32,36,36,36,32,36,36,32,36,36,32,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,32,117,117,32,36,36,32,32,32,32,32,36,39,32,36,36,117 - - db 32,82,46,32,100,36,96,32,117,36,32,36,36,32,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,120,120,36,63,36,36,36,36,36,32,32,32,36,46,36,55,96,42 - - db 82,46,34,46,36,36,117,117,36,36,36,36,36,36,36,42,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,120,32,36,63,36,32,36,36,32,32,32,46,32,34,34,32,32 - - db 46,32,46,34,36,32,63,36,32,36,36,36,32,42,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,33,32,46,46,46,64,34,32,32 - - db 36,46,34,32,32,63,36,36,36,36,94,94,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,37,32,117,32,46,32,36,42,32,34,32,32 - - db 32,82,32,32,32,117,36,32,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,37,32,32,46,46,42,32,42,32,32,32 - - db 58,32,32,46,42,32,32,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,63,46,46,46,34,42,42,37,46,46,58 - - db 78,64,117,96,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,63,32,63,46,96,32,117,42,32,37,34,58 - - db 32,37,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,100,46,120,117,42,78,96,109,34,34 - - db 78,32,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,82,32,42,120,78,32,64,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,32,64,42,42,32,34,56,32,101,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,64,32,42,32,56,36,36,64,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,32,32,32,32,32,32,36,13,10 - - db 0 - -rrGunLeft db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,99,62,62,62,62,62,62,62,62,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 46,36,36,36,36,36,36,36,36,36,43,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 46,36,36,36,36,36,36,36,36,36,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 117,36,36,36,36,36,36,36,36,36,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 117,36,36,36,36,36,36,36,36,36,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,36,36,34,32,32,32,32 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,63,36,58,34,42,32,32,46 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,63,63,39,100,42,96,32,111 - - db 36,36,36,36,36,36,36,36,36,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,37,34,42,33,100,42,33,32,36 - - db 36,36,36,36,36,36,36,36,36,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,37,32,117,117,32,43,43,37,36 - - db 36,36,36,36,36,36,36,36,36,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,32,117,117,32,46,85,37,37 - - db 36,36,36,36,36,36,36,36,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,117,117,117,96,46,96,96,117 - - db 36,36,36,36,36,36,36,36,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,117,117,42,42,117,96,96,46 - - db 36,36,34,117,36,36,36,94,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,63,63,63,36,36,34,117,124,36,42,117,117,34,46 - - db 36,36,96,117,36,36,36,94,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,36,63,63,36,36,82,82,124,36,36,53,120,36,36 - - db 117,36,78,117,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,36,34,32,32,32,32,32,32,32,32,120,120,100 - - db 100,36,36,63,36,36,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,36,34,34,32,32,32,32,32,32,32,32,117,117,46 - - db 46,120,36,63,36,36,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,46,96,32,46,46,58,58,32,32,111,111,82,117 - - db 34,34,32,32,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,107,54,36,75,75,88,58,36,36,36,117,117,82,46 - - db 46,34,32,32,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,42,42,117,117,36,36,36,36,36,36,36,36,36,117,42,46 - - db 46,42,32,46,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,96,117,117,36,36,36,36,117,36,36,36,55,96,32,32 - - db 36,82,32,117,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,32,117,117,36,36,36,36,117,117,39,36,63,34,32,32 - - db 32,58,64,117,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,117,36,36,46,34,34,32,32 - - db 32,58,78,37,96,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,64,34,32 - - db 46,58,58,78,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,42,42,37 - - db 46,34,34,34,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,36,36,64,36,36,36,36,36,96,96,32,32,32,32,32,32,46,36,42,42,37 - - db 37,109,34,13,10 - - db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,36,33,32,46,46,34,42,42 - - db 96,46,34,13,10 - - db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,56,36,36,36,36,117,117,32,46,46,34,117,42 - - db 78,64,101,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,117,117,32,46,46,96,117,78 - - db 78,56,36,64,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,117,117,63,63,72,36,37,37,78,46,46,96,120,120 - - db 34,56,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,120,36,36,36,36,36,36,36,63,63,100,46,42,42 - - db 13,10 - - db 96,96,32,32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,120,120,36,36,36,36,36,36,63,63,82,82,42,42 - - db 13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,64,64,13 - - db 10 - - db 117,42,42,58,58,78,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,42,13 - - db 10 - - db 117,80,63,36,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,13 - - db 10 - - db 0 - -rrGunDownLeft db 32,32,32,32,32,32,62,36,13,10 - - db 32,32,32,32,32,62,36,32,36,13,10 - - db 32,32,32,62,62,36,36,36,36,36,13,10 - - db 32,32,32,62,36,32,36,36,36,32,36,13,10 - - db 32,32,62,36,32,36,36,32,36,36,32,36,13,10 - - db 32,62,36,36,36,36,36,36,36,36,36,42,36,13,10 - - db 99,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 - - db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,43,13,10 - - db 32,32,36,36,32,36,36,32,36,36,32,36,36,36,32,34,13,10 - - db 32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,96,13,10 - - db 32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,13,10 - - db 32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,42,13,10 - - db 32,32,32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,42,13,10 - - db 32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,36,96,13,10 - - db 32,32,32,32,32,32,32,32,46,36,32,36,36,36,32,36,36,32,36,42,13,10 - - db 32,32,32,32,32,32,32,32,117,32,36,36,32,36,36,36,32,36,36,32,34,13,10 - - db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,36,36,36,36,36,94,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,94,13,10 - - db 32,32,32,32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,117,36,32,36,34,13,10 - - db 32,32,32,32,32,32,34,32,42,96,32,32,36,36,32,36,34,32,117,36,36,32,34,13,10 - - db 32,32,32,32,32,36,36,34,42,42,33,37,37,37,36,36,36,96,117,63,36,36,13,10 - - db 32,32,32,32,58,32,36,39,100,32,43,85,32,96,46,36,32,36,36,32,63,117,13,10 - - db 32,32,32,32,78,63,63,42,33,32,32,46,96,96,34,46,117,100,36,36,32,32,42,34,13,10 - - db 32,32,32,32,32,46,34,32,117,117,32,96,117,117,32,36,100,32,46,34,32,32,46,96,13,10 - - db 32,32,32,32,46,115,37,32,117,117,117,42,42,117,120,120,117,46,34,46,34,32,32,117,96,96,13,10 - - db 32,32,32,32,32,32,78,36,117,32,117,36,32,36,32,117,32,82,46,32,46,82,32,64,37,13,10 - - db 32,32,32,32,32,32,36,32,36,117,32,124,36,32,32,32,111,32,82,46,36,32,58,78,32,78,13,10 - - db 32,32,32,32,32,32,46,36,36,34,117,124,32,32,32,111,117,117,42,32,32,32,32,58,58,34,13,10 - - db 32,32,32,32,32,32,32,32,36,32,82,32,32,32,32,36,32,36,96,32,32,32,32,46,34,34,13,10 - - db 32,32,32,32,32,32,32,63,36,36,32,32,32,58,36,36,36,36,55,34,34,34,32,46,37,109,34,101,64,13,10 - - db 32,32,32,32,32,32,63,32,63,32,32,32,46,58,32,36,36,32,36,34,64,32,42,37,32,96,64,32,36,36,13,10 - - db 32,32,32,32,32,32,63,63,34,32,32,46,32,88,36,36,32,39,46,32,46,42,32,42,42,78,32,56,36,13,10 - - db 32,32,32,32,32,116,36,36,36,34,96,75,75,36,36,117,117,36,36,46,46,36,42,42,117,42,78,34,56,13,10 - - db 32,32,32,32,32,46,36,32,36,46,32,36,36,36,32,36,117,32,32,32,46,32,46,34,32,117,120,13,10 - - db 32,32,32,32,32,32,46,117,46,107,54,36,36,36,36,36,32,32,32,32,32,46,46,46,96,120,42,42,42,13,10 - - db 32,32,32,32,32,32,32,42,42,32,117,117,32,36,36,32,32,32,32,32,33,32,32,46,46,46,32,42,13,10 - - db 32,32,32,32,32,32,32,32,42,42,96,117,117,36,96,32,32,32,36,36,117,117,32,46,63,100,82,64,64,13,10 - - db 32,32,32,32,32,32,32,32,76,117,32,32,36,96,32,96,32,32,36,36,117,32,37,63,32,63,36,32,42,42,13,10 - - db 32,32,32,32,32,32,32,32,117,32,117,36,32,36,96,96,32,36,36,32,36,37,32,36,63,36,32,46,39,13,10 - - db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,32,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,56,32,36,63,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,63,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,117,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,36,36,32,64,36,36,32,36,36,32,120,120,36,13,10 - - db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,120,36,36,13,10 - - db 32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,13,10 - - db 32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 - - db 32,32,32,36,32,36,36,32,36,36,32,36,82,36,32,32,36,13,10 - - db 32,32,32,36,36,32,36,36,36,32,36,36,32,82,36,36,13,10 - - db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 - - db 32,36,32,36,36,32,36,36,36,32,32,36,13,10 - - db 32,32,117,36,36,36,36,36,36,32,36,36,13,10 - - db 32,32,32,36,32,36,36,32,32,36,32,78,13,10 - - db 32,32,32,32,36,32,36,32,36,32,58,13,10 - - db 32,32,32,32,32,36,96,36,36,58,36,34,13,10 - - db 32,32,32,32,32,32,36,32,42,63,13,10 - - db 32,32,32,32,32,32,32,117,80,13,10 - - db 0 - -rrGunDown db 62,36,36,36,36,36,36,42,36,36,36,43,34,96,96,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,42,96,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,34,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,94,94,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,42,34,96,96 - - db 96,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,117,63,63,32,32,46,117,117 - - db 37,78,34,32,32,32,64,36,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,96,78,36,36,32,32,32,32,64 - - db 78,58,34,34,34,101,36,36,13,10 - - db 99,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,120,34,34,42,82,58 - - db 58,58,34,109,46,64,56,56,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,46,46,117,117,36,36,36,36,36,36,36,36,36,117,100,46,34,46,46,36,32 - - db 32,46,46,37,96,78,78,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,111,36,36,37,117,46,46,36,100,46,117,46,46,32,32 - - db 32,32,37,37,42,42,78,120,42,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,37,37,96,96,34,36,120,117,82,82,42,32,32 - - db 32,34,42,42,42,117,117,120,42,42,64,42,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,33,43,85,96,96,117,120,120,117,111,117,117,96,34 - - db 34,64,42,42,34,34,96,96,46,82,64,42,39,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,42,43,46,46,117,117,53,32,32,111,117,36,55,63 - - db 34,46,46,36,46,46,46,46,100,82,36,46,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,100,100,32,32,96,42,42,36,32,32,32,36,36,36,36 - - db 46,46,46,46,46,46,46,46,63,63,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,58,39,33,117,117,117,42,36,36,32,32,32,36,36,36,39 - - db 36,32,32,32,32,32,32,78,63,63,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,42,117,117,117,117,124,124,32,32,58,36,36,36,117 - - db 36,32,32,32,33,117,117,37,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,63,63,34,32,32,117,117,117,82,32,32,58,58,36,117,117 - - db 117,32,32,32,36,117,117,37,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,46,37,37,36,36,36,34,82,32,32,46,88,36,36,36 - - db 36,32,32,32,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,115,78,36,36,36,36,36,32,32,46,75,36,36,36 - - db 36,32,32,32,36,36,36,72,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,32,36,36,32,32,32,75,36,36,36 - - db 36,32,32,32,36,36,36,63,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,34,34,96,36,36,36,36 - - db 36,96,96,96,36,36,36,63,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,36,34,46,54,117,117,117 - - db 36,96,96,96,117,56,117,117,36,120,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,36,36,36,46,107,117,117,117 - - db 36,36,36,36,117,36,117,117,120,120,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,42,36,117,42,42,42,96,32 - - db 36,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,117,42,42,42,117,117 - - db 36,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,117,117 - - db 36,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,64,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,82,82,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,78,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,58,34,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,58,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,32,36,42,63,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,36,36,36,36,36,96,36,42,80,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,36,36,36,117,117,36,36,36,96,36,117,117,13,10 - - db 0 - -rrGunDownRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 36,32,32,32,32,32,32,42,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,64 - - db 36,36,56,32,42,32,64,42,39,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101 - - db 32,56,34,32,42,42,64,32,46,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34 - - db 64,32,78,120,42,32,82,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,32,78,34,34,109 - - db 96,78,42,117,120,46,100,63,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,37,32,58,34,37 - - db 32,42,117,32,96,46,63,32,63,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,96,117,64,78,58,46,46 - - db 37,42,42,34,46,46,46,63,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,32,42,46,32,32,58,32,32,32 - - db 42,32,42,46,46,32,32,37,32,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,117,32,32,32,82,32,32,32,34 - - db 32,42,36,32,46,32,117,32,37,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,94,94,36,36,36,36,63,32,32,34,46,36,32,32,34 - - db 64,46,46,46,32,33,117,117,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,32,36,36,36,32,36,63,32,36,34,46,32,46,32,32,34 - - db 34,32,46,32,32,32,36,36,32,36,63,36,32,120,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,36,36,36,36,36,36,36,117,117,36,36,46,34,46,82,42,96,55 - - db 36,46,36,32,32,32,36,36,36,36,36,63,36,120,120,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,117,32,96,36,100,32,46,82,32,117,36,36 - - db 32,39,36,32,32,32,32,32,36,36,32,117,117,32,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,96,32,36,36,32,36,36,32,36,36,36,32,34,36,32,117,100,117,32,111,117,32,36 - - db 36,32,117,117,32,32,32,32,32,36,56,117,32,36,36,32,32,36,13,10 - - db 32,32,32,32,32,32,32,32,34,96,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,36,120,117,32,111,36,36 - - db 36,36,117,36,36,32,32,96,96,96,117,36,36,36,36,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,43,32,36,36,32,36,36,36,32,36,36,32,36,36,32,36,46,34,32,120,32,32,32,32,36 - - db 32,36,36,32,36,36,96,32,96,36,32,36,36,32,36,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,96,96,117,117,36,32,32,32,58 - - db 58,88,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,82,36,36,36,13,10 - - db 32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,37,32,96,117,42,32,36,32,32,32 - - db 46,32,75,36,36,32,117,36,32,36,36,36,32,36,36,32,36,82,32,36,36,36,13,10 - - db 32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,32,37,85,46,96,42,36,124,124,32,32 - - db 32,46,75,36,36,117,117,32,36,36,36,36,36,64,36,36,36,36,36,36,36,32,36,36,78,32,34,13,10 - - db 32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,32,36,36,32,46,32,32,33,43,32,32,117,117,32,117,82,32 - - db 32,32,96,32,54,117,96,32,117,36,32,36,36,32,36,36,36,32,36,36,32,36,32,36,32,58,36,13,10 - - db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,36,32,117,32,32,32,96,42,32,32,117,117,32,117,34,32,36 - - db 32,32,34,46,107,32,42,117,32,117,32,36,32,36,36,32,36,36,32,36,36,36,32,32,36,32,58,63,13,10 - - db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,117,32,32,32,32,42,42,100,33,117,117,117,36,36,36,36 - - db 63,34,36,36,46,42,42,76,117,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,42,80,13,10 - - db 36,32,36,36,32,36,36,36,32,36,36,32,36,36,46,32,32,32,32,32,32,32,34,39,42,32,32,36,32,36,32,63 - - db 32,63,36,32,117,42,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,32,117,13,10 - - db 62,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,34,36,36,63,34,37,78,36,46,32,32 - - db 63,63,36,36,46,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,36,13,10 - - db 32,62,36,32,36,36,32,36,36,36,32,36,32,32,32,32,32,32,32,32,32,32,36,32,63,46,115,32,32,32,32,32 - - db 32,32,116,46,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,13,10 - - db 32,32,62,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,58,78,32,46,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,13,10 - - db 32,32,62,62,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,62,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,13,10 - - db 32,32,32,32,32,62,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,13,10 - - db 32,32,32,32,32,32,99,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,13,10 - - db 0 - -rrGunRight db 32,32,32,32,32,32,32,32,32,32,32,32,42,39,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,32,34,36,63,80,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 - - db 32,32,32,32,32,78,58,58,42,42,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,64,64,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,42,42,82,82,63,63,36,36,36,36,36,36,120,120,32,32,32,32,32,36,36 - - db 36,36,32,32,32,32,32,32,32,96,96,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,42,42,46,100,63,63,36,36,36,36,36,36,36,120,36,36,36,36,36,36,82 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,36,36,56,34,120,120,96,46,46,78,37,37,36,72,63,63,117,117,36,36,36,36,36,36,82 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,64,36,56,78,78,117,96,46,46,32,117,117,36,36,36,36,117,117,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,101,64,78,42,117,34,46,46,32,117,117,36,36,36,36,56,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,117,13,10 - - db 32,32,32,32,32,32,32,32,34,46,96,42,42,34,46,46,32,33,36,36,36,36,36,117,117,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,117,13,10 - - db 32,32,32,32,32,32,32,32,34,109,37,37,42,42,36,46,32,32,32,32,32,32,96,96,36,36,36,36,36,64,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,34,34,34,46,37,42,42,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,78,58,58,46,32,34,64,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 - - db 36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,96,37,78,58,32,32,32,34,34,46,36,36,117,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,96,117,64,58,32,32,32,34,63,36,39,117,117,36,36,36,36,117,117,32,117,117,13,10 - - db 32,32,32,32,32,32,96,117,32,82,36,32,32,96,55,36,36,36,117,36,36,36,36,117,117,96,117,117,13,10 - - db 32,32,32,32,32,32,34,46,32,42,46,46,42,117,36,36,36,36,36,36,36,36,36,117,117,42,42,76,13,10 - - db 32,32,32,32,32,32,42,32,32,34,46,46,82,117,117,36,36,36,58,88,75,75,36,54,107,42,42,13,10 - - db 32,32,32,32,32,32,117,32,32,34,34,117,82,111,111,32,32,58,58,46,46,32,96,46,46,42,42,13,10 - - db 32,32,32,32,34,36,36,63,36,120,46,46,117,117,32,32,32,32,32,32,32,32,34,34,36,117,117,13,10 - - db 32,32,32,32,34,36,36,63,36,36,100,100,120,120,32,32,32,32,32,32,32,32,34,36,36,36,46,13,10 - - db 32,32,32,32,36,36,36,117,78,36,117,36,36,120,53,36,36,124,82,82,36,36,63,63,36,42,46,13,10 - - db 32,32,32,94,36,36,36,117,96,36,36,46,34,117,117,42,36,124,117,34,36,36,63,63,63,116,13,10 - - db 32,32,32,94,36,36,36,117,34,36,36,46,96,96,117,42,42,117,117,36,36,13,10 - - db 32,32,34,36,36,36,36,36,36,36,36,117,96,96,46,96,117,117,117,36,36,46,13,10 - - db 32,32,42,36,36,36,36,36,36,36,36,37,37,85,46,32,117,117,32,36,36,46,13,10 - - db 32,96,36,36,36,36,36,36,36,36,36,36,37,43,43,32,117,117,32,37,78,13,10 - - db 32,42,36,36,36,36,36,36,36,36,36,36,32,33,42,100,33,42,34,37,115,13,10 - - db 32,42,36,36,36,36,36,36,36,36,36,111,32,96,42,100,39,63,63,46,46,13,10 - - db 32,36,36,36,36,36,36,36,36,36,36,46,32,32,42,34,58,36,63,78,13,10 - - db 32,36,36,36,36,36,36,36,36,36,36,32,32,32,32,34,36,36,58,13,10 - - db 96,36,36,36,36,36,36,36,36,36,117,13,10 - - db 96,36,36,36,36,36,36,36,36,36,117,13,10 - - db 34,36,36,36,36,36,36,36,36,36,46,13,10 - - db 43,36,36,36,36,36,36,36,36,36,46,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 42,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 36,36,36,36,36,36,36,36,36,36,13,10 - - db 62,62,62,62,62,62,62,62,62,99,13,10 - - db 0 - -rrGunUpRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,80,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,42,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,36,58,36,36,96,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,32,36,32,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,32,36,32,32,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,82,32,36,36,32,36,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,82,36,32,36,36,32,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,36,36,120,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,36,120,120,32,36,36,32,36,36,64,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,36,36,32,36,117,32,36,36,36,32,36,36,32,36,13,10 - - db 32,32,32,32,32,32,36,36,36,36,36,63,117,117,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,36,36,32,36,63,36,32,56,117,32,36,36,36,13,10 - - db 32,36,32,32,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,117,13,10 - - db 32,39,46,32,36,63,36,32,37,36,32,36,36,32,96,96,36,32,36,117,32,117,13,10 - - db 42,42,32,36,63,32,63,37,32,117,36,36,32,32,96,32,96,36,32,32,117,76,13,10 - - db 32,64,64,82,100,63,46,32,117,117,36,36,32,32,32,96,36,117,117,96,42,42,13,10 - - db 32,32,42,32,46,46,46,32,32,33,32,32,32,32,32,36,36,32,117,117,32,42,42,13,10 - - db 32,42,42,42,120,96,46,46,46,32,32,32,32,32,36,36,36,36,36,54,107,46,117,46,13,10 - - db 32,32,32,120,117,32,34,46,32,46,32,32,32,117,36,32,36,36,36,32,46,36,32,36,46,13,10 - - db 32,56,34,78,42,117,42,42,36,46,46,36,36,117,117,36,36,75,75,96,34,36,36,36,116,13,10 - - db 32,36,56,32,78,42,42,32,42,46,32,46,39,32,36,36,88,32,46,32,32,34,63,63,13,10 - - db 36,36,32,64,96,32,37,42,32,64,34,36,32,36,36,32,58,46,32,32,32,63,32,63,13,10 - - db 32,64,101,34,109,37,46,32,34,34,34,55,36,36,36,36,58,32,32,32,36,36,63,13,10 - - db 32,32,32,32,34,34,46,32,32,32,32,96,36,32,36,32,32,32,32,82,32,36,13,10 - - db 32,32,32,32,34,58,58,32,32,32,32,42,117,117,111,32,32,32,124,117,34,36,36,46,13,10 - - db 32,32,32,32,78,32,78,58,32,36,46,82,32,111,32,32,32,36,124,32,117,36,32,36,13,10 - - db 32,32,32,32,32,37,64,32,82,46,32,46,82,32,117,32,36,32,36,117,32,117,36,78,13,10 - - db 32,32,32,32,96,96,117,32,32,34,46,34,46,117,120,120,117,42,42,117,117,117,32,37,115,46,13,10 - - db 32,32,32,32,32,32,96,46,32,32,34,46,32,100,36,32,117,117,96,32,117,117,32,34,46,13,10 - - db 32,32,32,32,32,32,34,42,32,32,36,36,100,117,46,34,96,96,46,32,32,33,42,63,63,78,13,10 - - db 32,32,32,32,32,32,32,32,117,63,32,36,36,32,36,46,96,32,85,43,32,100,39,36,32,58,13,10 - - db 32,32,32,32,32,32,32,32,36,36,63,117,96,36,36,36,37,37,37,33,42,42,34,36,36,13,10 - - db 32,32,32,32,32,32,32,34,32,36,36,117,32,34,36,32,36,36,32,32,96,42,32,34,13,10 - - db 32,32,32,32,32,32,32,32,34,36,32,36,117,32,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,46,13,10 - - db 32,32,32,32,32,32,32,32,32,94,36,36,32,36,36,32,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,94,36,36,36,36,36,36,36,36,36,36,117,13,10 - - db 32,32,32,32,32,32,32,32,32,34,32,36,36,32,36,36,36,32,36,36,32,117,13,10 - - db 32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,32,36,36,36,32,36,46,13,10 - - db 32,32,32,32,32,32,32,32,32,32,96,36,36,36,36,36,36,36,36,36,36,36,46,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,36,32,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,42,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,36,36,32,36,36,32,36,36,32,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,99,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,32,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,62,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,62,13,10 - - db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,62,13,10 - - db 0 - -pokerReplaceText db "Ïîìåíÿòü êàðòó ",0 -pokerReplaceTail db "? (y/n): ",0 -pokerAIExchangeText db 13,10,"AI äóìàåò íàä îáìåíîì...",13,10,0 -pokerRevealText db 13,10,"AI âñêðûâàåò ïîêåðíóþ ðóêó...",13,10,0 -pokerYourComboText db "Òâîÿ êîìáèíàöèÿ: ",0 -pokerAIComboText db "Êîìáèíàöèÿ AI: ",0 -pokerTableText db 13,10,"Êàðòû íà ñòîëå:",13,10,0 -pokerHintText db "Ïîäñêàçêà: ñåé÷àñ ó òåáÿ ",0 -pokerDecisionText db "1 - èãðàòü, 2 - ïîâûñèòü ñòàâêó, 0 - ôîëä: ",0 -pokerPotText db "Áàíê ðàóíäà: $",0 -pokerBetText db "Òâîÿ òåêóùàÿ ñòàâêà: $",0 -pokerChipTitle db "Ôèøêè:",13,10,0 -pokerChipHigh db " [###]",13,10,0 -pokerChipMid db " [===]",13,10,0 -pokerChipLow db " [___]",13,10,0 -pokerRaiseAskText db "Íà ñêîëüêî ïîâûñèòü ñòàâêó: $",0 -pokerRaisedText db "Òû ïîâûñèë ñòàâêó. Íîâàÿ ñòàâêà: $",0 -pokerBadRaiseText db "Ïîâûøåíèå äîëæíî áûòü áîëüøå 0 è íå áîëüøå òâîåãî áàíêà.",13,10,0 -pokerAICallRaiseText db 13,10,"AI îòâå÷àåò íà ñòàâêó.",13,10,0 -pokerAIFoldRaiseText db 13,10,"AI íå ïðèíèìàåò ïîâûøåíèå è äåëàåò ôîëä. Òû âûèãðàë!",13,10,0 -pokerHardIntroText db "Hard Poker: îäèí ðàç ìîæíî çàìåíèòü îäíó êàðìàííóþ êàðòó.",13,10,0 -pokerHardExchangeText db "Çàìåíèòü êàðòó? 1 - ïåðâóþ, 2 - âòîðóþ, 0 - íå ìåíÿòü: ",0 -pokerHardAIExchangeText db 13,10,"AI ïåðåñìàòðèâàåò êàðìàííûå êàðòû...",13,10,0 -pokerAIRaiseText db 13,10,"AI ïîâûøàåò ñòàâêó íà $",0 -pokerCallRaiseText db "Îòâåòèòü? 1 - êîëë, 0 - ôîëä: ",0 -pokerPlayerCallText db "Òû îòâåòèë íà ïîâûøåíèå. Íîâàÿ ñòàâêà: $",0 -pokerFoldToRaiseText db 13,10,"Òû ñáðîñèë êàðòû ïîñëå ïîâûøåíèÿ AI.",13,10,"Òû ïðîèãðàë.",13,10,0 -pokerFoldText db 13,10,"Òû ñäåëàë ôîëä.",13,10,"Òû ïðîèãðàë.",13,10,0 -pokerAIFoldText db 13,10,"AI ñäåëàë ôîëä. Òû âûèãðàë!",13,10,0 -pokerNextCardText db 13,10,"Îòêðûâàåòñÿ ñëåäóþùàÿ êàðòà...",13,10,0 -pokerHighName db "Ñòàðøàÿ êàðòà",13,10,0 -pokerPairName db "Ïàðà",13,10,0 -pokerTwoPairName db "Äâå ïàðû",13,10,0 -pokerTripsName db "Òðîéêà",13,10,0 -pokerStraightName db "Ñòðèò",13,10,0 -pokerFlushName db "Ôëåø",13,10,0 -pokerFullHouseName db "Ôóëë õàóñ",13,10,0 -pokerFourName db "Êàðå",13,10,0 -pokerStraightFlushName db "Ñòðèò-ôëåø",13,10,0 - -; === Òåêñòû è ñèìâîëû ñëîò-ìàøèí === -slotPullText db "Êðóòèì áàðàáàíû...",13,10,0 -slotLeft db "[ ",0 -slotMid db " ] [ ",0 -slotRight db " ]",13,10,0 -slotJackpot db "Äæåêïîò!",13,10,0 -slotPair db "Êîìáèíàöèÿ ñûãðàëà!",13,10,0 -slotPayoutText db "Âûïëàòà x",0 -slotPayTableText db "Ñèìâîëû: LEM/CHR x2, CLV/BEL x3, DIA/BOX x5, 777 x7.",13,10 - db "Êîìáèíàöèè: Ãîð.M/Âåðò.M/Äèàã.M x1, Ãîð.L x2, Ãîð.XL x3",13,10 - db "Ââåðõ/Âíèç x4, Íåáî/Çåìëÿ x7, Ãëàç x8, Äæåêïîò x10.",13,10,0 -slotEmpty db "Íå ïîâåçëî.",13,10,0 -slotComboText db "Êîìáèíàöèÿ: ",0 -slotMultiplierText db "Ìíîæèòåëü: x",0 -slotTotalMultiplierText db "Èòîãîâûé ìíîæèòåëü: x",0 slotComboHorM db "Ãîð. M",0 slotComboVertM db "Âåðò. M",0 slotComboDiagM db "Äèàã. M",0 @@ -2371,100 +225,6 @@ slotComboEye db " slotComboJackpot db "Äæåêïîò",0 ; === Ãðàôèêà êàðò: ðàìêè, ñòðîêè, ðóáàøêè è ïåðåâîðîò === -cardTop db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 13,10,0 -cardBottom db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 13,10,0 -cardEmpty db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 13,10,0 -cardSuitLeft db 0E2h, 094h, 082h, " ", 0 -cardSuitRight db " ", 0E2h, 094h, 082h, 13,10,0 -cardRankOneL db 0E2h, 094h, 082h, " ", 0 -cardRankOneR db " ", 0E2h, 094h, 082h, 13,10,0 -cardRankTenL db 0E2h, 094h, 082h, " ", 0 -cardRankTenR db " ", 0E2h, 094h, 082h, 13,10,0 -cardCenterL db 0E2h, 094h, 082h, " ", 0 -cardCenterR db " ", 0E2h, 094h, 082h, 13,10,0 -cardTopSeg db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 0 -cardBottomSeg db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 0 -cardEmptySeg db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 0 -cardBackSeg db 0E2h, 094h, 082h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 094h, 082h, 0 -cardBackBlueSeg db 0E2h, 094h, 082h, "~~*~~*~~*", 0E2h, 094h, 082h, 0 -cardBackRedSeg db 0E2h, 094h, 082h, "XX+XX+XX+", 0E2h, 094h, 082h, 0 -cardBackGoldSeg db 0E2h, 094h, 082h, "$*$*$*$*$", 0E2h, 094h, 082h, 0 -cardBackSkullSeg db 0E2h, 094h, 082h, "|o",0E2h,098h,0A0h," v ",0E2h,098h,0A0h,"o|", 0E2h, 094h, 082h, 0 -cardBackCloverSeg db 0E2h, 094h, 082h, "$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$", 0E2h, 094h, 082h, 0 -backGray1 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 -backGray2 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 -backGray3 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 -backGray4 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 -backGray5 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 -backBlue1 db 0E2h,094h,082h,"\\==*==//",0E2h,094h,082h,0 -backBlue2 db 0E2h,094h,082h,"/ ___ /",0E2h,094h,082h,0 -backBlue3 db 0E2h,094h,082h,"| (@@@) |",0E2h,094h,082h,0 -backBlue4 db 0E2h,094h,082h,"/ ~~~ /",0E2h,094h,082h,0 -backBlue5 db 0E2h,094h,082h,"//==*==//",0E2h,094h,082h,0 -backRed1 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 -backRed2 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 -backRed3 db 0E2h,094h,082h,"oXX---XXo",0E2h,094h,082h,0 -backRed4 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 -backRed5 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 -backGold1 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 -backGold2 db 0E2h,094h,082h,"*/^ $ ^/*",0E2h,094h,082h,0 -backGold3 db 0E2h,094h,082h,"$ <@@@> $",0E2h,094h,082h,0 -backGold4 db 0E2h,094h,082h,"*v/ $ /v*",0E2h,094h,082h,0 -backGold5 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 -backSkull1 db 0E2h,094h,082h,"._.---._.",0E2h,094h,082h,0 -backSkull2 db 0E2h,094h,082h,"/,(o o),\",0E2h,094h,082h,0 -backSkull3 db 0E2h,094h,082h,"| ^ |",0E2h,094h,082h,0 -backSkull4 db 0E2h,094h,082h,"\ '-=-' /",0E2h,094h,082h,0 -backSkull5 db 0E2h,094h,082h,"~|==|==|~",0E2h,094h,082h,0 -backClover1 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 -backClover2 db 0E2h,094h,082h,"o ",0E2h,098h,098h," + ",0E2h,098h,098h," o",0E2h,094h,082h,0 -backClover3 db 0E2h,094h,082h,"$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$",0E2h,094h,082h,0 -backClover4 db 0E2h,094h,082h,"o ",0E2h,098h,098h," | ",0E2h,098h,098h," o",0E2h,094h,082h,0 -backClover5 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 -backArcane1 db 0E2h,094h,082h,".~*~*~*~.",0E2h,094h,082h,0 -backArcane2 db 0E2h,094h,082h,"/__~_~__\",0E2h,094h,082h,0 -backArcane3 db 0E2h,094h,082h,"|_/\/\_ |",0E2h,094h,082h,0 -backArcane4 db 0E2h,094h,082h,"| \_/\_/|",0E2h,094h,082h,0 -backArcane5 db 0E2h,094h,082h,"'--===--'",0E2h,094h,082h,0 -backNoir1 db 0E2h,094h,082h,"((\\_//))",0E2h,094h,082h,0 -backNoir2 db 0E2h,094h,082h,"// | \\",0E2h,094h,082h,0 -backNoir3 db 0E2h,094h,082h,"--(#*#)--",0E2h,094h,082h,0 -backNoir4 db 0E2h,094h,082h,"\\__|__//",0E2h,094h,082h,0 -backNoir5 db 0E2h,094h,082h,"((//~\\))",0E2h,094h,082h,0 -backDiamond1 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 -backDiamond2 db 0E2h,094h,082h,"/\ /\",0E2h,094h,082h,0 -backDiamond3 db 0E2h,094h,082h,"*$*",0E2h,094h,082h,0 -backDiamond4 db 0E2h,094h,082h,"\/ \/",0E2h,094h,082h,0 -backDiamond5 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 -backRider1 db 0E2h,094h,082h,".oO===Oo.",0E2h,094h,082h,0 -backRider2 db 0E2h,094h,082h,"(/ .-. /)",0E2h,094h,082h,0 -backRider3 db 0E2h,094h,082h,"o-( @ )-o",0E2h,094h,082h,0 -backRider4 db 0E2h,094h,082h,"(/ '-' /)",0E2h,094h,082h,0 -backRider5 db 0E2h,094h,082h,"'oO===Oo'",0E2h,094h,082h,0 -backBee1 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 -backBee2 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 -backBee3 db 0E2h,094h,082h,"<> BEE <>",0E2h,094h,082h,0 -backBee4 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 -backBee5 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 -backFan1 db 0E2h,094h,082h,"\\|/\\|//",0E2h,094h,082h,0 -backFan2 db 0E2h,094h,082h," -\\|//- ",0E2h,094h,082h,0 -backFan3 db 0E2h,094h,082h,"<(( o ))>",0E2h,094h,082h,0 -backFan4 db 0E2h,094h,082h," -//|\\- ",0E2h,094h,082h,0 -backFan5 db 0E2h,094h,082h,"//|/|/|\\",0E2h,094h,082h,0 -backWeb1 db 0E2h,094h,082h,"\\..|..//",0E2h,094h,082h,0 -backWeb2 db 0E2h,094h,082h,".\\.|.//.",0E2h,094h,082h,0 -backWeb3 db 0E2h,094h,082h,"--(o-o)--",0E2h,094h,082h,0 -backWeb4 db 0E2h,094h,082h,".//|.|\\.",0E2h,094h,082h,0 -backWeb5 db 0E2h,094h,082h,"//''-''\\",0E2h,094h,082h,0 -cardFlipLeft db 0E2h, 094h, 082h, " \ ", 0E2h, 094h, 082h, 0 -cardFlipMid db 0E2h, 094h, 082h, " | ", 0E2h, 094h, 082h, 0 -cardFlipRight db 0E2h, 094h, 082h, " / ", 0E2h, 094h, 082h, 0 -cardSuitRightSeg db " ", 0E2h, 094h, 082h, 0 -cardRankOneRSeg db " ", 0E2h, 094h, 082h, 0 -cardRankTenRSeg db " ", 0E2h, 094h, 082h, 0 -cardCenterRSeg db " ", 0E2h, 094h, 082h, 0 -cardGap db " ",0 -revealText db 13,10,"AI âñêðûâàåò êàðòû...",13,10,0 rank2 db "2",0 rank3 db "3",0 rank4 db "4",0 @@ -2479,45 +239,10 @@ rankQ db "Q",0 rankK db "K",0 rankA db "A",0 -suitSpades db 0E2h, 099h, 0A0h, 0 -suitHearts db 0E2h, 099h, 0A5h, 0 -suitClubs db 0E2h, 099h, 0A3h, 0 -suitDiamonds db 0E2h, 099h, 0A6h, 0 - ranks dd OFFSET rank2, OFFSET rank3, OFFSET rank4, OFFSET rank5 dd OFFSET rank6, OFFSET rank7, OFFSET rank8, OFFSET rank9 dd OFFSET rank10, OFFSET rankJ, OFFSET rankQ, OFFSET rankK, OFFSET rankA -suits dd OFFSET suitSpades, OFFSET suitHearts, OFFSET suitClubs, OFFSET suitDiamonds -pokerNames dd OFFSET pokerHighName, OFFSET pokerPairName, OFFSET pokerTwoPairName - dd OFFSET pokerTripsName, OFFSET pokerStraightName, OFFSET pokerFlushName - dd OFFSET pokerFullHouseName, OFFSET pokerFourName, OFFSET pokerStraightFlushName - -slot0 db "CLV",0 -slot1 db "LEM",0 -slot2 db "CHR",0 -slot3 db "BEL",0 -slot4 db "DIA",0 -slot5 db "BOX",0 -slot6 db "777",0 -slotSymbols dd OFFSET slot0, OFFSET slot1, OFFSET slot2 - dd OFFSET slot3, OFFSET slot4, OFFSET slot5, OFFSET slot6 slotSymbolValues dd 3, 2, 2, 3, 5, 5, 7 -classicSlot0 db "7",0 -classicSlot1 db "BAR",0 -classicSlot2 db "$",0 -classicSlot3 db "*",0 -classicSlot4 db "#",0 -classicSlot5 db "A",0 -classicSlotSymbols dd OFFSET classicSlot0, OFFSET classicSlot1, OFFSET classicSlot2 - dd OFFSET classicSlot3, OFFSET classicSlot4, OFFSET classicSlot5 -classicSlotPayTableText db "Êëàññè÷åñêèé ñëîò 3x3. Âûèãðûøíàÿ ëèíèÿ - ñðåäíÿÿ.",13,10 - db "777 x10, $$$ x7, BAR x5, AAA x4, *** / ### x3, ïàðà x2.",13,10,0 -classicSlotJackpot db "Äæåêïîò! Òðè îäèíàêîâûõ.",13,10,0 -classicSlotPair db "Ïàðà íà ëèíèè!",13,10,0 -classicSlotEmpty db "Íå ïîâåçëî.",13,10,0 -classicSlotBorder db '+-----+-----+-----+',13,10,0 -classicSlotPayline db '----- WIN LINE -----',13,10,0 -; === MCI-êîìàíäû çâóêîâûõ ôàéëîâ === cardSoundClose db 'close cardsound',0 cardSoundOpen db 'open "assets\audio\playing_cards_deck_flick_through_001_20485.wav" type waveaudio alias cardsound',0 cardSoundPlay db 'play cardsound from 0',0 @@ -2577,80 +302,24 @@ towerMusicOpen1 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Hareklavit_75543927 towerMusicOpen2 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3" type mpegvideo alias towermusic',0 towerMusicOpen3 db 'open "assets\music\tower\Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3" type mpegvideo alias towermusic',0 towerMusicOpen4 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3" type mpegvideo alias towermusic',0 -slotBorder db '+-----+-----+-----+-----+-----+',13,10,0 -slotWall db '|',0 -slotWinLeft db '>',0 -slotWinRight db '<',0 -slotCellBlank db ' ',0 -slotPadTwo db ' ',0 -slotPadOne db ' ',0 -skullSeg1 db 020h, 020h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 020h, 020h, 0 -skullSeg2 db 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 084h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 0 -skullSeg3 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 -skullSeg4 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 -skullSeg5 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 -skullSeg6 db 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 0 -skullSeg7 db 020h, 020h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 020h, 020h, 020h, 020h, 0 -skullSeg8 db 020h, 020h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 020h, 020h, 0 -skullNums db " [1] [2] [3]",13,10,0 -skullBlankBall db 13,10,13,10,13,10,0 -skullBall1 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 -skullBall2 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 -skullBall3 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 saveFileName db 64 dup(0) saveFullPath db 260 dup(0) saveDirPath db 260 dup(0) accountPatternFull db 260 dup(0) leaderSavePath db 260 dup(0) appDataReady dd 0 -saveExt db '.dat',0 accountPattern db "*.dat",0 appDataEnvName db "APPDATA",0 appDataSubDir db "\AssemblerCasino",0 pathSlashText db "\",0 -runtimeDir db "runtime",0 -danceFileName db "assets\animations\hakari_dance.ans",0 -casinoIntroFile db "assets\animations\casino_intro.ans",0 -dbdHookFileName db "assets\animations\dbd_hook.ans",0 -dbdHookCmd db "cmd /c start ""DBD Hook"" tools\previews\preview_dbd_hook.bat",0 -dbdHookStopFile db "runtime\dbd_hook.stop",0 -animProfileFile db "runtime\anim_profile.txt",0 -animProfileDigits db "012",0 -ansiExitIntro db 1Bh,"[0m",1Bh,"[?25h",1Bh,"[2J",1Bh,"[H",0 accountList db 20 dup(64 dup(0)) -findData db 320 dup(0) - - -; --- Umamusume Pretty Derby Data --- -umaTitleText db 13,10,"=== UMAMUSUME PRETTY DERBY (ÑÊÀ×ÊÈ) ===",13,10,0 -umaMenuText db "Âûáåðèòå âàøó äåâ÷îíêó-ëîøàäêó:",13,10 - db "1. Special Week (Ñïåöèàë Óèê) - Êîýô. x4 (Ñáàëàíñèðîâàííàÿ)",13,10 - db "2. Silence Suzuka (Ñàéëåíñ Ñóäçóêà) - Êîýô. x3 (Ðåçâûé ñòàðò)",13,10 - db "3. Tokai Teio (Òîêàé Òýéîí) - Êîýô. x5 (Ôèíèøíûé ñïóðò)",13,10 - db "4. Gold Ship (Ãîëä Øèï) - Êîýô. x8 (Íåïðåäñêàçóåìàÿ!)",13,10 - db "5. Mejiro McQueen (Ìýäçèðî Ìàêêóèí) - Êîýô. x6 (Ñòàéåð)",13,10,0 -umaChoiceText db "Âàø âûáîð (1-5): ",0 -umaTrackHeader db 13,10,"--- ÒÐÀÑÑÀ ÒÐÈÓÌÔÀ ---",13,10,0 -umaFinishText db " |FINISH|",13,10,0 -umaHorse1Name db "1. Special Week : ",0 -umaHorse2Name db "2. Silence Suzuka : ",0 -umaHorse3Name db "3. Tokai Teio : ",0 -umaHorse4Name db "4. Gold Ship : ",0 -umaHorse5Name db "5. Mejiro McQueen : ",0 -umaWinAnnouncement db 13,10,"Ïîáåäèòåëü ñêà÷åê: ",0 -umaYouWinText db " ÏÎÁÅÄÀ! Âàø âûáîð ïðèøåë ïåðâûì! Âû âûèãðàëè $",0 -umaYouLoseText db " Óâû, âàø âûáîð íå çàíÿë 1-å ìåñòî. Óäà÷à óëûáíåòñÿ â ñëåäóþùèé ðàç!",13,10,0 -umaStepChar db "=",0 -umaHeadChar db ">",0 -umaHorseNames dd OFFSET umaHorse1Name, OFFSET umaHorse2Name, OFFSET umaHorse3Name, OFFSET umaHorse4Name, OFFSET umaHorse5Name -umaMultipliers dd 4, 3, 5, 8, 6 - -umaPos dd 5 dup(0) -umaChoice dd 0 -umaWinner dd 0 - .code -; --- PrintStr: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- + +; --- PrintHandRow21: Compatibility stub for npc_mind --- +PrintHandRow21 PROC pHand:DWORD, count:DWORD, reveal:DWORD + ret +PrintHandRow21 ENDP + PrintStr PROC uses eax ecx esi, pText:DWORD mov esi, pText xor ecx, ecx @@ -2681,7 +350,6 @@ print_done: ret PrintStr ENDP -; --- PrintUtf8: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- PrintUtf8 PROC uses eax ecx esi, pText:DWORD mov esi, pText xor ecx, ecx @@ -2709,19 +377,16 @@ utf8_print_done: ret PrintUtf8 ENDP -; --- SetColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- SetColor PROC attr:DWORD invoke SetConsoleTextAttribute, hOut, attr ret SetColor ENDP -; --- ResetColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- ResetColor PROC invoke SetConsoleTextAttribute, hOut, COLOR_DEFAULT ret ResetColor ENDP -; --- EnableAnsi: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- EnableAnsi PROC uses eax invoke GetConsoleMode, hOut, ADDR consoleMode cmp eax, 0 @@ -2732,1014 +397,8 @@ enable_ansi_done: ret EnableAnsi ENDP -; --- SetSuitColor: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -SetSuitColor PROC suitIndex:DWORD - mov eax, suitIndex - cmp eax, 1 - je set_red_suit - cmp eax, 3 - je set_red_suit - invoke SetColor, COLOR_CARD - ret -set_red_suit: - invoke SetColor, COLOR_RED_CARD - ret -SetSuitColor ENDP -; --- SetCardBackColor: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -SetCardBackColor PROC - mov eax, shopBackStyle - cmp eax, 1 - je card_back_blue - cmp eax, 2 - je card_back_red - cmp eax, 3 - je card_back_gold - cmp eax, 4 - je card_back_skull - cmp eax, 5 - je card_back_clover - cmp eax, 6 - je card_back_arcane - cmp eax, 7 - je card_back_noir - cmp eax, 8 - je card_back_diamond - cmp eax, 9 - je card_back_rider - cmp eax, 10 - je card_back_bee - cmp eax, 11 - je card_back_fan - cmp eax, 12 - je card_back_web - invoke SetColor, COLOR_BACK_CARD - ret -card_back_blue: - invoke SetColor, COLOR_TITLE - ret -card_back_red: - invoke SetColor, COLOR_BAD - ret -card_back_gold: - invoke SetColor, COLOR_WARN - ret -card_back_skull: - invoke SetColor, COLOR_BAD - ret -card_back_clover: - invoke SetColor, COLOR_MONEY - ret -card_back_arcane: - invoke SetColor, COLOR_TITLE - ret -card_back_noir: - invoke SetColor, COLOR_CARD - ret -card_back_diamond: - invoke SetColor, COLOR_TITLE - ret -card_back_rider: - invoke SetColor, COLOR_WARN - ret -card_back_bee: - invoke SetColor, COLOR_WARN - ret -card_back_fan: - invoke SetColor, COLOR_TITLE - ret -card_back_web: - invoke SetColor, COLOR_CARD - ret -SetCardBackColor ENDP -; --- PrintCardBackSegLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCardBackSegLine PROC lineNo:DWORD - mov eax, shopBackStyle - cmp eax, 1 - je back_line_blue - cmp eax, 2 - je back_line_red - cmp eax, 3 - je back_line_gold - cmp eax, 4 - je back_line_skull - cmp eax, 5 - je back_line_clover - cmp eax, 6 - je back_line_arcane - cmp eax, 7 - je back_line_noir - cmp eax, 8 - je back_line_diamond - cmp eax, 9 - je back_line_rider - cmp eax, 10 - je back_line_bee - cmp eax, 11 - je back_line_fan - cmp eax, 12 - je back_line_web -back_line_gray: - mov eax, lineNo - cmp eax, 1 - je back_gray_1 - cmp eax, 2 - je back_gray_2 - cmp eax, 3 - je back_gray_3 - cmp eax, 4 - je back_gray_4 - invoke PrintUtf8, OFFSET backGray5 - ret -back_gray_1: - invoke PrintUtf8, OFFSET backGray1 - ret -back_gray_2: - invoke PrintUtf8, OFFSET backGray2 - ret -back_gray_3: - invoke PrintUtf8, OFFSET backGray3 - ret -back_gray_4: - invoke PrintUtf8, OFFSET backGray4 - ret -back_line_blue: - mov eax, lineNo - cmp eax, 1 - je back_blue_1 - cmp eax, 2 - je back_blue_2 - cmp eax, 3 - je back_blue_3 - cmp eax, 4 - je back_blue_4 - invoke PrintUtf8, OFFSET backBlue5 - ret -back_blue_1: - invoke PrintUtf8, OFFSET backBlue1 - ret -back_blue_2: - invoke PrintUtf8, OFFSET backBlue2 - ret -back_blue_3: - invoke PrintUtf8, OFFSET backBlue3 - ret -back_blue_4: - invoke PrintUtf8, OFFSET backBlue4 - ret -back_line_red: - mov eax, lineNo - cmp eax, 1 - je back_red_1 - cmp eax, 2 - je back_red_2 - cmp eax, 3 - je back_red_3 - cmp eax, 4 - je back_red_4 - invoke PrintUtf8, OFFSET backRed5 - ret -back_red_1: - invoke PrintUtf8, OFFSET backRed1 - ret -back_red_2: - invoke PrintUtf8, OFFSET backRed2 - ret -back_red_3: - invoke PrintUtf8, OFFSET backRed3 - ret -back_red_4: - invoke PrintUtf8, OFFSET backRed4 - ret -back_line_gold: - mov eax, lineNo - cmp eax, 1 - je back_gold_1 - cmp eax, 2 - je back_gold_2 - cmp eax, 3 - je back_gold_3 - cmp eax, 4 - je back_gold_4 - invoke PrintUtf8, OFFSET backGold5 - ret -back_gold_1: - invoke PrintUtf8, OFFSET backGold1 - ret -back_gold_2: - invoke PrintUtf8, OFFSET backGold2 - ret -back_gold_3: - invoke PrintUtf8, OFFSET backGold3 - ret -back_gold_4: - invoke PrintUtf8, OFFSET backGold4 - ret -back_line_skull: - mov eax, lineNo - cmp eax, 1 - je back_skull_1 - cmp eax, 2 - je back_skull_2 - cmp eax, 3 - je back_skull_3 - cmp eax, 4 - je back_skull_4 - invoke PrintUtf8, OFFSET backSkull5 - ret -back_skull_1: - invoke PrintUtf8, OFFSET backSkull1 - ret -back_skull_2: - invoke PrintUtf8, OFFSET backSkull2 - ret -back_skull_3: - invoke PrintUtf8, OFFSET backSkull3 - ret -back_skull_4: - invoke PrintUtf8, OFFSET backSkull4 - ret -back_line_clover: - mov eax, lineNo - cmp eax, 1 - je back_clover_1 - cmp eax, 2 - je back_clover_2 - cmp eax, 3 - je back_clover_3 - cmp eax, 4 - je back_clover_4 - invoke PrintUtf8, OFFSET backClover5 - ret -back_clover_1: - invoke PrintUtf8, OFFSET backClover1 - ret -back_clover_2: - invoke PrintUtf8, OFFSET backClover2 - ret -back_clover_3: - invoke PrintUtf8, OFFSET backClover3 - ret -back_clover_4: - invoke PrintUtf8, OFFSET backClover4 - ret -back_line_arcane: - mov eax, lineNo - cmp eax, 1 - je back_arcane_1 - cmp eax, 2 - je back_arcane_2 - cmp eax, 3 - je back_arcane_3 - cmp eax, 4 - je back_arcane_4 - invoke PrintUtf8, OFFSET backArcane5 - ret -back_arcane_1: - invoke PrintUtf8, OFFSET backArcane1 - ret -back_arcane_2: - invoke PrintUtf8, OFFSET backArcane2 - ret -back_arcane_3: - invoke PrintUtf8, OFFSET backArcane3 - ret -back_arcane_4: - invoke PrintUtf8, OFFSET backArcane4 - ret -back_line_noir: - mov eax, lineNo - cmp eax, 1 - je back_noir_1 - cmp eax, 2 - je back_noir_2 - cmp eax, 3 - je back_noir_3 - cmp eax, 4 - je back_noir_4 - invoke PrintUtf8, OFFSET backNoir5 - ret -back_noir_1: - invoke PrintUtf8, OFFSET backNoir1 - ret -back_noir_2: - invoke PrintUtf8, OFFSET backNoir2 - ret -back_noir_3: - invoke PrintUtf8, OFFSET backNoir3 - ret -back_noir_4: - invoke PrintUtf8, OFFSET backNoir4 - ret -back_line_diamond: - mov eax, lineNo - cmp eax, 1 - je back_diamond_1 - cmp eax, 2 - je back_diamond_2 - cmp eax, 3 - je back_diamond_3 - cmp eax, 4 - je back_diamond_4 - invoke PrintUtf8, OFFSET backDiamond5 - ret -back_diamond_1: - invoke PrintUtf8, OFFSET backDiamond1 - ret -back_diamond_2: - invoke PrintUtf8, OFFSET backDiamond2 - ret -back_diamond_3: - invoke PrintUtf8, OFFSET backDiamond3 - ret -back_diamond_4: - invoke PrintUtf8, OFFSET backDiamond4 - ret -back_line_rider: - mov eax, lineNo - cmp eax, 1 - je back_rider_1 - cmp eax, 2 - je back_rider_2 - cmp eax, 3 - je back_rider_3 - cmp eax, 4 - je back_rider_4 - invoke PrintUtf8, OFFSET backRider5 - ret -back_rider_1: - invoke PrintUtf8, OFFSET backRider1 - ret -back_rider_2: - invoke PrintUtf8, OFFSET backRider2 - ret -back_rider_3: - invoke PrintUtf8, OFFSET backRider3 - ret -back_rider_4: - invoke PrintUtf8, OFFSET backRider4 - ret -back_line_bee: - mov eax, lineNo - cmp eax, 1 - je back_bee_1 - cmp eax, 2 - je back_bee_2 - cmp eax, 3 - je back_bee_3 - cmp eax, 4 - je back_bee_4 - invoke PrintUtf8, OFFSET backBee5 - ret -back_bee_1: - invoke PrintUtf8, OFFSET backBee1 - ret -back_bee_2: - invoke PrintUtf8, OFFSET backBee2 - ret -back_bee_3: - invoke PrintUtf8, OFFSET backBee3 - ret -back_bee_4: - invoke PrintUtf8, OFFSET backBee4 - ret -back_line_fan: - mov eax, lineNo - cmp eax, 1 - je back_fan_1 - cmp eax, 2 - je back_fan_2 - cmp eax, 3 - je back_fan_3 - cmp eax, 4 - je back_fan_4 - invoke PrintUtf8, OFFSET backFan5 - ret -back_fan_1: - invoke PrintUtf8, OFFSET backFan1 - ret -back_fan_2: - invoke PrintUtf8, OFFSET backFan2 - ret -back_fan_3: - invoke PrintUtf8, OFFSET backFan3 - ret -back_fan_4: - invoke PrintUtf8, OFFSET backFan4 - ret -back_line_web: - mov eax, lineNo - cmp eax, 1 - je back_web_1 - cmp eax, 2 - je back_web_2 - cmp eax, 3 - je back_web_3 - cmp eax, 4 - je back_web_4 - invoke PrintUtf8, OFFSET backWeb5 - ret -back_web_1: - invoke PrintUtf8, OFFSET backWeb1 - ret -back_web_2: - invoke PrintUtf8, OFFSET backWeb2 - ret -back_web_3: - invoke PrintUtf8, OFFSET backWeb3 - ret -back_web_4: - invoke PrintUtf8, OFFSET backWeb4 - ret -PrintCardBackSegLine ENDP -; --- PrintCardBackSeg: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCardBackSeg PROC - invoke PrintCardBackSegLine, 3 - ret -PrintCardBackSeg ENDP - -; --- PrintSuit: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSuit PROC uses eax, suitIndex:DWORD - invoke SetSuitColor, suitIndex - mov eax, suitIndex - invoke PrintUtf8, suits[eax * 4] - call ResetColor - ret -PrintSuit ENDP - -; --- PrintMoney: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintMoney PROC value:DWORD - invoke SetColor, COLOR_MONEY - invoke PrintUInt, value - call ResetColor - ret -PrintMoney ENDP - -; --- PrintTitleColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintTitleColor PROC pText:DWORD - invoke SetColor, COLOR_TITLE - invoke PrintStr, pText - call ResetColor - ret -PrintTitleColor ENDP - -; --- ColorPrint: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -ColorPrint PROC pText:DWORD, attr:DWORD - invoke SetColor, attr - invoke PrintStr, pText - call ResetColor - ret -ColorPrint ENDP - -; --- PrintWinEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintWinEvent PROC - invoke ColorPrint, OFFSET winText, COLOR_MONEY - ret -PrintWinEvent ENDP - -; --- PrintLoseEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintLoseEvent PROC - invoke ColorPrint, OFFSET loseText, COLOR_BAD - ret -PrintLoseEvent ENDP - -; --- PrintDrawEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDrawEvent PROC - invoke ColorPrint, OFFSET drawText, COLOR_WARN - ret -PrintDrawEvent ENDP - -; --- PrintCroupierFromList: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCroupierFromList PROC uses eax ebx, pList:DWORD - invoke RandomRange, 3 - shl eax, 2 - mov ebx, pList - add ebx, eax - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET croupierPrefix - invoke PrintStr, DWORD PTR [ebx] - call ResetColor - ret -PrintCroupierFromList ENDP - -; --- DealerProcessLine: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -DealerProcessLine PROC uses eax edx - mov eax, dealerLineLen - cmp eax, 3 - jb dealer_process_done - mov al, byte ptr [frameBuffer] - cmp al, dealerWantedTag - jne dealer_process_done - cmp byte ptr [frameBuffer+1], '|' - jne dealer_process_done - cmp dealerScanMode, 0 - jne dealer_process_select - inc dealerPhraseCount - ret - -dealer_process_select: - mov eax, dealerPhraseCount - cmp eax, dealerPhrasePick - jne dealer_process_next - mov eax, OFFSET frameBuffer - add eax, dealerLineLen - mov byte ptr [eax], 0 - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET croupierPrefix - mov edx, OFFSET frameBuffer - add edx, 2 - invoke PrintStr, edx - invoke PrintStr, OFFSET nl - call ResetColor - mov dealerPhrasePick, 0FFFFFFFFh -dealer_process_next: - inc dealerPhraseCount -dealer_process_done: - ret -DealerProcessLine ENDP - -; --- DealerScanFile: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -DealerScanFile PROC uses eax edx, mode:DWORD - mov eax, mode - mov dealerScanMode, eax - mov dealerLineLen, 0 - invoke CreateFileA, OFFSET dealerFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - jne dealer_scan_opened - xor eax, eax - ret - -dealer_scan_opened: - mov dealerFileHandle, eax - -dealer_scan_loop: - invoke ReadFile, dealerFileHandle, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je dealer_scan_eof - mov al, byte ptr inputBuffer - cmp al, 13 - je dealer_scan_loop - cmp al, 10 - je dealer_scan_line_end - mov edx, dealerLineLen - cmp edx, 32760 - jae dealer_scan_loop - mov byte ptr [frameBuffer + edx], al - inc dealerLineLen - jmp dealer_scan_loop - -dealer_scan_line_end: - call DealerProcessLine - mov dealerLineLen, 0 - jmp dealer_scan_loop - -dealer_scan_eof: - cmp dealerLineLen, 0 - je dealer_scan_close - call DealerProcessLine - -dealer_scan_close: - invoke CloseHandle, dealerFileHandle - mov eax, 1 - ret -DealerScanFile ENDP - -; --- PrintCroupierFromFile: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCroupierFromFile PROC uses eax, wanted:DWORD, pFallback:DWORD - mov eax, wanted - mov dealerWantedTag, al - mov dealerPhraseCount, 0 - invoke DealerScanFile, 0 - cmp eax, 0 - je croupier_file_fallback - cmp dealerPhraseCount, 0 - je croupier_file_fallback - invoke RandomRange, dealerPhraseCount - mov dealerPhrasePick, eax - mov dealerPhraseCount, 0 - invoke DealerScanFile, 1 - ret -croupier_file_fallback: - invoke PrintCroupierFromList, pFallback - ret -PrintCroupierFromFile ENDP - -; --- PrintCroupierWin: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCroupierWin PROC - invoke PrintCroupierFromFile, 'W', OFFSET croupierWinList - ret -PrintCroupierWin ENDP - -; --- PrintCroupierLose: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCroupierLose PROC - invoke PrintCroupierFromFile, 'L', OFFSET croupierLoseList - ret -PrintCroupierLose ENDP - -; --- PrintCroupierDraw: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCroupierDraw PROC - invoke PrintCroupierFromFile, 'D', OFFSET croupierDrawList - ret -PrintCroupierDraw ENDP - -; --- FlushFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -FlushFrame PROC uses eax ebx ecx edx esi edi - LOCAL csbi[22]:BYTE - LOCAL X_start:DWORD - LOCAL Y_start:DWORD - LOCAL nextLinePtr:DWORD - LOCAL currentLineIndex:DWORD - - cmp frameBytes, 0 - je flush_frame_done - - mov eax, OFFSET frameBuffer - add eax, frameBytes - mov byte ptr [eax], 0 - - cmp animWidth, 0 - je print_default - cmp animHeight, 0 - je print_default - - call ClearView - - lea eax, csbi - invoke GetConsoleScreenBufferInfo, hOut, eax - cmp eax, 0 - je print_default - - movzx ecx, word ptr csbi[14] - movzx esi, word ptr csbi[10] - sub ecx, esi - inc ecx - - movzx edx, word ptr csbi[16] - movzx esi, word ptr csbi[12] - sub edx, esi - inc edx - - mov eax, ecx - cmp eax, animWidth - jbe set_x_left - sub eax, animWidth - shr eax, 1 - add ax, word ptr csbi[10] - movzx eax, ax - mov X_start, eax - jmp x_calculated -set_x_left: - movzx eax, word ptr csbi[10] - mov X_start, eax -x_calculated: - - mov eax, edx - cmp eax, animHeight - jbe set_y_top - sub eax, animHeight - shr eax, 1 - add ax, word ptr csbi[12] - movzx eax, ax - mov Y_start, eax - jmp y_calculated -set_y_top: - movzx eax, word ptr csbi[12] - mov Y_start, eax -y_calculated: - - mov esi, OFFSET frameBuffer -skip_lead_loop: - cmp byte ptr [esi], 1Bh - jne check_lead_newline - cmp byte ptr [esi+1], '[' - jne check_lead_newline - - cmp byte ptr [esi+2], '2' - jne check_lead_H - cmp byte ptr [esi+3], 'J' - jne check_lead_newline - add esi, 4 - jmp skip_lead_loop - -check_lead_H: - cmp byte ptr [esi+2], 'H' - jne check_lead_hide - add esi, 3 - jmp skip_lead_loop - -check_lead_hide: - cmp byte ptr [esi+2], '?' - jne check_lead_newline - cmp byte ptr [esi+3], '2' - jne check_lead_newline - cmp byte ptr [esi+4], '5' - jne check_lead_newline - cmp byte ptr [esi+5], 'l' - jne check_lead_show - add esi, 6 - jmp skip_lead_loop - -check_lead_show: - cmp byte ptr [esi+5], 'h' - jne check_lead_newline - add esi, 6 - jmp skip_lead_loop - -check_lead_newline: - mov al, [esi] - cmp al, 0Dh - je skip_lead_nl_char - cmp al, 0Ah - je skip_lead_nl_char - jmp done_lead_skipping -skip_lead_nl_char: - inc esi - jmp skip_lead_loop -done_lead_skipping: - - mov currentLineIndex, 0 -line_parse_loop: - cmp byte ptr [esi], 0 - je print_done - - mov edi, esi -find_line_end: - mov al, [edi] - cmp al, 0 - je line_end_found - cmp al, 0Dh - je line_end_found - cmp al, 0Ah - je line_end_found - inc edi - jmp find_line_end -line_end_found: - mov dl, [edi] - mov byte ptr [edi], 0 - - mov ebx, edi - cmp dl, 0 - je next_line_ptr_done - inc ebx - mov al, [ebx] - cmp al, 0Dh - je skip_nl_chars - cmp al, 0Ah - je skip_nl_chars - jmp next_line_ptr_done -skip_nl_chars: - inc ebx - mov al, [ebx] - cmp al, 0Dh - je skip_nl_chars - cmp al, 0Ah - je skip_nl_chars -next_line_ptr_done: - mov nextLinePtr, ebx - - mov eax, currentLineIndex - add eax, Y_start - - movzx edx, word ptr csbi[16] - cmp eax, edx - jg skip_this_line - - invoke MoveCursor, X_start, eax - invoke PrintUtf8, esi - -skip_this_line: - mov esi, nextLinePtr - inc currentLineIndex - jmp line_parse_loop - -print_default: - invoke PrintUtf8, OFFSET frameBuffer - -print_done: - mov frameBytes, 0 -flush_frame_done: - ret -FlushFrame ENDP - -; --- PlayHakariDance: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayHakariDance PROC uses eax ebx ecx edx esi edi - mov animWidth, 118 - mov animHeight, 43 - invoke CreateFileA, OFFSET danceFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - jne hakari_file_ok - invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 - mov animWidth, 0 - mov animHeight, 0 - ret -hakari_file_ok: - mov danceHandle, eax - mov frameBytes, 0 - mov animFrameCounter, 0 - -hakari_read_loop: - invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 - cmp danceBytes, 0 - je hakari_finish - mov al, byte ptr inputBuffer - cmp al, 0Ch - je hakari_show_frame - mov edx, frameBytes - cmp edx, 32760 - jae hakari_show_frame_keep_char - mov [frameBuffer + edx], al - inc frameBytes - jmp hakari_read_loop - -hakari_show_frame_keep_char: - call ClearView - call FlushFrame - invoke AnimFrameDelay, 12 - invoke Sleep, eax - mov al, byte ptr inputBuffer - mov [frameBuffer], al - mov frameBytes, 1 - jmp hakari_read_loop - -hakari_show_frame: - call AnimShouldDrawFrame - cmp eax, 1 - jne hakari_skip_frame - call ClearView - call FlushFrame - invoke AnimFrameDelay, 12 - invoke Sleep, eax - jmp hakari_read_loop -hakari_skip_frame: - mov frameBytes, 0 - jmp hakari_read_loop - -hakari_finish: - call ClearView - call FlushFrame - invoke CloseHandle, danceHandle - invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 - invoke Sleep, 40 - call ClearView - mov animWidth, 0 - mov animHeight, 0 - ret -PlayHakariDance ENDP - -; --- WriteAnimProfileFile: shares animation profile with helper windows --- -WriteAnimProfileFile PROC uses eax ebx edx - invoke CreateFileA, OFFSET animProfileFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - je write_anim_profile_done - mov ebx, eax - mov edx, settingsLowSpec - cmp edx, 2 - jbe write_anim_profile_value_ok - xor edx, edx -write_anim_profile_value_ok: - mov al, byte ptr [animProfileDigits + edx] - mov byte ptr [inputBuffer], al - invoke WriteFile, ebx, ADDR inputBuffer, 1, ADDR charsWritten, 0 - invoke CloseHandle, ebx -write_anim_profile_done: - ret -WriteAnimProfileFile ENDP -; --- PlayDbDHookScene: ïîêàäðîâàÿ àíèìàöèÿ êðþêà èç Dead by Daylight --- -PlayDbDHookScene PROC uses eax - cmp settingsDbdWindowEnabled, 1 - jne play_dbd_done - invoke WinExec, OFFSET dbdHookCmd, 1 -play_dbd_done: - ret -PlayDbDHookScene ENDP - -; --- StopDbDHookScene: çàêðûâàåò îòäåëüíîå îêíî DBD-àíèìàöèè ÷åðåç ôàéë-ñèãíàë --- -StopDbDHookScene PROC uses eax - invoke CreateFileA, OFFSET dbdHookStopFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - je stop_dbd_done - invoke CloseHandle, eax -stop_dbd_done: - ret -StopDbDHookScene ENDP - -; --- IntroMaybeLoopMarker: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -IntroMaybeLoopMarker PROC - cmp frameBytes, 10 - jne intro_marker_no - cmp byte ptr [frameBuffer], '@' - jne intro_marker_no - cmp byte ptr [frameBuffer+1], '@' - jne intro_marker_no - cmp byte ptr [frameBuffer+2], 'L' - jne intro_marker_no - cmp byte ptr [frameBuffer+3], 'O' - jne intro_marker_no - cmp byte ptr [frameBuffer+4], 'O' - jne intro_marker_no - cmp byte ptr [frameBuffer+5], 'P' - jne intro_marker_no - cmp byte ptr [frameBuffer+6], '@' - jne intro_marker_no - cmp byte ptr [frameBuffer+7], '@' - jne intro_marker_no - mov introLoopSeen, 1 - mov introSkipLoop, 0 - mov frameBytes, 0 - mov eax, 1 - ret -intro_marker_no: - xor eax, eax - ret -IntroMaybeLoopMarker ENDP - -; --- IntroHandleFrameEnd: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -IntroHandleFrameEnd PROC - call IntroMaybeLoopMarker - cmp eax, 1 - je intro_handle_done - cmp introSkipLoop, 1 - je intro_discard_frame - call AnimShouldDrawFrame - cmp eax, 1 - jne intro_discard_frame - call FlushFrame - invoke AnimFrameDelay, 45 - invoke Sleep, eax - ret -intro_discard_frame: - mov frameBytes, 0 -intro_handle_done: - ret -IntroHandleFrameEnd ENDP - -; --- PlayCasinoIntro: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayCasinoIntro PROC uses eax ebx ecx edx esi edi - cmp settingsIntroEnabled, 1 - jne intro_disabled - mov introLoopSeen, 0 - mov introSkipLoop, 0 - mov animFrameCounter, 0 - mov animWidth, 64 - mov animHeight, 21 -intro_restart_file: - invoke CreateFileA, OFFSET casinoIntroFile, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - jne intro_file_ok - mov animWidth, 0 - mov animHeight, 0 - ret -intro_file_ok: - mov danceHandle, eax - mov frameBytes, 0 - -intro_read_loop: - invoke GetAsyncKeyState, VK_RETURN - test ax, 8000h - jnz intro_exit - invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 - cmp danceBytes, 0 - je intro_restart_cycle - mov al, byte ptr inputBuffer - cmp al, 0Ch - je intro_show_frame - mov edx, frameBytes - cmp edx, 32760 - jae intro_show_frame_keep_char - mov [frameBuffer + edx], al - inc frameBytes - jmp intro_read_loop - -intro_show_frame_keep_char: - call IntroHandleFrameEnd - mov al, byte ptr inputBuffer - mov [frameBuffer], al - mov frameBytes, 1 - jmp intro_read_loop - -intro_show_frame: - call IntroHandleFrameEnd - jmp intro_read_loop - -intro_restart_cycle: - call FlushFrame - invoke CloseHandle, danceHandle - cmp introLoopSeen, 1 - jne intro_restart_file - mov introSkipLoop, 1 - jmp intro_restart_file - -intro_exit: - invoke CloseHandle, danceHandle - invoke PrintUtf8, OFFSET ansiExitIntro - invoke Sleep, 180 -intro_disabled: - mov animWidth, 0 - mov animHeight, 0 - ret -PlayCasinoIntro ENDP -; --- InitSounds: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- InitSounds PROC uses eax ecx edx invoke mciSendStringA, OFFSET cardSoundClose, 0, 0, 0 invoke mciSendStringA, OFFSET cardSoundOpen, 0, 0, 0 @@ -3770,7 +429,6 @@ InitSounds PROC uses eax ecx edx ret InitSounds ENDP -; --- PlayCardSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayCardSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET cardSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET cardSoundPlay, 0, 0, 0 @@ -3778,97 +436,84 @@ PlayCardSound PROC uses eax ecx edx ret PlayCardSound ENDP -; --- PlaySlotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlaySlotSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET slotSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET slotSoundPlay, 0, 0, 0 ret PlaySlotSound ENDP -; --- PlaySlotIntroSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlaySlotIntroSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET slotIntroStop, 0, 0, 0 invoke mciSendStringA, OFFSET slotIntroPlay, 0, 0, 0 ret PlaySlotIntroSound ENDP -; --- PlayJackpotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayJackpotSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET jackpotStop, 0, 0, 0 invoke mciSendStringA, OFFSET jackpotPlay, 0, 0, 0 ret PlayJackpotSound ENDP -; --- PlayHakariSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayHakariSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET hakariSoundPlay, 0, 0, 0 ret PlayHakariSound ENDP -; --- PlayCoinSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayCoinSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET coinSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET coinSoundPlay, 0, 0, 0 ret PlayCoinSound ENDP -; --- PlayBankruptSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayBankruptSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET bankruptStop, 0, 0, 0 invoke mciSendStringA, OFFSET bankruptPlay, 0, 0, 0 ret PlayBankruptSound ENDP -; --- PlayVictorySound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayVictorySound PROC uses eax ecx edx invoke mciSendStringA, OFFSET victoryStop, 0, 0, 0 invoke mciSendStringA, OFFSET victoryPlay, 0, 0, 0 ret PlayVictorySound ENDP -; --- PlayCasinoRouletteSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayCasinoRouletteSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET casinoRouletteSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET casinoRouletteSoundPlay, 0, 0, 0 ret PlayCasinoRouletteSound ENDP -; --- PlayRouletteSpinSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- + PlayRouletteSpinSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET rrSpinStop, 0, 0, 0 invoke mciSendStringA, OFFSET rrSpinPlay, 0, 0, 0 ret PlayRouletteSpinSound ENDP -; --- PlayRouletteDrySound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayRouletteDrySound PROC uses eax ecx edx invoke mciSendStringA, OFFSET rrDryStop, 0, 0, 0 invoke mciSendStringA, OFFSET rrDryPlay, 0, 0, 0 ret PlayRouletteDrySound ENDP -; --- PlayRouletteShotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayRouletteShotSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET rrShotStop, 0, 0, 0 invoke mciSendStringA, OFFSET rrShotPlay, 0, 0, 0 ret PlayRouletteShotSound ENDP -; --- PlayStoneSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayStoneSound PROC uses eax ecx edx invoke mciSendStringA, OFFSET stoneSoundStop, 0, 0, 0 invoke mciSendStringA, OFFSET stoneSoundPlay, 0, 0, 0 ret PlayStoneSound ENDP -; --- StopTowerMusic: ìóçûêà òóðíèð-áàøíè --- StopTowerMusic PROC invoke mciSendStringA, OFFSET towerMusicStop, 0, 0, 0 invoke mciSendStringA, OFFSET towerMusicClose, 0, 0, 0 ret StopTowerMusic ENDP -; --- PlayTowerRandomMusic: ñëó÷àéíàÿ ìóçûêà òóðíèð-áàøíè --- PlayTowerRandomMusic PROC uses eax call StopTowerMusic invoke RandomRange, 4 @@ -3894,8 +539,6 @@ tower_music_play: ret PlayTowerRandomMusic ENDP -; (Legacy terminal Clover slot renderers removed) -; --- PrintUInt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- PrintUInt PROC uses eax ebx ecx edx edi, value:DWORD LOCAL buffer[12]:BYTE @@ -3923,7 +566,6 @@ convert_loop: ret PrintUInt ENDP -; --- ReadKey: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- ReadKey PROC uses ebx read_key_again: invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 @@ -3950,414 +592,8 @@ read_key_empty: ret ReadKey ENDP -; --- ReadAnyKey: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- -ReadAnyKey PROC -read_any_again: - invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je read_any_empty - movzx eax, byte ptr inputBuffer - ret -read_any_empty: - xor eax, eax - ret -ReadAnyKey ENDP -; --- ReadUInt: ââîä ÷èñëà îäíîé ñòðîêîé, áåç çàâèñàíèÿ íà CR/LF --- -ReadUInt PROC uses ebx ecx edx esi edi - xor ebx, ebx ; parsed number - xor edi, edi ; digit count - invoke ReadFile, hIn, ADDR inputBuffer, 31, ADDR charsRead, 0 - cmp charsRead, 0 - je read_uint_zero - mov esi, OFFSET inputBuffer - mov ecx, charsRead -read_uint_parse_loop: - cmp ecx, 0 - je read_uint_end - movzx eax, byte ptr [esi] - inc esi - dec ecx - cmp al, 13 - je read_uint_end - cmp al, 10 - je read_uint_end - cmp al, ' ' - je read_uint_parse_loop - cmp al, 9 - je read_uint_parse_loop - cmp al, '0' - jb read_uint_bad - cmp al, '9' - ja read_uint_bad - - sub al, '0' - movzx edx, al - mov eax, ebx - imul eax, eax, 10 - add eax, edx - mov ebx, eax - inc edi - jmp read_uint_parse_loop - -read_uint_end: - cmp edi, 0 - je read_uint_zero - mov eax, ebx - ret - -read_uint_bad: - xor eax, eax - ret - -read_uint_zero: - xor eax, eax - ret -ReadUInt ENDP - -; --- StrEqual: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- -StrEqual PROC uses esi edi ebx, pLeft:DWORD, pRight:DWORD - mov esi, pLeft - mov edi, pRight -str_equal_loop: - mov al, [esi] - mov bl, [edi] - cmp al, bl - jne str_not_equal - cmp al, 0 - je str_is_equal - inc esi - inc edi - jmp str_equal_loop -str_is_equal: - mov eax, 1 - ret -str_not_equal: - xor eax, eax - ret -StrEqual ENDP - -; --- PrintCheatApplied: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCheatApplied PROC pText:DWORD - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET cheatAppliedText - invoke PrintStr, pText - call ResetColor - ret -PrintCheatApplied ENDP - -; --- ApplyCheatCode: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -ApplyCheatCode PROC pCode:DWORD - invoke StrEqual, pCode, OFFSET cheatCodeMoney - cmp eax, 1 - je cheat_money - invoke StrEqual, pCode, OFFSET cheatCodeSeven - cmp eax, 1 - je cheat_sevens - invoke StrEqual, pCode, OFFSET cheatCodeWin - cmp eax, 1 - je cheat_win_next - invoke StrEqual, pCode, OFFSET cheatCodeGod - cmp eax, 1 - je cheat_god - invoke StrEqual, pCode, OFFSET cheatCodeFair - cmp eax, 1 - je cheat_fair - invoke StrEqual, pCode, OFFSET cheatCodeGoal - cmp eax, 1 - je cheat_goal - invoke StrEqual, pCode, OFFSET cheatCodeReset - cmp eax, 1 - je cheat_reset - invoke StrEqual, pCode, OFFSET cheatCodeEasy - cmp eax, 1 - je cheat_easy - invoke StrEqual, pCode, OFFSET cheatCodeNormal - cmp eax, 1 - je cheat_normal - invoke StrEqual, pCode, OFFSET cheatCodeHard - cmp eax, 1 - je cheat_hard - invoke StrEqual, pCode, OFFSET cheatCodeJackpot - cmp eax, 1 - je cheat_jackpot - invoke StrEqual, pCode, OFFSET cheatCodeRich - cmp eax, 1 - je cheat_rich - invoke StrEqual, pCode, OFFSET cheatCodeDouble - cmp eax, 1 - je cheat_double - invoke StrEqual, pCode, OFFSET cheatCodePoor - cmp eax, 1 - je cheat_poor - invoke StrEqual, pCode, OFFSET cheatCodeShop - cmp eax, 1 - je cheat_shop - invoke StrEqual, pCode, OFFSET cheatCodeBacks - cmp eax, 1 - je cheat_backs - invoke StrEqual, pCode, OFFSET cheatCodeCharm - cmp eax, 1 - je cheat_max_charm - invoke StrEqual, pCode, OFFSET cheatCodeNoCharm - cmp eax, 1 - je cheat_no_charm - invoke StrEqual, pCode, OFFSET cheatCodeAch - cmp eax, 1 - je cheat_ach - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET cheatBadText - call ResetColor - xor eax, eax - ret - -cheat_money: - add bankroll, 50000 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatMoneyText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_sevens: - add bankroll, 7777 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatSevenText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_win_next: - mov cheatLuckyWin, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatWinText - mov eax, 1 - ret -cheat_god: - mov cheatGodMode, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatGodText - mov eax, 1 - ret -cheat_fair: - mov cheatLuckyWin, 0 - mov cheatGodMode, 0 - mov casinoSuspicion, 0 - call SaveGame - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET cheatAppliedText - invoke PrintStr, OFFSET cheatFairText - call ResetColor - mov eax, 1 - ret -cheat_goal: - mov eax, targetBank - mov bankroll, eax - call SaveGame - invoke PrintCheatApplied, OFFSET cheatGoalText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_reset: - mov bankroll, 10000 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatResetText - call PrintBank - mov eax, 1 - ret -cheat_easy: - mov aiDifficulty, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatEasyText - mov eax, 1 - ret -cheat_normal: - mov aiDifficulty, 2 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatNormalText - mov eax, 1 - ret -cheat_hard: - mov aiDifficulty, 3 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatHardText - mov eax, 1 - ret -cheat_jackpot: - mov cheatSlotJackpot, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatJackpotText - mov eax, 1 - ret -cheat_rich: - add bankroll, 250000 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatRichText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_double: - mov eax, bankroll - add bankroll, eax - call SaveGame - invoke PrintCheatApplied, OFFSET cheatDoubleText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_poor: - mov bankroll, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatPoorText - call PrintBank - mov eax, 1 - ret -cheat_shop: - add bankroll, 30000 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatShopText - call PrintBank - call CheckVictory - mov eax, 1 - ret -cheat_backs: - mov shopBackOwned, 1FFFh - call SaveGame - invoke PrintCheatApplied, OFFSET cheatBacksText - mov eax, 1 - ret -cheat_max_charm: - mov shopCharmLevel, 5 - mov shopCharmUses, 1 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatCharmText - mov eax, 1 - ret -cheat_no_charm: - mov shopCharmLevel, 0 - call SaveGame - invoke PrintCheatApplied, OFFSET cheatNoCharmText - mov eax, 1 - ret -cheat_ach: - mov achievements, 7FFFFh - call SaveGame - invoke PrintCheatApplied, OFFSET cheatAchText - mov eax, 1 - ret -ApplyCheatCode ENDP - -; --- ReadBetInput: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- -ReadBetInput PROC uses ebx ecx edx esi edi - mov ecx, 32 - mov edi, OFFSET cheatBuffer - xor eax, eax - rep stosb - - xor ebx, ebx ; parsed numeric bet - xor esi, esi ; stored input length - xor edi, edi ; 0 = number, 1 = cheat/code -read_bet_loop: - invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je read_bet_finish - movzx eax, byte ptr inputBuffer - cmp al, 13 - je read_bet_drain_lf - cmp al, 10 - je read_bet_finish - cmp al, ' ' - je read_bet_loop - cmp al, 9 - je read_bet_loop - - cmp al, 'a' - jb read_bet_store - cmp al, 'z' - ja read_bet_store - sub al, 20h - -read_bet_store: - cmp esi, 31 - jae read_bet_after_store - mov cheatBuffer[esi], al -read_bet_after_store: - inc esi - - cmp edi, 0 - jne read_bet_loop - cmp al, '0' - jb read_bet_mark_code - cmp al, '9' - ja read_bet_mark_code - movzx edx, al - sub edx, '0' - imul ebx, ebx, 10 - add ebx, edx - jmp read_bet_loop - -read_bet_mark_code: - mov edi, 1 - jmp read_bet_loop - -read_bet_drain_lf: - invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je read_bet_finish - movzx eax, byte ptr inputBuffer - cmp al, 10 - jne read_bet_drain_lf - -read_bet_finish: - cmp esi, 0 - je read_bet_empty - cmp edi, 0 - jne read_bet_cheat - mov eax, ebx - ret - -read_bet_cheat: - invoke ApplyCheatCode, OFFSET cheatBuffer - cmp eax, 1 - je read_bet_cheat_ok - mov eax, 0FFFFFFFEh - ret -read_bet_cheat_ok: - mov eax, 0FFFFFFFFh - ret -read_bet_empty: - xor eax, eax - ret -ReadBetInput ENDP - -; --- Pause: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- -PauseConsole PROC - invoke PrintStr, OFFSET pauseText - call ReadAnyKey - ret -PauseConsole ENDP - -; --- PrintBank: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintBank PROC - invoke PrintStr, OFFSET bankText - invoke PrintMoney, bankroll - invoke PrintStr, OFFSET nl - ret -PrintBank ENDP -; --- PrintGoal: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintGoal PROC - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET goalText - call ResetColor - invoke PrintMoney, targetBank - invoke PrintStr, OFFSET nl - ret -PrintGoal ENDP - -; --- ResetProfileDefaults: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- ResetProfileDefaults PROC uses ecx edi mov bankroll, 10000 mov targetBank, 50000 @@ -4411,8 +647,6 @@ reset_game_draw_loop: ret ResetProfileDefaults ENDP -; --- ReadAccountName: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- -; --- CopyCString: êîïèðîâàíèå ASCIIZ-ñòðîêè --- CopyCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD mov edi, pDst mov esi, pSrc @@ -4426,7 +660,6 @@ copy_cstring_loop: ret CopyCString ENDP -; --- AppendCString: äîïèñûâàåò ASCIIZ-ñòðîêó â êîíåö áóôåðà --- AppendCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD mov edi, pDst append_find_end: @@ -4446,8 +679,6 @@ append_copy_loop: ret AppendCString ENDP -; --- BuildAppDataDir: ïóòü ê %APPDATA%\AssemblerCasino --- -BuildNativeProfileDir3D PROTO BuildAppDataDir PROC uses eax mov appDataReady, 0 cmp nativeProfileActive3D, 0 @@ -4468,7 +699,6 @@ build_appdata_done: ret BuildAppDataDir ENDP -; --- BuildSaveFullPath: ïîëíûé ïóòü òåêóùåãî àêêàóíòà --- BuildSaveFullPath PROC call BuildAppDataDir cmp appDataReady, 1 @@ -4482,7 +712,6 @@ build_save_local: ret BuildSaveFullPath ENDP -; --- BuildAccountPatternFull: ìàñêà ïîèñêà àêêàóíòîâ --- BuildAccountPatternFull PROC call BuildAppDataDir cmp appDataReady, 1 @@ -4496,7 +725,6 @@ build_pattern_local: ret BuildAccountPatternFull ENDP -; --- BuildLeaderSavePath: ïîëíûé ïóòü àêêàóíòà äëÿ òàáëèö ëèäåðîâ --- BuildLeaderSavePath PROC call BuildAppDataDir cmp appDataReady, 1 @@ -4509,254 +737,15 @@ build_leader_local: invoke CopyCString, OFFSET leaderSavePath, leaderAccountPtr ret BuildLeaderSavePath ENDP -ReadAccountName PROC uses eax ecx edi - mov ecx, 64 - mov edi, OFFSET saveFileName -clear_account_name: - mov byte ptr [edi], 0 - inc edi - loop clear_account_name - mov accountNameLen, 0 - mov edi, OFFSET saveFileName -read_account_loop: - invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je account_name_done - mov al, byte ptr inputBuffer - cmp al, 13 - je account_name_drain_lf - cmp al, 10 - je account_name_done - cmp accountNameLen, 50 - jae read_account_loop - cmp al, '0' - jb check_account_upper - cmp al, '9' - jbe store_account_char -check_account_upper: - cmp al, 'A' - jb check_account_lower - cmp al, 'Z' - jbe store_account_char -check_account_lower: - cmp al, 'a' - jb check_account_symbols - cmp al, 'z' - jbe store_account_char -check_account_symbols: - cmp al, '_' - je store_account_char - cmp al, '-' - je store_account_char - jmp read_account_loop -store_account_char: - mov [edi], al - inc edi - inc accountNameLen - jmp read_account_loop -account_name_drain_lf: - invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 - cmp charsRead, 0 - je account_name_done - mov al, byte ptr inputBuffer - cmp al, 10 - jne account_name_drain_lf -account_name_done: - cmp accountNameLen, 0 - je account_name_return - mov byte ptr [edi], '.' - inc edi - mov byte ptr [edi], 'd' - inc edi - mov byte ptr [edi], 'a' - inc edi - mov byte ptr [edi], 't' - inc edi - mov byte ptr [edi], 0 -account_name_return: - ret -ReadAccountName ENDP -; --- AskAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -AskAccountName PROC -ask_account_name_again: - invoke PrintStr, OFFSET accountPromptText - call ReadAccountName - cmp accountNameLen, 0 - jne account_name_ok - invoke PrintStr, OFFSET accountBadText - jmp ask_account_name_again -account_name_ok: - ret -AskAccountName ENDP -; --- CopyFindAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -CopyFindAccountName PROC uses eax ecx esi edi - mov eax, accountCount - shl eax, 6 - mov edi, OFFSET accountList - add edi, eax - mov esi, OFFSET findData - add esi, 44 - mov ecx, 63 -copy_find_name_loop: - mov al, [esi] - mov [edi], al - cmp al, 0 - je copy_find_name_done - inc esi - inc edi - loop copy_find_name_loop - mov byte ptr [edi], 0 -copy_find_name_done: - ret -CopyFindAccountName ENDP -; --- CopySelectedAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -CopySelectedAccountName PROC uses eax ecx esi edi - mov eax, selectedAccount - dec eax - shl eax, 6 - mov esi, OFFSET accountList - add esi, eax - mov edi, OFFSET saveFileName - mov ecx, 63 -copy_selected_name_loop: - mov al, [esi] - mov [edi], al - cmp al, 0 - je copy_selected_name_done - inc esi - inc edi - loop copy_selected_name_loop - mov byte ptr [edi], 0 -copy_selected_name_done: - ret -CopySelectedAccountName ENDP -; --- CollectAccounts: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -CollectAccounts PROC uses eax - mov accountCount, 0 - call BuildAccountPatternFull - invoke FindFirstFileA, OFFSET accountPatternFull, OFFSET findData - cmp eax, INVALID_HANDLE_VALUE - je collect_accounts_done - mov findHandle, eax -collect_accounts_loop: - mov eax, DWORD PTR [findData] - test eax, 10h - jne collect_accounts_next - cmp accountCount, 20 - jae collect_accounts_close - call CopyFindAccountName - inc accountCount -collect_accounts_next: - invoke FindNextFileA, findHandle, OFFSET findData - cmp eax, 0 - jne collect_accounts_loop -collect_accounts_close: - invoke FindClose, findHandle -collect_accounts_done: - ret -CollectAccounts ENDP -; --- PrintAccountList: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintAccountList PROC uses eax ebx - invoke PrintStr, OFFSET accountListTitle - mov ebx, 0 -print_account_loop: - cmp ebx, accountCount - jae print_account_done - mov eax, ebx - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET dotSpaceText - mov eax, ebx - shl eax, 6 - add eax, OFFSET accountList - invoke PrintStr, eax - invoke PrintStr, OFFSET nl - inc ebx - jmp print_account_loop -print_account_done: - ret -PrintAccountList ENDP - -; --- SelectExistingAccount: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -SelectExistingAccount PROC -select_account_again: - call ClearView - invoke PrintTitleColor, OFFSET titleText - call CollectAccounts - cmp accountCount, 0 - jne accounts_available - invoke PrintStr, OFFSET accountNoFilesText - call PauseConsole - xor eax, eax - ret -accounts_available: - call PrintAccountList - invoke PrintStr, OFFSET accountSelectText - call ReadUInt - cmp eax, 1 - jb select_account_bad - cmp eax, accountCount - ja select_account_bad - mov selectedAccount, eax - call CopySelectedAccountName - mov eax, 1 - ret -select_account_bad: - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp select_account_again -SelectExistingAccount ENDP - -; --- AccountMenu: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -AccountMenu PROC -account_menu_loop: - call ClearView - invoke PrintTitleColor, OFFSET titleText - invoke PrintStr, OFFSET accountMenuText - invoke PrintStr, OFFSET choiceText - call ReadKey - cmp al, '1' - je account_login - cmp al, '2' - je account_create - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp account_menu_loop - -account_login: - call ResetProfileDefaults - call SelectExistingAccount - cmp eax, 1 - jne account_menu_loop - call LoadSave - invoke PrintStr, OFFSET accountLoginText - invoke PrintStr, OFFSET saveFileName - invoke PrintStr, OFFSET nl - invoke Sleep, 700 - ret - -account_create: - call ClearView - invoke PrintTitleColor, OFFSET titleText - call ResetProfileDefaults - call AskAccountName - call SaveGame - invoke PrintStr, OFFSET accountCreateText - invoke PrintStr, OFFSET saveFileName - invoke PrintStr, OFFSET nl - invoke Sleep, 700 - ret -AccountMenu ENDP -; --- CalcSaveSignature: ïðîñòàÿ ïîäïèñü ñîõðàíåíèÿ îò ðó÷íîé ïðàâêè --- CalcSaveSignature PROC uses ecx esi edx mov esi, OFFSET saveBuffer mov ecx, SAVE_SIGN_SIZE / 4 @@ -4772,7 +761,7 @@ save_signature_loop: loop save_signature_loop ret CalcSaveSignature ENDP -; --- SaveGame: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- + SaveGame PROC uses eax ecx esi edi mov DWORD PTR [saveBuffer], SAVE_MAGIC mov eax, bankroll @@ -4845,7 +834,6 @@ save_done: ret SaveGame ENDP -; --- LoadSave: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- LoadSave PROC uses eax ecx esi edi mov dailyDateKey, 0 mov dailyRewardMask, 0 @@ -5018,107 +1006,6 @@ load_done: ret LoadSave ENDP -; --- RegisterGamePlayed: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterGamePlayed PROC uses eax ebx - mov eax, currentGameId - cmp eax, 1 - jb register_game_played_done - cmp eax, 11 - ja register_game_played_done - dec eax - mov ebx, eax - inc dword ptr gameStatsPlayed[ebx * 4] -register_game_played_done: - ret -RegisterGamePlayed ENDP - -; --- RegisterGameWin: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterGameWin PROC uses eax ebx - call RegisterGamePlayed - mov eax, currentGameId - cmp eax, 1 - jb register_game_win_done - cmp eax, 10 - ja register_game_win_done - dec eax - mov ebx, eax - inc dword ptr gameStatsWon[ebx * 4] -register_game_win_done: - ret -RegisterGameWin ENDP - -; --- RegisterGameLoss: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterGameLoss PROC uses eax ebx - call RegisterGamePlayed - mov eax, currentGameId - cmp eax, 1 - jb register_game_loss_done - cmp eax, 10 - ja register_game_loss_done - dec eax - mov ebx, eax - inc dword ptr gameStatsLost[ebx * 4] -register_game_loss_done: - ret -RegisterGameLoss ENDP - -; --- RegisterGameDraw: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterGameDraw PROC uses eax ebx - call RegisterGamePlayed - mov eax, currentGameId - cmp eax, 1 - jb register_game_draw_done - cmp eax, 10 - ja register_game_draw_done - dec eax - mov ebx, eax - inc dword ptr gameStatsDraw[ebx * 4] -register_game_draw_done: - ret -RegisterGameDraw ENDP -; --- RegisterWin: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterWin PROC uses eax, amount:DWORD - inc gamesPlayed - inc gamesWon - call DailyAddWin - call RegisterGameWin - mov eax, amount - cmp eax, bestWin - jbe register_win_save - mov bestWin, eax -register_win_save: - call SaveGame - ret -RegisterWin ENDP - -; --- RegisterLoss: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterLoss PROC uses eax, amount:DWORD - inc gamesPlayed - inc gamesLost - call DailyAddLoss - call RegisterGameLoss - mov eax, amount - cmp eax, bestLoss - jbe register_loss_save - mov bestLoss, eax -register_loss_save: - invoke UnlockAchievement, 2, OFFSET achFirstLossName -register_loss_ach_done: - call SaveGame - ret -RegisterLoss ENDP - -; --- RegisterDraw: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -RegisterDraw PROC - inc gamesPlayed - inc gamesDrawn - call DailyAddDraw - call RegisterGameDraw - call SaveGame - ret -RegisterDraw ENDP - -; --- DailyTaskGoal: öåëü çàäàíèÿ èç ïóëà 40 --- DailyTaskGoal PROC taskId:DWORD mov eax, taskId cmp eax, 2 @@ -5157,39 +1044,6 @@ daily_goal_7: ret DailyTaskGoal ENDP -; --- DailyTaskReward: äåíåæíàÿ íàãðàäà çàäàíèÿ èç ïóëà 40 --- -DailyTaskReward PROC taskId:DWORD - mov eax, taskId - cmp eax, 12 - je daily_reward_big - cmp eax, 30 - je daily_reward_big - cmp eax, 34 - je daily_reward_big - cmp eax, 36 - je daily_reward_big - cmp eax, 38 - je daily_reward_mid - cmp eax, 40 - je daily_reward_mid - cmp eax, 10 - jb daily_reward_small - cmp eax, 28 - jbe daily_reward_mid - mov eax, 2000 - ret -daily_reward_small: - mov eax, 1000 - ret -daily_reward_mid: - mov eax, 2500 - ret -daily_reward_big: - mov eax, 4000 - ret -DailyTaskReward ENDP - -; --- DailyGenerateTasks: âûáèðàåò 3 çàäàíèÿ èç 40 ïî êàëåíäàðíîé äàòå --- DailyGenerateTasks PROC uses eax ebx ecx edx mov eax, dailyDateKey xor edx, edx @@ -5245,7 +1099,6 @@ daily_gen_store3: ret DailyGenerateTasks ENDP -; --- DailyCheckDate: êàëåíäàðíûå åæåäíåâíûå çàäàíèÿ --- DailyCheckDate PROC uses eax ebx invoke GetLocalTime, OFFSET systemTime movzx eax, word ptr [systemTime] @@ -5271,428 +1124,6 @@ daily_date_done: ret DailyCheckDate ENDP -; --- DailyTaskMatches: ïðîâåðÿåò, ðåàãèðóåò ëè çàäàíèå íà ñîáûòèå --- -; eventType: 1 played, 2 win, 3 loss, 4 draw, 5 bet>=5000, 6 bet>=10000 -DailyTaskMatches PROC uses ebx ecx edx, taskId:DWORD, eventType:DWORD - mov eax, taskId - mov ebx, eventType - cmp eax, 1 - je daily_match_play_any - cmp eax, 2 - je daily_match_play_any - cmp eax, 3 - je daily_match_play_any - cmp eax, 4 - je daily_match_win_any - cmp eax, 5 - je daily_match_win_any - cmp eax, 6 - je daily_match_win_any - cmp eax, 7 - je daily_match_loss_any - cmp eax, 8 - je daily_match_loss_any - cmp eax, 9 - je daily_match_draw_any - cmp eax, 10 - je daily_match_bet5 - cmp eax, 11 - je daily_match_bet5 - cmp eax, 12 - je daily_match_bet10 - - cmp eax, 13 - jb daily_match_none - cmp eax, 34 - ja daily_match_groups - mov ecx, eax - sub ecx, 13 - shr ecx, 1 - inc ecx - ; map compact game order 1..11 to actual currentGameId - cmp ecx, 3 - jb daily_match_game_ready - cmp ecx, 3 - je daily_match_game_clover - cmp ecx, 4 - je daily_match_game_rr - cmp ecx, 5 - je daily_match_game_skulls - cmp ecx, 6 - je daily_match_game_coin - cmp ecx, 7 - je daily_match_game_dice - cmp ecx, 8 - je daily_match_game_casino_roulette - cmp ecx, 9 - je daily_match_game_slot - cmp ecx, 10 - je daily_match_game_durak - mov ecx, 11 - jmp daily_match_game_ready -daily_match_game_clover: - mov ecx, 3 - jmp daily_match_game_ready -daily_match_game_rr: - mov ecx, 4 - jmp daily_match_game_ready -daily_match_game_skulls: - mov ecx, 5 - jmp daily_match_game_ready -daily_match_game_coin: - mov ecx, 6 - jmp daily_match_game_ready -daily_match_game_dice: - mov ecx, 7 - jmp daily_match_game_ready -daily_match_game_casino_roulette: - mov ecx, 8 - jmp daily_match_game_ready -daily_match_game_slot: - mov ecx, 9 - jmp daily_match_game_ready -daily_match_game_durak: - mov ecx, 10 -daily_match_game_ready: - cmp currentGameId, ecx - jne daily_match_none - test eax, 1 - jnz daily_match_play_any - jmp daily_match_win_any - -daily_match_groups: - cmp eax, 35 - je daily_match_card_play - cmp eax, 36 - je daily_match_card_win - cmp eax, 37 - je daily_match_luck_play - cmp eax, 38 - je daily_match_luck_win - cmp eax, 39 - je daily_match_risk_play - cmp eax, 40 - je daily_match_risk_win - jmp daily_match_none - -daily_match_play_any: - cmp ebx, 1 - je daily_match_yes - jmp daily_match_none -daily_match_win_any: - cmp ebx, 2 - je daily_match_yes - jmp daily_match_none -daily_match_loss_any: - cmp ebx, 3 - je daily_match_yes - jmp daily_match_none -daily_match_draw_any: - cmp ebx, 4 - je daily_match_yes - jmp daily_match_none -daily_match_bet5: - cmp ebx, 5 - je daily_match_yes - jmp daily_match_none -daily_match_bet10: - cmp ebx, 6 - je daily_match_yes - jmp daily_match_none - -daily_match_card_play: - cmp ebx, 1 - jne daily_match_none - cmp currentGameId, 1 - je daily_match_yes - cmp currentGameId, 2 - je daily_match_yes - cmp currentGameId, 10 - je daily_match_yes - jmp daily_match_none -daily_match_card_win: - cmp ebx, 2 - jne daily_match_none - cmp currentGameId, 1 - je daily_match_yes - cmp currentGameId, 2 - je daily_match_yes - cmp currentGameId, 10 - je daily_match_yes - jmp daily_match_none -daily_match_luck_play: - cmp ebx, 1 - jne daily_match_none - cmp currentGameId, 3 - je daily_match_yes - cmp currentGameId, 6 - je daily_match_yes - cmp currentGameId, 7 - je daily_match_yes - cmp currentGameId, 8 - je daily_match_yes - cmp currentGameId, 9 - je daily_match_yes - jmp daily_match_none -daily_match_luck_win: - cmp ebx, 2 - jne daily_match_none - cmp currentGameId, 3 - je daily_match_yes - cmp currentGameId, 6 - je daily_match_yes - cmp currentGameId, 7 - je daily_match_yes - cmp currentGameId, 8 - je daily_match_yes - cmp currentGameId, 9 - je daily_match_yes - jmp daily_match_none -daily_match_risk_play: - cmp ebx, 1 - jne daily_match_none - cmp currentGameId, 4 - je daily_match_yes - cmp currentGameId, 5 - je daily_match_yes - cmp currentGameId, 11 - je daily_match_yes - jmp daily_match_none -daily_match_risk_win: - cmp ebx, 2 - jne daily_match_none - cmp currentGameId, 4 - je daily_match_yes - cmp currentGameId, 5 - je daily_match_yes - cmp currentGameId, 11 - je daily_match_yes - jmp daily_match_none - -daily_match_yes: - mov eax, 1 - ret -daily_match_none: - xor eax, eax - ret -DailyTaskMatches ENDP - -; --- DailyApplyEvent: ïðèìåíÿåò èãðîâîå ñîáûòèå ê òð¸ì çàäàíèÿì äíÿ --- -DailyApplyEvent PROC uses eax ebx ecx edx esi, eventType:DWORD - call DailyCheckDate - mov esi, 0 -daily_apply_loop: - cmp esi, 3 - jae daily_apply_done - movzx eax, byte ptr [dailyTaskPacked + esi] - cmp eax, 0 - je daily_apply_next - mov ebx, eax - invoke DailyTaskMatches, ebx, eventType - cmp eax, 1 - jne daily_apply_next - movzx ecx, byte ptr [dailyProgressPacked + esi] - invoke DailyTaskGoal, ebx - cmp ecx, eax - jae daily_apply_next - inc byte ptr [dailyProgressPacked + esi] -daily_apply_next: - inc esi - jmp daily_apply_loop -daily_apply_done: - ret -DailyApplyEvent ENDP - -DailyAddPlayed PROC - invoke DailyApplyEvent, 1 - ret -DailyAddPlayed ENDP - -DailyAddWin PROC - call DailyAddPlayed - invoke DailyApplyEvent, 2 - ret -DailyAddWin ENDP - -DailyAddLoss PROC - call DailyAddPlayed - invoke DailyApplyEvent, 3 - ret -DailyAddLoss ENDP - -DailyAddDraw PROC - call DailyAddPlayed - invoke DailyApplyEvent, 4 - ret -DailyAddDraw ENDP - -DailyAddHighBet PROC - call DailyCheckDate - cmp currentBet, 5000 - jb daily_bet_done - invoke DailyApplyEvent, 5 - cmp currentBet, 10000 - jb daily_bet_done - invoke DailyApplyEvent, 6 -daily_bet_done: - ret -DailyAddHighBet ENDP - -; --- DailyClaimSlot: âûäà÷à íàãðàäû çà îäèí ñëîò åæåäíåâêè --- -DailyClaimSlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD - mov eax, dailyRewardMask - and eax, maskValue - cmp eax, 0 - jne daily_claim_slot_done - mov ecx, slotIndex - movzx ebx, byte ptr [dailyTaskPacked + ecx] - cmp ebx, 0 - je daily_claim_slot_done - movzx edx, byte ptr [dailyProgressPacked + ecx] - invoke DailyTaskGoal, ebx - cmp edx, eax - jb daily_claim_slot_done - mov eax, maskValue - or dailyRewardMask, eax - invoke DailyTaskReward, ebx - add bankroll, eax - push eax - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET dailyClaimText - pop eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - call ResetColor -daily_claim_slot_done: - ret -DailyClaimSlot ENDP - -DailyClaimRewards PROC - call DailyCheckDate - invoke DailyClaimSlot, 0, 1 - invoke DailyClaimSlot, 1, 2 - invoke DailyClaimSlot, 2, 4 - call SaveGame - ret -DailyClaimRewards ENDP - -; --- PrintDailySlot: ñòðîêà îäíîãî åæåäíåâíîãî çàäàíèÿ --- -PrintDailySlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD - mov ecx, slotIndex - mov eax, ecx - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET dotSpaceText - movzx ebx, byte ptr [dailyTaskPacked + ecx] - cmp ebx, 1 - jb daily_slot_done - cmp ebx, 40 - ja daily_slot_done - mov eax, ebx - dec eax - mov edx, dword ptr [dailyTaskNameTable + eax * 4] - invoke PrintStr, edx - invoke PrintStr, OFFSET dailySlashText - mov ecx, slotIndex - movzx eax, byte ptr [dailyProgressPacked + ecx] - push eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET dailySlashText - invoke DailyTaskGoal, ebx - mov edx, eax - invoke PrintUInt, edx - invoke PrintStr, OFFSET dailyRewardText - invoke DailyTaskReward, ebx - invoke PrintUInt, eax - mov eax, dailyRewardMask - and eax, maskValue - cmp eax, 0 - jne daily_slot_status_done - pop eax - cmp eax, edx - jae daily_slot_status_ready - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET dailyOpenText - call ResetColor - ret -daily_slot_status_ready: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET dailyReadyText - call ResetColor - ret -daily_slot_status_done: - pop eax - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET dailyDoneText - call ResetColor - ret -daily_slot_done: - ret -PrintDailySlot ENDP - -GameDailyTasks PROC - call ClearView - invoke PrintTitleColor, OFFSET dailyTitle - invoke PrintStr, OFFSET dailyIntro - call DailyClaimRewards - call PrintBank - invoke PrintStr, OFFSET dailyDateText - invoke PrintUInt, dailyDateKey - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET dailyPoolText - invoke PrintDailySlot, 0, 1 - invoke PrintDailySlot, 1, 2 - invoke PrintDailySlot, 2, 4 - call PauseConsole - ret -GameDailyTasks ENDP - -; --- PrintDifficultyName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDifficultyName PROC - cmp aiDifficulty, 1 - je print_easy_name - cmp aiDifficulty, 3 - je print_hard_name - invoke PrintStr, OFFSET normalName - ret -print_easy_name: - invoke PrintStr, OFFSET easyName - ret -print_hard_name: - invoke PrintStr, OFFSET hardName - ret -PrintDifficultyName ENDP - -; --- PrintBankLevelName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintBankLevelName PROC - mov eax, bankroll - cmp eax, 100000 - jae print_level_legend - cmp eax, 50000 - jae print_level_high - cmp eax, 20000 - jae print_level_player - invoke PrintStr, OFFSET bankLevelNewbie - ret -print_level_player: - invoke PrintStr, OFFSET bankLevelPlayer - ret -print_level_high: - invoke PrintStr, OFFSET bankLevelHigh - ret -print_level_legend: - invoke PrintStr, OFFSET bankLevelLegend - ret -PrintBankLevelName ENDP - -; --- PrintBankLevel: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintBankLevel PROC - invoke PrintStr, OFFSET bankLevelText - call PrintBankLevelName - ret -PrintBankLevel ENDP - -; --- ApplySoundVolume: íàñòðîéêè ãðîìêîñòè WinMM, 0-10 --- ApplySoundVolume PROC uses eax edx mov eax, settingsVolume cmp eax, 10 @@ -5708,1154 +1139,7 @@ volume_pack: invoke waveOutSetVolume, 0FFFFFFFFh, eax ret ApplySoundVolume ENDP -; --- AnimShouldDrawFrame: animation profile frame skipper --- -AnimShouldDrawFrame PROC uses ecx edx - inc animFrameCounter - mov eax, settingsLowSpec - cmp eax, 0 - je anim_draw_yes - cmp eax, 1 - je anim_adaptive_check - mov eax, animFrameCounter - xor edx, edx - mov ecx, 3 - div ecx - cmp edx, 1 - je anim_draw_yes - xor eax, eax - ret -anim_adaptive_check: - mov eax, animFrameCounter - and eax, 1 - cmp eax, 1 - je anim_draw_yes - xor eax, eax - ret -anim_draw_yes: - mov eax, 1 - ret -AnimShouldDrawFrame ENDP -; --- AnimFrameDelay: keeps scene timing while reducing redraws --- -AnimFrameDelay PROC baseDelay:DWORD - mov eax, baseDelay - cmp settingsLowSpec, 1 - je anim_delay_adaptive - cmp settingsLowSpec, 2 - je anim_delay_stable - ret -anim_delay_adaptive: - shl eax, 1 - ret -anim_delay_stable: - imul eax, eax, 3 - ret -AnimFrameDelay ENDP - -; --- PrintVIPStatus: VIP-ñòàòóñ ïî ðàçìåðó áàíêà --- -PrintVIPStatus PROC - invoke PrintStr, OFFSET vipStatusText - mov eax, bankroll - cmp eax, 500000 - jae print_vip_diamond - cmp eax, 250000 - jae print_vip_gold - cmp eax, 100000 - jae print_vip_silver - invoke PrintStr, OFFSET vipBronzeText - ret -print_vip_silver: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET vipSilverText - call ResetColor - ret -print_vip_gold: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET vipGoldText - call ResetColor - ret -print_vip_diamond: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET vipDiamondText - call ResetColor - ret -PrintVIPStatus ENDP - -; --- ApplyVIPTax: êàçèíî áåðåò êîìèññèþ ñ áîëüøèõ VIP-ñòàâîê --- -ApplyVIPTax PROC uses eax ebx edx - mov vipTaxAmount, 0 - mov eax, bankroll - cmp eax, 100000 - jb vip_tax_done - mov eax, currentBet - cmp bankroll, 500000 - jae vip_tax_diamond - cmp bankroll, 250000 - jae vip_tax_gold - mov ebx, 1 - jmp vip_tax_calc -vip_tax_gold: - mov ebx, 2 - jmp vip_tax_calc -vip_tax_diamond: - mov ebx, 3 -vip_tax_calc: - mul ebx - mov ebx, 100 - xor edx, edx - div ebx - cmp eax, 0 - jne vip_tax_have - mov eax, 1 -vip_tax_have: - mov vipTaxAmount, eax - cmp bankroll, eax - jae vip_tax_sub - mov eax, bankroll - mov vipTaxAmount, eax -vip_tax_sub: - sub bankroll, eax - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET vipTaxText - invoke PrintUInt, vipTaxAmount - invoke PrintStr, OFFSET nl - call ResetColor - call SaveGame -vip_tax_done: - ret -ApplyVIPTax ENDP - -; --- CheckSecretEnding: ñåêðåòíàÿ êîíöîâêà çà ïîëíîå çàêðûòèå êàçèíî --- -CheckSecretEnding PROC uses eax - cmp secretEndingSeen, 0 - jne secret_ending_done - mov eax, achievements - and eax, 3FFFFh - cmp eax, 3FFFFh - jne secret_ending_done - mov eax, shopBackOwned - and eax, 1FFFh - cmp eax, 1FFFh - jne secret_ending_done - cmp bankroll, 1000000 - jb secret_ending_done - mov secretEndingSeen, 1 - call SaveGame - call ClearView - call PlayVictorySound - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET secretEndingTitle - invoke PrintStr, OFFSET secretEndingArt1 - invoke Sleep, 500 - invoke PrintStr, OFFSET secretEndingArt2 - call ResetColor - invoke PrintStr, OFFSET secretEndingBody - call PauseConsole -secret_ending_done: - ret -CheckSecretEnding ENDP - -; --- GameSettings: íàñòðîéêè çâóêà è èãðîâûõ îïöèé --- -GameSettings PROC -settings_loop: - call ClearView - invoke PrintTitleColor, OFFSET settingsTitle - invoke PrintStr, OFFSET settingsVolumeText - invoke PrintUInt, settingsVolume - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET settingsVolumeHint - call PrintVIPStatus - - invoke PrintStr, OFFSET settingsModeText - cmp settingsLowSpec, 0 - je settings_print_cinematic - cmp settingsLowSpec, 1 - je settings_print_adaptive - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET settingsStableText - call ResetColor - jmp settings_print_intro -settings_print_cinematic: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET settingsCinematicText - call ResetColor - jmp settings_print_intro -settings_print_adaptive: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET settingsAdaptiveText - call ResetColor -settings_print_intro: - invoke PrintStr, OFFSET settingsIntroText - cmp settingsIntroEnabled, 1 - je settings_intro_on - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET settingsOffText - call ResetColor - jmp settings_print_dbd -settings_intro_on: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET settingsOnText - call ResetColor -settings_print_dbd: - invoke PrintStr, OFFSET settingsDbdText - cmp settingsDbdWindowEnabled, 1 - je settings_dbd_on - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET settingsOffText - call ResetColor - jmp settings_show_menu -settings_dbd_on: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET settingsOnText - call ResetColor -settings_show_menu: - invoke PrintStr, OFFSET settingsAnimHintText - invoke PrintStr, OFFSET settingsMenuText - call ReadUInt - cmp eax, 0 - je settings_exit - cmp eax, 1 - je settings_quieter - cmp eax, 2 - je settings_louder - cmp eax, 3 - je settings_toggle_low - cmp eax, 4 - je settings_toggle_intro - cmp eax, 5 - je settings_toggle_dbd - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp settings_loop -settings_quieter: - cmp settingsVolume, 0 - jbe settings_apply - dec settingsVolume - jmp settings_apply -settings_louder: - cmp settingsVolume, 10 - jae settings_apply - inc settingsVolume - jmp settings_apply -settings_toggle_low: - inc settingsLowSpec - cmp settingsLowSpec, 3 - jb settings_apply - mov settingsLowSpec, 0 - jmp settings_apply -settings_toggle_intro: - mov eax, settingsIntroEnabled - xor eax, 1 - mov settingsIntroEnabled, eax - jmp settings_apply -settings_toggle_dbd: - mov eax, settingsDbdWindowEnabled - xor eax, 1 - mov settingsDbdWindowEnabled, eax -settings_apply: - call ApplySoundVolume - call SaveGame - jmp settings_loop -settings_exit: - ret -GameSettings ENDP -; --- CalcStressLevel: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CalcStressLevel PROC uses eax ebx edx - mov stressLevel, 0 - cmp bankroll, 0 - je calc_stress_done - cmp currentBet, 0 - je calc_stress_done - mov eax, currentBet - mov ebx, 100 - mul ebx - mov ebx, bankroll - xor edx, edx - div ebx - cmp eax, 75 - jae calc_stress_max - cmp eax, 50 - jae calc_stress_high - cmp eax, 25 - jae calc_stress_mid - jmp calc_stress_done -calc_stress_mid: - mov stressLevel, 1 - jmp calc_stress_done -calc_stress_high: - mov stressLevel, 2 - jmp calc_stress_done -calc_stress_max: - mov stressLevel, 3 -calc_stress_done: - ret -CalcStressLevel ENDP - -; --- PrintStressLevel: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintStressLevel PROC - invoke PrintStr, OFFSET stressText - mov eax, stressLevel - cmp eax, 0 - je print_stress_low - cmp eax, 1 - je print_stress_mid - cmp eax, 2 - je print_stress_high - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET stressMaxText - call ResetColor - ret -print_stress_low: - invoke PrintStr, OFFSET stressLowText - ret -print_stress_mid: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET stressMidText - call ResetColor - ret -print_stress_high: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET stressHighText - call ResetColor - ret -PrintStressLevel ENDP - -; --- PrintSuspicion: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSuspicion PROC - invoke PrintStr, OFFSET suspicionText - mov eax, casinoSuspicion - cmp eax, 44 - jae print_suspicion_hunt - cmp eax, 25 - jae print_suspicion_watch - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET suspicionCalmText - call ResetColor - ret -print_suspicion_watch: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET suspicionWatchText - call ResetColor - ret -print_suspicion_hunt: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET suspicionHuntText - call ResetColor - ret -PrintSuspicion ENDP - -; --- AddSuspicion: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -AddSuspicion PROC uses eax ebx, amount:DWORD - mov eax, casinoSuspicion - add eax, amount - cmp eax, 100 - jbe add_suspicion_store - mov eax, 100 -add_suspicion_store: - mov casinoSuspicion, eax - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET suspicionUpText - call ResetColor - call SaveGame - ret -AddSuspicion ENDP - -; --- CheckCasinoHeat: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -CheckCasinoHeat PROC uses eax ebx - mov eax, casinoSuspicion - cmp eax, 44 - jb casino_heat_done - sub eax, 40 - mov ebx, eax - invoke RandomRange, 100 - cmp eax, ebx - jae casino_heat_done - mov eax, currentBet - shr eax, 1 - cmp eax, 1 - jae casino_heat_have_fine - mov eax, 1 -casino_heat_have_fine: - cmp bankroll, eax - jae casino_heat_sub - mov eax, bankroll -casino_heat_sub: - sub bankroll, eax - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET suspicionFineText - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - call ResetColor - call PrintBank - call SaveGame -casino_heat_done: - ret -CheckCasinoHeat ENDP -; --- ShowStats: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -ShowStats PROC - invoke PrintStr, OFFSET difficultyNowText - call PrintDifficultyName - call PrintBankLevel - invoke PrintStr, OFFSET statsGamesText - invoke PrintUInt, gamesPlayed - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET statsWinsText - invoke PrintUInt, gamesWon - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET statsLossText - invoke PrintUInt, gamesLost - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET statsDrawText - invoke PrintUInt, gamesDrawn - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET statsBestWinText - invoke PrintUInt, bestWin - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET statsBestLossText - invoke PrintUInt, bestLoss - invoke PrintStr, OFFSET nl - call PrintSuspicion - ret -ShowStats ENDP - - -; --- WriteAchievementPopup: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -WriteAchievementPopup PROC uses eax ecx esi, pName:DWORD - mov esi, pName - xor ecx, ecx -achievement_len_loop: - mov al, [esi + ecx] - cmp al, 0 - je achievement_len_ready - cmp al, 13 - je achievement_len_ready - cmp ecx, 64 - jae achievement_len_ready - inc ecx - jmp achievement_len_loop -achievement_len_ready: - invoke CreateFileA, OFFSET achievementFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - je achievement_popup_run - mov achievementHandle, eax - invoke WriteFile, achievementHandle, pName, ecx, ADDR charsWritten, 0 - invoke CloseHandle, achievementHandle -achievement_popup_run: - invoke WinExec, OFFSET achievementCmd, 1 - ret -WriteAchievementPopup ENDP - -; --- UnlockAchievement: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -UnlockAchievement PROC uses eax ebx, maskValue:DWORD, pName:DWORD - mov eax, achievements - mov ebx, maskValue - test eax, ebx - jz unlock_achievement_new - ret -unlock_achievement_new: - or eax, ebx - mov achievements, eax - call SaveGame - invoke WriteAchievementPopup, pName - ret -UnlockAchievement ENDP - -; --- PrintAchievementLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintAchievementLine PROC uses eax ebx, maskValue:DWORD, pName:DWORD - mov eax, achievements - mov ebx, maskValue - test eax, ebx - jz print_achievement_locked - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET achDoneText - call ResetColor - jmp print_achievement_name -print_achievement_locked: - invoke SetColor, COLOR_BACK_CARD - invoke PrintStr, OFFSET achTodoText - call ResetColor -print_achievement_name: - invoke PrintStr, pName - ret -PrintAchievementLine ENDP -; --- ShowWelcome: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -ShowWelcome PROC - call ClearView - invoke PrintTitleColor, OFFSET titleText - invoke PrintStr, OFFSET welcomeText - call PrintGoal - cmp bankRecovered, 0 - je welcome_check_tampered - invoke PrintStr, OFFSET bankRecoveredText -welcome_check_tampered: - cmp saveTampered, 0 - je welcome_bank_normal - invoke PrintStr, OFFSET saveTamperedText -welcome_bank_normal: - call PrintBank - call ShowStats - call PauseConsole - ret -ShowWelcome ENDP - -; --- SelectDifficulty: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -SelectDifficulty PROC -select_difficulty_again: - call ClearView - invoke PrintTitleColor, OFFSET titleText - invoke PrintStr, OFFSET difficultyText - call ReadKey - cmp al, '1' - je set_easy_ai - cmp al, '2' - je set_normal_ai - cmp al, '3' - je set_hard_ai - jmp select_difficulty_again -set_easy_ai: - mov aiDifficulty, 1 - jmp difficulty_selected -set_normal_ai: - mov aiDifficulty, 2 - jmp difficulty_selected -set_hard_ai: - mov aiDifficulty, 3 -difficulty_selected: - call SaveGame - ret -SelectDifficulty ENDP - -; --- ShowPokerChips: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ShowPokerChips PROC uses eax ebx edx - invoke PrintStr, OFFSET pokerChipTitle - - mov eax, currentBet - mov ebx, 5000 - xor edx, edx - div ebx - add eax, 5 - cmp eax, 10 - jbe poker_chips_count_ready - mov eax, 10 -poker_chips_count_ready: - mov rowIndex, eax - -poker_chips_loop: - cmp rowIndex, 0 - je poker_chips_done - mov eax, rowIndex - cmp eax, 7 - ja poker_chips_high - cmp eax, 4 - ja poker_chips_mid - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET pokerChipLow - jmp poker_chips_next -poker_chips_mid: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET pokerChipMid - jmp poker_chips_next -poker_chips_high: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET pokerChipHigh -poker_chips_next: - dec rowIndex - jmp poker_chips_loop - -poker_chips_done: - call ResetColor - ret -ShowPokerChips ENDP - -; --- ShowPokerMoney: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ShowPokerMoney PROC uses eax ebx - call ShowPokerChips - invoke PrintStr, OFFSET pokerPotText - mov eax, currentBet - mov ebx, 2 - mul ebx - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET pokerBetText - invoke PrintUInt, currentBet - invoke PrintStr, OFFSET nl - ret -ShowPokerMoney ENDP - -; --- PromptPokerRaise: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PromptPokerRaise PROC uses ebx - call PrintBank - invoke PrintStr, OFFSET pokerRaiseAskText - call ReadUInt - cmp eax, 0 - je raise_bad - mov pokerRaiseAmount, eax - mov ebx, currentBet - add ebx, eax - cmp ebx, bankroll - ja raise_bad - mov currentBet, ebx - invoke PrintStr, OFFSET pokerRaisedText - invoke PrintUInt, currentBet - invoke PrintStr, OFFSET nl - mov eax, 1 - ret -raise_bad: - invoke PrintStr, OFFSET pokerBadRaiseText - xor eax, eax - ret -PromptPokerRaise ENDP - -; --- PaySlotMultiplier: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PaySlotMultiplier PROC uses eax ebx edx, multiplier:DWORD - mov lastGameResult, 1 - mov eax, currentBet - mov ebx, multiplier - mul ebx - mov pokerRaiseAmount, eax - add bankroll, eax - invoke PrintStr, OFFSET slotPayoutText - invoke PrintUInt, multiplier - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET moneyWinText - invoke PrintUInt, pokerRaiseAmount - invoke PrintStr, OFFSET nl - invoke RegisterWin, pokerRaiseAmount - invoke UnlockAchievement, 1, OFFSET achFirstWinName - call PrintBank - call PrintCroupierWin - cmp multiplier, 10 - jb slot_multiplier_no_ach - invoke UnlockAchievement, 4, OFFSET achJackpotName -slot_multiplier_no_ach: - call CheckVictory - ret -PaySlotMultiplier ENDP -; --- CheckBankrupt: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheckBankrupt PROC - cmp bankroll, 0 - ja bankroll_ok - call PlayBankruptSound - invoke Sleep, 300 - invoke PrintStr, OFFSET casinoKickText - invoke PrintStr, OFFSET casinoExitText - call ReadAnyKey - invoke ExitProcess, 0 -bankroll_ok: - ret -CheckBankrupt ENDP -; --- CheckVictory: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheckVictory PROC - mov eax, bankroll - cmp eax, targetBank - jb victory_not_yet - call PlayVictorySound - call ClearView - invoke PrintTitleColor, OFFSET titleText - invoke PrintStr, OFFSET victoryText - invoke PrintStr, OFFSET victoryReachedText - invoke PrintUInt, targetBank - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET victoryTailText - call PrintBank - -advance_victory_goal: - mov eax, bankroll - cmp eax, targetBank - jb victory_goal_ready - add targetBank, 50000 - jmp advance_victory_goal -victory_goal_ready: - call SaveGame - invoke UnlockAchievement, 40h, OFFSET achGoalName - invoke PrintStr, OFFSET nextGoalText - invoke PrintUInt, targetBank - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET victoryExitText - call CheckSecretEnding -victory_secret_checked: - call ReadAnyKey - ret -victory_not_yet: - call CheckSecretEnding - ret -CheckVictory ENDP - -; --- ShowStressPulse: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -ShowStressPulse PROC uses eax ebx edx - cmp bankroll, 0 - je stress_pulse_done - mov eax, currentBet - cmp eax, 0 - je stress_pulse_done - mov ebx, 100 - mul ebx - mov ebx, bankroll - xor edx, edx - div ebx - cmp eax, 25 - jb stress_pulse_done - - invoke PrintStr, OFFSET pulseTitleText - cmp eax, 50 - jae stress_pulse_hot - invoke SetColor, COLOR_WARN - jmp stress_pulse_frames -stress_pulse_hot: - invoke SetColor, COLOR_BAD -stress_pulse_frames: - mov eax, stressLevel - inc eax - mov pulseCycles, eax -stress_pulse_cycle: - invoke PrintStr, OFFSET pulseFrame1 - invoke Sleep, 70 - invoke PrintStr, OFFSET pulseFrame2 - invoke Sleep, 70 - invoke PrintStr, OFFSET pulseFrame3 - invoke Sleep, 70 - invoke PrintStr, OFFSET pulseFrame4 - invoke Sleep, 70 - invoke PrintStr, OFFSET pulseFrame5 - invoke Sleep, 90 - dec pulseCycles - cmp pulseCycles, 0 - jne stress_pulse_cycle - call ResetColor -stress_pulse_done: - ret -ShowStressPulse ENDP - -; --- PromptBet: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PromptBet PROC -prompt_bet_again: - call CheckBankrupt - call PrintBank - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET betText - call ReadBetInput - push eax - call ResetColor - pop eax - cmp eax, 0FFFFFFFFh - je prompt_bet_again - cmp eax, 0FFFFFFFEh - je prompt_bet_again - cmp eax, 0FFFFFFFDh - je prompt_bet_again - cmp eax, 0 - jne bet_check_money - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET badBetText - call ResetColor - jmp prompt_bet_again - -bet_check_money: - cmp eax, bankroll - jbe bet_store - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET tooBigBetText - call ResetColor - jmp prompt_bet_again -bet_store: - mov currentBet, eax - call ApplyVIPTax - cmp currentBet, 10000 - jb bet_highroller_done - invoke UnlockAchievement, 8, OFFSET achHighRollerName -bet_highroller_done: - call DailyAddHighBet - invoke PrintStr, OFFSET betChosenText - invoke PrintMoney, currentBet - invoke PrintStr, OFFSET nl - call CalcStressLevel - call PrintStressLevel - call ShowStressPulse - invoke Sleep, 500 - ret -PromptBet ENDP - -; --- PayWin: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PayWin PROC - mov lastGameResult, 1 - mov eax, currentBet - add bankroll, eax - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET moneyWinText - invoke PrintUInt, currentBet - call ResetColor - invoke PrintStr, OFFSET nl - invoke RegisterWin, currentBet - invoke UnlockAchievement, 1, OFFSET achFirstWinName - call PrintBank - call PrintCroupierWin - call CheckVictory - ret -PayWin ENDP - -; --- TryCharmSave: òàëèñìàíû ñïàñàþò ñòàâêó, íî ó ñèëüíûõ åñòü öåíà --- -TryCharmSave PROC uses ebx ecx edx - cmp shopCharmLevel, 0 - jne charm_has_level - xor eax, eax - ret -charm_has_level: - cmp shopCharmUses, 0 - jne charm_has_uses - mov shopCharmLevel, 0 - xor eax, eax - ret -charm_has_uses: - mov ebx, shopCharmLevel - cmp ebx, 1 - je charm_chance_clover - cmp ebx, 2 - je charm_chance_bell - cmp ebx, 3 - je charm_chance_diamond - cmp ebx, 4 - je charm_chance_skull - cmp ebx, 5 - je charm_chance_web - cmp ebx, 6 - je charm_chance_bee - cmp ebx, 7 - je charm_chance_moon - cmp ebx, 8 - je charm_chance_crown - cmp ebx, 9 - je charm_chance_mirror - cmp ebx, 10 - je charm_chance_dice - cmp ebx, 11 - je charm_chance_blood - cmp ebx, 12 - je charm_chance_hourglass - cmp ebx, 13 - je charm_chance_horseshoe - cmp ebx, 14 - je charm_chance_joker - cmp ebx, 15 - je charm_chance_phoenix - cmp ebx, 16 - je charm_chance_compass - cmp ebx, 17 - je charm_chance_tooth - cmp ebx, 18 - je charm_chance_eye - cmp ebx, 19 - je charm_chance_key - cmp ebx, 20 - je charm_chance_candle - cmp ebx, 21 - je charm_chance_chip - cmp ebx, 22 - je charm_chance_snake - cmp ebx, 23 - je charm_chance_ace - cmp ebx, 24 - je charm_chance_devil - xor eax, eax - ret -charm_chance_clover: - mov ecx, 7 - jmp charm_roll -charm_chance_bell: - mov ecx, 14 - jmp charm_roll -charm_chance_diamond: - mov ecx, 21 - jmp charm_roll -charm_chance_skull: - mov ecx, 28 - jmp charm_roll -charm_chance_web: - mov ecx, 35 - jmp charm_roll -charm_chance_bee: - mov ecx, 12 - jmp charm_roll -charm_chance_moon: - mov ecx, 18 - jmp charm_roll -charm_chance_crown: - mov ecx, 24 - jmp charm_roll -charm_chance_mirror: - mov ecx, 16 - jmp charm_roll -charm_chance_dice: - mov ecx, 10 - jmp charm_roll -charm_chance_blood: - mov ecx, 40 - jmp charm_roll -charm_chance_hourglass: - mov ecx, 22 - jmp charm_roll -charm_chance_horseshoe: - mov ecx, 9 - jmp charm_roll -charm_chance_joker: - mov ecx, 33 - jmp charm_roll -charm_chance_phoenix: - mov ecx, 26 - jmp charm_roll -charm_chance_compass: - mov ecx, 19 - jmp charm_roll -charm_chance_tooth: - mov ecx, 15 - jmp charm_roll -charm_chance_eye: - mov ecx, 31 - jmp charm_roll -charm_chance_key: - mov ecx, 13 - jmp charm_roll -charm_chance_candle: - mov ecx, 38 - jmp charm_roll -charm_chance_chip: - mov ecx, 20 - jmp charm_roll -charm_chance_snake: - mov ecx, 29 - jmp charm_roll -charm_chance_ace: - mov ecx, 17 - jmp charm_roll -charm_chance_devil: - mov ecx, 50 -charm_roll: - invoke RandomRange, 100 - cmp eax, ecx - jb charm_save_hit - xor eax, eax - ret - -charm_save_hit: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmSaveText - call ResetColor - dec shopCharmUses - - mov ebx, shopCharmLevel - cmp ebx, 2 - je charm_penalty_bell - cmp ebx, 3 - je charm_penalty_diamond - cmp ebx, 4 - je charm_penalty_skull - cmp ebx, 5 - je charm_penalty_web - cmp ebx, 7 - je charm_penalty_moon - cmp ebx, 8 - je charm_penalty_crown - cmp ebx, 9 - je charm_penalty_mirror - cmp ebx, 11 - je charm_penalty_blood - cmp ebx, 12 - je charm_penalty_hourglass - cmp ebx, 14 - je charm_penalty_joker - cmp ebx, 15 - je charm_penalty_phoenix - cmp ebx, 16 - je charm_penalty_compass - cmp ebx, 17 - je charm_penalty_tooth - cmp ebx, 18 - je charm_penalty_eye - cmp ebx, 20 - je charm_penalty_candle - cmp ebx, 22 - je charm_penalty_snake - cmp ebx, 23 - je charm_penalty_ace - cmp ebx, 24 - je charm_penalty_devil - jmp charm_penalty_done - -charm_penalty_bell: - invoke AddSuspicion, 4 - jmp charm_penalty_done -charm_penalty_diamond: - invoke AddSuspicion, 8 - jmp charm_penalty_done -charm_penalty_web: - invoke AddSuspicion, 20 - jmp charm_penalty_done -charm_penalty_moon: - invoke AddSuspicion, 8 - jmp charm_penalty_done -charm_penalty_crown: - invoke AddSuspicion, 12 - jmp charm_penalty_done -charm_penalty_mirror: - invoke AddSuspicion, 6 - jmp charm_penalty_done -charm_penalty_hourglass: - invoke AddSuspicion, 15 - jmp charm_penalty_done -charm_penalty_joker: - invoke AddSuspicion, 30 - jmp charm_penalty_done -charm_penalty_phoenix: - invoke AddSuspicion, 10 - jmp charm_penalty_done -charm_penalty_compass: - invoke AddSuspicion, 12 - jmp charm_penalty_done -charm_penalty_eye: - invoke AddSuspicion, 18 - jmp charm_penalty_done -charm_penalty_snake: - invoke AddSuspicion, 16 - jmp charm_penalty_done -charm_penalty_ace: - invoke AddSuspicion, 7 - jmp charm_penalty_done -charm_penalty_blood: - invoke AddSuspicion, 25 - mov ebx, 4 - jmp charm_take_fraction -charm_penalty_skull: - mov ebx, 2 - jmp charm_take_fraction -charm_penalty_tooth: - mov ebx, 5 - jmp charm_take_fraction -charm_penalty_candle: - invoke AddSuspicion, 35 - mov ebx, 3 - jmp charm_take_fraction -charm_penalty_devil: - invoke AddSuspicion, 45 - mov ebx, 2 -charm_take_fraction: - mov eax, currentBet - xor edx, edx - div ebx - cmp eax, 1 - jae charm_have_price - mov eax, 1 -charm_have_price: - cmp bankroll, eax - jae charm_sub_price - mov eax, bankroll -charm_sub_price: - sub bankroll, eax - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET charmPenaltyText - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - call ResetColor - -charm_penalty_done: - call RegisterDraw - invoke UnlockAchievement, 20h, OFFSET achCharmName - cmp shopCharmUses, 0 - jne charm_still_alive - mov shopCharmLevel, 0 - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmBurnText - call ResetColor -charm_still_alive: - call SaveGame - call PrintBank - call PrintCroupierDraw - mov eax, 1 - ret -TryCharmSave ENDP - -; --- PayLose: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PayLose PROC - cmp cheatGodMode, 0 - jne pay_lose_cheat_win - cmp cheatLuckyWin, 0 - jne pay_lose_cheat_once - jmp pay_lose_normal -pay_lose_cheat_once: - mov cheatLuckyWin, 0 -pay_lose_cheat_win: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET cheatSavedText - call ResetColor - call PayWin - ret -pay_lose_normal: - call TryCharmSave - cmp eax, 1 - je pay_lose_charm_saved - mov eax, currentBet - cmp bankroll, eax - jae pay_lose_sub - mov bankroll, 0 - jmp pay_lose_done -pay_lose_sub: - sub bankroll, eax -pay_lose_done: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET moneyLoseText - invoke PrintUInt, currentBet - call ResetColor - invoke PrintStr, OFFSET nl - invoke RegisterLoss, currentBet - call PrintBank - call PrintCroupierLose - call CheckBankrupt -pay_lose_charm_saved: - ret -PayLose ENDP - -; --- PayDraw: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PayDraw PROC - mov lastGameResult, 3 - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET moneyDrawText - call ResetColor - call RegisterDraw - call PrintBank - call PrintCroupierDraw - ret -PayDraw ENDP - -; --- PaySlotPair: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PaySlotPair PROC - mov lastGameResult, 1 - mov eax, currentBet - add bankroll, eax - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET moneyWinText - invoke PrintUInt, currentBet - call ResetColor - invoke PrintStr, OFFSET nl - call PrintBank - ret -PaySlotPair ENDP - -; --- PaySlotJackpot: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -PaySlotJackpot PROC uses ebx - mov lastGameResult, 1 - mov eax, currentBet - mov ebx, 5 - mul ebx - add bankroll, eax - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET moneyWinText - invoke PrintUInt, eax - call ResetColor - invoke PrintStr, OFFSET nl - call PrintBank - invoke UnlockAchievement, 4, OFFSET achJackpotName - ret -PaySlotJackpot ENDP - -; --- ConfigureConsoleSize: çàäàåò ñòàðòîâûé ðàçìåð îêíà êîíñîëè áåç ìàñøòàáèðîâàíèÿ ASCII --- ConfigureConsoleSize PROC invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny @@ -6885,13 +1169,12 @@ try_console_120: console_size_done: ret ConfigureConsoleSize ENDP -; --- HomeCursor: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- + HomeCursor PROC invoke SetConsoleCursorPosition, hOut, 0 ret HomeCursor ENDP -; --- ClearView: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- ClearView PROC uses eax edx LOCAL csbi[22]:BYTE LOCAL cells:DWORD @@ -6913,7 +1196,6 @@ clear_console_buffer: ret ClearView ENDP -; --- RandomRange: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- RandomRange PROC uses ecx edx, range:DWORD mov eax, seed imul eax, 214013 @@ -6928,891 +1210,6 @@ RandomRange PROC uses ecx edx, range:DWORD ret RandomRange ENDP -; --- ResetDeck: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -ResetDeck PROC uses ecx edi - mov ecx, 52 - mov edi, OFFSET deckUsed -reset_loop: - mov byte ptr [edi], 0 - inc edi - loop reset_loop - ret -ResetDeck ENDP - -; --- DrawCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -DrawCard PROC uses edi -draw_again: - invoke RandomRange, 52 - mov edi, OFFSET deckUsed - add edi, eax - cmp byte ptr [edi], 0 - jne draw_again - mov byte ptr [edi], 1 - ret -DrawCard ENDP -; --- CardValue21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -CardValue21 PROC uses ecx edx, card:DWORD - mov eax, card - xor edx, edx - mov ecx, 13 - div ecx - mov eax, edx - cmp eax, 8 - jbe numeric_card - cmp eax, 9 - je jack_card - cmp eax, 10 - je queen_card - cmp eax, 11 - je king_card - mov eax, 11 - ret -numeric_card: - add eax, 2 - ret -jack_card: - mov eax, 2 - ret -queen_card: - mov eax, 3 - ret -king_card: - mov eax, 4 - ret -CardValue21 ENDP - -; --- CardValueBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -CardValueBJ PROC uses ecx edx, card:DWORD - mov eax, card - xor edx, edx - mov ecx, 13 - div ecx - mov eax, edx - cmp eax, 8 - jbe bj_numeric - cmp eax, 12 - je bj_ace - mov eax, 10 - ret -bj_numeric: - add eax, 2 - ret -bj_ace: - mov eax, 11 - ret -CardValueBJ ENDP - -; --- AdjustPlayerAces: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AdjustPlayerAces PROC -adjust_player: - cmp playerTotal, 21 - jbe adjust_player_done - cmp playerAces, 0 - je adjust_player_done - sub playerTotal, 10 - dec playerAces - jmp adjust_player -adjust_player_done: - ret -AdjustPlayerAces ENDP - -; --- AdjustDealerAces: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AdjustDealerAces PROC -adjust_dealer: - cmp dealerTotal, 21 - jbe adjust_dealer_done - cmp dealerAces, 0 - je adjust_dealer_done - sub dealerTotal, 10 - dec dealerAces - jmp adjust_dealer -adjust_dealer_done: - ret -AdjustDealerAces ENDP - -; --- PrintScore: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintScore PROC - invoke PrintStr, OFFSET yourScoreText - invoke PrintUInt, playerTotal - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET dealerScoreText - invoke PrintUInt, dealerTotal - invoke PrintStr, OFFSET nl - ret -PrintScore ENDP - -; --- PrintCard: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCard PROC uses eax ebx ecx edx esi, card:DWORD - mov eax, card - xor edx, edx - mov ecx, 13 - div ecx - mov ebx, eax - mov esi, edx - - invoke PrintUtf8, OFFSET cardTop - invoke PrintUtf8, OFFSET cardSuitLeft - invoke PrintSuit, ebx - invoke PrintUtf8, OFFSET cardSuitRight - - cmp esi, 8 - jne one_rank - invoke PrintUtf8, OFFSET cardRankTenL - invoke PrintStr, ranks[esi * 4] - invoke PrintUtf8, OFFSET cardRankTenR - jmp rank_done -one_rank: - invoke PrintUtf8, OFFSET cardRankOneL - invoke PrintStr, ranks[esi * 4] - invoke PrintUtf8, OFFSET cardRankOneR -rank_done: - invoke PrintUtf8, OFFSET cardEmpty - invoke PrintUtf8, OFFSET cardEmpty - invoke PrintUtf8, OFFSET cardCenterL - invoke PrintSuit, ebx - invoke PrintUtf8, OFFSET cardCenterR - invoke PrintUtf8, OFFSET cardBottom - ret -PrintCard ENDP - -; --- AddPlayer21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AddPlayer21 PROC uses eax ebx - call PlayCardSound - call DrawCard - mov ebx, eax - invoke PrintStr, OFFSET yourCardText - invoke PrintCard, ebx - invoke CardValue21, ebx - add playerTotal, eax - ret -AddPlayer21 ENDP - -; --- AddDealer21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AddDealer21 PROC uses eax ebx - call PlayCardSound - call DrawCard - mov ebx, eax - invoke PrintStr, OFFSET dealerCardText - invoke PrintCard, ebx - invoke CardValue21, ebx - add dealerTotal, eax - ret -AddDealer21 ENDP - -; --- Reset21Hands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -Reset21Hands PROC - mov playerTotal, 0 - mov dealerTotal, 0 - mov playerCnt21, 0 - mov aiCnt21, 0 - mov revealAI21, 0 - ret -Reset21Hands ENDP - -; --- DrawPlayer21Hand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -DrawPlayer21Hand PROC uses ebx ecx - cmp playerCnt21, 10 - jae draw_player21_done - call PlayCardSound - call DrawCard - mov ebx, playerCnt21 - mov playerHand21[ebx * 4], eax - inc playerCnt21 -draw_player21_done: - ret -DrawPlayer21Hand ENDP - -; --- DrawAI21Hand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -DrawAI21Hand PROC uses ebx ecx - cmp aiCnt21, 10 - jae draw_ai21_done - call PlayCardSound - call DrawCard - mov ebx, aiCnt21 - mov aiHand21[ebx * 4], eax - inc aiCnt21 -draw_ai21_done: - ret -DrawAI21Hand ENDP - -; --- PrintHandTop: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandTop PROC uses eax, count:DWORD - mov rowIndex, 0 -top_loop: - mov eax, rowIndex - cmp eax, count - jae top_done - invoke PrintUtf8, OFFSET cardTopSeg - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp top_loop -top_done: - invoke PrintStr, OFFSET nl - ret -PrintHandTop ENDP - -; --- PrintHandBottom: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandBottom PROC uses eax, count:DWORD - mov rowIndex, 0 -bottom_loop: - mov eax, rowIndex - cmp eax, count - jae bottom_done - invoke PrintUtf8, OFFSET cardBottomSeg - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp bottom_loop -bottom_done: - invoke PrintStr, OFFSET nl - ret -PrintHandBottom ENDP - -; --- PrintHandBlankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandBlankLine PROC uses eax, count:DWORD, reveal:DWORD - mov rowIndex, 0 -blank_loop: - mov eax, rowIndex - cmp eax, count - jae blank_done - cmp reveal, 0 - je blank_hidden - invoke PrintUtf8, OFFSET cardEmptySeg - jmp blank_next -blank_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 4 - call ResetColor -blank_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp blank_loop -blank_done: - invoke PrintStr, OFFSET nl - ret -PrintHandBlankLine ENDP - -; --- PrintHandSuitLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandSuitLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD - LOCAL suitIndex:DWORD - - mov rowIndex, 0 -suit_loop: - mov eax, rowIndex - cmp eax, count - jae suit_done - cmp reveal, 0 - je suit_hidden - - mov ebx, pHand - mov eax, [ebx + eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov suitIndex, eax - - invoke PrintUtf8, OFFSET cardSuitLeft - mov eax, suitIndex - invoke PrintSuit, eax - invoke PrintUtf8, OFFSET cardSuitRightSeg - jmp suit_next -suit_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 1 - call ResetColor -suit_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp suit_loop -suit_done: - invoke PrintStr, OFFSET nl - ret -PrintHandSuitLine ENDP - -; --- PrintHandRankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandRankLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD - LOCAL rankIndex:DWORD - - mov rowIndex, 0 -rank_loop_row: - mov eax, rowIndex - cmp eax, count - jae rank_done_row - cmp reveal, 0 - je rank_hidden - - mov ebx, pHand - mov eax, [ebx + eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov rankIndex, edx - - cmp edx, 8 - jne rank_one_char - invoke PrintUtf8, OFFSET cardRankTenL - mov eax, rankIndex - invoke PrintStr, ranks[eax * 4] - invoke PrintUtf8, OFFSET cardRankTenRSeg - jmp rank_next -rank_one_char: - invoke PrintUtf8, OFFSET cardRankOneL - mov eax, rankIndex - invoke PrintStr, ranks[eax * 4] - invoke PrintUtf8, OFFSET cardRankOneRSeg - jmp rank_next -rank_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 2 - call ResetColor -rank_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp rank_loop_row -rank_done_row: - invoke PrintStr, OFFSET nl - ret -PrintHandRankLine ENDP - -; --- PrintHandCenterLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandCenterLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD - LOCAL suitIndex:DWORD - - mov rowIndex, 0 -center_loop: - mov eax, rowIndex - cmp eax, count - jae center_done - cmp reveal, 0 - je center_hidden - - mov ebx, pHand - mov eax, [ebx + eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov suitIndex, eax - - invoke PrintUtf8, OFFSET cardCenterL - mov eax, suitIndex - invoke PrintSuit, eax - invoke PrintUtf8, OFFSET cardCenterRSeg - jmp center_next -center_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 5 - call ResetColor -center_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp center_loop -center_done: - invoke PrintStr, OFFSET nl - ret -PrintHandCenterLine ENDP - -; --- PrintHandRow21: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintHandRow21 PROC pHand:DWORD, count:DWORD, reveal:DWORD - invoke PrintHandTop, count - invoke PrintHandSuitLine, pHand, count, reveal - invoke PrintHandRankLine, pHand, count, reveal - invoke PrintHandBlankLine, count, reveal - invoke PrintHandBlankLine, count, reveal - invoke PrintHandCenterLine, pHand, count, reveal - invoke PrintHandBottom, count - ret -PrintHandRow21 ENDP - -; --- PrintCommunitySuitLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCommunitySuitLine PROC uses eax ebx ecx edx - LOCAL suitIndex:DWORD - - mov rowIndex, 0 -community_suit_loop: - mov eax, rowIndex - cmp eax, 5 - jae community_suit_done - cmp eax, communityCnt - jae community_suit_hidden - - mov eax, communityHand[eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov suitIndex, eax - invoke PrintUtf8, OFFSET cardSuitLeft - mov eax, suitIndex - invoke PrintSuit, eax - invoke PrintUtf8, OFFSET cardSuitRightSeg - jmp community_suit_next -community_suit_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 1 - call ResetColor -community_suit_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp community_suit_loop -community_suit_done: - invoke PrintStr, OFFSET nl - ret -PrintCommunitySuitLine ENDP - -; --- PrintCommunityRankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCommunityRankLine PROC uses eax ecx edx - LOCAL rankIndex:DWORD - - mov rowIndex, 0 -community_rank_loop: - mov eax, rowIndex - cmp eax, 5 - jae community_rank_done - cmp eax, communityCnt - jae community_rank_hidden - - mov eax, communityHand[eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov rankIndex, edx - cmp edx, 8 - jne community_rank_one - invoke PrintUtf8, OFFSET cardRankTenL - mov eax, rankIndex - invoke PrintStr, ranks[eax * 4] - invoke PrintUtf8, OFFSET cardRankTenRSeg - jmp community_rank_next -community_rank_one: - invoke PrintUtf8, OFFSET cardRankOneL - mov eax, rankIndex - invoke PrintStr, ranks[eax * 4] - invoke PrintUtf8, OFFSET cardRankOneRSeg - jmp community_rank_next -community_rank_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 2 - call ResetColor -community_rank_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp community_rank_loop -community_rank_done: - invoke PrintStr, OFFSET nl - ret -PrintCommunityRankLine ENDP - -; --- PrintCommunityBlankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCommunityBlankLine PROC uses eax - mov rowIndex, 0 -community_blank_loop: - mov eax, rowIndex - cmp eax, 5 - jae community_blank_done - cmp eax, communityCnt - jae community_blank_hidden - invoke PrintUtf8, OFFSET cardEmptySeg - jmp community_blank_next -community_blank_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 4 - call ResetColor -community_blank_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp community_blank_loop -community_blank_done: - invoke PrintStr, OFFSET nl - ret -PrintCommunityBlankLine ENDP - -; --- PrintCommunityCenterLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCommunityCenterLine PROC uses eax ecx edx - LOCAL suitIndex:DWORD - - mov rowIndex, 0 -community_center_loop: - mov eax, rowIndex - cmp eax, 5 - jae community_center_done - cmp eax, communityCnt - jae community_center_hidden - - mov eax, communityHand[eax * 4] - xor edx, edx - mov ecx, 13 - div ecx - mov suitIndex, eax - invoke PrintUtf8, OFFSET cardCenterL - mov eax, suitIndex - invoke PrintSuit, eax - invoke PrintUtf8, OFFSET cardCenterRSeg - jmp community_center_next -community_center_hidden: - call SetCardBackColor - invoke PrintCardBackSegLine, 5 - call ResetColor -community_center_next: - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp community_center_loop -community_center_done: - invoke PrintStr, OFFSET nl - ret -PrintCommunityCenterLine ENDP - -; --- PrintCommunityRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCommunityRow PROC - invoke PrintHandTop, 5 - call PrintCommunitySuitLine - call PrintCommunityRankLine - call PrintCommunityBlankLine - call PrintCommunityBlankLine - call PrintCommunityCenterLine - invoke PrintHandBottom, 5 - ret -PrintCommunityRow ENDP - -; --- PrintFlipLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintFlipLine PROC uses eax, count:DWORD, pSegment:DWORD - mov rowIndex, 0 -flip_line_loop: - mov eax, rowIndex - cmp eax, count - jae flip_line_done - invoke PrintUtf8, pSegment - invoke PrintUtf8, OFFSET cardGap - inc rowIndex - jmp flip_line_loop -flip_line_done: - invoke PrintStr, OFFSET nl - ret -PrintFlipLine ENDP - -; --- PrintFlipCards: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintFlipCards PROC count:DWORD, pSegment:DWORD - invoke PrintHandTop, count - invoke PrintFlipLine, count, pSegment - invoke PrintFlipLine, count, pSegment - invoke PrintFlipLine, count, pSegment - invoke PrintFlipLine, count, pSegment - invoke PrintFlipLine, count, pSegment - invoke PrintHandBottom, count - ret -PrintFlipCards ENDP - -; --- ShowRevealFrame21: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowRevealFrame21 PROC pSegment:DWORD - call ClearView - invoke PrintTitleColor, OFFSET twentyOneTitle - invoke PrintStr, OFFSET revealText - invoke PrintStr, OFFSET aiCardsText - invoke PrintFlipCards, aiCnt21, pSegment - invoke PrintStr, OFFSET playerCardsText - invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 - call CalcPlayerScore21 - invoke PrintStr, OFFSET yourScoreText - invoke PrintUInt, playerTotal - invoke PrintStr, OFFSET nl - ret -ShowRevealFrame21 ENDP - -; --- AnimateReveal21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AnimateReveal21 PROC - call PlayCardSound - invoke ShowRevealFrame21, OFFSET cardBackSeg - invoke Sleep, FLIP_DELAY - invoke ShowRevealFrame21, OFFSET cardFlipLeft - invoke Sleep, FLIP_DELAY - invoke ShowRevealFrame21, OFFSET cardFlipMid - invoke Sleep, FLIP_DELAY - invoke ShowRevealFrame21, OFFSET cardFlipRight - invoke Sleep, FLIP_DELAY - mov revealAI21, 1 - call ClearView - invoke PrintTitleColor, OFFSET twentyOneTitle - call ShowAllCards21 - invoke Sleep, FLIP_FINAL_DELAY - ret -AnimateReveal21 ENDP - -; --- CalcPlayerScore21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -CalcPlayerScore21 PROC uses eax ebx - mov playerTotal, 0 - mov rowIndex, 0 -calc_player21_loop: - mov eax, rowIndex - cmp eax, playerCnt21 - jae calc_player21_done - mov ebx, playerHand21[eax * 4] - invoke CardValue21, ebx - add playerTotal, eax - inc rowIndex - jmp calc_player21_loop -calc_player21_done: - ret -CalcPlayerScore21 ENDP - -; --- CalcAIScore21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -CalcAIScore21 PROC uses eax ebx - mov dealerTotal, 0 - mov rowIndex, 0 -calc_ai21_loop: - mov eax, rowIndex - cmp eax, aiCnt21 - jae calc_ai21_done - mov ebx, aiHand21[eax * 4] - invoke CardValue21, ebx - add dealerTotal, eax - inc rowIndex - jmp calc_ai21_loop -calc_ai21_done: - ret -CalcAIScore21 ENDP - -; --- ShowAllCards21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -ShowAllCards21 PROC - cmp revealAI21, 0 - jne show_ai_cards - invoke PrintStr, OFFSET aiThinkText -show_ai_cards: - invoke PrintStr, OFFSET aiCardsText - invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 - invoke PrintStr, OFFSET playerCardsText - invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 - - call CalcPlayerScore21 - call CalcAIScore21 - invoke PrintStr, OFFSET yourScoreText - invoke PrintUInt, playerTotal - invoke PrintStr, OFFSET nl - cmp revealAI21, 0 - je show_cards_done - invoke PrintStr, OFFSET aiScoreText - invoke PrintUInt, dealerTotal - invoke PrintStr, OFFSET nl -show_cards_done: - ret -ShowAllCards21 ENDP -; --- PeekUnusedCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -PeekUnusedCard PROC uses edi -peek_unused_again: - invoke RandomRange, 52 - mov edi, OFFSET deckUsed - add edi, eax - cmp byte ptr [edi], 0 - jne peek_unused_again - ret -PeekUnusedCard ENDP - -; --- CheatPeek21: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheatPeek21 PROC uses eax ebx - invoke PrintStr, OFFSET cheatPeekText - call PeekUnusedCard - mov ebx, eax - invoke PrintCard, ebx - invoke AddSuspicion, 12 - call CheckCasinoHeat - call PauseConsole - ret -CheatPeek21 ENDP - -; --- CheatSwap21: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheatSwap21 PROC uses eax ebx - cmp playerCnt21, 0 - je cheat_swap21_none - call DrawCard - mov ebx, playerCnt21 - dec ebx - mov playerHand21[ebx * 4], eax - call CalcPlayerScore21 - invoke PrintStr, OFFSET cheatSwapText - invoke AddSuspicion, 18 - call CheckCasinoHeat - call PauseConsole - ret -cheat_swap21_none: - invoke PrintStr, OFFSET cheatNoTargetText - call PauseConsole - ret -CheatSwap21 ENDP - -; --- CheatPeekPoker: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheatPeekPoker PROC uses eax ebx - mov ebx, communityCnt - cmp ebx, 5 - jb cheat_peek_poker_table - invoke PrintStr, OFFSET cheatPeekText - mov ebx, 0 - mov eax, aiHand21[ebx * 4] - invoke PrintCard, eax - jmp cheat_peek_poker_done -cheat_peek_poker_table: - invoke PrintStr, OFFSET cheatPeekText - mov eax, communityHand[ebx * 4] - invoke PrintCard, eax -cheat_peek_poker_done: - invoke AddSuspicion, 12 - call CheckCasinoHeat - call PauseConsole - ret -CheatPeekPoker ENDP - -; --- CheatSwapPoker: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -CheatSwapPoker PROC uses eax - cmp playerCnt21, 0 - je cheat_swap_poker_none - call DrawCard - mov DWORD PTR playerHand21[0], eax - invoke PrintStr, OFFSET cheatSwapText - invoke AddSuspicion, 18 - call CheckCasinoHeat - call PauseConsole - ret -cheat_swap_poker_none: - invoke PrintStr, OFFSET cheatNoTargetText - call PauseConsole - ret -CheatSwapPoker ENDP - - -; --- CountDanger21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -CountDanger21 PROC uses eax ebx esi - call CalcAIScore21 - mov dangerLvl21, 0 - mov cardsLeft21, 0 - mov rowIndex, 0 -danger_loop: - mov eax, rowIndex - cmp eax, 52 - jae danger_done - mov esi, OFFSET deckUsed - cmp byte ptr [esi + eax], 0 - jne danger_next - - inc cardsLeft21 - invoke CardValue21, rowIndex - mov ebx, dealerTotal - add ebx, eax - cmp ebx, 21 - jbe danger_next - inc dangerLvl21 -danger_next: - inc rowIndex - jmp danger_loop -danger_done: - ret -CountDanger21 ENDP - -; --- FinalScreen21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -FinalScreen21 PROC - call ClearView - mov revealAI21, 1 - call ShowAllCards21 - - mov eax, playerTotal - mov ebx, dealerTotal - cmp eax, 21 - ja final_21_lose - cmp ebx, 21 - ja final_21_win - cmp eax, ebx - ja final_21_win - jb final_21_lose - call PrintDrawEvent - call PayDraw - ret -final_21_win: - call PrintWinEvent - call PayWin - ret -final_21_lose: - call PrintLoseEvent - call PayLose - ret -FinalScreen21 ENDP - -; --- ResetPokerHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -ResetPokerHands PROC - mov playerCnt21, 0 - mov aiCnt21, 0 - mov communityCnt, 0 - mov revealAI21, 0 - ret -ResetPokerHands ENDP - -; --- DrawCommunityPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -DrawCommunityPoker PROC uses ebx ecx - cmp communityCnt, 5 - jae draw_community_done - call PlayCardSound - call DrawCard - mov ebx, communityCnt - mov communityHand[ebx * 4], eax - inc communityCnt -draw_community_done: - ret -DrawCommunityPoker ENDP - -; --- DealPokerHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -DealPokerHands PROC uses ecx - mov ecx, 2 -deal_poker_hands_loop: - call DrawPlayer21Hand - call DrawAI21Hand - loop deal_poker_hands_loop - - mov ecx, 5 -deal_poker_table_loop: - call DrawCommunityPoker - loop deal_poker_table_loop - mov communityCnt, 3 - ret -DealPokerHands ENDP - -; --- ShowPokerTable: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ShowPokerTable PROC - invoke PrintStr, OFFSET aiCardsText - invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 - invoke PrintStr, OFFSET pokerTableText - call PrintCommunityRow - invoke PrintStr, OFFSET playerCardsText - invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 - ret -ShowPokerTable ENDP - -; --- ShowPokerRevealFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowPokerRevealFrame PROC pSegment:DWORD - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - invoke PrintStr, OFFSET pokerRevealText - invoke PrintStr, OFFSET aiCardsText - invoke PrintFlipCards, aiCnt21, pSegment - invoke PrintStr, OFFSET pokerTableText - call PrintCommunityRow - invoke PrintStr, OFFSET playerCardsText - invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 - ret -ShowPokerRevealFrame ENDP - -; --- AnimateRevealPoker: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AnimateRevealPoker PROC - call PlayCardSound - invoke ShowPokerRevealFrame, OFFSET cardBackSeg - invoke Sleep, FLIP_DELAY - invoke ShowPokerRevealFrame, OFFSET cardFlipLeft - invoke Sleep, FLIP_DELAY - invoke ShowPokerRevealFrame, OFFSET cardFlipMid - invoke Sleep, FLIP_DELAY - invoke ShowPokerRevealFrame, OFFSET cardFlipRight - invoke Sleep, FLIP_DELAY - mov revealAI21, 1 - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - call ShowPokerTable - invoke Sleep, FLIP_FINAL_DELAY - ret -AnimateRevealPoker ENDP - -; --- ClearPokerCounts: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- ClearPokerCounts PROC uses ecx edi mov ecx, 13 mov edi, OFFSET rankCounts @@ -7830,7 +1227,6 @@ clear_suit_counts: ret ClearPokerCounts ENDP -; --- EvaluatePokerN: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- EvaluatePokerN PROC uses ebx ecx edx esi edi, pHand:DWORD, cardCount:DWORD call ClearPokerCounts mov pokerStraight, 0 @@ -8011,1289 +1407,6 @@ high_card_score: ret EvaluatePokerN ENDP -; --- EvaluatePoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -EvaluatePoker PROC pHand:DWORD - invoke EvaluatePokerN, pHand, 5 - ret -EvaluatePoker ENDP - -; --- PrintPokerHandName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintPokerHandName PROC uses eax ebx edx, score:DWORD - mov eax, score - xor edx, edx - mov ebx, 1000 - div ebx - invoke PrintStr, pokerNames[eax * 4] - ret -PrintPokerHandName ENDP - -; --- BuildPokerEvalHand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -BuildPokerEvalHand PROC uses eax ebx esi edi, pHole:DWORD, pOut:DWORD - mov esi, pHole - mov edi, pOut - - mov eax, [esi] - mov [edi], eax - mov eax, [esi + 4] - mov [edi + 4], eax - - mov eax, communityCnt - add eax, 2 - mov pokerEvalCount, eax - - mov ebx, 0 -build_table_cards: - cmp ebx, communityCnt - jae build_eval_done - mov eax, communityHand[ebx * 4] - mov [edi + ebx * 4 + 8], eax - inc ebx - jmp build_table_cards -build_eval_done: - ret -BuildPokerEvalHand ENDP - -; --- ShowPokerHint: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ShowPokerHint PROC - invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand - invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount - mov pokerPlayerScore, eax - invoke PrintStr, OFFSET pokerHintText - invoke PrintPokerHandName, pokerPlayerScore - ret -ShowPokerHint ENDP - -; --- ShowPokerResult: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ShowPokerResult PROC uses ebx - invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand - mov ebx, pokerEvalCount - invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand - mov pokerEvalCount, ebx - - invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount - mov pokerPlayerScore, eax - invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount - mov pokerAIScore, eax - - invoke PrintStr, OFFSET pokerYourComboText - invoke PrintPokerHandName, pokerPlayerScore - invoke PrintStr, OFFSET pokerAIComboText - invoke PrintPokerHandName, pokerAIScore - - mov eax, pokerPlayerScore - cmp eax, pokerAIScore - ja poker_player_win - jb poker_ai_win - call PrintDrawEvent - call PayDraw - ret -poker_player_win: - call PrintWinEvent - call PayWin - ret -poker_ai_win: - call PrintLoseEvent - call PayLose - ret -ShowPokerResult ENDP - -; --- PokerAIDecide: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PokerAIDecide PROC uses ebx edx - invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand - invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount - mov pokerAIScore, eax - - mov eax, pokerAIScore - xor edx, edx - mov ebx, 1000 - div ebx - cmp eax, 1 - jae ai_will_play - - cmp aiDifficulty, 1 - je ai_easy_decide - cmp aiDifficulty, 3 - je ai_hard_decide - -ai_normal_decide: - mov eax, pokerAIScore - cmp eax, 11 - jae ai_normal_random - jmp ai_will_fold -ai_normal_random: - invoke RandomRange, 3 - cmp eax, 0 - je ai_will_fold - jmp ai_will_play - -ai_easy_decide: - invoke RandomRange, 2 - cmp eax, 0 - je ai_will_play - mov eax, pokerAIScore - cmp eax, 10 - jae ai_will_play - jmp ai_will_fold - -ai_hard_decide: - mov eax, pokerAIScore - cmp eax, 10 - jae ai_hard_high_card - invoke RandomRange, 3 - cmp eax, 0 - je ai_will_play - jmp ai_will_fold -ai_hard_high_card: - invoke RandomRange, 4 - cmp eax, 0 - je ai_will_fold - jmp ai_will_play - -ai_will_fold: - xor eax, eax - ret -ai_will_play: - mov eax, 1 - ret -PokerAIDecide ENDP - -; --- PokerAICallRaise: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PokerAICallRaise PROC uses ebx ecx edx - invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand - invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount - mov pokerAIScore, eax - - mov eax, pokerAIScore - xor edx, edx - mov ebx, 1000 - div ebx - mov ecx, eax - cmp ecx, 1 - jae ai_call_raise - - mov eax, pokerRaiseAmount - mov ebx, 2 - mul ebx - cmp eax, currentBet - ja ai_big_raise - - cmp aiDifficulty, 1 - je ai_easy_call_bluff - cmp aiDifficulty, 3 - je ai_hard_call_bluff - invoke RandomRange, 3 - cmp eax, 0 - jne ai_call_raise - jmp ai_fold_raise - -ai_big_raise: - cmp aiDifficulty, 1 - je ai_easy_big_raise - cmp aiDifficulty, 3 - je ai_fold_raise - invoke RandomRange, 5 - cmp eax, 0 - je ai_call_raise - jmp ai_fold_raise - -ai_easy_call_bluff: - invoke RandomRange, 2 - cmp eax, 0 - je ai_call_raise - jmp ai_fold_raise - -ai_easy_big_raise: - invoke RandomRange, 3 - cmp eax, 0 - jne ai_call_raise - jmp ai_fold_raise - -ai_hard_call_bluff: - mov eax, pokerAIScore - cmp eax, 12 - jae ai_call_raise - jmp ai_fold_raise - -ai_fold_raise: - xor eax, eax - ret -ai_call_raise: - mov eax, 1 - ret -PokerAICallRaise ENDP - - -; --- HardPokerPlayerExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -HardPokerPlayerExchange PROC uses eax ebx - cmp aiDifficulty, 3 - jne hard_player_exchange_done - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - call ShowPokerTable - call ShowPokerHint - invoke PrintStr, OFFSET pokerHardIntroText - invoke PrintStr, OFFSET pokerHardExchangeText - call ReadKey - cmp al, '1' - je hard_replace_first - cmp al, '2' - je hard_replace_second - jmp hard_player_exchange_done -hard_replace_first: - xor ebx, ebx - jmp hard_replace_card -hard_replace_second: - mov ebx, 1 -hard_replace_card: - call PlayCardSound - call DrawCard - mov playerHand21[ebx * 4], eax -hard_player_exchange_done: - ret -HardPokerPlayerExchange ENDP - -; --- HardPokerAIExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -HardPokerAIExchange PROC uses eax ebx ecx edx - cmp aiDifficulty, 3 - jne hard_ai_exchange_done - invoke PrintStr, OFFSET pokerHardAIExchangeText - invoke Sleep, 650 - - mov eax, aiHand21[0] - xor edx, edx - mov ecx, 13 - div ecx - mov ebx, edx - - mov eax, aiHand21[4] - xor edx, edx - mov ecx, 13 - div ecx - - cmp ebx, edx - je hard_ai_exchange_done - cmp ebx, 8 - jb hard_ai_check_second - cmp edx, 8 - jae hard_ai_exchange_done - -hard_ai_check_second: - cmp ebx, edx - jbe hard_replace_ai_first - mov ebx, 1 - jmp hard_replace_ai_card -hard_replace_ai_first: - xor ebx, ebx -hard_replace_ai_card: - call PlayCardSound - call DrawCard - mov aiHand21[ebx * 4], eax -hard_ai_exchange_done: - ret -HardPokerAIExchange ENDP - -; --- PokerAIRaiseMaybe: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PokerAIRaiseMaybe PROC uses ebx ecx edx - invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand - invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount - mov pokerAIScore, eax - - mov eax, bankroll - sub eax, currentBet - cmp eax, 0 - jbe ai_no_raise - mov ecx, eax - - mov eax, pokerAIScore - xor edx, edx - mov ebx, 1000 - div ebx - cmp eax, 2 - jae ai_strong_raise - cmp eax, 1 - je ai_pair_raise_check - - cmp aiDifficulty, 3 - jne ai_no_raise - mov eax, pokerAIScore - cmp eax, 12 - jne ai_no_raise - invoke RandomRange, 7 - cmp eax, 0 - jne ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 3 - div ebx - jmp ai_raise_amount_ready - -ai_pair_raise_check: - cmp aiDifficulty, 1 - je ai_easy_pair_raise - cmp aiDifficulty, 2 - je ai_normal_pair_raise - invoke RandomRange, 3 - cmp eax, 0 - je ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 2 - div ebx - jmp ai_raise_amount_ready - -ai_easy_pair_raise: - invoke RandomRange, 5 - cmp eax, 0 - jne ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 3 - div ebx - jmp ai_raise_amount_ready - -ai_normal_pair_raise: - invoke RandomRange, 3 - cmp eax, 0 - je ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 2 - div ebx - jmp ai_raise_amount_ready - -ai_strong_raise: - cmp aiDifficulty, 1 - je ai_easy_strong_raise - cmp aiDifficulty, 2 - je ai_normal_strong_raise - mov eax, currentBet - jmp ai_raise_amount_ready - -ai_easy_strong_raise: - invoke RandomRange, 3 - cmp eax, 0 - jne ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 2 - div ebx - jmp ai_raise_amount_ready - -ai_normal_strong_raise: - invoke RandomRange, 2 - cmp eax, 0 - je ai_no_raise - mov eax, currentBet - xor edx, edx - mov ebx, 2 - div ebx - jmp ai_raise_amount_ready - -ai_raise_amount_ready: - cmp eax, 50 - jae ai_raise_min_ok - mov eax, 50 -ai_raise_min_ok: - cmp eax, ecx - jbe ai_raise_store - mov eax, ecx -ai_raise_store: - cmp eax, 0 - jbe ai_no_raise - mov pokerAIRaiseAmount, eax - mov pokerRaiseAmount, eax - mov eax, 1 - ret -ai_no_raise: - xor eax, eax - ret -PokerAIRaiseMaybe ENDP -; --- PokerPlayerExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PokerPlayerExchange PROC uses eax ebx - mov pokerReplaceIndex, 0 -player_exchange_loop: - cmp pokerReplaceIndex, 5 - jae player_exchange_done - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - call ShowPokerTable - invoke PrintStr, OFFSET pokerReplaceText - mov eax, pokerReplaceIndex - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET pokerReplaceTail - call ReadKey - cmp al, 'y' - je replace_player_card - cmp al, 'Y' - je replace_player_card - cmp al, '1' - je replace_player_card - jmp next_player_exchange -replace_player_card: - call DrawCard - mov ebx, pokerReplaceIndex - mov playerHand21[ebx * 4], eax -next_player_exchange: - inc pokerReplaceIndex - jmp player_exchange_loop -player_exchange_done: - ret -PokerPlayerExchange ENDP - -; --- PokerAIExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -PokerAIExchange PROC uses eax ebx ecx edx - invoke EvaluatePoker, OFFSET aiHand21 - xor edx, edx - mov ebx, 1000 - div ebx - cmp eax, 4 - jae ai_exchange_done - - mov pokerReplaced, 0 - mov pokerReplaceIndex, 0 -ai_exchange_loop: - cmp pokerReplaceIndex, 5 - jae ai_exchange_done - cmp pokerReplaced, 3 - jae ai_exchange_done - - mov ebx, pokerReplaceIndex - mov eax, aiHand21[ebx * 4] - xor edx, edx - mov ecx, 13 - div ecx - cmp byte ptr rankCounts[edx], 1 - jne next_ai_exchange - call DrawCard - mov ebx, pokerReplaceIndex - mov aiHand21[ebx * 4], eax - inc pokerReplaced -next_ai_exchange: - inc pokerReplaceIndex - jmp ai_exchange_loop -ai_exchange_done: - ret -PokerAIExchange ENDP - -; --- AddPlayerBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- - -; --- TournamentPlayStage: Fast resolution of ported game stages in Hell Tower --- -TournamentPlayStage PROC uses eax - invoke RandomRange, 100 - cmp eax, 25 - ja tourney_stage_win - mov lastGameResult, 2 - ret -tourney_stage_win: - mov lastGameResult, 1 - ret -TournamentPlayStage ENDP - -Game21 PROC - cmp tournamentStage, 0 - jne tourney_bj - call StartCasino3D - ret -tourney_bj: - call TournamentPlayStage - ret -Game21 ENDP - -; --- GamePoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -GamePoker PROC - cmp tournamentStage, 0 - jne tourney_poker - call StartCasino3D - ret -tourney_poker: - call TournamentPlayStage - ret -GamePoker ENDP - -; --- PrintSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -; (Legacy terminal PrintSlotSymbol removed) - -; --- MoveCursor: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- -MoveCursor PROC uses eax edx, xPos:DWORD, yPos:DWORD - mov eax, yPos - shl eax, 16 - mov edx, xPos - and edx, 0FFFFh - or eax, edx - invoke SetConsoleCursorPosition, hOut, eax - ret -MoveCursor ENDP - -; --- PrintSkullAt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -GameSkulls PROC - cmp tournamentStage, 0 - jne tourney_skulls - call StartCasino3D - ret -tourney_skulls: - call TournamentPlayStage - ret -GameSkulls ENDP -; --- PrintRevolver: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRevolver PROC pGun:DWORD - invoke SetColor, COLOR_WARN - invoke PrintStr, pGun - call ResetColor - ret -PrintRevolver ENDP - -; --- PrintRouletteTurnGun: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteTurnGun PROC - cmp rrTurn, 0 - jne print_rr_ai_gun - invoke PrintRevolver, OFFSET rrGunDown - ret -print_rr_ai_gun: - invoke PrintRevolver, OFFSET rrGunUp - ret -PrintRouletteTurnGun ENDP - -; --- ShowRouletteStatus: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -ShowRouletteStatus PROC - call ClearView - invoke PrintTitleColor, OFFSET rouletteTitle - call PrintRouletteTurnGun - invoke PrintStr, OFFSET rrDangerText - invoke PrintUInt, rrBullets - invoke PrintStr, OFFSET nl - ret -ShowRouletteStatus ENDP - -; --- ShowRouletteSpinFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowRouletteSpinFrame PROC pGun:DWORD - call ClearView - invoke PrintTitleColor, OFFSET rouletteTitle - invoke PrintRevolver, pGun - invoke PrintStr, OFFSET rrSpinText - invoke Sleep, 85 - ret -ShowRouletteSpinFrame ENDP - -; --- AnimateRouletteSpin: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -AnimateRouletteSpin PROC - invoke ShowRouletteSpinFrame, OFFSET rrGunUp - invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDown - invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight - invoke ShowRouletteSpinFrame, OFFSET rrGunRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUp - invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDown - invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight - invoke ShowRouletteSpinFrame, OFFSET rrGunRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight - cmp rrTurn, 0 - jne roulette_spin_ai_final - invoke ShowRouletteSpinFrame, OFFSET rrGunUp - invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDown - jmp roulette_spin_final_message -roulette_spin_ai_final: - invoke ShowRouletteSpinFrame, OFFSET rrGunUp -roulette_spin_final_message: - call ShowRouletteStatus - cmp rrTurn, 0 - jne roulette_start_ai - invoke PrintStr, OFFSET rrStartsPlayerText - jmp roulette_start_done -roulette_start_ai: - invoke PrintStr, OFFSET rrStartsAIText -roulette_start_done: - invoke Sleep, 400 - ret -AnimateRouletteSpin ENDP - -; --- SetupRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -SetupRoulette PROC uses eax ebx ecx edx - mov rrBulletMask, 0 - mov eax, aiDifficulty - mov rrBullets, eax - mov ecx, eax -roulette_place_loop: - cmp ecx, 0 - je roulette_setup_done_bullets -roulette_pick_chamber: - invoke RandomRange, 6 - mov ebx, 1 - push ecx - mov ecx, eax - shl ebx, cl - pop ecx - mov edx, rrBulletMask - test edx, ebx - jne roulette_pick_chamber - or rrBulletMask, ebx - dec ecx - jmp roulette_place_loop -roulette_setup_done_bullets: - invoke RandomRange, 6 - mov rrChamber, eax - invoke RandomRange, 2 - mov rrTurn, eax - ret -SetupRoulette ENDP - -; --- RouletteChamberLoaded: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -RouletteChamberLoaded PROC uses ecx edx - mov edx, 1 - mov ecx, rrChamber - shl edx, cl - mov eax, rrBulletMask - test eax, edx - jne roulette_loaded - xor eax, eax - ret -roulette_loaded: - mov eax, 1 - ret -RouletteChamberLoaded ENDP - -; --- AdvanceRouletteChamber: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -AdvanceRouletteChamber PROC - inc rrChamber - cmp rrChamber, 6 - jb advance_roulette_done - mov rrChamber, 0 -advance_roulette_done: - ret -AdvanceRouletteChamber ENDP - -; --- PrintBang: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintBang PROC - call PlayRouletteShotSound - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET rrBangText - call ResetColor - ret -PrintBang ENDP - -; --- GameRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -GameRoulette PROC - cmp tournamentStage, 0 - jne tourney_rr - call StartCasino3D - ret -tourney_rr: - call TournamentPlayStage - ret -GameRoulette ENDP - - -; --- ShowBuckshotFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -GameBuckshot PROC - cmp tournamentStage, 0 - jne tourney_bs - call StartCasino3D - ret -tourney_bs: - call TournamentPlayStage - ret -GameBuckshot ENDP -; --- PrintDiceParity: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -GameDice PROC - cmp tournamentStage, 0 - jne tourney_dice - call StartCasino3D - ret -tourney_dice: - call TournamentPlayStage - ret -GameDice ENDP -; --- Online Dice: Radmin LAN match without a separate server process --- -onlineTitle db 13,10,"--- Online Casino (Radmin) ---",13,10,0 -onlineMenuText db "1. Host room",13,10,"2. Join room",13,10,"0. Back",13,10,0 -onlineHostInfo db "Give your Radmin IPv4 and port 27015 to your friend.",13,10,"Waiting for one player...",13,10,0 -onlineJoinPrompt db "Host Radmin IPv4: ",0 -onlineConnectingText db "Connecting...",13,10,0 -onlineConnectedText db "Connected.",13,10,0 -onlineYouRollText db "Your roll: ",0 -onlineFriendRollText db "Friend roll: ",0 -onlineWinText db "You win this friendly match.",13,10,0 -onlineLoseText db "Friend wins this friendly match.",13,10,0 -onlineDrawText db "Draw. Same roll.",13,10,0 -onlineErrorText db "Network error. Winsock code: ",0 -onlineBadIpText db "IPv4 address is invalid.",13,10,0 - -OnlineStartWinsock PROC - invoke WSAStartup, 0202h, OFFSET onlineWsaData - test eax, eax - jnz online_start_fail - mov onlineWsaReady, 1 - mov eax, 1 - ret -online_start_fail: - xor eax, eax - ret -OnlineStartWinsock ENDP - -OnlineCleanup PROC - cmp onlinePeerSock, -1 - je online_cleanup_listener - invoke closesocket, onlinePeerSock - mov onlinePeerSock, -1 -online_cleanup_listener: - cmp onlineListenSock, -1 - je online_cleanup_wsa - invoke closesocket, onlineListenSock - mov onlineListenSock, -1 -online_cleanup_wsa: - cmp onlineWsaReady, 1 - jne online_cleanup_done - invoke WSACleanup - mov onlineWsaReady, 0 -online_cleanup_done: - ret -OnlineCleanup ENDP - -OnlineBuildAddress PROC uses eax ecx edi - lea edi, onlineAddr - xor eax, eax - mov ecx, 4 - rep stosd - mov word ptr onlineAddr, AF_INET - mov word ptr onlineAddr+2, ONLINE_PORT_NET - ret -OnlineBuildAddress ENDP - -ReadOnlineIp PROC uses eax ecx esi edi - lea edi, onlineIp - xor eax, eax - mov ecx, 32 - rep stosb - invoke ReadFile, hIn, OFFSET onlineIp, 31, ADDR charsRead, 0 - mov ecx, charsRead - cmp ecx, 31 - jbe online_ip_len_ok - mov ecx, 31 -online_ip_len_ok: - mov byte ptr onlineIp[ecx], 0 - mov esi, OFFSET onlineIp -online_ip_trim: - cmp ecx, 0 - je online_ip_done - mov al, [esi] - cmp al, 13 - je online_ip_end - cmp al, 10 - je online_ip_end - inc esi - dec ecx - jmp online_ip_trim -online_ip_end: - mov byte ptr [esi], 0 -online_ip_done: - ret -ReadOnlineIp ENDP - -NetSendAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD - mov esi, pData - mov edi, byteCount -online_send_loop: - cmp edi, 0 - je online_send_ok - invoke send, hSocket, esi, edi, 0 - test eax, eax - jle online_send_fail - add esi, eax - sub edi, eax - jmp online_send_loop -online_send_ok: - mov eax, 1 - ret -online_send_fail: - xor eax, eax - ret -NetSendAll ENDP - -NetRecvAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD - mov esi, pData - mov edi, byteCount -online_recv_loop: - cmp edi, 0 - je online_recv_ok - invoke recv, hSocket, esi, edi, 0 - test eax, eax - jle online_recv_fail - add esi, eax - sub edi, eax - jmp online_recv_loop -online_recv_ok: - mov eax, 1 - ret -online_recv_fail: - xor eax, eax - ret -NetRecvAll ENDP - -PrintOnlineError PROC - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET onlineErrorText - invoke WSAGetLastError - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - call ResetColor - ret -PrintOnlineError ENDP - -ShowOnlineResult PROC - call ClearView - invoke PrintTitleColor, OFFSET onlineTitle - invoke PrintStr, OFFSET onlineYouRollText - invoke PrintUInt, onlineLocalRoll - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET onlineFriendRollText - invoke PrintUInt, onlineRemoteRoll - invoke PrintStr, OFFSET nl - mov eax, onlineLocalRoll - cmp eax, onlineRemoteRoll - ja online_result_win - jb online_result_lose - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET onlineDrawText - call ResetColor - jmp online_result_done -online_result_win: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET onlineWinText - call ResetColor - jmp online_result_done -online_result_lose: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET onlineLoseText - call ResetColor -online_result_done: - ret -ShowOnlineResult ENDP - -OnlineHostGameText db "Choose online game:",13,10,"1. Dice 1v1",13,10,"2. Russian Roulette 1v1",13,10,"0. Back",13,10,0 -OnlineModeDiceText db "Room mode: Dice 1v1",13,10,0 -OnlineModeRRText db "Room mode: Russian Roulette 1v1",13,10,0 -OnlineProtocolText db "Players use different online protocol versions.",13,10,0 -OnlineRRYourTurnText db "Your turn. Press any key to pull the trigger...",0 -OnlineRRWaitText db "Friend is holding the revolver. Waiting for the trigger...",13,10,0 -OnlineRRStartsYouText db "The revolver points at you. You shoot first.",13,10,0 -OnlineRRStartsFriendText db "The revolver points at your friend. Friend shoots first.",13,10,0 -OnlineRRWinText db "Your friend caught the loaded chamber. You survived.",13,10,0 -OnlineRRLoseText db "The loaded chamber was yours. You lost.",13,10,0 - -OnlineHostConnect PROC - call OnlineStartWinsock - test eax, eax - jz online_host_connect_error - invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP - cmp eax, SOCKET_ERROR - je online_host_connect_error - mov onlineListenSock, eax - call OnlineBuildAddress - invoke bind, onlineListenSock, OFFSET onlineAddr, 16 - test eax, eax - jnz online_host_connect_error - invoke listen, onlineListenSock, 1 - test eax, eax - jnz online_host_connect_error - call ClearView - invoke PrintTitleColor, OFFSET onlineTitle - invoke PrintStr, OFFSET onlineHostInfo - invoke accept, onlineListenSock, 0, 0 - cmp eax, SOCKET_ERROR - je online_host_connect_error - mov onlinePeerSock, eax - invoke closesocket, onlineListenSock - mov onlineListenSock, -1 - invoke PrintStr, OFFSET onlineConnectedText - mov eax, 1 - ret -online_host_connect_error: - call PrintOnlineError - call OnlineCleanup - call PauseConsole - xor eax, eax - ret -OnlineHostConnect ENDP - -OnlineJoinConnect PROC - call OnlineStartWinsock - test eax, eax - jz online_join_connect_error - call ClearView - invoke PrintTitleColor, OFFSET onlineTitle - invoke PrintStr, OFFSET onlineJoinPrompt - call ReadOnlineIp - invoke inet_addr, OFFSET onlineIp - cmp eax, 0FFFFFFFFh - je online_join_connect_bad_ip - mov onlineHostIp, eax - invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP - cmp eax, SOCKET_ERROR - je online_join_connect_error - mov onlinePeerSock, eax - call OnlineBuildAddress - mov eax, onlineHostIp - mov dword ptr onlineAddr+4, eax - invoke PrintStr, OFFSET onlineConnectingText - invoke connect, onlinePeerSock, OFFSET onlineAddr, 16 - test eax, eax - jnz online_join_connect_error - invoke PrintStr, OFFSET onlineConnectedText - mov eax, 1 - ret -online_join_connect_bad_ip: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET onlineBadIpText - call ResetColor - call OnlineCleanup - call PauseConsole - xor eax, eax - ret -online_join_connect_error: - call PrintOnlineError - call OnlineCleanup - call PauseConsole - xor eax, eax - ret -OnlineJoinConnect ENDP - -OnlineDiceSessionHost PROC - invoke RandomRange, 6 - inc eax - mov onlinePacket, eax - mov onlineLocalRoll, eax - invoke RandomRange, 6 - inc eax - mov onlinePacket+4, eax - mov onlineRemoteRoll, eax - invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_dice_host_fail - invoke Sleep, 450 - call ShowOnlineResult - mov eax, 1 - ret -online_dice_host_fail: - xor eax, eax - ret -OnlineDiceSessionHost ENDP - -OnlineDiceSessionClient PROC - invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_dice_client_fail - mov eax, onlinePacket+4 - mov onlineLocalRoll, eax - mov eax, onlinePacket - mov onlineRemoteRoll, eax - invoke Sleep, 450 - call ShowOnlineResult - mov eax, 1 - ret -online_dice_client_fail: - xor eax, eax - ret -OnlineDiceSessionClient ENDP - -ShowOnlineRRStatus PROC role:DWORD - call ClearView - invoke PrintTitleColor, OFFSET rouletteTitle - mov eax, rrTurn - cmp eax, role - jne online_rr_status_friend - invoke PrintRevolver, OFFSET rrGunDown - jmp online_rr_status_info -online_rr_status_friend: - invoke PrintRevolver, OFFSET rrGunUp -online_rr_status_info: - invoke PrintStr, OFFSET rrDangerText - invoke PrintUInt, rrBullets - invoke PrintStr, OFFSET nl - ret -ShowOnlineRRStatus ENDP - -AnimateOnlineRRStart PROC role:DWORD - invoke ShowRouletteSpinFrame, OFFSET rrGunUp - invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDown - invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight - invoke ShowRouletteSpinFrame, OFFSET rrGunRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUp - invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft - invoke ShowRouletteSpinFrame, OFFSET rrGunDown - invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight - invoke ShowRouletteSpinFrame, OFFSET rrGunRight - invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight - invoke ShowOnlineRRStatus, role - mov eax, rrTurn - cmp eax, role - jne online_rr_start_friend - invoke PrintStr, OFFSET OnlineRRStartsYouText - ret -online_rr_start_friend: - invoke PrintStr, OFFSET OnlineRRStartsFriendText - ret -AnimateOnlineRRStart ENDP - -ShowOnlineRRShot PROC role:DWORD - cmp onlinePacket, 1 - je online_rr_shot_bang - call PlayRouletteDrySound - invoke PrintStr, OFFSET rrClickText - invoke Sleep, 850 - ret -online_rr_shot_bang: - call PrintBang - mov eax, onlinePacket+4 - cmp eax, role - jne online_rr_shot_win - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET OnlineRRLoseText - call ResetColor - ret -online_rr_shot_win: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET OnlineRRWinText - call ResetColor - ret -ShowOnlineRRShot ENDP - -OnlineRRSessionHost PROC - call SetupRoulette - mov eax, rrBullets - mov onlinePacket, eax - mov eax, rrTurn - mov onlinePacket+4, eax - invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_rr_host_fail - call PlayRouletteSpinSound - invoke AnimateOnlineRRStart, 0 -online_rr_host_loop: - invoke ShowOnlineRRStatus, 0 - cmp rrTurn, 0 - je online_rr_host_own_turn - invoke PrintStr, OFFSET OnlineRRWaitText - invoke NetRecvAll, onlinePeerSock, OFFSET onlineAction, 4 - test eax, eax - jz online_rr_host_fail - jmp online_rr_host_fire -online_rr_host_own_turn: - invoke PrintStr, OFFSET OnlineRRYourTurnText - call ReadAnyKey - invoke PrintStr, OFFSET nl -online_rr_host_fire: - mov onlinePacket, 0 - call RouletteChamberLoaded - cmp eax, 1 - jne online_rr_host_event_ready - mov onlinePacket, 1 -online_rr_host_event_ready: - mov eax, rrTurn - mov onlinePacket+4, eax - invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_rr_host_fail - invoke ShowOnlineRRShot, 0 - cmp onlinePacket, 1 - je online_rr_host_done - call AdvanceRouletteChamber - xor rrTurn, 1 - jmp online_rr_host_loop -online_rr_host_done: - mov eax, 1 - ret -online_rr_host_fail: - xor eax, eax - ret -OnlineRRSessionHost ENDP - -OnlineRRSessionClient PROC - invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_rr_client_fail - mov eax, onlinePacket - mov rrBullets, eax - mov eax, onlinePacket+4 - mov rrTurn, eax - call PlayRouletteSpinSound - invoke AnimateOnlineRRStart, 1 -online_rr_client_loop: - invoke ShowOnlineRRStatus, 1 - cmp rrTurn, 1 - jne online_rr_client_wait - invoke PrintStr, OFFSET OnlineRRYourTurnText - call ReadAnyKey - invoke PrintStr, OFFSET nl - mov onlineAction, 1 - invoke NetSendAll, onlinePeerSock, OFFSET onlineAction, 4 - test eax, eax - jz online_rr_client_fail - jmp online_rr_client_receive -online_rr_client_wait: - invoke PrintStr, OFFSET OnlineRRWaitText -online_rr_client_receive: - invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_rr_client_fail - mov eax, onlinePacket+4 - mov rrTurn, eax - invoke ShowOnlineRRShot, 1 - cmp onlinePacket, 1 - je online_rr_client_done - xor rrTurn, 1 - jmp online_rr_client_loop -online_rr_client_done: - mov eax, 1 - ret -online_rr_client_fail: - xor eax, eax - ret -OnlineRRSessionClient ENDP - -GameOnlineCasino PROC -online_casino_menu: - call ClearView - invoke PrintTitleColor, OFFSET onlineTitle - invoke PrintStr, OFFSET onlineMenuText - invoke PrintStr, OFFSET choiceText - call ReadKey - cmp al, '1' - je online_casino_host_choose - cmp al, '2' - je online_casino_join - cmp al, '0' - je online_casino_done - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET badChoiceText - call ResetColor - invoke Sleep, 650 - jmp online_casino_menu -online_casino_host_choose: - call ClearView - invoke PrintTitleColor, OFFSET onlineTitle - invoke PrintStr, OFFSET OnlineHostGameText - invoke PrintStr, OFFSET choiceText - call ReadKey - cmp al, '1' - je online_casino_host_dice - cmp al, '2' - je online_casino_host_rr - cmp al, '0' - je online_casino_menu - invoke PrintStr, OFFSET badChoiceText - invoke Sleep, 650 - jmp online_casino_host_choose -online_casino_host_dice: - mov onlineGameMode, ONLINE_GAME_DICE - jmp online_casino_host_connect -online_casino_host_rr: - mov onlineGameMode, ONLINE_GAME_RR -online_casino_host_connect: - call OnlineHostConnect - test eax, eax - jz online_casino_done - mov onlinePacket, ONLINE_MAGIC - mov eax, onlineGameMode - mov onlinePacket+4, eax - invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_casino_session_error - cmp onlineGameMode, ONLINE_GAME_DICE - je online_casino_run_host_dice - invoke PrintStr, OFFSET OnlineModeRRText - call OnlineRRSessionHost - jmp online_casino_session_done -online_casino_run_host_dice: - invoke PrintStr, OFFSET OnlineModeDiceText - call OnlineDiceSessionHost - jmp online_casino_session_done -online_casino_join: - call OnlineJoinConnect - test eax, eax - jz online_casino_done - invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 - test eax, eax - jz online_casino_session_error - cmp onlinePacket, ONLINE_MAGIC - jne online_casino_protocol_error - mov eax, onlinePacket+4 - mov onlineGameMode, eax - cmp eax, ONLINE_GAME_DICE - je online_casino_run_client_dice - cmp eax, ONLINE_GAME_RR - je online_casino_run_client_rr - jmp online_casino_protocol_error -online_casino_run_client_dice: - invoke PrintStr, OFFSET OnlineModeDiceText - call OnlineDiceSessionClient - jmp online_casino_session_done -online_casino_run_client_rr: - invoke PrintStr, OFFSET OnlineModeRRText - call OnlineRRSessionClient -online_casino_session_done: - test eax, eax - jz online_casino_session_error - call OnlineCleanup - call PauseConsole - ret -online_casino_protocol_error: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET OnlineProtocolText - call ResetColor - call OnlineCleanup - call PauseConsole - ret -online_casino_session_error: - call PrintOnlineError - call OnlineCleanup - call PauseConsole -online_casino_done: - ret -GameOnlineCasino ENDP - -; --- PrintCoinSide: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -GameCoin PROC - cmp tournamentStage, 0 - jne tourney_coin - call StartCasino3D - ret -tourney_coin: - call TournamentPlayStage - ret -GameCoin ENDP - -; --- PrintRouletteColorName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -GameCasinoRoulette PROC - cmp tournamentStage, 0 - jne tourney_croul - call StartCasino3D - ret -tourney_croul: - call TournamentPlayStage - ret -GameCasinoRoulette ENDP -; --- SlotApplyWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -GameSlot PROC - call StartCasino3D - ret -GameSlot ENDP - -; --- SlotApplyWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotApplyWin PROC uses ebx ecx edx, pName:DWORD, multiplier:DWORD, maskValue:DWORD mov eax, pName cmp eax, OFFSET slotComboJackpot @@ -9339,7 +1452,6 @@ slot_apply_skip: ret SlotApplyWin ENDP -; --- SlotSame3: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotSame3 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD mov ebx, i1 mov eax, slotGrid[ebx * 4] @@ -9356,7 +1468,6 @@ slot_same3_no: ret SlotSame3 ENDP -; --- SlotSame4: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotSame4 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD mov ebx, i1 mov eax, slotGrid[ebx * 4] @@ -9376,7 +1487,6 @@ slot_same4_no: ret SlotSame4 ENDP -; --- SlotSame5: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotSame5 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD mov ebx, i1 mov eax, slotGrid[ebx * 4] @@ -9399,7 +1509,6 @@ slot_same5_no: ret SlotSame5 ENDP -; --- SlotAllSame15: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotAllSame15 PROC uses ebx ecx mov eax, slotGrid mov ebx, 1 @@ -9419,7 +1528,6 @@ slot_all15_no: ret SlotAllSame15 ENDP -; --- SlotTry3: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotTry3 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD invoke SlotSame3, i1, i2, i3 cmp eax, 0 @@ -9434,7 +1542,6 @@ slot_try3_no: ret SlotTry3 ENDP -; --- SlotTry4: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotTry4 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD invoke SlotSame4, i1, i2, i3, i4 cmp eax, 0 @@ -9449,7 +1556,6 @@ slot_try4_no: ret SlotTry4 ENDP -; --- SlotTry5: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotTry5 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD invoke SlotSame5, i1, i2, i3, i4, i5 cmp eax, 0 @@ -9464,7 +1570,6 @@ slot_try5_no: ret SlotTry5 ENDP -; --- EvaluateSlotCombos: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- EvaluateSlotCombos PROC mov slotWinMask, 0 mov slotBlockMask, 0 @@ -9525,10 +1630,6 @@ slot_eval_eye: ret EvaluateSlotCombos ENDP -; --- PrintClassicSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -; (Legacy terminal classic slot helpers removed) - -; --- DurakCardRank: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- DurakCardRank PROC uses ecx edx, card:DWORD mov eax, card xor edx, edx @@ -9538,7 +1639,6 @@ DurakCardRank PROC uses ecx edx, card:DWORD ret DurakCardRank ENDP -; --- DurakCardSuit: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- DurakCardSuit PROC uses ecx edx, card:DWORD mov eax, card xor edx, edx @@ -9547,7 +1647,6 @@ DurakCardSuit PROC uses ecx edx, card:DWORD ret DurakCardSuit ENDP -; --- DrawDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- DrawDurakCard PROC uses ebx ecx edx edi cmp durakDeckLeft, 0 ja draw_durak_random_start @@ -9611,25 +1710,6 @@ draw_durak_none_left: ret DrawDurakCard ENDP -; --- PrintDurakCardName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDurakCardName PROC uses eax ebx ecx edx, card:DWORD - mov eax, card - cmp eax, 0FFFFFFFFh - jne print_durak_card_real - invoke PrintStr, OFFSET durakUnbeatenText - ret -print_durak_card_real: - xor edx, edx - mov ecx, 13 - div ecx - mov ebx, eax - mov eax, edx - invoke PrintStr, ranks[eax * 4] - invoke PrintSuit, ebx - ret -PrintDurakCardName ENDP - -; --- AddDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- AddDurakCard PROC uses ebx ecx, pHand:DWORD, pCount:DWORD, card:DWORD mov ecx, pCount mov ebx, [ecx] @@ -9644,7 +1724,6 @@ add_durak_done: ret AddDurakCard ENDP -; --- RemoveDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- RemoveDurakCard PROC uses ebx ecx edx esi edi, pHand:DWORD, pCount:DWORD, index:DWORD mov esi, pHand mov edi, pCount @@ -9669,7 +1748,6 @@ remove_durak_bad: ret RemoveDurakCard ENDP -; --- CanDurakBeat: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- CanDurakBeat PROC uses ebx ecx edx esi edi, attackCard:DWORD, defenseCard:DWORD invoke DurakCardSuit, attackCard mov esi, eax @@ -9697,7 +1775,6 @@ can_durak_no: ret CanDurakBeat ENDP -; --- ClearDurakTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- ClearDurakTable PROC uses ecx edi mov durakTableCnt, 0 mov ecx, 6 @@ -9715,7 +1792,6 @@ clear_durak_def_loop: ret ClearDurakTable ENDP -; --- AddDurakAttack: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- AddDurakAttack PROC uses ebx mov ebx, durakTableCnt cmp ebx, 6 @@ -9727,7 +1803,6 @@ add_attack_done: ret AddDurakAttack ENDP -; --- DurakTableHasDefense: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- DurakTableHasDefense PROC uses ebx mov rowIndex, 0 has_def_loop: @@ -9747,7 +1822,6 @@ has_def_no: ret DurakTableHasDefense ENDP -; --- DurakFirstUnbeaten: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- DurakFirstUnbeaten PROC uses ebx mov rowIndex, 0 first_unbeaten_loop: @@ -9767,7 +1841,6 @@ first_unbeaten_none: ret DurakFirstUnbeaten ENDP -; --- DurakAllDefended: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- DurakAllDefended PROC call DurakFirstUnbeaten cmp eax, 0FFFFFFFFh @@ -9779,7 +1852,6 @@ all_def_no: ret DurakAllDefended ENDP -; --- DurakRankOnTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- DurakRankOnTable PROC uses ebx ecx edx, card:DWORD invoke DurakCardRank, card mov ecx, eax @@ -9808,7 +1880,6 @@ rank_on_table_no: ret DurakRankOnTable ENDP -; --- CollectDurakTable: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- CollectDurakTable PROC uses ebx, pHand:DWORD, pCount:DWORD mov rowIndex, 0 collect_table_loop: @@ -9828,217 +1899,6 @@ collect_table_done: ret CollectDurakTable ENDP -; --- DrawDurakPlayer: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -DrawDurakPlayer PROC - call PlayCardSound - call DrawDurakCard - cmp eax, 0FFFFFFFFh - je draw_durak_player_done - invoke AddDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax -draw_durak_player_done: - ret -DrawDurakPlayer ENDP - -; --- DrawDurakAI: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -DrawDurakAI PROC - call PlayCardSound - call DrawDurakCard - cmp eax, 0FFFFFFFFh - je draw_durak_ai_done - invoke AddDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax -draw_durak_ai_done: - ret -DrawDurakAI ENDP - -; --- RefillDurakHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -RefillDurakHands PROC -refill_player_loop: - cmp durakPlayerCnt, 6 - jae refill_ai_loop - cmp durakDeckLeft, 0 - jbe refill_ai_loop - call DrawDurakPlayer - jmp refill_player_loop -refill_ai_loop: - cmp durakAICnt, 6 - jae refill_done - cmp durakDeckLeft, 0 - jbe refill_done - call DrawDurakAI - jmp refill_ai_loop -refill_done: - ret -RefillDurakHands ENDP -; --- RefillDurakHandsAIFirst: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -RefillDurakHandsAIFirst PROC -refill_ai_first_loop: - cmp durakAICnt, 6 - jae refill_player_after_ai_loop - cmp durakDeckLeft, 0 - jbe refill_player_after_ai_loop - call DrawDurakAI - jmp refill_ai_first_loop -refill_player_after_ai_loop: - cmp durakPlayerCnt, 6 - jae refill_ai_first_done - cmp durakDeckLeft, 0 - jbe refill_ai_first_done - call DrawDurakPlayer - jmp refill_player_after_ai_loop -refill_ai_first_done: - ret -RefillDurakHandsAIFirst ENDP - -; --- PrintDurakHand: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDurakHand PROC uses eax ebx, pHand:DWORD, count:DWORD - mov rowIndex, 0 -print_durak_hand_loop: - mov eax, rowIndex - cmp eax, count - jae print_durak_hand_done - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET dotSpaceText - mov ebx, pHand - mov eax, rowIndex - invoke PrintDurakCardName, dword ptr [ebx + eax * 4] - invoke PrintStr, OFFSET cardGap - inc rowIndex - jmp print_durak_hand_loop -print_durak_hand_done: - invoke PrintStr, OFFSET nl - ret -PrintDurakHand ENDP - -; --- PrintDurakTable: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDurakTable PROC uses ebx - cmp durakTableCnt, 0 - je print_table_done - invoke PrintStr, OFFSET durakTablePairsText - invoke PrintHandRow21, OFFSET durakAttackCards, durakTableCnt, 1 - mov rowIndex, 0 -print_table_pairs_loop: - mov eax, rowIndex - cmp eax, durakTableCnt - jae print_table_done - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET dotSpaceText - mov ebx, rowIndex - invoke PrintDurakCardName, durakAttackCards[ebx * 4] - invoke PrintStr, OFFSET durakSlashText - invoke PrintDurakCardName, durakDefenseCards[ebx * 4] - invoke PrintStr, OFFSET nl - inc rowIndex - jmp print_table_pairs_loop -print_table_done: - ret -PrintDurakTable ENDP - -; --- ShowDurakTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -ShowDurakTable PROC - call ClearView - invoke PrintTitleColor, OFFSET durakTitle - invoke PrintStr, OFFSET durakDeckVisualText - invoke PrintDurakCardName, durakTrumpCard - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET durakDeckText - invoke PrintUInt, durakDeckLeft - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET durakAICardsText - invoke PrintUInt, durakAICnt - invoke PrintStr, OFFSET nl - cmp durakAICnt, 10 - ja show_ai_no_graphics - invoke PrintStr, OFFSET durakAIFaceText - invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 0 -show_ai_no_graphics: - call PrintDurakTable - invoke PrintStr, OFFSET durakYourHandText - cmp durakPlayerCnt, 10 - ja show_player_list_only - invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 -show_player_list_only: - invoke PrintDurakHand, OFFSET durakPlayerHand, durakPlayerCnt - ret -ShowDurakTable ENDP - -; --- FindAIDurakDefense: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -FindAIDurakDefense PROC uses ebx ecx, tableIndex:DWORD - mov rowIndex, 0 -find_ai_defense_loop: - mov eax, rowIndex - cmp eax, durakAICnt - jae find_ai_defense_no - mov ebx, OFFSET durakAIHand - mov ecx, [ebx + eax * 4] - mov ebx, tableIndex - invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx - cmp eax, 1 - je find_ai_defense_yes - inc rowIndex - jmp find_ai_defense_loop -find_ai_defense_yes: - mov eax, rowIndex - ret -find_ai_defense_no: - mov eax, 0FFFFFFFFh - ret -FindAIDurakDefense ENDP - -; --- AIDefendAll: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -AIDefendAll PROC uses ebx - mov durakLoopGuard, 0 -ai_defend_loop: - inc durakLoopGuard - cmp durakLoopGuard, 20 - ja ai_defend_fail - call DurakFirstUnbeaten - cmp eax, 0FFFFFFFFh - je ai_defend_success - mov ebx, eax - invoke FindAIDurakDefense, ebx - cmp eax, 0FFFFFFFFh - je ai_defend_fail - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax - mov durakDefenseCards[ebx * 4], eax - jmp ai_defend_loop -ai_defend_success: - mov eax, 1 - ret -ai_defend_fail: - xor eax, eax - ret -AIDefendAll ENDP - -; --- FindAIThrowIn: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -FindAIThrowIn PROC uses ebx ecx - cmp durakTableCnt, 6 - jae ai_throw_none - mov eax, durakTableCnt - cmp eax, durakPlayerCnt - jae ai_throw_none - mov rowIndex, 0 -ai_throw_loop: - mov eax, rowIndex - cmp eax, durakAICnt - jae ai_throw_none - mov ebx, OFFSET durakAIHand - mov ecx, [ebx + eax * 4] - invoke DurakRankOnTable, ecx - cmp eax, 1 - je ai_throw_found - inc rowIndex - jmp ai_throw_loop -ai_throw_found: - mov eax, rowIndex - ret -ai_throw_none: - mov eax, 0FFFFFFFFh - ret -FindAIThrowIn ENDP - -; --- CheckDurakEnd: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- CheckDurakEnd PROC cmp durakDeckLeft, 0 ja durak_not_finished @@ -10061,2510 +1921,8 @@ durak_not_finished: ret CheckDurakEnd ENDP -; --- SetupDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -SetupDurak PROC uses ecx - call ResetDeck - mov durakPlayerCnt, 0 - mov durakAICnt, 0 - mov durakDeckLeft, 36 - mov durakPlayerTurn, 1 - mov durakSafeTurns, 0 - call ClearDurakTable - call DrawDurakCard - mov durakTrumpCard, eax - invoke DurakCardSuit, eax - mov durakTrumpSuit, eax - mov ecx, 6 -setup_durak_deal: - call DrawDurakPlayer - call DrawDurakAI - loop setup_durak_deal - ret -SetupDurak ENDP - -; --- PlayerOpenAttackLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -GameDurak PROC - cmp tournamentStage, 0 - jne tourney_durak - call StartCasino3D - ret -tourney_durak: - call TournamentPlayStage - ret -GameDurak ENDP -; --- GameClassicSlot: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -GameClassicSlot PROC - call StartCasino3D - ret -GameClassicSlot ENDP -; --- ObserverDrawAI1: ðåæèì íàáëþäàòåëÿ AI vs AI --- -ObserverDrawAI1 PROC - call DrawPlayer21Hand - call CalcPlayerScore21 - ret -ObserverDrawAI1 ENDP - -; --- ObserverDrawAI2: ðåæèì íàáëþäàòåëÿ AI vs AI --- -ObserverDrawAI2 PROC - call DrawAI21Hand - call CalcAIScore21 - ret -ObserverDrawAI2 ENDP - -; --- ObserverShow21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -ObserverShow21 PROC - call ClearView - invoke PrintTitleColor, OFFSET observer21Title - invoke PrintStr, OFFSET observerAI1CardsText - invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 - invoke PrintStr, OFFSET observerAI1Text - invoke PrintUInt, playerTotal - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET observerAI2CardsText - invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, 1 - invoke PrintStr, OFFSET observerAI2Text - invoke PrintUInt, dealerTotal - invoke PrintStr, OFFSET nl - ret -ObserverShow21 ENDP - -; --- GameObserver21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -GameObserver21 PROC - call ClearView - invoke PrintTitleColor, OFFSET observer21Title - call ResetDeck - mov playerCnt21, 0 - mov aiCnt21, 0 - mov revealAI21, 1 - call ObserverDrawAI1 - call ObserverDrawAI1 - call ObserverDrawAI2 - call ObserverDrawAI2 -observer21_loop: - call ObserverShow21 - invoke Sleep, 750 - cmp playerTotal, 17 - jae observer21_ai2 - call ObserverDrawAI1 - jmp observer21_loop -observer21_ai2: - cmp dealerTotal, 17 - jae observer21_compare - call ObserverDrawAI2 - jmp observer21_loop -observer21_compare: - call ObserverShow21 - mov eax, playerTotal - cmp eax, 21 - ja observer21_ai1_bust - mov eax, dealerTotal - cmp eax, 21 - ja observer21_ai1_win - mov eax, playerTotal - cmp eax, dealerTotal - ja observer21_ai1_win - jb observer21_ai2_win - invoke PrintStr, OFFSET observerDrawText - jmp observer21_done -observer21_ai1_bust: - mov eax, dealerTotal - cmp eax, 21 - ja observer21_draw - jmp observer21_ai2_win -observer21_draw: - invoke PrintStr, OFFSET observerDrawText - jmp observer21_done -observer21_ai1_win: - invoke PrintStr, OFFSET observerWin1Text - jmp observer21_done -observer21_ai2_win: - invoke PrintStr, OFFSET observerWin2Text -observer21_done: - call PauseConsole - ret -GameObserver21 ENDP - -; --- ObserverPokerEvaluate: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ObserverPokerEvaluate PROC - invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand - invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount - mov pokerPlayerScore, eax - invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand - invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount - mov pokerAIScore, eax - ret -ObserverPokerEvaluate ENDP - -; --- ObserverShowPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ObserverShowPoker PROC - call ClearView - invoke PrintTitleColor, OFFSET observerPokerTitle - call ShowPokerTable - call ShowPokerMoney - call ObserverPokerEvaluate - invoke PrintStr, OFFSET pokerYourComboText - invoke PrintPokerHandName, pokerPlayerScore - invoke PrintStr, OFFSET pokerAIComboText - invoke PrintPokerHandName, pokerAIScore - ret -ObserverShowPoker ENDP - -; --- ObserverPokerDecision: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -ObserverPokerDecision PROC uses ebx edx - call ObserverPokerEvaluate - mov eax, pokerPlayerScore - cmp eax, 9 - ja observer_poker_ai2_check_fold - invoke RandomRange, 4 - cmp eax, 0 - je observer_poker_ai1_fold -observer_poker_ai2_check_fold: - mov eax, pokerAIScore - cmp eax, 9 - ja observer_poker_raise_check - invoke RandomRange, 4 - cmp eax, 0 - je observer_poker_ai2_fold -observer_poker_raise_check: - mov eax, pokerPlayerScore - cmp eax, 1000 - jb observer_poker_ai2_raise_check - invoke RandomRange, 2 - cmp eax, 0 - jne observer_poker_ai2_raise_check - invoke PrintStr, OFFSET observerAI1RaiseText - add currentBet, 500 - invoke Sleep, 450 - mov eax, pokerAIScore - cmp eax, pokerPlayerScore - jae observer_poker_call_1 - invoke RandomRange, 2 - cmp eax, 0 - je observer_poker_ai2_fold -observer_poker_call_1: - invoke PrintStr, OFFSET observerCallText -observer_poker_ai2_raise_check: - mov eax, pokerAIScore - cmp eax, 1000 - jb observer_poker_continue - invoke RandomRange, 2 - cmp eax, 0 - jne observer_poker_continue - invoke PrintStr, OFFSET observerAI2RaiseText - add currentBet, 500 - invoke Sleep, 450 - mov eax, pokerPlayerScore - cmp eax, pokerAIScore - jae observer_poker_call_2 - invoke RandomRange, 2 - cmp eax, 0 - je observer_poker_ai1_fold -observer_poker_call_2: - invoke PrintStr, OFFSET observerCallText -observer_poker_continue: - xor eax, eax - ret -observer_poker_ai1_fold: - invoke PrintStr, OFFSET observerFold1Text - mov eax, 2 - ret -observer_poker_ai2_fold: - invoke PrintStr, OFFSET observerFold2Text - mov eax, 1 - ret -ObserverPokerDecision ENDP - -; --- GameObserverPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- -GameObserverPoker PROC - call ClearView - invoke PrintTitleColor, OFFSET observerPokerTitle - call ResetDeck - call ResetPokerHands - mov revealAI21, 1 - mov currentBet, 500 - call DealPokerHands -observer_poker_stage_loop: - call ObserverShowPoker - invoke Sleep, 700 - cmp communityCnt, 5 - jae observer_poker_showdown - call ObserverPokerDecision - cmp eax, 1 - je observer_poker_ai1_wins - cmp eax, 2 - je observer_poker_ai2_wins - invoke PrintStr, OFFSET pokerNextCardText - invoke Sleep, 700 - inc communityCnt - jmp observer_poker_stage_loop -observer_poker_showdown: - call ObserverShowPoker - mov eax, pokerPlayerScore - cmp eax, pokerAIScore - ja observer_poker_ai1_wins - jb observer_poker_ai2_wins - invoke PrintStr, OFFSET observerDrawText - jmp observer_poker_done -observer_poker_ai1_wins: - invoke PrintStr, OFFSET observerWin1Text - jmp observer_poker_done -observer_poker_ai2_wins: - invoke PrintStr, OFFSET observerWin2Text -observer_poker_done: - call PauseConsole - ret -GameObserverPoker ENDP - -; --- FindPlayerDurakDefense: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -FindPlayerDurakDefense PROC uses ebx ecx, tableIndex:DWORD - mov rowIndex, 0 -find_player_defense_loop: - mov eax, rowIndex - cmp eax, durakPlayerCnt - jae find_player_defense_no - mov ebx, OFFSET durakPlayerHand - mov ecx, [ebx + eax * 4] - mov ebx, tableIndex - invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx - cmp eax, 1 - je find_player_defense_yes - inc rowIndex - jmp find_player_defense_loop -find_player_defense_yes: - mov eax, rowIndex - ret -find_player_defense_no: - mov eax, 0FFFFFFFFh - ret -FindPlayerDurakDefense ENDP - -; --- PlayerAIDefendAll: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayerAIDefendAll PROC uses ebx -player_ai_defend_loop: - call DurakFirstUnbeaten - cmp eax, 0FFFFFFFFh - je player_ai_defend_success - mov ebx, eax - invoke FindPlayerDurakDefense, ebx - cmp eax, 0FFFFFFFFh - je player_ai_defend_fail - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax - mov durakDefenseCards[ebx * 4], eax - jmp player_ai_defend_loop -player_ai_defend_success: - mov eax, 1 - ret -player_ai_defend_fail: - xor eax, eax - ret -PlayerAIDefendAll ENDP - -; --- FindPlayerThrowIn: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -FindPlayerThrowIn PROC uses ebx ecx - cmp durakTableCnt, 6 - jae player_ai_throw_none - mov eax, durakTableCnt - cmp eax, durakAICnt - jae player_ai_throw_none - mov rowIndex, 0 -player_ai_throw_loop: - mov eax, rowIndex - cmp eax, durakPlayerCnt - jae player_ai_throw_none - mov ebx, OFFSET durakPlayerHand - mov ecx, [ebx + eax * 4] - invoke DurakRankOnTable, ecx - cmp eax, 1 - je player_ai_throw_found - inc rowIndex - jmp player_ai_throw_loop -player_ai_throw_found: - mov eax, rowIndex - ret -player_ai_throw_none: - mov eax, 0FFFFFFFFh - ret -FindPlayerThrowIn ENDP - -; --- AIInitialThrowLoop: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -AIInitialThrowLoop PROC - mov durakLoopGuard, 0 -ai_initial_throw_loop: - inc durakLoopGuard - cmp durakLoopGuard, 20 - ja ai_initial_throw_done - call FindAIThrowIn - cmp eax, 0FFFFFFFFh - je ai_initial_throw_done - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax - call AddDurakAttack - jmp ai_initial_throw_loop -ai_initial_throw_done: - ret -AIInitialThrowLoop ENDP - -; --- PlayerAIInitialThrowLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayerAIInitialThrowLoop PROC -player_ai_initial_throw_loop: - call FindPlayerThrowIn - cmp eax, 0FFFFFFFFh - je player_ai_initial_throw_done - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax - call AddDurakAttack - jmp player_ai_initial_throw_loop -player_ai_initial_throw_done: - ret -PlayerAIInitialThrowLoop ENDP - -; --- ShowDurakObserverTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -ShowDurakObserverTable PROC - call ClearView - invoke PrintTitleColor, OFFSET observerDurakTitle - invoke PrintStr, OFFSET durakDeckVisualText - invoke PrintDurakCardName, durakTrumpCard - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET durakDeckText - invoke PrintUInt, durakDeckLeft - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET observerAI1CardsText - invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 - call PrintDurakTable - invoke PrintStr, OFFSET observerAI2CardsText - invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 1 - ret -ShowDurakObserverTable ENDP - -; --- GameObserverDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -GameObserverDurak PROC - call SetupDurak - mov pokerReplaceIndex, 0 -observer_durak_loop: - inc pokerReplaceIndex - cmp pokerReplaceIndex, 32 - ja observer_durak_draw - call CheckDurakEnd - cmp eax, 1 - je observer_durak_ai1_win - cmp eax, 2 - je observer_durak_ai2_win - cmp eax, 3 - je observer_durak_draw - call ClearDurakTable - cmp durakPlayerTurn, 1 - je observer_durak_ai1_attack - jmp observer_durak_ai2_attack -observer_durak_ai1_attack: - cmp durakPlayerCnt, 0 - je observer_durak_ai1_win - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, 0 - call AddDurakAttack - call PlayerAIInitialThrowLoop - call ShowDurakObserverTable - invoke Sleep, 750 - call AIDefendAll - cmp eax, 1 - je observer_durak_ai2_defended - invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt - invoke PrintStr, OFFSET durakAITakeText - mov durakPlayerTurn, 1 - call RefillDurakHands - invoke Sleep, 850 - jmp observer_durak_loop -observer_durak_ai2_defended: - call ShowDurakObserverTable - invoke Sleep, 750 - call ClearDurakTable - mov durakPlayerTurn, 0 - call RefillDurakHands - jmp observer_durak_loop -observer_durak_ai2_attack: - cmp durakAICnt, 0 - je observer_durak_ai2_win - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 - call AddDurakAttack - call AIInitialThrowLoop - call ShowDurakObserverTable - invoke Sleep, 750 - call PlayerAIDefendAll - cmp eax, 1 - je observer_durak_ai1_defended - invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt - invoke PrintStr, OFFSET durakPlayerTakeText - mov durakPlayerTurn, 0 - call RefillDurakHandsAIFirst - invoke Sleep, 850 - jmp observer_durak_loop -observer_durak_ai1_defended: - call ShowDurakObserverTable - invoke Sleep, 750 - call ClearDurakTable - mov durakPlayerTurn, 1 - call RefillDurakHandsAIFirst - jmp observer_durak_loop -observer_durak_ai1_win: - call ShowDurakObserverTable - invoke PrintStr, OFFSET observerWin1Text - jmp observer_durak_done -observer_durak_ai2_win: - call ShowDurakObserverTable - invoke PrintStr, OFFSET observerWin2Text - jmp observer_durak_done -observer_durak_draw: - call ShowDurakObserverTable - invoke PrintStr, OFFSET observerDrawText -observer_durak_done: - call PauseConsole - ret -GameObserverDurak ENDP - -; --- GameObserverRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -GameObserverRoulette PROC - call ClearView - invoke PrintTitleColor, OFFSET observerRRTitle - call PlayRouletteSpinSound - call SetupRoulette - call AnimateRouletteSpin -observer_rr_loop: - call ShowRouletteStatus - cmp rrTurn, 0 - je observer_rr_ai1_turn - invoke PrintStr, OFFSET rrAITurnText - invoke Sleep, 850 - call RouletteChamberLoaded - cmp eax, 1 - je observer_rr_ai2_dead - call PlayRouletteDrySound - invoke PrintStr, OFFSET rrClickText - invoke Sleep, 750 - call AdvanceRouletteChamber - mov rrTurn, 0 - jmp observer_rr_loop -observer_rr_ai1_turn: - invoke PrintStr, OFFSET rrPlayerTurnText - invoke Sleep, 850 - call RouletteChamberLoaded - cmp eax, 1 - je observer_rr_ai1_dead - call PlayRouletteDrySound - invoke PrintStr, OFFSET rrClickText - invoke Sleep, 750 - call AdvanceRouletteChamber - mov rrTurn, 1 - jmp observer_rr_loop -observer_rr_ai1_dead: - call PrintBang - invoke PrintStr, OFFSET observerShotAI1Text - jmp observer_rr_done -observer_rr_ai2_dead: - call PrintBang - invoke PrintStr, OFFSET observerShotAI2Text -observer_rr_done: - call PauseConsole - ret -GameObserverRoulette ENDP - -; --- GameObserver: ðåæèì íàáëþäàòåëÿ AI vs AI --- -GameObserver PROC -observer_menu_loop: - call ClearView - invoke PrintTitleColor, OFFSET observerTitle - invoke PrintStr, OFFSET observerMenuText - call ReadUInt - cmp eax, 0 - je observer_exit - cmp eax, 1 - je observer_run_rr - cmp eax, 2 - je observer_run_21 - cmp eax, 3 - je observer_run_poker - cmp eax, 4 - je observer_run_durak - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp observer_menu_loop -observer_run_rr: - invoke UnlockAchievement, 10000h, OFFSET achObserverName - call GameObserverRoulette - jmp observer_menu_loop -observer_run_21: - mov currentGameId, 1 - invoke UnlockAchievement, 10000h, OFFSET achObserverName - call GameObserver21 - jmp observer_menu_loop -observer_run_poker: - mov currentGameId, 2 - invoke UnlockAchievement, 10000h, OFFSET achObserverName - call GameObserverPoker - jmp observer_menu_loop -observer_run_durak: - mov currentGameId, 10 - invoke UnlockAchievement, 10000h, OFFSET achObserverName - call GameObserverDurak - jmp observer_menu_loop -observer_exit: - ret -GameObserver ENDP - -; --- PrintShopBackName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintShopBackName PROC - mov eax, shopBackStyle - cmp eax, 1 - je print_shop_back_blue - cmp eax, 2 - je print_shop_back_red - cmp eax, 3 - je print_shop_back_gold - cmp eax, 4 - je print_shop_back_skull - cmp eax, 5 - je print_shop_back_clover - cmp eax, 6 - je print_shop_back_arcane - cmp eax, 7 - je print_shop_back_noir - cmp eax, 8 - je print_shop_back_diamond - cmp eax, 9 - je print_shop_back_rider - cmp eax, 10 - je print_shop_back_bee - cmp eax, 11 - je print_shop_back_fan - cmp eax, 12 - je print_shop_back_web - invoke PrintStr, OFFSET shopBackGray - ret -print_shop_back_blue: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopBackBlue - call ResetColor - ret -print_shop_back_red: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopBackRed - call ResetColor - ret -print_shop_back_gold: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopBackGold - call ResetColor - ret -print_shop_back_skull: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopBackSkull - call ResetColor - ret -print_shop_back_clover: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopBackClover - call ResetColor - ret -print_shop_back_arcane: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopBackArcane - call ResetColor - ret -print_shop_back_noir: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopBackNoir - call ResetColor - ret -print_shop_back_diamond: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopBackDiamond - call ResetColor - ret -print_shop_back_rider: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopBackRider - call ResetColor - ret -print_shop_back_bee: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopBackBee - call ResetColor - ret -print_shop_back_fan: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopBackFan - call ResetColor - ret -print_shop_back_web: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopBackWeb - call ResetColor - ret -PrintShopBackName ENDP - -; --- PrintShopCharmName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintShopCharmName PROC - mov eax, shopCharmLevel - cmp eax, 1 - je print_shop_charm_clover - cmp eax, 2 - je print_shop_charm_bell - cmp eax, 3 - je print_shop_charm_diamond - cmp eax, 4 - je print_shop_charm_skull - cmp eax, 5 - je print_shop_charm_web - cmp eax, 6 - je print_shop_charm_bee - cmp eax, 7 - je print_shop_charm_moon - cmp eax, 8 - je print_shop_charm_crown - cmp eax, 9 - je print_shop_charm_mirror - cmp eax, 10 - je print_shop_charm_dice - cmp eax, 11 - je print_shop_charm_blood - cmp eax, 12 - je print_shop_charm_hourglass - cmp eax, 13 - je print_shop_charm_horseshoe - cmp eax, 14 - je print_shop_charm_joker - cmp eax, 15 - je print_shop_charm_phoenix - cmp eax, 16 - je print_shop_charm_compass - cmp eax, 17 - je print_shop_charm_tooth - cmp eax, 18 - je print_shop_charm_eye - cmp eax, 19 - je print_shop_charm_key - cmp eax, 20 - je print_shop_charm_candle - cmp eax, 21 - je print_shop_charm_chip - cmp eax, 22 - je print_shop_charm_snake - cmp eax, 23 - je print_shop_charm_ace - cmp eax, 24 - je print_shop_charm_devil - invoke PrintStr, OFFSET shopCharmNone - ret -print_shop_charm_clover: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopCharmClover - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_bell: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmBell - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_diamond: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopCharmDiamond - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_skull: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmSkull - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_web: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopCharmWeb - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_bee: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmBee - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_moon: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopCharmMoon - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_crown: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmCrown - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_mirror: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopCharmMirror - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_dice: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopCharmDice - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_blood: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmBlood - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_hourglass: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmHourglass - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_horseshoe: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopCharmHorseshoe - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_joker: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmJoker - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_phoenix: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmPhoenix - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_compass: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopCharmCompass - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_tooth: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopCharmTooth - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_eye: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopCharmEye - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_key: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET shopCharmKey - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_candle: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmCandle - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_chip: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopCharmChip - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_snake: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopCharmSnake - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_ace: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET shopCharmAce - call ResetColor - jmp print_shop_charm_uses -print_shop_charm_devil: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET shopCharmDevil - call ResetColor -print_shop_charm_uses: - invoke PrintStr, OFFSET shopCharmUsesText - invoke PrintUInt, shopCharmUses - invoke PrintStr, OFFSET nl - ret -PrintShopCharmName ENDP - -; --- PrintShopStatus: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintShopStatus PROC - call PrintBank - invoke PrintStr, OFFSET shopBackText - call PrintShopBackName - invoke PrintStr, OFFSET shopCharmText - call PrintShopCharmName - invoke PrintStr, OFFSET nl - ret -PrintShopStatus ENDP - -; --- ShopBuyBack: ìàãàçèí ðóáàøåê, òàëèñìàíîâ è ïîêóïîê --- -ShopBuyBack PROC uses eax ebx, style:DWORD, cost:DWORD, maskValue:DWORD - mov eax, shopBackOwned - mov ebx, maskValue - test eax, ebx - jne shop_back_already_owned - - mov eax, cost - cmp bankroll, eax - jae shop_back_buy - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET tooBigBetText - call ResetColor - ret -shop_back_buy: - sub bankroll, eax - mov eax, shopBackOwned - or eax, ebx - mov shopBackOwned, eax - mov eax, style - mov shopBackStyle, eax - call SaveGame - invoke UnlockAchievement, 10h, OFFSET achShopperName - mov eax, shopBackOwned - and eax, 1FFFh - cmp eax, 1FFFh - jne shop_back_collector_skip - invoke UnlockAchievement, 4000h, OFFSET achBackCollectorName -shop_back_collector_skip: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopBoughtText - call ResetColor - call PrintBank - call CheckBankrupt - ret -shop_back_already_owned: - mov eax, style - mov shopBackStyle, eax - call SaveGame - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET shopSelectedText - call ResetColor - ret -ShopBuyBack ENDP - -; --- ShopBuyCharm: ïîêóïêà òàëèñìàíà ñ ðàçíûìè çàðÿäàìè --- -ShopBuyCharm PROC uses eax, charmLevel:DWORD, cost:DWORD - mov eax, cost - cmp bankroll, eax - jae shop_charm_buy - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET tooBigBetText - call ResetColor - ret -shop_charm_buy: - sub bankroll, eax - mov eax, charmLevel - mov shopCharmLevel, eax - cmp eax, 5 - je shop_charm_one_use - cmp eax, 11 - je shop_charm_one_use - cmp eax, 14 - je shop_charm_one_use - cmp eax, 18 - je shop_charm_one_use - cmp eax, 20 - je shop_charm_one_use - cmp eax, 24 - je shop_charm_one_use - cmp eax, 4 - je shop_charm_two_uses - cmp eax, 8 - je shop_charm_two_uses - cmp eax, 12 - je shop_charm_two_uses - cmp eax, 15 - je shop_charm_two_uses - cmp eax, 22 - je shop_charm_two_uses - cmp eax, 7 - je shop_charm_four_uses - cmp eax, 9 - je shop_charm_four_uses - cmp eax, 21 - je shop_charm_four_uses - cmp eax, 6 - je shop_charm_five_uses - cmp eax, 17 - je shop_charm_five_uses - cmp eax, 23 - je shop_charm_five_uses - cmp eax, 10 - je shop_charm_six_uses - cmp eax, 19 - je shop_charm_six_uses - cmp eax, 13 - je shop_charm_eight_uses - mov shopCharmUses, 3 - jmp shop_charm_store -shop_charm_one_use: - mov shopCharmUses, 1 - jmp shop_charm_store -shop_charm_two_uses: - mov shopCharmUses, 2 - jmp shop_charm_store -shop_charm_four_uses: - mov shopCharmUses, 4 - jmp shop_charm_store -shop_charm_five_uses: - mov shopCharmUses, 5 - jmp shop_charm_store -shop_charm_six_uses: - mov shopCharmUses, 6 - jmp shop_charm_store -shop_charm_eight_uses: - mov shopCharmUses, 8 -shop_charm_store: - call SaveGame - invoke UnlockAchievement, 10h, OFFSET achShopperName - invoke UnlockAchievement, 8000h, OFFSET achCharmBuyerName - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET shopBoughtText - call ResetColor - call PrintBank - call CheckBankrupt - ret -ShopBuyCharm ENDP - -; --- ShowBestiaryPage: êàðòî÷êà òàëèñìàíà â áåñòèàðèè --- -ShowBestiaryPage PROC artPtr:DWORD, infoPtr:DWORD, colorValue:DWORD - call ClearView - invoke SetColor, colorValue - invoke PrintStr, artPtr - call ResetColor - invoke PrintStr, infoPtr - invoke PrintStr, OFFSET bestiaryBackText - call ReadKey - ret -ShowBestiaryPage ENDP - -; --- GameCharmBestiary: ýíöèêëîïåäèÿ òàëèñìàíîâ ñ ASCII-àðòàìè --- -GameCharmBestiary PROC -bestiary_loop: - call ClearView - invoke PrintTitleColor, OFFSET bestiaryTitle - invoke PrintStr, OFFSET bestiaryMenuText - call ReadUInt - cmp eax, 0 - je bestiary_exit - cmp eax, 1 - je bestiary_clover - cmp eax, 2 - je bestiary_bell - cmp eax, 3 - je bestiary_diamond - cmp eax, 4 - je bestiary_skull - cmp eax, 5 - je bestiary_web - cmp eax, 6 - je bestiary_bee - cmp eax, 7 - je bestiary_moon - cmp eax, 8 - je bestiary_crown - cmp eax, 9 - je bestiary_mirror - cmp eax, 10 - je bestiary_dice - cmp eax, 11 - je bestiary_blood - cmp eax, 12 - je bestiary_hourglass - cmp eax, 13 - je bestiary_horseshoe - cmp eax, 14 - je bestiary_joker - cmp eax, 15 - je bestiary_phoenix - cmp eax, 16 - je bestiary_compass - cmp eax, 17 - je bestiary_tooth - cmp eax, 18 - je bestiary_eye - cmp eax, 19 - je bestiary_key - cmp eax, 20 - je bestiary_candle - cmp eax, 21 - je bestiary_chip - cmp eax, 22 - je bestiary_snake - cmp eax, 23 - je bestiary_ace - cmp eax, 24 - je bestiary_devil - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp bestiary_loop -bestiary_clover: - invoke ShowBestiaryPage, OFFSET bestiaryCloverArt, OFFSET bestiaryCloverInfo, COLOR_MONEY - jmp bestiary_loop -bestiary_bell: - invoke ShowBestiaryPage, OFFSET bestiaryBellArt, OFFSET bestiaryBellInfo, COLOR_WARN - jmp bestiary_loop -bestiary_diamond: - invoke ShowBestiaryPage, OFFSET bestiaryDiamondArt, OFFSET bestiaryDiamondInfo, COLOR_TITLE - jmp bestiary_loop -bestiary_skull: - invoke ShowBestiaryPage, OFFSET bestiarySkullArt, OFFSET bestiarySkullInfo, COLOR_BAD - jmp bestiary_loop -bestiary_web: - invoke ShowBestiaryPage, OFFSET bestiaryWebArt, OFFSET bestiaryWebInfo, COLOR_CARD - jmp bestiary_loop -bestiary_bee: - invoke ShowBestiaryPage, OFFSET bestiaryBeeArt, OFFSET bestiaryBeeInfo, COLOR_WARN - jmp bestiary_loop -bestiary_moon: - invoke ShowBestiaryPage, OFFSET bestiaryMoonArt, OFFSET bestiaryMoonInfo, COLOR_TITLE - jmp bestiary_loop -bestiary_crown: - invoke ShowBestiaryPage, OFFSET bestiaryCrownArt, OFFSET bestiaryCrownInfo, COLOR_WARN - jmp bestiary_loop -bestiary_mirror: - invoke ShowBestiaryPage, OFFSET bestiaryMirrorArt, OFFSET bestiaryMirrorInfo, COLOR_CARD - jmp bestiary_loop -bestiary_dice: - invoke ShowBestiaryPage, OFFSET bestiaryDiceArt, OFFSET bestiaryDiceInfo, COLOR_TITLE - jmp bestiary_loop -bestiary_blood: - invoke ShowBestiaryPage, OFFSET bestiaryBloodArt, OFFSET bestiaryBloodInfo, COLOR_BAD - jmp bestiary_loop -bestiary_hourglass: - invoke ShowBestiaryPage, OFFSET bestiaryHourglassArt, OFFSET bestiaryHourglassInfo, COLOR_WARN - jmp bestiary_loop -bestiary_horseshoe: - invoke ShowBestiaryPage, OFFSET bestiaryHorseshoeArt, OFFSET bestiaryHorseshoeInfo, COLOR_MONEY - jmp bestiary_loop -bestiary_joker: - invoke ShowBestiaryPage, OFFSET bestiaryJokerArt, OFFSET bestiaryJokerInfo, COLOR_BAD - jmp bestiary_loop -bestiary_phoenix: - invoke ShowBestiaryPage, OFFSET bestiaryPhoenixArt, OFFSET bestiaryPhoenixInfo, COLOR_WARN - jmp bestiary_loop -bestiary_compass: - invoke ShowBestiaryPage, OFFSET bestiaryCompassArt, OFFSET bestiaryCompassInfo, COLOR_CARD - jmp bestiary_loop -bestiary_tooth: - invoke ShowBestiaryPage, OFFSET bestiaryToothArt, OFFSET bestiaryToothInfo, COLOR_WARN - jmp bestiary_loop -bestiary_eye: - invoke ShowBestiaryPage, OFFSET bestiaryEyeArt, OFFSET bestiaryEyeInfo, COLOR_TITLE - jmp bestiary_loop -bestiary_key: - invoke ShowBestiaryPage, OFFSET bestiaryKeyArt, OFFSET bestiaryKeyInfo, COLOR_CARD - jmp bestiary_loop -bestiary_candle: - invoke ShowBestiaryPage, OFFSET bestiaryCandleArt, OFFSET bestiaryCandleInfo, COLOR_BAD - jmp bestiary_loop -bestiary_chip: - invoke ShowBestiaryPage, OFFSET bestiaryChipArt, OFFSET bestiaryChipInfo, COLOR_MONEY - jmp bestiary_loop -bestiary_snake: - invoke ShowBestiaryPage, OFFSET bestiarySnakeArt, OFFSET bestiarySnakeInfo, COLOR_MONEY - jmp bestiary_loop -bestiary_ace: - invoke ShowBestiaryPage, OFFSET bestiaryAceArt, OFFSET bestiaryAceInfo, COLOR_TITLE - jmp bestiary_loop -bestiary_devil: - invoke ShowBestiaryPage, OFFSET bestiaryDevilArt, OFFSET bestiaryDevilInfo, COLOR_BAD - jmp bestiary_loop -bestiary_exit: - ret -GameCharmBestiary ENDP - -; --- GameShop: ìàãàçèí ðóáàøåê, òàëèñìàíîâ è ïîêóïîê --- -GameShop PROC -shop_loop: - call ClearView - invoke PrintTitleColor, OFFSET shopTitle - call PrintShopStatus - invoke PrintStr, OFFSET shopMainMenuText - call ReadUInt - cmp eax, 0 - je shop_exit - cmp eax, 1 - je shop_backs_menu - cmp eax, 2 - je shop_charms_menu - cmp eax, 3 - je shop_bestiary_menu - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp shop_loop - -shop_bestiary_menu: - call GameCharmBestiary - jmp shop_loop - -shop_backs_menu: - call ClearView - invoke PrintTitleColor, OFFSET shopBackTitle - call PrintShopStatus - invoke PrintStr, OFFSET shopBackMenuText - call ReadUInt - cmp eax, 0 - je shop_loop - cmp eax, 1 - je shop_blue - cmp eax, 2 - je shop_red - cmp eax, 3 - je shop_gold - cmp eax, 4 - je shop_skull - cmp eax, 5 - je shop_clover_back - cmp eax, 6 - je shop_arcane - cmp eax, 7 - je shop_noir - cmp eax, 8 - je shop_diamond_back - cmp eax, 9 - je shop_rider - cmp eax, 10 - je shop_bee - cmp eax, 11 - je shop_fan - cmp eax, 12 - je shop_web - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp shop_backs_menu - -shop_charms_menu: - call ClearView - invoke PrintTitleColor, OFFSET shopCharmTitle - call PrintShopStatus - invoke PrintStr, OFFSET shopCharmMenuText - call ReadUInt - cmp eax, 0 - je shop_loop - cmp eax, 1 - je buy_charm_clover - cmp eax, 2 - je buy_charm_bell - cmp eax, 3 - je buy_charm_diamond - cmp eax, 4 - je buy_charm_skull - cmp eax, 5 - je buy_charm_web - cmp eax, 6 - je buy_charm_bee_item - cmp eax, 7 - je buy_charm_moon - cmp eax, 8 - je buy_charm_crown - cmp eax, 9 - je buy_charm_mirror - cmp eax, 10 - je buy_charm_dice - cmp eax, 11 - je buy_charm_blood - cmp eax, 12 - je buy_charm_hourglass - cmp eax, 13 - je buy_charm_horseshoe - cmp eax, 14 - je buy_charm_joker - cmp eax, 15 - je buy_charm_phoenix - cmp eax, 16 - je buy_charm_compass - cmp eax, 17 - je buy_charm_tooth - cmp eax, 18 - je buy_charm_eye - cmp eax, 19 - je buy_charm_key - cmp eax, 20 - je buy_charm_candle - cmp eax, 21 - je buy_charm_chip - cmp eax, 22 - je buy_charm_snake - cmp eax, 23 - je buy_charm_ace - cmp eax, 24 - je buy_charm_devil - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp shop_charms_menu - -shop_blue: - invoke ShopBuyBack, 1, 3000, 2 - call PauseConsole - jmp shop_backs_menu -shop_red: - invoke ShopBuyBack, 2, 3000, 4 - call PauseConsole - jmp shop_backs_menu -shop_gold: - invoke ShopBuyBack, 3, 10000, 8 - call PauseConsole - jmp shop_backs_menu -shop_skull: - invoke ShopBuyBack, 4, 12000, 10h - call PauseConsole - jmp shop_backs_menu -shop_clover_back: - invoke ShopBuyBack, 5, 15000, 20h - call PauseConsole - jmp shop_backs_menu -shop_arcane: - invoke ShopBuyBack, 6, 17000, 40h - call PauseConsole - jmp shop_backs_menu -shop_noir: - invoke ShopBuyBack, 7, 18000, 80h - call PauseConsole - jmp shop_backs_menu -shop_diamond_back: - invoke ShopBuyBack, 8, 20000, 100h - call PauseConsole - jmp shop_backs_menu -shop_rider: - invoke ShopBuyBack, 9, 22000, 200h - call PauseConsole - jmp shop_backs_menu -shop_bee: - invoke ShopBuyBack, 10, 22000, 400h - call PauseConsole - jmp shop_backs_menu -shop_fan: - invoke ShopBuyBack, 11, 23000, 800h - call PauseConsole - jmp shop_backs_menu -shop_web: - invoke ShopBuyBack, 12, 24000, 1000h - call PauseConsole - jmp shop_backs_menu - -buy_charm_clover: - invoke ShopBuyCharm, 1, 12000 - call PauseConsole - jmp shop_charms_menu -buy_charm_bell: - invoke ShopBuyCharm, 2, 18000 - call PauseConsole - jmp shop_charms_menu -buy_charm_diamond: - invoke ShopBuyCharm, 3, 25000 - call PauseConsole - jmp shop_charms_menu -buy_charm_skull: - invoke ShopBuyCharm, 4, 32000 - call PauseConsole - jmp shop_charms_menu -buy_charm_web: - invoke ShopBuyCharm, 5, 40000 - call PauseConsole - jmp shop_charms_menu -buy_charm_bee_item: - invoke ShopBuyCharm, 6, 30000 - call PauseConsole - jmp shop_charms_menu -buy_charm_moon: - invoke ShopBuyCharm, 7, 36000 - call PauseConsole - jmp shop_charms_menu -buy_charm_crown: - invoke ShopBuyCharm, 8, 52000 - call PauseConsole - jmp shop_charms_menu -buy_charm_mirror: - invoke ShopBuyCharm, 9, 42000 - call PauseConsole - jmp shop_charms_menu -buy_charm_dice: - invoke ShopBuyCharm, 10, 35000 - call PauseConsole - jmp shop_charms_menu -buy_charm_blood: - invoke ShopBuyCharm, 11, 65000 - call PauseConsole - jmp shop_charms_menu -buy_charm_hourglass: - invoke ShopBuyCharm, 12, 48000 - call PauseConsole - jmp shop_charms_menu -buy_charm_horseshoe: - invoke ShopBuyCharm, 13, 39000 - call PauseConsole - jmp shop_charms_menu -buy_charm_joker: - invoke ShopBuyCharm, 14, 70000 - call PauseConsole - jmp shop_charms_menu -buy_charm_phoenix: - invoke ShopBuyCharm, 15, 56000 - call PauseConsole - jmp shop_charms_menu -buy_charm_compass: - invoke ShopBuyCharm, 16, 44000 - call PauseConsole - jmp shop_charms_menu -buy_charm_tooth: - invoke ShopBuyCharm, 17, 47000 - call PauseConsole - jmp shop_charms_menu -buy_charm_eye: - invoke ShopBuyCharm, 18, 60000 - call PauseConsole - jmp shop_charms_menu -buy_charm_key: - invoke ShopBuyCharm, 19, 41000 - call PauseConsole - jmp shop_charms_menu -buy_charm_candle: - invoke ShopBuyCharm, 20, 76000 - call PauseConsole - jmp shop_charms_menu -buy_charm_chip: - invoke ShopBuyCharm, 21, 50000 - call PauseConsole - jmp shop_charms_menu -buy_charm_snake: - invoke ShopBuyCharm, 22, 62000 - call PauseConsole - jmp shop_charms_menu -buy_charm_ace: - invoke ShopBuyCharm, 23, 53000 - call PauseConsole - jmp shop_charms_menu -buy_charm_devil: - invoke ShopBuyCharm, 24, 100000 - call PauseConsole - jmp shop_charms_menu -shop_exit: - ret -GameShop ENDP - - -; --- CopyName: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -CopyName PROC uses eax ecx esi edi, pDst:DWORD, pSrc:DWORD - mov edi, pDst - mov esi, pSrc - mov ecx, 63 -copy_name_loop: - mov al, [esi] - cmp al, '.' - je copy_name_stop - mov [edi], al - cmp al, 0 - je copy_name_done - inc esi - inc edi - loop copy_name_loop -copy_name_stop: - mov byte ptr [edi], 0 -copy_name_done: - ret -CopyName ENDP - -; --- ClearLeaderboards: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -ClearLeaderboards PROC uses eax ecx edi - mov leaderBestBank, 0 - mov leaderBestWins, 0 - mov leaderBestLosses, 0 - mov leaderValidCount, 0 - mov ecx, 22 - mov edi, OFFSET leaderBestGameWins -clear_leader_counts: - mov dword ptr [edi], 0 - add edi, 4 - loop clear_leader_counts - mov ecx, 1600 - mov edi, OFFSET leaderBestBankName -clear_leader_names: - mov byte ptr [edi], 0 - inc edi - loop clear_leader_names - ret -ClearLeaderboards ENDP - -; --- LeaderboardUpdateGame: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -LeaderboardUpdateGame PROC uses eax ebx edx - mov ebx, rowIndex - mov eax, DWORD PTR [saveBuffer+104+ebx*4] - cmp eax, leaderBestGameWins[ebx*4] - jbe leaderboard_check_losses - mov leaderBestGameWins[ebx*4], eax - mov edx, ebx - shl edx, 6 - add edx, OFFSET leaderBestGameWinNames - invoke CopyName, edx, leaderAccountPtr -leaderboard_check_losses: - mov eax, DWORD PTR [saveBuffer+148+ebx*4] - cmp eax, leaderBestGameLosses[ebx*4] - jbe leaderboard_game_done - mov leaderBestGameLosses[ebx*4], eax - mov edx, ebx - shl edx, 6 - add edx, OFFSET leaderBestGameLossNames - invoke CopyName, edx, leaderAccountPtr -leaderboard_game_done: - ret -LeaderboardUpdateGame ENDP - -; --- LeaderboardReadAccount: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -LeaderboardReadAccount PROC uses eax - call BuildLeaderSavePath - invoke CreateFileA, OFFSET leaderSavePath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - jne leaderboard_file_opened - cmp appDataReady, 1 - jne leaderboard_read_done - invoke CreateFileA, leaderAccountPtr, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 - cmp eax, INVALID_HANDLE_VALUE - je leaderboard_read_done -leaderboard_file_opened: - mov saveHandle, eax - invoke ReadFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsRead, 0 - invoke CloseHandle, saveHandle - cmp charsRead, 32 - jb leaderboard_read_done - mov eax, DWORD PTR [saveBuffer] - cmp eax, SAVE_MAGIC - jne leaderboard_read_done - cmp charsRead, SAVE_FILE_SIZE - jb leaderboard_signature_ok - mov edx, DWORD PTR [saveBuffer+SAVE_SIGN_SIZE] - call CalcSaveSignature - cmp eax, edx - jne leaderboard_read_done -leaderboard_signature_ok: - inc leaderValidCount - mov eax, DWORD PTR [saveBuffer+4] - cmp eax, leaderBestBank - jbe leaderboard_check_total_wins - mov leaderBestBank, eax - invoke CopyName, OFFSET leaderBestBankName, leaderAccountPtr -leaderboard_check_total_wins: - mov eax, DWORD PTR [saveBuffer+12] - cmp eax, leaderBestWins - jbe leaderboard_check_total_losses - mov leaderBestWins, eax - invoke CopyName, OFFSET leaderBestWinsName, leaderAccountPtr -leaderboard_check_total_losses: - mov eax, DWORD PTR [saveBuffer+16] - cmp eax, leaderBestLosses - jbe leaderboard_check_games - mov leaderBestLosses, eax - invoke CopyName, OFFSET leaderBestLossName, leaderAccountPtr -leaderboard_check_games: - cmp charsRead, 236 - jb leaderboard_read_done - mov rowIndex, 0 -leaderboard_game_loop: - cmp rowIndex, 11 - jae leaderboard_read_done - call LeaderboardUpdateGame - inc rowIndex - jmp leaderboard_game_loop -leaderboard_read_done: - ret -LeaderboardReadAccount ENDP - -; --- BuildLeaderboards: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -BuildLeaderboards PROC uses eax - call ClearLeaderboards - call CollectAccounts - mov leaderScanIndex, 0 -leaderboard_account_loop: - mov eax, leaderScanIndex - cmp eax, accountCount - jae leaderboard_build_done - shl eax, 6 - add eax, OFFSET accountList - mov leaderAccountPtr, eax - call LeaderboardReadAccount - inc leaderScanIndex - jmp leaderboard_account_loop -leaderboard_build_done: - ret -BuildLeaderboards ENDP - -; --- PrintLeaderPair: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintLeaderPair PROC uses eax, pName:DWORD, value:DWORD - mov eax, value - cmp eax, 0 - jne print_leader_pair_value - invoke PrintStr, OFFSET leaderDashText - ret -print_leader_pair_value: - invoke PrintStr, pName - invoke PrintStr, OFFSET leaderOpenText - invoke PrintUInt, value - invoke PrintStr, OFFSET leaderCloseText - ret -PrintLeaderPair ENDP - -; --- PrintLeaderGameLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintLeaderGameLine PROC uses eax ebx edx - mov eax, rowIndex - invoke PrintStr, statsGameNames[eax*4] - invoke PrintStr, OFFSET leaderGameWinText - mov ebx, rowIndex - mov edx, ebx - shl edx, 6 - add edx, OFFSET leaderBestGameWinNames - invoke PrintLeaderPair, edx, leaderBestGameWins[ebx*4] - invoke PrintStr, OFFSET leaderGameLossText - mov ebx, rowIndex - mov edx, ebx - shl edx, 6 - add edx, OFFSET leaderBestGameLossNames - invoke PrintLeaderPair, edx, leaderBestGameLosses[ebx*4] - invoke PrintStr, OFFSET nl - ret -PrintLeaderGameLine ENDP - -; --- PrintLeaderboards: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintLeaderboards PROC - call BuildLeaderboards - invoke PrintTitleColor, OFFSET leaderTitle - cmp leaderValidCount, 0 - jne print_leaders_have_data - invoke PrintStr, OFFSET leaderNoDataText - ret -print_leaders_have_data: - invoke PrintStr, OFFSET leaderBankText - invoke PrintStr, OFFSET leaderBestBankName - invoke PrintStr, OFFSET leaderOpenText - invoke PrintStr, OFFSET leaderMoneyPrefix - invoke PrintUInt, leaderBestBank - invoke PrintStr, OFFSET leaderCloseText - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET leaderWinsText - invoke PrintLeaderPair, OFFSET leaderBestWinsName, leaderBestWins - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET leaderLossText - invoke PrintLeaderPair, OFFSET leaderBestLossName, leaderBestLosses - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET leaderGameTitle - mov rowIndex, 0 -leader_print_game_loop: - cmp rowIndex, 11 - jae leader_print_done - call PrintLeaderGameLine - inc rowIndex - jmp leader_print_game_loop -leader_print_done: - ret -PrintLeaderboards ENDP -; --- PrintGameStatLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintGameStatLine PROC uses eax ebx - mov eax, rowIndex - invoke PrintStr, statsGameNames[eax * 4] - invoke PrintStr, OFFSET statsLinePlayed - mov ebx, rowIndex - invoke PrintUInt, gameStatsPlayed[ebx * 4] - invoke PrintStr, OFFSET statsLineWins - mov ebx, rowIndex - invoke PrintUInt, gameStatsWon[ebx * 4] - invoke PrintStr, OFFSET statsLineLoss - mov ebx, rowIndex - invoke PrintUInt, gameStatsLost[ebx * 4] - invoke PrintStr, OFFSET statsLineDraw - mov ebx, rowIndex - invoke PrintUInt, gameStatsDraw[ebx * 4] - invoke PrintStr, OFFSET nl - ret -PrintGameStatLine ENDP - -; --- GameStatsByGame: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -GameStatsByGame PROC - call ClearView - invoke PrintTitleColor, OFFSET statsByGameTitle - invoke PrintStr, OFFSET leaderCurrentTitle - mov rowIndex, 0 -stats_by_game_loop: - cmp rowIndex, 11 - jae stats_by_game_done - call PrintGameStatLine - inc rowIndex - jmp stats_by_game_loop -stats_by_game_done: - call PrintLeaderboards - call PauseConsole - ret -GameStatsByGame ENDP - -; --- SkillCheckFlushKeys: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckFlushKeys PROC - invoke GetAsyncKeyState, VK_SPACE - invoke GetAsyncKeyState, VK_RETURN - invoke Sleep, 80 - invoke GetAsyncKeyState, VK_SPACE - invoke GetAsyncKeyState, VK_RETURN - ret -SkillCheckFlushKeys ENDP - -; --- SkillCheckPollKey: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckPollKey PROC - invoke GetAsyncKeyState, VK_SPACE - test ax, 0001h - jne skill_key_pressed - invoke GetAsyncKeyState, VK_RETURN - test ax, 0001h - jne skill_key_pressed - xor eax, eax - ret -skill_key_pressed: - mov eax, 1 - ret -SkillCheckPollKey ENDP - -; --- SkillCheckDraw: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckDraw PROC uses eax ebx edx - call ClearView - invoke PrintTitleColor, OFFSET skillTitle - invoke PrintStr, OFFSET skillIntro - - invoke PrintStr, OFFSET skillStateText - mov eax, skillMisses - cmp eax, 0 - je skill_draw_state_good - cmp eax, 1 - je skill_draw_state_warn - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET skillStateBad - call ResetColor - jmp skill_draw_state_done -skill_draw_state_good: - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillStateGood - call ResetColor - jmp skill_draw_state_done -skill_draw_state_warn: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET skillStateWarn - call ResetColor -skill_draw_state_done: - invoke PrintStr, OFFSET skillProgressText - invoke PrintUInt, skillHits - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET skillMissText - invoke PrintUInt, skillMisses - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET skillGaugeHint - invoke PrintStr, OFFSET skillGaugeLeft - - mov skillGaugeIndex, 0 -skill_draw_gauge_loop: - mov eax, skillGaugeIndex - cmp eax, 45 - jae skill_draw_gauge_done - cmp eax, skillNeedle - je skill_draw_needle - cmp eax, skillPerfectPos - je skill_draw_perfect - cmp eax, skillSuccessStart - jb skill_draw_empty - cmp eax, skillSuccessEnd - ja skill_draw_empty - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillGaugeSuccess - call ResetColor - jmp skill_draw_next -skill_draw_perfect: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET skillGaugePerfect - call ResetColor - jmp skill_draw_next -skill_draw_needle: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET skillGaugeNeedle - call ResetColor - jmp skill_draw_next -skill_draw_empty: - invoke PrintStr, OFFSET skillGaugeEmpty -skill_draw_next: - inc skillGaugeIndex - jmp skill_draw_gauge_loop -skill_draw_gauge_done: - invoke PrintStr, OFFSET skillGaugeRight - invoke PrintStr, OFFSET skillGaugeLeft - mov skillGaugeIndex, 0 -skill_draw_gauge_loop2: - mov eax, skillGaugeIndex - cmp eax, 45 - jae skill_draw_gauge_done2 - cmp eax, skillNeedle - je skill_draw_needle2 - cmp eax, skillPerfectPos - je skill_draw_perfect2 - cmp eax, skillSuccessStart - jb skill_draw_empty2 - cmp eax, skillSuccessEnd - ja skill_draw_empty2 - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillGaugeSuccess - call ResetColor - jmp skill_draw_next2 -skill_draw_perfect2: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET skillGaugePerfect - call ResetColor - jmp skill_draw_next2 -skill_draw_needle2: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET skillGaugeNeedle - call ResetColor - jmp skill_draw_next2 -skill_draw_empty2: - invoke PrintStr, OFFSET skillGaugeEmpty -skill_draw_next2: - inc skillGaugeIndex - jmp skill_draw_gauge_loop2 -skill_draw_gauge_done2: - invoke PrintStr, OFFSET skillGaugeRight - - invoke PrintStr, OFFSET skillGaugeLeft - mov skillGaugeIndex, 0 -skill_draw_gauge_loop3: - mov eax, skillGaugeIndex - cmp eax, 45 - jae skill_draw_gauge_done3 - cmp eax, skillNeedle - je skill_draw_needle3 - cmp eax, skillPerfectPos - je skill_draw_perfect3 - cmp eax, skillSuccessStart - jb skill_draw_empty3 - cmp eax, skillSuccessEnd - ja skill_draw_empty3 - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillGaugeSuccess - call ResetColor - jmp skill_draw_next3 -skill_draw_perfect3: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET skillGaugePerfect - call ResetColor - jmp skill_draw_next3 -skill_draw_needle3: - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET skillGaugeNeedle - call ResetColor - jmp skill_draw_next3 -skill_draw_empty3: - invoke PrintStr, OFFSET skillGaugeEmpty -skill_draw_next3: - inc skillGaugeIndex - jmp skill_draw_gauge_loop3 -skill_draw_gauge_done3: - invoke PrintStr, OFFSET skillGaugeRight - ret -SkillCheckDraw ENDP - -; --- SkillCheckMoveNeedle: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckMoveNeedle PROC uses eax - mov eax, skillDir - cmp eax, 0FFFFFFFFh - je skill_move_left -skill_move_right: - mov eax, skillNeedle - inc eax - cmp eax, 44 - jbe skill_move_store_right - mov eax, 43 - mov skillDir, 0FFFFFFFFh -skill_move_store_right: - mov skillNeedle, eax - ret -skill_move_left: - mov eax, skillNeedle - cmp eax, 0 - ja skill_move_dec - mov eax, 1 - mov skillDir, 1 - mov skillNeedle, eax - ret -skill_move_dec: - dec eax - mov skillNeedle, eax - ret -SkillCheckMoveNeedle ENDP - -; --- SkillCheckEvaluate: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckEvaluate PROC uses eax - mov eax, skillNeedle - cmp eax, skillPerfectPos - je skill_eval_perfect - cmp eax, skillSuccessStart - jb skill_eval_fail - cmp eax, skillSuccessEnd - ja skill_eval_fail - mov skillResult, 1 - ret -skill_eval_perfect: - mov skillResult, 2 - ret -skill_eval_fail: - mov skillResult, 0 - ret -SkillCheckEvaluate ENDP - -; --- SkillCheckRound: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -SkillCheckRound PROC uses eax ebx - invoke RandomRange, 27 - add eax, 8 - mov skillSuccessStart, eax - mov ebx, eax - add ebx, 7 - mov skillSuccessEnd, ebx - invoke RandomRange, 6 - add eax, skillSuccessStart - inc eax - mov skillPerfectPos, eax - invoke RandomRange, 45 - mov skillNeedle, eax - invoke RandomRange, 2 - cmp eax, 0 - je skill_round_left - mov skillDir, 1 - jmp skill_round_begin -skill_round_left: - mov skillDir, 0FFFFFFFFh -skill_round_begin: - mov skillFrameCount, 0 - mov skillResult, 0 - mov eax, skillHits - mov ebx, eax - shl ebx, 2 - add eax, ebx - mov ebx, 45 - sub ebx, eax - mov eax, stressLevel - shl eax, 2 - sub ebx, eax - cmp ebx, 18 - jae skill_delay_ready - mov ebx, 18 -skill_delay_ready: - mov skillDelay, ebx - call SkillCheckFlushKeys -skill_round_loop: - call SkillCheckDraw - mov eax, skillDelay - invoke Sleep, eax - call SkillCheckPollKey - cmp eax, 1 - je skill_round_pressed - call SkillCheckMoveNeedle - inc skillFrameCount - cmp skillFrameCount, 120 - jb skill_round_loop - mov skillResult, 0 - ret -skill_round_pressed: - call SkillCheckEvaluate - ret -SkillCheckRound ENDP - -; --- GameSkillCheck: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- -GameSkillCheck PROC - cmp tournamentStage, 0 - jne tourney_sc - call StartCasino3D - ret -tourney_sc: - call TournamentPlayStage - ret -GameSkillCheck ENDP -; --- GameAchievements: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- -GameAchievements PROC - call ClearView - invoke PrintTitleColor, OFFSET achMenuTitle - invoke PrintAchievementLine, 1, OFFSET achFirstWinName - invoke PrintAchievementLine, 2, OFFSET achFirstLossName - invoke PrintAchievementLine, 4, OFFSET achJackpotName - invoke PrintAchievementLine, 8, OFFSET achHighRollerName - invoke PrintAchievementLine, 10h, OFFSET achShopperName - invoke PrintAchievementLine, 20h, OFFSET achCharmName - invoke PrintAchievementLine, 40h, OFFSET achGoalName - invoke PrintAchievementLine, 80h, OFFSET achCloverPitName - invoke PrintAchievementLine, 100h, OFFSET achClassicSlotName - invoke PrintAchievementLine, 200h, OFFSET achPokerRaiseName - invoke PrintAchievementLine, 400h, OFFSET achPokerBluffName - invoke PrintAchievementLine, 800h, OFFSET achRouletteWinName - invoke PrintAchievementLine, 1000h, OFFSET achRussianWinName - invoke PrintAchievementLine, 2000h, OFFSET achDurakWinName - invoke PrintAchievementLine, 4000h, OFFSET achBackCollectorName - invoke PrintAchievementLine, 8000h, OFFSET achCharmBuyerName - invoke PrintAchievementLine, 10000h, OFFSET achObserverName - invoke PrintAchievementLine, 20000h, OFFSET achSkillCheckName - call PauseConsole - ret -GameAchievements ENDP -; --- GameTraining: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -GameTraining PROC - call ClearView - invoke PrintTitleColor, OFFSET trainingTitle - invoke PrintStr, OFFSET trainingText - call PauseConsole - ret -GameTraining ENDP -; --- ShowTournamentStage: òóðíèð-áàøíÿ è ïîáåäíàÿ àíèìàöèÿ ôèíàëà --- -ShowTournamentStage PROC - call ClearView - invoke PrintTitleColor, OFFSET tournamentTitle - invoke PrintStr, OFFSET tournamentStageText - invoke PrintUInt, tournamentStage - invoke PrintStr, OFFSET nl - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET hellStageCurseText - invoke RandomRange, 4 - cmp eax, 0 - je hell_stage_curse1 - cmp eax, 1 - je hell_stage_curse2 - cmp eax, 2 - je hell_stage_curse3 - invoke PrintStr, OFFSET hellCurse4 - jmp hell_stage_curse_done -hell_stage_curse1: - invoke PrintStr, OFFSET hellCurse1 - jmp hell_stage_curse_done -hell_stage_curse2: - invoke PrintStr, OFFSET hellCurse2 - jmp hell_stage_curse_done -hell_stage_curse3: - invoke PrintStr, OFFSET hellCurse3 -hell_stage_curse_done: - call ResetColor - invoke PrintStr, OFFSET tournamentMusicHint - call ReadKey - cmp al, 'm' - je tower_stage_change_music - cmp al, 'M' - jne tower_stage_done -tower_stage_change_music: - call PlayTowerRandomMusic -tower_stage_done: - ret -ShowTournamentStage ENDP - -; --- AnimateTournamentVictory: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- -AnimateTournamentVictory PROC - call PlayVictorySound - call ClearView - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET tournamentFire1 - call ResetColor - invoke Sleep, 360 - call ClearView - invoke SetColor, COLOR_TITLE - invoke PrintStr, OFFSET tournamentFire2 - call ResetColor - invoke Sleep, 360 - call ClearView - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET tournamentFire3 - call ResetColor - invoke Sleep, 420 - call ClearView - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET tournamentFire4 - call ResetColor - invoke Sleep, 520 - ret -AnimateTournamentVictory ENDP - -; --- GameTournament: òóðíèð-áàøíÿ è ïîáåäíàÿ àíèìàöèÿ ôèíàëà --- -GameTournament PROC - mov tournamentMode, 1 - call ClearView - invoke PrintTitleColor, OFFSET tournamentTitle - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET secretHellText - call ResetColor - invoke PrintStr, OFFSET tournamentIntro - call PauseConsole - call PlayTowerRandomMusic ; tower start - - mov tournamentStage, 1 - call ShowTournamentStage - mov currentGameId, 6 - mov lastGameResult, 0 - call GameCoin - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 2 - call ShowTournamentStage - mov currentGameId, 7 - mov lastGameResult, 0 - call GameDice - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 3 - call ShowTournamentStage - mov currentGameId, 5 - mov lastGameResult, 0 - call GameSkulls - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 4 - call ShowTournamentStage - mov currentGameId, 1 - mov lastGameResult, 0 - call Game21 - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 5 - call ShowTournamentStage - mov currentGameId, 2 - mov lastGameResult, 0 - call GamePoker - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 6 - call ShowTournamentStage - mov currentGameId, 4 - mov lastGameResult, 0 - call GameRoulette - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 7 - call ShowTournamentStage - mov currentGameId, 8 - mov lastGameResult, 0 - call GameCasinoRoulette - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 8 - call ShowTournamentStage - mov currentGameId, 10 - mov lastGameResult, 0 - call GameDurak - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 9 - call ShowTournamentStage - mov currentGameId, 11 - mov lastGameResult, 0 - call GameSkillCheck - cmp lastGameResult, 2 - je tournament_failed - - mov tournamentStage, 10 - call ShowTournamentStage - mov currentGameId, 0 - mov lastGameResult, 0 - call GameBuckshot - cmp lastGameResult, 2 - je tournament_failed - - call StopTowerMusic ; before tower victory - call AnimateTournamentVictory - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET tournamentWinText - call ResetColor - mov currentBet, 66600 - call PayWin - call SaveGame - mov tournamentMode, 0 - call PauseConsole - ret - -tournament_failed: - call StopTowerMusic ; tower failed - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET tournamentFailText - call ResetColor - mov tournamentMode, 0 - call PauseConsole - ret -GameTournament ENDP - - -; --- GameUmamusume: Umamusume Pretty Derby Minigame --- -GameUmamusume PROC uses ebx esi edi - invoke PrintStr, OFFSET umaTitleText - call PromptBet - cmp eax, 0 - jle uma_exit - -uma_select_horse: - invoke PrintStr, OFFSET umaMenuText - invoke PrintStr, OFFSET umaChoiceText - call ReadBetInput - cmp eax, 1 - jl uma_invalid - cmp eax, 5 - jg uma_invalid - mov umaChoice, eax - jmp uma_start_race - -uma_invalid: - invoke PrintStr, OFFSET badChoiceText - jmp uma_select_horse - -uma_start_race: - xor eax, eax - mov umaPos[0], eax - mov umaPos[4], eax - mov umaPos[8], eax - mov umaPos[12], eax - mov umaPos[16], eax - mov umaWinner, 0 - -uma_race_loop: - invoke PrintStr, OFFSET clearLines - invoke PrintStr, OFFSET umaTrackHeader - - ; Horse 1: Special Week (1-3) - invoke RandomRange, 3 - inc eax - add umaPos[0], eax - - ; Horse 2: Silence Suzuka (1-4) - invoke RandomRange, 4 - inc eax - add umaPos[4], eax - - ; Horse 3: Tokai Teio (1-3, boost if pos > 18) - invoke RandomRange, 3 - inc eax - cmp umaPos[8], 18 - jbe uma_t3_no_boost - add eax, 2 -uma_t3_no_boost: - add umaPos[8], eax - - ; Horse 4: Gold Ship (0-6 wildcard) - invoke RandomRange, 7 - add umaPos[12], eax - - ; Horse 5: Mejiro McQueen (steady 2-4) - invoke RandomRange, 3 - add eax, 2 - add umaPos[16], eax - - ; Render track - mov ecx, 0 -uma_render_lane: - push ecx - mov eax, [umaHorseNames + ecx*4] - invoke PrintStr, eax - - mov ebx, [umaPos + ecx*4] - cmp ebx, 0 - jbe uma_render_head - mov edi, ebx -uma_print_step: - push edi - invoke PrintStr, OFFSET umaStepChar - pop edi - dec edi - jnz uma_print_step - -uma_render_head: - invoke PrintStr, OFFSET umaHeadChar - invoke PrintStr, OFFSET umaFinishText - - pop ecx - inc ecx - cmp ecx, 5 - jl uma_render_lane - - ; Check if finish reached (>= 35) - mov eax, 0 -uma_check_finish: - cmp dword ptr [umaPos + eax*4], 35 - jge uma_finish_reached - inc eax - cmp eax, 5 - jl uma_check_finish - - invoke Sleep, 180 - jmp uma_race_loop - -uma_finish_reached: - mov ebx, 0 - mov edi, 1 - mov ecx, 0 -uma_find_max: - mov edx, [umaPos + ecx*4] - cmp edx, ebx - jle uma_next_max - mov ebx, edx - lea edi, [ecx + 1] -uma_next_max: - inc ecx - cmp ecx, 5 - jl uma_find_max - - mov umaWinner, edi - invoke PrintStr, OFFSET umaWinAnnouncement - mov eax, edi - dec eax - mov eax, [umaHorseNames + eax*4] - invoke PrintStr, eax - invoke PrintStr, OFFSET nl - - mov eax, umaChoice - cmp eax, umaWinner - jne uma_race_lost - - invoke PrintStr, OFFSET umaYouWinText - mov ecx, umaChoice - dec ecx - mov eax, currentBet - mov edx, [umaMultipliers + ecx*4] - imul eax, edx - push eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - pop eax - call PayWin - call PrintWinEvent - jmp uma_race_done - -uma_race_lost: - invoke PrintStr, OFFSET umaYouLoseText - call PayLose - call PrintLoseEvent - -uma_race_done: - call PauseConsole -uma_exit: - ret -GameUmamusume ENDP - -; --- GamePlayerTerminal: Èãðîâîé òåðìèíàë (ñòàòèñòèêà, à÷èâêè, êâåñòû) --- -titleTerminal db "=== ÒÅÐÌÈÍÀË ÈÃÐÎÊÀ ===",13,10,0 -textTerminalMenu db "1. Äîñòèæåíèÿ",13,10,"2. Ñòàòèñòèêà ïî èãðàì",13,10,"3. Åæåäíåâíûå çàäàíèÿ",13,10,"4. Ãëàâíîå ìåíþ è ÷èòû",13,10,"0. Íàçàä â êàçèíî",13,10,0 - -GamePlayerTerminal PROC -terminal_loop: - call ClearView - invoke PrintTitleColor, OFFSET titleTerminal - invoke PrintStr, OFFSET textTerminalMenu - invoke PrintStr, OFFSET choiceText - call ReadKey - cmp al, '1' - je term_ach - cmp al, '2' - je term_stats - cmp al, '3' - je term_daily - cmp al, '4' - je term_classic_menu - cmp al, '0' - je term_exit - cmp al, 1Bh - je term_exit - jmp terminal_loop -term_ach: - call GameAchievements - jmp terminal_loop -term_stats: - call GameStatsByGame - jmp terminal_loop -term_daily: - call GameDailyTasks - jmp terminal_loop -term_classic_menu: - call MainMenu - jmp terminal_loop -term_exit: - ret -GamePlayerTerminal ENDP - include casino3d.inc - - -; --- AutoLoadAccountFast: àâòîçàãðóçêà ïðîôèëÿ áåç áëîêèðîâêè â CMD --- -AutoLoadAccountFast PROC - call ResetProfileDefaults - call CollectAccounts - cmp accountCount, 0 - jbe autoload_exit - mov selectedAccount, 1 - call CopySelectedAccountName - call LoadSave -autoload_exit: - ret -AutoLoadAccountFast ENDP - -; --- MainMenu: òî÷êà âõîäà, ãëàâíîå ìåíþ è ìàðøðóòèçàöèÿ ïî èãðàì --- - -MainMenu PROC -menu_loop: - call DailyCheckDate - call CheckSecretEnding - invoke PrintStr, OFFSET clearLines - invoke PrintTitleColor, OFFSET titleText - call PrintBank - call PrintGoal - call ShowStats - invoke PrintStr, OFFSET menuText - invoke PrintStr, OFFSET choiceText - call ReadBetInput - cmp eax, 0FFFFFFFFh - je menu_loop - cmp eax, 0FFFFFFFDh - je menu_loop - cmp eax, 1 - je run_shop - cmp eax, 2 - je run_21 - cmp eax, 3 - je run_poker - cmp eax, 4 - je run_slot - cmp eax, 5 - je run_skulls - cmp eax, 6 - je run_roulette - cmp eax, 7 - je run_coin - cmp eax, 8 - je run_dice - cmp eax, 9 - je run_casino_roulette - cmp eax, 10 - je run_classic_slot - cmp eax, 11 - je run_durak - cmp eax, 12 - je run_skill_check - cmp eax, 13 - je run_buckshot - cmp eax, 14 - je run_observer - cmp eax, 15 - je run_training - cmp eax, 16 - je run_achievements - cmp eax, 17 - je run_stats_by_game - cmp eax, 18 - je run_daily - cmp eax, 19 - je run_settings - cmp eax, 20 - je run_online_dice - cmp eax, 21 - je run_umamusume - cmp eax, 25 - - je run_casino_3d - - cmp eax, 666 - je run_hell_tower - cmp eax, 0 - je exit_menu - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp menu_loop -run_21: - mov currentGameId, 1 - call Game21 - jmp menu_loop -run_poker: - mov currentGameId, 2 - call GamePoker - jmp menu_loop -run_slot: - mov currentGameId, 3 - call PlaySlotIntroSound - call GameSlot - jmp menu_loop -run_skulls: - mov currentGameId, 5 - call GameSkulls - jmp menu_loop -run_coin: - mov currentGameId, 6 - call GameCoin - jmp menu_loop -run_dice: - mov currentGameId, 7 - call GameDice - jmp menu_loop -run_roulette: - mov currentGameId, 4 - call GameRoulette - jmp menu_loop -run_casino_roulette: - mov currentGameId, 8 - call GameCasinoRoulette - jmp menu_loop -run_classic_slot: - mov currentGameId, 9 - call PlaySlotIntroSound - call GameClassicSlot - jmp menu_loop -run_durak: - mov currentGameId, 10 - call GameDurak - jmp menu_loop -run_training: - mov currentGameId, 0 - call GameTraining - jmp menu_loop -run_observer: - mov currentGameId, 0 - call GameObserver - jmp menu_loop -run_shop: - mov currentGameId, 0 - call GameShop - jmp menu_loop -run_achievements: - mov currentGameId, 0 - call GameAchievements - jmp menu_loop -run_stats_by_game: - mov currentGameId, 0 - call GameStatsByGame - jmp menu_loop -run_daily: - mov currentGameId, 0 - call GameDailyTasks - jmp menu_loop -run_settings: - mov currentGameId, 0 - call GameSettings - jmp menu_loop -run_online_dice: - mov currentGameId, 0 - call GameOnlineCasino - jmp menu_loop -run_umamusume: - mov currentGameId, 0 - call GameUmamusume - jmp menu_loop -run_casino_3d: - - call StartCasino3D - - jmp menu_loop - -run_hell_tower: - mov currentGameId, 0 - call GameTournament - jmp menu_loop -run_skill_check: - mov tournamentMode, 0 - mov currentGameId, 11 - call GameSkillCheck - jmp menu_loop -run_buckshot: - mov currentGameId, 0 - call GameBuckshot - jmp menu_loop -exit_menu: - ret -MainMenu ENDP - -; --- main: òî÷êà âõîäà, ãëàâíîå ìåíþ è ìàðøðóòèçàöèÿ ïî èãðàì --- main PROC IFDEF CASINO_ACTION_TEST call RunCasinoActionsTest3D @@ -12597,4 +1955,3 @@ ENDIF main ENDP END main - diff --git a/poker.exe b/poker.exe index b5a8caf..dae3eeb 100644 Binary files a/poker.exe and b/poker.exe differ diff --git a/poker.obj b/poker.obj index 37d3a90..9ca8e92 100644 Binary files a/poker.obj and b/poker.obj differ diff --git a/runtime/casino3d-progress.dat b/runtime/casino3d-progress.dat index 8be1bee..fc648b2 100644 Binary files a/runtime/casino3d-progress.dat and b/runtime/casino3d-progress.dat differ diff --git a/src_graphics/buckshot.inc b/src_graphics/buckshot.inc index e6ccca1..bdae1db 100644 --- a/src_graphics/buckshot.inc +++ b/src_graphics/buckshot.inc @@ -514,6 +514,24 @@ bs_update_state: je bs_input_recovery cmp eax, BS_ERROR je bs_input_done + cmp tournamentMode, 1 + jne bs_regular_restart + invoke Pressed3D, 20h + test eax, eax + jnz bs_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz bs_tourney_report + ret +bs_tourney_report: + cmp bs3d_state, BS_WIN + jne bs_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +bs_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +bs_regular_restart: invoke Pressed3D, 20h test eax, eax jz bs_input_done diff --git a/src_graphics/hell_tower.inc b/src_graphics/hell_tower.inc new file mode 100644 index 0000000..5469eb7 --- /dev/null +++ b/src_graphics/hell_tower.inc @@ -0,0 +1,364 @@ +; --- hell_tower.inc: Implementation of Hell Tower (10-floor Boss Rush) --- +.code + +InitHellTower3D PROC + mov tournamentMode, 1 + mov towerStage, 1 + mov towerFloorState, TOWER_STATE_BRIEFING + mov towerAnimClock, 0 + call PlayTowerRandomMusic + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret +InitHellTower3D ENDP + +TowerExitToHall PROC + call StopTowerMusic + mov tournamentMode, 0 + mov engineMode, MODE_WALK + call ClearKeys3D + ret +TowerExitToHall ENDP + +TowerLaunchCurrentFloor PROC uses ebx esi edi + mov eax, towerStage + dec eax + cmp eax, 10 + jae @F + jmp launch_valid +@@: + xor eax, eax +launch_valid: + mov edx, towerFloorModes[eax*4] + mov towerCurrentGame, edx + mov towerFloorState, TOWER_STATE_IN_GAME + + ; Launch corresponding game + cmp edx, MODE_COIN + jne @F + call InitCoinGame + mov engineMode, MODE_COIN + jmp launch_done +@@: + cmp edx, MODE_DICE + jne @F + call InitDiceGame + mov engineMode, MODE_DICE + jmp launch_done +@@: + cmp edx, MODE_SKULLS + jne @F + call InitSkullsGame + mov engineMode, MODE_SKULLS + jmp launch_done +@@: + cmp edx, MODE_BLACKJACK + jne @F + call InitNativeBlackjack3D + mov engineMode, MODE_BLACKJACK + jmp launch_done +@@: + cmp edx, MODE_POKER + jne @F + call InitNativePoker3D + mov engineMode, MODE_POKER + jmp launch_done +@@: + cmp edx, MODE_RUSSIAN + jne @F + call InitRussianGame3D + mov engineMode, MODE_RUSSIAN + jmp launch_done +@@: + cmp edx, MODE_ROULETTE + jne @F + call InitNativeWheel3D + mov engineMode, MODE_ROULETTE + jmp launch_done +@@: + cmp edx, MODE_DURAK + jne @F + call InitNativeDurak3D + mov engineMode, MODE_DURAK + jmp launch_done +@@: + cmp edx, MODE_SKILL + jne @F + call InitSkillGame + mov engineMode, MODE_SKILL + jmp launch_done +@@: + cmp edx, MODE_BUCKSHOT + jne launch_done + call InitBuckshot3D + mov engineMode, MODE_BUCKSHOT + +launch_done: + call ClearKeys3D + ret +TowerLaunchCurrentFloor ENDP + +TowerReportRoundOutcome PROC uses eax outcome:DWORD + cmp tournamentMode, 1 + jne report_exit + mov eax, outcome + cmp eax, 1 + jne report_loss + + ; --- Victory --- + cmp towerStage, 10 + jae report_champion + + mov towerFloorState, TOWER_STATE_CLEAR + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_champion: + mov towerFloorState, TOWER_STATE_CHAMPION + mov eax, towerPrizeAmount + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + call SaveProgress3D + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_loss: + mov towerFloorState, TOWER_STATE_DEFEAT + call StopTowerMusic + invoke PlayCasinoSound3D, OFFSET soundRoundLose, 0, 1 + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_exit: + ret +TowerReportRoundOutcome ENDP + +HandleHellTowerInput PROC + mov eax, towerFloorState + cmp eax, TOWER_STATE_BRIEFING + je input_briefing + cmp eax, TOWER_STATE_CLEAR + je input_clear + cmp eax, TOWER_STATE_DEFEAT + je input_defeat + cmp eax, TOWER_STATE_CHAMPION + je input_champion + ret + +input_briefing: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jz @F + call TowerExitToHall + ret +@@: + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz start_stage + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz start_stage + ret +start_stage: + call TowerLaunchCurrentFloor + ret + +input_clear: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jz @F + call TowerExitToHall + ret +@@: + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz advance_stage + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz advance_stage + ret +advance_stage: + inc towerStage + mov towerFloorState, TOWER_STATE_BRIEFING + call ClearKeys3D + ret + +input_defeat: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz exit_to_hall + ret + +input_champion: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz exit_to_hall + ret + +exit_to_hall: + call TowerExitToHall + ret +HandleHellTowerInput ENDP + +RenderHellTower3D PROC uses ebx esi edi + ; 1. Clear background with deep infernal maroon + lea edi, screenBuffer + mov ecx, SCREEN_SIZE + mov eax, 00100202h + rep stosd + + ; 2. Outer and inner border + invoke DrawBoxBorder, 8, 8, 304, 224, 00120202h, 00CC2222h, 2 + invoke DrawBoxBorder, 12, 12, 296, 216, 000C0202h, 00881111h, 1 + + ; 3. Header Banner (Centered: 192px wide, (320 - 192)/2 = 64) + invoke DrawBoxBorder, 18, 16, 284, 20, 00220404h, 00FF4444h, 1 + invoke DrawString8x8, 64, 22, OFFSET towerHeader, 00FFDD66h + + ; 4. Floor Header & Segment Progress Bar + invoke DrawString8x8, 26, 42, OFFSET towerFloorPrefix, 00FF6666h + invoke FormatNumber, towerStage, OFFSET hudNumBuffer + invoke DrawString8x8, 66, 42, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 74, 42, OFFSET towerOfTen, 00AAAAAAh + + ; Draw 10 stage pips across x = 26 .. 293 + xor esi, esi +draw_pips_loop: + mov eax, esi + imul eax, 27 + add eax, 26 ; x position + mov ebx, eax + + ; Color based on state + mov ecx, towerStage + dec ecx + cmp esi, ecx + jae pip_future + ; Past stage (Cleared): Bright Gold + invoke DrawBoxBorder, ebx, 54, 24, 6, 00DDBB22h, 00FFEE44h, 1 + jmp pip_next +pip_future: + je pip_current + ; Future stage: Dark + invoke DrawBoxBorder, ebx, 54, 24, 6, 002A0808h, 00441111h, 1 + jmp pip_next +pip_current: + ; Current stage: Pulsing Fire Red/Orange + invoke DrawBoxBorder, ebx, 54, 24, 6, 00EE3311h, 00FFAA33h, 1 +pip_next: + inc esi + cmp esi, 10 + jb draw_pips_loop + + ; 5. Specific State Panels + mov eax, towerFloorState + cmp eax, TOWER_STATE_BRIEFING + je render_briefing + cmp eax, TOWER_STATE_CLEAR + je render_clear + cmp eax, TOWER_STATE_DEFEAT + je render_defeat + cmp eax, TOWER_STATE_CHAMPION + je render_champion + ret + +render_briefing: + ; Boss & Game Card + invoke DrawBoxBorder, 20, 66, 280, 58, 001E0404h, 00AA2222h, 1 + invoke DrawString8x8, 28, 72, OFFSET towerEnemyLabel, 00FFAA55h + + mov eax, towerStage + dec eax + mov edx, towerBossNames[eax*4] + invoke DrawString8x8, 76, 72, edx, 00FFFFFFh + + invoke DrawString8x8, 28, 86, OFFSET towerGameLabel, 00FFAA55h + mov eax, towerStage + dec eax + mov edx, towerGameNames[eax*4] + invoke DrawString8x8, 76, 86, edx, 00FFDD66h + + mov eax, towerStage + dec eax + mov edx, towerDescriptions[eax*4] + invoke DrawString8x8, 28, 104, edx, 00CCCCCCh + + ; Rules & Warning (fits cleanly inside 300px boundary) + invoke DrawString8x8, 24, 132, OFFSET towerRuleText, 00FFAA33h + invoke DrawString8x8, 24, 146, OFFSET towerLossWarning, 00EE4444h + + ; Bankroll Display + invoke DrawString8x8, 24, 164, OFFSET textBank3D, 00AAAAAAh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 76, 164, OFFSET hudNumBuffer, 0066FF66h + + ; Action Buttons (Centered text inside buttons) + invoke DrawBoxBorder, 22, 184, 132, 24, 003D0C0Ch, 00FF4444h, 1 + invoke DrawString8x8, 32, 192, OFFSET towerStartBtn, 00FFFFFFh + + invoke DrawBoxBorder, 164, 184, 132, 24, 00220606h, 00882222h, 1 + invoke DrawString8x8, 178, 192, OFFSET towerEscBtn, 00AAAAAAh + ret + +render_clear: + invoke DrawBoxBorder, 20, 76, 280, 74, 00082208h, 0033CC33h, 2 + invoke DrawString8x8, 48, 90, OFFSET towerClearTitle, 0066FF66h + invoke DrawString8x8, 24, 112, OFFSET towerClearDesc, 00FFFFFFh + + invoke DrawBoxBorder, 50, 174, 220, 26, 00114411h, 0044FF44h, 1 + invoke DrawString8x8, 100, 183, OFFSET towerNextBtn, 00FFFFFFh + ret + +render_defeat: + invoke DrawBoxBorder, 20, 76, 280, 74, 002A0404h, 00FF2222h, 2 + invoke DrawString8x8, 60, 90, OFFSET towerDefeatTitle, 00FF4444h + invoke DrawString8x8, 36, 112, OFFSET towerDefeatDesc, 00FFFFFFh + + invoke DrawBoxBorder, 32, 174, 256, 26, 00441010h, 00FF4444h, 1 + invoke DrawString8x8, 48, 183, OFFSET towerReturnBtn, 00FFFFFFh + ret + +render_champion: + invoke DrawBoxBorder, 18, 70, 284, 86, 00332200h, 00FFD700h, 2 + invoke DrawString8x8, 40, 82, OFFSET towerChampTitle, 00FFE066h + invoke DrawString8x8, 56, 100, OFFSET towerChampSubtitle, 00FFFFFFh + invoke DrawString8x8, 36, 122, OFFSET towerPrizeText, 0066FF66h + + invoke DrawBoxBorder, 32, 174, 256, 26, 00443300h, 00FFCC00h, 1 + invoke DrawString8x8, 48, 183, OFFSET towerReturnBtn, 00FFFFFFh + ret +RenderHellTower3D ENDP + +RenderTowerInGameBadge PROC + cmp tournamentMode, 1 + jne badge_done + cmp engineMode, MODE_HELL_TOWER + je badge_done + cmp engineMode, MODE_WALK + je badge_done + + invoke DrawBoxBorder, 4, 4, 96, 16, 00220404h, 00FF3333h, 1 + invoke DrawString8x8, 8, 8, OFFSET towerHudBadge, 00FFAA55h + invoke FormatNumber, towerStage, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 8, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 72, 8, OFFSET towerHudOfTen, 00AAAAAAh + +badge_done: + ret +RenderTowerInGameBadge ENDP diff --git a/src_graphics/hell_tower_data.inc b/src_graphics/hell_tower_data.inc new file mode 100644 index 0000000..f68a48f --- /dev/null +++ b/src_graphics/hell_tower_data.inc @@ -0,0 +1,82 @@ +; --- hell_tower_data.inc: Data for Hell Tower 3D --- +MODE_HELL_TOWER equ 22 +TOWER_STATE_BRIEFING equ 0 +TOWER_STATE_IN_GAME equ 1 +TOWER_STATE_CLEAR equ 2 +TOWER_STATE_DEFEAT equ 3 +TOWER_STATE_CHAMPION equ 4 + +InitHellTower3D PROTO +TowerExitToHall PROTO +TowerReportRoundOutcome PROTO :DWORD +RenderTowerInGameBadge PROTO + +.data +towerStage dd 1 +towerFloorState dd 0 +towerAnimClock dd 0 +towerCurrentGame dd 0 +towerPrizeAmount dd 66600 +towerHudText db 91,32,0 + +towerFloorModes dd MODE_COIN, MODE_DICE, MODE_SKULLS, MODE_BLACKJACK, MODE_POKER, MODE_RUSSIAN, MODE_ROULETTE, MODE_DURAK, MODE_SKILL, MODE_BUCKSHOT + +towerBoss1 db 193,197,209,32,192,199,192,208,210,192,0 +towerBoss2 db 196,197,204,206,205,32,202,206,209,210,197,201,0 +towerBoss3 db 215,197,208,205,206,202,205,200,198,205,200,202,0 +towerBoss4 db 202,208,211,207,220,197,32,207,208,197,200,209,207,206,196,205,197,201,0 +towerBoss5 db 196,197,204,206,205,32,193,203,197,212,192,0 +towerBoss6 db 206,193,208,197,215,197,205,205,219,201,32,195,208,197,216,205,200,202,0 +towerBoss7 db 202,206,203,197,209,206,32,209,211,196,220,193,219,0 +towerBoss8 db 202,192,208,210,206,215,205,219,201,32,215,197,208,210,0 +towerBoss9 db 207,192,203,192,215,32,202,208,222,202,192,0 +towerBoss10 db 194,203,192,196,219,202,192,32,193,192,216,205,200,0 + +towerBossNames dd OFFSET towerBoss1, OFFSET towerBoss2, OFFSET towerBoss3, OFFSET towerBoss4, OFFSET towerBoss5, OFFSET towerBoss6, OFFSET towerBoss7, OFFSET towerBoss8, OFFSET towerBoss9, OFFSET towerBoss10 + +towerGame1 db 206,240,229,235,32,232,32,240,229,248,234,224,0 +towerGame2 db 202,238,241,242,232,0 +towerGame3 db 215,229,240,229,239,224,32,232,32,248,224,240,232,234,0 +towerGame4 db 50,49,32,47,32,206,247,234,238,0 +towerGame5 db 207,238,234,229,240,0 +towerGame6 db 208,243,241,241,234,224,255,32,240,243,235,229,242,234,224,0 +towerGame7 db 202,224,231,232,237,238,45,240,243,235,229,242,234,224,0 +towerGame8 db 196,243,240,224,234,0 +towerGame9 db 202,240,254,234,58,32,83,107,105,108,108,32,67,104,101,99,107,0 +towerGame10 db 66,117,99,107,115,104,111,116,32,82,111,117,108,101,116,116,101,0 + +towerGameNames dd OFFSET towerGame1, OFFSET towerGame2, OFFSET towerGame3, OFFSET towerGame4, OFFSET towerGame5, OFFSET towerGame6, OFFSET towerGame7, OFFSET towerGame8, OFFSET towerGame9, OFFSET towerGame10 + +towerDesc1 db 211,227,224,228,224,233,32,241,242,238,240,238,237,243,32,236,238,237,229,242,251,46,0 +towerDesc2 db 207,229,240,229,225,240,238,241,252,32,228,229,236,238,237,224,32,226,32,241,243,236,236,229,32,234,238,241,242,229,233,46,0 +towerDesc3 db 205,224,233,228,232,32,228,243,248,243,32,239,238,228,32,247,229,240,229,239,238,236,46,0 +towerDesc4 db 209,238,225,229,240,232,32,50,49,32,238,247,234,238,32,232,32,239,238,225,229,228,232,32,234,240,243,239,252,229,46,0 +towerDesc5 db 194,241,234,240,238,233,32,234,224,240,242,251,32,232,32,239,238,225,229,228,232,32,226,32,239,238,234,229,240,46,0 +towerDesc6 db 49,32,239,224,242,240,238,237,32,226,32,225,224,240,224,225,224,237,229,58,32,226,251,230,232,226,232,46,0 +towerDesc7 db 209,228,229,235,224,233,32,241,242,224,226,234,243,32,237,224,32,240,243,235,229,242,234,229,46,0 +towerDesc8 db 206,241,242,224,226,252,32,247,184,240,242,224,32,226,32,228,243,240,224,234,224,245,46,0 +towerDesc9 db 207,238,239,224,228,232,32,226,32,231,238,237,243,32,232,32,241,238,240,226,232,241,252,32,241,32,234,240,254,234,224,46,0 +towerDesc10 db 196,243,253,235,252,32,237,224,32,228,240,238,225,238,226,232,234,224,245,32,231,224,32,230,232,231,237,252,33,0 + +towerDescriptions dd OFFSET towerDesc1, OFFSET towerDesc2, OFFSET towerDesc3, OFFSET towerDesc4, OFFSET towerDesc5, OFFSET towerDesc6, OFFSET towerDesc7, OFFSET towerDesc8, OFFSET towerDesc9, OFFSET towerDesc10 + +towerHeader db 202,192,199,200,205,206,32,51,68,32,45,32,192,196,209,202,192,223,32,193,192,216,205,223,0 +towerFloorPrefix db 221,210,192,198,32,0 +towerOfTen db 32,47,32,49,48,0 +towerEnemyLabel db 194,208,192,195,58,32,0 +towerGameLabel db 200,195,208,192,58,32,0 +towerRuleText db 49,48,32,225,232,242,226,32,239,238,228,240,255,228,32,225,229,231,32,239,240,224,226,224,32,237,224,32,238,248,232,225,234,243,0 +towerLossWarning db 207,238,240,224,230,229,237,232,229,32,45,32,226,238,231,226,240,224,242,32,226,32,245,238,235,235,32,234,224,231,232,237,238,0 +towerStartBtn db 91,207,208,206,193,197,203,93,32,194,32,193,206,201,0 +towerEscBtn db 91,69,83,67,93,32,209,193,197,198,192,210,220,0 +towerClearTitle db 221,210,192,198,32,199,192,215,200,217,197,205,33,32,194,208,192,195,32,207,206,194,197,208,198,197,205,33,0 +towerClearDesc db 194,240,224,227,32,239,238,226,229,240,230,229,237,33,32,194,239,229,240,229,228,232,32,237,238,226,251,233,32,253,242,224,230,46,0 +towerNextBtn db 91,207,208,206,193,197,203,93,32,196,192,203,220,216,197,0 +towerDefeatTitle db 194,219,32,207,192,203,200,32,194,32,192,196,209,202,206,201,32,193,192,216,205,197,46,46,46,0 +towerDefeatDesc db 194,224,248,224,32,228,243,248,224,32,237,224,226,229,234,232,32,241,227,238,240,229,235,224,32,226,32,192,228,243,46,0 +towerReturnBtn db 91,207,208,206,193,197,203,32,47,32,69,83,67,93,32,194,32,213,206,203,203,32,202,192,199,200,205,206,0 +towerChampTitle db 210,208,200,211,204,212,33,32,192,196,209,202,192,223,32,193,192,216,205,223,32,207,206,202,206,208,197,205,192,33,0 +towerChampSubtitle db 194,219,32,45,32,215,197,204,207,200,206,205,32,192,196,209,202,206,201,32,193,192,216,205,200,33,0 +towerPrizeText db 209,211,207,197,208,207,208,200,199,58,32,43,36,54,54,44,54,48,48,32,194,32,193,192,205,202,208,206,203,203,33,0 +towerHudBadge db 193,192,216,205,223,58,32,0 +towerHudOfTen db 47,49,48,0 diff --git a/src_graphics/native_blackjack.inc b/src_graphics/native_blackjack.inc index 4229edd..f91eac1 100644 --- a/src_graphics/native_blackjack.inc +++ b/src_graphics/native_blackjack.inc @@ -312,6 +312,26 @@ bj_ready_input: jbe @F sub cbBet3D, 100 @@: + cmp tournamentMode, 1 + jne bj_regular_start + cmp cbState3D, CB_RESULT + jne bj_regular_start + invoke Pressed3D, 20h + test eax, eax + jnz bj_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz bj_tourney_report + ret +bj_tourney_report: + cmp cbOutcome3D, 1 + je bj_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +bj_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +bj_regular_start: invoke Pressed3D, 20h test eax, eax jz bj_input_done diff --git a/src_graphics/native_coin.inc b/src_graphics/native_coin.inc index 9742dad..a9200d4 100644 --- a/src_graphics/native_coin.inc +++ b/src_graphics/native_coin.inc @@ -56,6 +56,11 @@ FreeNativeCoinArt3D ENDP CoinEscape3D PROC mov paused3D,0 + cmp tournamentMode, 1 + jne @F + call TowerExitToHall + ret +@@: cmp coin3d_state,COIN_TOSS jne coin_leave_hall mov coinExitQueued3D,1 @@ -149,6 +154,27 @@ coin_native_settle: coin_native_result: cmp coin3d_state,COIN_RESULT jne coin_native_mouse + cmp tournamentMode, 1 + jne coin_regular_result + invoke Pressed3D,20h + test eax,eax + jnz coin_tourney_report + invoke Pressed3D,0Dh + test eax,eax + jnz coin_tourney_report + cmp mouseClick3D,0 + je coin_native_done + mov mouseClick3D,0 +coin_tourney_report: + call CloseCoinDetail3D + cmp coin3d_win, 0 + je @F + invoke TowerReportRoundOutcome, 1 + ret +@@: + invoke TowerReportRoundOutcome, 2 + ret +coin_regular_result: invoke Pressed3D,20h test eax,eax jnz coin_native_again diff --git a/src_graphics/native_durak.inc b/src_graphics/native_durak.inc index 0030bfd..a87d135 100644 --- a/src_graphics/native_durak.inc +++ b/src_graphics/native_durak.inc @@ -870,6 +870,18 @@ dk_ready_input: test eax, eax jz dk_input_done dk_ready_start: + cmp tournamentMode, 1 + jne @F + cmp dkState3D, DK_RESULT + jne @F + cmp dkOutcome3D, 0 + jne dk_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +dk_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +@@: call StartNativeDurak3D dk_input_done: ret diff --git a/src_graphics/native_poker.inc b/src_graphics/native_poker.inc index 3e0d3cf..d3054a1 100644 --- a/src_graphics/native_poker.inc +++ b/src_graphics/native_poker.inc @@ -551,6 +551,26 @@ poker_ready_input: jbe @F sub pkBlind3D, 50 @@: + cmp tournamentMode, 1 + jne poker_regular_start + cmp pkState3D, PK_RESULT + jne poker_regular_start + invoke Pressed3D, 20h + test eax, eax + jnz poker_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz poker_tourney_report + ret +poker_tourney_report: + cmp pkOutcome3D, 1 + je poker_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +poker_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +poker_regular_start: invoke Pressed3D, 20h test eax, eax jz poker_input_done diff --git a/src_graphics/native_wheel.inc b/src_graphics/native_wheel.inc index 049fb47..0b07b90 100644 --- a/src_graphics/native_wheel.inc +++ b/src_graphics/native_wheel.inc @@ -304,6 +304,27 @@ wheel_mouse_clear: call InitNativeWheel3D ret wheel_spin_input: + cmp roulState, 2 + jne wheel_regular_spin + cmp tournamentMode, 1 + jne wheel_regular_spin + invoke Pressed3D, 20h + test eax, eax + jnz wheel_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz wheel_tourney_report + ret +wheel_tourney_report: + mov ecx, wheelReturn3D + cmp ecx, wheelStake3D + ja wheel_tourney_win + invoke TowerReportRoundOutcome, 2 + ret +wheel_tourney_win: + invoke TowerReportRoundOutcome, 1 + ret +wheel_regular_spin: invoke Pressed3D, 20h test eax, eax jz wheel_handle_done diff --git a/src_graphics/russian_roulette.inc b/src_graphics/russian_roulette.inc index 8935046..8f4c2cb 100644 --- a/src_graphics/russian_roulette.inc +++ b/src_graphics/russian_roulette.inc @@ -312,6 +312,24 @@ rr_input_fire: mov rr3d_timer, 0 ret rr_input_next: + cmp tournamentMode, 1 + jne @F + invoke Pressed3D, 20h + test eax, eax + jnz rr_tourney_report + invoke Pressed3D, 0Dh + test eax, eax + jnz rr_tourney_report + ret +rr_tourney_report: + cmp rr3d_state, RR_WIN + jne rr_tourney_loss + invoke TowerReportRoundOutcome, 1 + ret +rr_tourney_loss: + invoke TowerReportRoundOutcome, 2 + ret +@@: invoke Pressed3D, 20h test eax, eax jz rr_input_done diff --git a/tools/generators/generate_hell_tower_data.py b/tools/generators/generate_hell_tower_data.py new file mode 100644 index 0000000..1086eb0 --- /dev/null +++ b/tools/generators/generate_hell_tower_data.py @@ -0,0 +1,116 @@ +def make_db(s): + b = s.encode('cp1251') + return ','.join(str(x) for x in b) + ',0' + +bosses = [ + 'БЕС Ð�ЗÐ�РТÐ�', + 'ДЕМОÐ� КОСТЕЙ', + 'ЧЕРÐ�ОКÐ�ИЖÐ�ИК', + 'КРУПЬЕ ПРЕИСПОДÐ�ЕЙ', + 'ДЕМОÐ� БЛЕФÐ�', + 'ОБРЕЧЕÐ�Ð�ЫЙ ГРЕШÐ�ИК', + 'КОЛЕСО СУДЬБЫ', + 'КÐ�РТОЧÐ�ЫЙ ЧЕРТ', + 'ПÐ�ЛÐ�Ч КРЮКÐ�', + 'ВЛÐ�ДЫКÐ� БÐ�ШÐ�И' +] + +games = [ + 'Орел и решка', + 'КоÑ�ти', + 'Черепа и шарик', + '21 / Очко', + 'Покер', + 'РуÑ�Ñ�каÑ� рулетка', + 'Казино-рулетка', + 'Дурак', + 'Крюк: Skill Check', + 'Buckshot Roulette' +] + +descs = [ + 'Угадай Ñ�торону монеты.', + 'ПереброÑ�ÑŒ демона в Ñ�умме коÑ�тей.', + 'Ð�айди душу под черепом.', + 'Собери 21 очко и победи крупье.', + 'Ð’Ñ�крой карты и победи в покер.', + '1 патрон в барабане: выживи.', + 'Сделай Ñ�тавку на рулетке.', + 'ОÑ�тавь чёрта в дураках.', + 'Попади в зону и Ñ�орвиÑ�ÑŒ Ñ� крюка.', + 'ДуÑ�ль на дробовиках за жизнь!' +] + +lines = [] +lines.append('; --- hell_tower_data.inc: Data for Hell Tower 3D ---') +lines.append('MODE_HELL_TOWER equ 22') +lines.append('TOWER_STATE_BRIEFING equ 0') +lines.append('TOWER_STATE_IN_GAME equ 1') +lines.append('TOWER_STATE_CLEAR equ 2') +lines.append('TOWER_STATE_DEFEAT equ 3') +lines.append('TOWER_STATE_CHAMPION equ 4') +lines.append('') +lines.append('InitHellTower3D PROTO') +lines.append('TowerExitToHall PROTO') +lines.append('TowerReportRoundOutcome PROTO :DWORD') +lines.append('RenderTowerInGameBadge PROTO') +lines.append('') +lines.append('.data') +lines.append('towerStage dd 1') +lines.append('towerFloorState dd 0') +lines.append('towerAnimClock dd 0') +lines.append('towerCurrentGame dd 0') +lines.append('towerPrizeAmount dd 66600') +lines.append('towerHudText db 91,32,0') +lines.append('') +lines.append('towerFloorModes dd MODE_COIN, MODE_DICE, MODE_SKULLS, MODE_BLACKJACK, MODE_POKER, MODE_RUSSIAN, MODE_ROULETTE, MODE_DURAK, MODE_SKILL, MODE_BUCKSHOT') +lines.append('') + +for i, b in enumerate(bosses): + lines.append(f'towerBoss{i+1} db {make_db(b)}') +lines.append('') +lines.append('towerBossNames dd ' + ', '.join(f'OFFSET towerBoss{i+1}' for i in range(10))) +lines.append('') + +for i, g in enumerate(games): + lines.append(f'towerGame{i+1} db {make_db(g)}') +lines.append('') +lines.append('towerGameNames dd ' + ', '.join(f'OFFSET towerGame{i+1}' for i in range(10))) +lines.append('') + +for i, d in enumerate(descs): + lines.append(f'towerDesc{i+1} db {make_db(d)}') +lines.append('') +lines.append('towerDescriptions dd ' + ', '.join(f'OFFSET towerDesc{i+1}' for i in range(10))) +lines.append('') + +ui_texts = { + 'towerHeader': 'КÐ�ЗИÐ�О 3D - Ð�ДСКÐ�Я БÐ�ШÐ�Я', + 'towerFloorPrefix': 'ЭТÐ�Ж ', + 'towerOfTen': ' / 10', + 'towerEnemyLabel': 'ВРÐ�Г: ', + 'towerGameLabel': 'ИГРÐ�: ', + 'towerRuleText': '10 битв подрÑ�д без права на ошибку', + 'towerLossWarning': 'Поражение - возврат в холл казино', + 'towerStartBtn': '[ПРОБЕЛ] Ð’ БОЙ', + 'towerEscBtn': '[ESC] СБЕЖÐ�ТЬ', + 'towerClearTitle': 'ЭТÐ�Ж ЗÐ�ЧИЩЕÐ�! ВРÐ�Г ПОВЕРЖЕÐ�!', + 'towerClearDesc': 'Враг повержен! Впереди новый Ñ�таж.', + 'towerNextBtn': '[ПРОБЕЛ] ДÐ�ЛЬШЕ', + 'towerDefeatTitle': 'ВЫ ПÐ�ЛИ Ð’ Ð�ДСКОЙ БÐ�ШÐ�Е...', + 'towerDefeatDesc': 'Ваша душа навеки Ñ�горела в Ð�ду.', + 'towerReturnBtn': '[ПРОБЕЛ / ESC] Ð’ ХОЛЛ КÐ�ЗИÐ�О', + 'towerChampTitle': 'ТРИУМФ! Ð�ДСКÐ�Я БÐ�ШÐ�Я ПОКОРЕÐ�Ð�!', + 'towerChampSubtitle': 'ВЫ - ЧЕМПИОÐ� Ð�ДСКОЙ БÐ�ШÐ�И!', + 'towerPrizeText': 'СУПЕРПРИЗ: +$66,600 Ð’ БÐ�Ð�КРОЛЛ!', + 'towerHudBadge': 'БÐ�ШÐ�Я: ', + 'towerHudOfTen': '/10', +} + +for k, v in ui_texts.items(): + lines.append(f'{k} db {make_db(v)}') + +with open('src_graphics/hell_tower_data.inc', 'wb') as f: + f.write(('\n'.join(lines) + '\n').encode('ascii')) + +print('hell_tower_data.inc regenerated with compact strings.')