1 #ifndef _MORALE_H
2 #define _MORALE_H
3 
4 #include "JA2Types.h"
5 
6 
7 #define DEFAULT_MORALE 50
8 
9 enum MoraleEventNames
10 {
11 	MORALE_KILLED_ENEMY = 0,
12 	MORALE_SQUADMATE_DIED,
13 	MORALE_SUPPRESSED,
14 	MORALE_AIRSTRIKE,
15 	MORALE_DID_LOTS_OF_DAMAGE,
16 	MORALE_TOOK_LOTS_OF_DAMAGE, // 5
17 	MORALE_KILLED_CIVILIAN,
18 	MORALE_BATTLE_WON,
19 	MORALE_RAN_AWAY,
20 	MORALE_HEARD_BATTLE_WON,
21 	MORALE_HEARD_BATTLE_LOST, // 10
22 	MORALE_TOWN_LIBERATED,
23 	MORALE_TOWN_LOST,
24 	MORALE_MINE_LIBERATED,
25 	MORALE_MINE_LOST,
26 	MORALE_SAM_SITE_LIBERATED, // 15
27 	MORALE_SAM_SITE_LOST,
28 	MORALE_BUDDY_DIED,
29 	MORALE_HATED_DIED,
30 	MORALE_TEAMMATE_DIED,
31 	MORALE_LOW_DEATHRATE, // 20
32 	MORALE_HIGH_DEATHRATE,
33 	MORALE_GREAT_MORALE,
34 	MORALE_POOR_MORALE,
35 	MORALE_DRUGS_CRASH,
36 	MORALE_ALCOHOL_CRASH, // 25
37 	MORALE_MONSTER_QUEEN_KILLED,
38 	MORALE_DEIDRANNA_KILLED,
39 	MORALE_CLAUSTROPHOBE_UNDERGROUND,
40 	MORALE_INSECT_PHOBIC_SEES_CREATURE,
41 	MORALE_NERVOUS_ALONE, // 30
42 	MORALE_MERC_CAPTURED,
43 	MORALE_MERC_MARRIED,
44 	MORALE_QUEEN_BATTLE_WON,
45 	MORALE_SEX,
46 	NUM_MORALE_EVENTS
47 };
48 
49 enum MoraleEventType
50 {
51 	TACTICAL_MORALE_EVENT = 0,
52 	STRATEGIC_MORALE_EVENT
53 };
54 
55 struct MoraleEvent
56 {
57 	UINT8 ubType;
58 	INT8  bChange;
59 };
60 
61 extern void HandleMoraleEvent( SOLDIERTYPE * pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ );
62 extern void RefreshSoldierMorale( SOLDIERTYPE * pSoldier );
63 extern INT8 GetMoraleModifier( const SOLDIERTYPE * pSoldier );
64 
65 void HourlyMoraleUpdate( void );
66 void DailyMoraleUpdate( SOLDIERTYPE *pSoldier );
67 
68 void DecayTacticalMoraleModifiers( void );
69 
70 #endif
71