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

140 lines
6.4 KiB
PHP

MODE_NPC_DIALOG equ 20
IFDEF CASINO_ACTION_TEST
DeleteFileA PROTO :DWORD
ENDIF
INTERACT_NPC equ 40
NPC_LIFE_COUNT equ 6
NPC_IDENTITY_COUNT equ 12
NPC_DEST_COUNT equ 10
NPC_STAND equ 0
NPC_WALK equ 1
NPC_SIT equ 2
NPC_AWAY equ 3
NPC_PATH_CAP equ 1024
InitNpcLife3D PROTO
UpdateNpcLife3D PROTO
RenderNpcLife3D PROTO
CheckNpcInteractions3D PROTO
OpenNpcDialog3D PROTO
HandleNpcDialog3D PROTO
RenderNpcDialog3D PROTO
CloseNpcDialog3D PROTO
NpcPlanPath3D PROTO :DWORD,:DWORD
NpcTryCell3D PROTO :DWORD,:DWORD
NpcMove3D PROTO :DWORD,:DWORD
NpcCanStep3D PROTO :DWORD,:DWORD,:DWORD
NpcRecordRound3D PROTO :DWORD,:DWORD
NpcEnsureJournal3D PROTO
NpcSaveJournal3D PROTO
NpcAcceptContract3D PROTO :DWORD
NpcClaimContract3D PROTO :DWORD
NpcContractType3D PROTO :DWORD
NpcDate3D PROTO
NpcNameText3D PROTO :DWORD
NpcLife3D STRUCT
identity dd ?
state dd ?
remaining dd ?
destination dd ?
routeStep dd ?
pathCount dd ?
remainder dd ?
poseClock dd ?
NpcLife3D ENDS
.data
npcLife3D NpcLife3D NPC_LIFE_COUNT dup(<>)
npcLifeReady3D dd 0
npcLifeClock3D dd 0
npcSelected3D dd -1
npcDialogIdentity3D dd 0
npcDialogError3D dd 0
npcNameBuffer3D db 64 dup(0)
npcJournalIoError3D dd 0
npcDestX3D dd 16*FP_1+FP_HALF,16*FP_1+FP_HALF,10*FP_1+FP_HALF,6*FP_1+FP_HALF,13*FP_1+FP_HALF
dd 21*FP_1+FP_HALF,7*FP_1+FP_HALF,6*FP_1+FP_HALF,16*FP_1+FP_HALF,16*FP_1+FP_HALF
npcDestY3D dd 28*FP_1+FP_HALF,17*FP_1+FP_HALF,13*FP_1+FP_HALF,14*FP_1+FP_HALF,9*FP_1+FP_HALF
dd 10*FP_1+FP_HALF,25*FP_1+FP_HALF,27*FP_1+FP_HALF,10*FP_1+FP_HALF,7*FP_1+FP_HALF
npcVisitRoute3D dd 1,5,8,2,3,6,7,9,1,0
npcStartDest3D dd 1,2,3,6,8,7
npcSprite3D CityProp3D <0,0,FP_1*3/5,FP_1*6/5,0,OFFSET hallPatrons3D>
npcDrawOrder3D dd NPC_LIFE_COUNT dup(0)
npcDrawDepth3D dd NPC_LIFE_COUNT dup(0)
npcJournalLoaded3D dd 0
npcJournalPath3D db 260 dup(0)
npcJournalNextPath3D db 260 dup(0)
npcJournalSuffix3D db ".npc",0
IFDEF CASINO_ACTION_TEST
npcJournalBasePtr3D dd OFFSET npcJournalTestBase3D
npcJournalTestBase3D db "build\arrival\fixtures\npc-default.dat",0
ELSE
npcJournalBasePtr3D dd 0
ENDIF
npcDateOverride3D dd 0
npcSystemTime3D dw 8 dup(0)
; One bounded journal per profile; visitors 0..5 and 6..11 alternate at the entrance.
npcJournal3D LABEL DWORD
npcJournalMagic3D dd 3151504Eh
npcJournalDay3D dd 0
npcAccepted3D dd 0
npcClaimed3D dd 0
npcProgress3D dd NPC_IDENTITY_COUNT dup(0)
npcJournalChecksum3D dd 0
NPC_JOURNAL_SIZE equ $-npcJournal3D
npcJournalRead3D db NPC_JOURNAL_SIZE dup(0)
npcQuestGames3D dd -1,0,0,1,1,2,2,3,3,4,5,5
npcQuestWins3D dd 0,0,1,0,1,0,1,0,1,0,0,1
npcQuestGoals3D dd 3,3,1,2,1,2,1,3,1,3,1,1
npcQuestRewards3D dd 150,150,350,250,500,350,700,250,500,150,300,700
npcQuestTexts3D dd OFFSET npcQuest0,OFFSET npcQuest1,OFFSET npcQuest2,OFFSET npcQuest3
dd OFFSET npcQuest4,OFFSET npcQuest5,OFFSET npcQuest6,OFFSET npcQuest7
dd OFFSET npcQuest8,OFFSET npcQuest9,OFFSET npcQuest10,OFFSET npcQuest11
npcNames3D dd OFFSET npcName0,OFFSET npcName1,OFFSET npcName2,OFFSET npcName3,OFFSET npcName4,OFFSET npcName5
dd OFFSET npcName6,OFFSET npcName7,OFFSET npcName8,OFFSET npcName9,OFFSET npcName10,OFFSET npcName11
npcGreetings3D dd OFFSET npcGreeting0,OFFSET npcGreeting1,OFFSET npcGreeting2
dd OFFSET npcGreeting3,OFFSET npcGreeting4,OFFSET npcGreeting5
npcName6 db 196,236,232,242,240,232,233,32,209,229,240,238,226,0
npcName7 db 194,232,234,242,238,240,32,195,240,238,236,238,226,0
npcName8 db 195,240,232,227,238,240,232,233,32,203,232,241,0
npcName9 db 207,224,226,229,235,32,204,232,240,237,251,233,0
npcName10 db 192,237,242,238,237,32,193,238,227,224,242,251,233,0
npcName11 db 192,235,232,241,224,32,194,229,242,240,238,226,224,0
npcGreeting0 db 207,240,238,226,229,240,232,236,32,242,226,238,254,32,226,251,228,229,240,230,234,243,63,0
npcGreeting1 db 209,229,227,238,228,237,255,32,255,32,232,227,240,224,254,32,241,236,229,235,238,46,0
npcGreeting2 db 211,228,224,247,224,32,235,254,225,232,242,32,242,229,240,239,229,235,232,226,251,245,46,0
npcGreeting3 db 196,224,226,224,233,32,241,251,227,240,224,229,236,32,225,229,231,32,241,239,229,248,234,232,46,0
npcGreeting4 db 197,241,242,252,32,228,229,235,238,32,241,32,237,224,227,240,224,228,238,233,46,0
npcGreeting5 db 207,238,239,240,238,225,243,229,236,32,241,226,238,232,32,241,232,235,251,63,0
npcQuest0 db 199,224,226,229,240,248,232,32,235,254,225,251,229,32,51,32,240,224,243,237,228,224,0
npcQuest1 db 207,238,228,225,240,238,241,252,32,236,238,237,229,242,234,243,32,51,32,240,224,231,224,0
npcQuest2 db 194,251,232,227,240,224,233,32,226,32,236,238,237,229,242,234,243,0
npcQuest3 db 209,251,227,240,224,233,32,50,32,240,224,243,237,228,224,32,226,32,225,235,253,234,228,230,229,234,0
npcQuest4 db 194,251,232,227,240,224,233,32,226,32,225,235,253,234,228,230,229,234,0
npcQuest5 db 199,224,226,229,240,248,232,32,50,32,240,224,231,228,224,247,232,32,239,238,234,229,240,224,0
npcQuest6 db 194,251,232,227,240,224,233,32,240,224,231,228,224,247,243,32,239,238,234,229,240,224,0
npcQuest7 db 209,251,227,240,224,233,32,51,32,240,224,243,237,228,224,32,226,32,240,243,235,229,242,234,243,0
npcQuest8 db 194,251,232,227,240,224,233,32,226,32,240,243,235,229,242,234,243,0
npcQuest9 db 202,240,243,242,232,32,224,226,242,238,236,224,242,32,51,32,240,224,231,224,0
npcQuest10 db 199,224,226,229,240,248,232,32,239,224,240,242,232,254,32,226,32,228,243,240,224,234,224,0
npcQuest11 db 194,251,232,227,240,224,233,32,239,224,240,242,232,254,32,226,32,228,243,240,224,234,224,0
npcTalkPrompt3D db 91,69,93,32,207,206,195,206,194,206,208,200,210,220,0
npcContractTitle3D db 215,197,203,203,197,205,196,198,32,205,192,32,209,197,195,206,196,205,223,0
npcProgressText3D db 207,240,238,227,240,229,241,241,0
npcRewardText3D db 205,224,227,240,224,228,224,0
npcAcceptText3D db 194,199,223,210,220,0
npcClaimText3D db 205,192,195,208,192,196,192,0
npcCloseText3D db 199,192,202,208,219,210,220,0
npcAvailableText3D db 204,238,230,237,238,32,239,240,232,237,255,242,252,0
npcActiveText3D db 194,251,239,238,235,237,255,229,242,241,255,0
npcReadyText3D db 195,238,242,238,226,238,33,32,199,224,225,229,240,232,32,237,224,227,240,224,228,243,0
npcDoneText3D db 205,224,227,240,224,228,224,32,243,230,229,32,239,238,235,243,247,229,237,224,0
npcIoErrorText3D db 205,229,32,243,228,224,235,238,241,252,32,241,238,245,240,224,237,232,242,252,32,231,224,228,224,237,232,229,0
npcSlashText3D db " / ",0
.data?
npcPaths3D dd NPC_LIFE_COUNT*NPC_PATH_CAP dup(?)
npcParents3D dd NPC_PATH_CAP dup(?)
npcQueue3D dd NPC_PATH_CAP dup(?)
.data
npcSearchHead3D dd 0
npcSearchTail3D dd 0
npcSearchGoal3D dd 0
.code