Single Player bugs and crashes v38 plus (SVN) - After the 20th of February 2018

This may be fixed already but I think Murex has a similar problem in that you can't make dye with it if it's imported...
There are many different ways to obtain Dye.

I think Murex was part of resource combo building.
 
@Thunderbrd is possible with GOM to make following building requirement:
(X OR Y OR Z ) AND A AND (B OR C)
This way I wouldn't need autobuildings.
Should be possible I think. The AI might not have much awareness of it but I'm not sure that's a problem really.
 
There are many different ways to obtain Dye.

I think Murex was part of resource combo building.
No Murex is a map resource (as is Indigo) - I think all the other dye sources are combos. The Dye Maker requires the Murex building, not the resource, (Indigo is probably the same) so you can't make dye if you import the stuff
 
Should be possible I think. The AI might not have much awareness of it but I'm not sure that's a problem really.
It appears I can use Horse/Camel/Elephant Trainers for Tamed Horse/Camel/Elephant in place of Elephant Myth and Horse/Camel Farm - these Trainers need National Breeder or Animal Farm or Herd.
This way National Breeders are useful as one of Trainer prereq, and by itself is needed for tamed animals.
Spoiler :

Civ4BeyondSword 2018-11-10 11-12-00-58.jpg
Civ4BeyondSword 2018-11-10 11-12-08-86.jpg
Civ4BeyondSword 2018-11-10 11-11-54-35.jpg



Now I must add ability to place resource to Tamed Animal units, if they require animal resource.
 
Last edited:
No Murex is a map resource (as is Indigo) - I think all the other dye sources are combos. The Dye Maker requires the Murex building, not the resource, (Indigo is probably the same) so you can't make dye if you import the stuff
Dye Maker needs one of 11 buildings.
They all need resource in vicinity.

This means import isn't option to make dye, instead you can import dye itself.
 
It appears I can use Horse/Camel/Elephant Trainers for Tamed Horse/Camel/Elephant in place of Elephant Myth and Horse/Camel Farm - these Trainers need National Breeder or Animal Farm or Herd.
This way National Breeders are useful as one of Trainer prereq, and by itself is needed for tamed animals.


Now I must add ability to place resource to Tamed Animal units, if they require animal resource.
I know I don't fully agree with all of DH's positions on these things BUT, please keep this in the realm of discussion only for now and make proposals for us to discuss before acting.

I may not feel things are quite right at the moment but I completely respect the amount of thought and labor he has put into these and he may well see a flaw in any design concept that we don't. So let's please come to a consensus before we act on making changes.

To do that we're going to have to be very clear and patient in trying to understand EXACTLY what the plan and the results of that plan in play will be.

With that said, DH, I hope you fully understand the frustrations players are voicing here and will keep a very open mind to possible alternative solutions. We've had a lot of complaints about this over time and Raxo is perhaps the perfect code mule to make this happen without the burden of the solution falling completely on your shoulders. If we can make sure things are guided in the right direction, he's amazing at ensuring complete compliance in a huge XML project like this and we can all tell he's raring to go to create the solution.

I'm a little unclear on what, exactly, you are proposing Rax... can you break it down into the large scale concept of the plan in full?
 
Dye Maker needs one of 11 buildings.
They all need resource in vicinity.

This means import isn't option to make dye, instead you can import dye itself.
That doesn't seem quite right. There should be a solution that allows dye to be manufactured from imported goods as well, even if it's not exactly the same solution. Perhaps a national Dye making center wonder would apply here?
 
That doesn't seem quite right. There should be a solution that allows dye to be manufactured from imported goods as well, even if it's not exactly the same solution. Perhaps a national Dye making center wonder would apply here?
Thanks TB. That's what I was saying.

To be exact, nine of the 11 potential inputs for Dye do not exist as resources, so the current way of using the building that makes them is the only way. For Murex and Indigo, the current Dye Maker building really should be using the resources as prereqs, rather than the vicinity buildings that produce them.
 
I know I don't fully agree with all of DH's positions on these things BUT, please keep this in the realm of discussion only for now and make proposals for us to discuss before acting.

I may not feel things are quite right at the moment but I completely respect the amount of thought and labor he has put into these and he may well see a flaw in any design concept that we don't. So let's please come to a consensus before we act on making changes.

To do that we're going to have to be very clear and patient in trying to understand EXACTLY what the plan and the results of that plan in play will be.

With that said, DH, I hope you fully understand the frustrations players are voicing here and will keep a very open mind to possible alternative solutions. We've had a lot of complaints about this over time and Raxo is perhaps the perfect code mule to make this happen without the burden of the solution falling completely on your shoulders. If we can make sure things are guided in the right direction, he's amazing at ensuring complete compliance in a huge XML project like this and we can all tell he's raring to go to create the solution.

I'm a little unclear on what, exactly, you are proposing Rax... can you break it down into the large scale concept of the plan in full?
Well I wanted to do large scale plan, but I decided not to.
I'll make only small adjustments to Tamed Animals, as large scale plan would add massive amount of National Wonders.

1. I changed Animal Farm/Myth requirement to Animal Trainer requirement - it requires Animal Farm or National Animal Breeder or Animal Herd.
Three Tamed Animals - Tamed Horse/Camel/Elephant were affected by this.

2. Some Tamed Animals can't place resource, that they require.
Following Tamed Animal can place its Animal resource:
Donkey, Horse

Those Tamed Animals can't place Animal Resource on map.
Cow, Bison, Camel, Elephant, Llama, Mammoth, Pig (Wild Boar)

Those land animal resources have no tamed animal unit representation.
Beaver, Deer, Guinea Pigs, Kangaroo, Parrots, Poultry, Rabbit, Sea Lion and Seal, Sheep, Walrus.
 
Last edited:
I found an error in CvGameTextMgr.cpp
if (getBugOptionBOOL("CityBar__AirportIcon", true, "BUG_CITYBAR_AIRPORT_ICONS"))

1. CityBar__AirportIcon
2. CityBar__AirportIcons

1. is wrong, 2. is correct.

I'm testing the game stability before sending this to the SVN.

@Thunderbrd I can compile if using the 'Release' or 'Final_Release' configuration. Using 'Final_Release2' prompts that missing Python.h error though.
 
@strategyonly I found out that only Tamed Donkey/Horse can place Donkey/Horse.
Tamed Cattle erroneously displays, that it can place Cow.

It seems like Dancing Hoskuld never used MISSION_BUILD_DOMESTICATED_HERD for other Tamed and or Subdued animals.
Cow/Sheep can be placed by some Subdued animals.

Some Tamed/Subdued animals can build Herd within city though.
Code:
<?xml version="1.0"?>
<!-- ###################################################################################### -->
<Civ4UnitInfos xmlns="x-schema:SubdueAnimals_CIV4UnitSchema.xml">
    <UnitInfos>
        <UnitInfo>
            <Type>UNIT_TAMED_HORSE_PAIR</Type>
            <Buildings>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORY</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORIES</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
            </Buildings>
            <Actions>
                <Action>
                    <MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
                    <ActionOutcomes>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD</OutcomeType>
                            <iChance>50</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonus</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonus</PythonCallback>
                        </Outcome>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD_WITH_PASTURE</OutcomeType>
                            <iChance>100</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonusAndPasture</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonusAndPasture</PythonCallback>
                        </Outcome>
                    </ActionOutcomes>
                </Action>
            </Actions>
        </UnitInfo>
        <UnitInfo>
            <Type>UNIT_TAMED_HORSE</Type>
            <Buildings>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORY</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORIES</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
            </Buildings>
            <Actions>
                <Action>
                    <MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
                    <ActionOutcomes>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD</OutcomeType>
                            <iChance>50</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonus</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonus</PythonCallback>
                        </Outcome>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD_WITH_PASTURE</OutcomeType>
                            <iChance>100</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonusAndPasture</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonusAndPasture</PythonCallback>
                        </Outcome>
                    </ActionOutcomes>
                </Action>
            </Actions>
        </UnitInfo>
    </UnitInfos>
</Civ4UnitInfos>
This is how such override look.
Files are here: Caveman2Cosmos\Assets\Modules\DancingHoskuld\Subdue_Animals\z_experimental\Herds
This is used if you want to place resource.

This is unnecessary as Great Farmer is much simpler as to adding bonuses.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by EXTREME (Firaxis Games) -->
<!-- Sid Meier's Civilization 4 -->
<!-- Copyright Firaxis Games 2005 -->
<!-- Assets\Modules\NotSoGood\AnimalPlacing\AnimalPlacing_CIV4UnitInfos.xml -->
<!-- Unit Infos -->
<Civ4UnitInfos xmlns="x-schema:AnimalPlacing_CIV4UnitSchema.xml">
    <UnitInfos>
        <UnitInfo>
            <Class>UNITCLASS_GREAT_FARMER</Class>
            <Type>UNIT_GREAT_FARMER</Type>
            <Combat>UNITCOMBAT_PRODIGY</Combat>
            <SubCombatTypes>
                <SubCombatType>UNITCOMBAT_WORKER</SubCombatType>
                <SubCombatType>UNITCOMBAT_CIVILIAN</SubCombatType>
                <SubCombatType>UNITCOMBAT_SPECIES_HUMAN</SubCombatType>
                <SubCombatType>UNITCOMBAT_MOTILITY_FOOT</SubCombatType>
                <SubCombatType>UNITCOMBAT_QUALITY_POOR</SubCombatType>
                <SubCombatType>UNITCOMBAT_GROUP_PARTY</SubCombatType>
                <SubCombatType>UNITCOMBAT_SIZE_MEDIUM</SubCombatType>
                <SubCombatType>UNITCOMBAT_HEALS_AS_PEOPLE</SubCombatType>
            </SubCombatTypes>
            <Domain>DOMAIN_LAND</Domain>
            <MapCategoryTypes>
                <MapCategoryType>MAPCATEGORY_EARTH</MapCategoryType>
            </MapCategoryTypes>
            <DefaultUnitAI>UNITAI_WORKER</DefaultUnitAI>
            <Description>TXT_KEY_UNIT_GREAT_FARMER</Description>
            <Civilopedia>TXT_KEY_UNIT_GREAT_FARMER_PEDIA</Civilopedia>
            <Strategy>TXT_KEY_UNIT_GREAT_FARMER_STRATEGY</Strategy>
            <Advisor>ADVISOR_ECONOMY</Advisor>
            <bFood>1</bFood>
            <UnitAIs>
                <UnitAI>
                    <UnitAIType>UNITAI_WORKER</UnitAIType>
                    <bUnitAI>1</bUnitAI>
                </UnitAI>
            </UnitAIs>
            <Builds>
                <Build>
                    <BuildType>BUILD_BONUS_DONKEY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_HORSE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_ELEPHANT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BISON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CAMEL</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COW</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_DEER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FUR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_KANGAROO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_LLAMA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MAMMOTH</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_POULTRY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RABBIT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SEA_LIONS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SHEEP</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WALRUS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_GUINEA_PIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PARROTS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BARLEY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CORN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FLAX</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                 <Build>
                    <BuildType>BUILD_BONUS_POMEGRANATE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_KAVA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_GUAVA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MELON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_POTATO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PUMPKIN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RICE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SQUASH</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WHEAT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_ALMONDS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_APPLE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BANANA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCONUT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_DATES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_LEMON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MANGO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_OLIVES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PAPAYA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PISTACHIO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WINE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_HENNA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_INDIGO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RUBBER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TIMBER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CANNABIS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCOA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COFFEE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COTTON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_INCENSE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MUSHROOMS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_OPIUM</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PAPYRUS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PEYOTE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PRICKLY_PEAR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RESIN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SILK</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SPICES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SUGAR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TEA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TOBACCO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_VANILLA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
            </Builds>
            <PrereqTech>TECH_AGRICULTURAL_TOOLS</PrereqTech>
            <iCost>500</iCost>
            <iAdvancedStartCost>-1</iAdvancedStartCost>
            <iMinAreaSize>-1</iMinAreaSize>
            <iMoves>2</iMoves>
            <iWorkRate>500</iWorkRate>
            <iAsset>1</iAsset>
            <UnitMeshGroups>
                <iGroupSize>1</iGroupSize>
                <fMaxSpeed>1.75</fMaxSpeed>
                <fPadTime>1</fPadTime>
                <iMeleeWaveSize>1</iMeleeWaveSize>
                <iRangedWaveSize>0</iRangedWaveSize>
                <UnitMeshGroup>
                    <iRequired>1</iRequired>
                    <EarlyArtDefineTag>ART_DEF_UNIT_GREAT_FARMER</EarlyArtDefineTag>
                </UnitMeshGroup>
            </UnitMeshGroups>
            <FormationType>FORMATION_TYPE_DEFAULT</FormationType>
        </UnitInfo>
    </UnitInfos>
</Civ4UnitInfos>

It appears you would need to make additonal set of build actions if you wanted them instantinous and without any gold cost.

I guess then I'll add more
<MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
and add help text entries to Cow (Cattle), Bison, Camel, Elephant, Llama, Mammoth, Pig (Wild Boar)
That is for Tamed animals.
 
Last edited:
He said in other thread, that trading of natural resources is broken for all raw materials.

Also StrategyOnly said, that he couldn't build Bison Tamers or something despite importing bison - there is no National Breeder for that.


Either we need hundred of National Importers (Needs resource anywhere in empire) and another hundred of Local Suppliers (Needs National Importer OR vicinity buildings, that provide resource), and would be base instead of vicinity buildings (Or use GOM, if [A or B] AND [B or C] requirement is possible with it).
Local Supplier doesn't have to provide resource - either its traded or is somewhere within your empire borders.
That is Local Supplier could be standalone autobuilding or could be GOM type requirement if it allows for multiple sets of OR building requirements.

Or we need stop using "Needs resource in vicinity" as base for supply chains, though cultures and buildings needing two different resources in vicinity could be left as is.
Then you could build Tamed Animal anywhere - it wouldn't depend on vicinity directly or indirectly but just would need resource somewhere.

That is units and buildings would depend only on existence of resource anywhere (Unit/Building -> Building prereq for Unit/building -> A (Needs Vicinity resource) or B (Needs resource anywhere))

.........................................
I think I found way to require least amount of buildings:
Instead of National Breeder/Smelter or hundred of National Importers building/unit could require National Warehouse or any of resource giving buildings and Bonus (they all would be in one OR GOM group)
There could be several types of it like Minerals/Plants/Animals or one general.

You could build several National Warehouse national wonders - few other national wonders are like this.
Essentially National Warehouse could act as alternative requirement to building, that needs resource in vicinity or Herd in case of animals.
Current smelters and breeders would be readjusted where needed.

There is 80 if not 100 National Resources, so 100 types of National Importer NWs would be too much considering, that there is only 400 National Wonders.

And thus you would destroy all of Hydro's work and one third of what C2C is about.

I would have thought someone else would have realised this but the bug here is not that trading horses/bison wont let you build stuff but that you can trade those resources at all!

The mechanism we use inside the nation is to use subdued/tamed animals. That is the same mechanism you should be using when trading for the resource.

Bottom line it is not a bug it is the way it is meant to be.

I will fix the National Smelters/Breeders by
  1. changing the name to "Not in any city" instead of "National"
  2. making sure the help and strategy text about this are correct.
  3. applying one bug fix so that these buildings can't be built in cities that have the resource near it.
 
Last edited:
@strategyonly I found out that only Tamed Donkey/Horse can place Donkey/Horse.
Tamed Cattle erroneously displays, that it can place Cow.

It seems like Dancing Hoskuld never used MISSION_BUILD_DOMESTICATED_HERD for other Tamed and or Subdued animals.
Cow/Sheep can be placed by some Subdued animals.

Some Tamed/Subdued animals can build Herd within city though.
Code:
<?xml version="1.0"?>
<!-- ###################################################################################### -->
<Civ4UnitInfos xmlns="x-schema:SubdueAnimals_CIV4UnitSchema.xml">
    <UnitInfos>
        <UnitInfo>
            <Type>UNIT_TAMED_HORSE_PAIR</Type>
            <Buildings>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORY</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORIES</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
            </Buildings>
            <Actions>
                <Action>
                    <MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
                    <ActionOutcomes>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD</OutcomeType>
                            <iChance>50</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonus</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonus</PythonCallback>
                        </Outcome>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD_WITH_PASTURE</OutcomeType>
                            <iChance>100</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonusAndPasture</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonusAndPasture</PythonCallback>
                        </Outcome>
                    </ActionOutcomes>
                </Action>
            </Actions>
        </UnitInfo>
        <UnitInfo>
            <Type>UNIT_TAMED_HORSE</Type>
            <Buildings>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORY</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
                <Building>
                    <BuildingType>BUILDING_HORSE_STORIES</BuildingType>
                    <bBuilding>1</bBuilding>
                </Building>
            </Buildings>
            <Actions>
                <Action>
                    <MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
                    <ActionOutcomes>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD</OutcomeType>
                            <iChance>50</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonus</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonus</PythonCallback>
                        </Outcome>
                        <Outcome>
                            <OutcomeType>OUTCOME_BUILD_DOMESTICATED_HERD_WITH_PASTURE</OutcomeType>
                            <iChance>100</iChance>
                            <PlotCondition>
                                <Greater>
                                    <Python>canBuildHorseBonusAndPasture</Python>
                                    <Constant>0</Constant>
                                </Greater>
                            </PlotCondition>
                            <PythonCallback>doBuildHorseBonusAndPasture</PythonCallback>
                        </Outcome>
                    </ActionOutcomes>
                </Action>
            </Actions>
        </UnitInfo>
    </UnitInfos>
</Civ4UnitInfos>
This is how such override look.
Files are here: Caveman2Cosmos\Assets\Modules\DancingHoskuld\Subdue_Animals\z_experimental\Herds
This is used if you want to place resource.

This is unnecessary as Great Farmer is much simpler as to adding bonuses.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by EXTREME (Firaxis Games) -->
<!-- Sid Meier's Civilization 4 -->
<!-- Copyright Firaxis Games 2005 -->
<!-- Assets\Modules\NotSoGood\AnimalPlacing\AnimalPlacing_CIV4UnitInfos.xml -->
<!-- Unit Infos -->
<Civ4UnitInfos xmlns="x-schema:AnimalPlacing_CIV4UnitSchema.xml">
    <UnitInfos>
        <UnitInfo>
            <Class>UNITCLASS_GREAT_FARMER</Class>
            <Type>UNIT_GREAT_FARMER</Type>
            <Combat>UNITCOMBAT_PRODIGY</Combat>
            <SubCombatTypes>
                <SubCombatType>UNITCOMBAT_WORKER</SubCombatType>
                <SubCombatType>UNITCOMBAT_CIVILIAN</SubCombatType>
                <SubCombatType>UNITCOMBAT_SPECIES_HUMAN</SubCombatType>
                <SubCombatType>UNITCOMBAT_MOTILITY_FOOT</SubCombatType>
                <SubCombatType>UNITCOMBAT_QUALITY_POOR</SubCombatType>
                <SubCombatType>UNITCOMBAT_GROUP_PARTY</SubCombatType>
                <SubCombatType>UNITCOMBAT_SIZE_MEDIUM</SubCombatType>
                <SubCombatType>UNITCOMBAT_HEALS_AS_PEOPLE</SubCombatType>
            </SubCombatTypes>
            <Domain>DOMAIN_LAND</Domain>
            <MapCategoryTypes>
                <MapCategoryType>MAPCATEGORY_EARTH</MapCategoryType>
            </MapCategoryTypes>
            <DefaultUnitAI>UNITAI_WORKER</DefaultUnitAI>
            <Description>TXT_KEY_UNIT_GREAT_FARMER</Description>
            <Civilopedia>TXT_KEY_UNIT_GREAT_FARMER_PEDIA</Civilopedia>
            <Strategy>TXT_KEY_UNIT_GREAT_FARMER_STRATEGY</Strategy>
            <Advisor>ADVISOR_ECONOMY</Advisor>
            <bFood>1</bFood>
            <UnitAIs>
                <UnitAI>
                    <UnitAIType>UNITAI_WORKER</UnitAIType>
                    <bUnitAI>1</bUnitAI>
                </UnitAI>
            </UnitAIs>
            <Builds>
                <Build>
                    <BuildType>BUILD_BONUS_DONKEY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_HORSE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_ELEPHANT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BISON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CAMEL</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COW</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_DEER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FUR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_KANGAROO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_LLAMA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MAMMOTH</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_POULTRY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RABBIT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SEA_LIONS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SHEEP</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WALRUS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_GUINEA_PIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PARROTS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BARLEY</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CORN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FLAX</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                 <Build>
                    <BuildType>BUILD_BONUS_POMEGRANATE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_KAVA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_GUAVA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MELON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_POTATO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PUMPKIN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RICE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SQUASH</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WHEAT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_ALMONDS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_APPLE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_BANANA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCONUT</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_DATES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_FIG</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_LEMON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MANGO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_OLIVES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PAPAYA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PISTACHIO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_WINE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_HENNA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_INDIGO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RUBBER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TIMBER</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_CANNABIS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COCOA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COFFEE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_COTTON</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_INCENSE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_MUSHROOMS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_OPIUM</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PAPYRUS</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PEYOTE</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_PRICKLY_PEAR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_RESIN</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SILK</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SPICES</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_SUGAR</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TEA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_TOBACCO</BuildType>
                    <bBuild>1</bBuild>
                </Build>
                <Build>
                    <BuildType>BUILD_BONUS_VANILLA</BuildType>
                    <bBuild>1</bBuild>
                </Build>
            </Builds>
            <PrereqTech>TECH_AGRICULTURAL_TOOLS</PrereqTech>
            <iCost>500</iCost>
            <iAdvancedStartCost>-1</iAdvancedStartCost>
            <iMinAreaSize>-1</iMinAreaSize>
            <iMoves>2</iMoves>
            <iWorkRate>500</iWorkRate>
            <iAsset>1</iAsset>
            <UnitMeshGroups>
                <iGroupSize>1</iGroupSize>
                <fMaxSpeed>1.75</fMaxSpeed>
                <fPadTime>1</fPadTime>
                <iMeleeWaveSize>1</iMeleeWaveSize>
                <iRangedWaveSize>0</iRangedWaveSize>
                <UnitMeshGroup>
                    <iRequired>1</iRequired>
                    <EarlyArtDefineTag>ART_DEF_UNIT_GREAT_FARMER</EarlyArtDefineTag>
                </UnitMeshGroup>
            </UnitMeshGroups>
            <FormationType>FORMATION_TYPE_DEFAULT</FormationType>
        </UnitInfo>
    </UnitInfos>
</Civ4UnitInfos>

It appears you would need to make additonal set of build actions if you wanted them instantinous and without any gold cost.

I guess then I'll add more
<MissionType>MISSION_BUILD_DOMESTICATED_HERD</MissionType>
and add help text entries to Cow (Cattle), Bison, Camel, Elephant, Llama, Mammoth, Pig (Wild Boar)
That is for Tamed animals.
A better way of coding this became available.
 
And thus you would destroy all of Hydro's work and one third of what C2C is about.

I would have thought someone else would have realised this but the bug here is not that trading horses/bison wont let you build stuff but that you can trade those resources at all!

The mechanism we use inside the nation is to use subdued/tamed animals. That is the same mechanism you should be using when trading for the resource.

Bottom line it is not a bug it is the way it is meant to be.

I will fix the National Smelters/Breeders by
  1. changing the name to "Not in any city" instead of "National"
  2. making sure the help and strategy text about this are correct.
  3. applying one bug fix so that these buildings can't be built in cities that have the resource near it.
So you shouldn't be allowed to trade certain natural resources at all at least until some tech?
That is some natural resources should be invisible unless in vicinity until some tech?
So you MUST have animal in vicinity to spread it?

Resource not existing within your borders is absolutely same thing as resource being one tile too far from city.
That is technically it doesn't matter, if you traded it from AI, or if resource is in your borders but tile too far from nearest city.

So you have to buy Tamed Animal from AI or in case of resource being one tile too far from city raze that city and build it closer or just place city here just for vicinity and then raze it after getting animal.
That is AI has animal resource: Send hunters to get subdued animal or buy tamed animal from AI or conquer city if resource is in its vicinity.
Animal resource one tile too far from city: Send hunters, or build city here (can be razed after getting tamed animal).

Entire code that tamed/subdued animals use for placing resources is here:
Caveman2Cosmos\Assets\Python\EntryPoints\CvRandomEventInterface.py
 
Last edited:
@Toffer90

i started a Smart map, Huge, 2 continents with 12 civs and i am in Indus Era now and just realized that there is NO sulfur on the entire world?? can u pls check out the python on this, i also know more is wrong with the Smart map also ..
 

Attachments

  • SmartNormHuge.CivBeyondSwordSave
    7 MB · Views: 37
So you shouldn't be allowed to trade certain natural resources at all at least until some tech?
That is some natural resources should be invisible unless in vicinity until some tech?
So you MUST have animal in vicinity to spread it?

Resource not existing within your borders is absolutely same thing as resource being one tile too far from city.
That is technically it doesn't matter, if you traded it from AI, or if resource is in your borders but tile too far from nearest city.

So you have to buy Tamed Animal from AI or in case of resource being one tile too far from city raze that city and build it closer or just place city here just for vicinity and then raze it after getting animal.
That is AI has animal resource: Send hunters to get subdued animal or buy tamed animal from AI or conquer city if resource is in its vicinity.
Animal resource one tile too far from city: Send hunters, or build city here (can be razed after getting tamed animal).
1. already the case and no. The problem is that you should not be able to ever trade them between nations. However that bit is done in the exe and until this project happens there is nothing we can do about it.

2. Yes you must have an animal in the vicinity to spread it.

3. Yes. The "Not near any city" buildings were designed to work with that ie the resource in your nation but are not working fully due to problems getting the code to work.
 
The mechanism we use inside the nation is to use subdued/tamed animals. That is the same mechanism you should be using when trading for the resource.
So the AI will build and trade these units? And there are units to account for all the different types of herd animals?

I do know that National Animal Breeders and National Smelters were following entirely different logical paths. They are not comparable. That might have confused a lot of us but that much I remember from discussions when Hydro was involved in them. I understood the way the metal resources are setup but I've always felt we were one foot in two different canoes with the animal resources and no final method or rationale was ever really settled on.

I think it's a bit difficult to insist that external trade should use trading for units. In fact, the unit trading system is something I've never used in the trade screen and am not particularly fond of.

Perhaps it's just that I've never figured it out - what selects which units on the field and where they come from are the units being given over? Where do those units show up- in your capital? Were they teleported there?

Between my wife and I, we always use the gift command on a unit to give it over to another player. One problem I have with it... say I have 2 warrior units, one with 100 xp and one with 10. When I trade a warrior in the diplomacy screen, which one does it select to give over? I don't have any say in which one? *shudder*.

Not that this is an issue with tamed horses (or is it supposed to be a breeding pair, I cannot tell the difference in intent?) but when you're sending your horses from city A to cities B,C,D,E,F,G,H and so on and they are enroute and you then decide to trade horses to another nation, do you get to say 'trade only the ones that aren't enroute to a specified city already' or will it suddenly at random teleport potentially the one you sent to city C over to the capital of the nation you traded with? What if you are constantly sending them out and can't remember which ones were going where and now you add in the random removal of some enroute when you trade them through the diplo screen?

Maybe you do select the specific units when trading them and thus it would pay to name them in a memorable manner, but the AI can't be expected to understand how much they might be shooting themselves in the foot on previous plans for those units. They are already screwing themselves up tremendously with the trading off of Law Enforcement units because they only see a generic worth for them rather than what problems they may actually be in place to solve at the time of the trade.

And with animals, how can they possibly be made to understand the value of them as a strategic resource? They already value strategic resources properly as resources, evaluating whether the opponent has access or not and how that plays into how friendly they should need to be and how much to exact in return for it. This is way too much to ask of the AI to evaluate through a unit trade.

And the AI doesn't have any known protocols for trading units through the 'gift' command, nor how to do so in a quid-quo-pro manner. For all these reasons, expecting trade of animal units to be the means of providing animals internationally seems a bit rough and thus then tends to make you, as a player, yearn for a more simple solution through the resource trading in the diplo screen and being able to build up your personal ability to THEN spread units throughout your nation from there.
 
I have had no problems trading subdued/tamed units with other nations. Perhaps you are just not friendly enough with them. In which case I can see their point in not trading something which could be used against them in war.
 
Top Bottom