Bazaar developer reference

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

Called by