public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; GameObject.DestroyImmediate(prefab.GetComponent <PickPrefab>()); GameObject.DestroyImmediate(prefab.GetComponent <LiveMixin>()); PrefabsHelper.AddNewGenericSeed(ref prefab); var model = prefab.FindChild("farming_plant_01_02"); // Scale float scaleRatio = 0.75f; model.transform.localScale *= scaleRatio; // Update rigid body var rb = prefab.GetComponent <Rigidbody>(); // Add EntityTag var entityTag = prefab.AddComponent <EntityTag>(); entityTag.slotType = EntitySlot.Type.Small; // Add TechTag var techTag = prefab.AddComponent <TechTag>(); techTag.type = this.TechType; // Update prefab identifier var prefabId = prefab.GetComponent <PrefabIdentifier>(); prefabId.ClassId = this.ClassID; // Update large world entity var lwe = prefab.GetComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Near; // Add world forces var worldForces = prefab.AddComponent <WorldForces>(); worldForces.handleGravity = true; worldForces.aboveWaterGravity = 9.81f; worldForces.underwaterGravity = 1.0f; worldForces.handleDrag = true; worldForces.aboveWaterDrag = 0.0f; worldForces.underwaterDrag = 10.0f; worldForces.useRigidbody = rb; // Add pickupable var pickupable = prefab.AddComponent <Pickupable>(); pickupable.isPickupable = true; pickupable.destroyOnDeath = true; #if BELOWZERO pickupable.isLootCube = false; #else pickupable.cubeOnPickup = false; #endif pickupable.randomizeRotationWhenDropped = true; pickupable.usePackUpIcon = false; // Add eatable Eatable eatable = null; if (ConfigSwitcher.config_MarbleMelonTiny.Eatable) { eatable = prefab.AddComponent <Eatable>(); eatable.foodValue = ConfigSwitcher.config_MarbleMelonTiny.FoodValue; eatable.waterValue = ConfigSwitcher.config_MarbleMelonTiny.WaterValue; #if SUBNAUTICA eatable.stomachVolume = 10.0f; eatable.allowOverfill = false; #endif eatable.decomposes = ConfigSwitcher.config_MarbleMelonTiny.Decomposes; eatable.kDecayRate = ConfigSwitcher.config_MarbleMelonTiny.KDecayRate; eatable.despawns = ConfigSwitcher.config_MarbleMelonTiny.Despawns; eatable.despawnDelay = ConfigSwitcher.config_MarbleMelonTiny.DespawnDelay; } // Add plantable var plantable = prefab.AddComponent <Plantable>(); plantable.aboveWater = true; plantable.underwater = false; plantable.isSeedling = true; plantable.plantTechType = this.TechType; plantable.size = Plantable.PlantSize.Small; plantable.pickupable = pickupable; plantable.eatable = eatable; plantable.model = prefab; // prefab.FindChild("farming_plant_01_02"); plantable.linkedGrownPlant = new GrownPlant(); plantable.linkedGrownPlant.seed = plantable; plantable.linkedGrownPlant.seedUID = "MarbleMelonTinyFruit"; // Add live mixin var liveMixin = prefab.AddComponent <LiveMixin>(); liveMixin.health = ConfigSwitcher.config_MarbleMelonTiny.Health; liveMixin.data = ScriptableObject.CreateInstance <LiveMixinData>(); liveMixin.data.broadcastKillOnDeath = false; liveMixin.data.canResurrect = false; liveMixin.data.destroyOnDeath = true; #if SUBNAUTICA liveMixin.data.explodeOnDestroy = false; #endif liveMixin.data.invincibleInCreative = false; liveMixin.data.minDamageForSound = 10.0f; liveMixin.data.passDamageDataOnDeath = true; liveMixin.data.weldable = false; liveMixin.data.knifeable = false; liveMixin.data.maxHealth = ConfigSwitcher.config_MarbleMelonTiny.Health; //liveMixin.startHealthPercent = 1.0f; // Adjust sky applier SkyApplier sa = prefab.GetComponent <SkyApplier>(); sa.renderers = prefab.GetComponentsInChildren <MeshRenderer>(); sa.anchorSky = Skies.Auto; sa.dynamic = true; // Adjust colliders CapsuleCollider cc = prefab.GetComponentInChildren <CapsuleCollider>(); cc.radius *= scaleRatio; cc.height *= scaleRatio; SphereCollider sc = prefab.GetComponentInChildren <SphereCollider>(); sc.radius *= scaleRatio; // Add generic plant controller PlantGenericController plantController = prefab.AddComponent <PlantGenericController>(); plantController.GrowthDuration = ConfigSwitcher.config_MarbleMelonTiny.GrowthDuration; plantController.Health = ConfigSwitcher.config_MarbleMelonTiny.Health; plantController.Knifeable = ConfigSwitcher.config_MarbleMelonTiny.Knifeable; CustomFloraSerializer customSerializer = prefab.AddComponent <CustomFloraSerializer>(); // Hide plant and show seed PrefabsHelper.HidePlantAndShowSeed(prefab.transform, this.ClassID); return(prefab); }