mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
* Fixing upper/lower case for includes types.h, zconf.h and zlib.h were renamed so that global includes like Types.h are not used.
1480 lines
39 KiB
C++
1480 lines
39 KiB
C++
#ifndef __SOLDER_PROFILE_TYPE_H
|
|
#define __SOLDER_PROFILE_TYPE_H
|
|
|
|
#include "Overhead Types.h"
|
|
#include "Soldier Control.h"
|
|
#include "mapscreen.h"
|
|
|
|
#define NUM_PROFILES 255 //170 new profiles by Jazz
|
|
#define NUM_PROFILES_v111 170
|
|
//tais: maximum amount of starting gear kits
|
|
#define NUM_MERCSTARTINGGEAR_KITS 5
|
|
|
|
#ifdef JA2UB
|
|
#define FIRST_RPC 60 //JA25 was 59
|
|
#else
|
|
#define FIRST_RPC 57
|
|
#endif
|
|
|
|
#define FIRST_NPC 75
|
|
|
|
#define NAME_LENGTH 30
|
|
#define NICKNAME_LENGTH 10
|
|
|
|
|
|
//ONLY HAVE 8 MISC FLAGS.. SHOULD BE ENOUGH
|
|
#define PROFILE_MISC_FLAG_RECRUITED 0x01
|
|
#define PROFILE_MISC_FLAG_HAVESEENCREATURE 0x02
|
|
#define PROFILE_MISC_FLAG_FORCENPCQUOTE 0x04
|
|
#define PROFILE_MISC_FLAG_WOUNDEDBYPLAYER 0x08
|
|
#define PROFILE_MISC_FLAG_TEMP_NPC_QUOTE_DATA_EXISTS 0x10
|
|
#define PROFILE_MISC_FLAG_SAID_HOSTILE_QUOTE 0x20
|
|
#define PROFILE_MISC_FLAG_EPCACTIVE 0x40
|
|
#define PROFILE_MISC_FLAG_ALREADY_USED_ITEMS 0x80 //The player has already purchased the mercs items.
|
|
|
|
#define PROFILE_MISC_FLAG2_DONT_ADD_TO_SECTOR 0x01
|
|
#define PROFILE_MISC_FLAG2_LEFT_COUNTRY 0x02
|
|
#define PROFILE_MISC_FLAG2_BANDAGED_TODAY 0x04
|
|
#define PROFILE_MISC_FLAG2_SAID_FIRSTSEEN_QUOTE 0x08
|
|
#define PROFILE_MISC_FLAG2_NEEDS_TO_SAY_HOSTILE_QUOTE 0x10
|
|
#define PROFILE_MISC_FLAG2_MARRIED_TO_HICKS 0x20
|
|
#define PROFILE_MISC_FLAG2_ASKED_BY_HICKS 0x40
|
|
//JMich_MMG: Flag to see if gearkit cost is still unpaid for
|
|
#define PROFILE_MISC_FLAG2_MERC_GEARKIT_UNPAID 0x80
|
|
|
|
#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
|
|
#define PROFILE_MISC_FLAG3_PERMANENT_INSERTION_CODE 0x02
|
|
#define PROFILE_MISC_FLAG3_PLAYER_HAD_CHANCE_TO_HIRE 0x04 // player's had a chance to hire this merc
|
|
#define PROFILE_MISC_FLAG3_HANDLE_DONE_TRAVERSAL 0x08
|
|
|
|
#define PROFILE_MISC_FLAG3_NPC_PISSED_OFF 0x10
|
|
#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
|
|
|
|
#define PROFILE_MISC_FLAG3_TOWN_DOESNT_CARE_ABOUT_DEATH 0x40
|
|
#define PROFILE_MISC_FLAG3_GOODGUY 0x80
|
|
//
|
|
// The following variables are used with the 'bMercStatus' variable
|
|
//
|
|
//
|
|
|
|
//Merc is ready
|
|
#define MERC_OK 0
|
|
|
|
//if the merc doesnt have a EDT file
|
|
#define MERC_HAS_NO_TEXT_FILE -1
|
|
|
|
//used in the aim video conferencing screen
|
|
#define MERC_ANNOYED_BUT_CAN_STILL_CONTACT -2
|
|
#define MERC_ANNOYED_WONT_CONTACT -3
|
|
#define MERC_HIRED_BUT_NOT_ARRIVED_YET -4
|
|
|
|
//self explanatory
|
|
#define MERC_IS_DEAD -5
|
|
|
|
//set when the merc is returning home. A delay for 1,2 or 3 days
|
|
#define MERC_RETURNING_HOME -6
|
|
|
|
// used when merc starts game on assignment, goes on assignment later, or leaves to go on another contract
|
|
#define MERC_WORKING_ELSEWHERE -7
|
|
|
|
//When the merc was fired, they were a POW, make sure they dont show up in AIM, or MERC as available
|
|
#define MERC_FIRED_AS_A_POW -8
|
|
|
|
|
|
// the values for categories of stats
|
|
#define SUPER_STAT_VALUE 80
|
|
#define NEEDS_TRAINING_STAT_VALUE 50
|
|
#define NO_CHANCE_IN_HELL_STAT_VALUE 40
|
|
|
|
#define SUPER_SKILL_VALUE 80
|
|
#define NEEDS_TRAINING_SKILL_VALUE 50
|
|
#define NO_CHANCE_IN_HELL_SKILL_VALUE 0
|
|
|
|
//
|
|
// WDS 05/13/2009
|
|
// This is a temporary fix and should be REALLY fixed someday.
|
|
// The bMercOpinion array in MERCPROFILESTRUCT below only contains 75 entries. That
|
|
// means profile ID#s of 75 and beyond are not valid to be used for checking morale.
|
|
//
|
|
// Flugente 16/04/2013: Done
|
|
#define NUMBER_OF_OPINIONS_OLD 75 // for old structures, we need to keep this value. Do NOT change, or you'll be in a world of pain. I warned you.
|
|
#define NUMBER_OF_OPINIONS 255
|
|
|
|
|
|
inline bool OKToCheckOpinion(int profileNumber) {
|
|
return (profileNumber < NUMBER_OF_OPINIONS);
|
|
}
|
|
|
|
// SANDRO - replaced this list to represent the old traits only
|
|
typedef enum
|
|
{
|
|
NO_SKILLTRAIT_OT = 0,
|
|
LOCKPICKING_OT,
|
|
HANDTOHAND_OT,
|
|
ELECTRONICS_OT,
|
|
NIGHTOPS_OT,
|
|
THROWING_OT,
|
|
TEACHING_OT,
|
|
HEAVY_WEAPS_OT,
|
|
AUTO_WEAPS_OT,
|
|
STEALTHY_OT,
|
|
AMBIDEXT_OT,
|
|
THIEF_OT,
|
|
MARTIALARTS_OT,
|
|
KNIFING_OT,
|
|
PROF_SNIPER_OT,
|
|
CAMOUFLAGED_OT,
|
|
// SANDRO - I dared to remove these for it is really useless,
|
|
// with the camo removing/repainting feature you only need the basic camouflage trait anyway
|
|
//CAMOUFLAGED_URBAN,
|
|
//CAMOUFLAGED_DESERT,
|
|
//CAMOUFLAGED_SNOW,
|
|
EXPERT,
|
|
NUM_SKILLTRAITS_OT
|
|
} SkillTrait;
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// SANDRO - the list for new traits
|
|
typedef enum
|
|
{
|
|
NO_SKILLTRAIT_NT = 0,
|
|
// MAJOR TRAITS
|
|
AUTO_WEAPONS_NT, // 1
|
|
HEAVY_WEAPONS_NT, // 2
|
|
SNIPER_NT, // 3
|
|
RANGER_NT, // 4
|
|
GUNSLINGER_NT, // 5
|
|
MARTIAL_ARTS_NT, // 6
|
|
SQUADLEADER_NT, // 7
|
|
TECHNICIAN_NT, // 8
|
|
DOCTOR_NT, // 9
|
|
// MINOR TRAITS
|
|
AMBIDEXTROUS_NT, // 10
|
|
MELEE_NT, // 11
|
|
THROWING_NT, // 12
|
|
NIGHT_OPS_NT, // 13
|
|
STEALTHY_NT, // 14
|
|
ATHLETICS_NT, // 15
|
|
BODYBUILDING_NT, // 16
|
|
DEMOLITIONS_NT, // 17
|
|
TEACHING_NT, // 18
|
|
SCOUTING_NT, // 19
|
|
|
|
// Flugente: new traits have to go here, even if they are major traits, as otherwise the existing traits in profiles get mixed up
|
|
COVERT_NT, // 20 // a major trait
|
|
RADIO_OPERATOR_NT, //21 // a minor trait
|
|
SNITCH_NT, //22 // a minor trait
|
|
SURVIVAL_NT, //23 // a minor trait
|
|
|
|
NUM_SKILLTRAITS_NT
|
|
} SkillTraitNew;
|
|
|
|
#define NUM_MAJOR_TRAITS 10
|
|
#define NUM_MINOR_TRAITS 13
|
|
|
|
#define NUM_ORIGINAL_MAJOR_TRAITS 9
|
|
|
|
// Flugente: I've had it with this hardcoding madness. Without this, adding or removing a new trait would crash anything related to a bubblehelp display of traits
|
|
// always check every use of these enums and every use of the skill-strings if you add a new trait
|
|
#define NEWTRAIT_MERCSKILL_EXPERTOFFSET (NUM_MAJOR_TRAITS + NUM_MINOR_TRAITS)
|
|
#define NEWTRAIT_MERCSKILL_OFFSET_ALL (NEWTRAIT_MERCSKILL_EXPERTOFFSET + NUM_MAJOR_TRAITS)
|
|
|
|
// Flugente: these aren't really traits, but it is convenient to pretend so
|
|
#define INTEL (2 * NEWTRAIT_MERCSKILL_EXPERTOFFSET + 2)
|
|
#define DISGUISE (INTEL + 1)
|
|
#define VARIOUSSKILLS (DISGUISE + 1)
|
|
// sevenfm: add autobandage to skills menu
|
|
#define AUTOBANDAGESKILLS (VARIOUSSKILLS + 1)
|
|
|
|
// SANDRO - new set of character traits
|
|
typedef enum
|
|
{
|
|
CHAR_TRAIT_NORMAL = 0,
|
|
CHAR_TRAIT_SOCIABLE,
|
|
CHAR_TRAIT_LONER,
|
|
CHAR_TRAIT_OPTIMIST,
|
|
CHAR_TRAIT_ASSERTIVE,
|
|
CHAR_TRAIT_INTELLECTUAL,
|
|
CHAR_TRAIT_PRIMITIVE,
|
|
CHAR_TRAIT_AGGRESSIVE,
|
|
CHAR_TRAIT_PHLEGMATIC,
|
|
CHAR_TRAIT_DAUNTLESS,
|
|
CHAR_TRAIT_PACIFIST,
|
|
CHAR_TRAIT_MALICIOUS,
|
|
CHAR_TRAIT_SHOWOFF,
|
|
CHAR_TRAIT_COWARD,
|
|
NUM_CHAR_TRAITS
|
|
} CharacterTraits;
|
|
|
|
// SANDRO - appearances
|
|
typedef enum
|
|
{
|
|
APPEARANCE_AVERAGE = 0,
|
|
APPEARANCE_UGLY,
|
|
APPEARANCE_HOMELY,
|
|
APPEARANCE_ATTRACTIVE,
|
|
APPEARANCE_BABE,
|
|
NUM_APPEARANCES
|
|
} Appearances;
|
|
|
|
// Flugente - care levels
|
|
typedef enum
|
|
{
|
|
CARELEVEL_NONE = 0,
|
|
CARELEVEL_SOME = 1,
|
|
CARELEVEL_EXTREME = 2,
|
|
|
|
NUM_CARELEVELS
|
|
} CareLevels;
|
|
|
|
// Flugente - refinements
|
|
typedef enum
|
|
{
|
|
REFINEMENT_AVERAGE = 0,
|
|
REFINEMENT_SLOB = 1,
|
|
REFINEMENT_SNOB = 2,
|
|
|
|
NUM_REFINEMENT
|
|
} Refinements;
|
|
|
|
// Flugente - nationalities
|
|
typedef enum
|
|
{
|
|
// old Sirtech values
|
|
AMERICAN_NAT = 0, // take that, Murica! Sirtech knew you have no value :-)
|
|
ARAB_NAT = 1,
|
|
AUSTRALIAN_NAT = 2,
|
|
BRITISH_NAT = 3,
|
|
CANADIAN_NAT = 4,
|
|
CUBAN_NAT = 5,
|
|
DANISH_NAT = 6,
|
|
FRENCH_NAT = 7,
|
|
RUSSIAN_NAT = 8, // kitty: changed 9 from nigerian (moved down) to traconian (UB takes place in Tracona)
|
|
TRACONIAN_NAT = 9, // this was simply not defined in original data (I did not find any country), but we can't have any holes in here, so just invented soemthing
|
|
SWISS_NAT = 10,
|
|
JAMAICAN_NAT = 11,
|
|
POLISH_NAT = 12,
|
|
CHINESE_NAT = 13,
|
|
IRISH_NAT = 14,
|
|
SOUTH_AFRICAN_NAT = 15,
|
|
HUNGARIAN_NAT = 16,
|
|
SCOTTISH_NAT = 17,
|
|
ARULCAN_NAT = 18,
|
|
GERMAN_NAT = 19,
|
|
AFRICAN_NAT = 20,
|
|
ITALIAN_NAT = 21,
|
|
DUTCH_NAT = 22,
|
|
ROMANIAN_NAT = 23,
|
|
METAVIRAN_NAT = 24,
|
|
|
|
// new values, because why not
|
|
// kitty:
|
|
// added a few more and removed some, hoping to achieve a decent amount from every inhabited continent (plus one, in the 90's, relatively well-known fictional one)
|
|
// 0-24 original ja2 nationalities (except 9, see there)
|
|
// sorted non-original ones in (english) alphabetic order for some more ease of use during IMP creation
|
|
AFGHAN_NAT, // 25
|
|
ALBANIAN_NAT,
|
|
ARGENTINIAN_NAT,
|
|
ARMENIAN_NAT,
|
|
AZERBAIJANI_NAT,
|
|
BANGLADESHI_NAT, // 30
|
|
BELARUSIAN_NAT,
|
|
BELGIAN_NAT,
|
|
BENINESE_NAT,
|
|
BOLIVIAN_NAT,
|
|
BOSNIAN_NAT, // 35
|
|
BRASILIAN_NAT,
|
|
BULGARIAN_NAT,
|
|
CAMBODIAN_NAT,
|
|
CHADIAN_NAT,
|
|
CHILEAN_NAT, // 40
|
|
COLUMBIAN_NAT,
|
|
CONGOLESE_NAT,
|
|
CROATIAN_NAT,
|
|
ECUADORIAN_NAT,
|
|
EGYPTIAN_NAT, // 45
|
|
ENGLISH_NAT,
|
|
ERITREAN_NAT,
|
|
ESTONIAN_NAT,
|
|
ETHIOPIAN_NAT,
|
|
FILIPINO_NAT, // 50
|
|
FINNISH_NAT,
|
|
GEORGIAN_NAT,
|
|
GREEK_NAT,
|
|
GUATEMALAN_NAT,
|
|
HAITIAN_NAT, // 55
|
|
HONDURAN_NAT,
|
|
INDIAN_NAT,
|
|
INDONESIAN_NAT,
|
|
IRANIAN_NAT,
|
|
IRAQI_NAT, // 60
|
|
ISLANDIC_NAT,
|
|
ISRAELI_NAT,
|
|
JAPANESE_NAT,
|
|
JORDANIAN_NAT,
|
|
KAZAKHSTANI_NAT, // 65
|
|
KOREAN_NAT,
|
|
KYRGYZSTANI_NAT,
|
|
LAOTIAN_NAT,
|
|
LATVIAN_NAT,
|
|
LEBANESE_NAT, // 70
|
|
LITHUANIAN_NAT,
|
|
LYBIAN_NAT,
|
|
MACEDONIAN_NAT,
|
|
MALAYSIAN_NAT,
|
|
MEXICAN_NAT, // 75
|
|
MONGOLIAN_NAT,
|
|
MOROCCAN_NAT,
|
|
MOZAMBICAN_NAT,
|
|
MYANMA_NAT,
|
|
NAMIBIAN_NAT, // 80
|
|
NICARAGUAN_NAT,
|
|
NIGERIAN_NAT,
|
|
NIGERIEN_NAT,
|
|
NORWEGIAN_NAT,
|
|
PAKISTANI_NAT, // 85
|
|
PANAMANIAN_NAT,
|
|
PORTOGUESE_NAT,
|
|
RWANDANESE_NAT,
|
|
SALVADORAN_NAT,
|
|
SAUDI_NAT, // 90
|
|
SERBIAN_NAT,
|
|
SLOVAKIAN_NAT,
|
|
SLOVENIAN_NAT,
|
|
SOMALI_NAT,
|
|
SPANISH_NAT, // 95
|
|
SUDANESE_NAT,
|
|
SWEDISH_NAT,
|
|
SYRIAN_NAT,
|
|
THAI_NAT,
|
|
TOGOLESE_NAT, // 100
|
|
TUNISIAN_NAT,
|
|
TURKISH_NAT,
|
|
UGANDAN_NAT,
|
|
UKRAINIAN_NAT,
|
|
URUGUAYAN_NAT, // 105
|
|
UZBEKISTANI_NAT,
|
|
VENEZUELAN_NAT,
|
|
VIETNAMESE_NAT,
|
|
WELSH_NAT,
|
|
YEMENI_NAT, // 110
|
|
ZAMUNDAN_NAT, // Zamunda
|
|
ZIMBABWEAN_NAT,
|
|
|
|
NUM_NATIONALITIES
|
|
} Nationalities;
|
|
|
|
// Flugente - races
|
|
typedef enum
|
|
{
|
|
WHITE = 0,
|
|
BLACK = 1,
|
|
ASIAN = 2,
|
|
ESKIMO = 3,
|
|
HISPANIC = 4,
|
|
|
|
NUM_RACES
|
|
} Races;
|
|
|
|
// Flugente - racist levels
|
|
typedef enum
|
|
{
|
|
RACIST_NONE = 0,
|
|
RACIST_SOME = 1,
|
|
RACIST_VERY = 2,
|
|
|
|
NUM_RACIST
|
|
} RacistLevels;
|
|
|
|
// Flugente: dynamic opinons: number of profile flagmasks
|
|
#define OPINION_FLAGMASKS_NUMBER 6
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
typedef enum
|
|
{
|
|
NO_DISABILITY = 0,
|
|
HEAT_INTOLERANT,
|
|
NERVOUS,
|
|
CLAUSTROPHOBIC,
|
|
NONSWIMMER,
|
|
FEAR_OF_INSECTS,
|
|
FORGETFUL,
|
|
PSYCHO,
|
|
// Flugente: more disabilities
|
|
DEAF,
|
|
SHORTSIGHTED,
|
|
HEMOPHILIAC,
|
|
AFRAID_OF_HEIGHTS,
|
|
SELF_HARM,
|
|
|
|
NUM_DISABILITIES
|
|
} PersonalityTrait;
|
|
|
|
#define NERVOUS_RADIUS 10
|
|
|
|
typedef enum
|
|
{
|
|
ATT_NORMAL = 0,
|
|
ATT_FRIENDLY,
|
|
ATT_LONER,
|
|
ATT_OPTIMIST,
|
|
ATT_PESSIMIST,
|
|
ATT_AGGRESSIVE,
|
|
ATT_ARROGANT,
|
|
ATT_BIG_SHOT,
|
|
ATT_ASSHOLE,
|
|
ATT_COWARD,
|
|
NUM_ATTITUDES
|
|
} Attitudes;
|
|
|
|
typedef enum
|
|
{
|
|
MALE = 0,
|
|
FEMALE
|
|
} Sexes;
|
|
|
|
typedef enum
|
|
{
|
|
NOT_SEXIST = 0,
|
|
SOMEWHAT_SEXIST,
|
|
VERY_SEXIST,
|
|
GENTLEMAN,
|
|
NUM_SEXIST
|
|
} SexistLevels;
|
|
|
|
// rftr: removed the CharacterEvolution enum as it was replaced by growth modifiers
|
|
|
|
#define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) || (prof)->bBuddy[3] == (bud) || (prof)->bBuddy[4] == (bud) || ( (prof)->bLearnToLike == (bud) && (prof)->bLearnToLikeCount == 0 ) )
|
|
#define HATED_MERC( prof, hat ) ((prof)->bHated[0] == (hat) || (prof)->bHated[1] == (hat) || (prof)->bHated[2] == (hat) || (prof)->bHated[3] == (hat) || (prof)->bHated[4] == (hat) || ( (prof)->bLearnToHate == (hat) && (prof)->bLearnToHateCount == 0 ) )
|
|
|
|
#define BUDDY_OPINION +25
|
|
#define HATED_OPINION -25
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
|
// SANDRO - Let's add a nice new struct for records, as there are just too many of them
|
|
class STRUCT_Records
|
|
{
|
|
public:
|
|
|
|
UINT16 usKillsElites;
|
|
UINT16 usKillsRegulars;
|
|
UINT16 usKillsAdmins;
|
|
UINT16 usKillsHostiles;
|
|
UINT16 usKillsCreatures;
|
|
UINT16 usKillsZombies;
|
|
UINT16 usKillsTanks;
|
|
UINT16 usKillsOthers;
|
|
|
|
UINT16 usAssistsMercs;
|
|
UINT16 usAssistsMilitia;
|
|
UINT16 usAssistsOthers;
|
|
|
|
UINT16 usShotsFired;
|
|
UINT16 usMissilesLaunched;
|
|
UINT16 usGrenadesThrown;
|
|
UINT16 usKnivesThrown;
|
|
UINT16 usBladeAttacks;
|
|
UINT16 usHtHAttacks;
|
|
UINT16 usShotsHit;
|
|
|
|
UINT16 usBattlesTactical;
|
|
UINT16 usBattlesAutoresolve;
|
|
UINT16 usBattlesRetreated;
|
|
UINT16 usAmbushesExperienced;
|
|
UINT16 usLargestBattleFought;
|
|
|
|
UINT16 usTimesWoundedShot;
|
|
UINT16 usTimesWoundedStabbed;
|
|
UINT16 usTimesWoundedPunched;
|
|
UINT16 usTimesWoundedBlasted;
|
|
UINT16 usTimesStatDamaged;
|
|
UINT16 usTimesSurgeryUndergoed;
|
|
UINT16 usFacilityAccidents;
|
|
|
|
UINT16 usLocksPicked;
|
|
UINT16 usLocksBreached;
|
|
UINT16 usTrapsRemoved;
|
|
UINT16 usExpDetonated;
|
|
UINT16 usItemsRepaired;
|
|
UINT16 usItemsCombined;
|
|
UINT16 usItemsStolen;
|
|
UINT16 usMercsBandaged;
|
|
UINT16 usSurgeriesMade;
|
|
UINT16 usMilitiaTrained;
|
|
UINT16 usNPCsDiscovered;
|
|
UINT16 usSectorsDiscovered;
|
|
UINT8 ubQuestsHandled;
|
|
|
|
UINT16 usInterrogations;
|
|
UINT32 usDamageTaken;
|
|
UINT32 usDamageDealt;
|
|
UINT16 usTimesInfected;
|
|
UINT16 zFiller7;
|
|
UINT32 usPointsHealed; // we store the healed hundreth, because we can
|
|
|
|
}; // RECORDS
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define mNameLength 80
|
|
#define mGearKitNameLength 80
|
|
|
|
// CHRISL: Class to handle profile equipment from XML_MercStartingGear
|
|
class MERCPROFILEGEAR {
|
|
public:
|
|
// Constructor
|
|
MERCPROFILEGEAR();
|
|
// Assignment operator
|
|
MERCPROFILEGEAR& operator=(const MERCPROFILEGEAR&);
|
|
// Copy constructor
|
|
MERCPROFILEGEAR(const MERCPROFILEGEAR& src);
|
|
// Destructor
|
|
~MERCPROFILEGEAR();
|
|
|
|
// Initialize the mercenary profile gear
|
|
void initialize();
|
|
|
|
// Note that the constructor does this automatically.
|
|
void clearInventory();
|
|
public:
|
|
UINT16 mIndex;
|
|
INT16 PriceModifier;
|
|
INT16 AbsolutePrice;
|
|
CHAR16 mGearKitName[mGearKitNameLength];
|
|
CHAR8 mName[mNameLength];
|
|
char endOfPOD; // marker for end of POD (plain old data)
|
|
std::vector<int> inv;
|
|
std::vector<int> iStatus;
|
|
std::vector<int> iDrop;
|
|
std::vector<int> iNumber;
|
|
std::vector<int> lbe;
|
|
std::vector<int> lStatus;
|
|
private:
|
|
int invCnt;
|
|
int lbeCnt;
|
|
};
|
|
#define SIZEOF_MERCPROFILEGEAR_POD offsetof( MERCPROFILEGEAR, endOfPOD )
|
|
|
|
class OLD_MERCPROFILESTRUCT_101
|
|
{
|
|
public:
|
|
// Constructor
|
|
OLD_MERCPROFILESTRUCT_101();
|
|
CHAR16 zName[ NAME_LENGTH ];
|
|
CHAR16 zNickname[ NICKNAME_LENGTH ];
|
|
UINT32 uiAttnSound;
|
|
UINT32 uiCurseSound;
|
|
UINT32 uiDieSound;
|
|
UINT32 uiGoodSound;
|
|
UINT32 uiGruntSound;
|
|
UINT32 uiGrunt2Sound;
|
|
UINT32 uiOkSound;
|
|
UINT8 ubFaceIndex;
|
|
PaletteRepID PANTS;
|
|
PaletteRepID VEST;
|
|
PaletteRepID SKIN;
|
|
PaletteRepID HAIR;
|
|
INT8 bSex;
|
|
INT8 bArmourAttractiveness;
|
|
UINT8 ubMiscFlags2;
|
|
INT8 bEvolution;
|
|
UINT8 ubMiscFlags;
|
|
UINT8 bSexist;
|
|
UINT8 bLearnToHate;
|
|
|
|
// skills
|
|
INT8 bStealRate;
|
|
INT8 bVocalVolume;
|
|
UINT8 ubQuoteRecord;
|
|
INT8 bDeathRate;
|
|
INT8 bScientific;
|
|
|
|
INT16 sExpLevelGain;
|
|
INT16 sLifeGain;
|
|
INT16 sAgilityGain;
|
|
INT16 sDexterityGain;
|
|
INT16 sWisdomGain;
|
|
INT16 sMarksmanshipGain;
|
|
INT16 sMedicalGain;
|
|
INT16 sMechanicGain;
|
|
INT16 sExplosivesGain;
|
|
|
|
UINT8 ubBodyType;
|
|
INT8 bMedical;
|
|
|
|
UINT16 usEyesX;
|
|
UINT16 usEyesY;
|
|
UINT16 usMouthX;
|
|
UINT16 usMouthY;
|
|
UINT32 uiEyeDelay;
|
|
UINT32 uiMouthDelay;
|
|
UINT32 uiBlinkFrequency;
|
|
UINT32 uiExpressionFrequency;
|
|
UINT16 sSectorX;
|
|
UINT16 sSectorY;
|
|
|
|
UINT32 uiDayBecomesAvailable; //day the merc will be available. used with the bMercStatus
|
|
|
|
INT8 bStrength;
|
|
|
|
INT8 bLifeMax;
|
|
INT8 bExpLevelDelta;
|
|
INT8 bLifeDelta;
|
|
INT8 bAgilityDelta;
|
|
INT8 bDexterityDelta;
|
|
INT8 bWisdomDelta;
|
|
INT8 bMarksmanshipDelta;
|
|
INT8 bMedicalDelta;
|
|
INT8 bMechanicDelta;
|
|
INT8 bExplosivesDelta;
|
|
INT8 bStrengthDelta;
|
|
INT8 bLeadershipDelta;
|
|
UINT16 usKills;
|
|
UINT16 usAssists;
|
|
UINT16 usShotsFired;
|
|
UINT16 usShotsHit;
|
|
UINT16 usBattlesFought;
|
|
UINT16 usTimesWounded;
|
|
UINT16 usTotalDaysServed;
|
|
|
|
INT16 sLeadershipGain;
|
|
INT16 sStrengthGain;
|
|
|
|
|
|
|
|
// BODY TYPE SUBSITUTIONS
|
|
UINT32 uiBodyTypeSubFlags;
|
|
|
|
INT16 sSalary;
|
|
INT8 bLife;
|
|
INT8 bDexterity; // dexterity (hand coord) value
|
|
INT8 bDisability;
|
|
INT8 bSkillTrait;
|
|
|
|
INT8 bReputationTolerance;
|
|
INT8 bExplosive;
|
|
INT8 bSkillTrait2;
|
|
INT8 bLeadership;
|
|
|
|
INT8 bBuddy[5];
|
|
INT8 bHated[5];
|
|
INT8 bExpLevel; // general experience level
|
|
|
|
INT8 bMarksmanship;
|
|
UINT8 bMinService;
|
|
INT8 bWisdom;
|
|
UINT8 bResigned;
|
|
UINT8 bActive;
|
|
|
|
UINT8 DO_NOT_USE_bInvStatus[OldInventory::NUM_INV_SLOTS];
|
|
UINT8 DO_NOT_USE_bInvNumber[OldInventory::NUM_INV_SLOTS];
|
|
UINT16 usApproachFactor[4];
|
|
|
|
INT8 bMainGunAttractiveness;
|
|
INT8 bAgility; // agility (speed) value
|
|
|
|
BOOLEAN fUseProfileInsertionInfo; // Set to various flags, ( contained in TacticalSave.h )
|
|
INT16 sGridNo; // The Gridno the NPC was in before leaving the sector
|
|
UINT8 ubQuoteActionID;
|
|
INT8 bMechanical;
|
|
|
|
UINT8 ubInvUndroppable;
|
|
UINT8 ubRoomRangeStart[2];
|
|
UINT16 DO_NOT_USE_inv[OldInventory::NUM_INV_SLOTS];
|
|
INT8 bMercTownReputation[ 20 ];
|
|
|
|
UINT16 usStatChangeChances[ 12 ]; // used strictly for balancing, never shown!
|
|
UINT16 usStatChangeSuccesses[ 12 ]; // used strictly for balancing, never shown!
|
|
|
|
UINT8 ubStrategicInsertionCode;
|
|
|
|
UINT8 ubRoomRangeEnd[2];
|
|
|
|
INT8 bPadding[ 4 ];
|
|
|
|
UINT8 ubLastQuoteSaid;
|
|
|
|
INT8 bRace;
|
|
INT8 bNationality;
|
|
INT8 bAppearance;
|
|
INT8 bAppearanceCareLevel;
|
|
INT8 bRefinement;
|
|
INT8 bRefinementCareLevel;
|
|
INT8 bHatedNationality;
|
|
INT8 bHatedNationalityCareLevel;
|
|
INT8 bRacist;
|
|
UINT32 uiWeeklySalary;
|
|
UINT32 uiBiWeeklySalary;
|
|
INT8 bMedicalDeposit;
|
|
INT8 bAttitude;
|
|
INT8 bBaseMorale;
|
|
UINT16 sMedicalDepositAmount;
|
|
|
|
UINT8 bLearnToLike;
|
|
UINT8 ubApproachVal[4];
|
|
UINT8 ubApproachMod[3][4];
|
|
INT8 bTown;
|
|
INT8 bTownAttachment;
|
|
UINT16 usOptionalGearCost;
|
|
|
|
INT8 bMercOpinion[NUMBER_OF_OPINIONS_OLD]; // Flugente: old value has to be kept for compatibility. Do not change, or you'll be in a world of pain
|
|
|
|
INT8 bApproached;
|
|
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.
|
|
INT8 bHatedTime[5];
|
|
INT8 bLearnToLikeTime;
|
|
INT8 bLearnToHateTime;
|
|
INT8 bHatedCount[5];
|
|
INT8 bLearnToLikeCount;
|
|
INT8 bLearnToHateCount;
|
|
UINT8 ubLastDateSpokenTo;
|
|
UINT8 bLastQuoteSaidWasSpecial;
|
|
INT8 bSectorZ;
|
|
UINT16 usStrategicInsertionData;
|
|
INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
|
|
INT8 bRecruitDefaultResponseUsedRecently;
|
|
INT8 bThreatenDefaultResponseUsedRecently;
|
|
INT8 bNPCData; // NPC specific
|
|
INT32 iBalance;
|
|
INT16 sTrueSalary; // for use when the person is working for us for free but has a positive salary value
|
|
UINT8 ubCivilianGroup;
|
|
UINT8 ubNeedForSleep;
|
|
UINT32 uiMoney;
|
|
INT8 bNPCData2; // NPC specific
|
|
|
|
UINT8 ubMiscFlags3;
|
|
|
|
UINT8 ubDaysOfMoraleHangover; // used only when merc leaves team while having poor morale
|
|
UINT8 ubNumTimesDrugUseInLifetime; // The # times a drug has been used in the player's lifetime...
|
|
|
|
// Flags used for the precedent to repeating oneself in Contract negotiations. Used for quote 80 - ~107. Gets reset every day
|
|
UINT32 uiPrecedentQuoteSaid;
|
|
UINT32 uiProfileChecksum;
|
|
INT16 sPreCombatGridNo;
|
|
UINT8 ubTimeTillNextHatedComplaint;
|
|
UINT8 ubSuspiciousDeath;
|
|
|
|
INT32 iMercMercContractLength; //Used for MERC mercs, specifies how many days the merc has gone since last page
|
|
|
|
UINT32 uiTotalCostToDate; // The total amount of money that has been paid to the merc for their salary
|
|
UINT8 ubBuffer[4];
|
|
|
|
//
|
|
// New and OO stuff goes after here. Above this point any changes will goof up reading from files.
|
|
//
|
|
|
|
char endOfPOD; // marker for end of POD (plain old data)
|
|
};
|
|
#define SIZEOF_OLD_MERCPROFILESTRUCT_101_POD offsetof( OLD_MERCPROFILESTRUCT_101, endOfPOD )
|
|
|
|
class MERCPROFILESTRUCT {
|
|
public:
|
|
// Constructor
|
|
MERCPROFILESTRUCT();
|
|
// Copy Constructor
|
|
MERCPROFILESTRUCT(const MERCPROFILESTRUCT&);
|
|
// Conversion operator
|
|
MERCPROFILESTRUCT& operator=(const OLD_MERCPROFILESTRUCT_101& src);
|
|
// Assignment operator
|
|
MERCPROFILESTRUCT& operator=(const MERCPROFILESTRUCT&);
|
|
// Destructor
|
|
~MERCPROFILESTRUCT();
|
|
|
|
void CopyOldInventoryToNew(const OLD_MERCPROFILESTRUCT_101& src);
|
|
// Changed by ADB, rev 1513
|
|
//BOOLEAN Load(HWFILE hFile, bool forceLoadOldVersion);
|
|
BOOLEAN Load(HWFILE hFile, bool forceLoadOldVersion, bool forceLoadOldEncryption, bool wasSavedWithEncryption);
|
|
BOOLEAN Save(HWFILE hFile);
|
|
UINT32 GetChecksum();
|
|
|
|
// Initialize the mercenary profile.
|
|
// Use this instead of the old method of calling memset.
|
|
// Note that the constructor does this automatically.
|
|
void initialize();
|
|
|
|
// Clear out the mercenary profile's invetory
|
|
// Use this instead of the old method of calling memset.
|
|
// Note that the constructor does this automatically.
|
|
void clearInventory();
|
|
|
|
// Note: Place all non-POD items at the end (after endOfPOD)
|
|
// The format of this structure affects what is written into and read from various
|
|
// files (maps, save files, etc.). If you change it then that code will not work
|
|
// properly until it is all fixed and the files updated.
|
|
public:
|
|
CHAR16 zName[ NAME_LENGTH ];
|
|
CHAR16 zNickname[ NICKNAME_LENGTH ];
|
|
UINT32 uiAttnSound;
|
|
UINT32 uiCurseSound;
|
|
UINT32 uiDieSound;
|
|
UINT32 uiGoodSound;
|
|
UINT32 uiGruntSound;
|
|
UINT32 uiGrunt2Sound;
|
|
UINT32 uiOkSound;
|
|
UINT8 ubFaceIndex;
|
|
PaletteRepID PANTS;
|
|
PaletteRepID VEST;
|
|
PaletteRepID SKIN;
|
|
PaletteRepID HAIR;
|
|
INT8 bSex;
|
|
INT8 bArmourAttractiveness;
|
|
UINT8 ubMiscFlags2;
|
|
BOOLEAN fRegresses;
|
|
UINT8 ubMiscFlags;
|
|
UINT8 bSexist;
|
|
UINT8 bLearnToHate;
|
|
|
|
// skills
|
|
INT8 bStealRate;
|
|
INT8 bVocalVolume;
|
|
UINT8 ubQuoteRecord;
|
|
INT8 bDeathRate;
|
|
INT8 bScientific;
|
|
|
|
INT16 sExpLevelGain;
|
|
INT16 sLifeGain;
|
|
INT16 sAgilityGain;
|
|
INT16 sDexterityGain;
|
|
INT16 sWisdomGain;
|
|
INT16 sMarksmanshipGain;
|
|
INT16 sMedicalGain;
|
|
INT16 sMechanicGain;
|
|
INT16 sExplosivesGain;
|
|
|
|
UINT8 ubBodyType;
|
|
INT8 bMedical;
|
|
|
|
UINT16 usEyesX;
|
|
UINT16 usEyesY;
|
|
UINT16 usMouthX;
|
|
UINT16 usMouthY;
|
|
UINT32 uiEyeDelay;
|
|
UINT32 uiMouthDelay;
|
|
UINT32 uiBlinkFrequency;
|
|
UINT32 uiExpressionFrequency;
|
|
UINT16 sSectorX;
|
|
UINT16 sSectorY;
|
|
|
|
UINT32 uiDayBecomesAvailable; //day the merc will be available. used with the bMercStatus
|
|
|
|
INT8 bStrength;
|
|
|
|
INT8 bLifeMax;
|
|
INT8 bExpLevelDelta;
|
|
INT8 bLifeDelta;
|
|
INT8 bAgilityDelta;
|
|
INT8 bDexterityDelta;
|
|
INT8 bWisdomDelta;
|
|
INT8 bMarksmanshipDelta;
|
|
INT8 bMedicalDelta;
|
|
INT8 bMechanicDelta;
|
|
INT8 bExplosivesDelta;
|
|
INT8 bStrengthDelta;
|
|
INT8 bLeadershipDelta;
|
|
/////////////////////////////////////////////////////////////
|
|
// SANDRO - converted to it's own structure
|
|
//UINT16 usKills;
|
|
//UINT16 usAssists;
|
|
//UINT16 usShotsFired;
|
|
//UINT16 usShotsHit;
|
|
//UINT16 usBattlesFought;
|
|
//UINT16 usTimesWounded;
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
UINT16 usTotalDaysServed;
|
|
|
|
INT16 sLeadershipGain;
|
|
INT16 sStrengthGain;
|
|
|
|
|
|
|
|
// BODY TYPE SUBSITUTIONS
|
|
UINT32 uiBodyTypeSubFlags;
|
|
|
|
INT16 sSalary;
|
|
INT8 bLife;
|
|
INT8 bDexterity; // dexterity (hand coord) value
|
|
INT8 bDisability;
|
|
INT8 bSkillTraits[30];
|
|
|
|
INT8 bReputationTolerance;
|
|
INT8 bExplosive;
|
|
//INT8 bSkillTrait2;
|
|
//INT8 bSkillTrait3; // added by SANDRO
|
|
INT8 bLeadership;
|
|
|
|
UINT8 bBuddy[5];
|
|
UINT8 bHated[5];
|
|
INT8 bExpLevel; // general experience level
|
|
|
|
INT8 bMarksmanship;
|
|
UINT8 bMinService;
|
|
INT8 bWisdom;
|
|
UINT8 bResigned;
|
|
UINT8 bActive;
|
|
|
|
UINT16 usApproachFactor[4];
|
|
|
|
INT8 bMainGunAttractiveness;
|
|
INT8 bAgility; // agility (speed) value
|
|
|
|
BOOLEAN fUseProfileInsertionInfo; // Set to various flags, ( contained in TacticalSave.h )
|
|
// INT16 sGridNo; // The Gridno the NPC was in before leaving the sector
|
|
INT16 _old_sGridNo; // WANNE - BMP: DONE! (Structure) // The Gridno the NPC was in before leaving the sector
|
|
UINT8 ubQuoteActionID;
|
|
INT8 bMechanical;
|
|
|
|
UINT8 ubInvUndroppable;
|
|
//DBrot: More Rooms
|
|
//UINT8 ubRoomRangeStart[2];
|
|
UINT16 usRoomRangeStart[2];
|
|
INT8 bMercTownReputation[ 20 ];
|
|
|
|
UINT16 usStatChangeChances[ 12 ]; // used strictly for balancing, never shown!
|
|
UINT16 usStatChangeSuccesses[ 12 ]; // used strictly for balancing, never shown!
|
|
|
|
UINT8 ubStrategicInsertionCode;
|
|
|
|
//UINT8 ubRoomRangeEnd[2];
|
|
UINT16 usRoomRangeEnd[2];
|
|
|
|
UINT8 ubLastQuoteSaid;
|
|
|
|
INT8 bRace;
|
|
INT8 bNationality;
|
|
INT8 bAppearance;
|
|
INT8 bAppearanceCareLevel;
|
|
INT8 bRefinement;
|
|
INT8 bRefinementCareLevel;
|
|
INT8 bHatedNationality;
|
|
INT8 bHatedNationalityCareLevel;
|
|
INT8 bRacist;
|
|
UINT32 uiWeeklySalary;
|
|
UINT32 uiBiWeeklySalary;
|
|
INT8 bMedicalDeposit;
|
|
INT8 bAttitude;
|
|
INT8 bCharacterTrait; // added by SANDRO
|
|
INT8 bBaseMorale;
|
|
UINT16 sMedicalDepositAmount;
|
|
|
|
UINT8 bLearnToLike;
|
|
UINT8 ubApproachVal[4];
|
|
UINT8 ubApproachMod[3][4];
|
|
INT8 bTown;
|
|
INT8 bTownAttachment;
|
|
UINT16 usOptionalGearCost;
|
|
INT8 bMercOpinion[NUMBER_OF_OPINIONS];
|
|
INT8 bApproached;
|
|
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.
|
|
INT8 bHatedTime[5];
|
|
INT8 bLearnToLikeTime;
|
|
INT8 bLearnToHateTime;
|
|
INT8 bHatedCount[5];
|
|
INT8 bLearnToLikeCount;
|
|
INT8 bLearnToHateCount;
|
|
UINT8 ubLastDateSpokenTo;
|
|
UINT8 bLastQuoteSaidWasSpecial;
|
|
INT8 bSectorZ;
|
|
UINT32 usStrategicInsertionData;
|
|
INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
|
|
INT8 bRecruitDefaultResponseUsedRecently;
|
|
INT8 bThreatenDefaultResponseUsedRecently;
|
|
INT8 bNPCData; // NPC specific
|
|
INT32 iBalance;
|
|
INT16 sTrueSalary; // for use when the person is working for us for free but has a positive salary value
|
|
UINT8 ubCivilianGroup;
|
|
UINT8 ubNeedForSleep;
|
|
UINT32 uiMoney;
|
|
INT8 bNPCData2; // NPC specific
|
|
|
|
UINT8 ubMiscFlags3;
|
|
|
|
UINT8 ubDaysOfMoraleHangover; // used only when merc leaves team while having poor morale
|
|
UINT8 ubNumTimesDrugUseInLifetime; // The # times a drug has been used in the player's lifetime...
|
|
|
|
// Flags used for the precedent to repeating oneself in Contract negotiations. Used for quote 80 - ~107. Gets reset every day
|
|
UINT32 uiPrecedentQuoteSaid;
|
|
UINT32 uiProfileChecksum;
|
|
// INT16 sPreCombatGridNo;
|
|
INT16 _old_sPreCombatGridNo; // WANNE - BMP: DONE! (Structure)
|
|
UINT8 ubTimeTillNextHatedComplaint;
|
|
UINT8 ubSuspiciousDeath;
|
|
|
|
INT32 iMercMercContractLength; //Used for MERC mercs, specifies how many days the merc has gone since last page
|
|
|
|
UINT32 uiTotalCostToDate; // The total amount of money that has been paid to the merc for their salary
|
|
|
|
//SB: extended fields
|
|
INT32 sGridNo; // WANNE - BMP: DONE! (Structure)
|
|
INT32 sPreCombatGridNo; // WANNE - BMO: DONE! (Structure)
|
|
//
|
|
// New and OO stuff goes after here. Above this point any changes will goof up reading from files.
|
|
//
|
|
|
|
char endOfPOD; // marker for end of POD (plain old data)
|
|
|
|
std::vector<int> inv;
|
|
std::vector<int> bInvStatus;
|
|
std::vector<int> bInvNumber;
|
|
|
|
// SANDRO - merc records
|
|
STRUCT_Records records;
|
|
|
|
// Flugente: background
|
|
UINT16 usBackground;
|
|
|
|
// anv: for snitches, remember if he was exposed and by how many people (could be used for covert purposes too)
|
|
//UINT8 ubExposedInSector[MAP_WORLD_X * MAP_WORLD_Y];
|
|
|
|
// anv: simplified ubExposedInSector, hours until snitch can go undercover after exposition
|
|
UINT8 ubSnitchExposedCooldown;
|
|
|
|
// Flugente: flagmasks for dynamic opinions on each and every other person. Yes, this is significant in size
|
|
UINT32 usDynamicOpinionFlagmask[NUM_PROFILES][OPINION_FLAGMASKS_NUMBER];
|
|
|
|
INT8 sDynamicOpinionLongTerm[NUM_PROFILES];
|
|
|
|
// Flugente: voice set used
|
|
UINT32 usVoiceIndex;
|
|
|
|
// Flugente: type of profile
|
|
UINT32 Type;
|
|
|
|
// rftr: growth modifiers - ignored if fRegresses is TRUE
|
|
INT16 bGrowthModifierLife;
|
|
INT16 bGrowthModifierStrength;
|
|
INT16 bGrowthModifierAgility;
|
|
INT16 bGrowthModifierDexterity;
|
|
INT16 bGrowthModifierWisdom;
|
|
INT16 bGrowthModifierMarksmanship;
|
|
INT16 bGrowthModifierExplosive;
|
|
INT16 bGrowthModifierLeadership;
|
|
INT16 bGrowthModifierMedical;
|
|
INT16 bGrowthModifierMechanical;
|
|
INT16 bGrowthModifierExpLevel;
|
|
}; // MERCPROFILESTRUCT;
|
|
|
|
// WANNE - BMP: DONE!
|
|
class _OLD_MERCPROFILESTRUCT {
|
|
public:
|
|
CHAR16 zName[ NAME_LENGTH ];
|
|
CHAR16 zNickname[ NICKNAME_LENGTH ];
|
|
UINT32 uiAttnSound;
|
|
UINT32 uiCurseSound;
|
|
UINT32 uiDieSound;
|
|
UINT32 uiGoodSound;
|
|
UINT32 uiGruntSound;
|
|
UINT32 uiGrunt2Sound;
|
|
UINT32 uiOkSound;
|
|
UINT8 ubFaceIndex;
|
|
PaletteRepID PANTS;
|
|
PaletteRepID VEST;
|
|
PaletteRepID SKIN;
|
|
PaletteRepID HAIR;
|
|
INT8 bSex;
|
|
INT8 bArmourAttractiveness;
|
|
UINT8 ubMiscFlags2;
|
|
INT8 bEvolution;
|
|
UINT8 ubMiscFlags;
|
|
UINT8 bSexist;
|
|
INT8 bLearnToHate;
|
|
|
|
// skills
|
|
INT8 bStealRate;
|
|
INT8 bVocalVolume;
|
|
UINT8 ubQuoteRecord;
|
|
INT8 bDeathRate;
|
|
INT8 bScientific;
|
|
|
|
INT16 sExpLevelGain;
|
|
INT16 sLifeGain;
|
|
INT16 sAgilityGain;
|
|
INT16 sDexterityGain;
|
|
INT16 sWisdomGain;
|
|
INT16 sMarksmanshipGain;
|
|
INT16 sMedicalGain;
|
|
INT16 sMechanicGain;
|
|
INT16 sExplosivesGain;
|
|
|
|
UINT8 ubBodyType;
|
|
INT8 bMedical;
|
|
|
|
UINT16 usEyesX;
|
|
UINT16 usEyesY;
|
|
UINT16 usMouthX;
|
|
UINT16 usMouthY;
|
|
UINT32 uiEyeDelay;
|
|
UINT32 uiMouthDelay;
|
|
UINT32 uiBlinkFrequency;
|
|
UINT32 uiExpressionFrequency;
|
|
UINT16 sSectorX;
|
|
UINT16 sSectorY;
|
|
|
|
UINT32 uiDayBecomesAvailable; //day the merc will be available. used with the bMercStatus
|
|
|
|
INT8 bStrength;
|
|
|
|
INT8 bLifeMax;
|
|
INT8 bExpLevelDelta;
|
|
INT8 bLifeDelta;
|
|
INT8 bAgilityDelta;
|
|
INT8 bDexterityDelta;
|
|
INT8 bWisdomDelta;
|
|
INT8 bMarksmanshipDelta;
|
|
INT8 bMedicalDelta;
|
|
INT8 bMechanicDelta;
|
|
INT8 bExplosivesDelta;
|
|
INT8 bStrengthDelta;
|
|
INT8 bLeadershipDelta;
|
|
UINT16 usKills;
|
|
UINT16 usAssists;
|
|
UINT16 usShotsFired;
|
|
UINT16 usShotsHit;
|
|
UINT16 usBattlesFought;
|
|
UINT16 usTimesWounded;
|
|
UINT16 usTotalDaysServed;
|
|
|
|
INT16 sLeadershipGain;
|
|
INT16 sStrengthGain;
|
|
|
|
|
|
|
|
// BODY TYPE SUBSITUTIONS
|
|
UINT32 uiBodyTypeSubFlags;
|
|
|
|
INT16 sSalary;
|
|
INT8 bLife;
|
|
INT8 bDexterity; // dexterity (hand coord) value
|
|
INT8 bDisability;
|
|
INT8 bSkillTrait;
|
|
|
|
INT8 bReputationTolerance;
|
|
INT8 bExplosive;
|
|
INT8 bSkillTrait2;
|
|
INT8 bLeadership;
|
|
|
|
INT8 bBuddy[5];
|
|
INT8 bHated[5];
|
|
INT8 bExpLevel; // general experience level
|
|
|
|
INT8 bMarksmanship;
|
|
UINT8 bMinService;
|
|
INT8 bWisdom;
|
|
UINT8 bResigned;
|
|
UINT8 bActive;
|
|
|
|
UINT16 usApproachFactor[4];
|
|
|
|
INT8 bMainGunAttractiveness;
|
|
INT8 bAgility; // agility (speed) value
|
|
|
|
BOOLEAN fUseProfileInsertionInfo; // Set to various flags, ( contained in TacticalSave.h )
|
|
INT16 sGridNo; // The Gridno the NPC was in before leaving the sector
|
|
UINT8 ubQuoteActionID;
|
|
INT8 bMechanical;
|
|
|
|
UINT8 ubInvUndroppable;
|
|
UINT8 ubRoomRangeStart[2];
|
|
INT8 bMercTownReputation[ 20 ];
|
|
|
|
UINT16 usStatChangeChances[ 12 ]; // used strictly for balancing, never shown!
|
|
UINT16 usStatChangeSuccesses[ 12 ]; // used strictly for balancing, never shown!
|
|
|
|
UINT8 ubStrategicInsertionCode;
|
|
|
|
UINT8 ubRoomRangeEnd[2];
|
|
|
|
UINT8 ubLastQuoteSaid;
|
|
|
|
INT8 bRace;
|
|
INT8 bNationality;
|
|
INT8 bAppearance;
|
|
INT8 bAppearanceCareLevel;
|
|
INT8 bRefinement;
|
|
INT8 bRefinementCareLevel;
|
|
INT8 bHatedNationality;
|
|
INT8 bHatedNationalityCareLevel;
|
|
INT8 bRacist;
|
|
UINT32 uiWeeklySalary;
|
|
UINT32 uiBiWeeklySalary;
|
|
INT8 bMedicalDeposit;
|
|
INT8 bAttitude;
|
|
INT8 bBaseMorale;
|
|
UINT16 sMedicalDepositAmount;
|
|
|
|
INT8 bLearnToLike;
|
|
UINT8 ubApproachVal[4];
|
|
UINT8 ubApproachMod[3][4];
|
|
INT8 bTown;
|
|
INT8 bTownAttachment;
|
|
UINT16 usOptionalGearCost;
|
|
|
|
INT8 bMercOpinion[NUMBER_OF_OPINIONS_OLD]; // Flugente: old value has to be kept for compatibility. Do not change, or you'll be in a world of pain
|
|
|
|
INT8 bApproached;
|
|
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.
|
|
INT8 bHatedTime[5];
|
|
INT8 bLearnToLikeTime;
|
|
INT8 bLearnToHateTime;
|
|
INT8 bHatedCount[5];
|
|
INT8 bLearnToLikeCount;
|
|
INT8 bLearnToHateCount;
|
|
UINT8 ubLastDateSpokenTo;
|
|
UINT8 bLastQuoteSaidWasSpecial;
|
|
INT8 bSectorZ;
|
|
UINT16 usStrategicInsertionData;
|
|
INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
|
|
INT8 bRecruitDefaultResponseUsedRecently;
|
|
INT8 bThreatenDefaultResponseUsedRecently;
|
|
INT8 bNPCData; // NPC specific
|
|
INT32 iBalance;
|
|
INT16 sTrueSalary; // for use when the person is working for us for free but has a positive salary value
|
|
UINT8 ubCivilianGroup;
|
|
UINT8 ubNeedForSleep;
|
|
UINT32 uiMoney;
|
|
INT8 bNPCData2; // NPC specific
|
|
|
|
UINT8 ubMiscFlags3;
|
|
|
|
UINT8 ubDaysOfMoraleHangover; // used only when merc leaves team while having poor morale
|
|
UINT8 ubNumTimesDrugUseInLifetime; // The # times a drug has been used in the player's lifetime...
|
|
|
|
// Flags used for the precedent to repeating oneself in Contract negotiations. Used for quote 80 - ~107. Gets reset every day
|
|
UINT32 uiPrecedentQuoteSaid;
|
|
UINT32 uiProfileChecksum;
|
|
INT16 sPreCombatGridNo;
|
|
UINT8 ubTimeTillNextHatedComplaint;
|
|
UINT8 ubSuspiciousDeath;
|
|
|
|
INT32 iMercMercContractLength; //Used for MERC mercs, specifies how many days the merc has gone since last page
|
|
|
|
UINT32 uiTotalCostToDate; // The total amount of money that has been paid to the merc for their salary
|
|
|
|
//
|
|
// New and OO stuff goes after here. Above this point any changes will goof up reading from files.
|
|
//
|
|
|
|
char endOfPOD; // marker for end of POD (plain old data)
|
|
|
|
std::vector<int> inv;
|
|
std::vector<int> bInvStatus;
|
|
std::vector<int> bInvNumber;
|
|
}; // _OLD_MERCPROFILESTRUCT;
|
|
|
|
#define SIZEOF_MERCPROFILESTRUCT_POD offsetof( MERCPROFILESTRUCT, endOfPOD )
|
|
#define _OLD_SIZEOF_MERCPROFILESTRUCT_POD offsetof( _OLD_MERCPROFILESTRUCT, endOfPOD )
|
|
|
|
#define TIME_BETWEEN_HATED_COMPLAINTS 24
|
|
|
|
#define SUSPICIOUS_DEATH 1
|
|
#define VERY_SUSPICIOUS_DEATH 2
|
|
|
|
|
|
#ifdef WFconvertUB
|
|
|
|
typedef struct
|
|
{
|
|
UINT16 zName[ NAME_LENGTH ];
|
|
UINT16 zNickname[ NICKNAME_LENGTH ];
|
|
UINT32 uiAttnSound;
|
|
UINT32 uiCurseSound;
|
|
UINT32 uiDieSound;
|
|
UINT32 uiGoodSound;
|
|
UINT32 uiGruntSound;
|
|
UINT32 uiGrunt2Sound;
|
|
UINT32 uiOkSound;
|
|
UINT8 ubFaceIndex;
|
|
PaletteRepID PANTS;
|
|
PaletteRepID VEST;
|
|
PaletteRepID SKIN;
|
|
PaletteRepID HAIR;
|
|
INT8 bSex;
|
|
INT8 bArmourAttractiveness;
|
|
UINT8 ubMiscFlags2;
|
|
INT8 bEvolution;
|
|
UINT8 ubMiscFlags;
|
|
UINT8 bSexist;
|
|
INT8 bLearnToHate;
|
|
|
|
// skills
|
|
INT8 bStealRate;
|
|
INT8 bVocalVolume;
|
|
UINT8 ubQuoteRecord;
|
|
INT8 bDeathRate;
|
|
INT8 bScientific;
|
|
|
|
INT16 sExpLevelGain;
|
|
INT16 sLifeGain;
|
|
INT16 sAgilityGain;
|
|
INT16 sDexterityGain;
|
|
INT16 sWisdomGain;
|
|
INT16 sMarksmanshipGain;
|
|
INT16 sMedicalGain;
|
|
INT16 sMechanicGain;
|
|
INT16 sExplosivesGain;
|
|
|
|
UINT8 ubBodyType;
|
|
INT8 bMedical;
|
|
|
|
UINT16 usEyesX;
|
|
UINT16 usEyesY;
|
|
UINT16 usMouthX;
|
|
UINT16 usMouthY;
|
|
UINT32 uiEyeDelay;
|
|
UINT32 uiMouthDelay;
|
|
UINT32 uiBlinkFrequency;
|
|
UINT32 uiExpressionFrequency;
|
|
UINT16 sSectorX;
|
|
UINT16 sSectorY;
|
|
|
|
UINT32 uiDayBecomesAvailable; //day the merc will be available. used with the bMercStatus
|
|
|
|
INT8 bStrength;
|
|
|
|
INT8 bLifeMax;
|
|
INT8 bExpLevelDelta;
|
|
INT8 bLifeDelta;
|
|
INT8 bAgilityDelta;
|
|
INT8 bDexterityDelta;
|
|
INT8 bWisdomDelta;
|
|
INT8 bMarksmanshipDelta;
|
|
INT8 bMedicalDelta;
|
|
INT8 bMechanicDelta;
|
|
INT8 bExplosivesDelta;
|
|
INT8 bStrengthDelta;
|
|
INT8 bLeadershipDelta;
|
|
UINT16 usKills;
|
|
UINT16 usAssists;
|
|
UINT16 usShotsFired;
|
|
UINT16 usShotsHit;
|
|
UINT16 usBattlesFought;
|
|
UINT16 usTimesWounded;
|
|
UINT16 usTotalDaysServed;
|
|
|
|
INT16 sLeadershipGain;
|
|
INT16 sStrengthGain;
|
|
|
|
|
|
|
|
// BODY TYPE SUBSITUTIONS
|
|
UINT32 uiBodyTypeSubFlags;
|
|
|
|
INT16 sSalary;
|
|
INT8 bLife;
|
|
INT8 bDexterity; // dexterity (hand coord) value
|
|
INT8 bPersonalityTrait;
|
|
INT8 bSkillTrait;
|
|
|
|
INT8 bReputationTolerance;
|
|
INT8 bExplosive;
|
|
INT8 bSkillTrait2;
|
|
INT8 bLeadership;
|
|
|
|
INT8 bBuddy[5];
|
|
INT8 bHated[5];
|
|
INT8 bExpLevel; // general experience level
|
|
|
|
INT8 bMarksmanship;
|
|
UINT8 bMinService;
|
|
INT8 bWisdom;
|
|
UINT8 bResigned;
|
|
UINT8 bActive;
|
|
|
|
UINT8 bInvStatus[19];
|
|
UINT8 bInvNumber[19];
|
|
UINT16 usApproachFactor[4];
|
|
|
|
INT8 bMainGunAttractiveness;
|
|
INT8 bAgility; // agility (speed) value
|
|
|
|
BOOLEAN fUseProfileInsertionInfo; // Set to various flags, ( contained in TacticalSave.h )
|
|
INT16 sGridNo; // The Gridno the NPC was in before leaving the sector
|
|
UINT8 ubQuoteActionID;
|
|
INT8 bMechanical;
|
|
|
|
UINT8 ubInvUndroppable;
|
|
UINT8 ubRoomRangeStart[2];
|
|
UINT16 inv[19];
|
|
INT8 bMercTownReputation[ 20 ];
|
|
|
|
UINT16 usStatChangeChances[ 12 ]; // used strictly for balancing, never shown!
|
|
UINT16 usStatChangeSuccesses[ 12 ]; // used strictly for balancing, never shown!
|
|
|
|
UINT8 ubStrategicInsertionCode;
|
|
|
|
UINT8 ubRoomRangeEnd[2];
|
|
|
|
INT8 bPadding[ 4 ];
|
|
|
|
UINT8 ubLastQuoteSaid;
|
|
|
|
INT8 bRace;
|
|
INT8 bNationality;
|
|
INT8 bAppearance;
|
|
INT8 bAppearanceCareLevel;
|
|
INT8 bRefinement;
|
|
INT8 bRefinementCareLevel;
|
|
INT8 bHatedNationality;
|
|
INT8 bHatedNationalityCareLevel;
|
|
INT8 bRacist;
|
|
UINT32 uiWeeklySalary;
|
|
UINT32 uiBiWeeklySalary;
|
|
INT8 bMedicalDeposit;
|
|
INT8 bAttitude;
|
|
INT8 bBaseMorale;
|
|
UINT16 sMedicalDepositAmount;
|
|
|
|
INT8 bLearnToLike;
|
|
UINT8 ubApproachVal[4];
|
|
UINT8 ubApproachMod[3][4];
|
|
INT8 bTown;
|
|
INT8 bTownAttachment;
|
|
UINT16 usOptionalGearCost;
|
|
INT8 bMercOpinion[NUMBER_OF_OPINIONS];
|
|
INT8 bApproached;
|
|
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.
|
|
INT8 bHatedTime[5];
|
|
INT8 bLearnToLikeTime;
|
|
INT8 bLearnToHateTime;
|
|
INT8 bHatedCount[5];
|
|
INT8 bLearnToLikeCount;
|
|
INT8 bLearnToHateCount;
|
|
UINT8 ubLastDateSpokenTo;
|
|
UINT8 bLastQuoteSaidWasSpecial;
|
|
INT8 bSectorZ;
|
|
UINT16 usStrategicInsertionData;
|
|
INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
|
|
INT8 bRecruitDefaultResponseUsedRecently;
|
|
INT8 bThreatenDefaultResponseUsedRecently;
|
|
INT8 bNPCData; // NPC specific
|
|
INT32 iBalance;
|
|
INT16 sTrueSalary; // for use when the person is working for us for free but has a positive salary value
|
|
UINT8 ubCivilianGroup;
|
|
UINT8 ubNeedForSleep;
|
|
UINT32 uiMoney;
|
|
INT8 bNPCData2; // NPC specific
|
|
|
|
UINT8 ubMiscFlags3;
|
|
|
|
UINT8 ubDaysOfMoraleHangover; // used only when merc leaves team while having poor morale
|
|
UINT8 ubNumTimesDrugUseInLifetime; // The # times a drug has been used in the player's lifetime...
|
|
|
|
// Flags used for the precedent to repeating oneself in Contract negotiations. Used for quote 80 - ~107. Gets reset every day
|
|
UINT32 uiPrecedentQuoteSaid;
|
|
UINT32 uiProfileChecksum;
|
|
INT16 sPreCombatGridNo;
|
|
UINT8 ubTimeTillNextHatedComplaint;
|
|
UINT8 ubSuspiciousDeath;
|
|
|
|
INT32 iMercMercContractLength; //Used for MERC mercs, specifies how many days the merc has gone since last page
|
|
|
|
UINT32 uiTotalCostToDate; // The total amount of money that has been paid to the merc for their salary
|
|
|
|
UINT16 usTotalKills; // total kills the player has had ( only used if the player imported the mercs from ja2 )
|
|
UINT16 usTotalAssists; // total assists the player has had ( only used if the player imported the mercs from ja2 )
|
|
} MERCPROFILESTRUCT_OLD_WF;
|
|
|
|
#endif
|
|
|
|
#endif
|