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(); } }
CGotoHideSpotSched::CGotoHideSpotSched(CBot *pBot, Vector vOrigin, IBotTaskInterrupt *interrupt) { // run at flank while shooting CFindPathTask *pHideGoalPoint = new CFindPathTask(); pBot->SetCoverFrom(NULL); AddTask(new CFindGoodHideSpot(vOrigin)); AddTask(pHideGoalPoint); // no interrupts, should be a quick waypoint path anyway pHideGoalPoint->SetNoInterruptions(); pHideGoalPoint->SetInterruptFunction(interrupt); // get vector from good hide spot task pHideGoalPoint->GetPassedVector(); }