RiotDroneAssets.cs
using Sandbox;
namespace PaintballBaddies;

public static class RiotDroneAssets
{
    private static Model downloaded;
    private static System.Threading.Tasks.Task<Model> loading;
    public static System.Threading.Tasks.Task<Model> LoadAsync()=>loading ??= Download();
    private static async System.Threading.Tasks.Task<Model> Download()
    {
        try
        {
            var model=Drone;
            downloaded=model.IsValid() && !model.IsError ? model : await Cloud.Load<Model>("rust.drone");
            return downloaded;
        }
        catch(System.Exception e){Log.Warning($"Drone asset download failed: {e.Message}");return null;}
    }
    public static Model Drone
    {
        get
        {
            if(downloaded.IsValid() && !downloaded.IsError)return downloaded;
            var model=Model.Load("entities/drone/drone.vmdl");
            return model.IsValid() && !model.IsError ? model : Cloud.Model("https://sbox.game/rust/drone");
        }
    }
}