class DropAction extends BaseItemAction
{

	public override function CompleteAction( gameInstance : GameInstance )
	{
		var itemID : ItemID;
		var instructions : array< DropInstruction >;
		var orientation : Quaternion;
		var upAxisAddition : Vector4;
		var position : Vector4;
		if( GetItemData().HasTag( 'UnequipBlocked' ) || GetItemData().HasTag( 'Quest' ) )
		{
			return;
		}
		itemID = GetItemData().GetID();
		GameInstance.GetTelemetrySystem( m_executor.GetGame() ).LogItemDrop( m_executor, itemID );
		super.CompleteAction( gameInstance );
		RPGManager.ReturnRetrievableWeaponMods( GetItemData(), m_executor );
		upAxisAddition = Vector4( 0.0, 0.0, 0.40000001, 0.0 );
		position = GetExecutor().GetWorldPosition() + upAxisAddition;
		orientation = GetExecutor().GetWorldOrientation() * Quaternion.Rand( 0.0, 360.0 );
		if( ( ( RPGManager.GetItemCategory( itemID ) == gamedataItemCategory.Clothing || !( IsNameValid( RPGManager.GetItemRecord( itemID ).EntityName() ) ) ) || RPGManager.GetItemCategory( itemID ) == gamedataItemCategory.General ) || RPGManager.GetItemCategory( itemID ) == gamedataItemCategory.Consumable )
		{
			instructions.PushBack( DropInstruction.Create( itemID, 1 ) );
			GameInstance.GetLootManager( gameInstance ).SpawnItemDropOfManyItems( GetExecutor(), instructions, 'playerDropBag', position );
		}
		else
		{
			GameInstance.GetLootManager( gameInstance ).SpawnItemDrop( GetExecutor(), itemID, position + Quaternion.GetForward( GetExecutor().GetWorldOrientation() ), orientation );
		}
	}

}

