Okay, so i thought I'd look to see if i could improve the jerky code for fun. But, I'm having trouble finding it. Is this some it in GameObject.cpp??
Quote:////////////////////////////////////////////
		//Attracts Enemies
		pObject->mAttractProps.mbActive = cString::ToBool(pGameElem->Attribute("AttractEnemies"),false);
		if(pObject->mAttractProps.mbActive)
		{
			pObject->mAttractProps.mfDistance = cString::ToFloat(pGameElem->Attribute("AttractDistance"),0);
			tString sSubTypes = cString::ToString(pGameElem->Attribute("AttractSubtypes"),"");
			cString::GetStringVec(sSubTypes,pObject->mAttractProps.mvSubtypes,NULL);
			pObject->mAttractProps.mbIsEaten = cString::ToBool(pGameElem->Attribute("AttractIsEaten"),false);
			pObject->mAttractProps.mfEatLength = cString::ToFloat(pGameElem->Attribute("AttractEatLength"),0);
		}
		
		
		////////////////////////////////////////////
//-----------------------------------------------------------------------
void cGameObject::UpdateAttraction(float afTimeStep)
{
	if(mAttractProps.mbActive==false) return;
	
	///////////////////////////////////////////////
	//Check if the current attraction is near enough
	if(mpCurrentAttraction)
	{
		////////////////////////////////////////
		//Check for the attracted enemy
		iCharacterBody *pBody =  mpCurrentAttraction->GetMover()->GetCharBody();
		float fDist = cMath::Vector3Dist(	pBody->GetFeetPosition(),
											mvBodies[0]->GetWorldPosition());
		//Check if the enemy have become busy.
		if(	(mpCurrentAttraction->GetCurrentStateId() != STATE_MOVETO  && fDist <pBody->GetSize().x*0.75f)
			||
			(mAttractProps.mbIsEaten && fDist <pBody->GetSize().x*0.75f))
		{
			//Use half the width here.
			if(mAttractProps.mbIsEaten)
			{
				mpCurrentAttraction->SetTempFloat(mAttractProps.mfEatLength);
				mpCurrentAttraction->ChangeState(STATE_EAT);
			}
			mpCurrentAttraction->SetAttracted(false);
			mpCurrentAttraction = NULL;
			mbDestroyMe = true;
			return;
		}
		else if(mpCurrentAttraction->GetCurrentStateId() != STATE_MOVETO)
		{
			mpCurrentAttraction->SetAttracted(false);
			mpCurrentAttraction = NULL;
			return;
		}
	}
	///////////////////////////////////////////////
	//Check if any enemy is near enough to be attracted
	else
	{
		if(mfAttractCount <=0)
		{
			float fClosestDist = 10000.0f;
			iGameEnemy *pChosenEnemy = NULL;
			tGameEnemyIterator enemyIt = mpInit->mpMapHandler->GetGameEnemyIterator();
			while(enemyIt.HasNext())
			{
				iGameEnemy *pEnemy = enemyIt.Next();
				if(	pEnemy->GetHealth() <= 0 || pEnemy->IsActive()==false || 
					pEnemy->IsAttracted()) 
				{
					continue;
				}
				bool bCorrectSub = false;
				for(size_t i=0; i< mAttractProps.mvSubtypes.size(); ++i)
				{
					if(mAttractProps.mvSubtypes[i] == pEnemy->GetSubType()) bCorrectSub = true;
				}
				if(bCorrectSub==false) continue;
				
				//Check if the enemy has already been attracted by this object
				if(m_setAttractedEnemies.find(pEnemy) != m_setAttractedEnemies.end()) continue;
				float fDist = cMath::Vector3Dist(	pEnemy->GetMover()->GetCharBody()->GetFeetPosition(),
													mvBodies[0]->GetWorldPosition());
				
				if(fDist < mAttractProps.mfDistance && fDist < fClosestDist)
				{
					fClosestDist = fDist;
					pChosenEnemy = pEnemy;
				}
			}
			
			if(pChosenEnemy)
			{
				if(pChosenEnemy->MoveToPos(mvBodies[0]->GetWorldPosition() +cVector3f(0,0.2f,0)))
				{
					mpCurrentAttraction = pChosenEnemy;
					pChosenEnemy->SetAttracted(true);
					m_setAttractedEnemies.insert(pChosenEnemy);
				}
			}
			mfAttractCount = 0.2f;
		}
		else
		{
			mfAttractCount -= afTimeStep;
		}
	}
}
//--------------------------------------------------------------------
If it is the code that controls the "attraction" to the meat/jerky, could you please explain in more detail how it works? If it's not, could you please explain what it does, and where to find the jerky/meat/food code? Thanks.