RFC Classical World

played the Celts for a very short time and made a bunch of changes:

they spawn in 280bc in Bibracte, 1 NW of Lugdunum. both tiles are hills now, both have access to a cow in the Rhone valley, but if you don't settle Bibracte on the first turn Lutetia won't flip.

their core is now Northeast Gaul and Northwest Gaul and they start with just 50 gold. Archery is more expensive and the Dun (Walls) is cheaper. I think Monarchy will be an essential tech for them for the Royal Mausoleum for the culture goal and Royal Mint for their Iberian city.

Burdigala is now on the coast, 1 tile west, there is now gold and a sheep in Iberia.

their territory UHV only requires 1 city in the province, not control. its always been that way and I know the text is misleading. I'll find a better way to say it.

edit: and just gave their capital an iron

and since rrosen got Cartography with Egypt in 26AD I changed the goal to 25AD.
 
Oops, I see I wrote 'Calendar' in my post. I meant Cartography of course, in 57BC.:blush: I think 0AD is fine as well, but 50BC could stay as is perhaps. The difficulty of the first goal matches the difficulty of the third goal if it's 50BC, so I think it is fair to keep it that way.
 
The time it takes to get cartography can be substantially reduced if we assume at least one great scientist. But since the player starts with the Pyramids, has to built Great Lighthouse and obelisks gives great engineer, that will be very luck dependent. So the goal has to be balanced either assuming great scientist or not.
 
In the end I got 4 or 5 great people. Golden Ages also double their generation rate, useless great people can be converted to more golden ages. With 3 scientists the luck factor decreases substantially. 25AD means 50 more turns, which is generous, at least. 1500 science points from a GS equals 10 turns of research, so 20 more turns (25 BC or 0 AD) is perfectly doable.
 
I built the Great Lighthouse in Cyrene without the help of an Engineer, the Great Library in Alexandria with the help of an Engineer. The only other building that produces Great People points there is the Obelisk. I think it is safe to assume that a few Great Scientists can be created, with a chance of more than 90% each.
 
Yup, great scientists is the way to go. I did another run today and went for early grteat scientists. I got engineer-engineer-scientist-scientist (as well as I think two additional scientists after the discovery of mathematics). I won in 36 BC.
Spoiler :
EgyptVictory.png


This was a much more militaristic game. Around 220 BC an alliance of Seleucids and Carthage attacked me. Two large stacks of about 7 Seleucid units attacked Jerusalem and I barely survived. This time, the Seleucid overexpanded and collapsed around 190 BC. Judah drained my army in Jerusalem, but if you keep a large enough stack they are willing to make peace after 5-10 turns.

Then, the Romans turned up! Again, Jerusalem barley held (and a spawn close to Alexandria would have been a massacre). With my military stretched to the limits, the barbarians managed to temporarily capture Diospolis.

So to conclude, I'm inclined to agree with Wessel, 25 BC or 0 AD should be very doable. Or perhaps even 30 BC, when the last Cleopatra died.
 
I know you've stopped caring about the invisible city bug for the moment (and I really can understand why), but I was still thinking about it so I tried to reconstruct how I solved it. For DoC, I too had imported edead's birthConditional method and it produced invisible cities or city ruins where there are cities. I'm not sure how I fixed it, but this is my working method that should work for you, too:
Code:
        #Leoreth - adapted from SoI's birthConditional method by embryodead
        def birthInCapital(self, iCiv, tCapital, tTopLeft, tBottomRight):

                startingPlot = (tCapital[0], tCapital[1])
                iOwner = gc.getMap().plot(tCapital[0], tCapital[1]).getOwner()

                if self.getFlipsDelay(iCiv) == 0:

                        iFlipsDelay = self.getFlipsDelay(iCiv)+2

                        if iFlipsDelay > 0:

                                # flip capital instead of spawning starting units
                                utils.flipCity(tCapital, False, True, iCiv, ())
                                utils.cultureManager(tCapital, 100, iCiv, iOwner, True, False, False)
                                self.convertSurroundingPlotCulture(iCiv, (tCapital[0]-1,tCapital[1]-1), (tCapital[0]+1,tCapital[1]+1))
                                
                                #cover plots revealed
                                #self.coverPlots(con.iFlipX, con.iFlipY, iCiv)
                                gc.getMap().plot(0, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(0, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(0, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 2).setRevealed(iCiv, False, True, -1)


                                #print ("starting units in", tCapital[0], tCapital[1])
                                print ("birthConditional: starting units in", tCapital[0], tCapital[1])
                                utils.cultureManager(tCapital, 100, iCiv, iOwner, True, False, False)
                                self.createStartingUnits(iCiv, (tCapital[0], tCapital[1]))

                                utils.setPlagueCountdown(iCiv, -con.iImmunity)
                                utils.clearPlague(iCiv)

                                print ("flipping remaining units")
                                utils.flipUnitsInArea(tTopLeft, tBottomRight, iCiv, iBarbarian, True, True) #remaining barbs in the region now belong to the new civ 
                                utils.flipUnitsInArea(tTopLeft, tBottomRight, iCiv, iIndependent, True, False) #remaining barbs in the region now belong to the new civ 
                                utils.flipUnitsInArea(tTopLeft, tBottomRight, iCiv, iIndependent2, True, False) #remaining barbs in the region now belong to the new civ 
                                
                                self.setFlipsDelay(iCiv, iFlipsDelay) #save

                                # kill the catapult and cover the plots
                                plotZero = gc.getMap().plot(0, 0)
                                if (plotZero.getNumUnits()):
                                        catapult = plotZero.getUnit(0)
                                        catapult.kill(False, iCiv)
                                gc.getMap().plot(0, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(0, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(2, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(1, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(0, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 0).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 1).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(122, 2).setRevealed(iCiv, False, True, -1)
                                gc.getMap().plot(123, 2).setRevealed(iCiv, False, True, -1)
                                print ("Plots covered")

                else:           # starting units have already been placed, now to the second part

                        iNumAICitiesConverted, iNumHumanCitiesToConvert = self.convertSurroundingCities(iCiv, plotList)
                        self.convertSurroundingPlotCulture(iCiv, tTopLeft, tBottomRight)
                                
                        for i in range(iIndependent, iBarbarian+1):
                                utils.flipUnitsInArea(tTopLeft, tBottomRight, iCiv, i, False, True) #remaining barbs/indeps in the region now belong to the new civ   
                        #print ("utils.flipUnitsInArea()")
                        
                        # kill the catapult and cover the plots
                        plotZero = gc.getMap().plot(0, 0)
                        if (plotZero.getNumUnits()):
                                catapult = plotZero.getUnit(0)
                                catapult.kill(False, iCiv)
                        gc.getMap().plot(0, 0).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(0, 1).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(1, 1).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(1, 0).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(123, 0).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(123, 1).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(2, 0).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(2, 1).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(2, 2).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(1, 2).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(0, 2).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(122, 0).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(122, 1).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(122, 2).setRevealed(iCiv, False, True, -1)
                        gc.getMap().plot(123, 2).setRevealed(iCiv, False, True, -1)
                        print ("Plots covered")
                                
                        # create workers
                        if gc.getPlayer(iCiv).getNumCities() > 0:
                                capital = gc.getPlayer(iCiv).getCapitalCity()
                                self.createStartingWorkers(iCiv, (capital.getX(), capital.getY()))
                                
                        # convert human cities
                        if iNumHumanCitiesToConvert > 0:
				print "Flip Popup: in capital"
                                self.flipPopup(iCiv, plotList)
Note that I replaced many of SoI's submethods with direct code. My best guess is that the solution was where I changed the tile culture: first flip the city, then convert the plot, then do other stuff, then before you create the starting units, convert the plot again. One might even be redundant but since it's working code I'm not touching it ;)

Hope this helps.
 
Here are some ideas about UP:
(@ srpt: How to code it is in the spoiler)

Arabia:
The Power of Faith:
State Religion spreads to every newly acquired (founded, conquered, flipped) city, and a free Temple is built in it.
Spoiler :
The code is in RFCEurope


Dacia:
The Power of Fortification:
All land units recieve less collateral damage (maybe limited to only non-mounted)
Spoiler :
All land units recieve an unique promotion, which reduces the collateral damage by about 25%. This part only requires XML which I can do. The C++ part is done in almost all RFC modmods. (Vanilla RFC Japanese UP, RFCE Cordoban, Swedish UP)


Franks:
The Power of the Emperor:
Less upkeep for civics, or Reduced cost for civics with High Upkeep
Spoiler :
The 1st option can be done with an modifier in C++ I think. The 2nd one can be copied from RFCA.


Gokturks:
The Power of Otuken:
All cities start with the 1st cultural expansion
Spoiler :
Can be copied from RFCA. I could do this myself, if we hadn't different game speeds.


Au Lac (Vietnam):
The Power of Guerilla Warfare:
All land units are immune to 1st strikes and have 1 first strike (maybe limited to only non-mounted)
Spoiler :
Same way as the Dacian UP.


Funan:
The Power of Canal Systems:
All river tiles have +1 :commerce
Spoiler :
In RFCE++, the Egyptian have this UP. But with :food: instead of :commerce:. But that's easy to fix.


Japan:
The Power of Kenjutsu:
All land units can get more promotions

I'll explain this a bit. Normally, Melee units can get the Woodland promotions, but not the Guerilla promotions. For Archery units it's the other way around. Also, the Melee units can't get the Drill promotions. My suggestion: some promotions aren't resticted to a certain unit category.
Spoiler :
I have no idea how to code this.


Judah:
The Power of the Old Temple: (Better name is welcome ;))
Maximum income from shrines is doubled, or 1-2 :commerce: from state religion buildings.
Spoiler :
No idea how to code it.


Sassanids:
The Power of the Shah:
No resistance in conquered cities.
Spoiler :
Vanilla RFC Babylon UP


Sri Vijayan:
The Power of Tributary States:
All coastal cities have an additional trade route
Spoiler :
Copy from RFCA.
 
I wanted to give the Great Pyramids the ability of free monuments in all cities. Then, it has a real benefit. Now it only provides a GE points, 2 culture and 1 :). The only concern I have is how it will effect the Egyptians. I think there UHV will be too easy then, because of the free UB.

I think that some starting cities, like Alexandria should have some preplaced buildings. (A granary and maybe some others, like the fairground) I can't imagine that those cities didn't have that buildings in 320 BC. It would also be nice (and IIRC, more historical) if some are have a bigger population.

EDIT: The 220AD scenario is bugged.
EDIT2: My bad. I made a mistake when I updated the CNM. I think it's better when you update the CNM. I'll revert it.
 
The Pandyans have three goals that are pretty straightforward, medium difficulty. Steel Working is researchable very soon and nobody else is going for it for a long time so it's an easy one. The resources goal requires contact with China but is not too hard otherwise, especially because it's a 'by' goal, so you can just trade resources, wait 10 turns and cancel the deal. The temples goal means you need to conquer some land but that is kinda mandatory. At first, take the city in the west when some good mercenaries can be hired, use this city for more military and take out the purple guys in the north. Their capital is simply awesome. Han China was doing very well. Rome in the end was too (I played until 200 AD), albeit with 6 strength Legionaries. Nubia controlled Egypt up till Alexandria for some time, that was pretty cool. I'm updating my game to the latest revision now.
 
The Japanese really need a different 2nd UHV. Right now it is: Control Yamato and Emishi in 300 AD. That doable with only the starting 2 settlers. Most of the players will settle Edo (=Tokyo) as the 2nd city. That means, if you build your capital on the spawning spot, you already got the UHV. The only thing that's left is waiting 50 years.

So how about an X amount of espionage in Y AD?

And the 3rd UHV is also a bit lame. (Control 5 provinces in 500 AD) You only need to conquer Korea (2 provinces) and settle the 3 pronvinces of Japan. (Or settling one of the tiny islands and Taiwan, if you want to avoid war with Korea) I suggest this: Control 5 provinces outside of Japan. Even if you settle the Islands and Taiwan, you still need 3 other provinces. This can indeed be done by settling the Phillipines, Borneo and another Island in that region, but then you really have to settle some tiles away from mainland Japan. Or you have to conquer some provinces.
 
Some things about regions/provinces:

Spotted another island that is counted as Pacific Ocean. It's northeast of Japan.
The island in the far east, north of Papua is counted as Pacific Ocean.
Some islands in the Indian Ocean (near Birma) are counted as Indian Ocean.
Some islands in the Atlantic Ocean (west of Morocco) are counted as Atlantic Ocean.
The island south of Sumatra is counted as Indian Ocean.
The islands west of Africa (near modern day Cameroon) are counted as Atlantic Ocean.

Tile (86,15) is counted as South Chinese Sea, instead of Funan.

I think that Sulawesi and Papua Island should both be separate provinces, instead of being part of the Philipines.

A tile of Sulawesi (the one with salt) is counted as "Islands", instead of Philipines. (Or even better, Sulawesi)

I also think that we should have separate groups of "Islands". It's quite weird that the islands near Japan are the same province as the islands near Greece. I have the following in mind:
1. Atlantic Island (Madeira and Canaries, islands west of Africa)
2. The Islands near Sweden can be included to Scania
3. Mediteranean Islands (Greek Islands, Corse, Sardinia, Baleares)
4. Indian Ocean Islands (Islands near Birma, Island south of the Arabian Peninsula)
5. Indonesian Islands (all small islands upto the Philipines)
6. Pacific Islands (all small islands around Japan, the island far east and north of Papua)
 
thanks for UP ideas. I like them.

I know the Japanese goals are no good, just haven't really thought about them yet. I think I was going to at least give them a couple of tough indy cities to conquer, but new goals are fine. the idea with the tech goal was that they wouldn't have time to research it so they would have to steal techs from China. I guess we should just be ok with the Japanese goals being a bit ahistoric, since they didn't do much in this timeframe.

I will make the 3rd Egyptian goal deadline 30BC. the only way I can think of to make the population and culture goal harder is to make it check more than once: first around 200BC when the Ganges valley is usually doing well and again later when other cities have grown. (cool that Massilia got to 14).

about the preplaced wonders: I didn't want to make them too powerful since the Egyptians and Seleucids get them for free, that's why they have weak effects. giving them real bonuses would be like giving out another UP. I made the Temple of Artemis and the Parthenon a bit stronger (2 great people points instead of 1) since you at least have to go conquer the city to get them.

I agree its a bit weird for some cities to have no infrastructure at the start but Alexandria had just been founded in 320BC (i think) and if we give it population or a granary the UHV will be too easy.

@Leoreth: thanks for the help. I got so angry about that bug I thought was going to have to stop modding for a while and when I decided to skip it I couldn't believe how happy I was... anyway I will have a look at it sometime soon.

and sorry about some of the weird mercenaries. last game as the Celts I was offered a "Slav Hashid Camel Rider". I'll try to eliminate then today.

and about the city name map, did you mean you made changes to the spreadsheet that need to be transfered to python?
 
I'm moving the Seleucid capital to Antioch from the start. Losing their capital to the Parthians could be what was killing them.
 
Finally found the province map. Now I can do the changes in post 452 myself. I'll let you hear if I have some problems.

EDIT: Never mind. It still doesn't work. :(
 
"GFC Error: failed to initialize the primary control theme"
No matter where I place it,this error keeps showing up.
No matter what I try to fix it,this error keeps showing up.
Please help!
 
Nice changes to Celt and Gaul with Burdigala and Bibracte. Same for seleucid capital. I'll launch some games tomorrow and post feedback. Maybe update CNM (is it a share doc, merijn_v1 ?)
 
@ civciv5

We will help you, but only if you promise you NEVER post so ridiculously many "please help!". It's really, really annoying. And please edit the post and remove all please help, except one. (otherwise I won't help either.)

Spoiler :
Aandacht tekort?


@ cetrix
The file in post 434 is indeed a sharedoc. You can freely update it, if you want. We literally copy-paste from that file, so all changes will automatically be in the mod, everytime we update the CNM.
 
re provinces: they are in the DLL so compiling is necessary after changing. I can make those changes later tonight.
 
Back
Top Bottom