1. //==================================================================================================
  2. // Protoss Melee Very Easy
  3. //==================================================================================================
  4. static void LateGround (int player);
  5. //--------------------------------------------------------------------------------------------------
  6. // ProtossOpenGnd0
  7. //--------------------------------------------------------------------------------------------------
  8. void ProtossOpenGnd0 (int player) {
  9. AIClearStock(player);
  10. AISetStock( player, 1, c_PB_Nexus );
  11. AISetStock( player, 8, c_PU_Probe );
  12. AISetStock( player, 1, c_PB_Pylon );
  13. // around 100 resources in about 2 units
  14. AISetStock( player, 1, c_PU_Zealot );
  15. ProtossTechUp(player, 1);
  16. if (AIEnableVeryEasyStockOpen(player, c_PU_Probe)) {
  17. return;
  18. }
  19. // around 300 resources in about 3 unit
  20. AIAddStringInt(player, c_PU_Stalker, 1);
  21. AIAddStringInt(player, AIPickFrom2(c_PU_Zealot, c_PU_Disruptor), 1);
  22. }
  23. //--------------------------------------------------------------------------------------------------
  24. // ProtossMidGndA
  25. //--------------------------------------------------------------------------------------------------
  26. static void ProtossMidGndA (int player) {
  27. AIClearStock(player);
  28. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  29. if (AISawCloakedUnit(player)) {
  30. AISetStock( player, 2, c_PB_PhotonCannon );
  31. AISetStock( player, 1, c_PU_Observer );
  32. }
  33. AISetStockUserData(player);
  34. ProtossTechUp(player, 2);
  35. if (AIEnableVeryEasyStockMidA(player, c_PU_Probe, 4)) {
  36. return;
  37. }
  38. // around 600 resources in about 4 unit
  39. AIAddStringInt(player, c_PU_Stalker, 1);
  40. AIAddStringInt(player, AIPickFrom2(c_PU_Zealot, c_PU_Disruptor), 1);
  41. }
  42. //--------------------------------------------------------------------------------------------------
  43. // ProtossMidGndB
  44. //--------------------------------------------------------------------------------------------------
  45. static void ProtossMidGndB (int player) {
  46. AIClearStock(player);
  47. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  48. if (AISawCloakedUnit(player)) {
  49. AISetStock( player, 2, c_PB_PhotonCannon );
  50. AISetStock( player, 1, c_PU_Observer );
  51. }
  52. AISetStockUserData(player);
  53. ProtossTechUp(player, 3);
  54. if (AIEnableVeryEasyStockMidB(player, c_PU_Probe, 4)) {
  55. return;
  56. }
  57. // around 900 resources in about 5 unit
  58. LateGround(player);
  59. }
  60. //--------------------------------------------------------------------------------------------------
  61. // LateGround
  62. //--------------------------------------------------------------------------------------------------
  63. static void LateGround (int player) {
  64. AIAddStringInt(player, c_PU_Stalker, 1);
  65. AIAddStringInt(player, c_PU_Disruptor, 1);
  66. AIAddStringInt(player, AIPickFrom2(c_PU_Zealot, c_PU_Stalker), 1);
  67. AIAddStringInt(player, AIPickFrom2(c_PU_Zealot, c_PU_Disruptor), 1);
  68. }
  69. //--------------------------------------------------------------------------------------------------
  70. // LateGnd
  71. //--------------------------------------------------------------------------------------------------
  72. static void LateGnd (int player) {
  73. AIClearStock(player);
  74. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  75. AIDefaultExpansion(player, c_PB_Nexus, 6000, 0, c_expandDefault);
  76. AISetStockUserData(player);
  77. AISetStock( player, 4, c_PU_Observer );
  78. AISetStock( player, 1, c_PU_WarpPrism );
  79. ProtossTechUp(player, 4);
  80. AISetStock( player, 4, c_PU_Observer );
  81. if (AIEnableVeryEasyStockLate(player, c_TU_SCV, 4)) {
  82. return;
  83. }
  84. LateGround(player);
  85. }
  86. //--------------------------------------------------------------------------------------------------
  87. // ProtossOpenAir0
  88. //--------------------------------------------------------------------------------------------------
  89. void ProtossOpenAir0 (int player) {
  90. AIClearStock(player);
  91. AISetStock( player, 1, c_PB_Nexus );
  92. AISetStock( player, 8, c_PU_Probe );
  93. AISetStock( player, 1, c_PB_Pylon );
  94. AISetStock( player, 1, c_PB_Assimilator );
  95. AISetStock( player, 1, c_PB_Gateway );
  96. AISetStock( player, 1, c_PB_CyberneticsCore );
  97. AISetStock( player, 1, c_PB_Stargate );
  98. AISetStock( player, 1, c_PU_VoidRay );
  99. AISetStock( player, 2, c_PU_Stalker );
  100. AIEnableStock(player);
  101. //stock 3
  102. //---------------------------------------------------------
  103. if (AITechCount(player, c_PU_VoidRay, c_techCountCompleteOnly) < 1) {
  104. return;
  105. }
  106. AIWaveMerge(player, c_waveMain, c_waveAttack);
  107. AISetAttackState(player, e_attackState_Attack);
  108. AISetMainState(player, e_mainState_Mid1, e_mainSubState_AirA);
  109. }
  110. //--------------------------------------------------------------------------------------------------
  111. // ProtossMidAirA
  112. //--------------------------------------------------------------------------------------------------
  113. static void ProtossMidAirA (int player) {
  114. AIClearStock(player);
  115. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  116. AISetStock( player, 2, c_PU_Stalker );
  117. AISetStock( player, 1, c_PU_VoidRay );
  118. AISetStock( player, 2, c_PB_Pylon );
  119. AISetStock( player, 1, c_PB_RoboticsFacility );
  120. AISetStock( player, 1, c_PU_Phoenix );
  121. AISetStock( player, 1, c_PU_Observer );
  122. AISetStock( player, 1, c_PU_WarpPrism );
  123. AISetStock( player, 2, c_PU_VoidRay );
  124. AISetStock( player, 1, c_PB_Forge );
  125. AIEnableStock(player);
  126. //---------------------------------------------------------
  127. if (AIGetTime() < 700) {
  128. return;
  129. }
  130. AIWaveMerge(player, c_waveMain, c_waveAttack);
  131. AISetAttackState(player, e_attackState_Attack);
  132. AISetMainState(player, e_mainState_Mid1, e_mainSubState_AirB);
  133. }
  134. //--------------------------------------------------------------------------------------------------
  135. // ProtossMidAirB
  136. //--------------------------------------------------------------------------------------------------
  137. static void ProtossMidAirB (int player) {
  138. AIClearStock(player);
  139. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  140. AIDefaultExpansion(player, c_PB_Nexus, 6000, 1000, c_expandDefault);
  141. AISetStock( player, 2, c_PU_Stalker );
  142. AISetStock( player, 1, c_PU_VoidRay );
  143. AISetStock( player, 2, c_PB_Pylon );
  144. AISetStock( player, 1, c_PU_Phoenix );
  145. AISetStock( player, 1, c_PU_Observer );
  146. AISetStock( player, 1, c_PU_WarpPrism );
  147. AISetStock( player, 3, c_PU_VoidRay );
  148. AISetStock( player, 2, c_PU_Observer );
  149. AISetStock( player, 2, c_PU_Phoenix );
  150. AISetStock( player, 3, c_PB_PhotonCannon );
  151. AIEnableStock(player);
  152. //---------------------------------------------------------
  153. if (AIGetTime() < 1200) {
  154. return;
  155. }
  156. AIWaveMerge(player, c_waveMain, c_waveAttack);
  157. AISetAttackState(player, e_attackState_Attack);
  158. AISetMainState(player, e_mainState_Late1, e_mainSubState_AirA);
  159. AISetFlag(player, e_flagsScouting, true);
  160. AISetFlag(player, e_flagsClearObs, true);
  161. }
  162. //--------------------------------------------------------------------------------------------------
  163. // LateAir
  164. //--------------------------------------------------------------------------------------------------
  165. static void LateAir (int player) {
  166. AIClearStock(player);
  167. AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 8, c_stockAlways);
  168. AIDefaultExpansion(player, c_PB_Nexus, 6000, 1000, c_expandDefault);
  169. AISetStock( player, 2, c_PU_Stalker );
  170. AISetStock( player, 1, c_PU_VoidRay );
  171. AISetStock( player, 2, c_PB_Pylon );
  172. AISetStock( player, 1, c_PU_Phoenix );
  173. AISetStock( player, 1, c_PU_Observer );
  174. AISetStock( player, 1, c_PU_WarpPrism );
  175. AISetStock( player, 3, c_PU_VoidRay );
  176. AISetStock( player, 2, c_PU_Observer );
  177. AISetStock( player, 2, c_PU_Phoenix );
  178. AISetStock( player, 1, c_PU_Carrier );
  179. AISetStock( player, 4, c_PU_Observer );
  180. AIEnableStock(player);
  181. //---------------------------------------------------------
  182. if (AIGetTime() % 300 > 5) {
  183. return;
  184. }
  185. AIWaveMerge(player, c_waveMain, c_waveAttack);
  186. AISetAttackState(player, e_attackState_Attack);
  187. AISetFlag(player, e_flagsScouting, true);
  188. AISetFlag(player, e_flagsClearObs, true);
  189. }
  190. //--------------------------------------------------------------------------------------------------
  191. // ProtossMid0
  192. //--------------------------------------------------------------------------------------------------
  193. void ProtossMid0 (int player) {
  194. int mainSubState = AIState(player, e_mainSubState);
  195. if (mainSubState == e_mainSubState_GndA) { ProtossMidGndA(player); }
  196. else if (mainSubState == e_mainSubState_GndB) { ProtossMidGndB(player); }
  197. else if (mainSubState == e_mainSubState_AirA) { ProtossMidAirA(player); }
  198. else if (mainSubState == e_mainSubState_AirB) { ProtossMidAirB(player); }
  199. else { ErrorMeleeScript(player, "Invalid Mid mainSubState"); }
  200. }
  201. //--------------------------------------------------------------------------------------------------
  202. // ProtossLate0
  203. //--------------------------------------------------------------------------------------------------
  204. void ProtossLate0 (int player) {
  205. int mainSubState = AIState(player, e_mainSubState);
  206. if (mainSubState == e_mainSubState_GndA) { LateGnd(player); }
  207. else if (mainSubState == e_mainSubState_AirA) { LateAir(player); }
  208. else { ErrorMeleeScript(player, "Invalid Late mainSubState"); }
  209. }

goto:
Vergleichen mit :

Neuen Code Posten


Text-Kopier-Fenster