mirror of
https://github.com/1dot13/source.git
synced 2026-08-19 14:20:30 +02:00
Development Trunk: https://ja2svn.dyndns.org/source/ja2/branches/Wanne/JA2%201.13%20MP A detailed list of all the features (changes) is visible in the history log of the development trunk: INFO: The source code for the official 2011 release (4870) has been branched here: https://ja2svn.dyndns.org/source/ja2/branches/JA2_rev.4870_2011 This commit contains the following features: *** Externalized Vehicles *** o Now with this feature we can add/remove vehicles o New XML File: TableData\Vehicles.xml o Added a new function parameter to lua file Scripts\Overhead lua to set up the helicopter in method: SetUpHelicopterForPlayer() o Added example mini (Docs\Externalized Vehicles Example.zip) mod which adds 2 additional vehicles (hummer and ice-cream truck to sector A9) *** Up to 255 save slots *** - There is a "Next" and "Prev" button where you can scroll through the save slots - It is now possible to load the automatic save (SAVE_EVERY_N_HOURS) from the load screen. This is the first slot after the quickload slot - Added the 2 alternate players end turn saves (which can be enabled/disabled in option screen) to the save/load game form *** New Feature: Externalized emails from Emails.edt to XML*** o This feature can be enabled/disabled in the Source: --> See email.cpp: If "ReadXMLEmail" == FALSE, then normal way (read from Email.edt) otherwise read from XML files o 2 new XML files: TableData\Email\EmailMercAvailable.xml and EmailMercLevelUp.xml o Renamed SenderNamesList.xml to EmailSenderNamesList.xml and moved from TableData folder to TableData\Email folder o Names for mercenaries are get from the file MercProfiles.xml and different names get from the file EmailSenderNamesList.xml *** Externalized Hidden Towns (Tixa, Orta) *** o Now it is possible to add new hidden towns (locations) o See file: TableData/Map/Cities.xml o New variable in TableData/Map/Cities.xml - hiddenTown: 0 = show on strategy map, 1 = Hide on strategy map - townIcon: 1 = on, 0 = off (This is the icon you see on the strategy map) - szIconFile: The path to the sti icon file (eg: interface\prison.sti, interface\my_icon.sti) - iconPosition: The x,y position of the icon on the strategy map *** Encyclopedia and Briefing Room, reachable from the laptop *** o 2 new ja2_options.ini properties: BRIEFING_ROOM, ENCYCLOPEDIA o demonstration video: http://www.youtube.com/watch?v=7CIXdXWLrAo o Added Example usage of the Briefing Room - Extract it in your JA2 1.13 folder and use the latest development executable - The briefing room can be reached from the laptop. Enter SN5631 for the code and then click the "Exit" button - See "Info_BriefingRoom.txt" and "BriefingRoom_Mission1.png" *** Improved interrupt system (IIS) *** o This system changes the way interrupts work. See: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=290787#Post290787 o Option system (see ja2_options.ini: IMPROVED_INTERRUPT_SYSTEM) o A few more settings for the interrupt system in ja2_options.ini o INFO: Multiplayer games always use the "old" interrupt system, not matter what the user selects in the ja2_options.ini *** Walking and sidestepping with weapon raised *** o Enable/disable the walking/sidestepping with raised weapon in ja2_options.ini: ALLOW_WALKING_WITH_WEAPON_RAISED o You can set an AP/BP modifier when walking/sidestepping with weapon raised in APBPConstants.ini: AP_MODIFIER_WEAPON_READY o The following feature apply when you walk/sidestep with weapon raised: -> limited angle of view, but you can see more farther when the weapon has a scope -> better change for interrupts if you see an enemy -> less APs and BPs when shooting, because the weapon is already raised -> It should cost more APs when walking. Maybe you can export the additional AP and BP modifier to the APBPConstants.ini *** Increase squad size to 8 (800x600) and 8 and 10 (1024x768) *** o Squad sizes (dependend on the screen resolution) can be selected in the start new game screen o In a multiplayer game, the squad size will always be 6, because it does not work with more soldiers/squad *** Added UB-1.13 source code *** o Merged the UB-1.13 source code (Revision: 4721) from svn: http://subversion.assembla.com/svn/ub-source113 o If you want to build UB-EXE or UB-MapEditor, just enable the 2 defines (JA2UB and JA2UBMAPS) in "builddefines.h" o The UB-Verion reads from "ja2_UB.ini" instead of "ja2.ini" o There are 2 new XML files - Layout\LayoutMainMenu.xml - MapAction\ActionItems.xml o There are 2 new LUA-Script files - Scripts\ExplosionControl.lua - Scripts\InterfaceDialogue.lua *** Hide enemy health text / enemy hit count *** o ja2_options.ini: HIDE_ENEMY_HEALTH_TEXT, HIDE_ENEMY_HIT_COUNT o both new settings only have effect in a singleplayer game o see: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=128840&page=1 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4885 3b4a5df2-a311-0410-b5c6-a8a6f20db521
1243 lines
33 KiB
C++
1243 lines
33 KiB
C++
#ifndef __SOLDER_PROFILE_TYPE_H
|
|
#define __SOLDER_PROFILE_TYPE_H
|
|
|
|
#include "overhead types.h"
|
|
#include "Soldier Control.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
|
|
|
|
#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.
|
|
//
|
|
namespace DontUseMeDirectly {
|
|
const static int MaxIDToCheckForMorale = 75;
|
|
}
|
|
|
|
inline bool OKToCheckOpinion(int profileNumber) {
|
|
return (profileNumber < DontUseMeDirectly::MaxIDToCheckForMorale);
|
|
}
|
|
|
|
// 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
|
|
NUM_SKILLTRAITS_NT
|
|
} SkillTraitNew;
|
|
|
|
#define NUM_MAJOR_TRAITS 9
|
|
#define NUM_MINOR_TRAITS 10
|
|
|
|
// 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,
|
|
NUM_CHAR_TRAITS
|
|
} CharacterTraits;
|
|
|
|
// SANDRO - appearances
|
|
typedef enum
|
|
{
|
|
APPEARANCE_AVARAGE = 0,
|
|
APPEARANCE_UGLY,
|
|
APPEARANCE_HOMELY,
|
|
APPEARANCE_ATTRACTIVE,
|
|
APPEARANCE_BABE,
|
|
NUM_APPEARANCES
|
|
} Appearances;
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
typedef enum
|
|
{
|
|
NO_DISABILITY = 0,
|
|
HEAT_INTOLERANT,
|
|
NERVOUS,
|
|
CLAUSTROPHOBIC,
|
|
NONSWIMMER,
|
|
FEAR_OF_INSECTS,
|
|
FORGETFUL,
|
|
PSYCHO,
|
|
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
|
|
} SexistLevels;
|
|
|
|
|
|
|
|
// training defines for evolution, no stat increase, stat decrease( de-evolve )
|
|
typedef enum{
|
|
NORMAL_EVOLUTION =0,
|
|
NO_EVOLUTION,
|
|
DEVOLVE,
|
|
} CharacterEvolution;
|
|
|
|
#define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) )
|
|
#define HATED_MERC( prof, hat ) ((prof)->bHated[0] == (hat) || (prof)->bHated[1] == (hat) || (prof)->bHated[2] == (hat) )
|
|
|
|
#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 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 zFiller1;
|
|
UINT16 zFiller2;
|
|
UINT16 zFiller3;
|
|
UINT16 zFiller4;
|
|
UINT16 zFiller5;
|
|
UINT16 zFiller6;
|
|
UINT16 zFiller7;
|
|
UINT16 zFiller8;
|
|
UINT8 zFiller9;
|
|
|
|
}; // RECORDS
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CHRISL: Class to handle profile equipment from XML_MercStartingGear
|
|
class MERCPROFILEGEAR {
|
|
public:
|
|
// Constructor
|
|
MERCPROFILEGEAR();
|
|
// Assignment operator
|
|
MERCPROFILEGEAR& operator=(const MERCPROFILEGEAR&);
|
|
// 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;
|
|
CHAR8 mName[80];
|
|
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;
|
|
|
|
// See above note near the definition of MaxIDToCheckForMorale
|
|
INT8 bMercOpinion[DontUseMeDirectly::MaxIDToCheckForMorale];
|
|
|
|
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;
|
|
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;
|
|
/////////////////////////////////////////////////////////////
|
|
// 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;
|
|
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 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[75];
|
|
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;
|
|
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;
|
|
|
|
}; // 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;
|
|
|
|
// See above note near the definition of MaxIDToCheckForMorale
|
|
INT8 bMercOpinion[DontUseMeDirectly::MaxIDToCheckForMorale];
|
|
|
|
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[75];
|
|
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
|