mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +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
417 lines
7.8 KiB
C
417 lines
7.8 KiB
C
#ifndef __SOLDER_PROFILE_H
|
|
#define __SOLDER_PROFILE_H
|
|
|
|
#include "Soldier Control.h"
|
|
#include "Soldier Profile Type.h"
|
|
#include "Merc Hiring.h"
|
|
|
|
typedef struct
|
|
{
|
|
UINT16 uiIndex;
|
|
BOOLEAN Enabled;
|
|
INT8 BaseAttribute;
|
|
INT8 ExpLevel;
|
|
BOOLEAN RandomLife;
|
|
BOOLEAN RandomAgility;
|
|
BOOLEAN RandomLeadership;
|
|
BOOLEAN RandomDexterity;
|
|
BOOLEAN RandomWisdom;
|
|
BOOLEAN RandomMarksmanship;
|
|
BOOLEAN RandomMedical;
|
|
BOOLEAN RandomMechanical;
|
|
BOOLEAN RandomExplosive;
|
|
BOOLEAN RandomScientific;
|
|
BOOLEAN RandomStrength;
|
|
|
|
} RANDOM_STATS_VALUES;
|
|
|
|
extern RANDOM_STATS_VALUES gRandomStatsValue[NUM_PROFILES];
|
|
extern void RandomStats ();
|
|
|
|
extern INT8 gbSkillTraitBonus[NUM_SKILLTRAITS_OT];
|
|
extern UINT8 gubTerrorists[];
|
|
extern INT16 gsTerroristSector[][5][2];
|
|
extern BOOLEAN gfPotentialTeamChangeDuringDeath;
|
|
|
|
extern MERCPROFILESTRUCT gMercProfiles[ NUM_PROFILES ];
|
|
|
|
extern MERCPROFILEGEAR gMercProfileGear[ NUM_PROFILES ][ NUM_MERCSTARTINGGEAR_KITS ];
|
|
|
|
|
|
#define AIM_AND_MERC_MERCS 51 // A.I.M. is 0-39, M.E.R.C.s are 40-50
|
|
|
|
//use this to sort out the above define
|
|
BOOLEAN IsProfileIdAnAimOrMERCMerc( UINT8 ubProfileID );
|
|
//enums for the mercs
|
|
|
|
//new profiles by Jazz-------------------------------
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} AIM_PROFIL;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} MERC_PROFIL;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} NPC_PROFIL;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} RPC_PROFIL;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} VEHICLE_PROFIL;
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ProfilId;
|
|
} IMP_PROFIL;
|
|
|
|
extern AIM_PROFIL gProfilesAIM[ NUM_PROFILES ];
|
|
extern MERC_PROFIL gProfilesMERC[ NUM_PROFILES ];
|
|
extern NPC_PROFIL gProfilesNPC[ NUM_PROFILES ];
|
|
extern RPC_PROFIL gProfilesRPC[ NUM_PROFILES ];
|
|
extern VEHICLE_PROFIL gProfilesVehicle[ NUM_PROFILES ];
|
|
extern IMP_PROFIL gProfilesIMP[NUM_PROFILES];
|
|
|
|
extern BOOLEAN SaveNewSystemMercsToSaveGameFile( HWFILE hFile );
|
|
extern BOOLEAN LoadNewSystemMercsToSaveGameFile( HWFILE hFile );
|
|
//---------------------------------------------------
|
|
|
|
enum NPCIDs
|
|
{
|
|
BIFF = 40,
|
|
HAYWIRE,
|
|
GASKET,
|
|
RAZOR,
|
|
FLO,
|
|
GUMPY,
|
|
LARRY_NORMAL,
|
|
LARRY_DRUNK,
|
|
COUGAR,
|
|
NUMB,
|
|
BUBBA,
|
|
#ifdef JA2UB
|
|
MIGUEL = 58, //Ja25: Was 57
|
|
#else
|
|
MIGUEL = 57,
|
|
#endif
|
|
CARLOS,
|
|
IRA,
|
|
DIMITRI,
|
|
|
|
DEVIN, // 61
|
|
ROBOT,
|
|
HAMOUS,
|
|
SLAY,
|
|
#ifdef JA2UB
|
|
// RPC65,
|
|
#else
|
|
RPC65,
|
|
#endif
|
|
DYNAMO,
|
|
SHANK,
|
|
IGGY,
|
|
VINCE,
|
|
CONRAD,
|
|
|
|
RPC71, // 71
|
|
MADDOG,
|
|
DARREL,
|
|
PERKO,
|
|
QUEEN,
|
|
AUNTIE,
|
|
ENRICO, //GABBY, //ENRICO,
|
|
CARMEN,
|
|
JOE,
|
|
STEVE,
|
|
|
|
RAT, // 81
|
|
ANNIE,
|
|
CHRIS,
|
|
BOB,
|
|
BRENDA,
|
|
KINGPIN,
|
|
DARREN,
|
|
MARIA,
|
|
ANGEL,
|
|
JOEY,
|
|
|
|
TONY, // 91
|
|
FRANK,
|
|
SPIKE,
|
|
DAMON,
|
|
KYLE,
|
|
MICKY,
|
|
SKYRIDER,
|
|
PABLO,
|
|
SAL,
|
|
FATHER,
|
|
|
|
FATIMA, // 101
|
|
WARDEN,
|
|
GORDON,
|
|
GABBY, //ENRICO, //GABBY,
|
|
ERNEST,
|
|
FRED,
|
|
MADAME,
|
|
YANNI,
|
|
MARTHA,
|
|
TIFFANY,
|
|
|
|
T_REX, // 111
|
|
DRUGGIST, // ELGIN
|
|
JAKE,
|
|
PACOS,
|
|
GERARD,
|
|
SKIPPER,
|
|
HANS,
|
|
JOHN,
|
|
MARY,
|
|
GENERAL,
|
|
|
|
SERGEANT, // 121
|
|
ARMAND,
|
|
LORA,
|
|
FRANZ,
|
|
HOWARD,
|
|
SAM,
|
|
ELDIN,
|
|
ARNIE,
|
|
TINA,
|
|
FREDO,
|
|
|
|
WALTER, // 131
|
|
JENNY,
|
|
BILLY,
|
|
BREWSTER,
|
|
ELLIOT,
|
|
DEREK,
|
|
OLIVER,
|
|
WALDO,
|
|
DOREEN,
|
|
JIM,
|
|
|
|
JACK, // 141
|
|
OLAF,
|
|
RAY,
|
|
OLGA,
|
|
TYRONE,
|
|
MADLAB,
|
|
KEITH,
|
|
MATT,
|
|
MIKE,
|
|
DARYL,
|
|
|
|
HERVE, // 151
|
|
PETER,
|
|
ALBERTO,
|
|
CARLO,
|
|
MANNY,
|
|
OSWALD,
|
|
CALVIN,
|
|
CARL,
|
|
SPECK,
|
|
|
|
PROF_HUMMER,
|
|
|
|
PROF_ELDERODO, // 161
|
|
PROF_ICECREAM,
|
|
PROF_HELICOPTER,
|
|
NPC164,
|
|
#ifdef JA2UB
|
|
NPC165,
|
|
NPC166,
|
|
NPC167,
|
|
NPC168,
|
|
NPC169,
|
|
#else
|
|
GASTON,
|
|
STOGIE,
|
|
TEX,
|
|
BIGGENS,
|
|
NPC169,
|
|
#endif
|
|
NPC170 = NPC169 + 84,
|
|
} ;
|
|
|
|
BOOLEAN LoadMercProfiles(void);
|
|
|
|
// This function will overload the default for the face index ( which is the ubCharNum )
|
|
void SetProfileFaceData( UINT8 ubCharNum, UINT8 ubFaceIndex, UINT16 usEyesX, UINT16 usEyesY, UINT16 usMouthX, UINT16 usMouthY );
|
|
SOLDIERTYPE * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly );
|
|
|
|
BOOLEAN RecruitRPC( UINT8 ubCharNum );
|
|
|
|
BOOLEAN RecruitEPC( UINT8 ubCharNum );
|
|
BOOLEAN UnRecruitEPC( UINT8 ubCharNum );
|
|
|
|
INT8 WhichBuddy( UINT8 ubCharNum, UINT8 ubBuddy );
|
|
INT8 WhichHated( UINT8 ubCharNum, UINT8 ubHated );
|
|
|
|
SOLDIERTYPE *ChangeSoldierTeam( SOLDIERTYPE *pSoldier, UINT8 ubTeam );
|
|
|
|
BOOLEAN IsProfileATerrorist( UINT8 ubProfile );
|
|
BOOLEAN IsProfileAHeadMiner( UINT8 ubProfile );
|
|
|
|
void UpdateSoldierPointerDataIntoProfile( BOOLEAN fPlayerMercs );
|
|
|
|
|
|
// Returns true if a buddy of the merc is on team
|
|
BOOLEAN DoesMercHaveABuddyOnTheTeam( UINT8 ubMercID );
|
|
BOOLEAN MercIsHot( SOLDIERTYPE * pSoldier ); // added by SANDRO
|
|
BOOLEAN MercIsInTropicalSector( SOLDIERTYPE * pSoldier ); // added by SANDRO
|
|
|
|
void StartSomeMercsOnAssignment( void );
|
|
|
|
void DecideOnAssassin( void );
|
|
|
|
extern BOOLEAN gubNumTerrorists;
|
|
|
|
void MakeRemainingTerroristsTougher( void );
|
|
void MakeRemainingAssassinsTougher( void );
|
|
SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier );
|
|
|
|
BOOLEAN DoesNPCOwnBuilding( SOLDIERTYPE *pSoldier, INT32 sGridNo );
|
|
|
|
typedef struct
|
|
{
|
|
CHAR16 zName[NAME_LENGTH];
|
|
CHAR16 zNickname[ NICKNAME_LENGTH ];
|
|
UINT8 ubFaceIndex;
|
|
UINT16 usEyesX;
|
|
UINT16 usEyesY;
|
|
UINT16 usMouthX;
|
|
UINT16 usMouthY;
|
|
UINT32 uiEyeDelay;
|
|
UINT32 uiMouthDelay;
|
|
UINT32 uiBlinkFrequency;
|
|
UINT32 uiExpressionFrequency;
|
|
|
|
PaletteRepID PANTS;
|
|
PaletteRepID VEST;
|
|
PaletteRepID SKIN;
|
|
PaletteRepID HAIR;
|
|
|
|
INT8 bSex;
|
|
UINT8 ubBodyType;
|
|
UINT32 uiBodyTypeSubFlags;
|
|
|
|
INT8 bAttitude;
|
|
INT8 bCharacterTrait; // added by SANDRO
|
|
INT8 bDisability;
|
|
UINT8 ubNeedForSleep;
|
|
|
|
INT8 bReputationTolerance;
|
|
INT8 bDeathRate;
|
|
|
|
INT8 bLifeMax;
|
|
INT8 bLife;
|
|
INT8 bStrength;
|
|
INT8 bAgility;
|
|
INT8 bDexterity;
|
|
INT8 bWisdom;
|
|
INT8 bMarksmanship;
|
|
INT8 bExplosive;
|
|
INT8 bLeadership;
|
|
INT8 bMedical;
|
|
INT8 bMechanical;
|
|
|
|
INT8 bExpLevel;
|
|
|
|
INT8 bEvolution;
|
|
// changed by SANDRO
|
|
INT8 bOldSkillTrait;
|
|
INT8 bOldSkillTrait2;
|
|
// added by SANDRO
|
|
INT8 bNewSkillTrait1;
|
|
INT8 bNewSkillTrait2;
|
|
INT8 bNewSkillTrait3;
|
|
INT8 bNewSkillTrait4;
|
|
INT8 bNewSkillTrait5;
|
|
INT8 bNewSkillTrait6;
|
|
INT8 bNewSkillTrait7;
|
|
INT8 bNewSkillTrait8;
|
|
INT8 bNewSkillTrait9;
|
|
INT8 bNewSkillTrait10;
|
|
INT8 bNewSkillTrait11;
|
|
INT8 bNewSkillTrait12;
|
|
INT8 bNewSkillTrait13;
|
|
INT8 bNewSkillTrait14;
|
|
INT8 bNewSkillTrait15;
|
|
INT8 bNewSkillTrait16;
|
|
INT8 bNewSkillTrait17;
|
|
INT8 bNewSkillTrait18;
|
|
INT8 bNewSkillTrait19;
|
|
INT8 bNewSkillTrait20;
|
|
INT8 bNewSkillTrait21;
|
|
INT8 bNewSkillTrait22;
|
|
INT8 bNewSkillTrait23;
|
|
INT8 bNewSkillTrait24;
|
|
INT8 bNewSkillTrait25;
|
|
INT8 bNewSkillTrait26;
|
|
INT8 bNewSkillTrait27;
|
|
INT8 bNewSkillTrait28;
|
|
INT8 bNewSkillTrait29;
|
|
INT8 bNewSkillTrait30;
|
|
|
|
UINT8 bBuddy[5];
|
|
UINT8 bLearnToLike;
|
|
INT8 bLearnToLikeTime;
|
|
|
|
UINT8 bHated[5];
|
|
INT8 bHatedTime[5];
|
|
UINT8 bLearnToHate;
|
|
INT8 bLearnToHateTime;
|
|
|
|
INT16 sSalary;
|
|
UINT32 uiWeeklySalary;
|
|
UINT32 uiBiWeeklySalary;
|
|
INT8 bMedicalDeposit;
|
|
UINT16 sMedicalDepositAmount;
|
|
UINT16 usOptionalGearCost;
|
|
|
|
INT8 bArmourAttractiveness;
|
|
INT8 bMainGunAttractiveness;
|
|
|
|
// This boolean DOES NOT EXIST in gMercProfiles - it is part of a flag set called ubMiscFlags. This code
|
|
// reads the boolean and applies the flag to that flagset, if true.
|
|
BOOLEAN fGoodGuy;
|
|
|
|
UINT16 usApproachFactor[4];
|
|
|
|
INT8 bMercOpinion[75];
|
|
|
|
UINT32 Type;
|
|
|
|
UINT16 sSectorX;
|
|
UINT16 sSectorY;
|
|
INT8 bSectorZ;
|
|
UINT8 ubCivilianGroup;
|
|
INT8 bTown;
|
|
INT8 bTownAttachment;
|
|
|
|
} TEMPPROFILETYPE;
|
|
|
|
extern TEMPPROFILETYPE tempProfiles[NUM_PROFILES+1];
|
|
|
|
extern BOOLEAN WriteMercProfiles();
|
|
extern BOOLEAN WriteMercOpinions();
|
|
|
|
void OverwriteMercProfileWithXMLData( UINT32 uiLoop );
|
|
void OverwriteMercOpinionsWithXMLData( UINT32 uiLoop );
|
|
|
|
// SANDRO - added functions
|
|
INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID );
|
|
INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait );
|
|
|
|
#endif
|