mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
.editorconfig already enforces it but it's getting changed piecemeal in every commit. just get it done with. the script: ``` find . -type f -not -path "./.git/*" -not -path "./.vs/*" | while read -r file; do isFile=$(file -0 "$file" | cut -d $'\0' -f2) case "$isFile" in (*text*) echo "$file is text" if [[ $(tail -c 1 "$file" | wc -l) -ne 1 ]]; then echo "" >> "$file" fi ;; (*) echo "file isn't text" ;; esac done ```
171 lines
5.4 KiB
C++
171 lines
5.4 KiB
C++
#ifndef __STRATEGIC_STATUS_H
|
|
#define __STRATEGIC_STATUS_H
|
|
|
|
#include "types.h"
|
|
//#include "Item Types.h"
|
|
#include "Soldier Control.h"
|
|
|
|
//forward declarations of common classes to eliminate includes
|
|
class OBJECTTYPE;
|
|
class SOLDIERTYPE;
|
|
|
|
|
|
//Enemy is allowed to capture the player after certain day
|
|
#define STARTDAY_ALLOW_PLAYER_CAPTURE_FOR_RESCUE 4
|
|
|
|
#define STRATEGIC_PLAYER_CAPTURED_FOR_RESCUE 0x00000001
|
|
#define STRATEGIC_PLAYER_CAPTURED_FOR_ESCAPE 0x00000002
|
|
|
|
#define ARMY_GUN_LEVELS 11
|
|
|
|
// anv: externalised, now these serve as enums below
|
|
// player reputation modifiers
|
|
//#define REPUTATION_LOW_DEATHRATE +5
|
|
//#define REPUTATION_HIGH_DEATHRATE -5
|
|
//#define REPUTATION_GREAT_MORALE +3
|
|
//#define REPUTATION_POOR_MORALE -3
|
|
//#define REPUTATION_BATTLE_WON +2
|
|
//#define REPUTATION_BATTLE_LOST -2
|
|
//#define REPUTATION_TOWN_WON +5
|
|
//#define REPUTATION_TOWN_LOST -5
|
|
//#define REPUTATION_SOLDIER_DIED -2 // per exp. level
|
|
//#define REPUTATION_SOLDIER_CAPTURED -1
|
|
//#define REPUTATION_KILLED_CIVILIAN -5
|
|
//#define REPUTATION_EARLY_FIRING -3
|
|
//#define REPUTATION_KILLED_MONSTER_QUEEN +15
|
|
//#define REPUTATION_KILLED_DEIDRANNA +25
|
|
|
|
typedef enum
|
|
{
|
|
REPUTATION_LOW_DEATHRATE = 0,
|
|
REPUTATION_HIGH_DEATHRATE,
|
|
REPUTATION_GREAT_MORALE,
|
|
REPUTATION_POOR_MORALE,
|
|
REPUTATION_BATTLE_WON,
|
|
REPUTATION_BATTLE_LOST, // 5
|
|
REPUTATION_TOWN_WON,
|
|
REPUTATION_TOWN_LOST,
|
|
REPUTATION_SOLDIER_DIED,
|
|
REPUTATION_SOLDIER_CAPTURED,
|
|
REPUTATION_KILLED_CIVILIAN, // 10
|
|
REPUTATION_EARLY_FIRING,
|
|
REPUTATION_KILLED_MONSTER_QUEEN,
|
|
REPUTATION_KILLED_DEIDRANNA,
|
|
REPUTATION_MERC_COMPLAIN_EQUIPMENT,
|
|
REPUTATION_MERC_OWED_MONEY, // 15
|
|
REPUTATION_PLAYER_IS_INACTIVE,
|
|
REPUTATION_MERC_FIRED_ON_BAD_TERMS,
|
|
|
|
NUM_REPUTATION_EVENTS,
|
|
} ReputationEventNames;
|
|
|
|
// flags to remember whether a certain E-mail has already been sent out
|
|
#define ENRICO_EMAIL_SENT_SOME_PROGRESS 0x0001
|
|
#define ENRICO_EMAIL_SENT_ABOUT_HALFWAY 0x0002
|
|
#define ENRICO_EMAIL_SENT_NEARLY_DONE 0x0004
|
|
#define ENRICO_EMAIL_SENT_MINOR_SETBACK 0x0008
|
|
#define ENRICO_EMAIL_SENT_MAJOR_SETBACK 0x0010
|
|
#define ENRICO_EMAIL_SENT_CREATURES 0x0020
|
|
#define ENRICO_EMAIL_FLAG_SETBACK_OVER 0x0040
|
|
#define ENRICO_EMAIL_SENT_LACK_PROGRESS1 0x0080
|
|
#define ENRICO_EMAIL_SENT_LACK_PROGRESS2 0x0100
|
|
#define ENRICO_EMAIL_SENT_LACK_PROGRESS3 0x0200
|
|
#define ENRICO_EMAIL_SENT_PMC 0x0400
|
|
#define ENRICO_EMAIL_SENT_MILITIAROSTER 0x0800
|
|
|
|
// progress threshold that control Enrico E-mail timing
|
|
#define SOME_PROGRESS_THRESHOLD 20
|
|
#define ABOUT_HALFWAY_THRESHOLD 55
|
|
#define NEARLY_DONE_THRESHOLD 80
|
|
#define MINOR_SETBACK_THRESHOLD 5
|
|
#define MAJOR_SETBACK_THRESHOLD 15
|
|
|
|
#define NEW_SECTORS_EQUAL_TO_ACTIVITY 4
|
|
|
|
// enemy ranks
|
|
enum
|
|
{
|
|
ENEMY_RANK_ADMIN,
|
|
ENEMY_RANK_TROOP,
|
|
ENEMY_RANK_ELITE,
|
|
//ENEMY_RANK_TANK,
|
|
NUM_ENEMY_RANKS
|
|
};
|
|
|
|
// ways enemies can be killed
|
|
enum
|
|
{
|
|
ENEMY_KILLED_IN_TACTICAL,
|
|
ENEMY_KILLED_IN_AUTO_RESOLVE,
|
|
ENEMY_KILLED_TOTAL,
|
|
NUM_WAYS_ENEMIES_KILLED
|
|
};
|
|
|
|
|
|
typedef struct STRATEGIC_STATUS
|
|
{
|
|
UINT32 uiFlags;
|
|
UINT8 ubNumCapturedForRescue;
|
|
|
|
UINT8 ubHighestProgress; // the highest level of progress player has attained thus far in the game (0-100)
|
|
|
|
UINT8 ubStandardArmyGunIndex[ARMY_GUN_LEVELS]; // type of gun in each group that Queen's army is using this game
|
|
BOOLEAN fWeaponDroppedAlready[MAXITEMS]; // flag that tracks whether this weapon type has been dropped before
|
|
|
|
UINT8 ubMercDeaths; // how many soldiers have bit it while in the player's employ (0-100)
|
|
UINT32 uiManDaysPlayed; // once per day, # living mercs on player's team is added to this running total
|
|
|
|
UINT8 ubBadReputation; // how bad a reputation player has earned through his actions, performance, etc. (0-100)
|
|
|
|
UINT16 usEnricoEmailFlags; // bit flags that control progress-related E-mails from Enrico
|
|
|
|
UINT8 ubInsuranceInvestigationsCnt; // how many times merc has been investigated for possible insurance fraud
|
|
|
|
UINT8 ubUnhiredMercDeaths; // how many mercs have died while NOT working for the player
|
|
|
|
UINT16 usPlayerKills; // kills achieved by all mercs controlled by player together. *Excludes* militia kills!
|
|
|
|
UINT16 usEnemiesKilled[NUM_WAYS_ENEMIES_KILLED][NUM_ENEMY_RANKS]; // admin/troop/elite. Includes kills by militia, too
|
|
UINT16 usLastDayOfPlayerActivity;
|
|
UINT8 ubNumNewSectorsVisitedToday;
|
|
UINT8 ubNumberOfDaysOfInactivity;
|
|
|
|
// Flugente: VIPs
|
|
UINT8 usVIPsTotal;
|
|
UINT8 usVIPsLeft;
|
|
|
|
INT8 bPadding[68];
|
|
|
|
} STRATEGIC_STATUS;
|
|
|
|
|
|
void InitStrategicStatus();
|
|
|
|
extern STRATEGIC_STATUS gStrategicStatus;
|
|
|
|
|
|
BOOLEAN SaveStrategicStatusToSaveGameFile( HWFILE hFile );
|
|
|
|
BOOLEAN LoadStrategicStatusFromSaveGameFile( HWFILE hFile );
|
|
|
|
UINT8 CalcDeathRate(void);
|
|
|
|
void ModifyPlayerReputation(INT8 bRepChange);
|
|
|
|
BOOLEAN MercThinksDeathRateTooHigh( UINT8 ubProfileID );
|
|
BOOLEAN MercThinksBadReputationTooHigh( UINT8 ubProfileID );
|
|
BOOLEAN MercThinksHisMoraleIsTooLow( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN MercIsOwedTooMuchMoney( UINT8 ubProfileID );
|
|
BOOLEAN MercThinksPlayerIsInactiveTooLong( UINT8 ubProfileID );
|
|
|
|
void HandleEnricoEmail(void);
|
|
|
|
void TrackEnemiesKilled( UINT8 ubKilledHow, UINT8 ubSoldierClass );
|
|
|
|
INT8 SoldierClassToRankIndex( UINT8 ubSoldierClass );
|
|
UINT8 RankIndexToSoldierClass( UINT8 ubRankIndex );
|
|
|
|
void UpdateLastDayOfPlayerActivity( UINT16 usDay );
|
|
|
|
#endif
|