class UseAction extends BaseItemAction
{

	public override function IsPossible( target : weak< GameObject >, optional actionRecord : weak< ObjectAction_Record >, optional objectActionsCallbackController : weak< gameObjectActionsCallbackController > ) : Bool
	{
		var targetPrereqs : array< weak< IPrereq_Record > >;
		if( !( actionRecord ) )
		{
			actionRecord = GetObjectActionRecord();
		}
		if( objectActionsCallbackController && objectActionsCallbackController.HasObjectAction( actionRecord ) )
		{
			return objectActionsCallbackController.IsObjectActionInstigatorPrereqFulfilled( actionRecord );
		}
		else
		{
			actionRecord.InstigatorPrereqs( targetPrereqs );
			return RPGManager.CheckPrereqs( targetPrereqs, target );
		}
	}

	public override function StartAction( gameInstance : GameInstance )
	{
		var itemData : gameItemData;
		itemData = GetItemData();
		super.StartAction( gameInstance );
		if( !( itemData ) || !( m_executor.IsPlayer() ) )
		{
			return;
		}
		if( ( ( ( ( ( ( ( m_objectActionID == T"CyberwareAction.UseOpticalCamoRare" ) || ( m_objectActionID == T"CyberwareAction.UseOpticalCamoEpic" ) ) || ( m_objectActionID == T"CyberwareAction.UseOpticalCamoLegendary" ) ) || ( m_objectActionID == T"CyberwareAction.UseBloodPumpCommon" ) ) || ( m_objectActionID == T"CyberwareAction.UseBloodPumpUncommon" ) ) || ( m_objectActionID == T"CyberwareAction.UseBloodPumpRare" ) ) || ( m_objectActionID == T"CyberwareAction.UseBloodPumpEpic" ) ) || ( m_objectActionID == T"CyberwareAction.UseBloodPumpLegendary" ) )
		{
			GameInstance.GetTelemetrySystem( gameInstance ).LogActiveCyberwareUsed( m_executor, itemData.GetID() );
		}
	}

}

