mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Changed code that handles putting medical kit from merc inventory into his main hand to respect pockets restrictions to avoid putting gun into medkit only pocket etc.. Writes an error in case that medical kit cannot be put into hands due to no suitable place for currently held items (by Shadooow). git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9015 3b4a5df2-a311-0410-b5c6-a8a6f20db521
593 lines
22 KiB
C
593 lines
22 KiB
C
#ifndef _ASSIGNMENTS_H
|
|
#define _ASSIGNMENTS_H
|
|
|
|
// header for assignment manipulation/updating for characters
|
|
|
|
#include "Types.h"
|
|
#include "Soldier Control.h"
|
|
#include "mousesystem.h"
|
|
#include "Strategic Movement.h"
|
|
|
|
|
|
// this distinguishes whether we're only looking for patients healable THIS HOUR (those that have been on their assignment
|
|
// long enough), or those that will be healable EVER (regardless of whether they're getting healed during this hour)
|
|
#define HEALABLE_EVER 0
|
|
#define HEALABLE_THIS_HOUR 1
|
|
|
|
|
|
// merc collapses from fatigue if max breath drops to this. Can't go any lower!
|
|
#define BREATHMAX_ABSOLUTE_MINIMUM 10
|
|
#define BREATHMAX_GOTTA_STOP_MOVING 30
|
|
#define BREATHMAX_PRETTY_TIRED 50
|
|
#define BREATHMAX_CANCEL_COLLAPSE 60
|
|
#define BREATHMAX_CANCEL_TIRED 75
|
|
#define BREATHMAX_FULLY_RESTED 95
|
|
|
|
|
|
#define VEHICLE_REPAIR_POINTS_DIVISOR 10
|
|
|
|
// controls how easily SAM sites are repaired
|
|
// NOTE: A repairman must generate a least this many points / hour to be ABLE to repair a SAM site at all!
|
|
#define SAM_SITE_REPAIR_DIVISOR 4 // Flugente: changed from 10 to 4
|
|
|
|
// minimum condition at which a destroyed SAM site controller is visible in tactical again
|
|
#define MIN_CONDITION_SHOW_SAM_CONTROLLER 20
|
|
|
|
// Assignments Defines
|
|
enum
|
|
{
|
|
SQUAD_1 = 0,
|
|
SQUAD_2,
|
|
SQUAD_3,
|
|
SQUAD_4,
|
|
SQUAD_5,
|
|
SQUAD_6,
|
|
SQUAD_7,
|
|
SQUAD_8,
|
|
SQUAD_9,
|
|
SQUAD_10,
|
|
SQUAD_11,
|
|
SQUAD_12,
|
|
SQUAD_13,
|
|
SQUAD_14,
|
|
SQUAD_15,
|
|
SQUAD_16,
|
|
SQUAD_17,
|
|
SQUAD_18,
|
|
SQUAD_19,
|
|
SQUAD_20,
|
|
ON_DUTY,
|
|
DOCTOR,
|
|
PATIENT,
|
|
VEHICLE,
|
|
IN_TRANSIT,
|
|
REPAIR,
|
|
RADIO_SCAN, // added by Flugente: a radio operators scans for enemy patrols in nearby sectors
|
|
TRAIN_SELF,
|
|
TRAIN_TOWN,
|
|
ASSIGNMENT_UNUSED, // Flugente: this was formerly TRAIN_MOBILE
|
|
TRAIN_TEAMMATE,
|
|
TRAIN_BY_OTHER,
|
|
MOVE_EQUIPMENT, // added by Flugente: move items from one city sector to another
|
|
FACILITY_STAFF, // HEADROCK HAM 3.6: Operating a facility for strategic gain.
|
|
FACILITY_EAT, // added by Flugente
|
|
FACILITY_REST, // HEADROCK HAM 3.6: Facility equivalent of resting (no assignment)
|
|
FACILITY_INTERROGATE_PRISONERS, // added by Flugente
|
|
ASSIGNMENT_DEAD,
|
|
ASSIGNMENT_UNCONCIOUS, // unused
|
|
ASSIGNMENT_POW,
|
|
ASSIGNMENT_HOSPITAL,
|
|
ASSIGNMENT_EMPTY,
|
|
FACILITY_PRISON_SNITCH,
|
|
FACILITY_SPREAD_PROPAGANDA,
|
|
FACILITY_SPREAD_PROPAGANDA_GLOBAL,
|
|
FACILITY_GATHER_RUMOURS,
|
|
SNITCH_SPREAD_PROPAGANDA,
|
|
SNITCH_GATHER_RUMOURS,
|
|
FACILITY_STRATEGIC_MILITIA_MOVEMENT, // Flugente: merc staffs a military HQ, we can now control militia movement on the map
|
|
DISEASE_DIAGNOSE, // Flugente: check for diseases among mercs and local population
|
|
DISEASE_DOCTOR_SECTOR, // Flugente: treatpopulation (all non-mercs in the sector) against disease
|
|
FACILITY_DOCTOR,
|
|
FACILITY_PATIENT,
|
|
FACILITY_REPAIR,
|
|
FORTIFICATION, // Flugente: sectors can be fortified according to external layout plans
|
|
TRAIN_WORKERS,
|
|
CONCEALED, // Flugente: spy hides among the population
|
|
GATHERINTEL, // gathers information while disguised in enemy territory
|
|
DOCTOR_MILITIA, // heal militia
|
|
DRILL_MILITIA, // train existing militia (does not create new ones)
|
|
BURIAL, // merc removes corpses in this sector
|
|
ADMINISTRATION, // merc boosts the effectiveness of other mercs
|
|
EXPLORATION, // merc searches the sector for undiscovered items
|
|
NUM_ASSIGNMENTS,
|
|
};
|
|
|
|
#define IS_DOCTOR(assignment) ((assignment == DOCTOR) || (assignment == FACILITY_DOCTOR))
|
|
// left the last : off so syntax is visually consistent with non-macro case statements
|
|
#define CASE_DOCTOR case DOCTOR: case FACILITY_DOCTOR
|
|
|
|
// Does not include HOSPITAL since mercs are not responsible for their care
|
|
#define IS_PATIENT(assignment) ((assignment == DOCTOR) || (assignment == PATIENT) || (assignment == FACILITY_DOCTOR) || (assignment == FACILITY_PATIENT))
|
|
// Does not include DOCTOR types because switch cases must be unique
|
|
#define CASE_PATIENT case PATIENT: case FACILITY_PATIENT
|
|
|
|
#define IS_REPAIR(assignment) ((assignment == REPAIR) || (assignment == FACILITY_REPAIR))
|
|
#define CASE_REPAIR case REPAIR: case FACILITY_REPAIR
|
|
|
|
#define SPY_LOCATION(assignment) ((assignment == CONCEALED) || (assignment == GATHERINTEL) )
|
|
|
|
// Flugente: does this assignment benefit from other mercs being on administration assignment?
|
|
#define ADMINISTRATION_BONUS(assignment) ( IS_DOCTOR(assignment) || \
|
|
IS_REPAIR(assignment) || \
|
|
(assignment==TRAIN_SELF) || \
|
|
(assignment==TRAIN_TOWN) || \
|
|
(assignment==TRAIN_TEAMMATE) || \
|
|
(assignment==TRAIN_BY_OTHER) || \
|
|
(assignment==MOVE_EQUIPMENT) || \
|
|
(assignment==FACILITY_STAFF) || \
|
|
(assignment==FACILITY_INTERROGATE_PRISONERS) || \
|
|
(assignment==FACILITY_SPREAD_PROPAGANDA) || \
|
|
(assignment==FACILITY_SPREAD_PROPAGANDA_GLOBAL) || \
|
|
(assignment==FACILITY_STRATEGIC_MILITIA_MOVEMENT) || \
|
|
(assignment==DISEASE_DIAGNOSE) || \
|
|
(assignment==DISEASE_DOCTOR_SECTOR) || \
|
|
(assignment==FORTIFICATION) || \
|
|
(assignment==TRAIN_WORKERS) || \
|
|
(assignment==DOCTOR_MILITIA) || \
|
|
(assignment==DRILL_MILITIA) || \
|
|
(assignment==BURIAL) \
|
|
)
|
|
|
|
// strings for snitch exposition
|
|
enum
|
|
{
|
|
SNITCH_PRISON_EXPOSED_FINE_WISDOM,
|
|
SNITCH_PRISON_EXPOSED_FINE_LEADERSHIP,
|
|
SNITCH_PRISON_EXPOSED_FINE_EXPLEVEL,
|
|
SNITCH_PRISON_EXPOSED_FINE_GUARDS,
|
|
|
|
SNITCH_PRISON_EXPOSED_WOUNDED_DROWN,
|
|
SNITCH_PRISON_EXPOSED_WOUNDED_BEATEN,
|
|
SNITCH_PRISON_EXPOSED_WOUNDED_KNIFED,
|
|
SNITCH_PRISON_EXPOSED_WOUNDED_STRANGLED,
|
|
|
|
SNITCH_PRISON_EXPOSED_DEAD_DROWN,
|
|
SNITCH_PRISON_EXPOSED_DEAD_BEATEN,
|
|
SNITCH_PRISON_EXPOSED_DEAD_KNIFED,
|
|
SNITCH_PRISON_EXPOSED_DEAD_STRANGLED,
|
|
|
|
NUM_SNITCH_PRISON_EXPOSED,
|
|
};
|
|
|
|
// strings for snitch gathering rumours
|
|
enum
|
|
{
|
|
SNITCH_GATHERING_RUMOURS_RESULT,
|
|
NUM_SNITCH_GATHERING_RUMOURS_RESULT,
|
|
};
|
|
|
|
#define NO_ASSIGNMENT 127 //used when no pSoldier->ubDesiredSquad
|
|
|
|
// Train stats defines (must match ATTRIB_MENU_ defines, and pAttributeMenuStrings )
|
|
enum
|
|
{
|
|
HEALTH = 0,
|
|
AGILITY,
|
|
DEXTERITY,
|
|
STRENGTH,
|
|
LEADERSHIP,
|
|
MARKSMANSHIP,
|
|
MECHANICAL,
|
|
EXPLOSIVE_ASSIGN,
|
|
MEDICAL,
|
|
NUM_TRAINABLE_STATS
|
|
// NOTE: Wisdom isn't trainable!
|
|
};
|
|
|
|
|
|
typedef struct TOWN_TRAINER_TYPE
|
|
{
|
|
SOLDIERTYPE *pSoldier;
|
|
INT16 sTrainingPts;
|
|
|
|
} TOWN_TRAINER_TYPE;
|
|
|
|
|
|
// can character do this assignment?
|
|
//BOOLEAN CanSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment );
|
|
|
|
// can this character be assigned as a doctor?
|
|
BOOLEAN CanCharacterDoctor( SOLDIERTYPE *pCharacter );
|
|
|
|
// can this character doctor militia (assignmentwise)?
|
|
BOOLEAN CanCharacterDoctorMilitia( SOLDIERTYPE *pSoldier );
|
|
|
|
// can this character diagnose diseases?
|
|
BOOLEAN CanCharacterDiagnoseDisease( SOLDIERTYPE *pSoldier );
|
|
|
|
// can this character treat diseases of the population (NOT mercs)?
|
|
BOOLEAN CanCharacterTreatSectorDisease( SOLDIERTYPE *pSoldier );
|
|
|
|
BOOLEAN CanCharacterFortify( SOLDIERTYPE *pSoldier );
|
|
|
|
BOOLEAN CanCharacterSpyAssignment( SOLDIERTYPE *pSoldier );
|
|
|
|
BOOLEAN CanCharacterBurial( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN CanCharacterAdministration( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN CanCharacterExplore( SOLDIERTYPE *pSoldier );
|
|
|
|
// can this character be assigned as a repairman?
|
|
BOOLEAN CanCharacterRepair( SOLDIERTYPE *pCharacter );
|
|
|
|
// can character be patient?
|
|
BOOLEAN CanCharacterPatient( SOLDIERTYPE *pCharacter );
|
|
|
|
// can character train militia?
|
|
BOOLEAN CanCharacterDrillMilitia( SOLDIERTYPE *pSoldier, BOOLEAN aErrorReport = FALSE );
|
|
BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pCharacter );
|
|
|
|
BOOLEAN CanCharacterTrainWorkers( SOLDIERTYPE *pSoldier );
|
|
|
|
// can character train stat?..as train self or as trainer?
|
|
BOOLEAN CanCharacterTrainStat( SOLDIERTYPE *pSoldier, INT8 bStat, BOOLEAN fTrainSelf, BOOLEAN fTrainTeammate );
|
|
|
|
// is character capable of practising at all?
|
|
BOOLEAN CanCharacterPractise( SOLDIERTYPE *pCharacter );
|
|
|
|
// can this character train others?
|
|
BOOLEAN CanCharacterTrainTeammates( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN CanCharacterFacility( SOLDIERTYPE *pSoldier, UINT8 ubFacilityType, UINT8 ubAssignmentType );
|
|
|
|
// put character on duty?
|
|
BOOLEAN CanCharacterOnDuty( SOLDIERTYPE *pCharacter );
|
|
|
|
// put character to sleep?
|
|
BOOLEAN CanCharacterSleep( SOLDIERTYPE *pCharacter, BOOLEAN fExplainWhyNot );
|
|
|
|
BOOLEAN CanCharacterBeAwakened( SOLDIERTYPE *pSoldier, BOOLEAN fExplainWhyNot );
|
|
|
|
// put character in vehicle?
|
|
BOOLEAN CanCharacterVehicle( SOLDIERTYPE *pCharacter );
|
|
|
|
#define CHARACTER_CANT_JOIN_SQUAD_ALREADY_IN_IT -6
|
|
#define CHARACTER_CANT_JOIN_SQUAD_SQUAD_MOVING -5
|
|
#define CHARACTER_CANT_JOIN_SQUAD_MOVING -4
|
|
#define CHARACTER_CANT_JOIN_SQUAD_VEHICLE -3
|
|
#define CHARACTER_CANT_JOIN_SQUAD_TOO_FAR -2
|
|
#define CHARACTER_CANT_JOIN_SQUAD_FULL -1
|
|
#define CHARACTER_CANT_JOIN_SQUAD 0
|
|
#define CHARACTER_CAN_JOIN_SQUAD 1
|
|
|
|
// can character be added to squad
|
|
INT8 CanCharacterSquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
|
|
|
|
// can character snitch
|
|
BOOLEAN CanCharacterSnitch( SOLDIERTYPE *pCharacter );
|
|
|
|
// if merc could train militia here, do they have sufficient loyalty?
|
|
BOOLEAN DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN DoesTownHaveRatingToTrainMilitia( INT8 bTownId );
|
|
|
|
// is the character in transit?
|
|
BOOLEAN IsCharacterInTransit( SOLDIERTYPE *pCharacter );
|
|
|
|
// handler for assignments -- called once per hour via event
|
|
void UpdateAssignments();
|
|
|
|
// how many people in this secotr have this assignment?
|
|
UINT8 FindNumberInSectorWithAssignment( INT16 sX, INT16 sY, INT8 bAssignment );
|
|
|
|
void MakeSoldiersTacticalAnimationReflectAssignment( SOLDIERTYPE *pSoldier );
|
|
|
|
// build list of sectors with mercs
|
|
void BuildSectorsWithSoldiersList( void );
|
|
|
|
// init sectors with soldiers list
|
|
void InitSectorsWithSoldiersList( void );
|
|
|
|
// is there a soldier in this sector?..only use after BuildSectorsWithSoldiersList is called
|
|
BOOLEAN IsThereASoldierInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ );
|
|
|
|
void CheckIfSoldierUnassigned( SOLDIERTYPE *pSoldier );
|
|
|
|
// figure out the assignment menu pop up box positions
|
|
void DetermineBoxPositions( void );
|
|
|
|
// set x,y position in tactical
|
|
void SetTacticalPopUpAssignmentBoxXY( void );
|
|
|
|
// get number of pts that are being used this strategic turn
|
|
INT16 GetTownTrainPtsForCharacter( SOLDIERTYPE *pTrainer, UINT16 *pusMaxPts );
|
|
|
|
|
|
// find number of healing pts
|
|
UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand );
|
|
|
|
// find number of repair pts repairman has available
|
|
UINT8 CalculateRepairPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand );
|
|
|
|
// find number of cleaning pts repairman has available
|
|
UINT8 CalculateCleaningPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts );
|
|
|
|
// Flugente: calculate interrogation and prison guard values
|
|
UINT32 CalculateInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts );
|
|
UINT32 CalculatePrisonGuardValue(SOLDIERTYPE *pSoldier );
|
|
|
|
UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts );
|
|
|
|
// Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present
|
|
FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID );
|
|
|
|
INT16 GetTrainWorkerPts(SOLDIERTYPE *pSoldier);
|
|
|
|
// Flugente: intel shenanigans
|
|
void BuildIntelInfoArray();
|
|
void CalcIntelInfoOfferings();
|
|
void GetIntelInfoOfferings( int aInfo[] );
|
|
void GetIntelInfoTextAndPrice( int aInfoNumber, STR16 aString, int& arIntelCost );
|
|
void BuyIntelInfo( int aInfoNumber );
|
|
|
|
// get bonus tarining pts due to an instructor for this student
|
|
// HEADROCK HAM 3.5: Three functions below have lost an argument which is no longer required ("uiAtGunRange", which was "uiAtFacility" in HAM 3.4)
|
|
INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE *pStudent, INT8 bTrainStat, UINT16 *pusMaxPts );
|
|
|
|
// get training pts for this soldier
|
|
INT16 GetSoldierTrainingPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, UINT16 *pusMaxPts );
|
|
|
|
// pts for being a student for this soldier
|
|
INT16 GetSoldierStudentPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, UINT16 *pusMaxPts );
|
|
|
|
// HEADROCK HAM 3.6: Completely unused.
|
|
// reset these soldiers
|
|
//void ResetAssignmentsForAllSoldiersInSectorWhoAreTrainingTown( SOLDIERTYPE *pSoldier );
|
|
|
|
// Handle assignment done
|
|
void AssignmentDone( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote, BOOLEAN fMeToo );
|
|
|
|
extern INT32 ghAssignmentBox;
|
|
extern INT32 ghEpcBox;
|
|
extern INT32 ghSquadBox;
|
|
extern INT32 ghVehicleBox;
|
|
extern INT32 ghRepairBox;
|
|
extern INT32 ghTrainingBox;
|
|
extern INT32 ghMoveItemBox;
|
|
extern INT32 ghDiseaseBox;
|
|
extern INT32 ghSpyBox;
|
|
extern INT32 ghMilitiaBox;
|
|
extern INT32 ghAttributeBox;
|
|
extern INT32 ghRemoveMercAssignBox;
|
|
extern INT32 ghContractBox;
|
|
extern INT32 ghMoveBox;
|
|
// HEADROCK HAM 3.6: Facility Menu, Submenu
|
|
extern INT32 ghFacilityBox;
|
|
extern INT32 ghFacilityAssignmentBox;
|
|
//extern INT32 ghUpdateBox;
|
|
// anv: snitch menus
|
|
extern INT32 ghSnitchBox;
|
|
extern INT32 ghSnitchToggleBox;
|
|
extern INT32 ghSnitchSectorBox;
|
|
|
|
// Flugente: prisoner menu
|
|
extern INT32 ghPrisonerBox;
|
|
|
|
|
|
extern MOUSE_REGION gAssignmentScreenMaskRegion;
|
|
|
|
extern MOUSE_REGION gAssignmentMenuRegion[ ];
|
|
extern MOUSE_REGION gTrainingMenuRegion[ ];
|
|
extern MOUSE_REGION gAttributeMenuRegion[ ];
|
|
extern MOUSE_REGION gSquadMenuRegion[ ];
|
|
extern MOUSE_REGION gContractMenuRegion[ ];
|
|
extern MOUSE_REGION gRemoveMercAssignRegion[ ];
|
|
extern MOUSE_REGION gVehicleMenuRegion[];
|
|
// HEADROCK HAM 3.6: Facility Menu.
|
|
extern MOUSE_REGION gFacilityMenuRegion[];
|
|
extern MOUSE_REGION gFacilityMenuRegion[];
|
|
|
|
enum
|
|
{
|
|
ASMENU_NONE = 0,
|
|
ASMENU_REPAIR,
|
|
ASMENU_VEHICLE,
|
|
ASMENU_DISEASE,
|
|
ASMENU_SPY,
|
|
ASMENU_MOVEITEM,
|
|
ASMENU_FACILITY,
|
|
ASMENU_TRAIN,
|
|
ASMENU_SQUAD,
|
|
ASMENU_SNITCH,
|
|
ASMENU_MILITIA,
|
|
};
|
|
|
|
extern int gAssignMenuState;
|
|
|
|
extern BOOLEAN fShownContractMenu;
|
|
extern BOOLEAN fShownAssignmentMenu;
|
|
|
|
extern BOOLEAN fFirstClickInAssignmentScreenMask;
|
|
|
|
extern void RestorePopUpBoxes( void );
|
|
|
|
extern BOOLEAN fGlowContractRegion;
|
|
|
|
extern BOOLEAN gfReEvaluateEveryonesNothingToDo;
|
|
|
|
|
|
// pop up menu mouse regions
|
|
void CreateDestroyMouseRegionsForAssignmentMenu( void );
|
|
void AssignmentMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
void CreateDestroyMouseRegionsForTrainingMenu( void );
|
|
void TrainingMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void TrainingMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
void CreateDestroyMouseRegionsForAttributeMenu( void );
|
|
void AttributeMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void AttributesMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
void CreateDestroyMouseRegionsForSquadMenu( BOOLEAN fPositionBox );
|
|
void SquadMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void SquadMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// vehicle menu
|
|
void CreateDestroyMouseRegionForVehicleMenu( void );
|
|
void VehicleMenuMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void VehicleMenuBtnCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// repair menu
|
|
void CreateDestroyMouseRegionForRepairMenu( void );
|
|
void RepairMenuMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void RepairMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// Flugente: move item menu
|
|
void CreateDestroyMouseRegionForMoveItemMenu( void );
|
|
void MoveItemMenuMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void MoveItemMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// Flugente: disease menu
|
|
void CreateDestroyMouseRegionForDiseaseMenu( void );
|
|
void DiseaseMenuMvtCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void DiseaseMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// Flugente: spy menu
|
|
void CreateDestroyMouseRegionForSpyMenu( void );
|
|
void SpyMenuMvtCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void SpyMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// Flugente: militia menu
|
|
void CreateDestroyMouseRegionForMilitiaMenu( void );
|
|
void MilitiaMenuMvtCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void MilitiaMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// HEADROCK HAM 3.6: Facility Menu
|
|
void CreateDestroyMouseRegionForFacilityMenu( void );
|
|
void FacilityMenuMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void FacilityMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// HEADROCK HAM 3.6: Facility sub-menu
|
|
void CreateDestroyMouseRegionsForFacilityAssignmentMenu( void );
|
|
void FacilityAssignmentMenuMvtCallBack( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void FacilityAssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// anv: snitch menus
|
|
void CreateDestroyMouseRegionsForSnitchMenu( void );
|
|
void SnitchMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void SnitchMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void CreateDestroyMouseRegionsForSnitchToggleMenu( void );
|
|
void SnitchToggleMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void SnitchToggleMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void CreateDestroyMouseRegionsForSnitchSectorMenu( void );
|
|
void SnitchSectorMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void SnitchSectorMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// Flugente: prisoner menu
|
|
void CreateDestroyMouseRegionsForPrisonerMenu();
|
|
void PrisonerMenuMvtCallBack( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void PrisonerMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
// contract menu
|
|
void CreateDestroyMouseRegionsForContractMenu( void );
|
|
void ContractMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void ContractMenuMvtCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void RebuildContractBoxForMerc( SOLDIERTYPE *pCharacter );
|
|
|
|
// remove merc from team menu callback
|
|
void RemoveMercMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void RemoveMercMenuMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void CreateDestroyMouseRegionsForRemoveMenu( void );
|
|
|
|
// misc assignment GUI functions
|
|
void HandleShadingOfLinesForAssignmentMenus( void );
|
|
BOOLEAN IsCharacterAliveAndConscious( SOLDIERTYPE *pCharacter );
|
|
void CreateDestroyScreenMaskForAssignmentAndContractMenus( void );
|
|
|
|
|
|
BOOLEAN CreateDestroyAssignmentPopUpBoxes( void );
|
|
void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam1, INT32 iParam2, INT32 iParam3 );
|
|
|
|
// set merc asleep and awake under the new sleep system implemented June 29, 1998
|
|
// if give warning is false, the function can be used as an internal function
|
|
BOOLEAN SetMercAwake( SOLDIERTYPE *pSoldier, BOOLEAN fGiveWarning, BOOLEAN fForceHim );
|
|
BOOLEAN SetMercAsleep( SOLDIERTYPE *pSoldier, BOOLEAN fGiveWarning );
|
|
BOOLEAN PutMercInAsleepState( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN PutMercInAwakeState( SOLDIERTYPE *pSoldier );
|
|
|
|
BOOLEAN AssignMercToAMovementGroup( SOLDIERTYPE *pSoldier );
|
|
|
|
// set what time this merc undertook this assignment
|
|
void SetTimeOfAssignmentChangeForMerc( SOLDIERTYPE *pSoldier );
|
|
|
|
// enough time on assignment for it to count?
|
|
BOOLEAN EnoughTimeOnAssignment( SOLDIERTYPE *pSoldier );
|
|
|
|
// check if any merc in group is too tired to keep moving
|
|
BOOLEAN AnyMercInGroupCantContinueMoving( GROUP *pGroup );
|
|
|
|
// handle selected group of mercs being put to sleep
|
|
BOOLEAN HandleSelectedMercsBeingPutAsleep( BOOLEAN fWakeUp, BOOLEAN fDisplayWarning );
|
|
|
|
// is any one on the team on this assignment?
|
|
BOOLEAN IsAnyOneOnPlayersTeamOnThisAssignment( INT8 bAssignment );
|
|
|
|
// rebuild assignments box
|
|
void RebuildAssignmentsBox( void );
|
|
|
|
void BandageBleedingDyingPatientsBeingTreated( );
|
|
|
|
void ReEvaluateEveryonesNothingToDo(BOOLEAN aDoExtensiveCheck = FALSE);
|
|
|
|
// set assignment for list of characters
|
|
void SetAssignmentForList( INT8 bAssignment, INT8 bParam );
|
|
|
|
// is this area maxed out on militia?
|
|
BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier, INT8 iMilitiaType );
|
|
|
|
// function where we actually set someone's assignment so we can trap certain situations
|
|
void ChangeSoldiersAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment );
|
|
|
|
void UnEscortEPC( SOLDIERTYPE *pSoldier );
|
|
|
|
SOLDIERTYPE *AnyDoctorWhoCanHealThisPatient( SOLDIERTYPE *pPatient, BOOLEAN fThisHour );
|
|
|
|
// HEADROCK HAM B2.8: A set of functions to synchronize sleeping periods of trainers and trainees
|
|
BOOLEAN SetTrainerSleepWhenTraineesSleep( SOLDIERTYPE *pTrainee);
|
|
BOOLEAN SetTraineesSleepWhenTrainerSleeps( SOLDIERTYPE *pTrainer );
|
|
BOOLEAN SetTrainerWakeWhenTraineesWake( SOLDIERTYPE *pTrainee );
|
|
BOOLEAN SetTraineesWakeWhenTrainerWakes( SOLDIERTYPE *pTrainer );
|
|
void HandleTrainingSleepSynchronize( SOLDIERTYPE *pSoldier );
|
|
void HandleTrainingWakeSynchronize( SOLDIERTYPE *pSoldier );
|
|
BOOLEAN FindAnyAwakeTrainers( SOLDIERTYPE *pTrainee );
|
|
BOOLEAN FindAnyAwakeTrainees( SOLDIERTYPE *pTrainer );
|
|
|
|
// HEADROCK HAM 3.6: Functions for testing and reporting reasons why character can't train here.
|
|
BOOLEAN CanCharacterTrainMilitiaWithErrorReport( SOLDIERTYPE *pSoldier );
|
|
// HEADROCK HAM 3.6: Function for testing and reporting reasons why character can't staff a facility.
|
|
BOOLEAN CanCharacterFacilityWithErrorReport( SOLDIERTYPE *pSoldier, UINT8 ubFacilityType, UINT8 ubAssignmentType );
|
|
void HandleInterfaceMessageForCostOfOperatingFacility( SOLDIERTYPE *pSoldier, UINT8 ubAssignmentType );
|
|
void PayFacilityCostsYesNoBoxCallback( UINT8 bExitValue );
|
|
void FacilityStaffingRejected( void );
|
|
void ResetAllExpensiveFacilityAssignments();
|
|
BOOLEAN IsOutstandingFacilityDebtWithErrorReport();
|
|
extern INT8 gubFacilityInSubmenu;
|
|
extern UINT8 gubFacilityLineForSubmenu;
|
|
extern SOLDIERTYPE *gpFacilityStaffer;
|
|
|
|
// SANDRO - function to award record points for militia training
|
|
void RecordNumMilitiaTrainedForMercs( INT16 sX, INT16 sY, INT8 sZ, UINT8 ubMilitiaTrained );
|
|
|
|
// anv: decrease town loyalty hits
|
|
UINT32 HandlePropagandaBlockingBadNewsInTown( INT8 bTownId, UINT32 uiLoyaltyDecrease );
|
|
|
|
void HandleGatheringInformationBySoldier( SOLDIERTYPE* pSoldier );
|
|
|
|
BOOLEAN MercStaffsMilitaryHQ();
|
|
|
|
BOOLEAN MakeSureMedKitIsInHand( SOLDIERTYPE *pSoldier, bool bAllow1stAidKit = false);
|
|
|
|
UINT8 CalcSoldierNeedForSleep( SOLDIERTYPE *pSoldier );
|
|
|
|
// Flugente: administration assignment
|
|
FLOAT GetAdministrationPercentage( INT16 sX, INT16 sY );
|
|
|
|
#endif |