Esempio n. 1
0
        public static SpriteRenderer SearchSprites(GameObject parent, string name, string spriteName)
        {
            List <Transform> output = new List <Transform>();

            SearchChildren(parent.transform, name, output);

            foreach (Transform t in output)
            {
                SpriteRenderer r = t.gameObject.GetComponent <SpriteRenderer>();
                if (r == null)
                {
                    continue;
                }
                if (r.sprite == null)
                {
                    continue;
                }
                if (r.sprite.name == spriteName)
                {
                    return(r);
                }
            }
            LILogger.LogWarn("Could not find " + spriteName + " (" + name + ")");
            return(null);
        }
Esempio n. 2
0
        public bool Build(MapAsset asset)
        {
            GameObject obj = new GameObject("Custom Asset");

            // Base64
            string base64 = asset.type.Substring(asset.type.IndexOf(",") + 1);

            byte[] data;
            try
            {
                data = System.Convert.FromBase64String(base64);
            }
            catch
            {
                LILogger.LogError("Could not parse custom asset texture");
                return(false);
            }

            // Texture
            Texture2D tex = new Texture2D(1, 1);

            ImageConversion.LoadImage(tex, data);

            // Sprite Renderer
            SpriteRenderer spriteRenderer = obj.AddComponent <SpriteRenderer>();

            spriteRenderer.sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f);

            // Polus
            polus.Add(obj, asset);
            return(true);
        }
Esempio n. 3
0
        public bool PreBuild(MapAsset asset)
        {
            if (!asset.type.StartsWith("util-spawn"))
            {
                return(true);
            }
            Vector2 pos = new Vector2(asset.x, -asset.y - 25.0f);

            if (asset.type == "util-spawn1")
            {
                polus.shipStatus.InitialSpawnCenter = pos;
            }
            else if (asset.type == "util-spawn2")
            {
                polus.shipStatus.MeetingSpawnCenter  = pos;
                polus.shipStatus.MeetingSpawnCenter2 = pos;
            }
            else
            {
                LILogger.LogError("Unknown Spawn Type '" + asset.type + "'");
                return(false);
            }

            return(true);
        }
Esempio n. 4
0
        public void Apply(PolusShipStatus shipStatus)
        {
            if (!MapHandler.Load())
            {
                return;
            }

            MapData      map     = MapHandler.GetMap();
            PolusHandler polus   = new PolusHandler(shipStatus);
            AssetBuilder builder = new AssetBuilder(polus);

            polus.ClearTasks();
            polus.MoveToTemp();

            for (int i = 0; i < map.objs.Length; i++)
            {
                MapAsset asset   = map.objs[i];
                bool     success = builder.Build(asset);
                if (!success)
                {
                    LILogger.LogError("Failed to build " + asset.name);
                }
                else if (i % 1000 == 0)
                {
                    LILogger.LogMsg(i + " - Objects");
                }
            }

            polus.DeleteTemp();
            LILogger.LogInfo("Applied Map Data");
        }
Esempio n. 5
0
        private bool RouteBuild(MapAsset asset, bool isPost)
        {
            try
            {
                foreach (Builder builder in builders)
                {
                    bool success = false;

                    if (isPost)
                    {
                        success = builder.PostBuild();
                    }
                    else
                    {
                        success = builder.PreBuild(asset);
                    }

                    if (!success)
                    {
                        return(false);
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                LILogger.LogInfo(e.Message + "\n" + e.StackTrace);
                return(false);
            }
        }
Esempio n. 6
0
        public static bool Prefix(SystemTypes ENHDELNCBNG)
        {
            // Get Task
            PlayerTask playerTask = null;

            for (int i = 0; i < ShipStatus.Instance.SpecialTasks.Length; i++)
            {
                PlayerTask task = ShipStatus.Instance.SpecialTasks[i];
                if (task.StartAt == ENHDELNCBNG)
                {
                    playerTask = task;
                    break;
                }
            }

            // Check
            if (playerTask == null)
            {
                LILogger.LogError("Player has been given invalid System Task: " + ENHDELNCBNG.ToString());
                return(false);
            }

            // Provide
            PlayerControl localPlayer = PlayerControl.LocalPlayer;
            PlayerTask    playerTask2 = GameObject.Instantiate <PlayerTask>(playerTask, localPlayer.transform);

            playerTask2.Id    = 255U;
            playerTask2.Owner = localPlayer;
            playerTask2.Initialize();
            localPlayer.myTasks.Add(playerTask2);
            return(false);
        }
Esempio n. 7
0
        public static bool Load()
        {
            if (mapLoaded)
            {
                return(true);
            }

            // Get Directory
            string dllDir = System.Reflection.Assembly.GetAssembly(typeof(LevelImposter.MainHarmony)).Location;

            mapDir = Path.Combine(Path.GetDirectoryName(dllDir), "map.json");

            // Load File
            if (!File.Exists(mapDir))
            {
                LILogger.LogError("Could not find map at " + mapDir);
                return(false);
            }
            string mapJson = File.ReadAllText(mapDir);

            // Deserialize
            mapData = Newtonsoft.Json.JsonConvert.DeserializeObject <MapData>(mapJson);

            // Return
            mapLoaded = true;
            LILogger.LogInfo("Found and Deserialized Map Data");
            return(true);
        }
Esempio n. 8
0
 public void PostBuild(PolusShipStatus shipStatus)
 {
     // Post Build
     LILogger.LogInfo("...Wrapping Up");
     builder.PostBuild();
     polus.SetExile(MapHandler.mapData.exile);
     LILogger.LogInfo("Finished!");
 }
Esempio n. 9
0
 public static void Postfix(AmongUsClient __instance)
 {
     LILogger.LogInfo("Loading Ship Prefabs...");
     foreach (AssetReference assetRef in __instance.ShipPrefabs)
     {
         assetRef.LoadAsset <GameObject>();
     }
     MapHandler.Load();
 }
Esempio n. 10
0
 public static void Postfix(AmongUsClient __instance)
 {
     if (__instance.AmHost)
     {
         LILogger.LogInfo("Player Joined: Sending map checksum...");
         var writer = __instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, 42, SendOption.Reliable, -1);
         writer.Write(MapHandler.checksum);
         __instance.FinishRpcImmediately(writer);
     }
 }
Esempio n. 11
0
        public bool PreBuild(MapAsset asset)
        {
            if (asset.type != "util-room")
            {
                return(true);
            }

            // Check Collider Count
            if (asset.colliders.Length <= 0)
            {
                LILogger.LogWarn(asset.name + " does not have any colliders!");
                return(false);
            }

            // Object
            GameObject obj = new GameObject(asset.name);

            // Collider
            PolygonCollider2D mainCollider = null;

            foreach (MapCollider collider in asset.colliders)
            {
                PolygonCollider2D polyCollider = obj.AddComponent <PolygonCollider2D>();
                polyCollider.isTrigger = true;
                polyCollider.SetPath(0, collider.GetPoints());
                mainCollider = polyCollider;
            }

            // Room
            PlainShipRoom room = obj.AddComponent <PlainShipRoom>();

            room.RoomId = (SystemTypes)roomId;
            if (asset.colliders.Length > 0)
            {
                room.roomArea = mainCollider;
            }

            // Room DB
            if (!db.ContainsKey(asset.id))
            {
                db.Add(asset.id, (SystemTypes)roomId);
            }

            // Text DB
            TextHandler.Add((SystemTypes)roomId, asset.name);

            // Polus
            polus.shipStatus.AllRooms = AssetHelper.AddToArr(polus.shipStatus.AllRooms, room);
            polus.shipStatus.FastRooms.Add((SystemTypes)roomId, room);
            MinimapGenerator.AddRoom(asset);
            polus.Add(obj, asset);

            roomId++;
            return(true);
        }
Esempio n. 12
0
        public static T SearchComponent <T>(GameObject parent, string name)
        {
            GameObject obj = SearchChildren(parent, name);

            if (obj != null)
            {
                return(obj.GetComponent <T>());
            }
            LILogger.LogWarn("Could not find " + name);
            return(default(T));
        }
Esempio n. 13
0
        public void PreBuild(PolusShipStatus shipStatus)
        {
            // Load Map and AssetDB
            if (!AssetDB.Import())
            {
                return;
            }
            if (!MapHandler.Load())
            {
                return;
            }

            // Vars
            map     = MapHandler.GetMap();
            polus   = new PolusHandler(shipStatus);
            builder = new AssetBuilder(polus);
            MinimapGenerator.Reset();

            // Rooms
            LILogger.LogInfo("...Building Rooms");
            for (int i = 0; i < map.objs.Length; i++)
            {
                if (map.objs[i].type != "util-room")
                {
                    continue;
                }
                MapAsset asset   = map.objs[i];
                bool     success = builder.PreBuild(asset);
                if (!success)
                {
                    LILogger.LogError("Failed to build " + asset.name);
                }
            }

            // Objects
            LILogger.LogInfo("...Building Objects");
            for (int i = 0; i < map.objs.Length; i++)
            {
                if (map.objs[i].type == "util-room")
                {
                    continue;
                }
                MapAsset asset   = map.objs[i];
                bool     success = builder.PreBuild(asset);
                if (!success)
                {
                    LILogger.LogError("Failed to build " + asset.name);
                }
                else if (i % 100 == 0 && i != 0)
                {
                    LILogger.LogInfo("..." + i + " Objects Built");
                }
            }
        }
Esempio n. 14
0
        public static T SearchList <T>(UnhollowerBaseLib.Il2CppReferenceArray <T> list, string name) where T : MonoBehaviour
        {
            IEnumerable <T> elem = list.Where(t => t.name == name);

            if (elem.Count() > 0)
            {
                return(elem.First());
            }
            LILogger.LogWarn("Could not find " + name);
            return(null);
        }
Esempio n. 15
0
        public static bool Load()
        {
            if (mapLoaded)
            {
                return(true);
            }

            LILogger.LogInfo("...Deserializing Map Data");

            // Get Directory
            string dllDir = System.Reflection.Assembly.GetAssembly(typeof(LevelImposter.MainHarmony)).Location;

            mapDir = Path.Combine(Path.GetDirectoryName(dllDir), "map.json");

            // Load File
            if (!File.Exists(mapDir))
            {
                LILogger.LogError("Could not find map at " + mapDir);
                return(false);
            }
            string mapJson = File.ReadAllText(mapDir);

            // Settings
            var settings = new Newtonsoft.Json.JsonSerializerSettings {
                NullValueHandling     = Newtonsoft.Json.NullValueHandling.Ignore,
                MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore
            };

            // Deserialize
            try
            {
                mapData = Newtonsoft.Json.JsonConvert.DeserializeObject <MapData>(mapJson, settings);
            }
            catch (Exception e)
            {
                LILogger.LogError("There was an error deserializing map data:\n" + e.Message);
                return(false);
            }

            // Checksum
            int checkNum = 0;

            foreach (char c in mapJson)
            {
                checkNum += Convert.ToByte(c);
            }
            checksum = checkNum.ToString("X4");

            // Return
            mapLoaded = true;
            return(true);
        }
Esempio n. 16
0
        public static GameObject SearchChildren(GameObject parent, string name)
        {
            List <Transform> output = new List <Transform>();

            SearchChildren(parent.transform, name, output);

            if (output.Count() > 0)
            {
                return(output[0].gameObject);
            }
            LILogger.LogWarn("Could not find " + name);
            return(null);
        }
Esempio n. 17
0
        public static void Postfix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1)] MessageReader reader)
        {
            if (callId != 42)
            {
                return;
            }

            string checksum = reader.ReadString();

            if (checksum != MapHandler.checksum)
            {
                LILogger.LogWarn("Received map checksum does not match! (" + checksum + " => " + MapHandler.checksum + ")");

                AmongUsClient client = AmongUsClient.Instance;
                client.LastDisconnectReason = DisconnectReasons.Custom;
                client.LastCustomDisconnect = "Host is using a different map than client";
                client.HandleDisconnect(client.LastDisconnectReason, client.LastCustomDisconnect);
            }
        }
Esempio n. 18
0
        public static bool Import()
        {
            LILogger.LogInfo("...Loading Asset Database");
            var client = GameObject.Find("NetworkManager").GetComponent <AmongUsClient>();

            foreach (AssetReference assetRef in client.ShipPrefabs)
            {
                if (assetRef.IsDone)
                {
                    AssetDB.Import(assetRef.Asset.Cast <GameObject>());
                }
                else
                {
                    LILogger.LogError("There was an error loading the Asset Database!");
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 19
0
        public static void Init()
        {
            try
            {
                TempDB tempDB = Newtonsoft.Json.JsonConvert.DeserializeObject <TempDB>(
                    Encoding.UTF8.GetString(Properties.Resources.AssetDB, 0, Properties.Resources.AssetDB.Length)
                    );

                tasks = tempDB.tasks;
                utils = tempDB.utils;
                sabs  = tempDB.sabs;
                dec   = tempDB.dec;
                room  = tempDB.room;
            }
            catch
            {
                LILogger.LogError("Error during AssetDB JSON Deserialization");
            }
        }
Esempio n. 20
0
 public bool Build(MapAsset asset)
 {
     try
     {
         if (asset.spriteType == "existing")
         {
             if (asset.type == "util-player")
             {
                 return(spawnBuilder.Build(asset));
             }
             else if (asset.type == "util-room")
             {
                 return(true);
             }
             else if (asset.type.StartsWith("util-"))
             {
                 return(utilBuilder.Build(asset));
             }
             else if (asset.type.StartsWith("dec-"))
             {
                 return(decBuilder.Build(asset));
             }
             else if (asset.type.StartsWith("room-"))
             {
                 return(roomBuilder.Build(asset));
             }
             else if (asset.type.StartsWith("task-"))
             {
                 return(taskBuilder.Build(asset));
             }
         }
         else if (asset.spriteType == "custom")
         {
             return(customBuilder.Build(asset));
         }
         return(false);
     }
     catch (Exception e)
     {
         LILogger.LogInfo(e.Message + "\n" + e.StackTrace);
         return(false);
     }
 }
Esempio n. 21
0
        public static Sprite SpriteFromBase64(string b64)
        {
            if (string.IsNullOrEmpty(b64))
            {
                return(null);
            }

            // Base64
            string base64 = b64.Substring(b64.IndexOf(",") + 1);

            byte[] data;
            try
            {
                data = System.Convert.FromBase64String(base64);
                return(SpriteFromBase64(data));
            }
            catch
            {
                LILogger.LogError("Could not parse custom asset texture");
                return(null);
            }
        }
Esempio n. 22
0
        private static void Import(GameObject map)
        {
            // Ship Status
            ShipStatus shipStatus = map.GetComponent <ShipStatus>();

            // Determine Map Type
            MapType mapType = MapType.Skeld;

            if (map.name == "AprilShip")
            {
                return;
            }
            if (map.name == "MiraShip")
            {
                mapType = MapType.Mira;
            }
            if (map.name == "PolusShip")
            {
                mapType = MapType.Polus;
            }
            if (map.name == "Airship")
            {
                mapType = MapType.Airship;
            }


            // Import Map to Lists
            Import(map, shipStatus, mapType, tasks);
            Import(map, shipStatus, mapType, utils);
            Import(map, shipStatus, mapType, sabs);
            Import(map, shipStatus, mapType, dec);
            Import(map, shipStatus, mapType, room);
            Import(map, shipStatus, mapType, ss);

            LILogger.LogInfo("..." + map.name + " Loaded");
        }
Esempio n. 23
0
        public bool PreBuild(MapAsset asset)
        {
            if (!asset.type.StartsWith("task-"))
            {
                return(true);
            }
            TaskData taskData = AssetDB.tasks[asset.type];

            // Object
            GameObject obj = new GameObject(asset.type);

            // Sprite Renderer
            SpriteRenderer spriteRenderer = obj.AddComponent <SpriteRenderer>();

            spriteRenderer.sprite   = taskData.SpriteRenderer.sprite;
            spriteRenderer.material = taskData.SpriteRenderer.material;
            obj.layer = (int)Layer.ShortObjects;

            // Target Room
            SystemTypes target = 0;

            if (asset.targetIds.Length > 0)
            {
                if (asset.targetIds[0] > 0)
                {
                    if (ShipRoomBuilder.db.ContainsKey(asset.targetIds[0]))
                    {
                        target = ShipRoomBuilder.db[asset.targetIds[0]];
                    }
                }
            }

            // Divert Power
            if (asset.type == "task-divert2")
            {
                if (divertId >= DIVERT_SYSTEMS.Length)
                {
                    LILogger.LogError("Hit Divert Power's Max System Limit");
                    return(false);
                }

                target = DIVERT_SYSTEMS[divertId];
                divertId++;
            }

            // Console
            Console console;
            Console origConsole = taskData.GameObj.GetComponent <Console>();

            if (asset.type == "task-pistols1" || asset.type == "task-rifles1")
            {
                console = obj.AddComponent <StoreArmsTaskConsole>();
                StoreArmsTaskConsole specialConsole     = console.Cast <StoreArmsTaskConsole>();
                StoreArmsTaskConsole origSpecialConsole = origConsole.Cast <StoreArmsTaskConsole>();

                specialConsole.timesUsed   = origSpecialConsole.timesUsed;
                specialConsole.Images      = origSpecialConsole.Images;
                specialConsole.useSound    = origSpecialConsole.useSound;
                specialConsole.usesPerStep = origSpecialConsole.usesPerStep;
            }
            else if (asset.type.StartsWith("task-towels") && asset.type != "task-towels1")
            {
                console = obj.AddComponent <TowelTaskConsole>();
                TowelTaskConsole specialConsole     = console.Cast <TowelTaskConsole>();
                TowelTaskConsole origSpecialConsole = origConsole.Cast <TowelTaskConsole>();

                specialConsole.useSound = origSpecialConsole.useSound;
            }
            else
            {
                console = obj.AddComponent <Console>();
            }
            console.ConsoleId      = origConsole.ConsoleId;
            console.AllowImpostor  = false;
            console.checkWalls     = false;
            console.GhostsIgnored  = false;
            console.Image          = spriteRenderer;
            console.onlyFromBelow  = asset.onlyFromBottom;
            console.onlySameRoom   = false;
            console.usableDistance = 1;
            console.Room           = target;
            console.TaskTypes      = origConsole.TaskTypes;
            console.ValidTasks     = origConsole.ValidTasks;

            // Box Collider
            if (taskData.GameObj.GetComponent <CircleCollider2D>() != null)
            {
                CircleCollider2D origBox = taskData.GameObj.GetComponent <CircleCollider2D>();
                CircleCollider2D box     = obj.AddComponent <CircleCollider2D>();
                box.radius    = origBox.radius;
                box.offset    = origBox.offset;
                box.isTrigger = true;
            }
            else if (taskData.GameObj.GetComponent <BoxCollider2D>() != null)
            {
                BoxCollider2D origBox = taskData.GameObj.GetComponent <BoxCollider2D>();
                BoxCollider2D box     = obj.AddComponent <BoxCollider2D>();
                box.size      = origBox.size;
                box.offset    = origBox.offset;
                box.isTrigger = true;
            }
            else if (taskData.GameObj.GetComponent <PolygonCollider2D>() != null)
            {
                PolygonCollider2D origBox = taskData.GameObj.GetComponent <PolygonCollider2D>();
                PolygonCollider2D box     = obj.AddComponent <PolygonCollider2D>();
                box.points    = origBox.points;
                box.pathCount = origBox.pathCount;
                box.offset    = origBox.offset;
                box.isTrigger = true;
            }

            // Button
            PassiveButton origBtn = taskData.GameObj.GetComponent <PassiveButton>();

            if (origBtn != null)
            {
                PassiveButton btn = obj.AddComponent <PassiveButton>();
                btn.ClickMask   = origBtn.ClickMask;
                btn.OnMouseOver = new UnityEvent();
                btn.OnMouseOut  = new UnityEvent();
                Action action = console.Use;
                btn.OnClick.AddListener(action);
            }

            // Medscan
            if (asset.type == "task-medscan")
            {
                MedScannerBehaviour medscan  = obj.AddComponent <MedScannerBehaviour>();
                MedScannerBehaviour origscan = taskData.GameObj.GetComponent <MedScannerBehaviour>();

                medscan.Offset = origscan.Offset;

                polus.shipStatus.MedScanner = medscan;
            }

            // Multipart Tasks
            if (asset.type.StartsWith("task-waterwheel"))
            {
                int id = int.Parse(asset.type.Substring(15));
                if (1 <= id && id <= 3)
                {
                    console.ConsoleId = id - 1;
                }
            }
            else if (asset.type.StartsWith("task-waterjug"))
            {
                int id = int.Parse(asset.type.Substring(13));
                if (1 <= id && id <= 2)
                {
                    console.ValidTasks             = new UnhollowerBaseLib.Il2CppReferenceArray <TaskSet>(1);
                    console.ValidTasks[0]          = new TaskSet();
                    console.ValidTasks[0].taskType = TaskTypes.ReplaceWaterJug;
                    console.ValidTasks[0].taskStep = new IntRange(id - 1, id - 1);
                }
            }
            else if (asset.type == "task-node")
            {
                if (nodeId >= 6)
                {
                    LILogger.LogError("Hit Weather Node's Max System Limit");
                    return(false);
                }

                console.ConsoleId = nodeId;
            }
            else if (asset.type == "task-records2")
            {
                if (recordsId >= 9)
                {
                    LILogger.LogError("Hit Records's Max System Limit");
                    return(false);
                }

                console.ConsoleId = recordsId;
                recordsId++;
            }
            else if (asset.type == "task-toilet")
            {
                if (toiletId >= 4)
                {
                    LILogger.LogError("Hit Toilet's Max System Limit");
                    return(false);
                }

                console.ConsoleId = toiletId;
                toiletId++;
            }
            else if (asset.type == "task-breakers")
            {
                if (breakersId >= 7)
                {
                    LILogger.LogError("Hit Breakers's Max System Limit");
                    return(false);
                }

                console.ConsoleId = breakersId;
                breakersId++;
            }
            else if (asset.type.StartsWith("task-towels") && asset.type != "task-towels1")
            {
                if (towelsId >= 14)
                {
                    LILogger.LogError("Hit Towels's Max System Limit");
                    return(false);
                }

                console.ConsoleId = towelsId;
                towelsId++;
            }

            // Task
            if (!string.IsNullOrEmpty(taskData.BehaviorName))
            {
                GameObject taskHolder = new GameObject(asset.id.ToString());
                taskHolder.transform.SetParent(taskMgr.transform);

                NormalPlayerTask origTask = taskData.Behavior;
                NormalPlayerTask task;
                if (asset.type.StartsWith("task-divert"))
                {
                    task = taskHolder.AddComponent <DivertPowerTask>();

                    DivertPowerTask taskNode = task.Cast <DivertPowerTask>();
                    DivertPowerTask origNode = origTask.Cast <DivertPowerTask>();

                    taskNode.TargetSystem = target;
                }
                else if (asset.type == "task-node")
                {
                    task = taskHolder.AddComponent <WeatherNodeTask>();

                    WeatherNodeTask taskNode = task.Cast <WeatherNodeTask>();
                    WeatherNodeTask origNode = origTask.Cast <WeatherNodeTask>();

                    taskNode.Stage2Prefab = origNode.Stage2Prefab;
                    taskNode.NodeId       = nodeId;
                    nodeId++;
                }
                else if (asset.type.StartsWith("task-waterwheel"))
                {
                    task = taskHolder.AddComponent <WaterWayTask>();
                }
                else if (asset.type == "task-towels1")
                {
                    task = taskHolder.AddComponent <TowelTask>();
                }
                else
                {
                    task = taskHolder.AddComponent <NormalPlayerTask>();
                }
                task.StartAt        = target;
                task.taskStep       = origTask.taskStep;
                task.MaxStep        = origTask.MaxStep;
                task.arrowSuspended = origTask.arrowSuspended;
                task.ShowTaskTimer  = origTask.ShowTaskTimer;
                task.ShowTaskStep   = origTask.ShowTaskStep;
                task.TaskTimer      = origTask.TaskTimer;
                task.TimerStarted   = origTask.TimerStarted;
                task.TaskType       = origTask.TaskType;
                task.MinigamePrefab = origTask.MinigamePrefab;
                task.HasLocation    = origTask.HasLocation;
                task.LocationDirty  = origTask.LocationDirty;

                if (taskData.TaskType == TaskType.Common)
                {
                    polus.shipStatus.CommonTasks = AssetHelper.AddToArr(polus.shipStatus.CommonTasks, task);
                }
                if (taskData.TaskType == TaskType.Short)
                {
                    polus.shipStatus.NormalTasks = AssetHelper.AddToArr(polus.shipStatus.NormalTasks, task);
                }
                if (taskData.TaskType == TaskType.Long)
                {
                    polus.shipStatus.LongTasks = AssetHelper.AddToArr(polus.shipStatus.LongTasks, task);
                }
            }

            // Colliders
            AssetHelper.BuildColliders(asset, obj, taskData.Scale);

            // Add to Polus
            polus.shipStatus.AllConsoles = AssetHelper.AddToArr(polus.shipStatus.AllConsoles, console);
            polus.Add(obj, asset, taskData.Scale);
            return(true);
        }