public override void DoPostConfigureComplete(GameObject go) { go.AddOrGetDef <StorageController.Def>(); go.AddOrGetDef <FishFeeder.Def>(); go.AddOrGetDef <MakeBaseSolid.Def>(); SymbolOverrideControllerUtil.AddToPrefab(go); }
public override void DoPostConfigureComplete(GameObject go) { GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_1); go.AddOrGet <LogicOperationalController>(); go.AddOrGetDef <PoweredActiveController.Def>(); SymbolOverrideControllerUtil.AddToPrefab(go); }
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); }
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 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); }
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); }
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); } } } }
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); }
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>(); }
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); }
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); }
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); }
public override void DoPostConfigureComplete(GameObject go) { go.AddOrGet <LogicOperationalController>(); go.AddOrGetDef <PoweredActiveController.Def>(); SymbolOverrideControllerUtil.AddToPrefab(go); }