soldier profile type.h 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. #ifndef __SOLDER_PROFILE_TYPE_H
  2. #define __SOLDER_PROFILE_TYPE_H
  3. #define NUM_PROFILES 170
  4. #define FIRST_RPC 57
  5. #define FIRST_NPC 75
  6. #define NAME_LENGTH 30
  7. #define NICKNAME_LENGTH 10
  8. //ONLY HAVE 8 MISC FLAGS.. SHOULD BE ENOUGH
  9. #define PROFILE_MISC_FLAG_RECRUITED 0x01
  10. #define PROFILE_MISC_FLAG_HAVESEENCREATURE 0x02
  11. #define PROFILE_MISC_FLAG_FORCENPCQUOTE 0x04
  12. #define PROFILE_MISC_FLAG_WOUNDEDBYPLAYER 0x08
  13. #define PROFILE_MISC_FLAG_TEMP_NPC_QUOTE_DATA_EXISTS 0x10
  14. #define PROFILE_MISC_FLAG_SAID_HOSTILE_QUOTE 0x20
  15. #define PROFILE_MISC_FLAG_EPCACTIVE 0x40
  16. #define PROFILE_MISC_FLAG_ALREADY_USED_ITEMS 0x80 //The player has already purchased the mercs items.
  17. #define PROFILE_MISC_FLAG2_DONT_ADD_TO_SECTOR 0x01
  18. #define PROFILE_MISC_FLAG2_LEFT_COUNTRY 0x02
  19. #define PROFILE_MISC_FLAG2_BANDAGED_TODAY 0x04
  20. #define PROFILE_MISC_FLAG2_SAID_FIRSTSEEN_QUOTE 0x08
  21. #define PROFILE_MISC_FLAG2_NEEDS_TO_SAY_HOSTILE_QUOTE 0x10
  22. #define PROFILE_MISC_FLAG2_MARRIED_TO_HICKS 0x20
  23. #define PROFILE_MISC_FLAG2_ASKED_BY_HICKS 0x40
  24. #define PROFILE_MISC_FLAG3_PLAYER_LEFT_MSG_FOR_MERC_AT_AIM 0x01 // In the aimscreen, the merc was away and the player left a message
  25. #define PROFILE_MISC_FLAG3_PERMANENT_INSERTION_CODE 0x02
  26. #define PROFILE_MISC_FLAG3_PLAYER_HAD_CHANCE_TO_HIRE 0x04 // player's had a chance to hire this merc
  27. #define PROFILE_MISC_FLAG3_HANDLE_DONE_TRAVERSAL 0x08
  28. #define PROFILE_MISC_FLAG3_NPC_PISSED_OFF 0x10
  29. #define PROFILE_MISC_FLAG3_MERC_MERC_IS_DEAD_AND_QUOTE_SAID 0x20 // In the merc site, the merc has died and Speck quote for the dead merc has been said
  30. #define PROFILE_MISC_FLAG3_TOWN_DOESNT_CARE_ABOUT_DEATH 0x40
  31. #define PROFILE_MISC_FLAG3_GOODGUY 0x80
  32. //
  33. // The following variables are used with the 'bMercStatus' variable
  34. //
  35. //
  36. //Merc is ready
  37. #define MERC_OK 0
  38. //if the merc doesnt have a EDT file
  39. #define MERC_HAS_NO_TEXT_FILE -1
  40. //used in the aim video conferencing screen
  41. #define MERC_ANNOYED_BUT_CAN_STILL_CONTACT -2
  42. #define MERC_ANNOYED_WONT_CONTACT -3
  43. #define MERC_HIRED_BUT_NOT_ARRIVED_YET -4
  44. //self explanatory
  45. #define MERC_IS_DEAD -5
  46. //set when the merc is returning home. A delay for 1,2 or 3 days
  47. #define MERC_RETURNING_HOME -6
  48. // used when merc starts game on assignment, goes on assignment later, or leaves to go on another contract
  49. #define MERC_WORKING_ELSEWHERE -7
  50. //When the merc was fired, they were a POW, make sure they dont show up in AIM, or MERC as available
  51. #define MERC_FIRED_AS_A_POW -8
  52. // the values for categories of stats
  53. #define SUPER_STAT_VALUE 80
  54. #define NEEDS_TRAINING_STAT_VALUE 50
  55. #define NO_CHANCE_IN_HELL_STAT_VALUE 40
  56. #define SUPER_SKILL_VALUE 80
  57. #define NEEDS_TRAINING_SKILL_VALUE 50
  58. #define NO_CHANCE_IN_HELL_SKILL_VALUE 0
  59. typedef enum
  60. {
  61. NO_SKILLTRAIT = 0,
  62. LOCKPICKING,
  63. HANDTOHAND,
  64. ELECTRONICS,
  65. NIGHTOPS,
  66. THROWING,
  67. TEACHING,
  68. HEAVY_WEAPS,
  69. AUTO_WEAPS,
  70. STEALTHY,
  71. AMBIDEXT,
  72. THIEF,
  73. MARTIALARTS,
  74. KNIFING,
  75. ONROOF,
  76. CAMOUFLAGED,
  77. NUM_SKILLTRAITS
  78. } SkillTrait;
  79. typedef enum
  80. {
  81. NO_PERSONALITYTRAIT = 0,
  82. HEAT_INTOLERANT,
  83. NERVOUS,
  84. CLAUSTROPHOBIC,
  85. NONSWIMMER,
  86. FEAR_OF_INSECTS,
  87. FORGETFUL,
  88. PSYCHO
  89. } PersonalityTrait;
  90. #define NERVOUS_RADIUS 10
  91. typedef enum
  92. {
  93. ATT_NORMAL = 0,
  94. ATT_FRIENDLY,
  95. ATT_LONER,
  96. ATT_OPTIMIST,
  97. ATT_PESSIMIST,
  98. ATT_AGGRESSIVE,
  99. ATT_ARROGANT,
  100. ATT_BIG_SHOT,
  101. ATT_ASSHOLE,
  102. ATT_COWARD,
  103. NUM_ATTITUDES
  104. } Attitudes;
  105. typedef enum
  106. {
  107. MALE = 0,
  108. FEMALE
  109. } Sexes;
  110. typedef enum
  111. {
  112. NOT_SEXIST = 0,
  113. SOMEWHAT_SEXIST,
  114. VERY_SEXIST,
  115. GENTLEMAN
  116. } SexistLevels;
  117. // training defines for evolution, no stat increase, stat decrease( de-evolve )
  118. typedef enum{
  119. NORMAL_EVOLUTION =0,
  120. NO_EVOLUTION,
  121. DEVOLVE,
  122. } CharacterEvolution;
  123. #define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) )
  124. #define HATED_MERC( prof, hat ) ((prof)->bHated[0] == (hat) || (prof)->bHated[1] == (hat) || (prof)->bHated[2] == (hat) )
  125. #define BUDDY_OPINION +25
  126. #define HATED_OPINION -25
  127. typedef struct
  128. {
  129. UINT16 zName[ NAME_LENGTH ];
  130. UINT16 zNickname[ NICKNAME_LENGTH ];
  131. UINT32 uiAttnSound;
  132. UINT32 uiCurseSound;
  133. UINT32 uiDieSound;
  134. UINT32 uiGoodSound;
  135. UINT32 uiGruntSound;
  136. UINT32 uiGrunt2Sound;
  137. UINT32 uiOkSound;
  138. UINT8 ubFaceIndex;
  139. PaletteRepID PANTS;
  140. PaletteRepID VEST;
  141. PaletteRepID SKIN;
  142. PaletteRepID HAIR;
  143. INT8 bSex;
  144. INT8 bArmourAttractiveness;
  145. UINT8 ubMiscFlags2;
  146. INT8 bEvolution;
  147. UINT8 ubMiscFlags;
  148. UINT8 bSexist;
  149. INT8 bLearnToHate;
  150. // skills
  151. INT8 bStealRate;
  152. INT8 bVocalVolume;
  153. UINT8 ubQuoteRecord;
  154. INT8 bDeathRate;
  155. INT8 bScientific;
  156. INT16 sExpLevelGain;
  157. INT16 sLifeGain;
  158. INT16 sAgilityGain;
  159. INT16 sDexterityGain;
  160. INT16 sWisdomGain;
  161. INT16 sMarksmanshipGain;
  162. INT16 sMedicalGain;
  163. INT16 sMechanicGain;
  164. INT16 sExplosivesGain;
  165. UINT8 ubBodyType;
  166. INT8 bMedical;
  167. UINT16 usEyesX;
  168. UINT16 usEyesY;
  169. UINT16 usMouthX;
  170. UINT16 usMouthY;
  171. UINT32 uiEyeDelay;
  172. UINT32 uiMouthDelay;
  173. UINT32 uiBlinkFrequency;
  174. UINT32 uiExpressionFrequency;
  175. UINT16 sSectorX;
  176. UINT16 sSectorY;
  177. UINT32 uiDayBecomesAvailable; //day the merc will be available. used with the bMercStatus
  178. INT8 bStrength;
  179. INT8 bLifeMax;
  180. INT8 bExpLevelDelta;
  181. INT8 bLifeDelta;
  182. INT8 bAgilityDelta;
  183. INT8 bDexterityDelta;
  184. INT8 bWisdomDelta;
  185. INT8 bMarksmanshipDelta;
  186. INT8 bMedicalDelta;
  187. INT8 bMechanicDelta;
  188. INT8 bExplosivesDelta;
  189. INT8 bStrengthDelta;
  190. INT8 bLeadershipDelta;
  191. UINT16 usKills;
  192. UINT16 usAssists;
  193. UINT16 usShotsFired;
  194. UINT16 usShotsHit;
  195. UINT16 usBattlesFought;
  196. UINT16 usTimesWounded;
  197. UINT16 usTotalDaysServed;
  198. INT16 sLeadershipGain;
  199. INT16 sStrengthGain;
  200. // BODY TYPE SUBSITUTIONS
  201. UINT32 uiBodyTypeSubFlags;
  202. INT16 sSalary;
  203. INT8 bLife;
  204. INT8 bDexterity; // dexterity (hand coord) value
  205. INT8 bPersonalityTrait;
  206. INT8 bSkillTrait;
  207. INT8 bReputationTolerance;
  208. INT8 bExplosive;
  209. INT8 bSkillTrait2;
  210. INT8 bLeadership;
  211. INT8 bBuddy[5];
  212. INT8 bHated[5];
  213. INT8 bExpLevel; // general experience level
  214. INT8 bMarksmanship;
  215. UINT8 bMinService;
  216. INT8 bWisdom;
  217. UINT8 bResigned;
  218. UINT8 bActive;
  219. UINT8 bInvStatus[19];
  220. UINT8 bInvNumber[19];
  221. UINT16 usApproachFactor[4];
  222. INT8 bMainGunAttractiveness;
  223. INT8 bAgility; // agility (speed) value
  224. BOOLEAN fUseProfileInsertionInfo; // Set to various flags, ( contained in TacticalSave.h )
  225. INT16 sGridNo; // The Gridno the NPC was in before leaving the sector
  226. UINT8 ubQuoteActionID;
  227. INT8 bMechanical;
  228. UINT8 ubInvUndroppable;
  229. UINT8 ubRoomRangeStart[2];
  230. UINT16 inv[19];
  231. INT8 bMercTownReputation[ 20 ];
  232. UINT16 usStatChangeChances[ 12 ]; // used strictly for balancing, never shown!
  233. UINT16 usStatChangeSuccesses[ 12 ]; // used strictly for balancing, never shown!
  234. UINT8 ubStrategicInsertionCode;
  235. UINT8 ubRoomRangeEnd[2];
  236. INT8 bPadding[ 4 ];
  237. UINT8 ubLastQuoteSaid;
  238. INT8 bRace;
  239. INT8 bNationality;
  240. INT8 bAppearance;
  241. INT8 bAppearanceCareLevel;
  242. INT8 bRefinement;
  243. INT8 bRefinementCareLevel;
  244. INT8 bHatedNationality;
  245. INT8 bHatedNationalityCareLevel;
  246. INT8 bRacist;
  247. UINT32 uiWeeklySalary;
  248. UINT32 uiBiWeeklySalary;
  249. INT8 bMedicalDeposit;
  250. INT8 bAttitude;
  251. INT8 bBaseMorale;
  252. UINT16 sMedicalDepositAmount;
  253. INT8 bLearnToLike;
  254. UINT8 ubApproachVal[4];
  255. UINT8 ubApproachMod[3][4];
  256. INT8 bTown;
  257. INT8 bTownAttachment;
  258. UINT16 usOptionalGearCost;
  259. INT8 bMercOpinion[75];
  260. INT8 bApproached;
  261. INT8 bMercStatus; //The status of the merc. If negative, see flags at the top of this file. Positive: The number of days the merc is away for. 0: Not hired but ready to be.
  262. INT8 bHatedTime[5];
  263. INT8 bLearnToLikeTime;
  264. INT8 bLearnToHateTime;
  265. INT8 bHatedCount[5];
  266. INT8 bLearnToLikeCount;
  267. INT8 bLearnToHateCount;
  268. UINT8 ubLastDateSpokenTo;
  269. UINT8 bLastQuoteSaidWasSpecial;
  270. INT8 bSectorZ;
  271. UINT16 usStrategicInsertionData;
  272. INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
  273. INT8 bRecruitDefaultResponseUsedRecently;
  274. INT8 bThreatenDefaultResponseUsedRecently;
  275. INT8 bNPCData; // NPC specific
  276. INT32 iBalance;
  277. INT16 sTrueSalary; // for use when the person is working for us for free but has a positive salary value
  278. UINT8 ubCivilianGroup;
  279. UINT8 ubNeedForSleep;
  280. UINT32 uiMoney;
  281. INT8 bNPCData2; // NPC specific
  282. UINT8 ubMiscFlags3;
  283. UINT8 ubDaysOfMoraleHangover; // used only when merc leaves team while having poor morale
  284. UINT8 ubNumTimesDrugUseInLifetime; // The # times a drug has been used in the player's lifetime...
  285. // Flags used for the precedent to repeating oneself in Contract negotiations. Used for quote 80 - ~107. Gets reset every day
  286. UINT32 uiPrecedentQuoteSaid;
  287. UINT32 uiProfileChecksum;
  288. INT16 sPreCombatGridNo;
  289. UINT8 ubTimeTillNextHatedComplaint;
  290. UINT8 ubSuspiciousDeath;
  291. INT32 iMercMercContractLength; //Used for MERC mercs, specifies how many days the merc has gone since last page
  292. UINT32 uiTotalCostToDate; // The total amount of money that has been paid to the merc for their salary
  293. UINT8 ubBuffer[4];
  294. } MERCPROFILESTRUCT;
  295. #define TIME_BETWEEN_HATED_COMPLAINTS 24
  296. #define SUSPICIOUS_DEATH 1
  297. #define VERY_SUSPICIOUS_DEATH 2
  298. #endif