Esempio n. 1
0
CGotoHideSpotSched::CGotoHideSpotSched(CBot *pBot, edict_t *pEdict, bool bIsGrenade)
{
	// run at flank while shooting	
	CFindPathTask *pHideGoalPoint = new CFindPathTask(pEdict);

	pBot->SetCoverFrom(pEdict);
	AddTask(new CFindGoodHideSpot(pEdict));
	AddTask(pHideGoalPoint);
	//if ( bIsGrenade )
	//AddTask(new CDODWaitForGrenadeTask(pEdict));

	// don't need to hide if the player we're hiding from died while we're running away
	pHideGoalPoint->FailIfTaskEdictDead();
	pHideGoalPoint->SetLookTask(LOOK_WAYPOINT);
	// no interrupts, should be a quick waypoint path anyway
	pHideGoalPoint->SetNoInterruptions();
	// get vector from good hide spot task
	pHideGoalPoint->GetPassedVector();
	pHideGoalPoint->DontGoToEdict();
	if (bIsGrenade)
	{
		pHideGoalPoint->SetRange(BLAST_RADIUS + 100.0f);
		pHideGoalPoint->CompleteOutOfRangeFromEdict();
	}
}
Esempio n. 2
0
CBotRemoveSapperSched::CBotRemoveSapperSched(edict_t *pBuilding, eEngiBuild id)
{
	CFindPathTask *pathtask = new CFindPathTask(pBuilding);
	AddTask(pathtask);
	pathtask->CompleteInRangeFromEdict();
	pathtask->SetRange(150.0f);
	AddTask(new CBotRemoveSapper(pBuilding, id));
}
Esempio n. 3
0
CBotTF2AttackSentryGun::CBotTF2AttackSentryGun(edict_t *pSentry, CBotWeapon *pWeapon)
{
	CFindPathTask *path = new CFindPathTask(pSentry);

	AddTask(path);
	AddTask(new CBotTF2AttackSentryGunTask(pSentry, pWeapon));

	path->CompleteInRangeFromEdict();
	path->CompleteIfSeeTaskEdict();

	path->SetRange(pWeapon->PrimaryMaxRange() - 100);
}
Esempio n. 4
0
CBotTFEngiUpgrade::CBotTFEngiUpgrade(CBot *pBot, edict_t *pBuilding)
{
	CFindPathTask *pathtask = new CFindPathTask(pBuilding);

	AddTask(pathtask);

	pathtask->CompleteInRangeFromEdict();
	pathtask->FailIfTaskEdictDead();
	pathtask->SetRange(150.0f);

	if (!CTeamFortress2Mod::IsSentryGun(pBuilding))
	{
		pathtask->SetInterruptFunction(new CBotTF2EngineerInterrupt(pBot));

		CBotTF2UpgradeBuilding *upgbuilding = new CBotTF2UpgradeBuilding(pBuilding);
		AddTask(upgbuilding);
		upgbuilding->SetInterruptFunction(new CBotTF2EngineerInterrupt(pBot));

	}
	else
	{
		AddTask(new CBotTF2UpgradeBuilding(pBuilding));
	}
}