opplist.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #ifndef _OPPLIST_H
  2. #define _OPPLIST_H
  3. #define EVERYBODY MAXMERCS
  4. #define MAX_MISC_NOISE_DURATION 12 // max dur for VERY loud NOBODY noises
  5. #define DOOR_NOISE_VOLUME 2
  6. #define WINDOW_CRACK_VOLUME 4
  7. #define WINDOW_SMASH_VOLUME 8
  8. #define MACHETE_VOLUME 9
  9. #define TRIMMER_VOLUME 18
  10. #define CHAINSAW_VOLUME 30
  11. #define SMASHING_DOOR_VOLUME 6
  12. #define CROWBAR_DOOR_VOLUME 4
  13. #define ITEM_THROWN_VOLUME 2
  14. #define TIME_BETWEEN_RT_OPPLIST_DECAYS 20
  15. // this is a fake "level" value (0 on ground, 1 on roof) for
  16. // HearNoise to ignore the effects of lighting(?)
  17. #define LIGHT_IRRELEVANT 127
  18. #define AUTOMATIC_INTERRUPT 100
  19. #define NO_INTERRUPT 127
  20. #define MOVEINTERRUPT 0
  21. #define SIGHTINTERRUPT 1
  22. #define NOISEINTERRUPT 2
  23. // noise type constants
  24. enum
  25. {
  26. NOISE_UNKNOWN = 0,
  27. NOISE_MOVEMENT,
  28. NOISE_CREAKING,
  29. NOISE_SPLASHING,
  30. NOISE_BULLET_IMPACT,
  31. NOISE_GUNFIRE,
  32. NOISE_EXPLOSION,
  33. NOISE_SCREAM,
  34. NOISE_ROCK_IMPACT,
  35. NOISE_GRENADE_IMPACT,
  36. NOISE_WINDOW_SMASHING,
  37. NOISE_DOOR_SMASHING,
  38. NOISE_SILENT_ALARM, // only heard by enemies
  39. MAX_NOISES
  40. };
  41. enum
  42. {
  43. EXPECTED_NOSEND, // other nodes expecting noise & have all info
  44. EXPECTED_SEND, // other nodes expecting noise, but need info
  45. UNEXPECTED // other nodes are NOT expecting this noise
  46. };
  47. #define NUM_WATCHED_LOCS 3
  48. extern INT8 gbPublicOpplist[MAXTEAMS][ TOTAL_SOLDIERS ];
  49. extern INT8 gbSeenOpponents[TOTAL_SOLDIERS][TOTAL_SOLDIERS];
  50. extern INT16 gsLastKnownOppLoc[TOTAL_SOLDIERS][TOTAL_SOLDIERS]; // merc vs. merc
  51. extern INT8 gbLastKnownOppLevel[TOTAL_SOLDIERS][TOTAL_SOLDIERS];
  52. extern INT16 gsPublicLastKnownOppLoc[MAXTEAMS][TOTAL_SOLDIERS]; // team vs. merc
  53. extern INT8 gbPublicLastKnownOppLevel[MAXTEAMS][TOTAL_SOLDIERS];
  54. extern UINT8 gubPublicNoiseVolume[MAXTEAMS];
  55. extern INT16 gsPublicNoiseGridno[MAXTEAMS];
  56. extern INT8 gbPublicNoiseLevel[MAXTEAMS];
  57. extern UINT8 gubKnowledgeValue[10][10];
  58. extern INT8 gbLookDistance[8][8];
  59. extern INT8 gfKnowAboutOpponents;
  60. extern BOOLEAN gfPlayerTeamSawJoey;
  61. extern BOOLEAN gfMikeShouldSayHi;
  62. extern INT16 gsWatchedLoc[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
  63. extern INT8 gbWatchedLocLevel[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
  64. extern UINT8 gubWatchedLocPoints[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
  65. extern BOOLEAN gfWatchedLocReset[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
  66. #define BEST_SIGHTING_ARRAY_SIZE 6
  67. #define BEST_SIGHTING_ARRAY_SIZE_ALL_TEAMS_LOOK_FOR_ALL 6
  68. #define BEST_SIGHTING_ARRAY_SIZE_NONCOMBAT 3
  69. #define BEST_SIGHTING_ARRAY_SIZE_INCOMBAT 0
  70. extern UINT8 gubBestToMakeSightingSize;
  71. INT16 AdjustMaxSightRangeForEnvEffects( SOLDIERTYPE *pSoldier, INT8 bLightLevel, INT16 sDistVisible );
  72. INT16 ManLooksForMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, UINT8 ubCaller);
  73. void HandleSight(SOLDIERTYPE *pSoldier, UINT8 ubSightFlags);
  74. void AllTeamsLookForAll(UINT8 ubAllowInterrupts);
  75. void GloballyDecideWhoSeesWho(void);
  76. UINT16 GetClosestMerc( UINT16 usSoldierIndex );
  77. void ManLooksForOtherTeams(SOLDIERTYPE *pSoldier);
  78. void OtherTeamsLookForMan(SOLDIERTYPE *pOpponent);
  79. void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT16 sOppGridno, INT8 bOppLevel, UINT8 ubCaller, UINT8 ubCaller2);
  80. void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate);
  81. void AddOneOpponent(SOLDIERTYPE *pSoldier);
  82. void RemoveOneOpponent(SOLDIERTYPE *pSoldier);
  83. void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT16 sGridno, INT8 bLevel);
  84. INT16 MaxDistanceVisible( void );
  85. INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir, INT16 sSubjectGridNo, INT8 bLevel );
  86. void ResetLastKnownLocs(SOLDIERTYPE *ptr);
  87. void RecalculateOppCntsDueToNoLongerNeutral( SOLDIERTYPE * pSoldier );
  88. void InitOpponentKnowledgeSystem(void);
  89. void InitSoldierOppList(SOLDIERTYPE *pSoldier);
  90. void BetweenTurnsVisibilityAdjustments(void);
  91. void RemoveManAsTarget(SOLDIERTYPE *pSoldier);
  92. void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT16 sGridno, INT8 bLevel );
  93. void RadioSightings(SOLDIERTYPE *pSoldier, UINT8 ubAbout, UINT8 ubTeamToRadioTo );
  94. void OurTeamRadiosRandomlyAbout(UINT8 ubAbout);
  95. void DebugSoldierPage1( );
  96. void DebugSoldierPage2( );
  97. void DebugSoldierPage3( );
  98. void DebugSoldierPage4( );
  99. UINT8 MovementNoise( SOLDIERTYPE *pSoldier );
  100. UINT8 DoorOpeningNoise( SOLDIERTYPE *pSoldier );
  101. void MakeNoise(UINT8 ubNoiseMaker, INT16 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType );
  102. void OurNoise( UINT8 ubNoiseMaker, INT16 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType );
  103. void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType);
  104. void VerifyAndDecayOpplist(SOLDIERTYPE *pSoldier);
  105. void DecayIndividualOpplist(SOLDIERTYPE *pSoldier);
  106. void VerifyPublicOpplistDueToDeath( SOLDIERTYPE * pSoldier );
  107. void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT8 bReason );
  108. BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier );
  109. INT8 GetWatchedLocPoints( UINT8 ubID, INT16 sGridNo, INT8 bLevel );
  110. INT8 GetHighestVisibleWatchedLoc( UINT8 ubID );
  111. INT8 GetHighestWatchedLocPoints( UINT8 ubID );
  112. void TurnOffEveryonesMuzzleFlashes( void );
  113. void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam );
  114. void EndMuzzleFlash( SOLDIERTYPE * pSoldier );
  115. void NonCombatDecayPublicOpplist( UINT32 uiTime );
  116. void CheckHostileOrSayQuoteList( void );
  117. void InitOpplistForDoorOpening( void );
  118. UINT8 DoorOpeningNoise( SOLDIERTYPE * pSoldier );
  119. void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID );
  120. extern INT8 gbLightSighting[1][16];
  121. #endif