Multiplayer Scenarios

cyther

Lord of the Dance
Joined
Jun 9, 2008
Messages
1,033
Location
Fane of Lessers
The purpose of this Modmod is to make the FfH official scenarios avaliable for multiplayer use.

Compatable with FfH patch v

The Scenarios the are currently avaliable for use are:

Wages of Sin: Malakim
Wages of Sin:Calabim
The Splintered Court



To get the scenarios to work you need to simply place them into the Civ4saves/Worldbuilder file as well as place the modified scenario functions into the Fall from Heaven python file (remember to keep an unmodified copy).

Link to Download http://forums.civfanatics.com/downloads.php?do=file&id=11831
 
You rock! I'm totally using this to help teach my friend the game. Converting some of the others might be difficult, and some were simply not made for multiplayer. If you were to make The Momus multiplayer, i suggest msking the infernals (as well as perepntach :P) unplayable.
 
I am thinking you are asking if someone can try it out in MP for you? Modify your shortcut from:

"C:\Program Files\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Civ4BeyondSword.exe" mod=\Fall from Heaven 2

To:

"C:\Program Files\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Civ4BeyondSword.exe" multiple mod=\Fall from Heaven 2

This will allow you to play an MP game against yourself (just launch the shortcut twice, and set up a LAN game, the second player will find it showing in the Lobby)
 
I just played a very nice Hot Seat Wages of Sin scenario (Calabim version, not that it really matters) as Basium and Hyborem (after making both civs stronger, but that isn't really relevant). After changing all the PlayableCiv=0s to PlayableCiv=1s in the scenario file I still had to make a few changes in ScenarioFunctions.py, lest it always say you have -1 civs left to defeat and making you win as soon as you kill anyone if you are playing a civ it wasn't designed to let you play.

Code:
		if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_WB_WAGES_OF_SIN):
			iCount = 0
			if (pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_ELOHIM') or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MALAKIM') [B]or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS') or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR')[/B]):
				for iPlayer in range(gc.getMAX_PLAYERS()):
					pPlayer = gc.getPlayer(iPlayer)
					if pPlayer.isAlive():
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SHEAIM'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_CALABIM'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_INFERNAL'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR'):
							iCount += 1
			if (pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SHEAIM') or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_CALABIM') [B]or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_INFERNAL') or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR')[/B]):
				for iPlayer in range(gc.getMAX_PLAYERS()):
					pPlayer = gc.getPlayer(iPlayer)
					if pPlayer.isAlive():
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_ELOHIM'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MALAKIM'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'):
							iCount += 1
						if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR'):
							iCount += 1
			szBuffer = szBuffer + CyTranslator().getColorText("TXT_KEY_WB_WAGES_OF_SIN_GOAL", ((iCount - 1, )), gc.getInfoTypeForString("COLOR_RED"))

		szBuffer = szBuffer + "</font>"
		return szBuffer









------------------
			if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_WB_WAGES_OF_SIN):
				iCalabim = gc.getInfoTypeForString('CIVILIZATION_CALABIM')
				iElohim = gc.getInfoTypeForString('CIVILIZATION_ELOHIM')
				iMalakim = gc.getInfoTypeForString('CIVILIZATION_MALAKIM')
				iSheaim = gc.getInfoTypeForString('CIVILIZATION_SHEAIM')
				[B]
				iMercurians = gc.getInfoTypeForString('CIVILIZATION_MERCURIANS')
				iLjosalfar = gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR')
				iSvartalfar = gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR')
				iInfernal = gc.getInfoTypeForString('CIVILIZATION_INFERNAL')[/B]
				for iLoopPlayer in range(gc.getMAX_PLAYERS()):
					pLoopPlayer = gc.getPlayer(iLoopPlayer)
					if pLoopPlayer.isAlive():
						if pLoopPlayer.isHuman():
							pHumanPlayer = pLoopPlayer
				iCount = 0
				if (pHumanPlayer.getCivilizationType() == iElohim or pHumanPlayer.getCivilizationType() == iMalakim [B]or pHumanPlayer.getCivilizationType() == iMercurians or pHumanPlayer.getCivilizationType() == iLjosalfar[/B]):
					if gc.getPlayer(1).isAlive(): #Flauros
						iCount += 1
					if gc.getPlayer(3).isAlive(): #Faeryl
						iCount += 1
					if gc.getPlayer(5).isAlive(): #Os-Gabella
						iCount += 1
					if gc.getPlayer(6).isAlive(): #Hyborem
						iCount += 1
				if (pHumanPlayer.getCivilizationType() == iSheaim or pHumanPlayer.getCivilizationType() == iCalabim [B]or pHumanPlayer.getCivilizationType() == iInfernal or pHumanPlayer.getCivilizationType() == iSvartalfar[/B]):
					if gc.getPlayer(0).isAlive(): #Varn
						iCount += 1
					if gc.getPlayer(2).isAlive(): #Arendel
						iCount += 1
					if gc.getPlayer(4).isAlive(): #Ethne
						iCount += 1
					if gc.getPlayer(7).isAlive(): #Basium
						iCount += 1
				if iCount < 2:
					gc.getGame().setWinner(pHumanPlayer.getTeam(), 2)
				szText = -1
				bGood = True
				if pPlayer.getCivilizationType() == iCalabim:
					bGood = False
				if pPlayer.getCivilizationType() == iInfernal:
					bGood = False
				if pPlayer.getCivilizationType() == iSheaim:
					bGood = False
				if pPlayer.getCivilizationType() == iSvartalfar:
					bGood = False

Of course, I didn't bother making new texts entries yet, so when you aren't playing the normal civs it is less flavorful.
 
Hmm...I may have made a mistake somewhere in there. When it again I killed off the third Cvercouncil civ as Hyborem and had the counter on the number of civs left go to 0 but I didn't win. Last time I had killed of Basium (whom I was also playing) third and won just fine. This time I won as Basium by killing all civs but the Infernals, even though it is the infernals who killed off the Svartalfar (ring of flames->war).

This scenario is only supposed to make you kill 3 of 4 enemies, right?


Oh, I just realized the problem may have had to d with the fact that the Ljosalfar were kiled off by Basium's Convert City spell. I had made an mistake when I tried to let Basium convert any city on his team, so I abused it and took a long of cities from other rivals. That wouldn't be relevant to the changes listed here though.
 
Back
Top Bottom