Exemple #1
0
    private void SetAnimToInfo()
    {
        GameObject               gameObject = Util.KInstantiate(Assets.GetPrefab("Meter".ToTag()), base.gameObject, null);
        GameObject               prefab     = Assets.GetPrefab(info.id);
        KBatchedAnimController   component  = GetComponent <KBatchedAnimController>();
        KBatchedAnimController   component2 = prefab.GetComponent <KBatchedAnimController>();
        SymbolOverrideController component3 = prefab.GetComponent <SymbolOverrideController>();
        KBatchedAnimController   component4 = gameObject.GetComponent <KBatchedAnimController>();

        component4.transform.SetLocalPosition(Vector3.forward);
        component4.AnimFiles  = component2.AnimFiles;
        component4.isMovable  = true;
        component4.animWidth  = component2.animWidth;
        component4.animHeight = component2.animHeight;
        if ((Object)component3 != (Object)null)
        {
            SymbolOverrideController symbolOverrideController         = SymbolOverrideControllerUtil.AddToPrefab(gameObject);
            SymbolOverrideController.SymbolEntry[] getSymbolOverrides = component3.GetSymbolOverrides;
            for (int i = 0; i < getSymbolOverrides.Length; i++)
            {
                SymbolOverrideController.SymbolEntry symbolEntry = getSymbolOverrides[i];
                symbolOverrideController.AddSymbolOverride(symbolEntry.targetSymbol, symbolEntry.sourceSymbol, 0);
            }
        }
        component4.initialAnim = component2.initialAnim;
        component4.initialMode = KAnim.PlayMode.Loop;
        KBatchedAnimTracker component5 = gameObject.GetComponent <KBatchedAnimTracker>();

        component5.controller = component;
        component5.symbol     = new HashedString("snapTO_object");
        component5.offset     = new Vector3(0f, 0.5f, 0f);
        gameObject.SetActive(true);
        component.SetSymbolVisiblity("snapTO_object", false);
        new KAnimLink(component, component4);
    }
    public void AddAnims(KAnimFile anim_file)
    {
        KAnimFileData data = anim_file.GetData();

        if (data == null)
        {
            Debug.LogError("AddAnims() Null animfile data");
        }
        else
        {
            maxSymbols = Mathf.Max(maxSymbols, data.maxVisSymbolFrames);
            for (int i = 0; i < data.animCount; i++)
            {
                KAnim.Anim anim = data.GetAnim(i);
                if (anim.animFile.hashName != data.hashName)
                {
                    Debug.LogErrorFormat("How did we get an anim from another file? [{0}] != [{1}] for anim [{2}]", data.name, anim.animFile.name, i);
                }
                anims[anim.hash] = new AnimLookupData
                {
                    animIndex = anim.index
                };
            }
            if (usingNewSymbolOverrideSystem && data.buildIndex != -1 && data.build.symbols != null && data.build.symbols.Length > 0)
            {
                SymbolOverrideController component = GetComponent <SymbolOverrideController>();
                component.AddBuildOverride(anim_file.GetData(), -1);
            }
        }
    }
Exemple #3
0
    public static void AddHat(string hat_id, KBatchedAnimController controller)
    {
        AccessorySlot hat       = Db.Get().AccessorySlots.Hat;
        Accessory     accessory = hat.Lookup(hat_id);

        if (accessory == null)
        {
            Debug.LogWarning("Missing hat: " + hat_id);
        }
        Accessorizer component = controller.GetComponent <Accessorizer>();

        if ((UnityEngine.Object)component != (UnityEngine.Object)null)
        {
            Accessory accessory2 = component.GetAccessory(Db.Get().AccessorySlots.Hat);
            if (accessory2 != null)
            {
                component.RemoveAccessory(accessory2);
            }
            if (accessory != null)
            {
                component.AddAccessory(accessory);
            }
        }
        else
        {
            SymbolOverrideController component2 = controller.GetComponent <SymbolOverrideController>();
            component2.TryRemoveSymbolOverride(hat.targetSymbolId, 4);
            component2.AddSymbolOverride(hat.targetSymbolId, accessory.symbol, 4);
        }
        controller.SetSymbolVisiblity(hat.targetSymbolId, true);
        controller.SetSymbolVisiblity(Db.Get().AccessorySlots.HatHair.targetSymbolId, true);
        controller.SetSymbolVisiblity(Db.Get().AccessorySlots.Hair.targetSymbolId, false);
    }
    public void RemoveAccessory(Accessory accessory)
    {
        accessories.RemoveAll((ResourceRef <Accessory> x) => x.Get() == accessory);
        SymbolOverrideController component = animController.GetComponent <SymbolOverrideController>();

        component.TryRemoveSymbolOverride(accessory.slot.targetSymbolId, 0);
    }
Exemple #5
0
 protected override void OnAwake()
 {
     LoadAnims();
     if (visibilityType == VisibilityType.Default)
     {
         visibilityType = ((materialType != KAnimBatchGroup.MaterialType.UI) ? visibilityType : VisibilityType.Always);
     }
     symbolOverrideController = GetComponent <SymbolOverrideController>();
     UpdateHidden();
     hasEnableRun = false;
 }
Exemple #6
0
    private static void AddMouthOverride(Instance smi)
    {
        SymbolOverrideController component  = smi.GetComponent <SymbolOverrideController>();
        KBatchedAnimController   component2 = smi.GetComponent <KBatchedAnimController>();

        KAnim.Build.Symbol symbol = component2.AnimFiles[0].GetData().build.GetSymbol("sq_mouth_cheeks");
        if (symbol != null)
        {
            component.AddSymbolOverride("sq_mouth", symbol, 0);
        }
    }
Exemple #7
0
        // сам носимый баллон:

        // внедряем в FX-объект баллона контроллер подмены анимации
        // вытаскиваем индекс из носителя и применяем подмену символа анимации
        // запоминаем ссылку на новый FX-объект
        private static void ApplySymbolOverrideBalloonFX(BalloonFX.Instance smi, KBatchedAnimController kbac)
        {
            kbac.usingNewSymbolOverrideSystem = true;
            SymbolOverrideController   symbolOverrideController = SymbolOverrideControllerUtil.AddToPrefab(kbac.gameObject);
            VaricolouredBalloonsHelper receiver = smi.master.GetComponent <VaricolouredBalloonsHelper>();

            if (receiver != null)
            {
                receiver.fx = smi;
                VaricolouredBalloonsHelper.ApplySymbolOverrideByIdx(symbolOverrideController, receiver.ReceiverBalloonSymbolIdx);
            }
        }
        public void LayEgg()
        {
            fertility.value = 0f;
            Vector3 position = base.smi.transform.GetPosition();

            position.z = Grid.GetLayerZ(Grid.SceneLayer.Ore);
            float num     = UnityEngine.Random.value;
            Tag   invalid = Tag.Invalid;

            foreach (BreedingChance breedingChance in breedingChances)
            {
                num -= breedingChance.weight;
                if (num <= 0f)
                {
                    invalid = breedingChance.egg;
                    break;
                }
            }
            if (GenericGameSettings.instance.acceleratedLifecycle)
            {
                float num2 = 0f;
                foreach (BreedingChance breedingChance2 in breedingChances)
                {
                    if (breedingChance2.weight > num2)
                    {
                        num2    = breedingChance2.weight;
                        invalid = breedingChance2.egg;
                    }
                }
            }
            Debug.Assert(invalid != Tag.Invalid, "Didn't pick an egg to lay. Weights weren't normalized?");
            GameObject prefab     = Assets.GetPrefab(invalid);
            GameObject gameObject = egg = Util.KInstantiate(prefab, position);
            SymbolOverrideController component = GetComponent <SymbolOverrideController>();
            string str = "egg01";

            IncubationMonitor.Def def        = prefab.GetDef <IncubationMonitor.Def>();
            CreatureBrain         component2 = Assets.GetPrefab(def.spawnedCreature).GetComponent <CreatureBrain>();

            if (!string.IsNullOrEmpty(component2.symbolPrefix))
            {
                str = component2.symbolPrefix + "egg01";
            }
            KAnim.Build.Symbol symbol = egg.GetComponent <KBatchedAnimController>().AnimFiles[0].GetData().build.GetSymbol(str);
            if (symbol != null)
            {
                component.AddSymbolOverride(targetEggSymbol, symbol, 0);
            }
            Trigger(1193600993, egg);
        }
 public void AddAccessory(Accessory accessory)
 {
     if (accessory != null)
     {
         SymbolOverrideController component = animController.GetComponent <SymbolOverrideController>();
         component.AddSymbolOverride(accessory.slot.targetSymbolId, accessory.symbol, 0);
         if (!HasAccessory(accessory))
         {
             ResourceRef <Accessory> resourceRef = new ResourceRef <Accessory>(accessory);
             if (resourceRef != null)
             {
                 accessories.Add(resourceRef);
             }
         }
     }
 }
Exemple #10
0
    private void DoAttachSnapOn(SnapPoint point)
    {
        OverrideEntry value       = null;
        KAnimFile     buildFile   = point.buildFile;
        string        symbol_name = string.Empty;

        if (overrideMap.TryGetValue(point.pointName, out value))
        {
            buildFile   = value.buildFile;
            symbol_name = value.symbolName;
        }
        KAnim.Build.Symbol       symbol    = GetSymbol(buildFile, symbol_name);
        SymbolOverrideController component = GetComponent <SymbolOverrideController>();

        component.AddSymbolOverride(point.overrideSymbol, symbol, 5);
        kanimController.SetSymbolVisiblity(point.overrideSymbol, true);
    }
 public override void InitializeStates(out BaseState default_state)
 {
     default_state = idle;
     idle.ToggleMainStatusItem(Db.Get().BuildingStatusItems.Baited).Enter(delegate(StatesInstance smi)
     {
         Element element                    = ElementLoader.FindElementByName(smi.master.baitElement.ToString());
         KAnim.Build build                  = element.substance.anim.GetData().build;
         KAnim.Build.Symbol symbol          = build.GetSymbol(new KAnimHashedString(build.name));
         HashedString target_symbol         = "snapTo_bait";
         SymbolOverrideController component = smi.GetComponent <SymbolOverrideController>();
         component.AddSymbolOverride(target_symbol, symbol, 0);
     }).TagTransition(GameTags.LureUsed, destroy, false);
     destroy.PlayAnim("use").EventHandler(GameHashes.AnimQueueComplete, delegate(StatesInstance smi)
     {
         Util.KDestroyGameObject(smi.master.gameObject);
     });
 }
 public void AddAnimOverrides(KAnimFile kanim_file, float priority = 0f)
 {
     Debug.Assert((UnityEngine.Object)kanim_file != (UnityEngine.Object)null);
     if (kanim_file.GetData().build != null && kanim_file.GetData().build.symbols.Length > 0)
     {
         SymbolOverrideController component = GetComponent <SymbolOverrideController>();
         DebugUtil.Assert((UnityEngine.Object)component != (UnityEngine.Object)null, "Anim overrides containing additional symbols require a symbol override controller.");
         component.AddBuildOverride(kanim_file.GetData(), 0);
     }
     overrideAnimFiles.Add(new OverrideAnimFileData
     {
         priority = priority,
         file     = kanim_file
     });
     overrideAnimFiles.Sort((OverrideAnimFileData a, OverrideAnimFileData b) => b.priority.CompareTo(a.priority));
     RebuildOverrides(kanim_file);
 }
Exemple #13
0
 public void DetachSnapOnByName(string name)
 {
     foreach (SnapPoint snapPoint in snapPoints)
     {
         if (snapPoint.pointName == name)
         {
             HashedString context = GetComponent <AnimEventHandler>().GetContext();
             if (!context.IsValid || !snapPoint.context.IsValid || context == snapPoint.context)
             {
                 SymbolOverrideController component = GetComponent <SymbolOverrideController>();
                 component.RemoveSymbolOverride(snapPoint.overrideSymbol, 5);
                 kanimController.SetSymbolVisiblity(snapPoint.overrideSymbol, false);
                 break;
             }
         }
     }
 }
Exemple #14
0
    public static GameObject ExtendEntityToFertileCreature(GameObject prefab, string eggId, string eggName, string eggDesc, string egg_anim, float egg_mass, string baby_id, float fertility_cycles, float incubation_cycles, List <FertilityMonitor.BreedingChance> egg_chances, int eggSortOrder = -1, bool is_ranchable = true, bool add_fish_overcrowding_monitor = false, bool add_fixed_capturable_monitor = true, float egg_anim_scale = 1f)
    {
        FertilityMonitor.Def def = prefab.AddOrGetDef <FertilityMonitor.Def>();
        def.baseFertileCycles = fertility_cycles;
        DebugUtil.DevAssert(eggSortOrder > -1, "Added a fertile creature without an egg sort order!");
        float      base_incubation_rate = 100f / (600f * incubation_cycles);
        GameObject gameObject           = EggConfig.CreateEgg(eggId, eggName, eggDesc, baby_id, egg_anim, egg_mass, eggSortOrder, base_incubation_rate);

        def.eggPrefab = new Tag(eggId);
        def.initialBreedingWeights = egg_chances;
        if (egg_anim_scale != 1f)
        {
            KBatchedAnimController component = gameObject.GetComponent <KBatchedAnimController>();
            component.animWidth  = egg_anim_scale;
            component.animHeight = egg_anim_scale;
        }
        KPrefabID egg_prefab_id = gameObject.GetComponent <KPrefabID>();
        SymbolOverrideController symbol_override_controller = SymbolOverrideControllerUtil.AddToPrefab(gameObject);
        string symbolPrefix = prefab.GetComponent <CreatureBrain>().symbolPrefix;

        if (!string.IsNullOrEmpty(symbolPrefix))
        {
            symbol_override_controller.ApplySymbolOverridesByAffix(Assets.GetAnim(egg_anim), symbolPrefix, null, 0);
        }
        KPrefabID creature_prefab_id = prefab.GetComponent <KPrefabID>();

        creature_prefab_id.prefabSpawnFn += delegate
        {
            WorldInventory.Instance.Discover(eggId.ToTag(), WorldInventory.GetCategoryForTags(egg_prefab_id.Tags));
            WorldInventory.Instance.Discover(baby_id.ToTag(), WorldInventory.GetCategoryForTags(creature_prefab_id.Tags));
        };
        if (is_ranchable)
        {
            prefab.AddOrGetDef <RanchableMonitor.Def>();
        }
        if (add_fixed_capturable_monitor)
        {
            prefab.AddOrGetDef <FixedCapturableMonitor.Def>();
        }
        if (add_fish_overcrowding_monitor)
        {
            gameObject.AddOrGetDef <FishOvercrowdingMonitor.Def>();
        }
        return(prefab);
    }
Exemple #15
0
 public override void InitializeStates(out BaseState default_state)
 {
     default_state = idle;
     idle.PlayAnim("off", KAnim.PlayMode.Loop).Enter(delegate(StatesInstance smi)
     {
         if (smi.master.activeBaitSetting != Tag.Invalid)
         {
             if (smi.master.baitStorage.IsEmpty())
             {
                 smi.master.CreateFetchChore();
             }
             else if (smi.master.operational.IsOperational)
             {
                 smi.GoTo(working);
             }
         }
     }).EventTransition(GameHashes.OnStorageChange, working, (StatesInstance smi) => !smi.master.baitStorage.IsEmpty() && smi.master.activeBaitSetting != Tag.Invalid && smi.master.operational.IsOperational)
     .EventTransition(GameHashes.OperationalChanged, working, (StatesInstance smi) => !smi.master.baitStorage.IsEmpty() && smi.master.activeBaitSetting != Tag.Invalid && smi.master.operational.IsOperational);
     working.Enter(delegate(StatesInstance smi)
     {
         smi.master.GetComponent <KSelectable>().RemoveStatusItem(Db.Get().BuildingStatusItems.AwaitingBaitDelivery, false);
         HashedString batchTag              = ElementLoader.FindElementByName(smi.master.activeBaitSetting.ToString()).substance.anim.batchTag;
         KAnim.Build build                  = ElementLoader.FindElementByName(smi.master.activeBaitSetting.ToString()).substance.anim.GetData().build;
         KAnim.Build.Symbol symbol          = build.GetSymbol(new KAnimHashedString(build.name));
         HashedString target_symbol         = "slime_mold";
         SymbolOverrideController component = smi.GetComponent <SymbolOverrideController>();
         component.TryRemoveSymbolOverride(target_symbol, 0);
         component.AddSymbolOverride(target_symbol, symbol, 0);
         smi.GetSMI <Lure.Instance>().SetActiveLures(new Tag[1]
         {
             smi.master.activeBaitSetting
         });
     }).Exit(ClearBait).QueueAnim("working_pre", false, null)
     .QueueAnim("working_loop", true, null)
     .EventTransition(GameHashes.OnStorageChange, empty, (StatesInstance smi) => smi.master.baitStorage.IsEmpty() && smi.master.activeBaitSetting != Tag.Invalid)
     .EventTransition(GameHashes.OperationalChanged, idle, (StatesInstance smi) => !smi.master.operational.IsOperational && !smi.master.baitStorage.IsEmpty());
     empty.QueueAnim("working_pst", false, null).QueueAnim("off", false, null).Enter(delegate(StatesInstance smi)
     {
         smi.master.CreateFetchChore();
     })
     .EventTransition(GameHashes.OnStorageChange, working, (StatesInstance smi) => !smi.master.baitStorage.IsEmpty() && smi.master.operational.IsOperational)
     .EventTransition(GameHashes.OperationalChanged, working, (StatesInstance smi) => !smi.master.baitStorage.IsEmpty() && smi.master.operational.IsOperational);
 }
 public void RemoveAnimOverrides(KAnimFile kanim_file)
 {
     Debug.Assert((UnityEngine.Object)kanim_file != (UnityEngine.Object)null);
     if (kanim_file.GetData().build != null && kanim_file.GetData().build.symbols.Length > 0)
     {
         SymbolOverrideController component = GetComponent <SymbolOverrideController>();
         DebugUtil.Assert((UnityEngine.Object)component != (UnityEngine.Object)null, "Anim overrides containing additional symbols require a symbol override controller.");
         component.TryRemoveBuildOverride(kanim_file.GetData(), 0);
     }
     for (int i = 0; i < overrideAnimFiles.Count; i++)
     {
         OverrideAnimFileData overrideAnimFileData = overrideAnimFiles[i];
         if ((UnityEngine.Object)overrideAnimFileData.file == (UnityEngine.Object)kanim_file)
         {
             overrideAnimFiles.RemoveAt(i);
             break;
         }
     }
     RebuildOverrides(kanim_file);
 }
Exemple #17
0
    protected override void OnStart()
    {
        if (batch == null)
        {
            Initialize();
        }
        if (visibilityType == VisibilityType.Always || visibilityType == VisibilityType.OffscreenUpdate)
        {
            ConfigureUpdateListener();
        }
        CellChangeMonitor instance = Singleton <CellChangeMonitor> .Instance;

        if (instance != null)
        {
            instance.RegisterMovementStateChanged(base.transform, OnMovementStateChanged);
            moving = instance.IsMoving(base.transform);
        }
        symbolOverrideController = GetComponent <SymbolOverrideController>();
        SetDirty();
    }
    private void HideHelmet()
    {
        is_shown = false;
        KBatchedAnimController assigneeController = GetAssigneeController();

        if (!((Object)assigneeController == (Object)null))
        {
            KAnimHashedString kAnimHashedString = "snapTo_neck";
            if (!string.IsNullOrEmpty(anim_file))
            {
                SymbolOverrideController component = assigneeController.GetComponent <SymbolOverrideController>();
                if ((Object)component == (Object)null)
                {
                    return;
                }
                component.RemoveSymbolOverride(kAnimHashedString, 6);
            }
            assigneeController.SetSymbolVisiblity(kAnimHashedString, false);
            UpdateJets();
        }
    }
Exemple #19
0
 private void DisplayDuplicants(RetiredColonyData data, GameObject container, int range_min = -1, int range_max = -1)
 {
     for (int num = container.transform.childCount - 1; num >= 0; num--)
     {
         UnityEngine.Object.DestroyImmediate(container.transform.GetChild(num).gameObject);
     }
     for (int i = 0; i < data.Duplicants.Length; i++)
     {
         if (i < range_min || (i > range_max && range_max != -1))
         {
             GameObject gameObject = new GameObject();
             gameObject.transform.SetParent(container.transform);
         }
         else
         {
             RetiredColonyData.RetiredDuplicantData retiredDuplicantData = data.Duplicants[i];
             GameObject          gameObject2 = Util.KInstantiateUI(duplicantPrefab, container, true);
             HierarchyReferences component   = gameObject2.GetComponent <HierarchyReferences>();
             component.GetReference <LocText>("NameLabel").SetText(retiredDuplicantData.name);
             component.GetReference <LocText>("AgeLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.DUPLICANT_AGE, retiredDuplicantData.age.ToString()));
             component.GetReference <LocText>("SkillLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.SKILL_LEVEL, retiredDuplicantData.skillPointsGained.ToString()));
             SymbolOverrideController reference = component.GetReference <SymbolOverrideController>("SymbolOverrideController");
             reference.RemoveAllSymbolOverrides(0);
             KBatchedAnimController componentInChildren = gameObject2.GetComponentInChildren <KBatchedAnimController>();
             componentInChildren.SetSymbolVisiblity("snapTo_neck", false);
             componentInChildren.SetSymbolVisiblity("snapTo_goggles", false);
             componentInChildren.SetSymbolVisiblity("snapTo_hat", false);
             componentInChildren.SetSymbolVisiblity("snapTo_hat_hair", false);
             foreach (KeyValuePair <string, string> accessory in retiredDuplicantData.accessories)
             {
                 KAnim.Build.Symbol symbol        = Db.Get().Accessories.Get(accessory.Value).symbol;
                 AccessorySlot      accessorySlot = Db.Get().AccessorySlots.Get(accessory.Key);
                 reference.AddSymbolOverride(accessorySlot.targetSymbolId, symbol, 0);
                 gameObject2.GetComponentInChildren <KBatchedAnimController>().SetSymbolVisiblity(accessory.Key, true);
             }
             reference.ApplyOverrides();
         }
     }
     StartCoroutine(ActivatePortraitsWhenReady(container));
 }
        private void FillFeeder(float mass)
        {
            KBatchedAnimController   component  = smi.GetComponent <KBatchedAnimController>();
            SymbolOverrideController component2 = smi.GetComponent <SymbolOverrideController>();

            KAnim.Build.Symbol symbol     = null;
            Storage            component3 = smi.GetComponent <Storage>();

            if (component3.items.Count > 0 && (Object)component3.items[0] != (Object)null)
            {
                symbol = smi.GetComponent <Storage>().items[0].GetComponent <KBatchedAnimController>().AnimFiles[0].GetData().build.GetSymbol("algae");
            }
            for (int i = 0; i < ballSymbols.Length; i++)
            {
                bool is_visible = mass > (float)(i + 1) * massPerBall;
                component.SetSymbolVisiblity(ballSymbols[i], is_visible);
                if (symbol != null)
                {
                    component2.AddSymbolOverride(ballSymbols[i], symbol, 0);
                }
            }
        }
Exemple #21
0
    protected virtual List <GameObject> SpawnOrderProduct(ComplexRecipe recipe)
    {
        List <GameObject> list = new List <GameObject>();

        SimUtil.DiseaseInfo diseaseInfo = default(SimUtil.DiseaseInfo);
        diseaseInfo.count = 0;
        diseaseInfo.idx   = 0;
        float num  = 0f;
        float num2 = 0f;

        ComplexRecipe.RecipeElement[] ingredients = recipe.ingredients;
        foreach (ComplexRecipe.RecipeElement recipeElement in ingredients)
        {
            num2 += recipeElement.amount;
        }
        ComplexRecipe.RecipeElement[] ingredients2 = recipe.ingredients;
        foreach (ComplexRecipe.RecipeElement recipeElement2 in ingredients2)
        {
            float num3 = recipeElement2.amount / num2;
            buildStorage.ConsumeAndGetDisease(recipeElement2.material, recipeElement2.amount, out SimUtil.DiseaseInfo disease_info, out float aggregate_temperature);
            if (disease_info.count > diseaseInfo.count)
            {
                diseaseInfo = disease_info;
            }
            num += aggregate_temperature * num3;
        }
        ComplexRecipe.RecipeElement[] results = recipe.results;
        foreach (ComplexRecipe.RecipeElement recipeElement3 in results)
        {
            GameObject gameObject = buildStorage.FindFirst(recipeElement3.material);
            if ((UnityEngine.Object)gameObject != (UnityEngine.Object)null)
            {
                Edible component = gameObject.GetComponent <Edible>();
                if ((bool)component)
                {
                    ReportManager.Instance.ReportValue(ReportManager.ReportType.CaloriesCreated, 0f - component.Calories, StringFormatter.Replace(UI.ENDOFDAYREPORT.NOTES.CRAFTED_USED, "{0}", component.GetProperName()), UI.ENDOFDAYREPORT.NOTES.CRAFTED_CONTEXT);
                }
            }
            switch (resultState)
            {
            case ResultState.PassTemperature:
            case ResultState.Heated:
            {
                GameObject prefab      = Assets.GetPrefab(recipeElement3.material);
                GameObject gameObject2 = GameUtil.KInstantiate(prefab, Grid.SceneLayer.Ore, null, 0);
                int        cell        = Grid.PosToCell(this);
                gameObject2.transform.SetPosition(Grid.CellToPosCCC(cell, Grid.SceneLayer.Ore) + outputOffset);
                PrimaryElement component2 = gameObject2.GetComponent <PrimaryElement>();
                component2.Units       = recipeElement3.amount;
                component2.Temperature = ((resultState != 0) ? heatedTemperature : num);
                gameObject2.SetActive(true);
                float num4 = recipeElement3.amount / recipe.TotalResultUnits();
                component2.AddDisease(diseaseInfo.idx, Mathf.RoundToInt((float)diseaseInfo.count * num4), "ComplexFabricator.CompleteOrder");
                gameObject2.GetComponent <KMonoBehaviour>().Trigger(748399584, null);
                list.Add(gameObject2);
                if (storeProduced)
                {
                    outStorage.Store(gameObject2, false, false, true, false);
                }
                break;
            }

            case ResultState.Melted:
                if (storeProduced)
                {
                    float temperature = ElementLoader.GetElement(recipeElement3.material).lowTemp + (ElementLoader.GetElement(recipeElement3.material).highTemp - ElementLoader.GetElement(recipeElement3.material).lowTemp) / 2f;
                    outStorage.AddLiquid(ElementLoader.GetElementID(recipeElement3.material), recipeElement3.amount, temperature, 0, 0, false, true);
                }
                break;
            }
            if (list.Count > 0)
            {
                SymbolOverrideController component3 = GetComponent <SymbolOverrideController>();
                if ((UnityEngine.Object)component3 != (UnityEngine.Object)null)
                {
                    KBatchedAnimController component4 = list[0].GetComponent <KBatchedAnimController>();
                    KAnim.Build            build      = component4.AnimFiles[0].GetData().build;
                    KAnim.Build.Symbol     symbol     = build.GetSymbol(build.name);
                    if (symbol != null)
                    {
                        component3.TryRemoveSymbolOverride("output_tracker", 0);
                        component3.AddSymbolOverride("output_tracker", symbol, 0);
                    }
                    else
                    {
                        Debug.LogWarning(component3.name + " is missing symbol " + build.name);
                    }
                }
            }
        }
        return(list);
    }
Exemple #22
0
    private static void RemoveMouthOverride(Instance smi)
    {
        SymbolOverrideController component = smi.GetComponent <SymbolOverrideController>();

        component.TryRemoveSymbolOverride("sq_mouth", 0);
    }
Exemple #23
0
    public GameObject CreatePrefab()
    {
        string     name       = DUPLICANTS.MODIFIERS.BASEDUPLICANT.NAME;
        GameObject gameObject = EntityTemplates.CreateEntity(ID, name, true);

        gameObject.AddOrGet <StateMachineController>();
        MinionModifiers modifiers = gameObject.AddOrGet <MinionModifiers>();

        AddMinionAmounts(modifiers);
        AddMinionTraits(name, modifiers);
        gameObject.AddOrGet <MinionBrain>();
        gameObject.AddOrGet <KPrefabID>().AddTag(GameTags.DupeBrain, false);
        gameObject.AddOrGet <Worker>();
        gameObject.AddOrGet <ChoreConsumer>();
        Storage storage = gameObject.AddOrGet <Storage>();

        storage.fxPrefix   = Storage.FXPrefix.PickedUp;
        storage.dropOnLoad = true;
        storage.SetDefaultStoredItemModifiers(new List <Storage.StoredItemModifier>
        {
            Storage.StoredItemModifier.Preserve,
            Storage.StoredItemModifier.Seal
        });
        gameObject.AddOrGet <Health>();
        OxygenBreather oxygenBreather = gameObject.AddOrGet <OxygenBreather>();

        oxygenBreather.O2toCO2conversion  = 0.02f;
        oxygenBreather.lowOxygenThreshold = 0.52f;
        oxygenBreather.noOxygenThreshold  = 0.05f;
        oxygenBreather.mouthOffset        = new Vector2f(0.25f, 0.7f);
        oxygenBreather.minCO2ToEmit       = 0.02f;
        oxygenBreather.breathableCells    = new CellOffset[6]
        {
            new CellOffset(0, 0),
            new CellOffset(0, 1),
            new CellOffset(1, 1),
            new CellOffset(-1, 1),
            new CellOffset(1, 0),
            new CellOffset(-1, 0)
        };
        gameObject.AddOrGet <WarmBlooded>();
        gameObject.AddOrGet <MinionIdentity>();
        GridVisibility gridVisibility = gameObject.AddOrGet <GridVisibility>();

        gridVisibility.radius      = 30f;
        gridVisibility.innerRadius = 20f;
        gameObject.AddOrGet <MiningSounds>();
        gameObject.AddOrGet <SaveLoadRoot>();
        gameObject.AddOrGet <AntiCluster>();
        Navigator navigator = gameObject.AddOrGet <Navigator>();

        navigator.NavGridName    = "MinionNavGrid";
        navigator.CurrentNavType = NavType.Floor;
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.isMovable  = true;
        kBatchedAnimController.sceneLayer = Grid.SceneLayer.Move;
        kBatchedAnimController.AnimFiles  = new KAnimFile[8]
        {
            Assets.GetAnim("body_comp_default_kanim"),
            Assets.GetAnim("anim_construction_default_kanim"),
            Assets.GetAnim("anim_idles_default_kanim"),
            Assets.GetAnim("anim_loco_firepole_kanim"),
            Assets.GetAnim("anim_loco_new_kanim"),
            Assets.GetAnim("anim_loco_tube_kanim"),
            Assets.GetAnim("anim_construction_firepole_kanim"),
            Assets.GetAnim("anim_construction_jetsuit_kanim")
        };
        KBoxCollider2D kBoxCollider2D = gameObject.AddOrGet <KBoxCollider2D>();

        kBoxCollider2D.offset = new Vector2(0f, 0.8f);
        kBoxCollider2D.size   = new Vector2(1f, 1.5f);
        SnapOn snapOn = gameObject.AddOrGet <SnapOn>();

        snapOn.snapPoints = new List <SnapOn.SnapPoint>(new SnapOn.SnapPoint[17]
        {
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"dig",
                buildFile      = Assets.GetAnim("excavator_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"build",
                buildFile      = Assets.GetAnim("constructor_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"fetchliquid",
                buildFile      = Assets.GetAnim("water_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"paint",
                buildFile      = Assets.GetAnim("painting_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"harvest",
                buildFile      = Assets.GetAnim("plant_harvester_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"capture",
                buildFile      = Assets.GetAnim("net_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"attack",
                buildFile      = Assets.GetAnim("attack_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"pickup",
                buildFile      = Assets.GetAnim("pickupdrop_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"store",
                buildFile      = Assets.GetAnim("pickupdrop_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"disinfect",
                buildFile      = Assets.GetAnim("plant_spray_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"tend",
                buildFile      = Assets.GetAnim("plant_harvester_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "carry",
                automatic      = false,
                context        = (HashedString)string.Empty,
                buildFile      = null,
                overrideSymbol = (HashedString)"snapTo_chest"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "build",
                automatic      = false,
                context        = (HashedString)string.Empty,
                buildFile      = null,
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "remote",
                automatic      = false,
                context        = (HashedString)string.Empty,
                buildFile      = null,
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "snapTo_neck",
                automatic      = false,
                context        = (HashedString)string.Empty,
                buildFile      = Assets.GetAnim("helm_oxygen_kanim"),
                overrideSymbol = (HashedString)"snapTo_neck"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"powertinker",
                buildFile      = Assets.GetAnim("electrician_gun_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            },
            new SnapOn.SnapPoint
            {
                pointName      = "dig",
                automatic      = false,
                context        = (HashedString)"specialistdig",
                buildFile      = Assets.GetAnim("excavator_kanim"),
                overrideSymbol = (HashedString)"snapTo_rgtHand"
            }
        });
        gameObject.AddOrGet <Effects>();
        gameObject.AddOrGet <Traits>();
        gameObject.AddOrGet <AttributeLevels>();
        gameObject.AddOrGet <AttributeConverters>();
        PrimaryElement primaryElement = gameObject.AddOrGet <PrimaryElement>();

        primaryElement.InternalTemperature = 310.15f;
        primaryElement.MassPerUnit         = 30f;
        primaryElement.ElementID           = SimHashes.Creature;
        gameObject.AddOrGet <ChoreProvider>();
        gameObject.AddOrGetDef <DebugGoToMonitor.Def>();
        gameObject.AddOrGetDef <SpeechMonitor.Def>();
        gameObject.AddOrGetDef <BlinkMonitor.Def>();
        gameObject.AddOrGetDef <ConversationMonitor.Def>();
        gameObject.AddOrGet <Sensors>();
        gameObject.AddOrGet <Chattable>();
        gameObject.AddOrGet <FaceGraph>();
        gameObject.AddOrGet <Accessorizer>();
        gameObject.AddOrGet <Schedulable>();
        LoopingSounds loopingSounds = gameObject.AddOrGet <LoopingSounds>();

        loopingSounds.updatePosition = true;
        gameObject.AddOrGet <AnimEventHandler>();
        FactionAlignment factionAlignment = gameObject.AddOrGet <FactionAlignment>();

        factionAlignment.Alignment = FactionManager.FactionID.Duplicant;
        gameObject.AddOrGet <Weapon>();
        gameObject.AddOrGet <RangedAttackable>();
        gameObject.AddOrGet <CharacterOverlay>();
        OccupyArea occupyArea = gameObject.AddOrGet <OccupyArea>();

        occupyArea.objectLayers         = new ObjectLayer[1];
        occupyArea.ApplyToCells         = false;
        occupyArea.OccupiedCellsOffsets = new CellOffset[2]
        {
            new CellOffset(0, 0),
            new CellOffset(0, 1)
        };
        gameObject.AddOrGet <Pickupable>();
        CreatureSimTemperatureTransfer creatureSimTemperatureTransfer = gameObject.AddOrGet <CreatureSimTemperatureTransfer>();

        creatureSimTemperatureTransfer.SurfaceArea = 10f;
        creatureSimTemperatureTransfer.Thickness   = 0.01f;
        gameObject.AddOrGet <SicknessTrigger>();
        gameObject.AddOrGet <ClothingWearer>();
        gameObject.AddOrGet <SuitEquipper>();
        DecorProvider decorProvider = gameObject.AddOrGet <DecorProvider>();

        decorProvider.baseRadius = 3f;
        decorProvider.isMovable  = true;
        gameObject.AddOrGet <ConsumableConsumer>();
        gameObject.AddOrGet <NoiseListener>();
        gameObject.AddOrGet <MinionResume>();
        DuplicantNoiseLevels.SetupNoiseLevels();
        SetupLaserEffects(gameObject);
        SymbolOverrideController symbolOverrideController = SymbolOverrideControllerUtil.AddToPrefab(gameObject);

        symbolOverrideController.applySymbolOverridesEveryFrame = true;
        ConfigureSymbols(gameObject);
        return(gameObject);
    }
Exemple #24
0
    protected override void OnSpawn()
    {
        if (addToIdentityList)
        {
            ValidateProxy();
            CleanupLimboMinions();
        }
        PathProber component = GetComponent <PathProber>();

        if ((UnityEngine.Object)component != (UnityEngine.Object)null)
        {
            component.SetGroupProber(MinionGroupProber.Get());
        }
        SetName(name);
        if (nameStringKey == null)
        {
            nameStringKey = name;
        }
        SetGender(gender);
        if (genderStringKey == null)
        {
            genderStringKey = "NB";
        }
        if (addToIdentityList)
        {
            Components.MinionIdentities.Add(this);
            if (!base.gameObject.HasTag(GameTags.Dead))
            {
                Components.LiveMinionIdentities.Add(this);
            }
        }
        SymbolOverrideController component2 = GetComponent <SymbolOverrideController>();

        if ((UnityEngine.Object)component2 != (UnityEngine.Object)null)
        {
            Accessorizer component3 = base.gameObject.GetComponent <Accessorizer>();
            if ((UnityEngine.Object)component3 != (UnityEngine.Object)null)
            {
                bodyData = default(KCompBuilder.BodyData);
                component3.GetBodySlots(ref bodyData);
                string text = HashCache.Get().Get(component3.GetAccessory(Db.Get().AccessorySlots.HeadShape).symbol.hash);
                string str  = text.Replace("headshape", "cheek");
                component2.AddSymbolOverride("snapto_cheek", Assets.GetAnim("head_swap_kanim").GetData().build.GetSymbol(str), 1);
                component2.AddSymbolOverride(Db.Get().AccessorySlots.HairAlways.targetSymbolId, component3.GetAccessory(Db.Get().AccessorySlots.Hair).symbol, 1);
                component2.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component3.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
            }
        }
        voiceId  = "0";
        voiceId += (voiceIdx + 1).ToString();
        Prioritizable component4 = GetComponent <Prioritizable>();

        if ((UnityEngine.Object)component4 != (UnityEngine.Object)null)
        {
            component4.showIcon = false;
        }
        Pickupable component5 = GetComponent <Pickupable>();

        if ((UnityEngine.Object)component5 != (UnityEngine.Object)null)
        {
            component5.carryAnimOverride = Assets.GetAnim("anim_incapacitated_carrier_kanim");
        }
        ApplyCustomGameSettings();
    }
 public static void SetPortraitData(IAssignableIdentity identityObject, KBatchedAnimController controller, bool useDefaultExpression = true)
 {
     if (identityObject == null)
     {
         controller.gameObject.SetActive(false);
     }
     else
     {
         MinionIdentity minionIdentity = identityObject as MinionIdentity;
         if ((UnityEngine.Object)minionIdentity == (UnityEngine.Object)null)
         {
             MinionAssignablesProxy minionAssignablesProxy = identityObject as MinionAssignablesProxy;
             if ((UnityEngine.Object)minionAssignablesProxy != (UnityEngine.Object)null && minionAssignablesProxy.target != null)
             {
                 minionIdentity = (minionAssignablesProxy.target as MinionIdentity);
             }
         }
         controller.gameObject.SetActive(true);
         controller.Play("ui_idle", KAnim.PlayMode.Once, 1f, 0f);
         SymbolOverrideController component = controller.GetComponent <SymbolOverrideController>();
         component.RemoveAllSymbolOverrides(0);
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             Accessorizer component2 = minionIdentity.GetComponent <Accessorizer>();
             foreach (AccessorySlot resource in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory = component2.GetAccessory(resource);
                 if (accessory != null)
                 {
                     component.AddSymbolOverride(resource.targetSymbolId, accessory.symbol, 0);
                     controller.SetSymbolVisiblity(resource.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component2.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(minionIdentity, controller);
         }
         else
         {
             StoredMinionIdentity storedMinionIdentity = identityObject as StoredMinionIdentity;
             if ((UnityEngine.Object)storedMinionIdentity == (UnityEngine.Object)null)
             {
                 MinionAssignablesProxy minionAssignablesProxy2 = identityObject as MinionAssignablesProxy;
                 if ((UnityEngine.Object)minionAssignablesProxy2 != (UnityEngine.Object)null && minionAssignablesProxy2.target != null)
                 {
                     storedMinionIdentity = (minionAssignablesProxy2.target as StoredMinionIdentity);
                 }
             }
             if (!((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null))
             {
                 controller.gameObject.SetActive(false);
                 return;
             }
             foreach (AccessorySlot resource2 in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory2 = storedMinionIdentity.GetAccessory(resource2);
                 if (accessory2 != null)
                 {
                     component.AddSymbolOverride(resource2.targetSymbolId, accessory2.symbol, 0);
                     controller.SetSymbolVisiblity(resource2.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(storedMinionIdentity, controller);
         }
         float animScale = 1f;
         if ((UnityEngine.Object)GameScreenManager.Instance != (UnityEngine.Object)null && (UnityEngine.Object)GameScreenManager.Instance.ssOverlayCanvas != (UnityEngine.Object)null)
         {
             animScale = 0.2f * (1f / GameScreenManager.Instance.ssOverlayCanvas.GetComponent <KCanvasScaler>().GetUserScale());
         }
         controller.animScale = animScale;
         string s = "ui";
         controller.Play(s, KAnim.PlayMode.Loop, 1f, 0f);
         controller.SetSymbolVisiblity("snapTo_neck", false);
         controller.SetSymbolVisiblity("snapTo_goggles", false);
     }
 }
Exemple #26
0
            public static bool Prefix(ComplexFabricator __instance, ref ComplexRecipe recipe, ref List <GameObject> __result)
            {
                if (recipe == GeneticSamplerConfig.RECIPE_RECOMBINATION)
                {
                    Debug.Log("Should recombinate");
                    var ingredient_0 = recipe.ingredients[0];
                    Debug.Log(ingredient_0);
                    float   amount  = ingredient_0.amount;
                    var     tag     = ingredient_0.material;
                    Storage storage = __instance.buildStorage;
                    Debug.Log(amount);
                    Debug.Log(tag);
                    Debug.Log(storage.items.Count);
                    DebugHelper.LogForEach(storage.items);
                    for (int index = 0; index < storage.items.Count && (double)amount > 0.0; ++index)
                    {
                        GameObject item_0 = storage.items[index];
                        Debug.Log(item_0);
                        Debug.Log(item_0.HasTag(tag));
                        if (!((UnityEngine.Object)item_0 == (UnityEngine.Object)null) && item_0.HasTag(tag))
                        {
                            Debug.Log("About to add traits to add");

                            var traitsToAdd = GeneticTraits.GeneticTraits.ChooseTraitsFromEggToEgg(item_0).Select(Db.Get().traits.Get);
                            //to the result



                            List <GameObject>   gameObjectList = new List <GameObject>();
                            SimUtil.DiseaseInfo diseaseInfo;
                            diseaseInfo.count = 0;
                            diseaseInfo.idx   = (byte)0;
                            float num1 = 0.0f;
                            float num2 = 0.0f;
                            foreach (ComplexRecipe.RecipeElement ingredient in recipe.ingredients)
                            {
                                num2 += ingredient.amount;
                            }
                            foreach (ComplexRecipe.RecipeElement ingredient in recipe.ingredients)
                            {
                                float num3 = ingredient.amount / num2;
                                SimUtil.DiseaseInfo disease_info;
                                float aggregate_temperature;
                                __instance.buildStorage.ConsumeAndGetDisease(ingredient.material, ingredient.amount, out disease_info, out aggregate_temperature);
                                if (disease_info.count > diseaseInfo.count)
                                {
                                    diseaseInfo = disease_info;
                                }
                                num1 += aggregate_temperature * num3;
                            }
                            foreach (ComplexRecipe.RecipeElement result in recipe.results)
                            {
                                GameObject first = __instance.buildStorage.FindFirst(result.material);
                                if ((UnityEngine.Object)first != (UnityEngine.Object)null)
                                {
                                    Edible component = first.GetComponent <Edible>();
                                    if ((bool)((UnityEngine.Object)component))
                                    {
                                        ReportManager.Instance.ReportValue(ReportManager.ReportType.CaloriesCreated, -component.Calories, StringFormatter.Replace((string)UI.ENDOFDAYREPORT.NOTES.CRAFTED_USED, "{0}", component.GetProperName()), (string)UI.ENDOFDAYREPORT.NOTES.CRAFTED_CONTEXT);
                                    }
                                }
                                switch (__instance.resultState)
                                {
                                case ComplexFabricator.ResultState.PassTemperature:
                                case ComplexFabricator.ResultState.Heated:
                                    GameObject go   = GameUtil.KInstantiate(Assets.GetPrefab(result.material), Grid.SceneLayer.Ore, (string)null, 0);
                                    int        cell = Grid.PosToCell((KMonoBehaviour)__instance);
                                    go.transform.SetPosition(Grid.CellToPosCCC(cell, Grid.SceneLayer.Ore) + __instance.outputOffset);
                                    PrimaryElement component1 = go.GetComponent <PrimaryElement>();
                                    component1.Units       = result.amount;
                                    component1.Temperature = __instance.resultState != ComplexFabricator.ResultState.PassTemperature ? __instance.heatedTemperature : num1;
                                    go.SetActive(true);
                                    float num3 = result.amount / recipe.TotalResultUnits();
                                    component1.AddDisease(diseaseInfo.idx, Mathf.RoundToInt((float)diseaseInfo.count * num3), "ComplexFabricator.CompleteOrder");
                                    go.GetComponent <KMonoBehaviour>().Trigger(748399584, (object)null);

                                    var gtc = go.AddOrGet <GeneticTraitComponent>();
                                    gtc.addTraits(traitsToAdd, item_0);

                                    gameObjectList.Add(go);
                                    if (__instance.storeProduced)
                                    {
                                        __instance.outStorage.Store(go, false, false, true, false);
                                        break;
                                    }
                                    break;

                                case ComplexFabricator.ResultState.Melted:
                                    if (__instance.storeProduced)
                                    {
                                        float temperature = ElementLoader.GetElement(result.material).lowTemp + (float)(((double)ElementLoader.GetElement(result.material).highTemp - (double)ElementLoader.GetElement(result.material).lowTemp) / 2.0);
                                        __instance.outStorage.AddLiquid(ElementLoader.GetElementID(result.material), result.amount, temperature, (byte)0, 0, false, true);
                                        break;
                                    }
                                    break;
                                }
                                if (gameObjectList.Count > 0)
                                {
                                    SymbolOverrideController component2 = __instance.GetComponent <SymbolOverrideController>();
                                    if ((UnityEngine.Object)component2 != (UnityEngine.Object)null)
                                    {
                                        KAnim.Build        build  = gameObjectList[0].GetComponent <KBatchedAnimController>().AnimFiles[0].GetData().build;
                                        KAnim.Build.Symbol symbol = build.GetSymbol((KAnimHashedString)build.name);
                                        if (symbol != null)
                                        {
                                            component2.TryRemoveSymbolOverride((HashedString)"output_tracker", 0);
                                            component2.AddSymbolOverride((HashedString)"output_tracker", symbol, 0);
                                        }
                                        else
                                        {
                                            Debug.LogWarning((object)(component2.name + " is missing symbol " + build.name));
                                        }
                                    }
                                }
                            }
                            __result = gameObjectList;
                        }
                    }

                    return(false);
                }
                else
                {
                    Debug.Log("Should NO recombinate");
                    return(true);
                }
            }