Mercurial > mm7
diff Events.cpp @ 2275:8193a64c7461
Слияние
author | Ritor1 |
---|---|
date | Fri, 14 Mar 2014 09:32:42 +0600 |
parents | fd788d2e9585 |
children | 9551756f46c4 |
line wrap: on
line diff
--- a/Events.cpp Fri Mar 14 09:32:25 2014 +0600 +++ b/Events.cpp Fri Mar 14 09:32:42 2014 +0600 @@ -282,17 +282,8 @@ { 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 @@ -302,11 +293,9 @@ 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 pEventID; // eax@58 int pNPC_ID; // ecx@58 int pIndex; // esi@58 @@ -317,12 +306,8 @@ 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 @@ -357,16 +342,9 @@ 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 @@ -378,37 +356,24 @@ 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 @@ -422,7 +387,6 @@ char Str[120]; // [sp+ECh] [bp-3BCh]@21 Actor Dst; // [sp+164h] [bp-344h]@53 - //v131 = uEventID; v133 = 0; EvtTargetObj = targetObj; dword_5B65C4_cancelEventProcessing = 0; @@ -434,158 +398,129 @@ return; } */ if ( !uEventID ) - { + { if ( !GameUI_Footer_TimeLeft ) 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 = entry_line; if ( activeLevelDecoration ) - { + { uSomeEVT_NumEvents = uGlobalEVT_NumEvents; pSomeEVT = pGlobalEVT.data(); memcpy(pSomeEVT_Events.data(), pGlobalEVT_Index.data(), sizeof(EventIndex)*4400); //4400 evts - } + } else - { + { uSomeEVT_NumEvents = uLevelEVT_NumEvents; pSomeEVT = pLevelEVT.data(); memcpy(pSomeEVT_Events.data(), pLevelEVT_Index.data(), sizeof(EventIndex)*4400); - } + } - v4 = 0; - v124 = 0; - //for (uint i = 0; i < uSomeEVT_NumEvents; ++i) - // { - //v6 = v123; - //v7 = ""; - while ( 1 ) + for ( v4 = 0; v4 < uSomeEVT_NumEvents; ++v4 ) + { + if ( dword_5B65C4_cancelEventProcessing ) { - if ( dword_5B65C4_cancelEventProcessing ) - goto LABEL_301; - //v8 = v4; + if ( v133 == 1 ) + OnMapLeave(); + return; + } if ( pSomeEVT_Events[v4].uEventID == uEventID && pSomeEVT_Events[v4].event_sequence_num == curr_seq_num ) { - //v9 = pSomeEVT_Events[v8].uEventOffsetInEVT; - //v10 = (ByteArray *)&v5[v9]; _evt_raw * _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; + //v4 = v124; break; - } - v124 = -1; + } + v4 = -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->bBufferLoaded) + if (pVideoPlayer->bBufferLoaded) pVideoPlayer->Unload(); pVideoPlayer->bStopBeforeSchedule = 0; pVideoPlayer->pResetflag = 0; 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); - pVideoPlayer->MovieLoop(v16, 0, v14, 1); + pVideoPlayer->MovieLoop(v16, 0, _evt->v5, 1); if ( !_stricmp(v16, "arbiter good") ) { pParty->alignment = PartyAlignment_Good; v18 = 0; LOBYTE(v17) = 1; SetUserInterface(PartyAlignment_Good, v17); - if ( !v15 || v128 == 3 ) - { + if ( !_evt->v6 || v128 == 3 ) + { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) pVideoPlayer->OpenHouseMovie(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1u); - } - + } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; - } + } if ( !_stricmp(v16, "arbiter evil") ) - { + { v18 = 2; pParty->alignment = PartyAlignment_Evil; LOBYTE(v17) = 1; SetUserInterface(PartyAlignment_Evil, v17); - if ( !v15 || v128 == 3 ) - { + if ( !_evt->v6 || v128 == 3 ) + { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) pVideoPlayer->OpenHouseMovie(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1u); - } + } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; - break; - } + } if ( !_stricmp(v16, "pcout01") ) // moving to harmondale from emerald isle - { + { Rest(0x2760u); pParty->RestAndHeal(); pParty->days_played_without_rest = 0; - } - if ( !v15 || v128 == 3 ) - { + } + if ( !_evt->v6 || v128 == 3 ) + { pCurrentScreen = v128; if ( v128 == 3 ) pGameLoadingUI_ProgressBar->uType = GUIProgressBar::TYPE_Fullscreen; if ( v128 == 13 ) - pVideoPlayer->OpenHouseMovie(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1u); - } + pVideoPlayer->OpenHouseMovie(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1); + } ++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 ) @@ -605,15 +540,12 @@ if ( v20 >= 4 ) { ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; } } - v11 = _evt->v11; - goto LABEL_130; + curr_seq_num = _evt->v11 - 1; + ++curr_seq_num; + break; } LABEL_47: //v10 = (ByteArray *)&v5[v9]; @@ -626,14 +558,11 @@ v139 = v24 & 0x100; if ( (v24 & 0x3F) >= v19 && *(&v136 + _evt->v6) ) { - v11 = _evt->v11; - goto LABEL_130; + curr_seq_num = _evt->v11 - 1; + ++curr_seq_num; + break; } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; } break; @@ -647,29 +576,19 @@ GameUI_InitializeDialogue(&Dst, false); } 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_DWORD(_evt->v5); - if ( v25 ) - { + if ( EVT_DWORD(_evt->v5) ) stru_5E4C90_MapPersistVars._decor_events[activeLevelDecoration->_idx_in_stru123] = _evt->v5 - 124; - } else - { + { v26 = (LevelDecoration *)activeLevelDecoration; stru_5E4C90_MapPersistVars._decor_events[activeLevelDecoration ->_idx_in_stru123] = 0; v26->uFlags |= LEVEL_DECORATION_INVISIBLE; - } + } ++curr_seq_num; - v4 = v124; break; case EVENT_SetNPCGreeting: @@ -677,10 +596,6 @@ pNPCStats->pNewNPCData[v27].uFlags &= 0xFFFFFFFCu; pNPCStats->pNewNPCData[v27].greet = EVT_DWORD(_evt->v9); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_SetNPCTopic: { @@ -723,79 +638,48 @@ } ++curr_seq_num; } - v4 = v124; break; case EVENT_NPCSetItem: sub_448518_npc_set_item(EVT_DWORD(_evt->v5),EVT_DWORD(_evt->v9), _evt->v13); ++curr_seq_num; - v4 = v124; - break; case EVENT_SetActorItem: Actor::GiveItem(EVT_DWORD(_evt->v5),EVT_DWORD(_evt->v9), _evt->v13); ++curr_seq_num; - v4 = v124; 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; 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; 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.data();//[0].uGroup; - do - { - if ( v41->uGroup == v38 ) - v41->uGroup = v39; - ++v41; - --v40; - } - while ( v40 ); - } + for ( uint actor_id = 0; actor_id < uNumActors; actor_id++ ) + { + if ( pActors[actor_id].uGroup == v38 ) + pActors[actor_id].uGroup = v39; + } ++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.data();//[0].uAlly; - do - { - if ( v45->uGroup == v42 ) - v45->uAlly = v43; - ++v45; - --v44; - } - while ( v44 ); - } + for ( uint actor_id = 0; actor_id < uNumActors; actor_id++ ) + { + if ( pActors[actor_id].uGroup == v42 ) + pActors[actor_id].uAlly = v43; + } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_MoveNPC: { - pNPCStats->pNewNPCData[EVT_DWORD(_evt->v5)].Location2D =EVT_DWORD(_evt->v9); if ( window_SpeakInHouse ) { @@ -812,7 +696,7 @@ pAudioPlayer->PlaySound((SoundID)0, 0, 0, -1, 0, 0, 0, 0); window_SpeakInHouse = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_HouseInterior, 165, 0); v48 = window_SpeakInHouse->pControlsHead; - if ( v48 ) + if ( window_SpeakInHouse->pControlsHead ) { do { @@ -835,9 +719,7 @@ } } - ++curr_seq_num; - v4 = v124; - + ++curr_seq_num; break; case EVENT_Jmp: curr_seq_num = _evt->v5 - 1; @@ -852,33 +734,28 @@ pParty->pPlayers[uActiveCharacter].PlayEmotion((CHARACTER_EXPRESSION_ID)_evt->v6, 0); else if ( _evt->v5 == 5 ) //all players { - for(int i=0; i<4; ++i) + 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; - break; case EVENT_CharacterAnimation: - if ( _evt->v5 <= 3u ) //someone + if ( _evt->v5 <= 3 ) //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) + 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; - break; case EVENT_ForPartyMember: player_choose = _evt->v5; ++curr_seq_num; - v4 = v124; break; case EVENT_SummonItem: sub_42F7EB_DropItemAt(_evt->v5 + ((_evt->v6 + ((_evt->v7 + ((uint)_evt->v8 << 8)) << 8)) << 8), @@ -888,10 +765,6 @@ _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: pValue = EVT_DWORD(_evt->v7); @@ -899,7 +772,7 @@ { if ( pPlayers[player_choose]->CompareVariable((enum VariableType)EVT_WORD(_evt->v5), pValue) ) { - v124 = -1; + // v124 = -1; curr_seq_num = _evt->v11 - 1; } } @@ -909,19 +782,19 @@ { if ( pPlayers[uActiveCharacter]->CompareVariable((enum VariableType)EVT_WORD(_evt->v5), pValue) ) { - v124 = -1; + // v124 = -1; curr_seq_num = _evt->v11 - 1; } } } else if ( player_choose == 5 )//all { - v130=0; + v130 = 0; for(int i = 1; i < 5; ++i) { if ( pPlayers[i]->CompareVariable((enum VariableType)EVT_WORD(_evt->v5), pValue) ) { - v124 = -1; + // v124 = -1; curr_seq_num = _evt->v11 - 1; break; } @@ -932,21 +805,21 @@ { if ( pPlayers[rand() % 4 + 1]->CompareVariable((enum VariableType)EVT_WORD(_evt->v5), pValue) ) { - v124 = -1; + // v124 = -1; curr_seq_num = _evt->v11 - 1; } } ++curr_seq_num; - v4 = v124; + v4 = -1; break; case EVENT_IsActorAlive: if (IsActorAlive(EVT_BYTE(_evt->v5), EVT_DWORD(_evt->v6), EVT_BYTE(_evt->v10))) - { - v124 = -1; + { + //v124 = -1; curr_seq_num = _evt->v11 - 1; - } + } ++curr_seq_num; - v4 = v124; + v4 = -1; break; case EVENT_Substract: pValue = EVT_DWORD(_evt->v7); @@ -1029,18 +902,11 @@ else if ( player_choose == 5 )//all { for(int i = 1; i < 5; ++i) - { pPlayers[i]->SubtractVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); - } } else if ( player_choose == 6 ) //random - { - player_choose = rand() % 4; - pParty->pPlayers[player_choose].SubtractVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); - } -//substract: + pParty->pPlayers[rand() % 4].SubtractVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); ++curr_seq_num; - v4 = v124; break; case EVENT_Set: pValue = EVT_DWORD(_evt->v7); @@ -1053,18 +919,13 @@ } else if ( player_choose == 5 )//all { - //recheck v130 + //recheck v130 for ( int i = 1; i < 5; ++i ) pPlayers[i]->SetVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); } else if ( player_choose == 6 ) //random - { - player_choose = rand() % 4; - pPlayer = &pParty->pPlayers[player_choose]; - pPlayer->SetVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); - } + pParty->pPlayers[rand() % 4].SetVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); ++curr_seq_num; - v4 = v124; break; case EVENT_Add: pValue = EVT_DWORD(_evt->v7); @@ -1084,10 +945,7 @@ pPlayers[i]->AddVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); } else if ( player_choose == 6 ) //random - { - player_choose = rand() % 4; - pParty->pPlayers[player_choose].AddVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); - } + pParty->pPlayers[rand() % 4].AddVariable((enum VariableType)EVT_WORD(_evt->v5), pValue); v83 = EVT_WORD(_evt->v5); if (v83 == 21 || // gold well on emerald isle v83 == 22 || v83 == 23 || v83 == 24 ) @@ -1096,36 +954,25 @@ viewparams->bRedrawGameUI = true; } ++curr_seq_num; - v4 = v124; break; case EVENT_InputString: if ( !entry_line ) - { + { strcpy(GameUI_Footer_TimedString.data(), &pLevelStr[pLevelStrOffsets[EVT_DWORD(_evt->v5 )]]); - v105 = curr_seq_num; - v121 = 26; -LABEL_295: - sub_4451A8_press_any_key(uEventID, v105, v121); -LABEL_301: + sub_4451A8_press_any_key(uEventID, curr_seq_num, 26); if ( v133 == 1 ) OnMapLeave(); return; - } + } v84 = _evt->v13 + ((_evt->v14 + ((_evt->v15 + ((uint)_evt->v16 << 8)) << 8)) << 8); if ( !_stricmp(GameUI_Footer_TimedString.data(), &pLevelStr[pLevelStrOffsets[_evt->v9 + ((_evt->v10 + ((_evt->v11 + ((uint)_evt->v12 << 8)) << 8)) << 8)]]) || !_stricmp(GameUI_Footer_TimedString.data(), &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 = ""; + v4 = -1; break; case EVENT_RandomGoTo: //v124 = -1; @@ -1133,219 +980,131 @@ + (_evt->v10 != 0))); curr_seq_num = v11 - 1; ++curr_seq_num; - v4 = v124; + v4 = -1; break; case EVENT_ReceiveDamage: - v85 = EVT_DWORD(_evt->v7 ); - v86 = _evt->v5; - if ( (unsigned __int8)v86 <= 3 ) - { - v119 = _evt->v6; - v115 = EVT_DWORD(_evt->v7 ); - v89 = (unsigned __int8)v86; - v88 = &pParty->pPlayers[v89]; - v88->ReceiveDamage(v115, (DAMAGE_TYPE)v119); - ++curr_seq_num; - v4 = v124; - break; - } - if ( v86 == 4 ) - { - if ( !uActiveCharacter ) - { - ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; - break; - } - v119 = _evt->v6; - v88 = pPlayers[uActiveCharacter]; - v115 = EVT_DWORD(_evt->v7 ); - v88->ReceiveDamage(v115, (DAMAGE_TYPE)v119); + if ( (unsigned __int8)_evt->v5 <= 3 ) + { + pParty->pPlayers[(unsigned __int8)_evt->v5].ReceiveDamage(EVT_DWORD(_evt->v7 ), (DAMAGE_TYPE)_evt->v6); ++curr_seq_num; - v4 = v124; break; - } - if ( v86 != 5 ) + } + if ( _evt->v5 == 4 ) + { + if ( !uActiveCharacter ) { - v119 = _evt->v6; - v115 = EVT_DWORD(_evt->v7 ); - v89 = rand() % 4; - v88 = &pParty->pPlayers[v89]; - v88->ReceiveDamage(v115, (DAMAGE_TYPE)v119); + ++curr_seq_num; + break; + } + pPlayers[uActiveCharacter]->ReceiveDamage(EVT_DWORD(_evt->v7 ), (DAMAGE_TYPE)_evt->v6); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; - } - v87 = pParty->pPlayers.data(); - do - { - v87->ReceiveDamage(v85, (DAMAGE_TYPE)_evt->v6); - ++v87; - } - while ( (signed int)v87 < (signed int)pParty->pHirelings.data() ); + } + if ( _evt->v5 != 5 ) + { + pParty->pPlayers[rand() % 4].ReceiveDamage(EVT_DWORD(_evt->v7 ), (DAMAGE_TYPE)_evt->v6); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; + break; + } + for ( uint pl_id = 0;pl_id < 4; pl_id++ ) + pParty->pPlayers[pl_id].ReceiveDamage(EVT_DWORD(_evt->v7 ), (DAMAGE_TYPE)_evt->v6); + ++curr_seq_num; break; case EVENT_ToggleIndoorLight: pIndoor->ToggleLight(EVT_DWORD(_evt->v5 ), _evt->v9); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_SetFacesBit: sub_44892E_set_faces_bit(EVT_DWORD(_evt->v5),EVT_DWORD(_evt->v9), _evt->v13); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_ToggleChestFlag: Chest::ToggleFlag(EVT_DWORD(_evt->v5 ), EVT_DWORD(_evt->v9 ), _evt->v13); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_ToggleActorFlag: Actor::ToggleFlag(EVT_DWORD(_evt->v5 ), EVT_DWORD(_evt->v9 ), _evt->v13); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_ToggleActorGroupFlag: ToggleActorGroupFlag(EVT_DWORD(_evt->v5 ), EVT_DWORD(_evt->v9 ), _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_DWORD(_evt->v5 ); if ( activeLevelDecoration ) - { + { if ( activeLevelDecoration == (LevelDecoration*)1 ) - { current_npc_text = pNPCTopics[v90-1].pText;//(&dword_721664)[8 * v90]; - } if ( canShowMessages == 1 ) { v91 = pNPCTopics[v90-1].pText;//(&dword_721664)[8 * v90]; //LABEL_248: - ShowStatusBarString(v91, 2u); + ShowStatusBarString(v91, 2); } - } + } else - { + { if ( canShowMessages == 1 ) - { + { v91 = &pLevelStr[pLevelStrOffsets[v90]]; - ShowStatusBarString(v91, 2u); - } + ShowStatusBarString(v91, 2); } + } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_ShowMessage: - v92 = EVT_DWORD(_evt->v5 ); if ( activeLevelDecoration ) - { - v93 = (char *)pNPCTopics[v92-1].pText;//(&dword_721664)[8 * v92]; + { + current_npc_text = pNPCTopics[EVT_DWORD(_evt->v5 )-1].pText;//(&dword_721664)[8 * v92]; byte_5B0938[0] = 0; - current_npc_text = v93; - } + } else - { - strcpy(byte_5B0938.data(), &pLevelStr[pLevelStrOffsets[v92]]); - } + strcpy(byte_5B0938.data(), &pLevelStr[pLevelStrOffsets[EVT_DWORD(_evt->v5 )]]); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_CastSpell: EventCastSpell(_evt->v5, _evt->v6, _evt->v7, EVT_DWORD(_evt->v8 ), EVT_DWORD(_evt->v12 ), EVT_DWORD(_evt->v16 ), EVT_DWORD(_evt->v20 ), EVT_DWORD(_evt->v24 ), EVT_DWORD(_evt->v28 )); ++curr_seq_num; - v4 = v124; break; case EVENT_SetTexture: sub_44861E_set_texture(EVT_DWORD(_evt->v5 ), (char *)&_evt->v9); ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_SetSprite: SetDecorationSprite(EVT_DWORD(_evt->v5 ), _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_DWORD(_evt->v8 ), EVT_DWORD(_evt->v12 ), EVT_DWORD(_evt->v16 ), EVT_DWORD(_evt->v20 ), EVT_DWORD(_evt->v24 )); ++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: Door_switch_animation(_evt->v5, _evt->v6); ++curr_seq_num; - v4 = v124; break; case EVENT_OpenChest: if ( !Chest::Open(_evt->v5) ) - goto LABEL_301; + { + if ( v133 == 1 ) + OnMapLeave(); + return; + } ++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); @@ -1363,20 +1122,20 @@ TransitionUI_Load(_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; + if ( v133 == 1 ) + OnMapLeave(); + return; } _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; @@ -1393,13 +1152,6 @@ 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; @@ -1409,8 +1161,7 @@ _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); + pAudioPlayer->PlaySound((SoundID)v106, 0, 0, -1, 0, 0, 0, 0); } } else @@ -1444,34 +1195,22 @@ } } ++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; + pAudioPlayer->PlaySound((SoundID)v106, 0, 0, v109, v110, 0, 0, 0); + ++curr_seq_num; + break; case EVENT_GiveItem: item.Reset(); - //v101 = &pSomeEVT[v9]; - v102 = _evt->v7 - + ((_evt->v8 + ((_evt->v9 + ((uint)_evt->v10 << 8)) << 8)) << 8); + 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_ID)EVT_DWORD(_evt->v5))) @@ -1490,34 +1229,25 @@ window_SpeakInHouse->CreateButton( 0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, '\t', "", 0); } ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; case EVENT_PressAnyKey: - v121 = 33; - v105 = curr_seq_num + 1; - goto LABEL_295; + sub_4451A8_press_any_key(uEventID, curr_seq_num + 1, 33); + if ( v133 == 1 ) + OnMapLeave(); + return; case EVENT_Exit: if ( v133 == 1 ) OnMapLeave(); return; default: ++curr_seq_num; - v4 = v124; - - //v6 = v123; - //v7 = ""; break; } } - ++v4; - v124 = v4; - if ( v4 >= uSomeEVT_NumEvents ) - goto LABEL_301; - //} } + if ( v133 == 1 ) + OnMapLeave(); + return; } //----- (00444732) -------------------------------------------------------- @@ -1540,8 +1270,8 @@ { if ( pLevelEVT_Index[event_index].uEventID == uEventID ) { - test_evt=(_evt_raw*)&pLevelEVT[pLevelEVT_Index[event_index].uEventOffsetInEVT]; - last_evt=test_evt; + test_evt=(_evt_raw*)&pLevelEVT[pLevelEVT_Index[event_index].uEventOffsetInEVT]; + last_evt=test_evt; event_pos = pLevelEVT_Index[event_index+1].uEventOffsetInEVT; if ( test_evt->_e_type == EVENT_MouseOver ) break; @@ -1550,7 +1280,7 @@ if ( event_index >= uLevelEVT_NumEvents ) return NULL; } - test_evt=(_evt_raw*)&pLevelEVT[event_pos]; + test_evt=(_evt_raw*)&pLevelEVT[event_pos]; if ( test_evt->_e_type== EVENT_SpeakInHouse ) { str_index = EVT_DWORD(test_evt->v5); @@ -1558,10 +1288,10 @@ } else { - for ( i = event_index+1; pLevelEVT_Index[i].uEventID == uEventID; ++i ) + for ( i = event_index + 1; pLevelEVT_Index[i].uEventID == uEventID; ++i ) { event_pos = pLevelEVT_Index[i].uEventOffsetInEVT; - test_evt=(_evt_raw*)&pLevelEVT[event_pos]; + test_evt=(_evt_raw*)&pLevelEVT[event_pos]; if ( test_evt->_e_type == EVENT_SpeakInHouse ) { str_index = EVT_DWORD(test_evt->v5);