public static LSProjectile Create(string projCode, RTSAgent source, Vector3d offset, AllegianceType targetAllegiance, Func <RTSAgent, bool> agentConditional, Action <RTSAgent> hitEffect)
        {
            Vector2d        relativePos      = offset.ToVector2d();
            Vector2d        worldPos         = relativePos.Rotated(source.Body.Rotation) + source.Body.Position;
            Vector3d        pos              = new Vector3d(worldPos.x, worldPos.y, offset.z + source.Body.HeightPos);
            AgentController sourceController = source.Controller;
            LSProjectile    proj             = Create(
                projCode,
                pos,
                agentConditional,
                (bite) =>
            {
                return((sourceController.GetAllegiance(bite) & targetAllegiance) != 0);
            }
                ,
                hitEffect);

            return(proj);
        }