Posts by dadycupcakes

Due to human (non-bot) spam the first contribution of a user has to be reviewed and activated manually, all further contributions do not require this.
As long as a user does not have at least one reviewed and activated contribution, the user is unable to edit his profile, set a avatar, title picture or a signature.

    I decided I would start doing government stuff on my server, get a Governor position set up, add demographics create constitution etc. but this whole system is just way too complicated, I shouldn't have to spend hours reading on how to do certain things in this government system.

    trying to create any sort of law passed taxing people for basics, mining, hunting etc. its just beyond any sort of laws that were created on my server are just copies of people putting up example laws on the discord. I mean there has to be an easier way, or just a way to add a set up basic government type thing.

    I am trying to get people on my server to participate in the whole Gov. thing but everyone wants nothing to do with it as soon as they open the damn menu. There shouldn't have to be in the first place but is there a tutorial on how to use these systems? if its in the game i've missed it.

    Also why can I not access or delete previous laws, positions etc that I have made? I created a Governor position but deleted it instead of revising it and now I cannot create another Governor title because it already exists? but I deleted it? what? where the f is it? these types of things plaque the whole gov system

    and it just makes no sense.

    Also the contract system like wtf? why is everything so complicated? why cant you give me a tool to choose block a,b,c etc. or just outline and area say dig all this out to this depth? or build a road exactly here and highlight the blocks where you want the road to be put.

    Considering this was originally supposed to be for educators and students etc. I feel like if a school were to try and add this as a curriculum you would seriously need an "eco expert".

    If i'm just being a complete idiot and have missed the tutorial or documents explaining how to use this stuff please point me in the right direction because I would love to use this stuff but it far far far from intuitive.

    if you choose lavish it will give you a bonus of 5% less resources used if your room is .2 of a tier higher than what the table requires.

    So say something like I think the masonry table require .8 I think, if you choose lavish you will use 5% less resources if that table is in a room that 1.0 tier.

    it will drop the requirement by .2 if you choose frugal which i dont use so I couldn't really tell you what use it has besides maybe putting a table in a lesser tier room.

    I believe the table still works if you do not reach the Lavish requirements and only meet the baseline requirements for the table you just dont get the 5% resource bonus.

    C:\Program Files (x86)\Steam\steamapps\common\Eco Server\Mods\Objects

    you will then open up SkidSteerObject.cs

    scroll down till you see "this.GetComponent<VehicleToolComponent>().Initialize(5, 2400000, new DirtItem()"

    Adjust the first number I.E. the 5 to 80 for 80 slots.

    I believe there are 2 ways to control the amount of each resource it will hold, one is adjusting the stack size which is what I use

    second is dont quote me on it but I think you adjust "100, 200, 0, VehicleUtilities.GetInventoryRestriction(this), toolOnMount:true);"

    one of them numbers haha youll have to experiment yourself if you want it to only adjust stack sizes in the vehicle.

    Make sure you make a back up of the file before messing around with it just in case something goes wrong.

    Edit was to adjust wrong info about which to change

    Now for the ramps, You need to edit a file called Roads.cs Which can be found in this location: C:\Program Files (x86)\Steam\steamapps\common\Eco Server\Mods\Items

    There are 3 sections you need to edit 1 for each type of ramp as seen below

    Modded Roads.cs

    // Copyright (c) Strange Loop Games. All rights reserved.

    // See LICENSE file in the project root for full license information.

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using Eco.Core.Items;

    using Eco.Gameplay.GameActions;

    using Eco.Gameplay.Interactions;

    using Eco.Gameplay.Items;

    using Eco.Gameplay.Objects;

    using Eco.Mods.TechTree;

    using Eco.Shared.Localization;

    using Eco.Shared.Math;

    using Eco.Shared.Serialization;

    using Eco.World;

    using Eco.World.Blocks;

    namespace Eco.Mods.TechTree

    {

    [Road(1.2f)]

    public partial class StoneRoadItem { }

    [Road(1.4f), ConstructWithoutTool(false)] //Asphalt, unlike stone road and dirt road, DOES need a hammer to place, so undo the [ConstructWithoutTool] value set by parents.

    public partial class AsphaltConcreteItem { }

    }

    [Serialized]

    public abstract class BaseRampObject : WorldObject

    {

    // No UI

    public override InteractResult OnActInteract(InteractionContext context)

    {

    return InteractResult.NoOp;

    }

    }

    [Serialized]

    public class DirtRampObject : BaseRampObject

    {

    public override LocString DisplayName { get { return Localizer.DoStr("Dirt Ramp"); } }

    private DirtRampObject() { }

    }

    [Serialized]

    [LocDisplayName("Dirt Ramp")]

    [ItemGroup("Road Items")]

    [Tag("Road")]

    [Tag("Constructable")]

    [Ecopedia("Blocks", "Roads", createAsSubPage: true, display: InPageTooltip.DynamicTooltip)]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(60000)]

    public class DirtRampItem : RampItem<DirtRampObject>

    {

    public override LocString DisplayDescription { get { return Localizer.DoStr("4 x 1 Dirt Ramp."); } }

    public override Dictionary<Vector3i, Type[]> BlockTypes { get { return new Dictionary<Vector3i, Type[]>

    {

    {Vector3i.Left, new[] { typeof(DirtRampABlock), typeof(DirtRampBBlock), typeof(DirtRampCBlock), typeof(DirtRampDBlock) }},

    {Vector3i.Forward, new[] { typeof(DirtRampA90Block), typeof(DirtRampB90Block), typeof(DirtRampC90Block), typeof(DirtRampD90Block) }},

    {Vector3i.Right, new[] { typeof(DirtRampA180Block), typeof(DirtRampB180Block), typeof(DirtRampC180Block), typeof(DirtRampD180Block) }},

    {Vector3i.Back, new[] { typeof(DirtRampA270Block), typeof(DirtRampB270Block), typeof(DirtRampC270Block), typeof(DirtRampD270Block) }},

    };}}

    }

    [Serialized]

    public class StoneRampObject : BaseRampObject

    {

    public override LocString DisplayName { get { return Localizer.DoStr("Stone Ramp"); } }

    private StoneRampObject() { }

    }

    [Serialized]

    [LocDisplayName("Stone Ramp")]

    [ItemGroup("Road Items")]

    [Tag("Road")]

    [Tag("Constructable")]

    [Ecopedia("Blocks", "Roads", createAsSubPage: true, display: InPageTooltip.DynamicTooltip)]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(60000)]

    public class StoneRampItem : RampItem<StoneRampObject>

    {

    public override LocString DisplayDescription { get { return Localizer.DoStr("4 x 1 Stone Ramp."); } }

    public override Dictionary<Vector3i, Type[]> BlockTypes { get { return new Dictionary<Vector3i, Type[]>

    {

    {Vector3i.Left, new[] { typeof(StoneRampABlock), typeof(StoneRampBBlock), typeof(StoneRampCBlock), typeof(StoneRampDBlock) }},

    {Vector3i.Forward, new[] { typeof(StoneRampA90Block), typeof(StoneRampB90Block), typeof(StoneRampC90Block), typeof(StoneRampD90Block) }},

    {Vector3i.Right, new[] { typeof(StoneRampA180Block), typeof(StoneRampB180Block), typeof(StoneRampC180Block), typeof(StoneRampD180Block) }},

    {Vector3i.Back, new[] { typeof(StoneRampA270Block), typeof(StoneRampB270Block), typeof(StoneRampC270Block), typeof(StoneRampD270Block) }},

    };}}

    }

    [Serialized]

    public class AsphaltConcreteRampObject : BaseRampObject

    {

    public override LocString DisplayName => Localizer.DoStr("Asphalt Concrete Ramp");

    private AsphaltConcreteRampObject() { }

    }

    [Serialized]

    [LocDisplayName("Asphalt Concrete Ramp")]

    [ItemGroup("Road Items")]

    [Tag("Road")]

    [Tag("Constructable")]

    [Category("Hidden")]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(60000)]

    public class AsphaltConcreteRampItem : RampItem<AsphaltConcreteRampObject>

    {

    public override LocString DisplayDescription => Localizer.DoStr("4 x 1 Asphalt Concrete Ramp.");

    public override Dictionary<Vector3i, Type[]> BlockTypes { get { return new Dictionary<Vector3i, Type[]>

    {

    {Vector3i.Left, new[] { typeof(AsphaltConcreteRampABlock), typeof(AsphaltConcreteRampBBlock), typeof(AsphaltConcreteRampCBlock), typeof(AsphaltConcreteRampDBlock) }},

    {Vector3i.Forward, new[] { typeof(AsphaltConcreteRampA90Block), typeof(AsphaltConcreteRampB90Block), typeof(AsphaltConcreteRampC90Block), typeof(AsphaltConcreteRampD90Block) }},

    {Vector3i.Right, new[] { typeof(AsphaltConcreteRampA180Block), typeof(AsphaltConcreteRampB180Block), typeof(AsphaltConcreteRampC180Block), typeof(AsphaltConcreteRampD180Block) }},

    {Vector3i.Back, new[] { typeof(AsphaltConcreteRampA270Block), typeof(AsphaltConcreteRampB270Block), typeof(AsphaltConcreteRampC270Block), typeof(AsphaltConcreteRampD270Block) }},

    };}}

    }

    *FILE IS TOO BIG TO POST BUT WHAT YOU NEED IS ABOVE*

    I'm not sure why i've never seen this in a stack size mod even for the latest 9.0 update but now you know how to do it yourself;)

    I'm pretty sure you only need to add the max stack size under the first one but if that doesn't work try putting it under both which is what I have done.

    Modded CornSeed.cs

    // Copyright (c) Strange Loop Games. All rights reserved.

    // See LICENSE file in the project root for full license information.

    // <auto-generated />

    namespace Eco.Mods.TechTree

    {

    using System.Collections.Generic;

    using Eco.Gameplay.Blocks;

    using Eco.Core.Items;

    using Eco.Gameplay.Components;

    using Eco.Gameplay.DynamicValues;

    using Eco.Gameplay.Items;

    using Eco.Gameplay.Items.SearchAndSelect;

    using Eco.Gameplay.Skills;

    using Eco.Gameplay.Systems;

    using Eco.Gameplay.Systems.TextLinks;

    using Eco.Mods.TechTree;

    using Eco.Shared.Localization;

    using Eco.Shared.Serialization;

    using Eco.Shared.Utils;

    using Eco.World;

    using Eco.World.Blocks;

    using Gameplay.Players;

    using System.ComponentModel;

    [Serialized]

    [LocDisplayName("Corn Seed")]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(50)]

    [StartsDiscovered]

    [Tag("Crop Seed", 1)]

    public partial class CornSeedItem : SeedItem

    {

    static CornSeedItem() { }

    private static Nutrients nutrition = new Nutrients() { Carbs = 0, Fat = 0, Protein = 0, Vitamins = 0 };

    public override LocString DisplayDescription { get { return Localizer.DoStr("Plant to grow corn."); } }

    public override LocString SpeciesName { get { return Localizer.DoStr("Corn"); } }

    public override float Calories { get { return 0; } }

    public override Nutrients Nutrition { get { return nutrition; } }

    }


    [Serialized]

    [LocDisplayName("Corn Seed Pack")]

    [Category("Hidden")]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(50)]

    public partial class CornSeedPackItem : SeedPackItem

    {

    static CornSeedPackItem() { }

    public override LocString DisplayDescription { get { return Localizer.DoStr("Plant to grow corn."); } }

    public override LocString SpeciesName { get { return Localizer.DoStr("Corn"); } }

    }

    [RequiresSkill(typeof(FarmingSkill), 1)]

    public class CornSeedRecipe : RecipeFamily

    {

    public CornSeedRecipe()

    {

    this.Initialize(Localizer.DoStr("Corn Seed"), typeof(CornSeedRecipe));

    this.Recipes = new List<Recipe>

    {

    new Recipe(

    "CornSeed",

    Localizer.DoStr("Corn Seed"),

    new IngredientElement[]

    {

    new IngredientElement(typeof(CornItem), 1, typeof(FarmingSkill), typeof(FarmingLavishResourcesTalent)),

    },

    new CraftingElement<CornSeedItem>()

    )

    };

    this.LaborInCalories = CreateLaborInCaloriesValue(20, typeof(FarmingSkill), typeof(CornSeedRecipe), this.UILink());

    this.CraftMinutes = CreateCraftTimeValue(typeof(CornSeedRecipe), this.UILink(), 1, typeof(FarmingSkill), typeof(FarmingFocusedSpeedTalent), typeof(FarmingParallelSpeedTalent));

    this.Initialize(Localizer.DoStr("Corn Seed"), typeof(CornSeedRecipe));

    CraftingComponent.AddRecipe(typeof(FarmersTableObject), this);

    }

    }

    }

    So I just wanted to put this out there for people making stack size mods or simply adjusting stack sizes on your personal server. If you have an item that does not have [MaxStackSize(xxx)] you can add it to the item to create bigger stack sizes. I.E.

    THIS ALSO WORKS FOR DIRT/STONE/ASPHALT RAMPS

    you just have to edit the correct file

    This is what a normal PlantFiber.cs looks like:

    PlantFiber.cs

    // Copyright (c) Strange Loop Games. All rights reserved.

    // See LICENSE file in the project root for full license information.

    // <auto-generated />

    namespace Eco.Mods.TechTree

    {

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using Eco.Gameplay.Blocks;

    using Eco.Gameplay.Components;

    using Eco.Gameplay.DynamicValues;

    using Eco.Gameplay.Items;

    using Eco.Gameplay.Objects;

    using Eco.Gameplay.Players;

    using Eco.Gameplay.Skills;

    using Eco.Gameplay.Systems;

    using Eco.Gameplay.Systems.TextLinks;

    using Eco.Shared.Localization;

    using Eco.Shared.Serialization;

    using Eco.Shared.Utils;

    using Eco.Core.Items;

    using Eco.World;

    using Eco.World.Blocks;

    using Eco.Gameplay.Pipes;


    [Serialized]

    [LocDisplayName("Plant Fibers")]

    [Compostable]

    [Weight(10)]

    [Fuel(100)][Tag("Fuel")]

    [Yield(typeof(PlantFibersItem), typeof(GatheringSkill), new float[] { 1f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f })]

    [Currency]

    [Ecopedia("Items", "Products", createAsSubPage: true, display: InPageTooltip.DynamicTooltip)]

    [Tag("NaturalFiber", 1)]

    [Tag("Burnable Fuel", 1)]

    public partial class PlantFibersItem :

    Item

    {

    public override LocString DisplayDescription { get { return Localizer.DoStr("Harvested from a number of plants, these fibers are useful for a suprising number of things."); } }

    }

    }

    And what a modded PlantFiber.cs would look like:

    Modded PlantFiber.cs

    // Copyright (c) Strange Loop Games. All rights reserved.

    // See LICENSE file in the project root for full license information.

    // <auto-generated />

    namespace Eco.Mods.TechTree

    {

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using Eco.Gameplay.Blocks;

    using Eco.Gameplay.Components;

    using Eco.Gameplay.DynamicValues;

    using Eco.Gameplay.Items;

    using Eco.Gameplay.Objects;

    using Eco.Gameplay.Players;

    using Eco.Gameplay.Skills;

    using Eco.Gameplay.Systems;

    using Eco.Gameplay.Systems.TextLinks;

    using Eco.Shared.Localization;

    using Eco.Shared.Serialization;

    using Eco.Shared.Utils;

    using Eco.Core.Items;

    using Eco.World;

    using Eco.World.Blocks;

    using Eco.Gameplay.Pipes;


    [Serialized]

    [LocDisplayName("Plant Fibers")]

    [Compostable]

    [MaxStackSize(100)] <----------------------------------- [THIS IS WHAT HAS BEEN ADDED]

    [Weight(10)]

    [Fuel(100)][Tag("Fuel")]

    [Yield(typeof(PlantFibersItem), typeof(GatheringSkill), new float[] { 1f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f })]

    [Currency]

    [Ecopedia("Items", "Products", createAsSubPage: true, display: InPageTooltip.DynamicTooltip)]

    [Tag("NaturalFiber", 1)]

    [Tag("Burnable Fuel", 1)]

    public partial class PlantFibersItem :

    Item

    {

    public override LocString DisplayDescription { get { return Localizer.DoStr("Harvested from a number of plants, these fibers are useful for a suprising number of things."); } }

    }

    }

    Some .cs files have two sections with this area

    Main Area You Edit

    [Serialized]

    [LocDisplayName("Plant Fibers")]

    [Compostable]

    [MaxStackSize(100)]

    [Weight(10)]

    [Fuel(100)][Tag("Fuel")]

    [Yield(typeof(PlantFibersItem), typeof(GatheringSkill), new float[] { 1f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f })]

    [Currency]

    [Ecopedia("Items", "Products", createAsSubPage: true, display: InPageTooltip.DynamicTooltip)]

    [Tag("NaturalFiber", 1)]

    [Tag("Burnable Fuel", 1)]

    public partial class PlantFibersItem :

    Item

    {

    One example being CornSeed.cs

    CornSeed.cs

    // Copyright (c) Strange Loop Games. All rights reserved.

    // See LICENSE file in the project root for full license information.

    // <auto-generated />

    namespace Eco.Mods.TechTree

    {

    using System.Collections.Generic;

    using Eco.Gameplay.Blocks;

    using Eco.Core.Items;

    using Eco.Gameplay.Components;

    using Eco.Gameplay.DynamicValues;

    using Eco.Gameplay.Items;

    using Eco.Gameplay.Items.SearchAndSelect;

    using Eco.Gameplay.Skills;

    using Eco.Gameplay.Systems;

    using Eco.Gameplay.Systems.TextLinks;

    using Eco.Mods.TechTree;

    using Eco.Shared.Localization;

    using Eco.Shared.Serialization;

    using Eco.Shared.Utils;

    using Eco.World;

    using Eco.World.Blocks;

    using Gameplay.Players;

    using System.ComponentModel;

    [Serialized]

    [LocDisplayName("Corn Seed")]

    [Weight(50)]

    [StartsDiscovered]

    [Tag("Crop Seed", 1)]

    public partial class CornSeedItem : SeedItem

    {

    static CornSeedItem() { }

    private static Nutrients nutrition = new Nutrients() { Carbs = 0, Fat = 0, Protein = 0, Vitamins = 0 };

    public override LocString DisplayDescription { get { return Localizer.DoStr("Plant to grow corn."); } }

    public override LocString SpeciesName { get { return Localizer.DoStr("Corn"); } }

    public override float Calories { get { return 0; } }

    public override Nutrients Nutrition { get { return nutrition; } }

    }


    [Serialized]

    [LocDisplayName("Corn Seed Pack")]

    [Category("Hidden")]

    [Weight(50)]

    public partial class CornSeedPackItem : SeedPackItem

    {

    static CornSeedPackItem() { }

    public override LocString DisplayDescription { get { return Localizer.DoStr("Plant to grow corn."); } }

    public override LocString SpeciesName { get { return Localizer.DoStr("Corn"); } }

    }

    [RequiresSkill(typeof(FarmingSkill), 1)]

    public class CornSeedRecipe : RecipeFamily

    {

    public CornSeedRecipe()

    {

    this.Initialize(Localizer.DoStr("Corn Seed"), typeof(CornSeedRecipe));

    this.Recipes = new List<Recipe>

    {

    new Recipe(

    "CornSeed",

    Localizer.DoStr("Corn Seed"),

    new IngredientElement[]

    {

    new IngredientElement(typeof(CornItem), 1, typeof(FarmingSkill), typeof(FarmingLavishResourcesTalent)),

    },

    new CraftingElement<CornSeedItem>()

    )

    };

    this.LaborInCalories = CreateLaborInCaloriesValue(20, typeof(FarmingSkill), typeof(CornSeedRecipe), this.UILink());

    this.CraftMinutes = CreateCraftTimeValue(typeof(CornSeedRecipe), this.UILink(), 1, typeof(FarmingSkill), typeof(FarmingFocusedSpeedTalent), typeof(FarmingParallelSpeedTalent));

    this.Initialize(Localizer.DoStr("Corn Seed"), typeof(CornSeedRecipe));

    CraftingComponent.AddRecipe(typeof(FarmersTableObject), this);

    }

    }

    }

    dadycupcakes added a new file:

    dadycupcakes
    September 15, 2020 at 2:26 AM
    Quote

    This mod will add 2 recipes to the workbench 1 which will allow you to make dirt from 5 Wood Pulp for 1 Dirt and the other recipe is 5 Plant Fiber for 1 Dirt.

    I've had this same problem in a few servers, but usually not this quick. I would either make a new world or you can edit the plant settings under C:\Program Files (x86)\Steam\steamapps\common\Eco Server\Mods\AutoGen\Plant
    You can control many aspects of the plants from these configs from how long they take to grow to how quickly they spread, die etc. to adjust how prone they are to dying you will want to adjust "this.MaxDeathRate = 0.0xxx"

    Lowering the number will make it so the plants are less likely to die in general. Most settings in that config are self explanatory so you can mess around with it to get the settings you like. If you have any questions or need any

    help let me know. You will need to adjust that setting on each plant you want btw.

    So I've been experimenting in my server with the Old Growth Redwoods and having them grow/spread around the server. I lowered the growth time to about 30 minutes and changed the spread rate to .1 assuming this is the parameter that enables the spreading and growth of old growth redwoods in the server. I also lowered the death rate but I made the stupid mistake of lowering the capacityperpop to 1f and well I committed a horrible genocide on my server pretty much eliminating all but 300 old growth redwoods. Until I made that mistake I seemed to be having some success having them grow from about 800 trees to about 1300 in just 2 days but I am wanting them to grow/spread faster.... Much faster. Also I tried the massplant command but for some reason it plants the trees pretty much ontop of each other is there a way to tell the command to spread out or how many trees to plant per block, it seems to ignore any other number that I put after the first i.e /massplant 100 oldgrowthredwood, 50, 50.

    Anyways I am posting in here for some help, is there something else that I might have missed that would allow them to spread/grow? Does anyone have any recommendations on what I should edit to make these tree's spread like fire?

    Maybe it is possible to make regular redwoods turn into old growth redwoods at full maturity?