[modmodmod] SOI expanded

NEW VERSION ON SOURCEFORGE:
- An improved Greece, Libya, and Balkans made by DC123456789, with some minor changes by me. Includes 3 independent cities, Skadar, Skopie, and Plovdivy.
3 new corporations (Silk Road, Tamil Merchants, Pisan Merchants) - no artwork yet, I'm still working on it.
- Existing UHV's now are adjusted for the map (Byzantines need 15 provinces instead of 8 because they start out with Greece in addition to Anatolia; Seljuks need 9% of land instead of 10% because there is more land outside of their expansion area; Timurids need 11% of land instead of 12% for the same reason; Shia Islam spreads slightly more quickly to prevent the Safavid goal of Shia being the dominant religion from becoming more difficult than in vanilla SoI)
- Timur is now called Tamerlane
- Salah ad Din is now called Saladin
- Mughals are now called Moguls
- Slightly nerfed the Byzantines
- Derbent added according to SanJose's suggestion - along with it's own province - Dagestan (historical for Abbasids, Armenia, Georgia, Ottomans, Timurids, and Safavids)
- City Name Manager has more translations (Arabic/Persian Goa is Ghua, Crusader Samarkand is Maracanda, Portuguese Socotra is Socotorá:, Byzantine Dvin is Tibion, etc...)
- Siphonarios now has a strength of 5
- Salonica is the backup capital for the Byzantines
- I added a couple new songs to the /Assets/Sounds/Soundtrack folder. (Is this all I need to do to have them play in-game, or do I need to edit an XML file as well?)

Known bugs/questions
Because Arabic and Persian are 1 language in the Citynamemanager, I can't get Arab civs to call Derbent "Bab al-Abwab" and Persian civs to call it "Darband". Any idea how to do this?
I tried what merijn_v1 said, and the Siphonarios Greek Fire Promotion didn't work. I got a python error saying that iGreekFlamethrower wasn't defined, even though it is in Consts.py
I was playing as the Safavids, and it never asked my if I wanted to take control of Portugal.
 
You could probably just create a special Persian language just for Derbent and make it the primary language for the Persian civs. I'm pretty sure RFCCW uses the same city name manager as SoI, so you can just ask srpt how to do it, I'm sure it's pretty simple.

Also, have you adjusted the Ottoman UHV to include all the new provinces and the Egyptian civs' UHVs to include Libya? It would certainly make sense to.
 
im downloading it right now. gonna play for a while to give a feedback... as always, byzantines will be my first choice
 
So far i have enjoyed the new Greece.. but why no roads there? since Greece was the core of the empire, i guess roads were supposed to be there linking the most important cities like Thessaloniki
 
By awfully placed do you mean "not in their historical location" or "badly placed for strategy reasons."

They're not placed in their actual locations. Medina should by further south, closer to Mecca and farer away from Tabuk. Mecca should not be a coastal city.

I'll do a screenshot of what I'm talking about later today and post it.

map-saudi-arabia.png
 
Ok this is my suggestion.

I moved Medina south and Mecca inland. I also added Jedda to take advantedge of the coastal resources now unavailable to Mecca. To compensate I added an Oasis, a Plain that can be irrigated and a Cow to the new Mecca location.

I just did it in the old mod, since I haven't downloaded the new yet.
 

Attachments

I tried what merijn_v1 said, and the Siphonarios Greek Fire Promotion didn't work. I got a python error saying that iGreekFlamethrower wasn't defined, even though it is in Consts.py

Only defining it in consts.py isn't enough. You must tell the file where to load all definitions from consts.py. You can do that this way:
- Check if the consts.py is loaded. On top of CvRandomEventInterface.py, you see several "Import XXX". If you see "import Consts as con", the consts.py is loaded. (This is already done in CvRandomEventInterface.py)
- Now you can load everything defined in consts.py by con.XXX. To load the Flamethrower, you shouldn't use iGreekFlamethrower, but con.iGreekFlamethrower. (The con. tells the code where to look for the definition)

Alternatively, you can also use the method that loads the War Galley. A few lines above the code I told you to change, you see:
Code:
	iWarGalley = CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_WAR_GALLEY')
This way, iWarGalley isn't loaded from the consts.py. Instead, this line of code loads the info for the War Galley.



In short, replace iGreekFlamethrower with con.iGreekFlamethrower and it is fixed.
 
I have enjoyed the game, beated with religious victory as Byzantines at year of 1400 (since i could not achieve the cultural goal) and it was fun.
However, there is my list of suggestion to improve:

1- Roads at Greece, linking the cities to constantinople.
2- need much more enemies, specially in balkans, this include: normans, Slavs, Serbians and much more bulgarians, because this hordes are no threat to adrianople. I also highly recommend more barbarians at anatolia, more rebel peasants, because the game is at moment so easy to play as byzantines and easy to repel any barbarian invasion, this include the turks Spawn.
3- Rebalance the byzantines objective: the 2nd one is very easy, you just start with 15 provinces.... how about 25? we need a challenge to achieve. the 3rd one is also very easy, greatest wealth of europe, you just need to turn 100% your economy for about 5-6 turns and there we go. I recommend the highest wealth and tech for example ( it would be very hard, at least in emperor level, in this case the player would have to kill the arabians at all cost)
4- the greek fire is not done yet. at the moment, even the dromons aren´t receiving the promotion.

Well that´s all, i guess... but amazing job so far rebuilding the map
 
I have enjoyed the game, beated with religious victory as Byzantines at year of 1400 (since i could not achieve the cultural goal) and it was fun.
However, there is my list of suggestion to improve:

1- Roads at Greece, linking the cities to constantinople.
2- need much more enemies, specially in balkans, this include: normans, Slavs, Serbians and much more bulgarians, because this hordes are no threat to adrianople. I also highly recommend more barbarians at anatolia, more rebel peasants, because the game is at moment so easy to play as byzantines and easy to repel any barbarian invasion, this include the turks Spawn.
3- Rebalance the byzantines objective: the 2nd one is very easy, you just start with 15 provinces.... how about 25? we need a challenge to achieve. the 3rd one is also very easy, greatest wealth of europe, you just need to turn 100% your economy for about 5-6 turns and there we go. I recommend the highest wealth and tech for example ( it would be very hard, at least in emperor level, in this case the player would have to kill the arabians at all cost)
4- the greek fire is not done yet. at the moment, even the dromons aren´t receiving the promotion.

Well that´s all, i guess... but amazing job so far rebuilding the map

1. I'll try to add that soon
2. I am planning to add bulgaria and serbia, but only after i finish balancing this map with the already existing civs, and giving all civs unique powers/units/buildings/victories
3. The 3rd goal is the same as vanilla SOI, also: in vanilla SoI, byzantines start with 9 provinces and need 8.
4. I fixed that, but i dont have a download available yet, see merijn_v1's post above.

Credit for the map rebuilding goes do DC123456789, not me
 
do you think that it is possible to implement a new wave of barbarians invasors? despite adding serbians and bulgarians? and a last question: how much time do you believe that all this stuff will take?
 
UPDATE:

I added UHVs for the:
Buyids (working, tested)
Zengids (not working)
Portuguese (Last goal is working, 1st 2 are placeholders)

For the Portuguese - I want the 1st 2 goals to be "Control all coastal cities on the Arabian Sea, Red Sea, and Persian Gulf by 1590" and "Control 25 unique resources by 1620"

The placeholder goals are "Have 3000 gold by 1590" (Ghaznavids copypaste) and "have 15 luxuries by 1620"

I can post the file later today. Would somebody please fix the Zengids and Portuguese goals for me. I will try to repay the favor.

Also, does anyone have UHV suggestions for the Bahmanids?
 
UPDATE:

I added UHVs for the:
Buyids (working, tested)
Zengids (not working)
Portuguese (Last goal is working, 1st 2 are placeholders)

For the Portuguese - I want the 1st 2 goals to be "Control all coastal cities on the Arabian Sea, Red Sea, and Persian Gulf by 1590" and "Control 25 unique resources by 1620"
The placeholder goals are "Have 3000 gold by 1590" (Ghaznavids copypaste) and "have 15 luxuries by 1620"
I can post the file later today. Would somebody please fix the Zengids and Portuguese goals for me. I will try to repay the favor.
Also, does anyone have UHV suggestions for the Bahmanids?
I have a few ideas on the balance and UHVs but that it takes time to formulate all
 
I don't like UHVs goal as: contol all Syria etc, so my suggestions for Zengids:

UP "Nasir al-Amir Mu'Minen" ("Support the lord of the Faithful" ): Additional piety per massacre, receive piety for killing christian units;
UB Ribat: replaced inn, +1 route;
UU Iqta'dar: 6str HorseArcher with free Formation (25% vs mounted units) and free Flanking I (optional);
UHV1: Kill X catholic units, capture Y crusaders cities by 1170AD;
UHV2: Receive 1 wine, lost Imad ad-Din Zengi by 1150AD;
UHV3: Become a sunni Royal Saint by 1250AD;

Haha, found it.
UU: Iqta'dar - superior Horse Archer with 7 str + starts with Flanking II (idea taken from M2TW: Crusades)
UP: Power of Coalitions - easier to convince other factions to join a war
UHV1: Conquer or vassalize Egypt by 1250
UHV2: Do not allow any non-Muslim states in Egypt, Levant and Cicilia in 1291
UHV3: Never lose a city to barbarians until 1400.
What do you think?

UU - overpowered;
UP - useless;
UHV1 - Capture Cairo enough;
UHV2 - Do not allow any non-Muslim states in Egypt, Levant and Cicilia in 1291;
UHV3 - unhistorical so much.
 
try this for the 1st Portuguese goal:

Spoiler :
Code:
			elif iPlayer == iPortugal:
				if pPlayer.isAlive():
					if iGameTurn == getTurnForYear(1590):
						bControl = True
						for iRival in range(iNumTotalPlayers):
							if iRival != iPortugal:
								apCityList = PyPlayer(iRival).getCityList()
								for pCity in apCityList:
									if pCity.isCoastal(gc.getMIN_WATER_SIZE_FOR_OCEAN()):
										if gc.getMap().plot(pCity.getX(), pCity.getY()).getRegionID() in [con.rKarnataka, con.rGoa, con.rMaharashtra, con.rGujarat, con.rSindh, con.rBalochistan, con.rMakran, con.rHormuz, con.rFars, con.rKhuzestan, con.rIraq, con.rArabia, con.rBahrain, con.rOman, con.rMahra, con.rHadhramaut, con.rYemen, con.rHejaz, con.rTransjordan, con.rUpperEgypt, con.rAksum, con.rMerebMellash, con.rSuqutra]:
											bControl = False
											break
										elif gc.getMap().plot(pCity.getX(), pCity.getY()).getRegionID() in [con.rSinai, con.rLowerEgypt]:
											if pCity.getY() < 33:
												bControl = False
												break
						if bControl == True:
							sd.setGoal(iPortugal, 0, 1)
						else:
							sd.setGoal(iPortugal, 0, 0)
 
Thanks, srpt, it worked great.

For the victory checking displayed in the victory screen, I would like it to show (Number of coastal cities owned by Portugal on Arabian Sea, Red Sea, and Persian Gulf/Total number of coastal cities on Arabian Sea, Red Sea, and Persian Gulf)

Does anyone know how to do this?
 
Back
Top Bottom