World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл UIDialogue.h

См. исходные тексты.

Классы

class  GUIWindow_Dialogue
 
class  GUIWindow_GenericDialogue
 

Функции

void GameUI_InitializeDialogue (struct Actor *actor, int bPlayerSaysHello)
 
void sub_4451A8_press_any_key (int a1, int a2, int a4)
 
void OnSelectNPCDialogueOption (DIALOGUE_TYPE newDialogueType)
 

Функции

◆ GameUI_InitializeDialogue()

void GameUI_InitializeDialogue ( struct Actor actor,
int  bPlayerSaysHello 
)

См. определение в файле UIDialogue.cpp строка 25

25  {
26  dword_A74CDC = -1;
28  pEventTimer->Pause();
29  pMiscTimer->Pause();
30  pAudioPlayer->StopChannels(-1, -1);
31  uDialogueType = 0;
34  NPCData *pNPCInfo = GetNPCData(actor->sNPC_ID);
35  if ((pNPCInfo->uFlags & 3) != 2) {
36  pNPCInfo->uFlags = pNPCInfo->uFlags + 1;
37  }
38 
39  String filename;
40  switch (pParty->alignment) {
42  filename = "evt02-b";
43  break;
45  filename = "evt02";
46  break;
48  filename = "evt02-c";
49  break;
50  default:
51  Error("Invalid alignment: %u", pParty->alignment);
52  }
54 
57 
58  filename = StringPrintf("npc%03u", pNPCInfo->uPortraitID);
59  pDialogueNPCPortraits[0] = assets->GetImage_ColorKey(filename, 0x7FF);
60 
61  int pNumberContacts = 0;
62  int v9 = 0;
63  if (!pNPCInfo->Hired() && pNPCInfo->Location2D >= 0) {
64  if ((signed int)pParty->GetPartyFame() <= pNPCInfo->fame ||
65  (pNumberContacts = pNPCInfo->uFlags & 0xFFFFFF7F,
66  (pNumberContacts & 0x80000000u) != 0)) {
67  v9 = 1;
68  } else {
69  if (pNumberContacts > 1) {
70  if (pNumberContacts == 2) {
71  v9 = 3;
72  } else {
73  if (pNumberContacts != 3) {
74  if (pNumberContacts != 4) v9 = 1;
75  } else {
76  v9 = 2;
77  }
78  }
79  } else if (pNPCInfo->rep) {
80  v9 = 2;
81  }
82  }
83  }
84  if (sDialogue_SpeakingActorNPC_ID < 0) v9 = 4;
85 
87  0, 0, window->GetWidth(), window->GetHeight(),
88  3); // pNumberContacts = 1, v9 = 0; pNumberContacts = 2, v9 = 3;
89  if (pNPCInfo->Hired() && !pNPCInfo->bHasUsedTheAbility) {
90  if (pNPCInfo->uProfession == 10 || // Healer
91  pNPCInfo->uProfession == 11 || // Expert Healer
92  pNPCInfo->uProfession == 12 || // Master Healer
93  pNPCInfo->uProfession == 33 || // Cook
94  pNPCInfo->uProfession == 34 || // Chef
95  pNPCInfo->uProfession == 39 || // Wind Master
96  pNPCInfo->uProfession == 40 || // Water Master
97  pNPCInfo->uProfession == 41 || // Gate Master
98  pNPCInfo->uProfession == 42 || // Chaplain
99  pNPCInfo->uProfession == 43 || // Piper
100  pNPCInfo->uProfession == 52 // Fallen Wizard
101  ) {
103  480, 250, 140, pFontArrus->GetHeight() - 3, 1, 0,
106  }
107  }
108 
109  pDialogueWindow->CreateButton(61, 424, 31, 40, 2, 94, UIMSG_SelectCharacter,
110  1, '1', "");
111  pDialogueWindow->CreateButton(177, 424, 31, 40, 2, 94,
112  UIMSG_SelectCharacter, 2, '2', "");
113  pDialogueWindow->CreateButton(292, 424, 31, 40, 2, 94,
114  UIMSG_SelectCharacter, 3, '3', "");
115  pDialogueWindow->CreateButton(407, 424, 31, 40, 2, 94,
116  UIMSG_SelectCharacter, 4, '4', "");
117 
118  if (bPlayerSaysHello && uActiveCharacter && !pNPCInfo->Hired()) {
119  if (pParty->uCurrentHour < 5 || pParty->uCurrentHour > 21)
121  else
122  pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodDay, 0);
123  }
124 }

Перекрестные ссылки GUIWindow::_41D08F_set_keyboard_control_group(), Party::alignment, assets, NPCData::bHasUsedTheAbility, GUIWindow::CreateButton(), dword_A74CDC, NPCStats::dword_AE336C_LastMispronouncedNameFirstLetter, NPCData::fame, game_ui_dialogue_background, GUIFont::GetHeight(), AssetsManager::GetImage_ColorKey(), AssetsManager::GetImage_Solid(), GetNPCData(), Party::GetPartyFame(), NPCData::Hired(), NPCData::Location2D, PartyAlignment_Evil, PartyAlignment_Good, PartyAlignment_Neutral, pAudioPlayer, Timer::Pause(), pDialogue_SpeakingActor, pDialogueNPCCount, pDialogueNPCPortraits, pDialogueWindow, pEventTimer, pFontArrus, pMiscTimer, pNPCStats, pParty, pPlayers, NPCData::rep, sDialogue_SpeakingActorNPC_ID, Actor::sNPC_ID, SPEECH_GoodDay, SPEECH_GoodEvening, AudioPlayer::StopChannels(), StringPrintf(), uActiveCharacter, Party::uCurrentHour, uDialogueType, NPCData::uFlags, UIMSG_SelectCharacter, UIMSG_SelectNPCDialogueOption, uNumDialogueNPCPortraits, NPCData::uPortraitID и NPCData::uProfession.

Используется в Application::Game::EventLoop(), EventProcessor(), Game_StartDialogue() и Game_StartHirelingDialogue().

+ Граф вызовов:
+ Граф вызова функции:

◆ sub_4451A8_press_any_key()

void sub_4451A8_press_any_key ( int  a1,
int  a2,
int  a4 
)

См. определение в файле UIDialogue.cpp строка 615

615  {
616  if (!pGUIWindow2) {
617  if (pParty->uFlags & 2) {
618  engine->Draw();
619  }
620  pAudioPlayer->StopChannels(-1, -1);
621  pMiscTimer->Pause();
622  pEventTimer->Pause();
623  dword_5C3418 = a1;
624  dword_5C341C = a2;
626  pGUIWindow2 = new GUIWindow_GenericDialogue(0, 0, window->GetWidth(),
627  window->GetHeight(), a4);
628  pGUIWindow2->CreateButton(61, 424, 31, 40, 2, 94, UIMSG_SelectCharacter,
629  1, '1', "");
630  pGUIWindow2->CreateButton(177, 424, 31, 40, 2, 94,
631  UIMSG_SelectCharacter, 2, '2', "");
632  pGUIWindow2->CreateButton(292, 424, 31, 40, 2, 94,
633  UIMSG_SelectCharacter, 3, '3', "");
634  pGUIWindow2->CreateButton(407, 424, 31, 40, 2, 94,
635  UIMSG_SelectCharacter, 4, '4', "");
636  }
637 }

Перекрестные ссылки _591094_decoration, activeLevelDecoration, GUIWindow::CreateButton(), dword_5C3418, dword_5C341C, engine, pAudioPlayer, Timer::Pause(), pEventTimer, pGUIWindow2, pMiscTimer, pParty, AudioPlayer::StopChannels(), Party::uFlags и UIMSG_SelectCharacter.

Используется в ActorInteraction() и EventProcessor().

+ Граф вызовов:
+ Граф вызова функции:

◆ OnSelectNPCDialogueOption()

void OnSelectNPCDialogueOption ( DIALOGUE_TYPE  newDialogueType)

См. определение в файле UIDialogue.cpp строка 660

660  {
661  int npc_event_id; // ecx@10
662  char *v13; // [sp-8h] [bp-18h]@60
663 
665  uDialogueType = newDialogueType;
666  if (!speakingNPC->uFlags) speakingNPC->uFlags = 1;
667  if (newDialogueType == DIALOGUE_PROFESSION_DETAILS) {
669  } else if (newDialogueType == DIALOGUE_76) {
670  if (speakingNPC->Hired()) {
671  if ((signed int)pNPCStats->uNumNewNPCs > 0) {
672  for (uint i = 0; i < (unsigned int)pNPCStats->uNumNewNPCs;
673  ++i) {
674  if (pNPCStats->pNewNPCData[i].uFlags & 0x80 &&
675  !strcmp(speakingNPC->pName,
677  pNPCStats->pNewNPCData[i].uFlags &= 0x7Fu;
678  }
679  }
680  if (pParty->pHirelings[0].pName &&
681  !_stricmp(pParty->pHirelings[0].pName, speakingNPC->pName))
682  memset(&pParty->pHirelings[0], 0, sizeof(NPCData));
683  else if (pParty->pHirelings[1].pName &&
684  !_stricmp(pParty->pHirelings[1].pName, speakingNPC->pName))
685  memset(&pParty->pHirelings[1], 0, sizeof(NPCData));
688  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
689  dword_7241C8 = 0;
690  return;
691  }
692  if (pParty->pHirelings[0].pName && pParty->pHirelings[1].pName) {
694  533)); // "I cannot join you, you're party is full"
695  } else {
696  if (speakingNPC->uProfession != 51) {
697  // burglars have no hiring price
698  if (pParty->GetGold() < pNPCStats->pProfessions[speakingNPC->uProfession].uHirePrice) {
699  GameUI_StatusBar_OnEvent(localization->GetString(LSTR_NOT_ENOUGH_GOLD));
701  uDialogueType = 13;
702  if (uActiveCharacter)
703  pPlayers[uActiveCharacter]->PlaySound(
705  if (!dword_7241C8) engine->Draw();
706  dword_7241C8 = 0;
707  return;
708  }
710  pNPCStats->pProfessions[speakingNPC->uProfession]
711  .uHirePrice);
712  }
713  speakingNPC->uFlags |= 0x80u;
714  if (pParty->pHirelings[0].pName) {
715  memcpy(&pParty->pHirelings[1], speakingNPC,
716  sizeof(pParty->pHirelings[1]));
717  v13 = pParty->pHireling2Name;
718  } else {
719  memcpy(&pParty->pHirelings[0], speakingNPC,
720  sizeof(pParty->pHirelings[0]));
721  v13 = pParty->pHireling1Name;
722  }
723  strcpy(v13, speakingNPC->pName);
726  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
729  if (uActiveCharacter)
730  pPlayers[uActiveCharacter]->PlaySound(SPEECH_61, 0);
731  }
732  } else if ((int)newDialogueType > DIALOGUE_84 &&
733  (int)newDialogueType <=
734  DIALOGUE_ARENA_SELECT_CHAMPION) { // выбор уровня сложности боя
735  ArenaFight();
736  return;
737  } else if (newDialogueType == DIALOGUE_USE_NPC_ABILITY) {
738  if (UseNPCSkill((NPCProf)speakingNPC->uProfession) == 0) {
739  if (speakingNPC->uProfession != GateMaster) {
740  speakingNPC->bHasUsedTheAbility = 1;
741  }
742  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
743  } else {
745  localization->GetString(140)); // "Your packs are already full!"
746  }
747  } else if (newDialogueType == DIALOGUE_13) {
748  if (!speakingNPC->Hired()) {
749  sub_4B3E1E();
751  } else {
752  for (uint i = 0; i < (signed int)pNPCStats->uNumNewNPCs; ++i) {
753  if (pNPCStats->pNewNPCData[i].uFlags & 0x80 &&
754  !strcmp(speakingNPC->pName,
756  pNPCStats->pNewNPCData[i].uFlags &= 0x7Fu;
757  }
758  if (pParty->pHirelings[0].pName &&
759  !_stricmp(pParty->pHirelings[0].pName, speakingNPC->pName))
760  memset(&pParty->pHirelings[0], 0, sizeof(NPCData));
761  else if (pParty->pHirelings[1].pName &&
762  !_stricmp(pParty->pHirelings[1].pName, speakingNPC->pName))
763  memset(&pParty->pHirelings[1], 0, sizeof(NPCData));
766  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
767  dword_7241C8 = 0;
768  return;
769  }
770  } else if (newDialogueType >= DIALOGUE_EVT_A &&
771  newDialogueType <= DIALOGUE_EVT_F) {
772  switch (newDialogueType) {
773  case DIALOGUE_EVT_A:
774  npc_event_id = speakingNPC->evt_A;
775  break;
776  case DIALOGUE_EVT_B:
777  npc_event_id = speakingNPC->evt_B;
778  break;
779  case DIALOGUE_EVT_C:
780  npc_event_id = speakingNPC->evt_C;
781  break;
782  case DIALOGUE_EVT_D:
783  npc_event_id = speakingNPC->evt_D;
784  break;
785  case DIALOGUE_EVT_E:
786  npc_event_id = speakingNPC->evt_E;
787  break;
788  case DIALOGUE_EVT_F:
789  npc_event_id = speakingNPC->evt_F;
790  break;
791  }
792  if ((npc_event_id >= 200) && (npc_event_id <= 310)) {
793  _4B3FE5_training_dialogue(npc_event_id); // 200-310
794  } else if ((npc_event_id >= 400) && (npc_event_id <= 410)) { // 400-410
795  dword_F8B1D8 = newDialogueType;
796  DrawJoinGuildWindow(npc_event_id - 400);
797  } else {
798  switch (npc_event_id) {
799  case 139:
800  OracleDialogue();
801  break;
802  case 311:
804  break;
805  case 399:
807  break;
808  default:
810  current_npc_text.clear();
811  EventProcessor(npc_event_id, 0, 1);
812  activeLevelDecoration = nullptr;
813  break;
814  }
815  }
816  }
817  if (!dword_7241C8) engine->Draw();
818  dword_7241C8 = 0;
819 }

Перекрестные ссылки _4B3FE5_training_dialogue(), activeLevelDecoration, Arena_SelectionFightLevel(), ArenaFight(), NPCData::bHasUsedTheAbility, CheckBountyRespawnAndAward(), Party::CountHirelings(), current_npc_text, DIALOGUE_13, DIALOGUE_76, DIALOGUE_84, DIALOGUE_ARENA_SELECT_CHAMPION, DIALOGUE_EVT_A, DIALOGUE_EVT_B, DIALOGUE_EVT_C, DIALOGUE_EVT_D, DIALOGUE_EVT_E, DIALOGUE_EVT_F, DIALOGUE_PROFESSION_DETAILS, dialogue_show_profession_details, DIALOGUE_USE_NPC_ABILITY, DrawJoinGuildWindow(), dword_7241C8, dword_F8B1D8, engine, EventProcessor(), NPCData::evt_A, NPCData::evt_B, NPCData::evt_C, NPCData::evt_D, NPCData::evt_E, NPCData::evt_F, GameUI_StatusBar_OnEvent(), GateMaster, Party::GetGold(), GetNPCData(), Localization::GetString(), NPCData::Hired(), Party::hirelingScrollPosition, localization, OracleDialogue(), pDialogue_SpeakingActor, Party::pHireling1Name, Party::pHireling2Name, Party::pHirelings, pMessageQueue_50CBD0, NPCData::pName, NPCStats::pNewNPCData, pNPCStats, pParty, pPlayers, NPCStats::pProfessions, Removed, sDialogue_SpeakingActorNPC_ID, SPEECH_61, SPEECH_NotEnoughGold, sub_4B3E1E(), Party::TakeGold(), uActiveCharacter, Actor::uAIState, uDialogueType, NPCData::uFlags, NPCProfession::uHirePrice, UIMSG_Escape, NPCStats::uNumNewNPCs, NPCData::uProfession и UseNPCSkill().

Используется в Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:
uNumDialogueNPCPortraits
int uNumDialogueNPCPortraits
Definition: NPC.cpp:28
PartyAlignment::PartyAlignment_Good
@ PartyAlignment_Good
GetNPCData
NPCData * GetNPCData(signed int npcid)
Definition: NPC.cpp:43
DIALOGUE_EVT_D
@ DIALOGUE_EVT_D
Definition: GUIWindow.h:273
Localization::GetString
const char * GetString(unsigned int index) const
Definition: Localization.cpp:13
NPCData::uProfession
unsigned int uProfession
Definition: NPC.h:89
dword_F8B1D8
int dword_F8B1D8
Definition: mm7_data.cpp:777
UIMSG_Escape
@ UIMSG_Escape
Definition: GUIWindow.h:96
PartyAlignment::PartyAlignment_Neutral
@ PartyAlignment_Neutral
NPCProfession::uHirePrice
unsigned int uHirePrice
Definition: NPC.h:115
AssetsManager::GetImage_Solid
Texture * GetImage_Solid(const String &name)
Definition: AssetsManager.cpp:51
DIALOGUE_76
@ DIALOGUE_76
Definition: GUIWindow.h:276
NPCData::uFlags
unsigned int uFlags
Definition: NPC.h:84
SPEECH_61
@ SPEECH_61
Definition: Player.h:107
NPCData::Hired
bool Hired()
Definition: NPC.h:80
DIALOGUE_PROFESSION_DETAILS
@ DIALOGUE_PROFESSION_DETAILS
Definition: GUIWindow.h:277
GUIWindow::CreateButton
GUIButton * CreateButton(int x, int y, int width, int height, int a6, int a7, UIMessageType msg, unsigned int msg_param, uint8_t hotkey, const String &label, const std::vector< Image * > &textures=std::vector< Image * >())
Definition: GUIWindow.cpp:717
PartyAlignment::PartyAlignment_Evil
@ PartyAlignment_Evil
Party::hirelingScrollPosition
unsigned __int8 hirelingScrollPosition
Definition: Party.h:268
engine
std::shared_ptr< Engine > engine
Definition: Engine.cpp:130
ArenaFight
void ArenaFight()
Definition: UIArena.cpp:95
NPCData::evt_B
unsigned int evt_B
Definition: NPC.h:94
_591094_decoration
struct LevelDecoration * _591094_decoration
Definition: mm7_data.cpp:606
localization
Localization * localization
Definition: Localization.cpp:11
SPEECH_NotEnoughGold
@ SPEECH_NotEnoughGold
Definition: Player.h:84
Party::uCurrentHour
unsigned int uCurrentHour
Definition: Party.h:275
pDialogue_SpeakingActor
struct Actor * pDialogue_SpeakingActor
Definition: mm7_data.cpp:603
UIMSG_SelectCharacter
@ UIMSG_SelectCharacter
Definition: GUIWindow.h:93
dword_5C3418
int dword_5C3418
Definition: mm7_data.cpp:634
GUIFont::GetHeight
unsigned int GetHeight() const
Definition: GUIFont.cpp:84
NPCData::evt_E
unsigned int evt_E
Definition: NPC.h:97
DIALOGUE_ARENA_SELECT_CHAMPION
@ DIALOGUE_ARENA_SELECT_CHAMPION
Definition: GUIWindow.h:283
DIALOGUE_EVT_B
@ DIALOGUE_EVT_B
Definition: GUIWindow.h:271
NPCData::evt_C
unsigned int evt_C
Definition: NPC.h:95
pPlayers
NZIArray< struct Player *, 5 > pPlayers
Definition: Player.cpp:46
Party::GetPartyFame
unsigned int GetPartyFame()
Definition: Party.cpp:302
dword_A74CDC
int dword_A74CDC
Definition: mm7_data.cpp:762
Actor::uAIState
AIState uAIState
Definition: Actor.h:307
GUIWindow::_41D08F_set_keyboard_control_group
void _41D08F_set_keyboard_control_group(int num_buttons, int a3, int a4, int a5)
Definition: GUIWindow.cpp:273
NPCData::evt_A
unsigned int evt_A
Definition: NPC.h:93
DIALOGUE_13
@ DIALOGUE_13
Definition: GUIWindow.h:268
NPCData::evt_D
unsigned int evt_D
Definition: NPC.h:96
pGUIWindow2
GUIWindow * pGUIWindow2
Definition: GUIWindow.cpp:60
NPCStats::uNumNewNPCs
unsigned int uNumNewNPCs
Definition: NPC.h:179
activeLevelDecoration
LevelDecoration * activeLevelDecoration
Definition: Decoration.cpp:10
pParty
Party * pParty
Definition: Party.cpp:30
pFontArrus
GUIFont * pFontArrus
Definition: GUIFont.cpp:18
NPCData::pName
char * pName
Definition: NPC.h:82
NPCStats::pNewNPCData
NPCData pNewNPCData[501]
Definition: NPC.h:165
current_npc_text
String current_npc_text
Definition: mm7_data.cpp:780
SPEECH_GoodDay
@ SPEECH_GoodDay
Definition: Player.h:68
NPCStats::pProfessions
NPCProfession pProfessions[59]
Definition: NPC.h:167
Party::pHireling2Name
char pHireling2Name[100]
Definition: Party.h:319
AssetsManager::GetImage_ColorKey
Texture * GetImage_ColorKey(const String &name, uint16_t colorkey)
Definition: AssetsManager.cpp:34
GUIWindow_Dialogue
Definition: UIDialogue.h:5
Party::TakeGold
static void TakeGold(int amount)
Definition: Party.cpp:292
dialogue_show_profession_details
char dialogue_show_profession_details
Definition: mm7_data.cpp:781
AudioPlayer::StopChannels
void StopChannels(int uStartChannel, int uEndChannel)
Definition: AudioPlayer.cpp:331
DrawJoinGuildWindow
void DrawJoinGuildWindow(int pEventCode)
Definition: GUIWindow.cpp:794
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
Party::uFlags
unsigned int uFlags
Definition: Party.h:313
NPCProf
NPCProf
Definition: NPC.h:5
NPCData::rep
int rep
Definition: NPC.h:87
Actor::sNPC_ID
int16_t sNPC_ID
Definition: Actor.h:287
NPCData::fame
int fame
Definition: NPC.h:86
Timer::Pause
void Pause()
Definition: Time.cpp:19
NPCData
Definition: NPC.h:79
Arena_SelectionFightLevel
void Arena_SelectionFightLevel()
Definition: UIArena.cpp:34
pDialogueNPCCount
int pDialogueNPCCount
Definition: NPC.cpp:26
LevelDecoration
Definition: Decoration.h:20
Removed
@ Removed
Definition: Actor.h:86
GUIWindow_GenericDialogue
Definition: UIDialogue.h:16
NPCData::uPortraitID
unsigned int uPortraitID
Definition: NPC.h:83
pMiscTimer
Timer * pMiscTimer
Definition: Time.cpp:7
NPCData::Location2D
unsigned int Location2D
Definition: NPC.h:88
Party::pHirelings
std::array< NPCData, 2 > pHirelings
Definition: Party.h:311
Party::CountHirelings
void CountHirelings()
Definition: Party.cpp:57
pDialogueNPCPortraits
std::array< class Image *, 6 > pDialogueNPCPortraits
Definition: NPC.cpp:27
GateMaster
@ GateMaster
Definition: NPC.h:46
Party::pHireling1Name
char pHireling1Name[100]
Definition: Party.h:318
dword_7241C8
int dword_7241C8
Definition: mm7_data.cpp:744
uDialogueType
unsigned int uDialogueType
Definition: mm7_data.cpp:604
NPCData::bHasUsedTheAbility
int bHasUsedTheAbility
Definition: NPC.h:100
DIALOGUE_EVT_E
@ DIALOGUE_EVT_E
Definition: GUIWindow.h:274
CheckBountyRespawnAndAward
void CheckBountyRespawnAndAward()
Definition: GUIWindow.cpp:1763
SPEECH_GoodEvening
@ SPEECH_GoodEvening
Definition: Player.h:69
assets
AssetsManager * assets
Definition: AssetsManager.cpp:12
uint
unsigned int uint
Definition: MM7.h:4
uActiveCharacter
unsigned int uActiveCharacter
Definition: mm7_data.cpp:555
NPCData::evt_F
unsigned int evt_F
Definition: NPC.h:98
pNPCStats
struct NPCStats * pNPCStats
Definition: NPC.cpp:29
GameUI_StatusBar_OnEvent
void GameUI_StatusBar_OnEvent(const String &str, unsigned int num_seconds)
Definition: UIStatusBar.cpp:33
_4B3FE5_training_dialogue
void _4B3FE5_training_dialogue(int a4)
Definition: GUIWindow.cpp:1673
sub_4B3E1E
void sub_4B3E1E()
Definition: UIDialogue.cpp:639
EventProcessor
void EventProcessor(int uEventID, int targetObj, int canShowMessages, int entry_line)
Definition: Events.cpp:260
game_ui_dialogue_background
Image * game_ui_dialogue_background
Definition: UIGame.cpp:93
DIALOGUE_EVT_F
@ DIALOGUE_EVT_F
Definition: GUIWindow.h:275
NPCStats::dword_AE336C_LastMispronouncedNameFirstLetter
static int dword_AE336C_LastMispronouncedNameFirstLetter
Definition: NPC.h:193
DIALOGUE_EVT_A
@ DIALOGUE_EVT_A
Definition: GUIWindow.h:270
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
pMessageQueue_50CBD0
struct GUIMessageQueue * pMessageQueue_50CBD0
Definition: GUIWindow.cpp:86
pDialogueWindow
GUIWindow * pDialogueWindow
Definition: GUIWindow.cpp:50
UseNPCSkill
int UseNPCSkill(NPCProf profession)
Definition: NPC.cpp:1378
StringPrintf
String StringPrintf(const char *fmt,...)
Definition: Strings.cpp:9
dword_5C341C
int dword_5C341C
Definition: mm7_data.cpp:635
String
std::string String
Definition: Strings.h:10
DIALOGUE_USE_NPC_ABILITY
@ DIALOGUE_USE_NPC_ABILITY
Definition: GUIWindow.h:267
UIMSG_SelectNPCDialogueOption
@ UIMSG_SelectNPCDialogueOption
Definition: GUIWindow.h:118
pEventTimer
Timer * pEventTimer
Definition: Time.cpp:8
Party::GetGold
int GetGold() const
Definition: Party.cpp:264
DIALOGUE_EVT_C
@ DIALOGUE_EVT_C
Definition: GUIWindow.h:272
OracleDialogue
void OracleDialogue()
Definition: GUIWindow.cpp:1693
sDialogue_SpeakingActorNPC_ID
int sDialogue_SpeakingActorNPC_ID
Definition: mm7_data.cpp:605
Party::alignment
PartyAlignment alignment
Definition: Party.h:308
DIALOGUE_84
@ DIALOGUE_84
Definition: GUIWindow.h:279