Modmods Requests Thread

1. Ack I don't know. What about an "Army Base"?

2. What about an "Auto Factory" for like to motor cycles, jeeps and stuff and then a "Tank Factory" for all the tanks?

3. How about "Naval Base" or "Naval Yard"?



I am happy to help if there are things i can help with.

Is could you ever post the ones you have done so I can test them? I have no idea if they will make the game unbalanced or not.

Yes. Sure, test them. Just put in your Afforess folder. I got up to Filling Factory done.
View attachment 231337
I like your suggestions. If you want to learn XML (it's just glorified text.), you can do 80% of the requests yourself. I could always use a partner too. ;)


I may have found a way to potentially add Shinto to available religions.

Aaranda originally made it available after researching Feudalism, but historically, the religion has been synonymous with Japanese civilization from the beginning of its written history. So it would involve a new, but early age technology, along the lines of Dualism providing Zoroastrianism.

If this were to be done, I would also add an early age structure for this tech, just so that researching this wouldn't be such a dead end like Dualism (only providing a religion and the Hanging Gardens).

Shamanism (Requires Priesthood) - First to discover founds Shinto, can build Shaman's Hut

Shaman's Hut - Provides +1 :culture:, +1 :health:, +1 :) with Folklore/Prophets, Obsolete with Theology or Divine Right?


Also personally, I wasn't too fond of Monotheism being the immediate prerequisite with Meditation (for founding Judaism before Buddhism), even though I'm sure its for the sake of balancing due to the Church Welfare civic, I thought, "What if there were an alternate way to reach it?" So in this case, what if...

Priesthood > Shamanism + Writing = Meditation

Looks good. I'll see what I can do, when I can get to it.
 
Also, this is a thought. What of geomancy in the tech tree? Geomantic practices like Feng Shui have always served a cultural/spiritual purpose in societies, and until later science and technology, was a means of planning development and divination with the earth.

Geomancy - Prerequisites: Calendar + Paper

+1 :health:, +1 :) in all cities

Afforess, somehow I felt that this could tie in to your Meteorology techs

Maybe, so this isn't a dead end tech, first to discover should get a Great Prophet or Scientist?
 
Also, this is a thought. What of geomancy in the tech tree? Geomantic practices like Feng Shui have always served a cultural/spiritual purpose in societies, and until later science and technology, was a means of planning development and divination with the earth.

Geomancy - Prerequisites: Calendar + Paper

+1 :health:, +1 :) in all cities

Afforess, somehow I felt that this could tie in to your Meteorology techs

Maybe, so this isn't a dead end tech, first to discover should get a Great Prophet or Scientist?

At this point, I'm not going to say good/bad/or something else, as I am drowning in requests.

I am temporarily suspending requests (for me anyways. If other modmoder's want to do them, go ahead) for me. I will announce when it's back open.

(However, I may ask more questions about pre-existing requests)
 
At this point, I'm not going to say good/bad/or something else, as I am drowning in requests.

I am temporarily suspending requests (for me anyways. If other modmoder's want to do them, go ahead) for me. I will announce when it's back open.

(However, I may ask more questions about pre-existing requests)

It's only fair, you must have handfuls to work with and consider now. This shouldn't be too hard for me to try myself, if its just a new tech.

I was just trying to recall if in any way, geomancy had some kind of historical/scientific relationship with meteorology. So if I can get this to work, I'll let you know when you have the time.
 
Ok happiness for money sounds like a good balance.

-----

Ok for the obsolete sports list.

Gladiator School - Realism
Wrestling School - Realism

Aikido Dojo - Modern Sports
Judo Dojo - Modern Sports
Jujutsu Dojo - Modern Sports
Kendo Dojo - Modern Sports
Sumo Wrestling Arena - Modern Sports
Jousting Arena - Vertical Flight

Fencing Academy - Modern Sports

Cricket Field - Space Colonies
Rugby Field - Space Colonies
Polo Field - Space Colonies
Basketball Court - Space Colonies
Croquet - Space Colonies
Football Field - Space Colonies
Golf Course - Space Colonies
Hockey Rink - Space Colonies
Softball Field - Space Colonies
Soccer Field - Space Colonies
Tennis Courts - Space Colonies

X-Games - Space Colonies
Major League Stadium - Space Colonies
Minor League Stadium - Space Colonies
Racetrack - Space Colonies
Battlebot Arena - NEVER

What should these buildings do? The Dojo's, should they give free XP?
 
I was just trying to recall if in any way, geomancy had some kind of historical/scientific relationship with meteorology. So if I can get this to work, I'll let you know when you have the time.

Cloud Patterns might have had something to do with Geomancy. Check wikipedia to be sure.
 
The trade system isn't as bad as you say it is. Just the AI logic of it. Here, look. Even if you don't know C++, the code is written fairly logically. We just need add a part for considering commerce effects of the resources. This is the AI code for Resources:

Spoiler :
Code:
int CvPlayerAI::AI_bonusVal(BonusTypes eBonus, int iChange) const
{
    int iValue = 0;
    int iBonusCount = getNumAvailableBonuses(eBonus);
    if ((iChange == 0) || ((iChange == 1) && (iBonusCount == 0)) || ((iChange == -1) && (iBonusCount == 1)))
    {
        //This is assuming the none-to-one or one-to-none case.
        iValue += AI_baseBonusVal(eBonus);
        iValue += AI_corporationBonusVal(eBonus);
    }
    else
    {
        //This is basically the marginal value of an additional instance of a bonus.
        iValue += AI_baseBonusVal(eBonus) / 5;
        iValue += AI_corporationBonusVal(eBonus);        
    }
    return iValue;
}

//Value sans corporation
int CvPlayerAI::AI_baseBonusVal(BonusTypes eBonus) const
{
    PROFILE_FUNC();

    //recalculate if not defined
    if(m_aiBonusValue[eBonus] == -1)
    {
        PROFILE("CvPlayerAI::AI_baseBonusVal::recalculate");

        UnitTypes eLoopUnit;
        BuildingTypes eLoopBuilding;
        int iDiff;
        int iValue = 0;
        int iTempValue;
        int iI, iJ;

        if (!GET_TEAM(getTeam()).isBonusObsolete(eBonus))
        {
            iValue += (GC.getBonusInfo(eBonus).getHappiness() * 100);
            iValue += (GC.getBonusInfo(eBonus).getHealth() * 100);

            CvTeam& kTeam = GET_TEAM(getTeam());

            CvCity* pCapital = getCapitalCity();
            int iCityCount = getNumCities();
            int iCoastalCityCount = countNumCoastalCities();
            
            // find the first coastal city
            CvCity* pCoastalCity = NULL;
            CvCity* pUnconnectedCoastalCity = NULL;
            if (iCoastalCityCount > 0)
            {
                int iLoop;
                    for (CvCity* pLoopCity = firstCity(&iLoop); pLoopCity != NULL; pLoopCity = nextCity(&iLoop))
                {
                    if (pLoopCity->isCoastal(GC.getMIN_WATER_SIZE_FOR_OCEAN()))
                    {
                        if (pLoopCity->isConnectedToCapital(getID()))
                        {
                            pCoastalCity = pLoopCity;
                                break;
                        }
                        else if (pUnconnectedCoastalCity == NULL)
                        {
                            pUnconnectedCoastalCity = pLoopCity;
                        }
                    }
                }
            }
            if (pCoastalCity == NULL && pUnconnectedCoastalCity != NULL)
            {
                pCoastalCity = pUnconnectedCoastalCity;
            }


            for (iI = 0; iI < GC.getNumUnitClassInfos(); iI++)
            {
                eLoopUnit = ((UnitTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationUnits(iI)));

                if (eLoopUnit != NO_UNIT)
                {
                    CvUnitInfo& kLoopUnit = GC.getUnitInfo(eLoopUnit);

                    iTempValue = 0;

                    if (kLoopUnit.getPrereqAndBonus() == eBonus)
                    {
                        iTempValue += 50;
                    }

                    for (iJ = 0; iJ < GC.getNUM_UNIT_PREREQ_OR_BONUSES(); iJ++)
                    {
                        if (kLoopUnit.getPrereqOrBonuses(iJ) == eBonus)
                        {
                            iTempValue += 40;
                        }
                    }

                    iTempValue += kLoopUnit.getBonusProductionModifier(eBonus) / 10;

                    if (iTempValue > 0)
                    {
                        bool bIsWater = (kLoopUnit.getDomainType() == DOMAIN_SEA);
                        
                        // if non-limited water unit, weight by coastal cities
                        if (bIsWater && !isLimitedUnitClass((UnitClassTypes)(kLoopUnit.getUnitClassType())))
                        {
                            iTempValue *= std::min(iCoastalCityCount * 2, iCityCount);    // double coastal cities, cap at total cities
                            iTempValue /= std::max(1, iCityCount);
                        }

                        if (canTrain(eLoopUnit))
                        {
                            // is it a water unit and no coastal cities or our coastal city cannot build because its obsolete
                            if ((bIsWater && (pCoastalCity == NULL || (pCoastalCity->allUpgradesAvailable(eLoopUnit) != NO_UNIT))) ||
                                // or our capital cannot build because its obsolete (we can already build all its upgrades)
                                (pCapital != NULL && pCapital->allUpgradesAvailable(eLoopUnit) != NO_UNIT))
                            {
                                // its worthless
                                iTempValue = 2;
                            }
                            // otherwise, value units we could build if we had this bonus double
                            else
                            {
                                iTempValue *= 2;
                            }
                        }

                        if (kLoopUnit.getPrereqAndTech() != NO_TECH)
                        {
                            iDiff = abs(GC.getTechInfo((TechTypes)(kLoopUnit.getPrereqAndTech())).getEra() - getCurrentEra());

                            if (iDiff == 0)
                            {
                                iTempValue *= 3;
                                iTempValue /= 2;
                            }
                            else
                            {
                                iTempValue /= iDiff;
                            }
                        }

                        iValue += iTempValue;
                    }
                }
            }

            for (iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)
            {
                eLoopBuilding = ((BuildingTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(iI)));

                if (eLoopBuilding != NO_BUILDING)
                {
                    CvBuildingInfo& kLoopBuilding = GC.getBuildingInfo(eLoopBuilding);
                    
                    iTempValue = 0;

                    if (kLoopBuilding.getPrereqAndBonus() == eBonus)
                    {
                        iTempValue += 30;
                    }

                    for (iJ = 0; iJ < GC.getNUM_BUILDING_PREREQ_OR_BONUSES(); iJ++)
                    {
                        if (kLoopBuilding.getPrereqOrBonuses(iJ) == eBonus)
                        {
                            iTempValue += 20;
                        }
                    }

                    iTempValue += kLoopBuilding.getBonusProductionModifier(eBonus) / 10;

                    if (kLoopBuilding.getPowerBonus() == eBonus)
                    {
                        iTempValue += 60;
                    }
                    
                    for (iJ = 0; iJ < NUM_YIELD_TYPES; iJ++)
                    {
                        iTempValue += kLoopBuilding.getBonusYieldModifier(eBonus, iJ) / 2;
                        if (kLoopBuilding.getPowerBonus() == eBonus)
                        {
                            iTempValue += kLoopBuilding.getPowerYieldModifier(iJ);
                        }
                    }
                    
                    {
                        // determine whether we have the tech for this building
                        bool bHasTechForBuilding = true;
                        if (!(kTeam.isHasTech((TechTypes)(kLoopBuilding.getPrereqAndTech()))))
                        {
                            bHasTechForBuilding = false;
                        }
                        for (int iPrereqIndex = 0; bHasTechForBuilding && iPrereqIndex < GC.getNUM_BUILDING_AND_TECH_PREREQS(); iPrereqIndex++)
                        {
                            if (kLoopBuilding.getPrereqAndTechs(iPrereqIndex) != NO_TECH)
                            {
                                if (!(kTeam.isHasTech((TechTypes)(kLoopBuilding.getPrereqAndTechs(iPrereqIndex)))))
                                {
                                    bHasTechForBuilding = false;
                                }
                            }
                        }
                        
                        bool bIsStateReligion = (((ReligionTypes) kLoopBuilding.getStateReligion()) != NO_RELIGION);

                        //check if function call is cached
                        bool bCanConstruct = canConstruct(eLoopBuilding, false, /*bTestVisible*/ true, /*bIgnoreCost*/ true);
                        
                        // bCanNeverBuild when true is accurate, it may be false in some cases where we will never be able to build 
                        bool bCanNeverBuild = (bHasTechForBuilding && !bCanConstruct && !bIsStateReligion);

                        // if we can never build this, it is worthless
                        if (bCanNeverBuild)
                        {
                            iTempValue = 0;
                        }
                        // double value if we can build it right now
                        else if (bCanConstruct)
                        {
                            iTempValue *= 2;
                        }

                        // if non-limited water building, weight by coastal cities
                        if (kLoopBuilding.isWater() && !isLimitedWonderClass((BuildingClassTypes)(kLoopBuilding.getBuildingClassType())))
                        {
                            iTempValue *= iCoastalCityCount;
                            iTempValue /= std::max(1, iCityCount/2);
                        }

                        if (kLoopBuilding.getPrereqAndTech() != NO_TECH)
                        {
                            iDiff = abs(GC.getTechInfo((TechTypes)(kLoopBuilding.getPrereqAndTech())).getEra() - getCurrentEra());

                            if (iDiff == 0)
                            {
                                iTempValue *= 3;
                                iTempValue /= 2;
                            }
                            else
                            {
                                iTempValue /= iDiff;
                            }
                        }

                        iValue += iTempValue;
                    }
                }
            }

            for (iI = 0; iI < GC.getNumProjectInfos(); iI++)
            {
                ProjectTypes eProject = (ProjectTypes) iI;
                CvProjectInfo& kLoopProject = GC.getProjectInfo(eProject);
                iTempValue = 0;

                iTempValue += kLoopProject.getBonusProductionModifier(eBonus) / 10;

                if (iTempValue > 0)
                {
                    bool bMaxedOut = (GC.getGameINLINE().isProjectMaxedOut(eProject) || kTeam.isProjectMaxedOut(eProject));

                    if (bMaxedOut)
                    {
                        // project worthless
                        iTempValue = 0;
                    }
                    else if (canCreate(eProject))
                    {
                        iTempValue *= 2;
                    }

                    if (kLoopProject.getTechPrereq() != NO_TECH)
                    {
                        iDiff = abs(GC.getTechInfo((TechTypes)(kLoopProject.getTechPrereq())).getEra() - getCurrentEra());

                        if (iDiff == 0)
                        {
                            iTempValue *= 3;
                            iTempValue /= 2;
                        }
                        else
                        {
                            iTempValue /= iDiff;
                        }
                    }

                    iValue += iTempValue;
                }
            }

            RouteTypes eBestRoute = getBestRoute();
            for (iI = 0; iI < GC.getNumBuildInfos(); iI++)
            {
                RouteTypes eRoute = (RouteTypes)(GC.getBuildInfo((BuildTypes)iI).getRoute());

                if (eRoute != NO_ROUTE)
                {
                    iTempValue = 0;
                    if (GC.getRouteInfo(eRoute).getPrereqBonus() == eBonus)
                    {
                        iTempValue += 80;
                    }
                    for (iJ = 0; iJ < GC.getNUM_ROUTE_PREREQ_OR_BONUSES(); iJ++)
                    {
                        if (GC.getRouteInfo(eRoute).getPrereqOrBonus(iJ) == eBonus)
                        {
                            iTempValue += 40;
                        }
                    }
                    if ((eBestRoute != NO_ROUTE) && (GC.getRouteInfo(getBestRoute()).getValue() <= GC.getRouteInfo(eRoute).getValue()))
                    {
                        iValue += iTempValue;
                    }
                    else
                    {
                        iValue += iTempValue / 2;
                    }
                }
            }

            //    int iCorporationValue = AI_corporationBonusVal(eBonus);
            //    iValue += iCorporationValue;
            //
            //    if (iCorporationValue <= 0 && getNumAvailableBonuses(eBonus) > 0)
            //    {
            //        iValue /= 3;
            //    }

            iValue /= 10;
        }


        //clamp value non-negative
        m_aiBonusValue[eBonus] = std::max(0, iValue);
    }

    return m_aiBonusValue[eBonus];
}

Actually, I do know C++, I and one other wrote a fairly complex n-dimentional AI once. But I got better. I also have not installed C++ on my home machine.
 
Yes. Sure, test them. Just put in your Afforess folder. I got up to Filling Factory done.
View attachment 231337
I like your suggestions. If you want to learn XML (it's just glorified text.), you can do 80% of the requests yourself. I could always use a partner too. ;)

Well it did not seem to work for 2.7 or 2.8. I put it in the Afforess folder but nothing happened.

As for me doing XML maybe someday. I once did some "Gas Skrit" for "Dungeon Siege" and a tiny bit of C++ back in high school. However that class I failed at. I even tried some "scripting" for "Neverwinter Nights". In short i can probably read it and know whats going on but writing it is another story. Especially with my bad spelling :P Thank goodness for spell check.

What should these buildings do? The Dojo's, should they give free XP?

Sure unless you want to make a new sports promotions like "Athletic". Or have the Dojos give the "Martial Arts" Promotion for free. Personally i think free XP is always good. However it should be limit the bonuses to specific types of units. Such as Human Sports to Melee Units and Horse Sports to Mounted Units, Car Sports to Armored Vehicle Units and Robot Sports to Robotic Units.
 
ahhhhhhhhhhhh dont add any more buildings that remove % of hammers!! these late modern era units are taking forever to build already!!
 
Okay, here are the planned features for the Sports Modmod:

Sports Tech Buildings
  1. Combat Sports
    • Fighting Pit
      • 60 Hammers
      • +1 XP for melee
      • +1 Unhealthy
      • +5% Commerce
  2. Martial Arts
    • Training Dojo
      • 80 Hammers
      • Gives Free Martial Arts I Promotion
      • +15% vs Melee
      • +5% vs Archery
    • Master Dojo
      • 120 Hammers
      • Requires Training Dojo
      • Gives Free Martial Arts II Promotion
        • +15% vs Melee
        • +5% vs Archery
        • +1 First Strike

  3. Tournaments
    • Jousting Arena
      • 140 Hammers
      • +1 XP to all Mounted Units
      • +1 Happiness
      • +5% Commerce
  4. Dueling
    • Fencing Academy
      • 160 Hammers
      • +2 XP to melee
      • +1 XP to Rifles
  5. Team Sports
    • Indoor Recreation Center
      • 220 Hammers
      • +1 Happiness
      • +1 Healthiness
      • +15% City Maintenance
  6. Lawn Sports
    • Outdoor Recreation Center
      • 250 Hammers
      • +1 Happiness
      • +2 Healthiness
      • +5% City Maintenance
    • Ice Rink (Also Requires Refrigeration)
      • Only 40' Latitude and Above
      • +1 Happiness
      • +1 Healthiness
      • +20% City Maintenance
  7. Modern Sports
    • Minor League Stadium
      • +1 Happiness
      • +10% Commerce
      • +5% Culture
    • Major League Stadium
      • +2 Happiness
      • +1 Happiness per 10% Culture Rate
      • +30% Commerce
      • +15% Culture
      • -10% Production
    • Olympics (Stays in a city for one turn, then dissappears for two turns, repeat.)
      • World Wonder
      • +5 Happiness
      • +50% Commerce
      • +100% Gold from Trade Routes
      • +250% City Maintenance
      • -100% Production
      • +10 Great Artist Points/turn
  8. Extreme Sports
    • X-Games (World Wonder)
      • +3 Happiness
      • +50% Commerce
      • +50% Commerce from Trade Routes
  9. Motorsports
    • Speedway
      • +2 Happiness
      • +20% Commerce
  10. Robotic Sports
    • Battlebots Arena
      • +1 Happiness
      • +5% Science
      • +1 Great Scientist Point/Turn

Also, there will be a :


Martial Arts III Promotion

  • Must be GG
  • Requires MAI & II
  • +20% vs Melee
  • +10% vs Archery
  • Two First Strike

Does this look acceptable to everyone?

Edit:

I almost forgot. I made promotion buttons for Martial Arts. They are just heavily modified Shock Icons. Tell me if they will work.

View attachment 231466View attachment 231467View attachment 231468
 
Okay, here are the planned features for the Sports Modmod:

Sports Tech Buildings
  1. Combat Sports
    • Fighting Pit
      • 60 Hammers
      • +1 XP for melee
      • +1 Unhealthy
      • +5% Commerce
  2. Martial Arts
    • Training Dojo
      • 80 Hammers
      • Gives Free Martial Arts I Promotion
      • +15% vs Melee
      • +5% vs Archery
    • Master Dojo
      • 120 Hammers
      • Requires Training Dojo
      • Gives Free Martial Arts II Promotion
        • +15% vs Melee
        • +5% vs Archery
        • +1 First Strike

  3. Tournaments
    • Jousting Arena
      • 140 Hammers
      • +1 XP to all Mounted Units
      • +1 Happiness
      • +5% Commerce
  4. Dueling
    • Fencing Academy
      • 160 Hammers
      • +2 XP to melee
      • +1 XP to Rifles
  5. Team Sports
    • Indoor Recreation Center
      • 220 Hammers
      • +1 Happiness
      • +1 Healthiness
      • +15% City Maintenance
  6. Lawn Sports
    • Outdoor Recreation Center
      • 250 Hammers
      • +1 Happiness
      • +2 Healthiness
      • +5% City Maintenance
    • Ice Rink (Also Requires Refrigeration)
      • Only 40' Latitude and Above
      • +1 Happiness
      • +1 Healthiness
      • +20% City Maintenance
  7. Modern Sports
    • Minor League Stadium
      • +1 Happiness
      • +10% Commerce
      • +5% Culture
    • Major League Stadium
      • +2 Happiness
      • +1 Happiness per 10% Culture Rate
      • +30% Commerce
      • +15% Culture
      • -10% Production
    • Olympics (Stays in a city for one turn, then dissappears for two turns, repeat.)
      • World Wonder
      • +5 Happiness
      • +50% Commerce
      • +100% Gold from Trade Routes
      • +250% City Maintenance
      • -100% Production
      • +10 Great Artist Points/turn
  8. Extreme Sports
    • X-Games (World Wonder)
      • +3 Happiness
      • +50% Commerce
      • +50% Commerce from Trade Routes
  9. Motorsports
    • Speedway
      • +2 Happiness
      • +20% Commerce
  10. Robotic Sports
    • Battlebots Arena
      • +1 Happiness
      • +5% Science
      • +1 Great Scientist Point/Turn

Also, there will be a :


Martial Arts III Promotion

  • Must be GG
  • Requires MAI & II
  • +20% vs Melee
  • +10% vs Archery
  • Two First Strike

Does this look acceptable to everyone?

Interesting Tweaks. I would just add theses to make things complete.

Water Sports (Req Athletics, Modern Sanitation)
  • Aquatic Sports Center (Obsolete with Space Colonies)
    • +1 Happiness
    • +1 Healthiness
    • +1 Healthiness for Coastal City
    • +1 Healthiness for River City
    • +20% City Maintenance

Virtual Sports (Req Modern Sports, Wearable Computers)
  • Virtual Reality Gym (Never Becomes Obsolete)
    • +3 Happiness
    • +1 Healthiness
    • +5% Culture

Interstellar Racing (Req Motor Sports, Orbital Flight)
  • Spaceway (Never Becomes Obsolete)
    • +4 Happiness
    • +30% Commerce

------

The only Sports i think we are missing would be Boat and Aircraft based sports. Let me know if you have any ideas for them.
 
Interesting Tweaks. I would just add theses to make things complete.

Water Sports (Req Athletics, Modern Sanitation)
  • Aquatic Sports Center (Obsolete with Space Colonies)
    • +1 Happiness
    • +1 Healthiness
    • +1 Healthiness for Coastal City
    • +1 Healthiness for River City
    • +20% City Maintenance

Look fine.

Virtual Sports (Req Modern Sports, Wearable Computers)
  • Virtual Reality Gym (Never Becomes Obsolete)
    • +3 Happiness
    • +1 Healthiness
    • +5% Culture

I don't know, I think this overlaps too much with existing VR. I'd just rather cut it.

Interstellar Racing (Req Motor Sports, Orbital Flight)
  • Spaceway (Never Becomes Obsolete)
    • +4 Happiness
    • +30% Commerce

Seems good.


The only Sports i think we are missing would be Boat and Aircraft based sports. Let me know if you have any ideas for them.

Why don't we add "Wave Racing" building to coastal cities, if they have researched Water Sports.

Not sure what to do about airplanes though.
 
Nice list, but I think some are too interchangable (Rancher and Farmer, Quarryman and Miner) and should be merged for the sake of gameplay.

How about this:
Carpenter (Req Pottery) = Cottage, Hamlet, Town, Watermill, Windmill, Workshop

Hazmat (Req Nuclear Power) = Cleans Up Fallout

Hunter (Req Hunting) = Camp, Jungle Camp
Upgrades to Farmer

Engineer (Req Mathematics) = Bunker, Command Center, Fort, Well

Farmer (Req Agriculture) = Apple Orchard, Farm, Olive Orchard, Plantation, Tree Farm, Vertical Farm, Winery, Pasture, Silk Farm

Industrialist (Assembly Line) = Desert Windmill, Geothermal Factory, Ground Water Well, Industry (Dense), Industry (Heavy), Industry (Light), Industry (Medium), Industry (Sparce), Waste Refinement Facility,

Lumberjack (Req Bronze Working) = Chops Trees, Lumber Mill

Miner (Req Mining) = Mine, Modern Mine, Shaft Mine, Quarry

Road Worker (Req Wheel) = Road (and upgrades)

Scientist (Req Scientific Method) = Archeological Site, Forest Preserve, Hybrid Forest, Safari, Soylent Green Facility

Might I suggest to put Scientist and Industrialist actions to Engineer's? Scientists sit in their labs but hire engineers to do everything. Same goes for Industrialists, they sit in their offices thinking of new ways to do things more efficiently but hire engineers to actually build it.
 
Might I suggest to put Scientist and Industrialist actions to Engineer's? Scientists sit in their labs but hire engineers to do everything. Same goes for Industrialists, they sit in their offices thinking of new ways to do things more efficiently but hire engineers to actually build it.

That seems logical. Go ahead and change it on your end. I'll update it on mine.
 
Back
Top Bottom