Points.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. #ifndef __POINTS_H_
  2. #define __POINTS_H_
  3. #define AP_MINIMUM 10 // no merc can have less for his turn
  4. #define AP_MAXIMUM 25 // no merc can have more for his turn
  5. #define AP_MONSTER_MAXIMUM 40 // no monster can have more for his turn
  6. #define AP_VEHICLE_MAXIMUM 50 // no merc can have more for his turn
  7. #define AP_INCREASE 10 // optional across-the-board AP boost
  8. #define MAX_AP_CARRIED 5 // APs carried from turn-to-turn
  9. // monster AP bonuses, expressed in 10ths (12 = 120% normal)
  10. #define AP_YOUNG_MONST_FACTOR 15
  11. #define AP_ADULT_MONST_FACTOR 12
  12. #define AP_MONST_FRENZY_FACTOR 13
  13. // AP penalty for a phobia situation (again, in 10ths)
  14. #define AP_CLAUSTROPHOBE 9
  15. #define AP_AFRAID_OF_INSECTS 8
  16. #define AP_EXCHANGE_PLACES 5
  17. // Action Point values
  18. #define AP_REVERSE_MODIFIER 1
  19. #define AP_STEALTH_MODIFIER 2
  20. #define AP_STEAL_ITEM 10 // APs to steal item....
  21. #define AP_TAKE_BLOOD 10
  22. #define AP_TALK 6
  23. #define AP_MOVEMENT_FLAT 3 // div by 2 for run, +2, for crawl, -1 for swat
  24. #define AP_MOVEMENT_GRASS 4
  25. #define AP_MOVEMENT_BUSH 5
  26. #define AP_MOVEMENT_RUBBLE 6
  27. #define AP_MOVEMENT_SHORE 7 // shallow wade
  28. #define AP_MOVEMENT_LAKE 9 // deep wade -> slowest
  29. #define AP_MOVEMENT_OCEAN 8 // swimming is faster than deep wade
  30. #define AP_CHANGE_FACING 1 // turning to face any other direction
  31. #define AP_CHANGE_TARGET 1 // aiming at a new target
  32. #define AP_CATCH_ITEM 5 // turn to catch item
  33. #define AP_TOSS_ITEM 8 // toss item from inv
  34. #define AP_REFUEL_VEHICLE 10
  35. /*
  36. #define AP_MOVE_ITEM_FREE 0 // same place, pocket->pocket
  37. #define AP_MOVE_ITEM_FAST 2 // hand, holster, ground only
  38. #define AP_MOVE_ITEM_AVG 4 // everything else!
  39. #define AP_MOVE_ITEM_SLOW 6 // vests, protective gear
  40. */
  41. #define AP_MOVE_ITEM_FAST 4 // hand, holster, ground only
  42. #define AP_MOVE_ITEM_SLOW 6 // vests, protective gear
  43. #define AP_RADIO 5
  44. #define AP_CROUCH 2
  45. #define AP_PRONE 2
  46. #define AP_LOOK_STANDING 1
  47. #define AP_LOOK_CROUCHED 2
  48. #define AP_LOOK_PRONE 2
  49. #define AP_READY_KNIFE 0
  50. #define AP_READY_PISTOL 1
  51. #define AP_READY_RIFLE 2
  52. #define AP_READY_SAW 0
  53. // JA2Gold: reduced dual AP cost from 3 to 1
  54. //#define AP_READY_DUAL 3
  55. #define AP_READY_DUAL 1
  56. #define AP_MIN_AIM_ATTACK 0 // minimum permitted extra aiming
  57. #define AP_MAX_AIM_ATTACK 4 // maximum permitted extra aiming
  58. #define AP_BURST 5
  59. #define AP_DROP_BOMB 3
  60. #define AP_RELOAD_GUN 5 // loading new clip/magazine
  61. #define AP_START_FIRST_AID 5 // get the stuff out of medic kit
  62. #define AP_PER_HP_FIRST_AID 1 // for each point healed
  63. #define AP_STOP_FIRST_AID 3 // put everything away again
  64. #define AP_START_REPAIR 5 // get the stuff out of repair kit
  65. #define AP_GET_HIT 2 // struck by bullet, knife, explosion
  66. #define AP_GET_WOUNDED_DIVISOR 4 // 1 AP lost for every 'divisor' dmg
  67. #define AP_FALL_DOWN 4 // falling down (explosion, exhaustion)
  68. #define AP_GET_THROWN 2 // get thrown back (by explosion)
  69. #define AP_GET_UP 5 // getting up again
  70. #define AP_ROLL_OVER 2 // flipping from back to stomach
  71. #define AP_OPEN_DOOR 3 // whether successful, or not (locked)
  72. #define AP_PICKLOCK 10 // should really be several turns
  73. #define AP_EXAMINE_DOOR 5 // time to examine door
  74. #define AP_BOOT_DOOR 8 // time to boot door
  75. #define AP_USE_CROWBAR 10 // time to crowbar door
  76. #define AP_UNLOCK_DOOR 6 // time to unlock door
  77. #define AP_LOCK_DOOR 6 // time to lock door
  78. #define AP_EXPLODE_DOOR 10 // time to set explode charge on door
  79. #define AP_UNTRAP_DOOR 10 // time to untrap door
  80. #define AP_USEWIRECUTTERS 10 // Time to use wirecutters
  81. #define AP_CLIMBROOF 10 // APs to climb roof
  82. #define AP_CLIMBOFFROOF 6 // APs to climb off roof
  83. #define AP_JUMPFENCE 6 // time to jump over a fence
  84. #define AP_OPEN_SAFE 8 // time to use combination
  85. #define AP_USE_REMOTE 2
  86. #define AP_PULL_TRIGGER 2 // operate nearby panic trigger
  87. #define AP_FORCE_LID_OPEN 10
  88. #define AP_SEARCH_CONTAINER 5 // boxes, crates, safe, etc.
  89. #define AP_READ_NOTE 10 // reading a note's contents in inv.
  90. #define AP_SNAKE_BATTLE 10 // when first attacked
  91. #define AP_KILL_SNAKE 7 // when snake battle's been won
  92. #define AP_USE_SURV_CAM 5
  93. #define AP_PICKUP_ITEM 3
  94. #define AP_GIVE_ITEM 1
  95. #define AP_BURY_MINE 10
  96. #define AP_DISARM_MINE 10
  97. #define AP_DRINK 5
  98. #define AP_CAMOFLAGE 10
  99. #define AP_TAKE_PHOTOGRAPH 5
  100. #define AP_MERGE 8
  101. #define AP_OTHER_COST 99
  102. #define AP_START_RUN_COST 1
  103. #define AP_ATTACH_CAN 5
  104. #define AP_JUMP_OVER 6
  105. // special Breath Point related constants
  106. #define BP_RATIO_RED_PTS_TO_NORMAL 100
  107. #define BP_RUN_ENERGYCOSTFACTOR 3 // Richard thinks running is 3rd most strenous over time... tough, Mark didn't. CJC increased it again
  108. #define BP_WALK_ENERGYCOSTFACTOR 1 // walking subtracts flat terrain breath value
  109. #define BP_SWAT_ENERGYCOSTFACTOR 2 // Richard thinks swatmove is 2nd most strenous over time... tough, Mark didn't
  110. #define BP_CRAWL_ENERGYCOSTFACTOR 4 // Richard thinks crawling is the MOST strenuous over time
  111. #define BP_RADIO 0 // no breath cost
  112. #define BP_USE_DETONATOR 0 // no breath cost
  113. #define BP_REVERSE_MODIFIER 0 // no change, a bit more challenging
  114. #define BP_STEALTH_MODIFIER -20 // slow & cautious, not too strenuous
  115. #define BP_MINING_MODIFIER -30 // pretty relaxing, overall
  116. // end-of-turn Breath Point gain/usage rates
  117. #define BP_PER_AP_NO_EFFORT -200 // gain breath!
  118. #define BP_PER_AP_MIN_EFFORT -100 // gain breath!
  119. #define BP_PER_AP_LT_EFFORT -50 // gain breath!
  120. #define BP_PER_AP_MOD_EFFORT 25
  121. #define BP_PER_AP_HVY_EFFORT 50
  122. #define BP_PER_AP_MAX_EFFORT 100
  123. // Breath Point values
  124. #define BP_MOVEMENT_FLAT 5
  125. #define BP_MOVEMENT_GRASS 10
  126. #define BP_MOVEMENT_BUSH 20
  127. #define BP_MOVEMENT_RUBBLE 35
  128. #define BP_MOVEMENT_SHORE 50 // shallow wade
  129. #define BP_MOVEMENT_LAKE 75 // deep wade
  130. #define BP_MOVEMENT_OCEAN 100 // swimming
  131. #define BP_CHANGE_FACING 10 // turning to face another direction
  132. #define BP_CROUCH 10
  133. #define BP_PRONE 10
  134. #define BP_CLIMBROOF 500 // BPs to climb roof
  135. #define BP_CLIMBOFFROOF 250 // BPs to climb off roof
  136. #define BP_JUMPFENCE 200 // BPs to jump fence
  137. /*
  138. #define BP_MOVE_ITEM_FREE 0 // same place, pocket->pocket
  139. #define BP_MOVE_ITEM_FAST 0 // hand, holster, ground only
  140. #define BP_MOVE_ITEM_AVG 0 // everything else!
  141. #define BP_MOVE_ITEM_SLOW 20 // vests, protective gear
  142. */
  143. #define BP_MOVE_ITEM_FAST 0 // hand, holster, ground only
  144. #define BP_MOVE_ITEM_SLOW 20 // vests, protective gear
  145. #define BP_READY_KNIFE 0 // raise/lower knife
  146. #define BP_READY_PISTOL 10 // raise/lower pistol
  147. #define BP_READY_RIFLE 20 // raise/lower rifle
  148. #define BP_READY_SAW 0 // raise/lower saw
  149. #define BP_STEAL_ITEM 50 // BPs steal item
  150. #define BP_PER_AP_AIMING 5 // breath cost while aiming
  151. #define BP_RELOAD_GUN 20 // loading new clip/magazine
  152. #define BP_THROW_ITEM 50 // throw grenades, fire-bombs, etc.
  153. #define BP_START_FIRST_AID 0 // get the stuff out of medic kit
  154. #define BP_PER_HP_FIRST_AID -25 // gain breath for each point healed
  155. #define BP_STOP_FIRST_AID 0 // put everything away again
  156. #define BP_GET_HIT 200 // struck by bullet, knife, explosion
  157. #define BP_GET_WOUNDED 50 // per pt of GUNFIRE/EXPLOSION impact
  158. #define BP_FALL_DOWN 250 // falling down (explosion, exhaustion)
  159. #define BP_GET_UP 50 // getting up again
  160. #define BP_ROLL_OVER 20 // flipping from back to stomach
  161. #define BP_OPEN_DOOR 30 // whether successful, or not (locked)
  162. #define BP_PICKLOCK -250 // gain breath, not very tiring...
  163. #define BP_EXAMINE_DOOR -250 // gain breath, not very tiring...
  164. #define BP_BOOT_DOOR 200 // BP to boot door
  165. #define BP_USE_CROWBAR 350 // BP to crowbar door
  166. #define BP_UNLOCK_DOOR 50 // BP to unlock door
  167. #define BP_EXPLODE_DOOR -250 // BP to set explode charge on door
  168. #define BP_UNTRAP_DOOR 150 // BP to untrap
  169. #define BP_LOCK_DOOR 50 // BP to untrap
  170. #define BP_USEWIRECUTTERS 200 // BP to use wirecutters
  171. #define BP_PULL_TRIGGER 0 // for operating panic triggers
  172. #define BP_FORCE_LID_OPEN 50 // per point of strength required
  173. #define BP_SEARCH_CONTAINER 0 // get some breath back (was -50)
  174. #define BP_OPEN_SAFE -50
  175. #define BP_READ_NOTE -250 // reading a note's contents in inv.
  176. #define BP_SNAKE_BATTLE 500 // when first attacked
  177. #define BP_KILL_SNAKE 350 // when snake battle's been won
  178. #define BP_USE_SURV_CAM -100
  179. #define BP_BURY_MINE 250 // involves digging & filling again
  180. #define BP_DISARM_MINE 0 // 1/2 digging, 1/2 light effort
  181. #define BP_FIRE_HANDGUN 25 // preatty easy, little recoil
  182. #define BP_FIRE_RIFLE 50 // heavier, nasty recoil
  183. #define BP_FIRE_SHOTGUN 100 // quite tiring, must be pumped up
  184. #define BP_STAB_KNIFE 200
  185. #define BP_TAKE_PHOTOGRAPH 0
  186. #define BP_MERGE 50
  187. #define BP_FALLFROMROOF 1000
  188. #define BP_JUMP_OVER 250
  189. #define DEFAULT_APS 20
  190. #define DEFAULT_AIMSKILL 80
  191. UINT8 BaseAPsToShootOrStab( INT8 bAPs, INT8 bAimSkill, OBJECTTYPE * pObj );
  192. INT16 TerrainActionPoints( SOLDIERTYPE *pSoldier, INT16 sGridno, INT8 bDir, INT8 bLevel );
  193. INT16 ActionPointCost( SOLDIERTYPE *pSoldier, INT16 sGridNo, INT8 bDir, UINT16 usMovementMode );
  194. INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT16 sGridNo, INT8 bDir, UINT16 usMovementMode, INT8 bPathIndex, INT8 bPathLength );
  195. BOOLEAN SelectedMercCanAffordMove( );
  196. BOOLEAN EnoughPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT16 sBPCost, BOOLEAN fDisplayMsg );
  197. void DeductPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT16 sBPCost );
  198. INT16 AdjustBreathPts(SOLDIERTYPE *pSold, INT16 sBPCost);
  199. void UnusedAPsToBreath(SOLDIERTYPE *pSold);
  200. INT16 TerrainBreathPoints(SOLDIERTYPE * pSoldier, INT16 sGridno,INT8 bDir, UINT16 usMovementMode);
  201. UINT8 MinAPsToAttack(SOLDIERTYPE *pSoldier, INT16 sGridno, UINT8 ubAddTurningCost);
  202. INT8 MinPtsToMove(SOLDIERTYPE *pSoldier);
  203. INT8 MinAPsToStartMovement( SOLDIERTYPE * pSoldier, UINT16 usMovementMode );
  204. INT8 PtsToMoveDirection(SOLDIERTYPE *pSoldier, INT8 bDirection );
  205. UINT8 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT16 sGridno, UINT8 ubAddTurningCost );
  206. BOOLEAN EnoughAmmo( SOLDIERTYPE *pSoldier, BOOLEAN fDisplay, INT8 bInvPos );
  207. void DeductAmmo( SOLDIERTYPE *pSoldier, INT8 bInvPos );
  208. UINT16 GetAPsToPickupItem( SOLDIERTYPE *pSoldier, UINT16 usMapPos );
  209. UINT8 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT16 sGridno, UINT8 ubAddTurningCost );
  210. UINT8 CalcTotalAPsToAttack( SOLDIERTYPE *pSoldier, INT16 sGridno, UINT8 ubAddTurningCost, INT8 bAimTime );
  211. UINT8 CalcAPsToBurst( INT8 bBaseActionPoints, OBJECTTYPE * pObj );
  212. UINT16 GetAPsToChangeStance( SOLDIERTYPE *pSoldier, INT8 bDesiredHeight );
  213. UINT16 GetBPsToChangeStance( SOLDIERTYPE *pSoldier, INT8 bDesiredHeight );
  214. UINT16 GetAPsToLook( SOLDIERTYPE *pSoldier );
  215. UINT16 GetAPsToGiveItem( SOLDIERTYPE *pSoldier, UINT16 usMapPos );
  216. BOOLEAN CheckForMercContMove( SOLDIERTYPE *pSoldier );
  217. INT16 GetAPsToReadyWeapon( SOLDIERTYPE *pSoldier, UINT16 usAnimState );
  218. INT8 GetAPsToClimbRoof( SOLDIERTYPE *pSoldier, BOOLEAN fClimbDown );
  219. INT16 GetBPsToClimbRoof( SOLDIERTYPE *pSoldier, BOOLEAN fClimbDown );
  220. INT8 GetAPsToJumpFence( SOLDIERTYPE *pSoldier );
  221. INT8 GetBPsToJumpFence( SOLDIERTYPE *pSoldier );
  222. INT8 GetAPsToCutFence( SOLDIERTYPE *pSoldier );
  223. INT8 GetAPsToBeginFirstAid( SOLDIERTYPE *pSoldier );
  224. INT8 GetAPsToBeginRepair( SOLDIERTYPE *pSoldier );
  225. INT8 GetAPsToRefuelVehicle( SOLDIERTYPE *pSoldier );
  226. INT16 MinAPsToThrow( SOLDIERTYPE *pSoldier, INT16 sGridNo, UINT8 ubAddTurningCost );
  227. UINT16 GetAPsToDropBomb( SOLDIERTYPE *pSoldier );
  228. UINT16 GetTotalAPsToDropBomb( SOLDIERTYPE *pSoldier, INT16 sGridNo );
  229. UINT16 GetAPsToUseRemote( SOLDIERTYPE *pSoldier );
  230. INT8 GetAPsToStealItem( SOLDIERTYPE *pSoldier, INT16 usMapPos );
  231. INT8 GetBPsToStealItem( SOLDIERTYPE *pSoldier );
  232. INT8 GetAPsToUseJar( SOLDIERTYPE *pSoldier, INT16 usMapPos );
  233. INT8 GetAPsToUseCan( SOLDIERTYPE *pSoldier, INT16 usMapPos );
  234. INT8 GetBPsTouseJar( SOLDIERTYPE *pSoldier );
  235. INT8 GetAPsToJumpOver( SOLDIERTYPE *pSoldier );
  236. void GetAPChargeForShootOrStabWRTGunRaises( SOLDIERTYPE *pSoldier, INT16 sGridNo, UINT8 ubAddTurningCost, BOOLEAN *pfChargeTurning, BOOLEAN *pfChargeRaise );
  237. UINT16 GetAPsToReloadRobot( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pRobot );
  238. INT8 GetAPsToReloadGunWithAmmo( OBJECTTYPE * pGun, OBJECTTYPE * pAmmo );
  239. INT8 GetAPsToAutoReload( SOLDIERTYPE * pSoldier );
  240. #endif