Valkrionn
The Hamster King
No, not the Bezeri. Their cities are on the seafloor, not floating. Though you're closer than you might think. 

It would be cool if there was actually a civ for that gets a boon for each improvement, but has a chance that the land below becomes worse (grassland --> plains --> desert) as it does not care for the consequences of its exploitation of nature.
Real nomads are nomads because they have to. They abuse the land they settle on and move on when it no longer supports them. The moment they figure out sustainable agriculture they abandon their nomadic lifestyle.
I have another idea for how to do this in a highly efficient way. But I'm not entirely sure if its possible or good/efficient coding. There are two similar options, both work on the same principal.
Basic principle: Use the unit method but do away with the ridiculous number of promotions. Instead, add a few special xml tags to units: iCityCulture, iCityPopulation, iCityBuildings, etc. (These are the big ones, there could be others). Have a unit cast a spell in the city, the spell creates a new unit and stores some values to these attributes:
1. The cities name is stored as the units name.
2. The city culture is stored on the unit in iCityCulture
3. The city population is stored on the unit in iCityPopulation
4. The buildings are a bit trickier, but all of them can be stored in one variable if you are creative. This is where the two methods come in.
- Method A - Hard Coding: assign each possible building in a city a unique prime number within the python of the spell. Then iCityBuilding becomes the product of all the prime numbers of all the buildings in the city. This works because each number has a unique prime factorization, all the information for each building in the city is stored in the one number, which is later decoded by simply checking if number is a factor (I'm assuming you can do modular arithmetic in python)
- Method B - Finesse: create a new tag for buildings, iPrimeIndex. When the game loads, assign each building in the game a unique prime number. When coding the spell simply have the buildings PrimeIndex number multiplied into iCityBuilding
Method B involves at least one additional tag on buildings as well as coding the function to run on either map initialization or on game loading (when the xml is read), but it has the benefit that it auto updates if any building is added or removed from the available build list of this new civ (or any other civ to use the feature). If the tags are done well the coding for the spells, both to move a city and to settle one never need updating, there is no near infinite list of promotions to check. The most complicated part is the math used to decode iCityBuildings.
Let me give an example of how this would work (using method B).
A scout walks into the city of "Calthur" with a population of 6, a culture of 185 and the following buildings: a monument, a lighthouse, an elder council, a market and a theatre.
1.The scout can cast "Mobilize City"
In python a City unit is created and given the name "Calthur". The unit then has the population of 6 stored in its iCityPopulation tag and the culture of 185 stored in its iCityCulture tag. The python then checks for the buildings in the city, (for simplicities sake) the monument has the iPrimeIndex value of "prime1", the lighthouse has the value of "prime2", the council - "prime3", the market - "prime4", and the theatre "prime5". The value of p1*p2*p3*p4*p5 is stored in the City units iCityBuilding tag. (Again this number is completely unique to the set of buildings in the initial city. (Assuming all other data is lost, which it doesn't need to be if other tags are added - for example iCityGPPCount) Finally the city is destroyed with all of its data stored in the city.
2. The unit named Calthur finds a suitable place to settle and uses the "Settle City" ability.
In python the unit is checked, a city is built on the units current tile, given the name, population and culture identified by the corresponding tags. Then the iCityBuilding tag is decoded, by looping through the possible prime numbers (I'm sure there is even a way to optimize this mathematically). The check uses modular arithmetic or in non-math terms a remainder check simply check: " is prime1 mod iCityBuilding == 0?" If it is create the building with that iPrimeIndex in the city.
This same method can be used to create split cities using a spell that creates a city unit with a new city name (or possibly with a user input for a new city name) and with half the culture and population and an iCityBuilding index of 1 (no buildings). The same settle spell can be used for these split city units to settle.
- Method A - Hard Coding: assign each possible building in a city a unique prime number within the python of the spell. Then iCityBuilding becomes the product of all the prime numbers of all the buildings in the city. This works because each number has a unique prime factorization, all the information for each building in the city is stored in the one number, which is later decoded by simply checking if number is a factor (I'm assuming you can do modular arithmetic in python)
- Method B - Finesse: create a new tag for buildings, iPrimeIndex. When the game loads, assign each building in the game a unique prime number. When coding the spell simply have the buildings PrimeIndex number multiplied into iCityBuilding
Actually, rather than an INT tag for buildings, I'd make a boolean array, the size of BuildingInfos. Then, you loop through the city's buildings, find the corresponding entry in the array, and flip it to True. When constructing the city, check for values that return true, search for the corresponding building, construct it in the city. Set the value back to false.
Also, I would not use the unit name (too easy to change); Instead, I'd make entirely new tags, but not ones accessible via XML, python only.![]()
I wonder if the culture promos for fort comanders would work on moving units. If so, a nomatic civ could have some sort of culture. Of course, as their lifestyle is so different from other civs, it has no effect on them. Why would this be useful? Units costs. They would either need to be imune to unit supply costs, or would need culture. I think it would be kind of fitting if being in a civs land was more costly than living in the wilds. This would encourage them to try to stay in the unsettled lands.
A working idea for a nomadic civ, either an entirely new one, or possibly a transformation of the Chislev. It seems they could be somewhat nomadic and might provide some much needed flavor and uniqueness.
Spoiler :
Civ Concept
The civ is a very nature centric and spiritual civ, but they have been cursed by one of the evil gods (not sure which would be the most fitting, but there is opportunity for an interesting back story here). They do not believe in industry or development of the land but are deep thinkers and spend a lot of time in reflection. They have an affinity for nature, creation and spirit mana. While the civ reveres nature highly, to the point of recognizing the spirituality of all living things, they are cursed to carry a plague with them where ever they go. As such while they have a unique symbiosis with living terrain and have an instinctual ability to get the most out of the land naturally, the longer they live in an area the more life dies around them as part of the curse. This has forced them to live an existence life style forced to continually harm the world around them, which is a torture to them. To combat this they have developed into a highly nomadic civ, capable of picking up and moving to a new place as the terrain around them dies off. As part of the curse every time they move the terrain is able to recover behind them.
Features and Mechanics
- Climate System - to simulate the curse, they have a climate system similar to the Malakim forcing deserts to form around them, though they have no affinity for desert terrain (in fact they should have less than a typical civ)
- Border Irrelevance - they have the ability to settle their mobile cities anywhere including inside other's culture borders (they do need to obey the two tile rule), doing such will naturally cause political malus between them and their neighbors.
- City Movement
- No Building Settlers - there settler units cannot be built. They are created by spells in the city. The unit could be called the "Tribe" or something similar.
- Tribe Spells - at any time any unit of the civ can cast a spell inside the city called "Mobilize Tribe" (again or something similar) taking 10 turns to cast in which the city is in Revolt mode. After the 10 turns the city is destroyed and replaced with the Tribe unit, which carries all of the cities info. The tribe unit can cast the spell settle tribe, which again takes 3 turns, and results in the original city being placed on the new tile. At a city size of 10 (can be higher if the change is important) any unit in the city can cast a spell called "Split the Tribe." This spell has the same effect as Mobilize tribe except the unit created only takes half the population, culture, none of the buildings. and the original city is not destroyed.
- Other Restrictions - at any time one city MUST exist. This means the first spell cast will be "Split the Tribe" (prevents the no-city problem)
- Improvements/Workers - the civ can only build one improvement, the "Outpost." Works like a fort in BTS to allow any bonus to be obtained but not gain the traditional improved output from the tile. Workers are cheap units capable of building these as well as routes.
- More to come
I like this way of thinking...To me it begs the question why bother with cities? have it purely based on units & forts, using arcane units to produce science. Literally sculpting an army out of the land for an army(So definitely not humans, or well the main military aren't humans). Use of slaves aswell (maybe give them a couple HN slaver type units?) Then use the slaves to sacrifice straight into units, or science(appease a God with their souls for knowledge) or set them to some task to gain GPP.
My simple little brainstorm, I just dislike the idea of nomads having cities![]()