Ejemplo n.º 1
0
/**
 * @brief Spread XVI at a given position.
 * @param[in] pos Position where XVI should be spread.
 */
void CP_SpreadXVIAtPos (const vec2_t pos)
{
	if (!CP_IsXVIStarted())
		return;

	CP_ChangeXVILevel(pos, XVI_FACTOR);

	xviNationInfectionNeedsUpdate = true;
}
Ejemplo n.º 2
0
/**
 * @brief Intercept mission is over and is a success: change interest values.
 * @note Intercept mission
 */
void CP_InterceptMissionIsSuccess (mission_t* mission)
{
	INT_ChangeIndividualInterest(0.3f, INTERESTCATEGORY_RECON);
	INT_ChangeIndividualInterest(-0.3f, INTERESTCATEGORY_INTERCEPT);
	INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_HARVEST);
	if (CP_IsXVIStarted())
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_XVI);

	CP_MissionRemove(mission);
}
Ejemplo n.º 3
0
/**
 * @brief Harvesting mission is over and is a success: change interest values.
 * @note Harvesting mission
 */
static void CP_HarvestMissionIsSuccess (mission_t* mission)
{
	INT_ChangeIndividualInterest(-0.3f, INTERESTCATEGORY_HARVEST);
	INT_ChangeIndividualInterest(0.2f, INTERESTCATEGORY_RECON);
	INT_ChangeIndividualInterest(0.05f, INTERESTCATEGORY_BUILDING);
	if (CP_IsXVIStarted())
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_XVI);

	CP_MissionRemove(mission);
}
Ejemplo n.º 4
0
/**
 * @brief Recon mission is over and is a success: change interest values.
 * @note Recon mission
 */
static void CP_ReconMissionIsSuccess (mission_t *mission)
{
	INT_ChangeIndividualInterest(-0.2f, INTERESTCATEGORY_RECON);
	INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_HARVEST);
	if (AB_GetAlienBaseNumber())
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_SUPPLY);
	if (CP_IsXVIStarted())
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_XVI);

	CP_MissionRemove(mission);
}
Ejemplo n.º 5
0
/**
 * @brief Spread XVI for each mission that needs to be daily spread.
 * @note Daily called
 */
void CP_SpreadXVI (void)
{
	/* don't check if XVI spreading didn't start yet */
	if (!CP_IsXVIStarted())
		return;

	MIS_Foreach(mission) {
		if (mission->stage == STAGE_SPREAD_XVI)
			CP_SpreadXVIAtPos(mission->pos);
	}
}
Ejemplo n.º 6
0
/**
 * @brief Reduce XVI everywhere.
 * @note This is called daily.
 */
void CP_ReduceXVIEverywhere (void)
{
	if (!CP_IsXVIStarted())
		return;

	/* Only decrease XVI if given days has passed */
	if (ccs.date.day % XVI_DECREASE_DAYS)
		return;

	CP_DecreaseXVILevelEverywhere();

	xviNationInfectionNeedsUpdate = true;
}
Ejemplo n.º 7
0
/**
 * @brief Build Base mission is over and is a success (from an alien point of view): change interest values.
 * @note Build Base mission
 */
void CP_BuildBaseMissionIsSuccess (mission_t* mission)
{
	if (CP_BasemissionIsSubvertingGovernmentMission(mission)) {
		/* This is a subverting government mission */
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_TERROR_ATTACK);
	} else {
		/* An alien base has been built */
		const alienBase_t* base = mission->data.alienBase;
		assert(base);
		CP_SpreadXVIAtPos(base->pos);

		if (CP_IsXVIStarted())
			INT_ChangeIndividualInterest(0.4f, INTERESTCATEGORY_XVI);
		INT_ChangeIndividualInterest(0.4f, INTERESTCATEGORY_SUPPLY);
		INT_ChangeIndividualInterest(0.1f, INTERESTCATEGORY_HARVEST);
	}

	CP_MissionRemove(mission);
}