annotate Engine/Party.h @ 2542:bacf9809126a

.
author a.parshin
date Sun, 10 May 2015 02:04:52 +0200
parents 68cdef6879a0
children 3121fb54a110
rev   line source
2499
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
1 #pragma once
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
2 #include "Engine/Objects/Player.h"
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
3 #include "Engine/Objects/NPC.h"
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
4 #include <array>
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
5
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
6
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
7
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
8 #define PARTY_AUTONOTES_BIT__EMERALD_FIRE_FOUNTAIN 2
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
9
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
10 enum PARTY_QUEST_BITS: uint16_t
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
11 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
12 PARTY_QUEST_EMERALD_RED_POTION_ACTIVE = 1,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
13 PARTY_QUEST_EMERALD_SEASHELL_ACTIVE = 2,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
14 PARTY_QUEST_EMERALD_LONGBOW_ACTIVE = 3,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
15 PARTY_QUEST_EMERALD_PLATE_ACTIVE = 4,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
16 PARTY_QUEST_EMERALD_LUTE_ACTIVE = 5,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
17 PARTY_QUEST_EMERALD_HAT_ACTIVE = 6,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
18
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
19 PARTY_QUEST_EMERALD_MARGARETH_OFF = 17,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
20
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
21 PARTY_QUEST_EVENMORN_MAP_FOUND = 64,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
22 PARTY_QUEST_FINISHED_EMERALD_ISLE = 136,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
23
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
24 PARTY_QUEST_OBELISK_HARMONDALE = 164,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
25 PARTY_QUEST_OBELISK_ERATHIA = 165,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
26 PARTY_QUEST_OBELISK_TULAREAN_FOREST = 166,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
27 PARTY_QUEST_OBELISK_DEYJA = 167,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
28 PARTY_QUEST_OBELISK_BRACADA_DESERT = 168,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
29 PARTY_QUEST_OBELISK_CELESTE = 169,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
30 PARTY_QUEST_OBELISK_THE_PIT = 170,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
31 PARTY_QUEST_OBELISK_EVENMORN_ISLAND = 171,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
32 PARTY_QUEST_OBELISK_MOUNT_NIGHON = 172,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
33 PARTY_QUEST_OBELISK_BARROW_DOWNS = 173,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
34 PARTY_QUEST_OBELISK_LAND_OF_THE_GIANTS = 174,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
35 PARTY_QUEST_OBELISK_TATALIA = 175,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
36 PARTY_QUEST_OBELISK_AVLEE = 176,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
37 PARTY_QUEST_OBELISK_STONE_CITY = 177,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
38
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
39 PARTY_QUEST_OBELISK_TREASURE_FOUND = 178,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
40
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
41 PARTY_QUEST_FOUNTAIN_HARMONDALE = 206,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
42 PARTY_QUEST_FOUNTAIN_NIGHON = 207,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
43 PARTY_QUEST_FOUNTAIN_PIERPONT = 208,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
44 PARTY_QUEST_FOUNTAIN_CELESTIA = 209,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
45 PARTY_QUEST_FOUNTAIN_THE_PIT = 210,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
46 PARTY_QUEST_FOUNTAIN_EVENMORN_ISLE = 211
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
47 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
48
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
49 /* 355 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
50 enum PARTY_FLAGS_1: __int32
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
51 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
52 PARTY_FLAGS_1_0002 = 0x0002,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
53 PARTY_FLAGS_1_WATER_DAMAGE = 0x0004,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
54 PARTY_FLAGS_1_FALLING = 0x0008,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
55 PARTY_FLAGS_1_ALERT_RED = 0x0010,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
56 PARTY_FLAGS_1_ALERT_YELLOW = 0x0020,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
57 PARTY_FLAGS_1_STANDING_ON_WATER = 0x0080,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
58 PARTY_FLAGS_1_LANDING = 0x0100,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
59 PARTY_FLAGS_1_BURNING = 0x200
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
60 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
61 enum PARTY_FLAGS_2: __int32
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
62 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
63 PARTY_FLAGS_2_RUNNING = 0x2,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
64 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
65
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
66 /* 347 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
67 enum PARTY_BUFF_INDEX
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
68 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
69 PARTY_BUFF_RESIST_AIR = 0,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
70 PARTY_BUFF_RESIST_BODY = 1,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
71 PARTY_BUFF_DAY_OF_GODS = 2,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
72 PARTY_BUFF_DETECT_LIFE = 3,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
73 PARTY_BUFF_RESIST_EARTH = 4,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
74 PARTY_BUFF_FEATHER_FALL = 5,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
75 PARTY_BUFF_RESIST_FIRE = 6,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
76 PARTY_BUFF_FLY = 7,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
77 PARTY_BUFF_HASTE = 8,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
78 PARTY_BUFF_HEROISM = 9,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
79 PARTY_BUFF_IMMOLATION = 10,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
80 PARTY_BUFF_INVISIBILITY = 11,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
81 PARTY_BUFF_RESIST_MIND = 12,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
82 PARTY_BUFF_PROTECTION_FROM_MAGIC = 13,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
83 PARTY_BUFF_SHIELD = 14,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
84 PARTY_BUFF_STONE_SKIN = 15,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
85 PARTY_BUFF_TORCHLIGHT = 16,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
86 PARTY_BUFF_RESIST_WATER = 17,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
87 PARTY_BUFF_WATER_WALK = 18,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
88 PARTY_BUFF_WIZARD_EYE = 19,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
89 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
90
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
91
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
92
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
93 /* 300 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
94 enum PartyAction: unsigned __int32
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
95 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
96 PARTY_INVALID = 0,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
97 PARTY_TurnLeft = 0x1,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
98 PARTY_TurnRight = 0x2,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
99 PARTY_StrafeLeft = 0x3,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
100 PARTY_StrafeRight = 0x4,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
101 PARTY_WalkForward = 0x5,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
102 PARTY_WalkBackward = 0x6,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
103 PARTY_LookUp = 0x7,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
104 PARTY_LookDown = 0x8,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
105 PARTY_CenterView = 0x9,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
106 PARTY_unkA = 0xA,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
107 PARTY_unkB = 0xB,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
108 PARTY_Jump = 0xC,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
109 PARTY_FlyUp = 0xD,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
110 PARTY_FlyDown = 0xE,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
111 PARTY_Land = 0xF,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
112 PARTY_RunForward = 0x10,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
113 PARTY_RunBackward = 0x11,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
114 PARTY_FastTurnLeft = 0x12,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
115 PARTY_FastTurnRight = 0x13,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
116
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
117 PARTY_dword = 0xFFFFFFFF
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
118 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
119
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
120
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
121
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
122 /* 135 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
123 #pragma pack(push, 1)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
124 struct ActionQueue
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
125 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
126 inline ActionQueue():
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
127 uNumActions(0)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
128 {}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
129
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
130 void Add(PartyAction action);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
131 void Reset();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
132 PartyAction Next();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
133
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
134 unsigned int uNumActions;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
135 PartyAction pActions[30];
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
136 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
137 #pragma pack(pop)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
138
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
139
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
140
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
141
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
142
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
143 enum PartyAlignment: unsigned __int32
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
144 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
145 PartyAlignment_Good = 0,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
146 PartyAlignment_Neutral = 1,
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
147 PartyAlignment_Evil = 2
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
148 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
149
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
150
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
151
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
152
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
153
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
154 /* 208 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
155 #pragma pack(push, 1)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
156 struct PartyTimeStruct
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
157 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
158 std::array<__int64, 10> bountyHunting_next_generation_time;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
159 std::array<__int64, 85> Shops_next_generation_time;//field_50
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
160 std::array<__int64, 53> _shop_ban_times;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
161 std::array<unsigned __int64, 10> CounterEventValues; // (0xACD314h in Silvo's binary)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
162 std::array<__int64, 29> HistoryEventTimes; // (0xACD364h in Silvo's binary)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
163 std::array<unsigned __int64, 20> _s_times; //5d8 440h+8*51 //(0xACD44Ch in Silvo's binary)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
164 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
165 #pragma pack(pop)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
166
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
167 /* 207 */
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
168 #pragma pack(push, 1)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
169 struct Party
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
170 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
171 Party():
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
172 uTimePlayed(0)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
173 {
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
174 Zero();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
175 }
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
176
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
177 void Zero();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
178 void UpdatePlayersAndHirelingsEmotions();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
179 void RestAndHeal();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
180 unsigned int GetPartyFame();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
181 void CreateDefaultParty(char bGiveItems);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
182 int Reset();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
183 void ResetPosMiscAndSpellBuffs();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
184 bool HasItem(unsigned int uItemID);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
185 void SetHoldingItem(ItemGen *pItem);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
186 int GetNextActiveCharacter();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
187 bool _497FC5_check_party_perception_against_level();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
188 bool AddItemToParty(ItemGen *pItem);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
189 void Yell();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
190 void CountHirelings();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
191
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
192 void GivePartyExp(unsigned int pEXPNum);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
193 int GetPartyReputation();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
194
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
195
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
196 void PartyFindsGold(unsigned int uNumGold, int _1_dont_share_with_followers___2_the_same_but_without_a_message__else_normal);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
197 void sub_421B2C_PlaceInInventory_or_DropPickedItem();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
198
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
199 static void SetGold(unsigned int uNumGold);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
200 static void TakeGold(unsigned int uNumGold);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
201 static void SetFood(unsigned int uNumFood);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
202 static void TakeFood(unsigned int uNumFood);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
203 static void GiveFood(unsigned int _this);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
204
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
205 static void Sleep6Hours();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
206
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
207 inline bool WizardEyeActive() {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
208 inline int WizardEyeSkillLevel() {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uSkill;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
209 inline bool TorchlightActive() {return pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
210 inline bool FlyActive() {return pPartyBuffs[PARTY_BUFF_FLY].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
211 inline bool WaterWalkActive() {return pPartyBuffs[PARTY_BUFF_WATER_WALK].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
212 inline bool ImmolationActive() {return pPartyBuffs[PARTY_BUFF_IMMOLATION].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
213 inline int ImmolationSkillLevel() {return pPartyBuffs[PARTY_BUFF_IMMOLATION].uSkill;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
214 inline bool FeatherFallActive() {return pPartyBuffs[PARTY_BUFF_FEATHER_FALL].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
215 inline bool Invisible() {return pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime > 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
216
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
217 inline bool GetRedAlert() {return (uFlags & PARTY_FLAGS_1_ALERT_RED) != 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
218 inline void SetRedAlert() {uFlags |= PARTY_FLAGS_1_ALERT_RED;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
219 inline bool GetYellowAlert() {return (uFlags & PARTY_FLAGS_1_ALERT_YELLOW) != 0;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
220 inline void SetYellowAlert() {uFlags |= PARTY_FLAGS_1_ALERT_YELLOW;}
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
221
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
222 bool IsPartyEvil();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
223 bool IsPartyGood();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
224 int _46A89E_immolation_effect(int* affected, int affectedArrSize, int effectRange);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
225 int field_0;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
226 unsigned int uPartyHeight;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
227 unsigned int uDefaultPartyHeight;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
228 int sEyelevel;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
229 unsigned int uDefaultEyelevel;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
230 int field_14_radius;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
231 int y_rotation_granularity;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
232 unsigned int uWalkSpeed;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
233 int y_rotation_speed; // deg/s
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
234 int field_24;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
235 int field_28;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
236 unsigned __int64 uTimePlayed;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
237 __int64 uLastRegenerationTime;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
238 PartyTimeStruct PartyTimes;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
239 Vec3_int_ vPosition;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
240 int sRotationY;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
241 int sRotationX;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
242 Vec3_int_ vPrevPosition;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
243 int sPrevRotationY;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
244 int sPrevRotationX;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
245 int sPrevEyelevel;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
246 int field_6E0;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
247 int field_6E4;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
248 int uFallSpeed;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
249 int field_6EC;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
250 int field_6F0;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
251 int floor_face_pid; // face we are standing at
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
252 int walk_sound_timer;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
253 int field_6FC;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
254 int uFallStartY;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
255 unsigned int bFlying;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
256 char field_708;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
257 unsigned __int8 hirelingScrollPosition;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
258 char field_70A;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
259 char field_70B;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
260 unsigned int uCurrentYear;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
261 unsigned int uCurrentMonth;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
262 unsigned int uCurrentMonthWeek;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
263 unsigned int uDaysPlayed;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
264 unsigned int uCurrentHour;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
265 unsigned int uCurrentMinute;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
266 unsigned int uCurrentTimeSecond;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
267 unsigned int uNumFoodRations;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
268 int field_72C;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
269 int field_730;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
270 unsigned int uNumGold;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
271 unsigned int uNumGoldInBank;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
272 unsigned int uNumDeaths;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
273 int field_740;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
274 int uNumPrisonTerms;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
275 unsigned int uNumBountiesCollected;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
276 int field_74C;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
277 std::array<__int16, 5> monster_id_for_hunting;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
278 std::array<__int16, 5> monster_for_hunting_killed;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
279 unsigned char days_played_without_rest;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
280 unsigned __int8 _quest_bits[64];
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
281 std::array<unsigned __int8, 16> pArcomageWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
282 char field_7B5_in_arena_quest;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
283 char uNumArenaPageWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
284 char uNumArenaSquireWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
285 char uNumArenaKnightWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
286 char uNumArenaLordWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
287 std::array<char, 29> pIsArtifactFound; //7ba
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
288 std::array<char, 39> field_7d7;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
289 unsigned char _autonote_bits[26];
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
290 std::array<char, 60> field_818;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
291 std::array<char, 32> field_854;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
292 int uNumArcomageWins;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
293 int uNumArcomageLoses;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
294 unsigned int bTurnBasedModeOn;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
295 int field_880;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
296 int uFlags2;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
297 PartyAlignment alignment;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
298 std::array<SpellBuff, 20> pPartyBuffs;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
299 std::array<Player, 4> pPlayers;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
300 std::array<NPCData, 2> pHirelings;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
301 ItemGen pPickedItem;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
302 unsigned int uFlags;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
303 std::array<std::array<ItemGen, 12>, 53> StandartItemsInShops;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
304 std::array<std::array<ItemGen, 12>, 53> SpecialItemsInShops; //D0EC
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
305 std::array<std::array<ItemGen, 12>, 32> SpellBooksInGuilds;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
306 std::array<char, 24> field_1605C;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
307 char pHireling1Name[100];
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
308 char pHireling2Name[100];
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
309 int armageddon_timer;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
310 int armageddonDamage;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
311 std::array<int, 4> pTurnBasedPlayerRecoveryTimes;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
312 std::array<int, 53> InTheShopFlags;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
313 int uFine;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
314 float flt_TorchlightColorR;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
315 float flt_TorchlightColorG;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
316 float flt_TorchlightColorB;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
317 };
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
318 #pragma pack(pop)
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
319
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
320
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
321
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
322 extern Party *pParty; // idb
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
323
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
324
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
325 extern struct ActionQueue *pPartyActionQueue;
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
326
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
327 bool TestPartyQuestBit(PARTY_QUEST_BITS bit);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
328 void __fastcall Rest(unsigned int uHoursToSleep);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
329 void RestAndHeal(__int64 uNumMinutes); // idb
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
330 int GetTravelTime();
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
331
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
332 bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2);
68cdef6879a0 engine folder
Ritor1
parents:
diff changeset
333 void _449B7E_toggle_bit(unsigned char *pArray, __int16 a2, unsigned __int16 bToggle); // idb