diff mm7_data.h @ 1461:845907a747d3

Merge
author Gloval
date Wed, 21 Aug 2013 20:59:16 +0400
parents 2ca62c9e7b3c
children c987b5ed09af
line wrap: on
line diff
--- a/mm7_data.h	Wed Aug 21 20:58:36 2013 +0400
+++ b/mm7_data.h	Wed Aug 21 20:59:16 2013 +0400
@@ -570,7 +570,6 @@
 extern std::array<bool, 28> GameMenuUI_InvaligKeyBindingsFlags; // 506E6C
 extern std::array<unsigned int, 27> pPrevVirtualCidesMapping;
 extern int KeyboardPageNum; // weak
-extern std::array<int, 777> dword_506F0C; // idb
 extern int uRestUI_FoodRequiredToRest;
 extern int dword_506F14; // weak
 extern int _506F18_num_minutes_to_sleep; // weak
@@ -603,7 +602,7 @@
 extern int dword_507B98_ctrl_pressed; // weak
 extern unsigned int uActiveCharacter;
 extern int dword_507BF0_is_there_popup_onscreen; // weak
-extern int dword_507CBC; // weak
+extern int awards_scroll_bar_created; // weak
 extern int dword_507CC0_activ_ch; // weak
 extern __int64 GameUI_RightPanel_BookFlashTimer; // weak
 extern int _507CD4_RestUI_hourglass_anim_controller; // weak
@@ -784,8 +783,8 @@
 
 extern std::array<int, 777> _6807B8_level_decorations_ids; // idb
 extern int _6807E0_num_decorations_with_sounds_6807B8; // weak
-extern std::array<int, 777> _6807E8_level_decorations_ids; // idb
-extern int _6836C8_num_decorations_6807E8; // weak
+extern std::array<int, 3000> event_triggers; // 6807E8
+extern int                   num_event_triggers; // 6836C8
 extern std::array<int, 64> dword_69B010;
 extern float flt_69B138_dist; // weak
 extern char byte_69BD41_unused; // weak
@@ -1043,18 +1042,6 @@
 
 extern volatile bool initing; //ADDED
 
-//extern int crt_F94004; // weak
-//extern int crtdword_F9400C; // weak
-extern FARPROC lpfn; // idb
-//extern int crt_F944EC; // weak
-//extern int crtdword_F944F0; // weak
-//extern void *crt_F944F4; // idb
-//extern int crtdword_F944F8; // weak
-//extern LPVOID crt_lpMem; // idb
-//extern int crt_F94500; // weak
-//extern HANDLE crt_hHeap; // idb
-//extern int crt_F94508; // weak
-
 
 
 
@@ -1071,12 +1058,21 @@
 //-------------------------------------------------------------------------
 // Function declarations
 
-#define __thiscall __cdecl // Test compile in C mode
+
+void init_event_triggers();
+void check_event_triggers();
+
+
+
 
-void __stdcall mm7__vector_constructor(void *a1, int objSize, int numObjs, int (__thiscall *constructor)(int));
+void ShowIntroVideo_and_LoadingScreen();
+unsigned int GameOverMenu(void *ecx0);
+int __fastcall SpawnRandomTreasure(struct MapInfo *a1, struct SpawnPointMM7 *a2);
+void DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, struct Vec3_int_ *pVelocity);
+
 void MakeActorAIList_ODM();
-int __cdecl MakeActorAIList_BLV();
-void __cdecl UpdateActorAI();
+int MakeActorAIList_BLV();
+void UpdateActorAI();
 bool __fastcall sub_4070EF_prolly_collide_objects(unsigned int uObjID, unsigned int uObj2ID);
 bool __fastcall sub_4075DB(int a1, int a2, int a3, struct BLVFace *a4);
 bool __fastcall sub_4077F1(int a1, int a2, int a3, struct ODMFace *a4, struct BSPVertexBuffer *a5);
@@ -1084,42 +1080,27 @@
 void InitializeActors();
 void InitializeSpriteObjects();
 int __fastcall sub_4088E9(int a1, int a2, int a3, int a4, int a5, int a6);
-unsigned int __thiscall SearchAliveActors(unsigned int *pTotalActors);
-unsigned int __fastcall SearchActorByMonsterID(unsigned int *pTotalActors, int uMonsterID);
-unsigned int __fastcall SearchActorByGroup(unsigned int *pTotalActors, unsigned int uGroup);
-unsigned int __fastcall SearchActorByID(unsigned int *pTotalActors, unsigned int a2);
-void  PrepareArcomage();
-
+unsigned int SearchAliveActors(unsigned int *pTotalActors);
+unsigned int SearchActorByMonsterID(unsigned int *pTotalActors, int uMonsterID);
+unsigned int SearchActorByGroup(unsigned int *pTotalActors, unsigned int uGroup);
+unsigned int SearchActorByID(unsigned int *pTotalActors, unsigned int a2);
+void PrepareArcomage();
 unsigned short TargetColor(unsigned __int16 r, unsigned __int16 g, unsigned __int16 b); // idb
-void __cdecl CallRenderPresent();
-void __thiscall DoBlt_Copy(unsigned __int16 *pPixels); // idb
-int __stdcall retzero_sub_40DFA7(int); // weak
-int loc_40E4FC(); // weak
+void CallRenderPresent();
+void DoBlt_Copy(unsigned __int16 *pPixels); // idb
 void __fastcall ZBuffer_Fill(int *pZBuffer, int uTextureId, int iZValue);
-
 void __fastcall ZBuffer_DoFill(int *pZBuffer, struct Texture *pTex, int uZValue);
-void __fastcall sub_40F92A(int *pZBuffer, struct Texture *a2, int a3); // idb
-void __cdecl SetMoonPhaseNames();
-signed int __fastcall sub_410D99_get_map_index(int a1);
+void __fastcall ZBuffer_DoFill2(int *pZBuffer, struct Texture *a2, int a3); // idb
+void SetMoonPhaseNames();
+int __fastcall sub_410D99_get_map_index(int a1);
 void __fastcall LoadThumbnailLloydTexture(unsigned int uSlot, unsigned int uPlayer);
 void SetAttributeNames();
 void uGameUIFontMain_initialize();
 void uGameUIFontShadow_initialize();
-void sub_41420D_press_esc();
-void sub_41426F();
-void __fastcall DrawPopupWindow(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight); // idb
-void DrawCopyrightWindow();
-void LoadFonts_and_DrawCopyrightWindow();
-void GUI_UpdateWindows();
 void identify_item();
-void __thiscall sub_416D62_ShowPopupWindow_MonsterRecord_ItemInfo_etcsub_416D62(struct Vec2_int_ *_this);
+void sub_416D62_ShowPopupWindow_MonsterRecord_ItemInfo_etcsub_416D62(struct Vec2_int_ *_this);
 void UI_OnMouseLeftClick(int *pXY); // idb
-void __thiscall sub_417871(int *pXY);
 unsigned int __fastcall UI_GetHealthManaStringColor(signed int a1, signed int a2);
-signed int __thiscall GetConditionDrawColor(unsigned int uConditionIdx); // idb
-void FillAwardsData();
-void CreateAwardsScrollBar();
-void sub_419379();
 unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels);
 struct GUIButton *__fastcall GUI_HandleHotkey(unsigned __int8 uHotkey); // idb
 int __fastcall GUI_ReplaceHotkey(unsigned __int8 uOldHotkey, unsigned __int8 uNewHotkey, char bFirstCall);
@@ -1127,78 +1108,62 @@
 bool UI_OnKeyDown(unsigned int vkKey);
 void GameUI_DrawItemInfo(struct ItemGen* inspect_item); // idb
 void MonsterPopup_Draw(unsigned int uActorID, struct GUIWindow *edx0);
-void __cdecl nullsub_3(); // idb
-void __cdecl LoadActualSkyFrame();
-void __cdecl Sleep6Hours();
-void __cdecl ChestUI_WritePointedObjectStatusString();
-
+void LoadActualSkyFrame();
+void Sleep6Hours();
+void ChestUI_WritePointedObjectStatusString();
 void __fastcall party_finds_gold(unsigned int uNumGold, int _1_dont_share_with_followers___2_the_same_but_without_a_message__else_normal); // idb
 void OnChestLeftClick();
-void __cdecl GameUI_WritePointedObjectStatusString();
-//struct GUIWindow *__thiscall GetCastSpellInInventoryWindow(void *a4);
-bool __cdecl sub_421B2C_PlaceInInventory_or_DropPickedItem();
+void GameUI_WritePointedObjectStatusString();
+bool sub_421B2C_PlaceInInventory_or_DropPickedItem();
 void __fastcall GameUI_OnPlayerPortraitLeftClick(unsigned int uPlayerID); // idb
 void OnInventoryLeftClick();
 void OnGameViewportClick();
 bool PauseGameDrawing();
 void SetUserInterface(enum PartyAlignment alignment, bool bReplace);
-void __cdecl reset_some_strus_flt_2Cs();
+void reset_some_strus_flt_2Cs();
 int __fastcall GetPortalScreenCoord(unsigned int uFaceID);
-signed int __fastcall sr_424579(int uFaceID, struct stru320 *a2);
 bool PortalFrustrum(int pNumVertices, struct BspRenderer_PortalViewportData *a2, struct BspRenderer_PortalViewportData *near_portal, int uFaceID);
 int sr_424CD7(unsigned int uVertexID); // idb
-signed int __fastcall sr_424EE0_MakeFanFromTriangle(unsigned int uVertexID); // idb
-signed int __fastcall sr_4250FE(unsigned int uVertexID); // idb
-bool sr_42620A(struct RenderVertexSoft *p);
+int __fastcall sr_424EE0_MakeFanFromTriangle(unsigned int uVertexID); // idb
 int __fastcall _4268E3_smthn_to_a1r5g5b5(unsigned int uColor); // idb
 int __fastcall _42690D_colors_cvt(unsigned int a1);
-void __cdecl sub_426947();
 void __fastcall GivePartyExp(unsigned int pEXPNum);
 bool __fastcall sub_427769_spell(unsigned int uSpellID);
 void _42777D_CastSpell_UseWand_ShootArrow(int a1, unsigned int uPlayerID, unsigned int a4, __int16 a5, int a6);
-int __fastcall sub_42EBBE(int, int); // weak
 void _42ECB5_PlayerAttacksActor();
-void __thiscall InitializeTurnBasedAnimations(void *);
-signed int __cdecl sub_42F4DA();
+void  InitializeTurnBasedAnimations(void *);
+int _42F4DA_check_actor_proximity();
 bool __fastcall sub_42F7EB_DropItemAt(unsigned int uSpriteID, int x, int y, int z, int a4, int count, int a7, unsigned __int16 attributes, ItemGen *a9);
 void __fastcall sub_42F960_create_object(int x, int y, int z); // idb
 void CompactLayingItemsList();
-signed int __fastcall _42FA66_do_explosive_impact(int a1, int a2, int a3, int a4, __int16 a5, signed int a6);
-bool __fastcall sub_42FB5C(signed int a1);
-// int __cdecl crt_sub_42FBB7();
-// void __cdecl crt_construct_50CDB4();
-void __cdecl sub_42FBDD();
-void __cdecl CloseWindowBackground();
-void __cdecl ProcessInputActions();
-void __cdecl GameUI_MsgProc();
-void __cdecl back_to_game();
-void __cdecl GUI_MainMenuMessageProc();
-double __cdecl get_shading_dist_mist();
+int __fastcall _42FA66_do_explosive_impact(int a1, int a2, int a3, int a4, __int16 a5, signed int a6);
+bool _42FB5C_check_spell(signed int a1);
+void sub_42FBDD();
+void CloseWindowBackground();
+void ProcessInputActions();
+void GameUI_MsgProc();
+void back_to_game();
+void GUI_MainMenuMessageProc();
+double get_shading_dist_mist();
 void Vec3_short__to_RenderVertexSoft(struct RenderVertexSoft *_this, struct Vec3_short_ *a2);
-void __cdecl nullsub_4(); // idb
-void __cdecl nullsub_5(); // idb
-void __cdecl nullsub_6(); // idb
-void __cdecl area_of_effect__damage_evaluate();
+void area_of_effect__damage_evaluate();
 void __fastcall DamagePlayerFromMonster(unsigned int uObjID, int a2, struct Vec3_int_ *pPos, unsigned int a4);
 void __fastcall sub_43A97E(unsigned int uLayingItemID, signed int a2); // idb
 double __fastcall sub_43AE12(signed int a1);
 int __fastcall _43AFE3_calc_spell_damage(int a1, int a2, signed int a3, int a4);
 void __fastcall sub_43B057(unsigned int uObjID, unsigned int uActorID, struct Vec3_int_ *pVelocity);
 void sub_43B1B0(signed int a1, unsigned int a2, struct Vec3_int_ *pVelocity, signed int a4);
-int __stdcall DirectInputKeyboard_enumerator_43B9B9(int, int); // weak
 void Software_ResetNewEdges();
-// int __cdecl crt_deconstruct_43B9E3();
-int __stdcall DirectInputMouse_enumerator(int, int); // weak
 void CharacterUI_LoadPaperdollTextures();
 int __fastcall GetItemTextureFilename(char *pOut, signed int item_id, int index, int shoulder);
 bool _43ED6F_check_party_races(bool b);
-bool __thiscall sub_43EDB9_get_some_race_sex_relation_2(unsigned int _this);
+bool  sub_43EDB9_get_some_race_sex_relation_2(unsigned int _this);
 bool __fastcall Player_has_item(unsigned int uItemID, struct Player *pPlayer, char a3);
 bool __fastcall sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(signed int a1);
-void  WetsuitOn(unsigned int uPlayerID); // idb
-void  WetsuitOff(unsigned int uPlayerID);
+void WetsuitOn(unsigned int uPlayerID); // idb
+void WetsuitOff(unsigned int uPlayerID);
 void __fastcall PrepareDrawLists_BLV(struct IndoorLocation_drawstru *_this);
-void __cdecl FindBillboardsLightLevels_BLV();
+void FindBillboardsLightLevels_BLV();
 int __fastcall _43F55F_get_billboard_light_level(struct RenderBillboard *a1, int uBaseLightLevel);
 int __fastcall _43F5C8_get_point_light_level_with_respect_to_lights(unsigned int uBaseLightLevel, int uSectorID, float x, float y, float z);
 void PrepareBspRenderList_BLV();
@@ -1212,199 +1177,110 @@
 __int16 __fastcall sub_441A4E(int a1);
 void DrawBook_Map_sub(unsigned int tl_x, unsigned int tl_y, unsigned int br_x, int br_y, int _48074); // idb
 void Initialize2DA();
-
-void  LoadLevel_InitializeLevelStr();
-
-void __cdecl OnMapLeave();
-void /*__usercall*/ OnMapLoad();
+void LoadLevel_InitializeLevelStr();
+void OnMapLeave();
+void OnMapLoad();
 void Level_LoadEvtAndStr(const char *pLevelName);
-const char *__cdecl sub_444564();
-char *__thiscall GetEventHintString(unsigned int uEventID); // idb
+const char *sub_444564();
+char *GetEventHintString(unsigned int uEventID); // idb
 int GetTravelTime();
 void __fastcall sub_4451A8_press_any_key(int a1, int a2, int a4);
-void __cdecl sub_4452BB();
-const char *GetProfessionActionText(int a1);
-struct NPCData *__fastcall GetNPCData(signed int npcid);
-struct NPCData * GetNewNPCData(signed int npcid, int* npc_indx);
-int __fastcall GetGreetType(signed int SpeakingNPC_ID);
-void __cdecl DialogueEnding();
-void PrepareHouse(enum HOUSE_ID house); // idb
-bool  EnterHouse(enum HOUSE_ID uHouseID);
-int sub_4465DF_check_season(int a1);
-int __fastcall IsActorAlive(unsigned int uType, unsigned int uParam, unsigned int uNumAlive); // idb
-// void __cdecl crt_construct_5773C4();
-int NPC_EventProcessor(int npc_event_id, int entry_line = 0);
-
-void __fastcall sub_448518_npc_set_item(int npc, unsigned int item, int a3);
-void __fastcall sub_44861E_set_texture(unsigned int uFaceCog, const char *pFilename);
-void __fastcall SetDecorationSprite(unsigned int uCog, int a2, const char *pFileName); // idb
-void __fastcall sub_44892E_set_faces_bit(int sCogNumber, int bit, int on);
-void __fastcall ToggleActorGroupFlag(unsigned int uGroupID, unsigned int uFlag, unsigned int bToggle);
-void __thiscall GameUI_StatusBar_UpdateTimedString(unsigned int bForceHide); // idb
-void OnTimer(int);
-void __fastcall sub_448CF4_spawn_monsters(__int16 typeindex, __int16 level, int count, int x, int y, int z, int group, unsigned int uUniqueName);
-void __fastcall EventCastSpell(int spellnum, int uSkillLevel, int uSkill, int fromx, int fromy, int fromz, int tox, int toy, int toz);//sub_448DF8
-__int16 __fastcall sub_449A49_door_switch_animation(unsigned int uDoorID, int a2); // idb
-bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2);
-void _449B7E_toggle_bit(unsigned char *pArray, __int16 a2, unsigned __int16 bToggle); // idb
-void ShowStatusBarString(const char *pString, unsigned int uNumSeconds);
-void __cdecl ShowNothingHereStatus();
-signed int __cdecl const_2();
-bool __cdecl sub_44C28F_open_nwc_dungeon();
-// int __cdecl crt_deconstruct_44C42C();
-void SpawnEncounter(struct MapInfo *pMapInfo, struct SpawnPointMM7 *spawn, int a3, int a4, int a5);
-int __fastcall sub_44FA4C_spawn_light_elemental(int a1, int a2, int a3);
-
-signed int __fastcall sub_450521_ProllyDropItemAt(int ecx0, signed int a2, int a3, int a4, int a5, unsigned __int16 a6);
-int __fastcall _45063B_spawn_some_monster(struct MapInfo *a1, int a2);
-void RespawnGlobalDecorations();
-bool __fastcall SpawnActor(unsigned int uMonsterID);
-int __cdecl GetAlertStatus();
-unsigned int __fastcall sub_452442(unsigned __int16 a1, unsigned __int16 a2, int a3, int a4);
-int integer_sqrt(int val);
-int __fastcall MakeColorMaskFromBitDepth(int a1);
-void __fastcall fill_pixels_fast(unsigned int a1, unsigned __int16 *pPixels, unsigned int uNumPixels);
-int __fastcall GetDiceResult(unsigned int uNumDice, unsigned int uDiceSides); // idb
-inline int round(float x) { return (int)floor(x + 0.5f); }
-inline void __fastcall memset32(void *ptr, unsigned __int32 value, int count)
-{
-  auto p = (unsigned __int32 *)ptr;
-  for ( int i=0; i < count; i++ )
-    *p++ = value;
-}
-inline void __fastcall j_memset32(int a2, void *a1, unsigned int a3) {memset32(a1, a2, a3);}
-// int __cdecl crt_452B74();
-int __cdecl j_SetSomeItemsNames();
-
-
 int SkillToMastery(unsigned int skill_value);
 unsigned int __fastcall GetSpellColor(signed int a1);
-void *__thiscall unknown_vdtor_6(void *_this, bool a2);
 unsigned short * MakeScreenshot(signed int width, signed int height);
-void __thiscall SaveScreenshot(const char *pFilename);
+void SaveScreenshot(const char *pFilename);
 void __fastcall LoadGame(unsigned int uSlot); // idb
 void SaveGame(bool IsAutoSAve, bool NotSaveWorld);
 void __fastcall DoSavegame(unsigned int uSlot); // idb
-void __cdecl TryLoadLevelFromLOD();
-void __cdecl sub_46080D();
-bool __cdecl Initialize_GamesLOD_NewLOD();
+void TryLoadLevelFromLOD();
+void sub_46080D();
+bool Initialize_GamesLOD_NewLOD();
 void SaveNewGame();
-void __thiscall PrepareToLoadBLV(unsigned int bLoading);
+void PrepareToLoadBLV(unsigned int bLoading);
 void __fastcall PrepareToLoadODM(unsigned int bLoading, struct OutdoorCamera *a2);
-void __cdecl sub_461103();
-int __cdecl sub_4613C4();
+void _461103_load_level_sub();
 int int_get_vector_length(signed int x, signed int y, signed int z);
-int __cdecl sub_46224A();
-int __cdecl crt_init_globals_462620();
-void __cdecl crt_init_globals_462659();
-void __cdecl crt_init_globals_46269B();
-void __cdecl crt_init_globals_46271C();
-void __cdecl MainMenu_Loop();
-char __cdecl sub_4637E0_is_there_popup_onscreen();
-void __cdecl ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
-void __thiscall PrepareWorld(unsigned int _this);
-void __thiscall Game_DeinitializeAndTerminate(int exitCode); // idb
-void __cdecl FinalInitialization();
-char __cdecl Is_out15odm_underwater();
-void __cdecl SetUnderwaterFog();
-void __fastcall DoPrepareWorld(unsigned int bLoading, int a2);
+void MainMenu_Loop();
+char sub_4637E0_is_there_popup_onscreen();
+void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
+void PrepareWorld(unsigned int _0_box_loading_1_fullscreen);
+void Game_DeinitializeAndTerminate(int exitCode); // idb
+void FinalInitialization();
+char Is_out15odm_underwater();
+void SetUnderwaterFog();
+void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box);
 int __fastcall ReadWindowsRegistryInt(const char *pKey, int uDefValue); // idb
 void __fastcall WriteWindowsRegistryString(const char *pKey, const char *pString);
 void __fastcall ReadWindowsRegistryString(const char *pKeyName, char *pOutString, int uBufLen, const char *pDefaultValue);
 void __fastcall WriteWindowsRegistryInt(const char *pKey, int val);
 bool __fastcall CheckMM7CD(char c);
-int loc_465CC8(); // weak
-void __cdecl SecondaryInitialization();
-void __cdecl CreateAsyncMouse();
-void __cdecl CreateAsyncKeyboard();
-void __cdecl MM6_Initialize(const wchar_t *pIniFilename);
-void __cdecl MM7Initialization();
-int __cdecl AbortWithError();
+void SecondaryInitialization();
+void CreateAsyncMouse();
+void CreateAsyncKeyboard();
+void MM6_Initialize(const wchar_t *pIniFilename);
+void MM7Initialization();
+int AbortWithError();
 void Abortf(const char *Format, ...);
 void SetCurrentMenuID(enum MENU_STATE); // idb
 enum MENU_STATE GetCurrentMenuID();
-void *__thiscall output_debug_string(void *_this, std::string a2, const char *a3, int a4);
-std::string *__fastcall _4678E2_make_error_string(std::string *a1, int line, std::string file);
-void  CreateMsgScrollWindow(signed int mscroll_id);
-void __cdecl free_book_subwindow();
-void  CreateScrollWindow();
-void __cdecl OnPaperdollLeftClick();
+void CreateMsgScrollWindow(signed int mscroll_id);
+void free_book_subwindow();
+void CreateScrollWindow();
+void OnPaperdollLeftClick();
 void OnPressSpace();
 char __fastcall DoInteractionWithTopmostZObject(int a1, int a2);
-int __fastcall sub_46A6AC(int a1, int a2, int a3);
-int __fastcall sub_46A7C8(int a1, int a2, signed int a3);
-int __fastcall sub_46A89E(int a1, int a2, signed int a3);
-int __cdecl sub_46A99B();
-void *__thiscall unknown_libname_8(void *_this, char a2);
-unsigned int __cdecl GetGravityStrength();
-void __cdecl UpdateUserInput_and_MapSpecificStuff();
-void __cdecl BLV_UpdateUserInputAndOther();
-void __cdecl ODM_UpdateUserInputAndOther();
-bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2);
-void __cdecl check_event_triggers();
-int BLV_GetFloorLevel(int x, int y, int z, unsigned int uSectorID, unsigned int *pFaceID);
-int ODM_GetFloorLevel(int X, signed int Y, int Z, int, int *pOnWater, int *bmodel_pid, int bWaterWalk);
-int __fastcall sub_46D8E3(int a1, signed int a2, int a3, int a4);
-void ODM_GetTerrainNormalAt(int pos_x, int pos_z, Vec3_int_ *out);
-unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID);
-int __fastcall _46DF1A_collide_against_actor(int, int); // weak
-void __cdecl _46E0B2_collide_against_decorations();
-void __fastcall _46E26D_collide_against_sprites(signed int a1, signed int a2);
-int __thiscall _46E44E_collide_against_faces_and_portals(unsigned int b1); // idb
-int __fastcall _46E889_collide_against_bmodels(unsigned int ecx0);
-int collide_against_floor(int x, int y, int z, unsigned int *pSectorID, unsigned int *pFaceID); // idb
-void __fastcall _46ED8A_collide_against_sprite_objects(unsigned int _this);
-int __thiscall _46EF01_collision_chech_player(int a1); // idb
-signed int __cdecl _46F04E_collide_against_portals();
-void BLV_UpdateDoors();
-void UpdateActors_BLV();
-void UpdateActors_ODM();
-void UpdateObjects();
-int collide_against_floor_approximate(int x, int y, int z, unsigned int *pSectorID, unsigned int *pFaceID); // idb
-void BLV_ProcessPartyActions();
-void ODM_ProcessPartyActions();
-bool __fastcall sub_47531C(int a1, int *a2, int a3, int a4, int a5, int a6, int a7, int a8, BLVFace *a9, int a10);
-bool __fastcall sub_4754BF(int a1, int *a2, int a3, int a4, int a5, int a6, int a7, int a8, BLVFace *a9, int a10, int a11);
-signed int __thiscall sub_475665(BLVFace *_this, int a2, __int16 a3);
-bool __fastcall sub_4759C9(BLVFace *a1, int a2, int a3, __int16 a4);
-bool __fastcall sub_475D85(Vec3_int_ *a1, Vec3_int_ *a2, int *a3, BLVFace *a4);
-bool __fastcall sub_475F30(int *a1, BLVFace *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9);
-
-int __cdecl GetPartyReputation();
-void __cdecl sub_4783FA_construct_global_73D150();
-void __cdecl loc_4789D4(); // idb
-void __cdecl loc_47907F(); // idb
+int GetPartyReputation();
+void OracleDialogue();
+void __fastcall ClickNPCTopic(signed int uMessageParam);
+char * _4B254D_SkillMasteryTeacher(int _this);
+const char *ContractSelectText(int pEventCode);
+void SimpleHouseAndBoatsDialog();
+void CreateButtonInColumn(int a1, unsigned int a2);
+void FillAviableSkillsToTeach(int _this);
+void sub_4B3E1E();
+void DrawJoinGuildWindow(int pEventCode);
+void __fastcall sub_4B3FE5(int a4);
+void NPCHireableDialogPrepare();
+void _4B4224_UpdateNPCTopics(int _this);
+void __fastcall DrawTextAtStatusBar(const char *Str, int a5);
+__int64 GetExperienceRequiredForLevel(int a1);
+const char *sub_4BBA85_bounties();
+void sub_4BBCDD();
+void __fastcall _4BBF61_summon_actor(int a1, __int16 x, int y, int z); // idb
+void ArenaFight();
+void SpellBookGenerator();
+void UI_CreateEndConversationButton();
+void __fastcall OnSelectShopDialogueOption(signed int uMessageParam);
+int sub_4BD8B5();
+bool __fastcall MerchandiseTest(ItemGen *item, int _2da_idx);
+void UIShop_Buy_Identify_Repair();
 bool __fastcall IsBModelVisible(unsigned int uModelID, int *unused);
-void __thiscall ODM_LoadAndInitialize(const char *pLevelFilename, struct OutdoorCamera *thisa);
+void ODM_LoadAndInitialize(const char *pLevelFilename, struct OutdoorCamera *thisa);
 unsigned int GetLevelFogColor();
 int __fastcall sub_47C3D7_get_fog_related_stuff(int a1, int a2, float a3);
-signed int __fastcall GetActorTintColor(int max_dim, int min_dim, float distance, int a4, struct RenderBillboard *a5);
+int __fastcall GetActorTintColor(int max_dim, int min_dim, float distance, int a4, struct RenderBillboard *a5);
 unsigned int WorldPosToGridCellX(int); // weak
 unsigned int WorldPosToGridCellZ(int); // weak
-int __stdcall GridCellToWorldPosX(int); // weak
-int __stdcall GridCellToWorldPosZ(int); // weak
-void __cdecl loc_48118F(); // idb
-void __cdecl loc_481199(); // idb
+int GridCellToWorldPosX(int); // weak
+int GridCellToWorldPosZ(int); // weak
 void ResetPolygons();
-void __cdecl sub_481ED9_MessWithOutdoorCamera();
+void sub_481ED9_MessWithOutdoorCamera();
 bool IsTerrainSlopeTooHigh(int pos_x, int pos_y);
 int __fastcall GetTerrainHeightsAroundParty2(int a1, int a2, int *a3, int a4);
-signed int __cdecl const_1_0();
-void __cdecl sub_487DA9();
-double __thiscall GetFogDensityByTime(struct OutdoorLocation *_this);
-int __stdcall loc_489BB3(struct stru320 *a2, int thisa, unsigned int uNumVertices, RenderVertexSoft *a5, float a6, char uClipFlag); // weak
+void sub_487DA9();
+double GetFogDensityByTime(struct OutdoorLocation *_this);
 bool __fastcall HSV2RGB(float *a1, float *a2, float *a3, float a4, float a5, float a6);
 void __fastcall RGB2HSV(float *a1, float *a2, float a3, float a4, float a5, float *a6);
 unsigned int ReplaceHSV(unsigned int uColor, float a2, float gamma, float a4);
-signed int __cdecl PlayerCreation_Chose4Skills();
-signed int __cdecl PlayerCreation_GetUnspentAttributePointCount();
+int PlayerCreation_Choose4Skills();
+int PlayerCreation_GetUnspentAttributePointCount();
 void LoadPlayerPortraintsAndVoices();
 int __fastcall ReloadPlayerPortraits(int, int); // weak
 void sub_491E3A();
-signed int __thiscall CycleCharacter(unsigned int _this);
+int CycleCharacter(bool backwards);
 void __fastcall Rest(unsigned int uHoursToSleep);
 int _493938_regenerate();
-void sub_493F79(struct stru351_summoned_item *_this, __int64 a2);
+void init_summoned_item(struct stru351_summoned_item *_this, __int64 duration);
 void _494035_timed_effects__water_walking_damage__etc();
 unsigned int __fastcall _494820_training_time(unsigned int a1);
 char *__fastcall sub_495366(unsigned __int8 a1, unsigned __int8 a2);
@@ -1425,51 +1301,100 @@
 unsigned int ModulateColor(unsigned int diffuse, float multiplier); // idb
 struct SoundHeader *FindSound_BinSearch(unsigned int uStart, unsigned int uEnd, const char *pName);
 struct SoundData *LoadSound(const char *pSoundName, struct SoundData *pOutBuff, unsigned int uID);
-int __fastcall sub_4AAEA6_transform(RenderVertexSoft *a1);
+int __fastcall sub_4AAEA6_transform(struct RenderVertexSoft *a1);
 int __fastcall sub_4AB66C(int, int); // weak
 int GetSoundStrengthByDistanceFromParty(int x, int y, int z);
 struct _DIG_DRIVER *Audio_GetFirstHardwareDigitalDriver(void);
-void __cdecl PlayLevelMusic();
+void PlayLevelMusic();
 unsigned int __fastcall sub_4B0E07(unsigned int uFaceID); // idb
 struct Player *__fastcall sub_4B1447_party_fine(int a1, int a2, int a3);
-void __thiscall sub_4B1523(int *_this);
-void __cdecl ShowPopupShopItem();
-void __stdcall RestAndHeal(__int64 uNumMinutes); // idb
-void __cdecl GetHouseGoodbyeSpeech();
-
-void __cdecl sub_4B1ECE();
-void __fastcall ClickNPCTopic(signed int uMessageParam);
-char *__thiscall _4B254D_SkillMasteryTeacher(int _this);
-const char * ContractSelectText(int pEventCode);
-void SimpleHouseAndBoatsDialog();
-void  CreateButtonInColumn(int a1, unsigned int a2);
-void FillAviableSkillsToTeach(int _this);
-void __cdecl sub_4B3E1E();
-void DrawJoinGuildWindow(int pEventCode);
-void __fastcall sub_4B3FE5(int a4);
-void NPCHireableDialogPrepare();
-void _4B4224_UpdateNPCTopics(int _this);
-void __fastcall DrawTextAtStatusBar(const char *Str, int a5);
-int __fastcall sub_4B46F8(int a1);
-
-const char *sub_4BBA85_bounties();
-void __cdecl sub_4BBCDD();
-void __fastcall _4BBF61_summon_actor(int a1, __int16 x, int y, int z); // idb
-void __cdecl ArenaFight();
-void  SpellBookGenerator();
-void UI_CreateEndConversationButton();
-void __fastcall OnSelectShopDialogueOption(signed int uMessageParam);
-signed int __cdecl sub_4BD8B5();
-bool __fastcall MerchandiseTest(ItemGen *item, int _2da_idx);
-void __cdecl UIShop_Buy_Identify_Repair();
-
-
-void __cdecl ShowIntroVideo_and_LoadingScreen();
-unsigned int __thiscall GameOverMenu(void *ecx0);
-bool __thiscall BinkLockBuffer(struct _BINKBUF *_this);
-void __thiscall BinkUnlockBuffer(struct _BINKBUF *_this);
-signed int __fastcall SpawnRandomTreasure(struct MapInfo *a1, struct SpawnPointMM7 *a2);
-void DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, struct Vec3_int_ *pVelocity);
+void sub_4B1523(int *_this);
+void ShowPopupShopItem();
+void RestAndHeal(__int64 uNumMinutes); // idb
+void GetHouseGoodbyeSpeech();
+int __fastcall _46A6AC_spell_render(int a1, int a2, int a3);
+int __fastcall _46A6AC_spell_render_d3d(int a1, int a2, int a3);
+int __fastcall _46A89E_immolation_effect(int a1, int a2, int a3);
+int sub_46A99B();
+unsigned int GetGravityStrength();
+void UpdateUserInput_and_MapSpecificStuff();
+void BLV_UpdateUserInputAndOther();
+void ODM_UpdateUserInputAndOther();
+bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2);
+int BLV_GetFloorLevel(int x, int y, int z, unsigned int uSectorID, unsigned int *pFaceID);
+int ODM_GetFloorLevel(int X, signed int Y, int Z, int, int *pOnWater, int *bmodel_pid, int bWaterWalk);
+int __fastcall sub_46D8E3(int a1, signed int a2, int a3, int a4);
+void ODM_GetTerrainNormalAt(int pos_x, int pos_z, Vec3_int_ *out);
+unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID);
+int __fastcall _46DF1A_collide_against_actor(int, int); // weak
+void _46E0B2_collide_against_decorations();
+void __fastcall _46E26D_collide_against_sprites(signed int a1, signed int a2);
+int _46E44E_collide_against_faces_and_portals(unsigned int b1); // idb
+int __fastcall _46E889_collide_against_bmodels(unsigned int ecx0);
+int collide_against_floor(int x, int y, int z, unsigned int *pSectorID, unsigned int *pFaceID); // idb
+void __fastcall _46ED8A_collide_against_sprite_objects(unsigned int _this);
+int _46EF01_collision_chech_player(int a1); // idb
+int _46F04E_collide_against_portals();
+void BLV_UpdateDoors();
+void UpdateActors_BLV();
+void UpdateActors_ODM();
+void UpdateObjects();
+int collide_against_floor_approximate(int x, int y, int z, unsigned int *pSectorID, unsigned int *pFaceID); // idb
+void BLV_ProcessPartyActions();
+void ODM_ProcessPartyActions();
+bool __fastcall sub_47531C(int a1, int *a2, int a3, int a4, int a5, int a6, int a7, int a8, struct BLVFace *a9, int a10);
+bool __fastcall sub_4754BF(int a1, int *a2, int a3, int a4, int a5, int a6, int a7, int a8, struct BLVFace *a9, int a10, int a11);
+int sub_475665(struct BLVFace *_this, int a2, __int16 a3);
+bool __fastcall sub_4759C9(struct BLVFace *a1, int a2, int a3, __int16 a4);
+bool __fastcall sub_475D85(Vec3_int_ *a1, Vec3_int_ *a2, int *a3, struct BLVFace *a4);
+bool __fastcall sub_475F30(int *a1, struct BLVFace *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9);
+void sub_4452BB();
+const char *GetProfessionActionText(int a1);
+struct NPCData *__fastcall GetNPCData(signed int npcid);
+struct NPCData * GetNewNPCData(signed int npcid, int* npc_indx);
+int __fastcall GetGreetType(signed int SpeakingNPC_ID);
+void  DialogueEnding();
+void PrepareHouse(enum HOUSE_ID house); // idb
+bool EnterHouse(enum HOUSE_ID uHouseID);
+int sub_4465DF_check_season(int a1);
+int __fastcall IsActorAlive(unsigned int uType, unsigned int uParam, unsigned int uNumAlive); // idb
+int NPC_EventProcessor(int npc_event_id, int entry_line = 0);
+void __fastcall sub_448518_npc_set_item(int npc, unsigned int item, int a3);
+void __fastcall sub_44861E_set_texture(unsigned int uFaceCog, const char *pFilename);
+void __fastcall SetDecorationSprite(unsigned int uCog, int a2, const char *pFileName); // idb
+void __fastcall sub_44892E_set_faces_bit(int sCogNumber, int bit, int on);
+void __fastcall ToggleActorGroupFlag(unsigned int uGroupID, unsigned int uFlag, unsigned int bToggle);
+void  GameUI_StatusBar_UpdateTimedString(unsigned int bForceHide); // idb
+void OnTimer(int);
+void __fastcall sub_448CF4_spawn_monsters(__int16 typeindex, __int16 level, int count, int x, int y, int z, int group, unsigned int uUniqueName);
+void __fastcall EventCastSpell(int spellnum, int uSkillLevel, int uSkill, int fromx, int fromy, int fromz, int tox, int toy, int toz);//sub_448DF8
+__int16 __fastcall sub_449A49_door_switch_animation(unsigned int uDoorID, int a2); // idb
+bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2);
+void _449B7E_toggle_bit(unsigned char *pArray, __int16 a2, unsigned __int16 bToggle); // idb
+void ShowStatusBarString(const char *pString, unsigned int uNumSeconds);
+void ShowNothingHereStatus();
+int const_2();
+bool TeleportToNWCDungeon();
+void SpawnEncounter(struct MapInfo *pMapInfo, struct SpawnPointMM7 *spawn, int a3, int a4, int a5);
+int __fastcall sub_44FA4C_spawn_light_elemental(int a1, int a2, int a3);
+int __fastcall sub_450521_ProllyDropItemAt(int ecx0, signed int a2, int a3, int a4, int a5, unsigned __int16 a6);
+int __fastcall _45063B_spawn_some_monster(struct MapInfo *a1, int a2);
+void RespawnGlobalDecorations();
+bool __fastcall SpawnActor(unsigned int uMonsterID);
+int GetAlertStatus();
+unsigned int __fastcall sub_452442(unsigned __int16 a1, unsigned __int16 a2, int a3, int a4);
+int integer_sqrt(int val);
+int __fastcall MakeColorMaskFromBitDepth(int a1);
+void __fastcall fill_pixels_fast(unsigned int a1, unsigned __int16 *pPixels, unsigned int uNumPixels);
+int __fastcall GetDiceResult(unsigned int uNumDice, unsigned int uDiceSides); // idb
+inline int round(float x) { return (int)floor(x + 0.5f); }
+inline void __fastcall memset32(void *ptr, unsigned __int32 value, int count)
+{
+  auto p = (unsigned __int32 *)ptr;
+  for ( int i=0; i < count; i++ )
+    *p++ = value;
+}
+inline void __fastcall j_memset32(int a2, void *a1, unsigned int a3) {memset32(a1, a2, a3);}
 
 
 #define ErrD3D(hr) do {extern void ErrHR(HRESULT, const char *, const char *, const char *, int); ErrHR(hr, "Direct3D", __FUNCTION__, __FILE__, __LINE__);} while(0)