Mercurial > mm7
view Events.cpp @ 406:0be4df624d62
m
author | Ritor1 |
---|---|
date | Sat, 23 Feb 2013 18:33:39 +0600 |
parents | edd2d8b7e3c4 |
children | 88c30918eef7 |
line wrap: on
line source
#include <stdlib.h> #include "MapInfo.h" #include "Game.h" #include "GUIWindow.h" #include "GUIFont.h" #include "GUIButton.h" #include "GUIProgressBar.h" #include "Chest.h" #include "stru176.h" #include "LOD.h" #include "NPC.h" #include "Actor.h" #include "Party.h" #include "Math.h" #include "AudioPlayer.h" #include "Indoor.h" #include "Viewport.h" #include "texts.h" #include "Texture.h" #include "Allocator.h" #include "mm7_data.h" #include "stru123.h" #include "stru159.h" #include "Events.h" #include "Events2D.h" #include "Weather.h" #include "Party.h" EventIndex pSomeOtherEVT_Events[4400]; unsigned int uSomeOtherEVT_NumEvents; char *pSomeOtherEVT; EventIndex pSomeEVT_Events[4400]; unsigned int uSomeEVT_NumEvents; char *pSomeEVT; unsigned int uGlobalEVT_NumEvents; unsigned int uGlobalEVT_Size; char pGlobalEVT[46080]; EventIndex pGlobalEVT_Index[4400]; unsigned int pLevelStrOffsets[500]; unsigned int uLevelStrNumStrings; unsigned int uLevelStrFileSize; unsigned int uLevelEVT_NumEvents; unsigned int uLevelEVT_Size; char pLevelStr[9216]; char pLevelEVT[9216]; EventIndex pLevelEVT_Index[4400]; _2devent p2DEvents[525]; // weak //----- (00443CE1) -------------------------------------------------------- unsigned int LoadEventsToBuffer(const char *pContainerName, char *pBuffer, unsigned int uBufferSize) { FILE *pLodFile; // eax@1 unsigned int uTextureSize; // esi@3 char Args[60]; // [sp+8h] [bp-B4h]@6 void *ptr; // [sp+B8h] [bp-4h]@1 Texture DstBuf; // [sp+6Ch] [bp-50h]@1 ptr = pEvents_LOD->LoadRaw(pContainerName, 0); pLodFile = pEvents_LOD->FindContainer(pContainerName, 0); if ( !pLodFile ) Abortf("Unable to load %s", pContainerName); fread(&DstBuf, 1, 48, pLodFile); uTextureSize = DstBuf.uDecompressedSize; if ( !DstBuf.uDecompressedSize ) uTextureSize = DstBuf.uTextureSize; memset(&DstBuf, 0, 72); if ( uTextureSize >= (signed int)uBufferSize ) { sprintf(Args, "File %s Size %lu - Buffer size %lu", pContainerName, uTextureSize, uBufferSize); Abortf(Args); } memcpy(pBuffer, ptr, uTextureSize); pAllocator->FreeChunk(ptr); return uTextureSize; } //----- (00443DA1) -------------------------------------------------------- void __cdecl Initialize_GlobalEVT() { struct raw_event_header { unsigned char evt_size; unsigned char evt_id_l; unsigned char evt_id_h; unsigned char evt_sequence_num; } ; uint events_count; unsigned int offset_in; raw_event_header *current_hdr; uGlobalEVT_NumEvents = 0; uGlobalEVT_Size = LoadEventsToBuffer("global.evt", pGlobalEVT, 46080); if ( !uGlobalEVT_Size ) return; memset(pGlobalEVT_Index, 0x80, sizeof(pGlobalEVT_Index));//52800 events_count = uGlobalEVT_NumEvents; current_hdr=(raw_event_header *)pGlobalEVT; offset_in=0; for (events_count = 0, offset_in = 0; offset_in < uGlobalEVT_Size; ++events_count) { pGlobalEVT_Index[events_count].uEventID=current_hdr->evt_id_l+(current_hdr->evt_id_h<<8); pGlobalEVT_Index[events_count].event_sequence_num=current_hdr->evt_sequence_num; pGlobalEVT_Index[events_count].uEventOffsetInEVT=offset_in; offset_in+=current_hdr->evt_size+1; current_hdr=(raw_event_header *)&pGlobalEVT[offset_in]; } uGlobalEVT_NumEvents = events_count; } //----- (00443EF8) -------------------------------------------------------- void LoadLevel_InitializeLevelEvt() { if (!uLevelEVT_Size) return; memset(array_5B5928_timers, 0, 3200); memset(pLevelEVT_Index, 80, sizeof(EventIndex)*4400); uLevelEVT_NumEvents = 0; dword_5B65C8_timers_count = 0; for (uint i = 0, j = 0; j < uLevelEVT_Size; ++i) { pLevelEVT_Index[i].uEventID = pLevelEVT[j + 1] + ((unsigned short)pLevelEVT[j + 2] << 8); pLevelEVT_Index[i].event_sequence_num = pLevelEVT[j + 3]; pLevelEVT_Index[i].uEventOffsetInEVT = j; j += pLevelEVT[j] + 1; uLevelEVT_NumEvents++; } } //----- (0044684A) -------------------------------------------------------- void EventProcessor(int uEventID, int a2, int a3) { unsigned int v3; // eax@5 signed int v4; // esi@7 //char *v5; // eax@8 Player *v6; // ecx@8 //char *v7; // ebp@8 //signed int v8; // edx@10 //int v9; // edi@12 //ByteArray *v10; // esi@12 int v11; // eax@14 char *v12; // eax@15 //char *v13; // edi@21 int v14; // ebp@21 int v15; // edi@21 const char *v16; // esi@21 bool v17; // edx@21 int v18; // ecx@22 int v19; // ebp@36 signed int v20; // ecx@40 int v21; // eax@40 int v22; // edx@40 int v23; // eax@40 unsigned __int16 v24; // ax@45 int v25; // eax@54 LevelDecoration *v26; // eax@55 int v27; // eax@57 int v28; // ecx@57 int v29; // edx@58 int v30; // eax@58 int v31; // ecx@58 int v32; // esi@58 NPCData *v33; // ecx@58 int v34; // esi@59 int v35; // esi@60 int v36; // esi@61 int v37; // esi@62 int v38; // eax@78 int v39; // ecx@78 size_t v40; // edx@78 Actor *v41; // esi@79 int v42; // eax@84 int v43; // ecx@84 size_t v44; // edx@84 Actor *v45; // esi@85 void *v46; // eax@91 GUIWindow *v47; // eax@93 GUIButton *v48; // ecx@93 GUIButton *v49; // esi@94 char v50; // al@100 Player *v51; // esi@103 Player *v52; // ecx@106 int v53; // ecx@107 char v54; // al@111 Player *v55; // esi@114 Player *v56; // ecx@117 int v57; // ecx@118 signed int v58; // ebp@124 Player *v59; // esi@125 int v60; // eax@126 int v61; // edx@133 int v62; // eax@139 void *v63; // ebp@145 signed int v64; // edi@146 unsigned int v65; // edx@148 Player *v66; // ecx@148 int v67; // esi@148 signed int v68; // eax@151 int v69; // esi@151 Player *v70; // ecx@158 unsigned int v71; // eax@159 int v72; // esi@159 signed int v73; // eax@162 int v74; // esi@162 int v75; // edx@172 Player *v76; // esi@173 signed int v77; // ebp@186 int v78; // edx@186 Player *v79; // esi@187 signed int v80; // ebp@200 int v81; // edx@200 Player *v82; // esi@201 int v83; // eax@212 int v84; // ebp@220 signed int v85; // ebp@224 char v86; // al@224 Player *v87; // esi@227 Player *v88; // ecx@231 int v89; // ecx@232 int v90; // eax@243 const char *v91; // ecx@247 int v92; // eax@251 char *v93; // eax@252 int v94; // ecx@262 int v95; // ebp@262 int v96; // edx@262 int v97; // eax@262 unsigned int v98; // edx@265 const char *v99; // esi@267 int v100; // edx@267 //char *v101; // edi@281 unsigned int v102; // esi@281 int v103; // edi@284 int v104; // eax@288 int v105; // edx@294 int v106; // [sp-20h] [bp-4C8h]@278 signed int v107; // [sp-1Ch] [bp-4C4h]@278 unsigned int v108; // [sp-18h] [bp-4C0h]@278 signed int v109; // [sp-14h] [bp-4BCh]@278 signed int v110; // [sp-10h] [bp-4B8h]@278 int v111; // [sp-Ch] [bp-4B4h]@278 // Event *v112; // [sp-8h] [bp-4B0h]@5 int v113; // [sp-8h] [bp-4B0h]@106 int v114; // [sp-8h] [bp-4B0h]@117 signed int v115; // [sp-8h] [bp-4B0h]@231 unsigned int v116; // [sp-8h] [bp-4B0h]@278 int v117; // [sp-4h] [bp-4ACh]@106 int v118; // [sp-4h] [bp-4ACh]@117 int v119; // [sp-4h] [bp-4ACh]@231 int v120; // [sp-4h] [bp-4ACh]@278 int v121; // [sp-4h] [bp-4ACh]@294 int curr_seq_num; // [sp+10h] [bp-498h]@4 //char *v123; // [sp+14h] [bp-494h]@0 signed int v124; // [sp+18h] [bp-490h]@7 signed int v125; // [sp+1Ch] [bp-48Ch]@155 int v126; // [sp+1Ch] [bp-48Ch]@262 int player_choose; // [sp+20h] [bp-488h]@4 int v128; // [sp+24h] [bp-484h]@21 int v129; // [sp+24h] [bp-484h]@262 signed int v130; // [sp+28h] [bp-480h]@0 //int v131; // [sp+2Ch] [bp-47Ch]@1 int v132; // [sp+30h] [bp-478h]@262 signed int v133; // [sp+34h] [bp-474h]@1 int v134; // [sp+38h] [bp-470h]@262 int v135; // [sp+3Ch] [bp-46Ch]@262 int v136; // [sp+40h] [bp-468h]@40 int v137; // [sp+44h] [bp-464h]@40 int v138; // [sp+48h] [bp-460h]@40 int v139; // [sp+4Ch] [bp-45Ch]@40 ItemGen item; // [sp+50h] [bp-458h]@15 char Source[120]; // [sp+74h] [bp-434h]@15 char Str[120]; // [sp+ECh] [bp-3BCh]@21 Actor Dst; // [sp+164h] [bp-344h]@53 //v131 = uEventID; v133 = 0; dword_5B5920 = a2; dword_5B65C4 = 0; if ( !a1 ) { if ( !GameUI_StatusBar_TimedStringTimeLeft ) ShowStatusBarString(pGlobalTXT_LocalizationStrings[521], 2u);// Nothing here return; } player_choose = (uActiveCharacter == 0)?6:4; //4 - active or 6 - random player if active =0 curr_seq_num = start_event_seq_number; if ( _5C3420_pDecoration ) { uSomeEVT_NumEvents = uGlobalEVT_NumEvents; pSomeEVT = pGlobalEVT; memcpy(pSomeEVT_Events, pGlobalEVT_Index, sizeof(EventIndex)*4400); //4400 evts } else { uSomeEVT_NumEvents = uLevelEVT_NumEvents; pSomeEVT = pLevelEVT; memcpy(pSomeEVT_Events, pLevelEVT_Index, sizeof(EventIndex)*4400); } v4 = 0; v124 = 0; //for (uint i = 0; i < uSomeEVT_NumEvents; ++i) // { //v6 = v123; //v7 = ""; while ( 1 ) { if ( dword_5B65C4 ) goto LABEL_301; //v8 = v4; if ( pSomeEVT_Events[v4].uEventID == uEventID && pSomeEVT_Events[v4].event_sequence_num == curr_seq_num ) { //v9 = pSomeEVT_Events[v8].uEventOffsetInEVT; //v10 = (ByteArray *)&v5[v9]; auto _evt = (_evt_raw *)(pSomeEVT + pSomeEVT_Events[v4].uEventOffsetInEVT); switch (_evt->_e_type) { case EVENT_CheckSeason: // if ( !sub_4465DF_check_season(_evt->v5) ) { ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } v124 = -1; curr_seq_num = _evt->v6 - 1; ++curr_seq_num; break; case EVENT_ShowMovie: { strcpy(Source, (char *)&_evt->v7); v12 = (char *)&item.uExpireTime + strlen(Source) + 7; if ( *v12 == 32 ) *v12 = 0; if ( pVideoPlayer->field_54 ) pVideoPlayer->Unload(); pVideoPlayer->bStopBeforeSchedule = 0; pVideoPlayer->pResetflag = 0; if (pAsyncMouse) pAsyncMouse->Suspend(); v128 = pCurrentScreen; //v13 = &pSomeEVT[v9]; //v14 = (unsigned __int8)v13[5]; //v15 = (unsigned __int8)v13[6]; v14 = _evt->v5; v15 = _evt->v6; strcpy(Str, Source); v16 = RemoveQuotes(Str); VideoPlayer::MovieLoop(v16, 0, v14, 1); if ( !_strcmpi(v16, "arbiter good") ) { pParty->alignment = PartyAlignment_Good; v18 = 0; LOBYTE(v17) = 1; SetUserInterface(PartyAlignment_Good, v17); if ( !v15 || v128 == 3 ) { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) pVideoPlayer->_4BF28F(pAnimatedRooms[uCurrentHouse_Animation].field_0, 1u); } if (pAsyncMouse) pAsyncMouse->Resume(); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } if ( !_strcmpi(v16, "arbiter evil") ) { v18 = 2; pParty->alignment = PartyAlignment_Evil; LOBYTE(v17) = 1; SetUserInterface(PartyAlignment_Evil, v17); if ( !v15 || v128 == 3 ) { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) pVideoPlayer->_4BF28F(pAnimatedRooms[uCurrentHouse_Animation].field_0, 1u); } if (pAsyncMouse) pAsyncMouse->Resume(); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } if ( !_strcmpi(v16, "pcout01") ) // moving to harmondale from emerald isle { Rest(0x2760u); pParty->RestAndHeal(); pParty->field_764 = 0; } if ( !v15 || v128 == 3 ) { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) pVideoPlayer->_4BF28F(pAnimatedRooms[uCurrentHouse_Animation].field_0, 1u); } if (pAsyncMouse) pAsyncMouse->Resume(); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; } break; case EVENT_CheckSkill: { v19 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((unsigned int)_evt->v10 << 8)) << 8)) << 8); if ( player_choose < 0 ) goto LABEL_47; if ( player_choose <= 3 ) { v24 = pParty->pPlayers[0].pActiveSkills[3486 * player_choose + _evt->v5]; } else { if ( player_choose == 4 ) { v24 = pPlayers[uActiveCharacter]->pActiveSkills[_evt->v5]; } else { if ( player_choose == 5 ) { v20 = 0; v21 = 3486 * v130 + _evt->v5; v136 = 1; LOWORD(v21) = pParty->pPlayers[0].pActiveSkills[v21]; v137 = v21 & 0x40; v138 = v21 & 0x80; v22 = v21 & 0x100; v23 = v21 & 0x3F; v139 = v22; while ( v23 < v19 || !*(&v136 + _evt->v6) ) { ++v20; if ( v20 >= 4 ) { ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } v11 = _evt->v11; goto LABEL_130; } LABEL_47: //v10 = (ByteArray *)&v5[v9]; v24 = pParty->pPlayers[0].pActiveSkills[_evt->v5 + 3486 * rand() % 4]; } } v136 = 1; v137 = v24 & 0x40; v138 = v24 & 0x80; v139 = v24 & 0x100; if ( (v24 & 0x3F) >= v19 && *(&v136 + _evt->v6) ) { v11 = _evt->v11; goto LABEL_130; } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; } break; case EVENT_SpeakNPC: if ( a3 ) { //Actor::Actor(&Dst); memset(&Dst, 0, 0x344u); dword_5B65D0_dialogue_actor_npc_id = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((unsigned int)_evt->v8 << 8)) << 8)) << 8); Dst.uNPC_ID = dword_5B65D0_dialogue_actor_npc_id; Dst.InitializeDialogue(0); } else { bDialogueUI_InitializeActor_NPC_ID = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((unsigned int)_evt->v8 << 8)) << 8)) << 8); } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ChangeEvent: v25 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((unsigned int)_evt->v8 << 8)) << 8)) << 8); if ( v25 ) { stru_5E4C90._decor_events[_5C3420_pDecoration->_idx_in_stru123 - 75] = _evt->v5 - 124; } else { v26 = _5C3420_pDecoration; stru_5E4C90._decor_events[_5C3420_pDecoration->_idx_in_stru123 - 75] = 0; LOBYTE(v26->field_2) |= 0x20u; } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetNPCGreeting: v27 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v28 = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); pNPCStats->pNewNPCData[v27].uFlags &= 0xFFFFFFFCu; pNPCStats->pNewNPCData[v27].greet = v28; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetNPCTopic: { v29 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v30 = _evt->v10 + ((_evt->v11 + ((_evt->v12 + ((uint)_evt->v13 << 8)) << 8)) << 8); v31 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v32 = _evt->v9; v33 = &pNPCStats->pNewNPCData[v31]; if ( v32 ) { v34 = v32 - 1; if ( v34 ) { v35 = v34 - 1; if ( v35 ) { v36 = v35 - 1; if ( v36 ) { v37 = v36 - 1; if ( v37 ) { if ( v37 == 1 ) v33->evt_F = v30; } else { v33->evt_E = v30; } } else { v33->evt_D = v30; } } else { v33->evt_C = v30; } } else { v33->evt_B = v30; } } else { v33->evt_A = v30; } if ( v29 == 8 ) { if ( v30 == 78 ) { sub_4BD8B5(); window_SpeakInHouse->Release(); pParty->uFlags &= 0xFFFFFFFDu; if ( EnterHouse((enum HOUSE_TYPE)170) ) { pAudioPlayer->StopChannels(-1, -1); window_SpeakInHouse = GUIWindow::Create(0, 0, 640, 480, WINDOW_HouseInterior, 170, 0); window_SpeakInHouse->CreateButton(0x3Du, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 1u, 0x31u, "", 0); window_SpeakInHouse->CreateButton(0xB1u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 2u, 0x32u, "", 0); window_SpeakInHouse->CreateButton(0x124u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 3u, 0x33u, "", 0); window_SpeakInHouse->CreateButton(0x197u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 4u, 0x34u, "", 0); window_SpeakInHouse->CreateButton(0, 0, 0, 0, 1, 0, 0xB0u, 0, 9u, "", 0); ptr_F8B1E8 = pNPCTopics[90].pText; } } } ++curr_seq_num; } v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_NPCSetItem: sub_448518_npc_set_item(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetActorItem: Actor::GiveItem(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetNPCGroupNews: pNPCStats->pGroups_copy[_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8)] = _evt->v9 + ((uint)_evt->v10 << 8); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetActorGroup: __debugbreak(); *(&pActors[0].uGroup + 0x11000000 * _evt->v8 + 209 * (_evt->v5 + ((_evt->v6 + ((uint)_evt->v7 << 8)) << 8))) = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ChangeGroup: v38 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v39 = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); v40 = uNumActors; __debugbreak(); if ( (signed int)uNumActors > 0 ) { v41 = pActors;//[0].uGroup; do { if ( v41->uGroup == v38 ) v41->uGroup = v39; ++v41; --v40; } while ( v40 ); } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ChangeGroupAlly: v42 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v43 = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); v44 = uNumActors; __debugbreak(); if ( (signed int)uNumActors > 0 ) { v45 = pActors;//[0].uAlly; do { if ( v45->uGroup == v42 ) v45->uAlly = v43; ++v45; --v44; } while ( v44 ); } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_MoveNPC: { pNPCStats->pNewNPCData[_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8)].Location2D = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); if ( window_SpeakInHouse ) { v46 = window_SpeakInHouse->ptr_1C; if ( v46 == (void *)165 ) { sub_4BD8B5(); pVideoPlayer->Unload(); window_SpeakInHouse->Release(); pParty->uFlags &= 0xFFFFFFFDu; _5C3420_pDecoration = (LevelDecoration *)1; if ( EnterHouse((enum HOUSE_TYPE)165) ) { pAudioPlayer->PlaySound((SoundID)0, 0, 0, -1, 0, 0, 0, 0); v47 = GUIWindow::Create(0, 0, 640, 480, WINDOW_HouseInterior, 165, 0); window_SpeakInHouse = v47; v48 = v47->pControlsHead; if ( v48 ) { do { v49 = v48->pNext; pAllocator->FreeChunk(v48); v48 = v49; } while ( v49 ); v47 = window_SpeakInHouse; } v47->pControlsHead = 0; window_SpeakInHouse->pControlsTail = 0; window_SpeakInHouse->uNumControls = 0; } } else { if ( v46 == (void *)553 ) pVideoPlayer->bLoopPlaying = 0; } } ++curr_seq_num; } v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_Jmp: curr_seq_num = _evt->v5 - 1; ++curr_seq_num; //v4 = -1; //v6 = v123; //v7 = ""; break; case EVENT_ShowFace: if ( _evt->v5 <= 3u ) //someone pParty->pPlayers[_evt->v5].PlayEmotion((CHARACTER_EXPRESSION_ID)_evt->v6, 0); else if ( _evt->v5 == 4 ) //active pParty->pPlayers[uActiveCharacter].PlayEmotion((CHARACTER_EXPRESSION_ID)_evt->v6, 0); else if ( _evt->v5 == 5 ) //all players { for(int i=0; i<4; ++i) pParty->pPlayers[i].PlayEmotion((CHARACTER_EXPRESSION_ID)_evt->v6, 0); } else //random player pParty->pPlayers[rand() % 4].PlayEmotion((CHARACTER_EXPRESSION_ID)_evt->v6, 0); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_CharacterAnimation: if ( _evt->v5 <= 3u ) //someone pParty->pPlayers[_evt->v5].PlaySound((PlayerSpeech) _evt->v6, 0); else if ( _evt->v5 == 4 ) //active pParty->pPlayers[uActiveCharacter].PlaySound((PlayerSpeech) _evt->v6, 0); else if ( _evt->v5 == 5 ) //all for(int i=0; i<4; ++i) pParty->pPlayers[i].PlaySound((PlayerSpeech) _evt->v6, 0); else //random pParty->pPlayers[rand() % 4].PlaySound((PlayerSpeech) _evt->v6, 0); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ForPartyMember: player_choose = _evt->v5; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SummonItem: sub_42F7EB_DropItemAt(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13 + ((_evt->v14 + ((_evt->v15 + ((uint)_evt->v16 << 8)) << 8)) << 8), _evt->v17 + ((_evt->v18 + ((_evt->v19 + ((uint)_evt->v20 << 8)) << 8)) << 8), _evt->v21 + ((_evt->v22 + ((_evt->v23 + ((uint)_evt->v24 << 8)) << 8)) << 8), _evt->v25, _evt->v26, 0, 0); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_Compare: v58 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); if ( player_choose == 5 ) { v130 = 0; v59 = pParty->pPlayers; while ( 1 ) { LOBYTE(v60) = v59->CompareVariable((enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v58); if ( v60 ) break; ++v130; ++v59; if ( (signed int)v59 >= (signed int)pParty->pHirelings ) { ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } LABEL_129: v11 = _evt->v11; goto LABEL_130; } if ( player_choose < 0 ) goto LABEL_139; v61 = player_choose; if ( player_choose <= 3 ) goto LABEL_137; if ( player_choose == 4 ) { if ( uActiveCharacter ) { v6 = pPlayers[uActiveCharacter]; goto LABEL_138; } } else { if ( player_choose != 6 ) goto LABEL_139; } v61 = rand() % 4; LABEL_137: v6 = &pParty->pPlayers[v61]; LABEL_138: //v123 = v6; LABEL_139: LOBYTE(v62) = ((Player *)v6)->CompareVariable( (enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v58); LABEL_140: if ( v62 ) goto LABEL_129; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_IsActorAlive: v62 = IsActorAlive( _evt->v5, _evt->v6 + ((_evt->v7 + ((_evt->v8 + ((uint)_evt->v9 << 8)) << 8)) << 8), _evt->v10); goto LABEL_140; case EVENT_Substract: v63 = (void *)(_evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8)); if ( _evt->v5 + ((uint)_evt->v6 << 8) == VAR_PlayerItemInHands ) { v64 = 0; if ( (void *)pParty->pPickedItem.uItemID == v63 ) { pMouse->RemoveHoldingItem(); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } v65 = 0; v66 = pPlayers[uActiveCharacter]; v67 = (int)v66->pInventoryIndices; do { if ( *(void **)&v66->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v67 + 5] == v63 ) { v66->RemoveItemAtInventoryIndex(v65); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } ++v65; v67 += 4; } while ( (signed int)v65 < 126 ); v68 = 0; v69 = (int)&v66->pEquipment; do { if ( *(int *)v69 && *(void **)&v66->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v69 + 5] == v63 ) { *(&v66->pEquipment.uOffHand + v68) = 0; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } ++v68; v69 += 4; } while ( v68 < 16 ); v125 = (signed int)&pPlayers[1]; while ( 1 ) { v70 = *(Player **)v125; if ( !v64 ) { v71 = 0; v72 = (int)v70->pInventoryIndices; do { if ( *(void **)&v70->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v72 + 5] == v63 ) { v70->RemoveItemAtInventoryIndex(v71); goto LABEL_169; } ++v71; v72 += 4; } while ( (signed int)v71 < 126 ); v73 = 0; v74 = (int)&v70->pEquipment; while ( !*(int *)v74 || *(void **)&v70->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v74 + 5] != v63 ) { ++v73; v74 += 4; if ( v73 >= 16 ) goto LABEL_170; } *(&v70->pEquipment.uOffHand + v73) = 0; LABEL_169: v64 = 1; } LABEL_170: v125 += 4; if ( v125 > (signed int)&pPlayers[4] ) { ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } } v75 = player_choose; if ( player_choose != 5 ) { if ( player_choose < 0 ) goto LABEL_183; if ( player_choose > 3 ) { if ( player_choose != 4 ) { if ( player_choose == 6 ) goto LABEL_180; LABEL_183: ((Player *)v6)->SubtractVariable((enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v63); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } if ( uActiveCharacter ) { v6 = pPlayers[uActiveCharacter]; goto LABEL_182; } LABEL_180: v75 = rand() % 4; } v6 = &pParty->pPlayers[v75]; LABEL_182: //v123 = v6; goto LABEL_183; } v76 = pParty->pPlayers; v130 = 4; do { v76->SubtractVariable( (enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v63); ++v76; } while ( (signed int)v76 < (signed int)pParty->pHirelings ); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_Set: v77 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); v78 = player_choose; if ( player_choose != 5 ) { if ( player_choose < 0 ) goto LABEL_197; if ( player_choose > 3 ) { if ( player_choose != 4 ) { if ( player_choose == 6 ) goto LABEL_194; LABEL_197: ((Player *)v6)->SetVariable((enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v77); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } if ( uActiveCharacter ) { v6 = pPlayers[uActiveCharacter]; goto LABEL_196; } LABEL_194: v78 = rand() % 4; } v6 = &pParty->pPlayers[v78]; LABEL_196: //v123 = v6; goto LABEL_197; } v79 = pParty->pPlayers; v130 = 4; do { v79->SetVariable( (enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v77); ++v79; } while ( (signed int)v79 < (signed int)pParty->pHirelings ); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_Add: v80 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); v81 = player_choose; if ( player_choose != 5 ) { if ( player_choose < 0 ) goto LABEL_211; if ( player_choose > 3 ) { if ( player_choose != 4 ) { if ( player_choose == 6 ) goto LABEL_208; LABEL_211: ((Player *)v6)->AddVariable( (enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v80); goto LABEL_212; } if ( uActiveCharacter ) { v6 = pPlayers[uActiveCharacter]; goto LABEL_210; } LABEL_208: v81 = rand() % 4; } v6 = &pParty->pPlayers[v81]; LABEL_210: //v123 = v6; goto LABEL_211; } v82 = pParty->pPlayers; v130 = 4; do { v82->AddVariable( (enum VariableType)(_evt->v5 + ((uint)_evt->v6 << 8)), v80); ++v82; } while ( (signed int)v82 < (signed int)pParty->pHirelings ); LABEL_212: v83 = _evt->v5 + ((uint)_evt->v6 << 8); if ( v83 == 21 || v83 == 22 || v83 == 23 || v83 == 24 ) viewparams->bRedrawGameUI = 1; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_InputString: if ( !start_event_seq_number ) { strcpy( GameUI_StatusBar_TimedString, &pLevelStr[pLevelStrOffsets[_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8)]]); v105 = curr_seq_num; v121 = 26; LABEL_295: sub_4451A8_press_any_key(uEventID, v105, v121); LABEL_301: if ( v133 == 1 ) LABEL_302: OnMapLeave(); return; } v84 = _evt->v13 + ((_evt->v14 + ((_evt->v15 + ((uint)_evt->v16 << 8)) << 8)) << 8); if ( !_strcmpi( GameUI_StatusBar_TimedString, &pLevelStr[pLevelStrOffsets[_evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8)]]) || !_strcmpi(GameUI_StatusBar_TimedString, &pLevelStr[pLevelStrOffsets[v84]]) ) { v11 = _evt->v17; LABEL_130: //v124 = -1; LABEL_131: curr_seq_num = v11 - 1; } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_RandomGoTo: //v124 = -1; v11 = (unsigned __int8)*(&_evt->v5 + rand() % ((_evt->v5 != 0) + (_evt->v6 != 0) + (_evt->v7 != 0) + (_evt->v8 != 0) + (_evt->v9 != 0) + (_evt->v10 != 0))); goto LABEL_131; case EVENT_ReceiveDamage: v85 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); v86 = _evt->v5; if ( (unsigned __int8)v86 <= 3u ) { v119 = _evt->v6; v115 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); v89 = (unsigned __int8)v86; goto LABEL_233; } if ( v86 == 4 ) { if ( !uActiveCharacter ) { ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } v119 = _evt->v6; v88 = pPlayers[uActiveCharacter]; v115 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); goto LABEL_234; } if ( v86 != 5 ) { v119 = _evt->v6; v115 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10<< 8)) << 8)) << 8); v89 = rand() % 4; LABEL_233: v88 = &pParty->pPlayers[v89]; LABEL_234: v88->ReceiveDamage(v115, v119); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } v87 = pParty->pPlayers; do { v87->ReceiveDamage(v85, _evt->v6); ++v87; } while ( (signed int)v87 < (signed int)pParty->pHirelings ); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ToggleIndoorLight: pIndoor->ToggleLight(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetFacesBit: sub_44892E_set_faces_bit(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ToggleChestFlag: Chest::ToggleFlag(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ToggleActorFlag: Actor::ToggleFlag(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ToggleActorGroupFlag: ToggleActorGroupFlag( _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8), _evt->v13); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetSnow: if ( !_evt->v5 ) pWeather->bRenderSnow = _evt->v6 != 0; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_StatusText: v90 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); if ( _5C3420_pDecoration ) { if ( _5C3420_pDecoration == (LevelDecoration *)1 ) { ptr_F8B1E8 = pNPCTopics[v90-1].pText;//(&dword_721664)[8 * v90]; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } if ( a3 == 1 ) { v91 = pNPCTopics[v90-1].pText;//(&dword_721664)[8 * v90]; //LABEL_248: ShowStatusBarString(v91, 2u); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } else { if ( a3 == 1 ) { v91 = &pLevelStr[pLevelStrOffsets[v90]]; ShowStatusBarString(v91, 2u); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ShowMessage: v92 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); if ( _5C3420_pDecoration ) { v93 = (char *)pNPCTopics[v92-1].pText;//(&dword_721664)[8 * v92]; byte_5B0938[0] = 0; ptr_F8B1E8 = v93; } else { strcpy(byte_5B0938, &pLevelStr[pLevelStrOffsets[v92]]); } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_CastSpell: sub_448DF8_cast_spell(_evt->v5, _evt->v6, _evt->v7, _evt->v8 + ((_evt->v9 + ((_evt->v10 + ((uint)_evt->v11 << 8)) << 8)) << 8), _evt->v12 + ((_evt->v13 + ((_evt->v14 + ((uint)_evt->v15 << 8)) << 8)) << 8), _evt->v16 + ((_evt->v17 + ((_evt->v18 + ((uint)_evt->v19 << 8)) << 8)) << 8), _evt->v20 + ((_evt->v21 + ((_evt->v22 + ((uint)_evt->v23 << 8)) << 8)) << 8), _evt->v24 + ((_evt->v25 + ((_evt->v26 + ((uint)_evt->v27 << 8)) << 8)) << 8), _evt->v28 + ((_evt->v29 + ((_evt->v30 + ((uint)_evt->v31 << 8)) << 8)) << 8)); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetTexture: sub_44861E_set_texture(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), (char *)&_evt->v9); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SetSprite: SetDecorationSprite(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), _evt->v9, (char *)&_evt->v10); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SummonMonsters: sub_448CF4_spawn_monsters(_evt->v5, _evt->v6, _evt->v7, _evt->v8 + ((_evt->v9 + ((_evt->v10 + ((uint)_evt->v11 << 8)) << 8)) << 8), _evt->v12 + ((_evt->v13 + ((_evt->v14 + ((uint)_evt->v15 << 8)) << 8)) << 8), _evt->v16 + ((_evt->v17 + ((_evt->v18 + ((uint)_evt->v19 << 8)) << 8)) << 8), _evt->v20 + ((_evt->v21 + ((_evt->v22 + ((uint)_evt->v23 << 8)) << 8)) << 8), _evt->v24 + ((_evt->v25 + ((_evt->v26 + ((uint)_evt->v27 << 8)) << 8)) << 8)); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_MouseOver: case EVENT_LocationName: --curr_seq_num; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_ChangeDoorState: sub_449A49_door_switch_animation(_evt->v5, _evt->v6); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_OpenChest: if ( !Chest::Open(_evt->v5) ) goto LABEL_301; ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_MoveToMap: v94 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v135 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); v132 = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); v126 = _evt->v13 + ((_evt->v14 + ((_evt->v15 + ((uint)_evt->v16 << 8)) << 8)) << 8); v129 = _evt->v17 + ((_evt->v18 + ((_evt->v19 + ((uint)_evt->v20 << 8)) << 8)) << 8); v95 = _evt->v21 + ((_evt->v22 + ((_evt->v23 + ((uint)_evt->v24 << 8)) << 8)) << 8); v96 = _evt->v25; v97 = v96 + ((_evt->v26 + ((_evt->v27 + ((uint)_evt->v28 << 8)) << 8)) << 8); v134 = v96 + ((_evt->v26 + ((_evt->v27 + ((uint)_evt->v28 << 8)) << 8)) << 8); if ( _evt->v29 || _evt->v30 ) { if ( pRenderer->pRenderD3D && !pRenderer->bWindowMode ) pRenderer->_49FD3A(); sub_444839_move_map(_evt->v29, _evt->v30, v135, v132, v126, v129, v95, v134, (char *)&_evt->v31); dword_5C3418 = uEventID; dword_5C341C = curr_seq_num + 1; goto LABEL_301; } _5B65AC_npcdata_fame_or_other = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); _5B65A8_npcdata_uflags_or_other = v94; _5B65B0_npcdata_rep_or_other = v126; if ( v129 == -1 ) { v98 = _5B65B4_npcdata_loword_house_or_other; } else { v98 = v129 & stru_5C6E00->uDoublePiMask; _5B65B4_npcdata_loword_house_or_other = v129 & stru_5C6E00->uDoublePiMask; } v99 = (char *)&_evt->v31; _5B65B8_npcdata_hiword_house_or_other = v95; dword_5B65BC = v97; v100 = v94 | v132 | v126 | v95 | v97 | v98; dword_5B65C0 = v100; if ( *v99 == 48 ) { if ( v100 ) { pParty->vPosition.x = v135; pParty->vPosition.y = v132; pParty->vPosition.z = v126; pParty->uFallStartY = v126; if ( _5B65B4_npcdata_loword_house_or_other != -1 ) pParty->sRotationY = _5B65B4_npcdata_loword_house_or_other; _5B65B4_npcdata_loword_house_or_other = -1; v120 = 0; v116 = 0; v111 = 0; v110 = 0; v109 = -1; v108 = 0; v107 = 0; pParty->sRotationX = v95; pParty->uFallSpeed = v134; dword_5B65C0 = 0; dword_5B65BC = 0; _5B65B8_npcdata_hiword_house_or_other = 0; _5B65B0_npcdata_rep_or_other = 0; _5B65AC_npcdata_fame_or_other = 0; _5B65A8_npcdata_uflags_or_other = 0; v106 = 232; LABEL_280: pAudioPlayer->PlaySound((SoundID)v106, v107, v108, v109, v110, v111, v116, v120); } } else { pGameLoadingUI_ProgressBar->uType = (GUIProgressBar::Type)((_5C3420_pDecoration == 0) + 1); sub_44987B(v99, 0); v133 = 1; if ( pCurrentScreen == SCREEN_HOUSE ) { if ( uGameState == 2 ) { pAudioPlayer->StopChannels(-1, -1); dword_F8B19C = 0; while ( sub_4BD8B5() ) ; pVideoPlayer->Unload(); window_SpeakInHouse->Release(); window_SpeakInHouse = 0; if ( pMessageQueue_50CBD0->uNumMessages ) pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; pCurrentScreen = SCREEN_GAME; viewparams->bRedrawGameUI = 1; array_5913D8[6] = 0; pDialogueWindow->Release(); dword_F8B19C = 0; pDialogueWindow = 0; pIcons_LOD->_40F9C5(); } goto LABEL_302; } } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_PlaySound: v120 = 0; v116 = 0; v111 = 0; v110 = _evt->v13 + ((_evt->v14 + ((_evt->v15 + ((uint)_evt->v16 << 8)) << 8)) << 8); v109 = _evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8); v108 = 0; v107 = 0; v106 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); goto LABEL_280; case EVENT_GiveItem: item.Reset(); //v101 = &pSomeEVT[v9]; v102 = _evt->v7 + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); pItemsTable->GenerateItem(_evt->v5, _evt->v6, &item); if ( v102 ) item.uItemID = v102; pParty->SetHoldingItem(&item); ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_SpeakInHouse: if ( EnterHouse((enum HOUSE_TYPE)(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8))) ) { if ( pRenderer->pRenderD3D && !pRenderer->bWindowMode ) pRenderer->_49FD3A(); pAudioPlayer->PlaySound((SoundID)0, 0, 0, -1, 0, 0, 0, 0); pAudioPlayer->PlaySound(SOUND_EnteringAHouse, 814, 0, -1, 0, 0, 0, 0); v104 = 187; if ( uCurrentHouse_Animation != 167 ) v104 = _evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8); window_SpeakInHouse = GUIWindow::Create(0, 0, 640, 480, WINDOW_HouseInterior, v104, 0); window_SpeakInHouse->CreateButton(0x3Du, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 1u, 0x31u, "", 0); window_SpeakInHouse->CreateButton(0xB1u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 2u, 0x32u, "", 0); window_SpeakInHouse->CreateButton(0x124u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 3u, 0x33u, "", 0); window_SpeakInHouse->CreateButton(0x197u, 0x1A8u, 0x1Fu, 0, 2, 94, 0x6Eu, 4u, 0x34u, "", 0); window_SpeakInHouse->CreateButton(0, 0, 0, 0, 1, 0, 0xB0u, 0, 9u, "", 0); } ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; case EVENT_PressAnyKey: v121 = 33; v105 = curr_seq_num + 1; goto LABEL_295; case EVENT_Exit: goto LABEL_301; default: ++curr_seq_num; v4 = v124; //v6 = v123; //v7 = ""; break; } } ++v4; v124 = v4; if ( v4 >= uSomeEVT_NumEvents ) goto LABEL_301; //} } }