CvTacticalAI::EstablishBarbarianPriorities()
- Defined in
- CvTacticalAI.cpp, line 1206
- Class
- CvTacticalAI
- Hook name
CivHooks::CvTacticalAI_EstablishBarbarianPriorities
Hooks
static bool BeforeCvTacticalAI_EstablishBarbarianPriorities(CvTacticalAI* self);static void AfterCvTacticalAI_EstablishBarbarianPriorities(CvTacticalAI* self);static void ReplaceCvTacticalAI_EstablishBarbarianPriorities(void (*original)(CvTacticalAI*), CvTacticalAI* self);CivRegisterBefore<CivHooks::CvTacticalAI_EstablishBarbarianPriorities>(host, &BeforeCvTacticalAI_EstablishBarbarianPriorities);CivRegisterAfter<CivHooks::CvTacticalAI_EstablishBarbarianPriorities>(host, &AfterCvTacticalAI_EstablishBarbarianPriorities);CivRegisterReplace<CivHooks::CvTacticalAI_EstablishBarbarianPriorities>(host, &ReplaceCvTacticalAI_EstablishBarbarianPriorities);
Code
1205/// Choose which tactics the barbarians should emphasize this turn1206void CvTacticalAI::EstablishBarbarianPriorities()1207{1208 int iPriority = 0;12091210 // Only establish priorities once per turn1211 if(GC.getGame().getGameTurn() <= m_MovePriorityTurn)1212 {1213 return;1214 }12151216 m_MovePriorityList.clear();1217 m_MovePriorityTurn = GC.getGame().getGameTurn();12181219 // Loop through each possible tactical move (other than "none" or "unassigned")1220 for(int iI = 0; iI < NUM_AI_BARBARIAN_MOVES; iI++)1221 {1222 // Set base value1223 switch((AIBarbarianTacticalMove)iI)1224 {1225 case AI_TACTICAL_BARBARIAN_CAPTURE_CITY:1226 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_CAPTURE_CITY();1227 break;1228 case AI_TACTICAL_BARBARIAN_DAMAGE_CITY:1229 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_DAMAGE_CITY();1230 break;1231 case AI_TACTICAL_BARBARIAN_DESTROY_HIGH_PRIORITY_UNIT:1232 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_HIGH_UNIT();1233 break;1234 case AI_TACTICAL_BARBARIAN_DESTROY_MEDIUM_PRIORITY_UNIT:1235 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_MEDIUM_UNIT();1236 break;1237 case AI_TACTICAL_BARBARIAN_DESTROY_LOW_PRIORITY_UNIT:1238 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_LOW_UNIT();1239 break;1240 case AI_TACTICAL_BARBARIAN_MOVE_TO_SAFETY:1241 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_TO_SAFETY();1242 break;1243 case AI_TACTICAL_BARBARIAN_ATTRIT_HIGH_PRIORITY_UNIT:1244 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_HIGH_UNIT();1245 break;1246 case AI_TACTICAL_BARBARIAN_ATTRIT_MEDIUM_PRIORITY_UNIT:1247 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_MEDIUM_UNIT();1248 break;1249 case AI_TACTICAL_BARBARIAN_ATTRIT_LOW_PRIORITY_UNIT:1250 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_LOW_UNIT();1251 break;1252 case AI_TACTICAL_BARBARIAN_PILLAGE:1253 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE();1254 break;1255 case AI_TACTICAL_BARBARIAN_PILLAGE_CITADEL:1256 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE_CITADEL();1257 break;1258 case AI_TACTICAL_BARBARIAN_PILLAGE_NEXT_TURN:1259 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE_NEXT_TURN();1260 break;1261 case AI_TACTICAL_BARBARIAN_PRIORITY_BLOCKADE_RESOURCE:1262 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_BLOCKADE_RESOURCE();1263 break;1264 case AI_TACTICAL_BARBARIAN_CIVILIAN_ATTACK:1265 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_CIVILIAN_ATTACK();1266 break;1267 case AI_TACTICAL_BARBARIAN_AGGRESSIVE_MOVE:1268 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_AGGRESSIVE_MOVE();1269 break;1270 case AI_TACTICAL_BARBARIAN_PASSIVE_MOVE:1271 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_PASSIVE_MOVE();1272 break;1273 case AI_TACTICAL_BARBARIAN_CAMP_DEFENSE:1274 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_CAMP_DEFENSE();1275 break;1276 case AI_TACTICAL_BARBARIAN_DESPERATE_ATTACK:1277 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_DESPERATE_ATTACK();1278 break;1279 case AI_TACTICAL_BARBARIAN_ESCORT_CIVILIAN:1280 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_ESCORT_CIVILIAN();1281 break;1282 case AI_TACTICAL_BARBARIAN_PLUNDER_TRADE_UNIT:1283 iPriority = GC.getAI_TACTICAL_BARBARIAN_PRIORITY_PLUNDER_TRADE_UNIT();1284 break;1285 }12861287 // Make sure base priority is not negative1288 if(iPriority >= 0)1289 {1290 // Finally, add a random die roll to each priority1291 iPriority += GC.getGame().getJonRandNum(GC.getAI_TACTICAL_MOVE_PRIORITY_RANDOMNESS(), "Tactical AI Move Priority");12921293 // Store off this move and priority1294 CvTacticalMove move;1295 move.m_eMoveType = (TacticalAIMoveTypes)iI;1296 move.m_iPriority = iPriority;1297 m_MovePriorityList.push_back(move);1298 }1299 }13001301 // Now sort the moves in priority order1302 std::stable_sort(m_MovePriorityList.begin(), m_MovePriorityList.end());1303}
Calls
BaseVector::beginBaseVector::clearBaseVector::end- CvGame::getGameTurn()
- CvGame::getJonRandNum(int, const char *)
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_AGGRESSIVE_MOVE()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_HIGH_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_LOW_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_ATTRIT_MEDIUM_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_BLOCKADE_RESOURCE()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_CAMP_DEFENSE()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_CAPTURE_CITY()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_CIVILIAN_ATTACK()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_DAMAGE_CITY()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_DESPERATE_ATTACK()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_HIGH_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_LOW_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_DESTROY_MEDIUM_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_ESCORT_CIVILIAN()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_PASSIVE_MOVE()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE_CITADEL()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_PILLAGE_NEXT_TURN()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_PLUNDER_TRADE_UNIT()
- CvGlobals::getAI_TACTICAL_BARBARIAN_PRIORITY_TO_SAFETY()
- CvGlobals::getAI_TACTICAL_MOVE_PRIORITY_RANDOMNESS()
- CvGlobals::getGame()
- CvTacticalMove::CvTacticalMove()
FStaticVector::push_backstd::stable_sort