Hooks
static bool BeforeCvAIOperation_CreateOperation(AIOperationTypes eAIOperationType, PlayerTypes ePlayer, CvAIOperation*& result);static void AfterCvAIOperation_CreateOperation(AIOperationTypes eAIOperationType, PlayerTypes ePlayer, CvAIOperation*& result);static CvAIOperation* ReplaceCvAIOperation_CreateOperation(CvAIOperation* (*original)(AIOperationTypes, PlayerTypes), AIOperationTypes eAIOperationType, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvAIOperation_CreateOperation>(host, &BeforeCvAIOperation_CreateOperation);CivRegisterAfter<CivHooks::CvAIOperation_CreateOperation>(host, &AfterCvAIOperation_CreateOperation);CivRegisterReplace<CivHooks::CvAIOperation_CreateOperation>(host, &ReplaceCvAIOperation_CreateOperation);
Code
273/// Factory method: you are responsible for cleaning up the operation created by this routine!274CvAIOperation* CvAIOperation::CreateOperation(AIOperationTypes eAIOperationType, PlayerTypes ePlayer)275{276 switch(eAIOperationType)277 {278 case AI_OPERATION_BASIC_CITY_ATTACK:279 return FNEW(CvAIOperationBasicCityAttack(), c_eCiv5GameplayDLL, 0);280 case AI_OPERATION_DESTROY_BARBARIAN_CAMP:281 return FNEW(CvAIOperationDestroyBarbarianCamp(), c_eCiv5GameplayDLL, 0);282 case AI_OPERATION_FOUND_CITY:283 return FNEW(CvAIOperationFoundCity(), c_eCiv5GameplayDLL, 0);284 case AI_OPERATION_MERCHANT_DELEGATION:285 return FNEW(CvAIOperationMerchantDelegation(), c_eCiv5GameplayDLL, 0);286 case AI_OPERATION_CONCERT_TOUR:287 return FNEW(CvAIOperationConcertTour(), c_eCiv5GameplayDLL, 0);288 case AI_OPERATION_NAVAL_BOMBARDMENT:289 return FNEW(CvAIOperationNavalBombardment(), c_eCiv5GameplayDLL, 0);290 case AI_OPERATION_NAVAL_SUPERIORITY:291 return FNEW(CvAIOperationNavalSuperiority(), c_eCiv5GameplayDLL, 0);292 case AI_OPERATION_PURE_NAVAL_CITY_ATTACK:293 return FNEW(CvAIOperationPureNavalCityAttack(), c_eCiv5GameplayDLL, 0);294 case AI_OPERATION_COLONIZE:295 return FNEW(CvAINavalEscortedOperation(), c_eCiv5GameplayDLL, 0);296 case AI_OPERATION_QUICK_COLONIZE:297 return FNEW(CvAIOperationQuickColonize(), c_eCiv5GameplayDLL, 0);298 case AI_OPERATION_PILLAGE_ENEMY:299 return FNEW(CvAIOperationPillageEnemy(), c_eCiv5GameplayDLL, 0);300 case AI_OPERATION_CITY_CLOSE_DEFENSE:301 return FNEW(CvAIOperationCityCloseDefense(), c_eCiv5GameplayDLL, 0);302 case AI_OPERATION_RAPID_RESPONSE:303 return FNEW(CvAIOperationRapidResponse(), c_eCiv5GameplayDLL, 0);304 case AI_OPERATION_SNEAK_CITY_ATTACK:305 {306 if(GC.getGame().getGameTurn() < 50 && GET_PLAYER(ePlayer).GetDiplomacyAI()->GetBoldness() >= 5)307 {308 return FNEW(CvAIOperationQuickSneakCityAttack(), c_eCiv5GameplayDLL, 0);309 }310 return FNEW(CvAIOperationSneakCityAttack(), c_eCiv5GameplayDLL, 0);311 }312 case AI_OPERATION_SMALL_CITY_ATTACK:313 return FNEW(CvAIOperationSmallCityAttack(), c_eCiv5GameplayDLL, 0);314 case AI_OPERATION_CITY_STATE_ATTACK:315 return FNEW(CvAIOperationCityStateAttack(), c_eCiv5GameplayDLL, 0);316 case AI_OPERATION_NAVAL_ATTACK:317 return FNEW(CvAIOperationNavalAttack(), c_eCiv5GameplayDLL, 0);318 case AI_OPERATION_NAVAL_SNEAK_ATTACK:319 return FNEW(CvAIOperationNavalSneakAttack(), c_eCiv5GameplayDLL, 0);320 case AI_OPERATION_CITY_STATE_NAVAL_ATTACK:321 return FNEW(CvAIOperationNavalCityStateAttack(), c_eCiv5GameplayDLL, 0);322 case AI_OPERATION_NUKE_ATTACK:323 return FNEW(CvAIOperationNukeAttack(), c_eCiv5GameplayDLL, 0);324 }325326 return 0;327}