示例#1
0
 public override void DoPostConfigureComplete(GameObject go)
 {
     go.AddOrGetDef <StorageController.Def>();
     go.AddOrGetDef <FishFeeder.Def>();
     go.AddOrGetDef <MakeBaseSolid.Def>();
     SymbolOverrideControllerUtil.AddToPrefab(go);
 }
示例#2
0
 public override void DoPostConfigureComplete(GameObject go)
 {
     GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_1);
     go.AddOrGet <LogicOperationalController>();
     go.AddOrGetDef <PoweredActiveController.Def>();
     SymbolOverrideControllerUtil.AddToPrefab(go);
 }
示例#3
0
 public override void DoPostConfigureComplete(GameObject prefab)
 {
     BuildingTemplates.DoPostConfigure(prefab);
     SymbolOverrideControllerUtil.AddToPrefab(prefab);
     GeneratedBuildings.RegisterLogicPorts(prefab, LogicOperationalController.INPUT_PORTS_0_0);
     prefab.AddOrGet <LogicOperationalController>();
     Lure.Def def = prefab.AddOrGetDef <Lure.Def>();
     def.lurePoints = new CellOffset[13]
     {
         new CellOffset(0, 0),
         new CellOffset(-1, 4),
         new CellOffset(0, 4),
         new CellOffset(1, 4),
         new CellOffset(-2, 3),
         new CellOffset(-1, 3),
         new CellOffset(0, 3),
         new CellOffset(1, 3),
         new CellOffset(2, 3),
         new CellOffset(-1, 2),
         new CellOffset(0, 2),
         new CellOffset(1, 2),
         new CellOffset(0, 1)
     };
     def.radius = 32;
     Prioritizable.AddRef(prefab);
 }
示例#4
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);
    }
示例#5
0
    public static GameObject ExtendEntityToBasicCreature(GameObject template, FactionManager.FactionID faction = FactionManager.FactionID.Prey, string initialTraitID = null, string NavGridName = "WalkerNavGrid1x1", NavType navType = NavType.Floor, int max_probing_radius = 32, float moveSpeed = 2f, string onDeathDropID = "Meat", int onDeathDropCount = 1, bool drownVulnerable = true, bool entombVulnerable = true, float warningLowTemperature = 283.15f, float warningHighTemperature = 293.15f, float lethalLowTemperature = 243.15f, float lethalHighTemperature = 343.15f)
    {
        template.GetComponent <KBatchedAnimController>().isMovable = true;
        KPrefabID kPrefabID = template.AddOrGet <KPrefabID>();

        kPrefabID.AddTag(GameTags.Creature, false);
        Modifiers modifiers = template.AddOrGet <Modifiers>();

        if (initialTraitID != null)
        {
            modifiers.initialTraits = new string[1]
            {
                initialTraitID
            };
        }
        modifiers.initialAmounts.Add(Db.Get().Amounts.HitPoints.Id);
        template.AddOrGet <KBatchedAnimController>().SetSymbolVisiblity("snapto_pivot", false);
        template.AddOrGet <Pickupable>();
        template.AddOrGet <Clearable>().isClearable = false;
        template.AddOrGet <Traits>();
        template.AddOrGet <Health>();
        template.AddOrGet <CharacterOverlay>();
        template.AddOrGet <RangedAttackable>();
        template.AddOrGet <FactionAlignment>().Alignment = faction;
        template.AddOrGet <Prioritizable>();
        template.AddOrGet <Effects>();
        template.AddOrGetDef <CreatureDebugGoToMonitor.Def>();
        template.AddOrGetDef <DeathMonitor.Def>();
        template.AddOrGetDef <AnimInterruptMonitor.Def>();
        SymbolOverrideControllerUtil.AddToPrefab(template);
        template.AddOrGet <TemperatureVulnerable>().Configure(warningLowTemperature, lethalLowTemperature, warningHighTemperature, lethalHighTemperature);
        if (drownVulnerable)
        {
            template.AddOrGet <DrowningMonitor>();
        }
        if (entombVulnerable)
        {
            template.AddOrGet <EntombVulnerable>();
        }
        if (onDeathDropCount > 0 && onDeathDropID != string.Empty)
        {
            string[] array = new string[onDeathDropCount];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = onDeathDropID;
            }
            template.AddOrGet <Butcherable>().SetDrops(array);
        }
        Navigator navigator = template.AddOrGet <Navigator>();

        navigator.NavGridName      = NavGridName;
        navigator.CurrentNavType   = navType;
        navigator.defaultSpeed     = moveSpeed;
        navigator.updateProber     = true;
        navigator.maxProbingRadius = max_probing_radius;
        navigator.sceneLayer       = Grid.SceneLayer.Creatures;
        return(template);
    }
        public override void DoPostConfigureComplete(GameObject go)
        {
            Artable artable = go.AddComponent <Sculpture>();

            SymbolOverrideControllerUtil.AddToPrefab(go);
            artable.stages.Add(new Artable.Stage("Default", DisplayName, "slab", 0, false, Artable.Status.Ready));
            artable.stages.Add(new Artable.Stage("Bad", PoorQualityName, "crap", 5, false, Artable.Status.Ugly));
            artable.stages.Add(new Artable.Stage("Good", ExcellentQualityName, "idle", 10, true, Artable.Status.Great));
        }
        // сам носимый баллон:

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

            if (receiver != null)
            {
                receiver.fx = smi;
                VaricolouredBalloonsHelper.ApplySymbolOverrideByIdx(symbolOverrideController, receiver.ReceiverBalloonSymbolIdx);
            }
        }
 public override void DoPostConfigureComplete(GameObject go)
 {
     BuildingTemplates.DoPostConfigure(go);
     SymbolOverrideControllerUtil.AddToPrefab(go);
     go.AddOrGet <SymbolOverrideController>().applySymbolOverridesEveryFrame = true;
     Lure.Def def = go.AddOrGetDef <Lure.Def>();
     def.lurePoints = new CellOffset[1]
     {
         new CellOffset(0, 0)
     };
     def.radius = 32;
     Prioritizable.AddRef(go);
 }
示例#9
0
    public GameObject CreatePrefab()
    {
        GameObject             gameObject             = EntityTemplates.CreateEntity("FishFeederBot", "FishFeederBot", true);
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.AnimFiles = new KAnimFile[1]
        {
            Assets.GetAnim("fishfeeder_kanim")
        };
        kBatchedAnimController.sceneLayer = Grid.SceneLayer.BuildingBack;
        SymbolOverrideControllerUtil.AddToPrefab(kBatchedAnimController.gameObject);
        return(gameObject);
    }
示例#10
0
 public override void DoPostConfigureComplete(GameObject go)
 {
     SymbolOverrideControllerUtil.AddToPrefab(go);
     go.GetComponent <KPrefabID>().prefabSpawnFn += delegate(GameObject game_object)
     {
         ComplexFabricatorWorkable component = game_object.GetComponent <ComplexFabricatorWorkable>();
         component.WorkerStatusItem              = Db.Get().DuplicantStatusItems.Processing;
         component.AttributeConverter            = Db.Get().AttributeConverters.MachinerySpeed;
         component.AttributeExperienceMultiplier = DUPLICANTSTATS.ATTRIBUTE_LEVELING.PART_DAY_EXPERIENCE;
         component.SkillExperienceSkillGroup     = Db.Get().SkillGroups.Technicals.Id;
         component.SkillExperienceMultiplier     = SKILLS.PART_DAY_EXPERIENCE;
     };
 }
    public GameObject CreatePrefab()
    {
        GameObject    gameObject    = EntityTemplates.CreateEntity(ID, ID, true);
        RectTransform rectTransform = gameObject.AddOrGet <RectTransform>();

        rectTransform.anchorMin        = new Vector2(0f, 0f);
        rectTransform.anchorMax        = new Vector2(1f, 1f);
        rectTransform.pivot            = new Vector2(0.5f, 0f);
        rectTransform.anchoredPosition = new Vector2(0f, 0f);
        rectTransform.sizeDelta        = new Vector2(0f, 0f);
        LayoutElement layoutElement = gameObject.AddOrGet <LayoutElement>();

        layoutElement.preferredHeight = 100f;
        layoutElement.preferredWidth  = 100f;
        gameObject.AddOrGet <Effects>();
        gameObject.AddOrGet <Traits>();
        MinionModifiers minionModifiers = gameObject.AddOrGet <MinionModifiers>();

        minionModifiers.initialTraits = new string[1]
        {
            MinionConfig.MINION_BASE_TRAIT_ID
        };
        MinionConfig.AddMinionAmounts(minionModifiers);
        gameObject.AddOrGet <AttributeLevels>();
        gameObject.AddOrGet <AttributeConverters>();
        MinionIdentity minionIdentity = gameObject.AddOrGet <MinionIdentity>();

        minionIdentity.addToIdentityList = false;
        BoxCollider2D boxCollider2D = gameObject.AddOrGet <BoxCollider2D>();

        boxCollider2D.size = new Vector2(1f, 1f);
        gameObject.AddOrGet <FaceGraph>();
        gameObject.AddOrGet <Accessorizer>();
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.materialType     = KAnimBatchGroup.MaterialType.UI;
        kBatchedAnimController.animScale        = 0.5f;
        kBatchedAnimController.setScaleFromAnim = false;
        kBatchedAnimController.animOverrideSize = new Vector2(100f, 120f);
        kBatchedAnimController.AnimFiles        = new KAnimFile[4]
        {
            Assets.GetAnim("body_comp_default_kanim"),
            Assets.GetAnim("anim_construction_default_kanim"),
            Assets.GetAnim("anim_idles_default_kanim"),
            Assets.GetAnim("anim_cheer_kanim")
        };
        SymbolOverrideControllerUtil.AddToPrefab(gameObject);
        MinionConfig.ConfigureSymbols(gameObject);
        return(gameObject);
    }
    public static void CreateNewEggs()
    {
        foreach (var setting in CustomizeCritterState.StateManager.State.egg_settings)
        {
            if (setting?.eggId == null)
            {
                continue;                            //eggId isn't allowed to be null
            }
            if (Assets.Prefabs.Find(a => a.gameObject?.name == setting.eggId) == null)
            {
                if (CustomizeCritterState.StateManager.State.debug)
                {
                    Debug.Log("[CustomizeCritter] Adding new egg type: " + setting.eggId);
                }
                // configurations
                string eggId                = setting.eggId;
                string eggName              = setting.eggName ?? "No Name";
                string eggDesc              = setting.eggDesc ?? "No Description";
                string egg_anim             = setting.anim_egg ?? "egg_hatch_kanim";
                string baby_id              = setting.babyId ?? "HatchHardBaby";
                float  egg_mass             = setting.egg_mass ?? 2f;
                int    eggSortOrder         = setting.egg_sortorder ?? 0;
                float  base_incubation_rate = 100f / (600f * setting.incubation_cycles ?? 20f);
                float  egg_anim_scale       = setting.egg_scale ?? 1f;
                bool   is_fish              = setting.is_fish ?? false;
                string symbolPrefix         = setting.override_prefix;
                // end of configurations

                GameObject egg = EggConfig.CreateEgg(eggId, eggName, eggDesc, baby_id, egg_anim, egg_mass, eggSortOrder, base_incubation_rate);

                if (egg_anim_scale != 1f)
                {
                    KBatchedAnimController component = egg.GetComponent <KBatchedAnimController>();
                    component.animWidth  = egg_anim_scale;
                    component.animHeight = egg_anim_scale;
                }

                if (is_fish)
                {
                    egg.AddOrGetDef <FishOvercrowdingMonitor.Def>();
                }

                if (!string.IsNullOrEmpty(symbolPrefix))
                {
                    SymbolOverrideControllerUtil.AddToPrefab(egg).ApplySymbolOverridesByAffix(Assets.GetAnim(egg_anim), symbolPrefix, null, 0);
                }
            }
        }
    }
示例#13
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);
    }
示例#14
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            go.AddOrGet <LogicOperationalController>();
            var storage = go.AddOrGet <Storage>();

            storage.capacityKg     = 50f;
            storage.showInUI       = true;
            storage.storageFilters = new List <Tag> {
                MATERIAL_FOR_TINKER
            };
            var tinkerStation = go.AddOrGet <TinkerStation>();

            tinkerStation.overrideAnims = new KAnimFile[1] {
                Assets.GetAnim("anim_interacts_craftingstation_kanim")
            };
            tinkerStation.inputMaterial      = MATERIAL_FOR_TINKER;
            tinkerStation.massPerTinker      = MASS_PER_TINKER;
            tinkerStation.outputPrefab       = TINKER_TOOLS;
            tinkerStation.outputTemperature  = OUTPUT_TEMPERATURE;
            tinkerStation.requiredSkillPerk  = REQUIRED_ROLE_PERK;
            tinkerStation.choreType          = Db.Get().ChoreTypes.MachineTinker.IdHash;
            tinkerStation.useFilteredStorage = true;
            tinkerStation.fetchChoreType     = Db.Get().ChoreTypes.MachineFetch.IdHash;
            var roomTracker = go.AddOrGet <RoomTracker>();

            roomTracker.requiredRoomType = Db.Get().RoomTypes.MachineShop.Id;
            roomTracker.requirement      = RoomsExpandedFound ? RoomTracker.Requirement.Recommended : RoomTracker.Requirement.Required;
            Prioritizable.AddRef(go);
            go.GetComponent <KPrefabID>().prefabInitFn += delegate(GameObject gameObject)
            {
                var component = gameObject.GetComponent <TinkerStation>();
                component.AttributeConverter            = Db.Get().AttributeConverters.MachinerySpeed;
                component.AttributeExperienceMultiplier = DUPLICANTSTATS.ATTRIBUTE_LEVELING.MOST_DAY_EXPERIENCE;
                component.SkillExperienceSkillGroup     = Db.Get().SkillGroups.Technicals.Id;
                component.SkillExperienceMultiplier     = SKILLS.MOST_DAY_EXPERIENCE;
            };
            SymbolOverrideControllerUtil.AddToPrefab(go);
            go.AddOrGet <MechanicsStation>();
        }
示例#15
0
    public GameObject CreatePrefab()
    {
        GameObject    gameObject    = EntityTemplates.CreateEntity(ID, ID, true);
        RectTransform rectTransform = gameObject.AddOrGet <RectTransform>();

        rectTransform.anchorMin        = new Vector2(0f, 0f);
        rectTransform.anchorMax        = new Vector2(1f, 1f);
        rectTransform.pivot            = new Vector2(0.5f, 0f);
        rectTransform.anchoredPosition = new Vector2(0f, 0f);
        rectTransform.sizeDelta        = new Vector2(0f, 0f);
        LayoutElement layoutElement = gameObject.AddOrGet <LayoutElement>();

        layoutElement.preferredHeight = 100f;
        layoutElement.preferredWidth  = 100f;
        BoxCollider2D boxCollider2D = gameObject.AddOrGet <BoxCollider2D>();

        boxCollider2D.size = new Vector2(1f, 1f);
        gameObject.AddOrGet <FaceGraph>();
        gameObject.AddOrGet <Accessorizer>();
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.materialType     = KAnimBatchGroup.MaterialType.UI;
        kBatchedAnimController.animScale        = 0.5f;
        kBatchedAnimController.setScaleFromAnim = false;
        kBatchedAnimController.animOverrideSize = new Vector2(100f, 120f);
        kBatchedAnimController.AnimFiles        = new KAnimFile[4]
        {
            Assets.GetAnim("body_comp_default_kanim"),
            Assets.GetAnim("anim_construction_default_kanim"),
            Assets.GetAnim("anim_idles_default_kanim"),
            Assets.GetAnim("anim_cheer_kanim")
        };
        SymbolOverrideControllerUtil.AddToPrefab(gameObject);
        MinionConfig.ConfigureSymbols(gameObject);
        return(gameObject);
    }
示例#16
0
        public GameObject CreatePrefab()
        {
            string         name         = (string)MurderBotConfig.NAME;
            string         desc         = (string)MurderBotConfig.DESCRIPTION;
            string         id           = (string)MurderBotConfig.ID;
            double         mass         = (double)SweepBotConfig.MASS;
            EffectorValues none         = TUNING.BUILDINGS.DECOR.NONE;
            KAnimFile      anim         = Assets.GetAnim((HashedString)"sweep_bot_kanim");
            EffectorValues decor        = none;
            EffectorValues noise        = new EffectorValues();
            GameObject     placedEntity = EntityTemplates.CreatePlacedEntity(id, name, desc, (float)mass, anim, "idle", Grid.SceneLayer.Creatures, 1, 1, decor, noise, SimHashes.Creature, (List <Tag>)null, 293f);

            placedEntity.AddOrGet <LoopingSounds>();
            placedEntity.GetComponent <KBatchedAnimController>().isMovable = true;
            KPrefabID kprefabId = placedEntity.AddOrGet <KPrefabID>();

            kprefabId.AddTag(GameTags.Creature, false);
            placedEntity.AddComponent <Pickupable>();
            placedEntity.AddOrGet <Clearable>().isClearable = false;

            Trait trait = Db.Get().CreateTrait("MurderBotBaseTrait", name, name, (string)null, false, (ChoreGroup[])null, true, true);

            trait.Add(new AttributeModifier(Db.Get().Amounts.InternalBattery.maxAttribute.Id, 21000f, name, false, false, true));
            trait.Add(new AttributeModifier(Db.Get().Amounts.InternalBattery.deltaAttribute.Id, -40f, name, false, false, true));
            Modifiers modifiers = placedEntity.AddOrGet <Modifiers>();

            modifiers.initialTraits = new string[1]
            {
                "MurderBotBaseTrait"
            };
            modifiers.initialAmounts.Add(Db.Get().Amounts.HitPoints.Id);
            modifiers.initialAmounts.Add(Db.Get().Amounts.InternalBattery.Id);
            placedEntity.AddOrGet <KBatchedAnimController>().SetSymbolVisiblity((KAnimHashedString)"snapto_pivot", false);
            placedEntity.AddOrGet <Traits>();
            placedEntity.AddOrGet <CharacterOverlay>();
            placedEntity.AddOrGet <Effects>();
            placedEntity.AddOrGetDef <AnimInterruptMonitor.Def>();
            placedEntity.AddOrGetDef <StorageUnloadMonitor.Def>();
            placedEntity.AddOrGetDef <RobotBatteryMonitor.Def>();
            placedEntity.AddOrGetDef <SweetBotReactMonitor.Def>();
            placedEntity.AddOrGetDef <CreatureFallMonitor.Def>();
            placedEntity.AddOrGetDef <SweepBotTrappedMonitor.Def>();
            placedEntity.AddOrGet <AnimEventHandler>();

            SymbolOverrideControllerUtil.AddToPrefab(placedEntity);
            placedEntity.AddOrGet <OrnamentReceptacle>().AddDepositTag(GameTags.PedestalDisplayable);
            placedEntity.AddOrGet <DecorProvider>();
            placedEntity.AddOrGet <UserNameable>();
            placedEntity.AddOrGet <CharacterOverlay>();
            placedEntity.AddOrGet <ItemPedestal>();
            Navigator navigator = placedEntity.AddOrGet <Navigator>();

            navigator.NavGridName      = "WalkerBabyNavGrid";
            navigator.CurrentNavType   = NavType.Floor;
            navigator.defaultSpeed     = 1f;
            navigator.updateProber     = true;
            navigator.maxProbingRadius = 32;
            navigator.sceneLayer       = Grid.SceneLayer.Creatures;
            kprefabId.AddTag(GameTags.Creatures.Walker, false);
            ChoreTable.Builder chore_table = new ChoreTable.Builder().Add((StateMachine.BaseDef) new FallStates.Def(), true).Add((StateMachine.BaseDef) new AnimInterruptStates.Def(), true).Add((StateMachine.BaseDef) new SweepBotTrappedStates.Def(), true).Add((StateMachine.BaseDef) new ReturnToChargeStationStates.Def(), true).Add((StateMachine.BaseDef) new IdleStates.Def(), true);
            placedEntity.AddOrGet <LoopingSounds>();
            EntityTemplates.AddCreatureBrain(placedEntity, chore_table, GameTags.Robots.Models.SweepBot, (string)null);

            return(placedEntity);
        }
示例#17
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);
    }
示例#18
0
 public override void DoPostConfigureComplete(GameObject go)
 {
     go.AddOrGet <LogicOperationalController>();
     go.AddOrGetDef <PoweredActiveController.Def>();
     SymbolOverrideControllerUtil.AddToPrefab(go);
 }