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

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

Классы

struct  NPCTopic
 
struct  NPCData
 
struct  NPCProfession
 
struct  NPCProfessionChance
 
struct  NPCGreeting
 
struct  NPCStats
 

Перечисления

enum  NPCProf {
  Smith = 1, Armorer = 2, Alchemist = 3, Scholar = 4,
  Guide = 5, Tracker = 6, Pathfinder = 7, Sailor = 8,
  Navigator = 9, Healer = 10, ExpertHealer = 11, MasterHealer = 12,
  Teacher = 13, Instructor = 14, Armsmaster = 15, Weaponsmaster = 16,
  Apprentice = 17, Mystic = 18, Spellmaster = 19, Trader = 20,
  Merchant = 21, Scout = 22, Herbalist = 23, Apothecary = 24,
  Tinker = 25, Locksmith = 26, Fool = 27, ChimneySweep = 28,
  Porter = 29, QuarterMaster = 30, Factor = 31, Banker = 32,
  Cook = 33, Chef = 34, Horseman = 35, Bard = 36,
  Enchanter = 37, Cartographer = 38, WindMaster = 39, WaterMaster = 40,
  GateMaster = 41, Acolyte = 42, Piper = 43, Explorer = 44,
  Pirate = 45, Squire = 46, Psychic = 47, Gypsy = 48,
  Diplomat = 49, Duper = 50, Burglar = 51, FallenWizard = 52,
  Acolyte2, Initiate, Prelate, Monk = 56,
  Sage = 57, Hunter = 58
}
 

Функции

bool PartyHasDragon ()
 
bool CheckHiredNPCSpeciality (unsigned int uProfession)
 
int UseNPCSkill (NPCProf profession)
 
const char * ContractSelectText (int pEventCode)
 
void NPCHireableDialogPrepare ()
 
void _4B4224_UpdateNPCTopics (int _this)
 
const char * GetProfessionActionText (int a1)
 
struct NPCDataGetNPCData (signed int npcid)
 
struct NPCDataGetNewNPCData (signed int npcid, int *npc_indx)
 
int GetGreetType (signed int SpeakingNPC_ID)
 
int NPC_EventProcessor (int npc_event_id, int entry_line=0)
 

Переменные

std::array< NPCTopic, 789 > pNPCTopics
 
int pDialogueNPCCount
 
std::array< class Image *, 6 > pDialogueNPCPortraits
 
int uNumDialogueNPCPortraits
 
struct NPCStatspNPCStats
 

Перечисления

◆ NPCProf

enum NPCProf
Элементы перечислений
Smith 
Armorer 
Alchemist 
Scholar 
Guide 
Tracker 
Pathfinder 
Sailor 
Navigator 
Healer 
ExpertHealer 
MasterHealer 
Teacher 
Instructor 
Armsmaster 
Weaponsmaster 
Apprentice 
Mystic 
Spellmaster 
Trader 
Merchant 
Scout 
Herbalist 
Apothecary 
Tinker 
Locksmith 
Fool 
ChimneySweep 
Porter 
QuarterMaster 
Factor 
Banker 
Cook 
Chef 
Horseman 
Bard 
Enchanter 
Cartographer 
WindMaster 
WaterMaster 
GateMaster 
Acolyte 
Piper 
Explorer 
Pirate 
Squire 
Psychic 
Gypsy 
Diplomat 
Duper 
Burglar 
FallenWizard 
Acolyte2 
Initiate 
Prelate 
Monk 
Sage 
Hunter 

См. определение в файле NPC.h строка 5

5  {
6  Smith = 1, // GM Weapon Repair;
7  Armorer = 2, // GM Armor Repair;
8  Alchemist = 3, // GM Potion Repair;
9  Scholar = 4, // GM Item ID; Learning: +5
10  Guide = 5, // Travel by foot: -1 day;
11  Tracker = 6, // Travel by foot: -2 days;
12  Pathfinder = 7, // Travel by foot: -3 days;
13  Sailor = 8, // Travel by sea: -2 days;
14  Navigator = 9, // Travel by sea: -3 days;
15  Healer = 10,
16  ExpertHealer = 11,
17  MasterHealer = 12,
18  Teacher = 13, // Learning: +10;
19  Instructor = 14, // Learning: +15;
20  Armsmaster = 15, // Armsmaster: +2;
21  Weaponsmaster = 16, // Armsmaster: +3;
22  Apprentice = 17, // Fire: +2; Air: +2; Water: +2; Earth: +2;
23  Mystic = 18, // Fire: +3; Air: +3; Water: +3; Earth: +3;
24  Spellmaster = 19, // Fire: +4; Air: +4; Water: +4; Earth: +4;
25  Trader = 20, // Merchant: +4;
26  Merchant = 21, // Merchant: +6;
27  Scout = 22, // Perception: +6;
28  Herbalist = 23, // Alchemy: +4;
29  Apothecary = 24, // Alchemy: +8;
30  Tinker = 25, // Traps: +4;
31  Locksmith = 26, // Traps: +6;
32  Fool = 27, // Luck: +5;
33  ChimneySweep = 28, // Luck: +20;
34  Porter = 29, // Food for rest: -1;
35  QuarterMaster = 30, // Food for rest: -2;
36  Factor = 31, // Gold finds: +10%;
37  Banker = 32, // Gold finds: +20%;
38  Cook = 33,
39  Chef = 34,
40  Horseman = 35, // Travel by foot: -2 days;
41  Bard = 36,
42  Enchanter = 37, // Resist All: +20;
43  Cartographer = 38, // Wizard Eye level 2;
44  WindMaster = 39,
45  WaterMaster = 40,
46  GateMaster = 41,
47  Acolyte = 42,
48  Piper = 43,
49  Explorer = 44, // Travel by foot -1 day; Travel by sea: -1 day;
50  Pirate = 45, // Travel by sea: -2 days; Gold finds: +10%; Reputation:
51  // +5;
52  Squire = 46,
53  Psychic = 47, // Perception: +5; Luck: +10;
54  Gypsy = 48, // Food for rest: -1; Merchant: +3; Reputation: +5;
55  Diplomat = 49,
56  Duper = 50, // Merchant: +8; Reputation: +5;
57  Burglar = 51, // Traps: +8; Stealing: +8; Reputation: +5;
58  FallenWizard = 52, // Reputation: +5;
59  Acolyte2 =
60  53, // Spirit: +2; Mind: +2; Body: +2;
61  Initiate =
62  54, // Spirit: +3; Mind: +3; Body: +3;
63  Prelate =
64  55, // Spirit: +4; Mind: +4; Body: +4;
65  Monk = 56, // Unarmed: +2; Dodge: +2;
66  Sage = 57, // Monster ID: +6
67  Hunter = 58 // Monster ID: +6
68 };

Функции

◆ PartyHasDragon()

bool PartyHasDragon ( )

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

750 { return pNPCStats->pNewNPCData[57].Hired(); }

Перекрестные ссылки NPCData::Hired(), NPCStats::pNewNPCData и pNPCStats.

Используется в _493938_regenerate(), Player::GetActualSkillLevel() и PrepareToLoadRestUI().

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

◆ CheckHiredNPCSpeciality()

bool CheckHiredNPCSpeciality ( unsigned int  uProfession)

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

754  {
755  if (bNoNPCHiring == 1) return 0;
756 
757  for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) {
758  if (pNPCStats->pNewNPCData[i].uProfession == uProfession &&
760  0x80)) // Uninitialized memory access
761  return true;
762  }
763  if (pParty->pHirelings[0].uProfession == uProfession ||
764  pParty->pHirelings[1].uProfession == uProfession)
765  return true;
766  else
767  return false;
768 }

Перекрестные ссылки bNoNPCHiring, Party::pHirelings, NPCStats::pNewNPCData, pNPCStats, pParty, NPCData::uFlags, NPCStats::uNumNewNPCs и NPCData::uProfession.

Используется в Player::CanIdentify(), Player::CanRepair(), Player::CompareVariable(), GameUI_DrawMinimap(), Player::GetActualLuck(), Player::GetActualResistance(), Player::GetActualSkillLevel(), Party::GetPartyReputation(), GetTravelTime(), Party::PartyFindsGold(), PrepareToLoadRestUI() и TravelByTransport().

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

◆ UseNPCSkill()

int UseNPCSkill ( NPCProf  profession)

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

1378  {
1379  switch (profession) {
1380  case Healer: {
1381  for (int i = 0; i < 4; ++i)
1382  pParty->pPlayers[i].sHealth =
1383  pParty->pPlayers[i].GetMaxHealth();
1384  } break;
1385 
1386  case ExpertHealer: {
1387  for (int i = 0; i < 4; ++i) {
1388  pParty->pPlayers[i].sHealth =
1389  pParty->pPlayers[i].GetMaxHealth();
1390 
1391  for (int j = 0; j < 14; ++j)
1392  pParty->pPlayers[i].conditions_times[j].Reset();
1393  pParty->pPlayers[i].conditions_times[Condition_Good].Reset();
1394  }
1395  } break;
1396 
1397  case MasterHealer: {
1398  for (int i = 0; i < 4; ++i) {
1399  __debugbreak(); // Ritor1:needed cleaned(Необходимо почистить)
1400  Player *player = &pParty->pPlayers[i];
1401  pParty->pPlayers[i].sHealth =
1402  pParty->pPlayers[i].GetMaxHealth();
1403 
1404  int v5 = HEXRAYS_LODWORD(
1405  player->conditions_times[19]); // *((int *)v4 - 32);
1406  int v6 = HEXRAYS_HIDWORD(
1407  player->conditions_times[19]); // *((int *)v4 - 31);
1408  memset(&pParty->pPlayers[i].conditions_times, 0,
1409  sizeof(pParty->pPlayers[i].conditions_times));
1410 
1411  *(int *)&player->pActiveSkills[PLAYER_SKILL_SHIELD] = v5;
1412  *(int *)&player->pActiveSkills[PLAYER_SKILL_CHAIN] = v6;
1413  }
1414  } break;
1415 
1416  case Cook: {
1417  if (pParty->GetFood() >= 13) return 1;
1418 
1419  Party::GiveFood(1);
1420  } break;
1421 
1422  case Chef: {
1423  if (pParty->GetFood() >= 13) return 1;
1424 
1425  if (pParty->GetFood() == 13)
1426  Party::GiveFood(1);
1427  else
1428  Party::GiveFood(2);
1429  } break;
1430 
1431  case WindMaster: {
1434  494)); // Can't fly indoors Нельзя применить знание
1435  // Полет в помещении!
1436  pAudioPlayer->PlaySound(SOUND_fizzle, 0, 0, -1, 0, 0);
1437  } else {
1438  int v19 = pOtherOverlayList->_4418B1(10008, 203, 0, 65536);
1441  v19, 0);
1442  pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags |= 1;
1443  pAudioPlayer->PlaySound(SOUND_21fly03, 0, 0, -1, 0, 0);
1444  }
1445  } break;
1446 
1447  case WaterMaster: {
1448  int v20 = pOtherOverlayList->_4418B1(10005, 201, 0, 65536);
1450  GameTime(pParty->GetPlayingTime() + GameTime::FromHours(3)), 3, 0, v20,
1451  0);
1453  pAudioPlayer->PlaySound(SOUND_WaterWalk, 0, 0, -1, 0, 0);
1454  } break;
1455 
1456  case GateMaster: {
1457  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
1458  dword_50C9DC = 195;
1460  } break;
1461 
1462  case Acolyte:
1464  break;
1465  case Piper:
1467  break;
1468  case FallenWizard:
1470  break;
1471 
1472  case Teacher:
1473  case Instructor:
1474  case Armsmaster:
1475  case Weaponsmaster:
1476  case Apprentice:
1477  case Mystic:
1478  case Spellmaster:
1479  case Trader:
1480  case Merchant:
1481  case Scout:
1482  case Herbalist:
1483  case Apothecary:
1484  case Tinker:
1485  case Locksmith:
1486  case Fool:
1487  case ChimneySweep:
1488  case Porter:
1489  case QuarterMaster:
1490  case Factor:
1491  case Banker:
1492  case Horseman:
1493  case Bard:
1494  case Enchanter:
1495  case Cartographer:
1496  case Explorer:
1497  case Pirate:
1498  case Squire:
1499  case Psychic:
1500  case Gypsy:
1501  case Diplomat:
1502  case Duper:
1503  case Burglar:
1504  case Acolyte2:
1505  case Initiate:
1506  case Prelate:
1507  case Monk:
1508  case Sage:
1509  case Hunter:
1510  break;
1511 
1512  default:
1513  assert(false && "Invalid enum value");
1514  }
1515  return 0;
1516 }

Перекрестные ссылки _42777D_CastSpell_UseWand_ShootArrow(), OtherOverlayList::_4418B1(), __debugbreak(), Acolyte, Acolyte2, Apothecary, Apprentice, Armsmaster, Banker, Bard, Burglar, Cartographer, Chef, ChimneySweep, Condition_Good, Player::conditions_times, Cook, Diplomat, Duper, dword_50C9DC, Enchanter, ExpertHealer, Explorer, Factor, FallenWizard, Fool, GameTime::FromHours(), GameUI_StatusBar_OnEvent(), GateMaster, Party::GetFood(), GetNPCData(), Party::GetPlayingTime(), Localization::GetString(), Party::GiveFood(), Gypsy, Healer, Herbalist, Horseman, Hunter, Initiate, Instructor, LEVEL_Indoor, localization, Locksmith, MasterHealer, Merchant, Monk, Mystic, Player::pActiveSkills, PARTY_BUFF_FLY, PARTY_BUFF_WATER_WALK, pAudioPlayer, Piper, Pirate, PLAYER_SKILL_CHAIN, PLAYER_SKILL_SHIELD, AudioPlayer::PlaySound(), pMessageQueue_50CBD0, Porter, pOtherOverlayList, pParty, Party::pPartyBuffs, Party::pPlayers, Prelate, Psychic, ptr_50C9E0, QuarterMaster, Sage, Scout, sDialogue_SpeakingActorNPC_ID, SOUND_21fly03, SOUND_fizzle, SOUND_WaterWalk, SPELL_LIGHT_HOUR_OF_POWER, SPELL_SPIRIT_BLESS, SPELL_SPIRIT_HEROISM, Spellmaster, Squire, Teacher, Tinker, Trader, uCurrentlyLoadedLevelType, UIMSG_Escape, WaterMaster, Weaponsmaster и WindMaster.

Используется в OnSelectNPCDialogueOption().

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

◆ ContractSelectText()

const char* ContractSelectText ( int  pEventCode)

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

1052  {
1053  static const int dialogue_base = 110;
1054  contract_approved = 0;
1055  dword_F8B1AC_award_bit_number = pEventCode + 50;
1057 
1058  if (uActiveCharacter == 0)
1059  uActiveCharacter = pParty->GetFirstCanAct(); // avoid nzi
1060 
1061  if (pPlayers[uActiveCharacter]->CanAct()) {
1064  ->_achieved_awards_bits,
1066  return pNPCTopics[dialogue_base + 13].pText;
1067  } else {
1068  if (gold_transaction_amount <= pParty->GetGold()) {
1069  contract_approved = 1;
1070  return pNPCTopics[pEventCode + dialogue_base].pText;
1071  } else {
1072  return pNPCTopics[dialogue_base + 14].pText;
1073  }
1074  }
1075  } else {
1076  return pNPCTopics[dialogue_base + 12].pText;
1077  }
1078 }

Перекрестные ссылки _449B57_test_bit(), contract_approved, dword_F8B1AC_award_bit_number, Party::GetFirstCanAct(), gold_transaction_amount, pNPCTopics, pParty, pPlayers, price_for_membership и uActiveCharacter.

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

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

◆ NPCHireableDialogPrepare()

void NPCHireableDialogPrepare ( )

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

1080  {
1081  signed int v0; // ebx@1
1082  NPCData *v1; // edi@1
1083 
1084  v0 = 0;
1085  v1 = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount +
1086  -(dword_591080 != 0))]; //- 1
1088  pDialogueWindow = new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), 350, 0);
1090  471, 0x1BDu, 0xA9u, 0x23u, 1, 0, UIMSG_Escape, 0, 0,
1091  localization->GetString(34), // "Cancel"
1092  {{ui_exit_cancel_button_background}});
1093  pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0,
1095  if (pNPCStats->pProfessions[v1->uProfession]
1096  .pBenefits) { // *(&pNPCStats->field_13A5C + 5 * v1->uProfession) )
1098  480, 0xA0u, 0x8Cu, 0x1Eu, 1, 0, UIMSG_ClickNPCTopic, 0x4Du, 0,
1099  localization->GetString(407)); // "More Information"
1100  v0 = 1;
1101  }
1102  pDialogueWindow->CreateButton(0x1E0u, 30 * v0 + 160, 0x8Cu, 0x1Eu, 1, 0,
1103  UIMSG_ClickNPCTopic, 0x4Cu, 0,
1104  localization->GetString(406)); // "Hire"
1107 }

Перекрестные ссылки GUIWindow::CreateButton(), dword_591080, Localization::GetString(), HouseNPCData, localization, pBtn_ExitCancel, pDialogueNPCCount, pDialogueWindow, GUIWindow::Release(), UIMSG_Escape и WINDOW_Dialogue.

Используется в ClickNPCTopic().

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

◆ _4B4224_UpdateNPCTopics()

void _4B4224_UpdateNPCTopics ( int  _this)

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

1110  {
1111  int num_menu_buttons; // ebx@1
1112  int i; // ebp@5
1113  // signed int v4; // ebp@9
1114  int v6; // eax@16
1115  int v8; // eax@21
1116  int v10; // eax@26
1117  int v12; // eax@31
1118  int v14; // eax@36
1119  int v16; // eax@41
1120  NPCData *v17; // [sp+10h] [bp-4h]@4
1121 
1122  num_menu_buttons = 0;
1123  pDialogueNPCCount = (_this + 1);
1124  if (_this + 1 == uNumDialogueNPCPortraits && uHouse_ExitPic) {
1126  pDialogueWindow =
1127  new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), window->GetHeight(), 0);
1129  411, pMapStats->pInfos[uHouse_ExitPic].pName); // Enter %s
1131  566, 445, 75, 33, 1, 0, UIMSG_Escape, 0, 'N',
1132  localization->GetString(34), {{ui_buttdesc2}}); // "Cancel"
1134  486, 445, 75, 33, 1, 0, UIMSG_BF, 1, 'Y',
1135  transition_button_label.c_str(), {{ui_buttyes2}});
1137  pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], 63u, 73u, 1, 0,
1138  UIMSG_BF, 1u, 0x20u, transition_button_label.c_str());
1139  pDialogueWindow->CreateButton(8, 8, 460, 344, 1, 0, UIMSG_BF, 1, 0x59u,
1140  transition_button_label.c_str());
1141  } else {
1142  v17 = HouseNPCData[_this + 1 - ((dword_591080 != 0) ? 1 : 0)]; //+ 1
1145  } else {
1146  for (i = 0; i < uNumDialogueNPCPortraits; ++i)
1147  HouseNPCPortraitsButtonsList[i]->Release();
1148  }
1149  pDialogueWindow = new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), 345, 0);
1151  471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0,
1152  localization->GetString(74), // "End Conversation"
1153  {{ui_exit_cancel_button_background}});
1155  8, 8, 450, 320, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "");
1156  if (pDialogueNPCCount == 1 && dword_591080) {
1158  } else {
1159  if (v17->joins) {
1160  num_menu_buttons = 1;
1161  pDialogueWindow->CreateButton(480u, 160u, 140u, 30, 1, 0,
1162  UIMSG_ClickNPCTopic, 0xDu, 0, "");
1163  }
1164  if (v17->evt_A) {
1165  if (num_menu_buttons < 4) {
1166  v6 = NPC_EventProcessor(v17->evt_A);
1167  if (v6 == 1 || v6 == 2)
1169  480u, 30 * num_menu_buttons++ + 160, 140u, 30u, 1,
1170  0, UIMSG_ClickNPCTopic, 0x13u, 0, "");
1171  }
1172  }
1173  if (v17->evt_B) {
1174  if (num_menu_buttons < 4) {
1175  v8 = NPC_EventProcessor(v17->evt_B);
1176  if (v8 == 1 || v8 == 2)
1178  480u, 30 * num_menu_buttons++ + 160, 140u, 30u, 1,
1179  0, UIMSG_ClickNPCTopic, 0x14u, 0, "");
1180  }
1181  }
1182  if (v17->evt_C) {
1183  if (num_menu_buttons < 4) {
1184  v10 = NPC_EventProcessor(v17->evt_C);
1185  if (v10 == 1 || v10 == 2)
1187  480u, 30 * num_menu_buttons++ + 160, 140u, 30u, 1,
1188  0, UIMSG_ClickNPCTopic, 0x15u, 0, "");
1189  }
1190  }
1191 
1192  if (v17->evt_D) {
1193  if (num_menu_buttons < 4) {
1194  v12 = NPC_EventProcessor(v17->evt_D);
1195  if (v12 == 1 || v12 == 2)
1197  0x1E0u, 30 * num_menu_buttons++ + 160, 0x8Cu, 0x1Eu,
1198  1, 0, UIMSG_ClickNPCTopic, 0x16u, 0, "");
1199  }
1200  }
1201  if (v17->evt_E) {
1202  if (num_menu_buttons < 4) {
1203  v14 = NPC_EventProcessor(v17->evt_E);
1204  if (v14 == 1 || v14 == 2)
1206  0x1E0u, 30 * num_menu_buttons++ + 160, 0x8Cu, 0x1Eu,
1207  1, 0, UIMSG_ClickNPCTopic, 0x17u, 0, "");
1208  }
1209  }
1210  if (v17->evt_F) {
1211  if (num_menu_buttons < 4) {
1212  v16 = NPC_EventProcessor(v17->evt_F);
1213  if (v16 == 1 || v16 == 2)
1215  0x1E0u, 30 * num_menu_buttons++ + 160, 0x8Cu, 0x1Eu,
1216  1, 0, UIMSG_ClickNPCTopic, 0x18u, 0, "");
1217  }
1218  }
1220  num_menu_buttons, 1, 0, 2);
1222  }
1224  }
1225 }

Перекрестные ссылки GUIWindow::CreateButton(), Localization::FormatString(), Localization::GetString(), localization, pBtn_ExitCancel, pBtn_YES, pDialogueNPCCount, pDialogueWindow, MapStats::pInfos, pMapStats, MapInfo::pName, GUIWindow::Release(), transition_button_label, uHouse_ExitPic, UIMSG_BF, UIMSG_Escape, uNumDialogueNPCPortraits и WINDOW_Dialogue.

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

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

◆ GetProfessionActionText()

const char* GetProfessionActionText ( int  a1)

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

1369  {
1370  if (a1 == 10 || a1 == 11 || a1 == 12 || a1 == 33 || a1 == 34 || a1 == 39 ||
1371  a1 == 40 || a1 == 41 || a1 == 42 || a1 == 43 || a1 == 52)
1372  return pNPCStats->pProfessions[a1 - 1].pActionText;
1373  else
1374  return pNPCTopics[407].pTopic;
1375 }

Перекрестные ссылки NPCProfession::pActionText, pNPCStats, pNPCTopics и NPCStats::pProfessions.

Используется в GUIWindow_Dialogue::Update().

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

◆ GetNPCData()

struct NPCData* GetNPCData ( signed int  npcid)

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

43  {
44  unsigned int v1; // esi@1
45  NPCData *result; // eax@5
46  int v3; // esi@9
47  int v4; // ecx@9
48  char v9; // al@22
49  int i;
50 
51  v1 = npcid;
52  if (npcid >= 0) {
53  if (npcid < 5000) {
54  if (npcid >= 501) {
55  logger->Warning(L"NPC id exceeds MAX_DATA!");
56  }
57  return &pNPCStats->pNewNPCData[v1]; // - 1];
58  }
59  return &pNPCStats->pAdditionalNPC[npcid - 5000];
60  }
61 
62  if (npcid >= 5000) return &pNPCStats->pAdditionalNPC[npcid - 5000];
64  result = 0;
65  } else {
67  v4 = 0;
68  char buf[1024];
69 
70  for (i = 0; i < 2; ++i) {
71  if (pParty->pHirelings[i].pName) buf[v4++] = i;
72  }
73 
74  if (pNPCStats->uNumNewNPCs > 0) {
75  for (i = 0; i < pNPCStats->uNumNewNPCs; ++i) {
76  if (pNPCStats->pNewNPCData[i].Hired()) {
77  if (!pParty->pHirelings[0].pName ||
78  strcmp((char *)pNPCStats->pNewNPCData[i].pName,
79  (char *)pParty->pHirelings[0].pName)) {
80  if (!pParty->pHirelings[1].pName ||
81  strcmp((char *)pNPCStats->pNewNPCData[i].pName,
82  (char *)pParty->pHirelings[1].pName))
83  buf[v4++] = i + 2;
84  }
85  }
86  }
87  }
88 
89  v9 = buf[v3];
90  if (v9 >= 2)
91  result = &pNPCStats->pNPCData[499 + v9];
92  else
93  result = &pParty->pHirelings[v9];
94  }
95  return result;
96 }

Перекрестные ссылки NPCData::Hired(), logger, NPCStats::pAdditionalNPC, Party::pHirelings, NPCData::pName, NPCStats::pNewNPCData, NPCStats::pNPCData, pNPCStats, pParty, sDialogue_SpeakingActorNPC_ID, NPCStats::uNumNewNPCs и Log::Warning().

Используется в BuildDialogueString(), GameUI_InitializeDialogue(), MonsterPopup_Draw(), OnSelectNPCDialogueOption(), sub_4B3E1E(), GUIWindow_Dialogue::Update() и UseNPCSkill().

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

◆ GetNewNPCData()

struct NPCData* GetNewNPCData ( signed int  npcid,
int *  npc_indx 
)

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

99  {
100  int *v3; // edi@1
101  NPCData *result; // eax@5
102  int v5; // esi@9
103  int v6; // ecx@9
104  char v11; // al@23
105 
106  v3 = npc_indx;
107  if (npcid >= 0) {
108  if (npcid < 5000) {
109  if (npcid >= 501) {
110  logger->Warning(L"NPC id exceeds MAX_DATA!");
111  }
112  *v3 = npcid;
113  return &pNPCStats->pNewNPCData[npcid];
114  }
115  *npc_indx = npcid - 5000;
116  return &pNPCStats->pAdditionalNPC[npcid - 5000];
117  }
118  if (npcid >= 5000) {
119  *npc_indx = npcid - 5000;
120  return &pNPCStats->pAdditionalNPC[npcid - 5000];
121  }
123  *npc_indx = 0;
124  result = nullptr;
125  } else {
126  v5 = abs(sDialogue_SpeakingActorNPC_ID) - 1;
127  v6 = 0;
128  char buf[1024];
129 
130  for (int i = 0; i < 2; ++i) {
131  if (pParty->pHirelings[i].pName) buf[v6++] = i;
132  }
133  for (int i = 0; i < pNPCStats->uNumNewNPCs; ++i) {
134  if (pNPCStats->pNewNPCData[i].Hired() &&
135  (!pParty->pHirelings[0].pName ||
136  strcmp(pNPCStats->pNewNPCData[i].pName,
137  pParty->pHirelings[0].pName)) &&
138  (!pParty->pHirelings[1].pName ||
139  strcmp(pNPCStats->pNewNPCData[i].pName,
140  pParty->pHirelings[1].pName))) {
141  buf[v6++] = i + 2;
142  }
143  }
144  v11 = buf[v5];
145 
146  if (v11 >= 2u) {
147  *v3 = v11 - 2;
148  result = &pNPCStats->pNewNPCData[v11 - 2];
149  } else {
150  *v3 = v11;
151  result = &pParty->pHirelings[v11];
152  }
153  }
154  return result;
155 }

Перекрестные ссылки NPCData::Hired(), logger, NPCStats::pAdditionalNPC, Party::pHirelings, NPCData::pName, NPCStats::pNewNPCData, pNPCStats, pParty, sDialogue_SpeakingActorNPC_ID, NPCStats::uNumNewNPCs и Log::Warning().

Используется в GameUI_DrawNPCPopup() и Player::SubtractVariable().

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

◆ GetGreetType()

int GetGreetType ( signed int  SpeakingNPC_ID)

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

1322  {
1323  int v1; // ebx@1
1324  int v3; // edi@6
1325  int v4; // ecx@6
1326  int v5; // edx@6
1327  NPCData *v6; // eax@6
1328  char *v7; // ebp@11
1329  NPCData *v8; // esi@11
1330 
1331  v1 = 0;
1332  if (SpeakingNPC_ID >= 0) {
1333  if (SpeakingNPC_ID < 5000) return 1; // QuestNPC_greet
1334  return 2; // HiredNPC_greet
1335  }
1336 
1337  if (SpeakingNPC_ID >= 5000) return 2;
1338 
1339  v3 = abs((int)sDialogue_SpeakingActorNPC_ID) - 1;
1340  v4 = 0;
1341  v5 = 0;
1342  v6 = pParty->pHirelings.data();
1343 
1344  char buf[1024];
1345  do {
1346  if (v6->pName) buf[v4++] = v5;
1347  ++v6;
1348  ++v5;
1349  } while ((signed int)v6 < (signed int)&pParty->pPickedItem);
1350  if ((signed int)pNPCStats->uNumNewNPCs > 0) {
1351  v7 = &buf[v4];
1352  v8 = pNPCStats->pNewNPCData;
1353  do {
1354  if (v8->Hired() &&
1355  (!pParty->pHirelings[0].pName ||
1356  strcmp(v8->pName, pParty->pHirelings[0].pName))) {
1357  if (!pParty->pHirelings[1].pName ||
1358  strcmp(v8->pName, pParty->pHirelings[1].pName))
1359  *v7++ = v1 + 2;
1360  }
1361  ++v1;
1362  ++v8;
1363  } while (v1 < (signed int)pNPCStats->uNumNewNPCs);
1364  }
1365  return ((unsigned __int8)buf[v3] < 2) + 1;
1366 }

Перекрестные ссылки NPCData::Hired(), Party::pHirelings, NPCData::pName, NPCStats::pNewNPCData, pNPCStats, pParty, Party::pPickedItem, sDialogue_SpeakingActorNPC_ID и NPCStats::uNumNewNPCs.

Используется в GUIWindow_Dialogue::Update().

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

◆ NPC_EventProcessor()

int NPC_EventProcessor ( int  npc_event_id,
int  entry_line = 0 
)

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

1227  {
1228  signed int event_index; // ebp@1
1229  int evt_seq_num; // esi@3
1230  bool ready_to_exit; // [sp+Ch] [bp-Ch]@3
1231  signed int npc_activity; // [sp+10h] [bp-8h]@3
1232  int result;
1233 
1234  event_index = 0;
1235  if (!npc_event_id) return 0;
1236  evt_seq_num = entry_line;
1237  pSomeOtherEVT = pGlobalEVT.data();
1239  memcpy(pSomeOtherEVT_Events.data(), pGlobalEVT_Index.data(),
1240  sizeof(EventIndex) * 4400);
1241  npc_activity = 1;
1242  ready_to_exit = false;
1243  if (uSomeOtherEVT_NumEvents <= 0) return 2;
1244  do {
1245  if ((pSomeOtherEVT_Events[event_index].uEventID == npc_event_id) &&
1246  (pSomeOtherEVT_Events[event_index].event_sequence_num ==
1247  evt_seq_num)) {
1248  _evt_raw *_evt =
1250  .uEventOffsetInEVT];
1251  switch (_evt->_e_type) {
1252  case EVENT_Exit:
1253  // exit
1254  if (ready_to_exit)
1255  result = npc_activity != 0;
1256  else
1257  result = 2;
1258  return result;
1259  break;
1261  ready_to_exit = true;
1262  // v8 = (unsigned __int8)v7[7] + (((unsigned __int8)v7[8] +
1263  // (((unsigned __int8)v7[9] + ((unsigned __int8)v7[10] << 8))
1264  // << 8)) << 8);
1265  for (int i = 0; i < 4; ++i) {
1266  // if (pParty->pPlayers[i].CompareVariable((enum
1267  // VariableType)((unsigned __int8)pSomeOtherEVT[v6 + 5]
1268  // + ((unsigned __int8)pSomeOtherEVT[v6 + 6] << 8)),
1269  // v8))
1270  if (pParty->pPlayers[i].CompareVariable(
1271  (enum VariableType)EVT_WORD(_evt->v5),
1272  EVT_DWORD(_evt->v7))) {
1273  event_index = -1;
1274  evt_seq_num =
1275  EVT_BYTE(_evt->v11) -
1276  1; // (unsigned __int8)pSomeOtherEVT[v6 + 11] -
1277  // 1;
1278  break;
1279  }
1280  }
1281  break;
1283  if (ready_to_exit)
1284  result = npc_activity != 0;
1285  else
1286  result = 2;
1287  return result;
1288  break;
1290  ready_to_exit = true;
1291  npc_activity =
1292  EVT_BYTE(_evt->v5); // (unsigned __int8)v7[5];
1293  break;
1295  // if (IsActorAlive( (unsigned __int8)v7[5],
1296  // (unsigned __int8)v7[6] + (((unsigned __int8)v7[7] +
1297  // (((unsigned __int8)v7[8] + ((unsigned __int8)v7[9] << 8))
1298  // << 8)) << 8),
1299  // (unsigned __int8)v7[10]) )
1300  if (IsActorAlive(
1301  EVT_BYTE(_evt->v5), EVT_DWORD(_evt->v6),
1302  EVT_BYTE(_evt->v10))) { // drop linear sequense,
1303  // going to new seq
1304  event_index = -1;
1305  evt_seq_num =
1306  EVT_BYTE(_evt->v11) -
1307  1; // (unsigned __int8)pSomeOtherEVT[v6 + 11] - 1;
1308  }
1309  break;
1310  }
1311  ++evt_seq_num;
1312  }
1313  ++event_index;
1314  } while (event_index < uSomeOtherEVT_NumEvents);
1315  if (ready_to_exit)
1316  result = npc_activity != 0;
1317  else
1318  result = 2;
1319  return result;
1320 }

Перекрестные ссылки _evt_raw::_e_type, EVENT_EndCanShowDialogItem, EVENT_Exit, EVENT_IsActorAssasinated, EVENT_OnCanShowDialogItemCmp, EVENT_SetCanShowDialogItem, IsActorAlive(), pGlobalEVT, pGlobalEVT_Index, pParty, Party::pPlayers, pSomeOtherEVT, pSomeOtherEVT_Events, uGlobalEVT_NumEvents, uSomeOtherEVT_NumEvents, _evt_raw::v10, _evt_raw::v11, _evt_raw::v5, _evt_raw::v6 и _evt_raw::v7.

+ Граф вызовов:

Переменные

◆ pNPCTopics

◆ pDialogueNPCCount

◆ pDialogueNPCPortraits

std::array<class Image *, 6> pDialogueNPCPortraits

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

Используется в GameUI_InitializeDialogue(), GUIWindow::HouseDialogManager(), PrepareHouse(), GUIWindow_House::Release() и GUIWindow_Dialogue::Update().

◆ uNumDialogueNPCPortraits

◆ pNPCStats

EVENT_IsActorAssasinated
@ EVENT_IsActorAssasinated
Definition: Events.h:108
Party::pPickedItem
ItemGen pPickedItem
Definition: Party.h:312
uNumDialogueNPCPortraits
int uNumDialogueNPCPortraits
Definition: NPC.cpp:28
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
Player
Definition: Player.h:401
transition_button_label
String transition_button_label
Definition: UITransition.cpp:30
SOUND_fizzle
@ SOUND_fizzle
Definition: AudioPlayer.h:74
GetNPCData
NPCData * GetNPCData(signed int npcid)
Definition: NPC.cpp:43
Localization::GetString
const char * GetString(unsigned int index) const
Definition: Localization.cpp:13
NPCData::uProfession
unsigned int uProfession
Definition: NPC.h:89
UIMSG_Escape
@ UIMSG_Escape
Definition: GUIWindow.h:96
MapStats::pInfos
MapInfo pInfos[77]
Definition: MapInfo.h:79
Party::GetPlayingTime
GameTime & GetPlayingTime()
Definition: Party.h:230
EVENT_Exit
@ EVENT_Exit
Definition: Events.h:61
Teacher
@ Teacher
Definition: NPC.h:18
Tinker
@ Tinker
Definition: NPC.h:30
GUIWindow
Definition: GUIWindow.h:433
Smith
@ Smith
Definition: NPC.h:6
Pirate
@ Pirate
Definition: NPC.h:50
Monk
@ Monk
Definition: NPC.h:65
NPCData::uFlags
unsigned int uFlags
Definition: NPC.h:84
UIMSG_ClickNPCTopic
@ UIMSG_ClickNPCTopic
Definition: GUIWindow.h:142
HouseNPCData
std::array< struct NPCData *, 7 > HouseNPCData
Definition: mm7_data.cpp:617
_evt_raw::v7
unsigned char v7
Definition: Events.h:29
NPCData::Hired
bool Hired()
Definition: NPC.h:80
uSomeOtherEVT_NumEvents
signed int uSomeOtherEVT_NumEvents
Definition: Events.cpp:37
dword_50C9DC
int dword_50C9DC
Definition: mm7_data.cpp:583
_449B57_test_bit
bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2)
Definition: Party.cpp:1185
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
dialog_menu_id
HOUSE_DIALOGUE_MENU dialog_menu_id
Definition: UIHouses.cpp:50
gold_transaction_amount
int gold_transaction_amount
Definition: mm7_data.cpp:775
SPELL_LIGHT_HOUR_OF_POWER
@ SPELL_LIGHT_HOUR_OF_POWER
Definition: Spells.h:105
OtherOverlayList::_4418B1
int _4418B1(int a2, int a3, int a4, int a5)
Definition: Overlays.cpp:29
Psychic
@ Psychic
Definition: NPC.h:53
pNPCTopics
std::array< NPCTopic, 789 > pNPCTopics
Definition: mm7_data.cpp:740
AudioPlayer::PlaySound
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
Definition: AudioPlayer.cpp:195
Diplomat
@ Diplomat
Definition: NPC.h:55
NPCData::evt_B
unsigned int evt_B
Definition: NPC.h:94
bNoNPCHiring
char bNoNPCHiring
Definition: mm7_data.cpp:720
Alchemist
@ Alchemist
Definition: NPC.h:8
NPCProfession::pActionText
char * pActionText
Definition: NPC.h:117
localization
Localization * localization
Definition: Localization.cpp:11
PARTY_BUFF_WATER_WALK
@ PARTY_BUFF_WATER_WALK
Definition: Party.h:89
Instructor
@ Instructor
Definition: NPC.h:19
pNPCPortraits_y
std::array< std::array< int, 6 >, 6 > pNPCPortraits_y
Definition: mm7_data.cpp:290
Burglar
@ Burglar
Definition: NPC.h:57
_evt_raw::_e_type
unsigned char _e_type
Definition: Events.h:26
InitializaDialogueOptions
void InitializaDialogueOptions(BuildingType type)
Definition: UIHouses.cpp:442
Party::pPlayers
std::array< Player, 4 > pPlayers
Definition: Party.h:310
pNPCPortraits_x
std::array< std::array< int, 6 >, 6 > pNPCPortraits_x
Definition: mm7_data.cpp:282
FallenWizard
@ FallenWizard
Definition: NPC.h:58
GUIWindow::Release
virtual void Release()
Definition: GUIWindow.cpp:292
Apothecary
@ Apothecary
Definition: NPC.h:29
NPCData::evt_E
unsigned int evt_E
Definition: NPC.h:97
Armorer
@ Armorer
Definition: NPC.h:7
HouseNPCPortraitsButtonsList
GUIButton * HouseNPCPortraitsButtonsList[6]
Definition: mm7_data.cpp:618
NPCData::evt_C
unsigned int evt_C
Definition: NPC.h:95
Player::pActiveSkills
std::array< unsigned __int16, 37 > pActiveSkills
Definition: Player.h:711
pPlayers
NZIArray< struct Player *, 5 > pPlayers
Definition: Player.cpp:46
WaterMaster
@ WaterMaster
Definition: NPC.h:45
dword_591080
int dword_591080
Definition: UIHouses.cpp:47
pGlobalEVT
std::array< char, 46080 > pGlobalEVT
Definition: Events.cpp:45
dword_F8B1E0
int dword_F8B1E0
Definition: mm7_data.cpp:778
result
GLuint64EXT * result
Definition: SDL_opengl_glext.h:9435
EventIndex
Definition: Events.h:6
pMapStats
struct MapStats * pMapStats
Definition: mm7_data.cpp:20
Party::pPartyBuffs
std::array< SpellBuff, 20 > pPartyBuffs
Definition: Party.h:309
GameTime::FromHours
static GameTime FromHours(int hours)
Definition: Time.h:89
_42777D_CastSpell_UseWand_ShootArrow
void _42777D_CastSpell_UseWand_ShootArrow(SPELL_TYPE spell, unsigned int uPlayerID, unsigned int a4, __int16 flags, int a6)
Definition: CastSpellInfo.cpp:4369
uHouse_ExitPic
int uHouse_ExitPic
Definition: UIHouses.cpp:45
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
Scholar
@ Scholar
Definition: NPC.h:9
pSomeOtherEVT_Events
std::array< EventIndex, 4400 > pSomeOtherEVT_Events
Definition: Events.cpp:36
SOUND_21fly03
@ SOUND_21fly03
Definition: AudioPlayer.h:97
in_current_building_type
BuildingType in_current_building_type
Definition: UIHouses.cpp:49
NPCData::evt_A
unsigned int evt_A
Definition: NPC.h:93
_evt_raw::v6
unsigned char v6
Definition: Events.h:28
SOUND_WaterWalk
@ SOUND_WaterWalk
Definition: AudioPlayer.h:98
NPCData::evt_D
unsigned int evt_D
Definition: NPC.h:96
NPCStats::uNumNewNPCs
unsigned int uNumNewNPCs
Definition: NPC.h:179
WindMaster
@ WindMaster
Definition: NPC.h:44
uGlobalEVT_NumEvents
unsigned int uGlobalEVT_NumEvents
Definition: Events.cpp:43
Acolyte2
@ Acolyte2
Definition: NPC.h:59
contract_approved
int contract_approved
Definition: mm7_data.cpp:772
Merchant
@ Merchant
Definition: NPC.h:26
NPC_EventProcessor
int NPC_EventProcessor(int npc_event_id, int entry_line)
Definition: NPC.cpp:1227
pBtn_ExitCancel
GUIButton * pBtn_ExitCancel
Definition: GUIButton.cpp:28
ptr_50C9E0
struct NPCData * ptr_50C9E0
Definition: mm7_data.cpp:584
pGlobalEVT_Index
std::array< EventIndex, 4400 > pGlobalEVT_Index
Definition: Events.cpp:46
pBtn_YES
GUIButton * pBtn_YES
Definition: GUIButton.cpp:29
pParty
Party * pParty
Definition: Party.cpp:30
HOUSE_DIALOGUE_MAIN
@ HOUSE_DIALOGUE_MAIN
Definition: UIHouses.h:8
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: SDL_opengl_glext.h:2483
Herbalist
@ Herbalist
Definition: NPC.h:28
NPCData::pName
char * pName
Definition: NPC.h:82
NPCStats::pNewNPCData
NPCData pNewNPCData[501]
Definition: NPC.h:165
Mystic
@ Mystic
Definition: NPC.h:23
GUIWindow::pNumPresenceButton
int pNumPresenceButton
Definition: GUIWindow.h:481
Banker
@ Banker
Definition: NPC.h:37
Gypsy
@ Gypsy
Definition: NPC.h:54
NPCStats::pProfessions
NPCProfession pProfessions[59]
Definition: NPC.h:167
NPCStats::pNPCData
NPCData pNPCData[501]
Definition: NPC.h:164
Trader
@ Trader
Definition: NPC.h:25
ExpertHealer
@ ExpertHealer
Definition: NPC.h:16
EVENT_EndCanShowDialogItem
@ EVENT_EndCanShowDialogItem
Definition: Events.h:101
Cook
@ Cook
Definition: NPC.h:38
WINDOW_Dialogue
@ WINDOW_Dialogue
Definition: GUIWindow.h:298
IsActorAlive
int IsActorAlive(unsigned int uType, unsigned int uParam, unsigned int uNumAlive)
Definition: Actor.cpp:3240
v1
GLfloat GLfloat v1
Definition: SDL_opengl_glext.h:694
Cartographer
@ Cartographer
Definition: NPC.h:43
Bard
@ Bard
Definition: NPC.h:41
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
Weaponsmaster
@ Weaponsmaster
Definition: NPC.h:21
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
MapInfo::pName
String pName
Definition: MapInfo.h:38
_evt_raw::v10
unsigned char v10
Definition: Events.h:32
NPCStats::pAdditionalNPC
NPCData pAdditionalNPC[100]
Definition: NPC.h:168
HOUSE_DIALOGUE_OTHER
@ HOUSE_DIALOGUE_OTHER
Definition: UIHouses.h:46
EVENT_SetCanShowDialogItem
@ EVENT_SetCanShowDialogItem
Definition: Events.h:102
NPCData
Definition: NPC.h:79
UIMSG_BuyInShop_Identify_Repair
@ UIMSG_BuyInShop_Identify_Repair
Definition: GUIWindow.h:66
pDialogueNPCCount
int pDialogueNPCCount
Definition: NPC.cpp:26
Armsmaster
@ Armsmaster
Definition: NPC.h:20
Squire
@ Squire
Definition: NPC.h:52
Party::GetFood
int GetFood() const
Definition: Party.cpp:272
Tracker
@ Tracker
Definition: NPC.h:11
Scout
@ Scout
Definition: NPC.h:27
Navigator
@ Navigator
Definition: NPC.h:14
dword_F8B1AC_award_bit_number
int dword_F8B1AC_award_bit_number
Definition: mm7_data.cpp:773
PLAYER_SKILL_SHIELD
@ PLAYER_SKILL_SHIELD
Definition: Player.h:179
Sage
@ Sage
Definition: NPC.h:66
Hunter
@ Hunter
Definition: NPC.h:67
Explorer
@ Explorer
Definition: NPC.h:49
MasterHealer
@ MasterHealer
Definition: NPC.h:17
LEVEL_Indoor
@ LEVEL_Indoor
Definition: Indoor.h:286
Party::pHirelings
std::array< NPCData, 2 > pHirelings
Definition: Party.h:311
Horseman
@ Horseman
Definition: NPC.h:40
Player::conditions_times
std::array< GameTime, 20 > conditions_times
Definition: Player.h:635
SPELL_SPIRIT_BLESS
@ SPELL_SPIRIT_BLESS
Definition: Spells.h:62
_evt_raw::v11
unsigned char v11
Definition: Events.h:33
GateMaster
@ GateMaster
Definition: NPC.h:46
Initiate
@ Initiate
Definition: NPC.h:61
uint8_t
unsigned __int8 uint8_t
Definition: SDL_config.h:35
PLAYER_SKILL_CHAIN
@ PLAYER_SKILL_CHAIN
Definition: Player.h:181
Factor
@ Factor
Definition: NPC.h:36
Healer
@ Healer
Definition: NPC.h:15
EVENT_OnCanShowDialogItemCmp
@ EVENT_OnCanShowDialogItemCmp
Definition: Events.h:100
VariableType
VariableType
Definition: Events.h:128
Prelate
@ Prelate
Definition: NPC.h:63
pOtherOverlayList
struct OtherOverlayList * pOtherOverlayList
Definition: Overlays.cpp:19
UIMSG_BF
@ UIMSG_BF
Definition: GUIWindow.h:158
pSomeOtherEVT
char * pSomeOtherEVT
Definition: Events.cpp:38
Acolyte
@ Acolyte
Definition: NPC.h:47
Fool
@ Fool
Definition: NPC.h:32
uint
unsigned int uint
Definition: MM7.h:4
uActiveCharacter
unsigned int uActiveCharacter
Definition: mm7_data.cpp:555
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
Localization::FormatString
String FormatString(unsigned int index,...) const
Definition: Localization.cpp:17
NPCData::evt_F
unsigned int evt_F
Definition: NPC.h:98
__debugbreak
void __cdecl __debugbreak(void)
_evt_raw
Definition: Events.h:20
NPCData::joins
int joins
Definition: NPC.h:91
pNPCStats
struct NPCStats * pNPCStats
Definition: NPC.cpp:29
Pathfinder
@ Pathfinder
Definition: NPC.h:12
GameUI_StatusBar_OnEvent
void GameUI_StatusBar_OnEvent(const String &str, unsigned int num_seconds)
Definition: UIStatusBar.cpp:33
price_for_membership
std::array< int, 11 > price_for_membership
Definition: mm7_data.cpp:494
PARTY_BUFF_FLY
@ PARTY_BUFF_FLY
Definition: Party.h:78
Condition_Good
@ Condition_Good
Definition: Conditions.h:26
_evt_raw::v5
unsigned char v5
Definition: Events.h:27
Locksmith
@ Locksmith
Definition: NPC.h:31
Duper
@ Duper
Definition: NPC.h:56
NPCProfession::pBenefits
char * pBenefits
Definition: NPC.h:116
uCurrentlyLoadedLevelType
LEVEL_TYPE uCurrentlyLoadedLevelType
Definition: Indoor.cpp:52
Party::GetFirstCanAct
int GetFirstCanAct()
Definition: Party.cpp:156
Chef
@ Chef
Definition: NPC.h:39
ChimneySweep
@ ChimneySweep
Definition: NPC.h:33
Apprentice
@ Apprentice
Definition: NPC.h:22
Porter
@ Porter
Definition: NPC.h:34
Enchanter
@ Enchanter
Definition: NPC.h:42
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
v0
GLfloat v0
Definition: SDL_opengl_glext.h:693
pMessageQueue_50CBD0
struct GUIMessageQueue * pMessageQueue_50CBD0
Definition: GUIWindow.cpp:86
logger
Log * logger
Definition: IocContainer.cpp:47
pDialogueWindow
GUIWindow * pDialogueWindow
Definition: GUIWindow.cpp:50
QuarterMaster
@ QuarterMaster
Definition: NPC.h:35
Piper
@ Piper
Definition: NPC.h:48
GameTime
Definition: Time.h:14
SPELL_SPIRIT_HEROISM
@ SPELL_SPIRIT_HEROISM
Definition: Spells.h:67
Guide
@ Guide
Definition: NPC.h:10
Spellmaster
@ Spellmaster
Definition: NPC.h:24
sDialogue_SpeakingActorNPC_ID
int sDialogue_SpeakingActorNPC_ID
Definition: mm7_data.cpp:605
Sailor
@ Sailor
Definition: NPC.h:13
Party::GiveFood
static void GiveFood(int amount)
Definition: Party.cpp:255