Exemplo n.º 1
0
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, ID, true);

        gameObject.AddOrGet <Storage>();
        gameObject.AddTag(GameTags.NotConversationTopic);
        return(gameObject);
    }
Exemplo n.º 2
0
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, ID, false);

        gameObject.AddTag(GameTags.NotConversationTopic);
        gameObject.AddOrGet <OneshotReactableHost>();
        return(gameObject);
    }
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, ID, false);

        gameObject.AddTag(GameTags.NotConversationTopic);
        gameObject.AddOrGet <Approachable>();
        return(gameObject);
    }
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, ID, false);

        gameObject.AddOrGet <KBatchedAnimController>();
        gameObject.AddOrGet <KBatchedAnimTracker>();
        return(gameObject);
    }
Exemplo n.º 5
0
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, ID, true);

        gameObject.AddOrGet <SaveLoadRoot>();
        gameObject.AddOrGet <Ownables>();
        gameObject.AddOrGet <Equipment>();
        gameObject.AddOrGet <MinionAssignablesProxy>();
        return(gameObject);
    }
Exemplo n.º 6
0
    public GameObject CreatePrefab()
    {
        GameObject             gameObject             = EntityTemplates.CreateEntity(ID, ID, false);
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.AnimFiles = new KAnimFile[1]
        {
            Assets.GetAnim("anim_blinks_kanim")
        };
        return(gameObject);
    }
Exemplo n.º 7
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);
    }
    public GameObject CreatePrefab(string id, string name, Material default_material)
    {
        GameObject gameObject = EntityTemplates.CreateEntity(id, name, true);

        gameObject.layer = LayerMask.NameToLayer("PlaceWithDepth");
        gameObject.AddOrGet <SaveLoadRoot>();
        gameObject.AddOrGet <StateMachineController>();
        Prioritizable prioritizable = gameObject.AddOrGet <Prioritizable>();

        prioritizable.iconOffset = new Vector2(0.3f, 0.32f);
        KBoxCollider2D kBoxCollider2D = gameObject.AddOrGet <KBoxCollider2D>();

        kBoxCollider2D.offset = new Vector2(0f, 0.5f);
        kBoxCollider2D.size   = new Vector2(1f, 1f);
        GameObject gameObject2 = new GameObject("Mask");

        gameObject2.layer            = LayerMask.NameToLayer("PlaceWithDepth");
        gameObject2.transform.parent = gameObject.transform;
        gameObject2.transform.SetLocalPosition(new Vector3(0f, 0.5f, -3.537f));
        gameObject2.transform.eulerAngles = new Vector3(0f, 180f, 0f);
        MeshFilter meshFilter = gameObject2.AddComponent <MeshFilter>();

        meshFilter.sharedMesh = Assets.instance.commonPlacerAssets.mesh;
        MeshRenderer meshRenderer = gameObject2.AddComponent <MeshRenderer>();

        meshRenderer.lightProbeUsage      = LightProbeUsage.Off;
        meshRenderer.reflectionProbeUsage = ReflectionProbeUsage.Off;
        meshRenderer.shadowCastingMode    = ShadowCastingMode.Off;
        meshRenderer.receiveShadows       = false;
        meshRenderer.sharedMaterial       = default_material;
        EasingAnimations easingAnimations = gameObject2.AddComponent <EasingAnimations>();

        EasingAnimations.AnimationScales animationScales = default(EasingAnimations.AnimationScales);
        animationScales.name             = "ScaleUp";
        animationScales.startScale       = 0f;
        animationScales.endScale         = 1f;
        animationScales.type             = EasingAnimations.AnimationScales.AnimationType.EaseInOutBack;
        animationScales.easingMultiplier = 5f;
        EasingAnimations.AnimationScales animationScales2 = default(EasingAnimations.AnimationScales);
        animationScales2.name             = "ScaleDown";
        animationScales2.startScale       = 1f;
        animationScales2.endScale         = 0f;
        animationScales2.type             = EasingAnimations.AnimationScales.AnimationType.EaseOutBack;
        animationScales2.easingMultiplier = 1f;
        easingAnimations.scales           = new EasingAnimations.AnimationScales[2]
        {
            animationScales,
            animationScales2
        };
        return(gameObject);
    }
    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 GameObject CreatePrefab()
    {
        GameObject             gameObject             = EntityTemplates.CreateEntity(ID, ID, true);
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.AnimFiles = new KAnimFile[1]
        {
            Assets.GetAnim("earth_kanim")
        };
        kBatchedAnimController.isMovable      = true;
        kBatchedAnimController.initialAnim    = "idle";
        kBatchedAnimController.initialMode    = KAnim.PlayMode.Loop;
        kBatchedAnimController.visibilityType = KAnimControllerBase.VisibilityType.OffscreenUpdate;
        gameObject.AddOrGet <LoopingSounds>();
        return(gameObject);
    }
Exemplo n.º 11
0
        private KBatchedAnimController AddEffect()
        {
            var id = "FabulousFx";

            GameObject template = EntityTemplates.CreateEntity(id, id, false);

            KBatchedAnimController controller = template.AddOrGet <KBatchedAnimController>();

            controller.materialType          = KAnimBatchGroup.MaterialType.Simple;
            controller.initialAnim           = "";
            controller.initialMode           = KAnim.PlayMode.Paused;
            controller.isMovable             = true;
            controller.destroyOnAnimComplete = false;
            controller.AnimFiles             = new KAnimFile[] { Assets.GetAnim("fab_fx_kanim") };

            return(controller);
        }
    public List <GameObject> CreatePrefabs()
    {
        List <GameObject>         list    = new List <GameObject>();
        List <GeyserPrefabParams> configs = GenerateConfigs();

        foreach (GeyserPrefabParams item in configs)
        {
            GeyserPrefabParams current = item;
            list.Add(CreateGeyser(current.id, current.anim, current.width, current.height, Strings.Get(current.nameStringKey), Strings.Get(current.descStringKey), current.geyserType.idHash));
        }
        GameObject gameObject = EntityTemplates.CreateEntity("GeyserGeneric", "Random Geyser Spawner", true);

        gameObject.AddOrGet <SaveLoadRoot>();
        KPrefabID component = gameObject.GetComponent <KPrefabID>();

        component.prefabInitFn += delegate(GameObject inst)
        {
            int num = 0;
            if (SaveLoader.Instance.worldDetailSave != null)
            {
                num = SaveLoader.Instance.worldDetailSave.globalWorldSeed;
            }
            else
            {
                Debug.LogWarning("Could not load global world seed for geysers");
            }
            int     num2      = num;
            Vector3 position  = inst.transform.GetPosition();
            int     num3      = num2 + (int)position.x;
            Vector3 position2 = inst.transform.GetPosition();
            num = num3 + (int)position2.y;
            System.Random      random             = new System.Random(num);
            int                index              = random.Next(0, configs.Count);
            GeyserPrefabParams geyserPrefabParams = configs[index];
            GameObject         gameObject2        = GameUtil.KInstantiate(Assets.GetPrefab(geyserPrefabParams.id), inst.transform.GetPosition(), Grid.SceneLayer.BuildingBack, null, 0);
            gameObject2.SetActive(true);
            inst.DeleteObject();
        };
        list.Add(gameObject);
        return(list);
    }
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, UI.SPACEDESTINATIONS.COMETS.ROCKCOMET.NAME, true);

        gameObject.AddOrGet <SaveLoadRoot>();
        gameObject.AddOrGet <LoopingSounds>();
        Comet comet = gameObject.AddOrGet <Comet>();
        float mass  = ElementLoader.FindElementByHash(SimHashes.Regolith).defaultValues.mass;

        comet.massRange           = new Vector2(mass * 0.8f * 6f, mass * 1.2f * 6f);
        comet.temperatureRange    = new Vector2(323.15f, 423.15f);
        comet.addTiles            = 6;
        comet.addTilesMinHeight   = 2;
        comet.addTilesMaxHeight   = 8;
        comet.entityDamage        = 20;
        comet.totalTileDamage     = 0f;
        comet.splashRadius        = 1;
        comet.impactSound         = "Meteor_Large_Impact";
        comet.flyingSoundID       = 2;
        comet.explosionEffectHash = SpawnFXHashes.MeteorImpactDirt;
        PrimaryElement primaryElement = gameObject.AddOrGet <PrimaryElement>();

        primaryElement.SetElement(SimHashes.Regolith);
        primaryElement.Temperature = (comet.temperatureRange.x + comet.temperatureRange.y) / 2f;
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.AnimFiles = new KAnimFile[1]
        {
            Assets.GetAnim("meteor_rock_kanim")
        };
        kBatchedAnimController.isMovable   = true;
        kBatchedAnimController.initialAnim = "fall_loop";
        kBatchedAnimController.initialMode = KAnim.PlayMode.Loop;
        KCircleCollider2D kCircleCollider2D = gameObject.AddOrGet <KCircleCollider2D>();

        kCircleCollider2D.radius = 0.5f;
        return(gameObject);
    }
Exemplo n.º 14
0
    public GameObject CreatePrefab()
    {
        GameObject gameObject = EntityTemplates.CreateEntity(ID, UI.SPACEDESTINATIONS.COMETS.GOLDCOMET.NAME, true);

        gameObject.AddOrGet <SaveLoadRoot>();
        gameObject.AddOrGet <LoopingSounds>();
        Comet comet = gameObject.AddOrGet <Comet>();

        comet.massRange           = new Vector2(3f, 20f);
        comet.temperatureRange    = new Vector2(323.15f, 423.15f);
        comet.explosionOreCount   = new Vector2I(2, 4);
        comet.entityDamage        = 15;
        comet.totalTileDamage     = 0.5f;
        comet.splashRadius        = 1;
        comet.impactSound         = "Meteor_Medium_Impact";
        comet.flyingSoundID       = 1;
        comet.explosionEffectHash = SpawnFXHashes.MeteorImpactMetal;
        PrimaryElement primaryElement = gameObject.AddOrGet <PrimaryElement>();

        primaryElement.SetElement(SimHashes.GoldAmalgam);
        primaryElement.Temperature = (comet.temperatureRange.x + comet.temperatureRange.y) / 2f;
        KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();

        kBatchedAnimController.AnimFiles = new KAnimFile[1]
        {
            Assets.GetAnim("meteor_gold_kanim")
        };
        kBatchedAnimController.isMovable      = true;
        kBatchedAnimController.initialAnim    = "fall_loop";
        kBatchedAnimController.initialMode    = KAnim.PlayMode.Loop;
        kBatchedAnimController.visibilityType = KAnimControllerBase.VisibilityType.OffscreenUpdate;
        KCircleCollider2D kCircleCollider2D = gameObject.AddOrGet <KCircleCollider2D>();

        kCircleCollider2D.radius        = 0.5f;
        gameObject.transform.localScale = new Vector3(0.6f, 0.6f, 1f);
        return(gameObject);
    }
Exemplo n.º 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);
    }
    public List <GameObject> CreatePrefabs()
    {
        List <GameObject> list = new List <GameObject>();
        var array = new[]
        {
            new
            {
                id                    = EffectTemplateId,
                animFiles             = new string[0],
                initialAnim           = string.Empty,
                initialMode           = KAnim.PlayMode.Once,
                destroyOnAnimComplete = false
            },
            new
            {
                id        = AttackSplashId,
                animFiles = new string[1]
                {
                    "attack_beam_contact_fx_kanim"
                },
                initialAnim           = "loop",
                initialMode           = KAnim.PlayMode.Loop,
                destroyOnAnimComplete = false
            },
            new
            {
                id        = OreAbsorbId,
                animFiles = new string[1]
                {
                    "ore_collision_kanim"
                },
                initialAnim           = "idle",
                initialMode           = KAnim.PlayMode.Once,
                destroyOnAnimComplete = true
            },
            new
            {
                id        = PlantDeathId,
                animFiles = new string[1]
                {
                    "plant_death_fx_kanim"
                },
                initialAnim           = "plant_death",
                initialMode           = KAnim.PlayMode.Once,
                destroyOnAnimComplete = true
            },
            new
            {
                id        = BuildSplashId,
                animFiles = new string[1]
                {
                    "sparks_radial_build_kanim"
                },
                initialAnim           = "loop",
                initialMode           = KAnim.PlayMode.Loop,
                destroyOnAnimComplete = false
            }
        };
        var array2 = array;

        foreach (var anon in array2)
        {
            GameObject             gameObject             = EntityTemplates.CreateEntity(anon.id, anon.id, false);
            KBatchedAnimController kBatchedAnimController = gameObject.AddOrGet <KBatchedAnimController>();
            kBatchedAnimController.materialType          = KAnimBatchGroup.MaterialType.Simple;
            kBatchedAnimController.initialAnim           = anon.initialAnim;
            kBatchedAnimController.initialMode           = anon.initialMode;
            kBatchedAnimController.isMovable             = true;
            kBatchedAnimController.destroyOnAnimComplete = anon.destroyOnAnimComplete;
            if (anon.animFiles.Length > 0)
            {
                KAnimFile[] array3 = new KAnimFile[anon.animFiles.Length];
                for (int j = 0; j < array3.Length; j++)
                {
                    array3[j] = Assets.GetAnim(anon.animFiles[j]);
                }
                kBatchedAnimController.AnimFiles = array3;
            }
            gameObject.AddOrGet <LoopingSounds>();
            list.Add(gameObject);
        }
        return(list);
    }
Exemplo n.º 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);
    }