0
|
1 #pragma once
|
|
2
|
|
3
|
|
4 struct NPCTopic
|
|
5 {
|
|
6 const char *pTopic;
|
|
7 const char *pText;
|
|
8 };
|
|
9
|
|
10 extern NPCTopic pNPCTopics[789];
|
|
11
|
|
12
|
|
13 /* 136 */
|
|
14 #pragma pack(push, 1)
|
291
|
15 struct NPCData //4Ch
|
0
|
16 {
|
248
|
17 inline bool Hired() {return uFlags & 0x80;}
|
|
18
|
291
|
19 char *pName; //0
|
|
20 unsigned int uPortraitID; //4
|
|
21 unsigned int uFlags; //8 // & 0x80 no greeting on dialogue start; looks like hired
|
|
22 int fame; //c
|
|
23 int rep; //10
|
|
24 unsigned int Location2D; //14
|
|
25 unsigned int uProfession; //18
|
|
26 int greet; //1c
|
|
27 int joins; //20
|
0
|
28 int field_24;
|
291
|
29 unsigned int evt_A; //28
|
|
30 unsigned int evt_B; //2c evtb
|
|
31 unsigned int evt_C; // 30 evtc
|
|
32 unsigned int evt_D; //34
|
|
33 unsigned int evt_E; //38
|
|
34 unsigned int evt_F; //3c
|
|
35 unsigned int uSex; //40
|
|
36 int bHasUsedTheAbility; //44
|
|
37 int news_topic; //48
|
0
|
38 };
|
|
39 #pragma pack(pop)
|
|
40
|
|
41
|
|
42 /* 138 */
|
|
43 #pragma pack(push, 1)
|
|
44 struct NPCProfession
|
|
45 {
|
|
46 unsigned int uHirePrice;
|
|
47 char *pBenefits;
|
|
48 char *pActionText;
|
|
49 char *pJoinText;
|
|
50 char *pDismissText;
|
|
51 };
|
|
52 #pragma pack(pop)
|
|
53
|
|
54
|
|
55 /* 139 */
|
|
56 #pragma pack(push, 1)
|
291
|
57 struct NPCProfessionChance
|
0
|
58 {
|
291
|
59 unsigned int uTotalprofChance; //summ
|
|
60 char professionChancePerArea[60]; //prof position
|
0
|
61 };
|
|
62 #pragma pack(pop)
|
|
63
|
|
64 /* 140 */
|
|
65 #pragma pack(push, 1)
|
|
66 struct NPCGreeting
|
|
67 {
|
|
68 char *pGreeting1;
|
|
69 char *pGreeting2;
|
|
70 };
|
|
71 #pragma pack(pop)
|
|
72
|
|
73
|
|
74 /* 137 */
|
|
75 #pragma pack(push, 1)
|
|
76 struct NPCStats
|
|
77 {
|
|
78 inline NPCStats():
|
|
79 pNPCTextTXT_Raw(nullptr), pNPCTopicTXT_Raw(nullptr), pNPCDistTXT_Raw(nullptr)
|
|
80 {
|
|
81 uNumNPCNames[0] = uNumNPCNames[1] = 0;
|
|
82 }
|
|
83
|
291
|
84 void InitializeNPCText();
|
|
85 void InitializeNPCData();
|
0
|
86 void Initialize();
|
|
87 void Release();
|
291
|
88 void InitializeAdditionalNPCs(NPCData *pNPCDataBuff, int npc_uid, int uLocation2D, int uMapId);
|
0
|
89 void _476C60();
|
|
90
|
237
|
91
|
291
|
92 NPCData pNPCData[501]; //0 - 94BCh count from 1
|
|
93 NPCData pNewNPCData[501]; //94BCh- 12978h count from 1
|
0
|
94 char *pNPCNames[540][2];
|
291
|
95 NPCProfession pProfessions[59]; //count from 1
|
|
96 NPCData pAdditionalNPC[100];
|
|
97 char *pCatchPhrases[52]; //15CA4h
|
|
98 char *pNPCUnicNames[500]; //from first batch
|
|
99 NPCProfessionChance pProfessionChance[77]; //16544h profession chance in each area
|
0
|
100 int field_17884;
|
|
101 int field_17888;
|
|
102 NPCGreeting pNPCGreetings[205];
|
|
103 unsigned __int16 pGroups[51];
|
|
104 unsigned __int16 pGroups_copy[51];
|
291
|
105 unsigned int uNewlNPCBufPos;
|
0
|
106 unsigned int uNumNewNPCs;
|
|
107 int field_17FC8;
|
|
108 unsigned int uNumNPCProfessions;
|
291
|
109 unsigned int uNumNPCNames[2]; //0 male 1 female
|
0
|
110 char *pNPCDataTXT_Raw;
|
|
111 char *pNPCNamesTXT_Raw;
|
|
112 char *pNPCProfTXT_Raw;
|
|
113 char *pNPCNewsTXT_Raw;
|
|
114 char *pNPCTopicTXT_Raw;
|
|
115 char *pNPCTextTXT_Raw;
|
|
116 char *pNPCDistTXT_Raw;
|
|
117 char *pNPCGreetTXT_Raw;
|
|
118 char *pNCPGroupTXT_Raw;
|
|
119 };
|
|
120 #pragma pack(pop)
|
|
121
|
253
|
122 bool PartyHasDragon();
|
251
|
123 bool CheckHiredNPCSpeciality(unsigned int uProfession);
|