Files
source/Tactical/Drugs And Alcohol.h
T

108 lines
4.3 KiB
C

#ifndef __DRUGS_AND_ALCOHOL_H
#define __DRUGS_AND_ALCOHOL_H
#include "Soldier Control.h"
#define SOBER 0
#define FEELING_GOOD 1
#define BORDERLINE 2
#define DRUNK 3
#define HUNGOVER 4
#define REGEN_POINTS_PER_BOOSTER 4
#define LIFE_GAIN_PER_REGEN_POINT 10
extern UINT8 gbPlayerNum;
enum {
DRUG_TYPE_ADRENALINE = 0,
DRUG_TYPE_ALCOHOL,
DRUG_TYPE_REGENERATION,
DRUG_TYPE_RESISTANCE,
DRUG_TYPE_STRENGTH,
DRUG_TYPE_AGILITY, // 5
DRUG_TYPE_DEXTERITY,
DRUG_TYPE_WISDOM,
DRUG_TYPE_PERCEPTION,
DRUG_TYPE_PSYCHO,
DRUG_TYPE_NERVOUS, // 10
DRUG_TYPE_CLAUSTROPHOBIC,
DRUG_TYPE_HEATINTOLERANT,
DRUG_TYPE_FEAROFINSECTS,
DRUG_TYPE_FORGETFUL,
DRUG_TYPE_BLIND, // 15
DRUG_TYPE_KNOCKOUT,
DRUG_TYPE_VISION,
DRUG_TYPE_TUNNELVISION,
DRUG_TYPE_LIFEDAMAGE,
DRUG_TYPE_CUREPOISON, // 20
DRUG_TYPE_STUNANDKILL,
};
// Flugente, 12-04-21
// These flags determine the different types of 'pure' drugs that we have. Each one has specific effects and sideeffects
// Note that a consumable can be a combination of several different drugs
#define DRUG_ADRENALINE (1 << DRUG_TYPE_ADRENALINE) //0x00000001 //1
#define DRUG_ALCOHOL (1 << DRUG_TYPE_ALCOHOL) //0x00000002 //2
#define DRUG_REGENERATION (1 << DRUG_TYPE_REGENERATION) //0x00000004 //4
#define DRUG_DAMAGERESISTANCE (1 << DRUG_TYPE_RESISTANCE) //0x00000008 //8
#define DRUG_STRENGTH (1 << DRUG_TYPE_STRENGTH) //0x00000010 //16
#define DRUG_AGILITY (1 << DRUG_TYPE_AGILITY) //0x00000020 //32
#define DRUG_DEXTERITY (1 << DRUG_TYPE_DEXTERITY) //0x00000040 //64
#define DRUG_WISDOM (1 << DRUG_TYPE_WISDOM) //0x00000080 //128
#define DRUG_PERCEPTION (1 << DRUG_TYPE_PERCEPTION) //0x00000100 //256
#define DRUG_PSYCHO (1 << DRUG_TYPE_PSYCHO) //0x00000200 //512
#define DRUG_NERVOUS (1 << DRUG_TYPE_NERVOUS) //0x00000400 //1024
#define DRUG_CLAUSTROPHOBIC (1 << DRUG_TYPE_CLAUSTROPHOBIC) //0x00000800 //2048
#define DRUG_HEATINTOLERANT (1 << DRUG_TYPE_HEATINTOLERANT) //0x00001000 //4096
#define DRUG_FEAROFINSECTS (1 << DRUG_TYPE_FEAROFINSECTS) //0x00002000 //8192
#define DRUG_FORGETFUL (1 << DRUG_TYPE_FORGETFUL) //0x00004000 //16384
#define DRUG_BLIND (1 << DRUG_TYPE_BLIND) //0x00008000 //32768
#define DRUG_KNOCKOUT (1 << DRUG_TYPE_KNOCKOUT) //0x00010000 //65536
#define DRUG_VISION (1 << DRUG_TYPE_VISION) //0x00020000 //131072
#define DRUG_TUNNELVISION (1 << DRUG_TYPE_TUNNELVISION) //0x00040000 //262144
#define DRUG_LIFEDAMAGE (1 << DRUG_TYPE_LIFEDAMAGE) //0x00080000 //524288
#define DRUG_CUREPOISON (1 << DRUG_TYPE_CUREPOISON) //0x00100000 //1048576
#define DRUG_STUNANDKILL (1 << DRUG_TYPE_STUNANDKILL) //0x00200000 //2097152
#define DRUG_MISC_9 0x00400000 //4194304
#define DRUG_MISC_10 0x00800000 //8388608
#define DRUG_MISC_11 0x01000000 //16777216
#define DRUG_MISC_12 0x02000000 //33554432
#define DRUG_MISC_13 0x04000000 //67108864
#define DRUG_MISC_14 0x08000000 //134217728
#define DRUG_MISC_15 0x10000000 //268435456
#define DRUG_MISC_16 0x20000000 //536870912
#define DRUG_MISC_17 0x40000000 //1073741824
#define DRUG_MISC_18 0x80000000 //2147483648
typedef struct
{
UINT8 ubType; // type of drug: bit field
UINT8 ubDrugTravelRate;
UINT8 ubDrugWearoffRate;
UINT8 ubDrugEffect;
UINT8 ubDrugSideEffect;
UINT8 ubDrugSideEffectRate;
UINT8 ubMoralBacklash;
UINT8 ubDiseaseCure; // this is a cure for disease x - 1. It will cure Disease[x].sInfectionPtsOutbreak points of disease.
} DRUGTYPE;
//GLOBALS
extern DRUGTYPE Drug[DRUG_TYPE_MAX];
BOOLEAN ApplyDrugs( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObject );
void HandleEndTurnDrugAdjustments( SOLDIERTYPE *pSoldier );
void HandleAPEffectDueToDrugs( SOLDIERTYPE *pSoldier, INT16 *pubPoints );
void HandleBPEffectDueToDrugs( SOLDIERTYPE *pSoldier, INT16 *psPoints );
void HandleDamageResistanceEffectDueToDrugs( SOLDIERTYPE *pSoldier, INT32 *psPoints );
INT8 GetDrunkLevel( SOLDIERTYPE *pSoldier );
INT32 EffectStatForBeingDrunk( SOLDIERTYPE *pSoldier, INT32 iStat );
BOOLEAN MercUnderTheInfluence( SOLDIERTYPE *pSoldier );
BOOLEAN MercUnderTheInfluence( SOLDIERTYPE *pSoldier, UINT8 aDrugType );
BOOLEAN MercDruggedButNotDrunk( SOLDIERTYPE *pSoldier );
#endif