[WARLORDS MOD + SCENARIO] Legends of Ancient Arabia

I looked around but there doesn't seem to be a "how to convert a mod from Warlords to Beyond the Sword" HOWTO out there. I am not interested in that project at this time--because of how LoAA copied over all of Warlord's XML templates, modifying only some fields, this would be a non-trivial project. :( I also don't want to deal with how espionage and random events would affect LoAA's scenario [1]. I do feel, however, it is a worthy project if it would reduce the endgame turn done slowdown LoAA suffers from.

Anyway, on to the good news: I have updated LoAA yet again. Today's update has the following fixes:

  • The correct civilizations are available for random maps
  • Workers now can make windmills
  • Random maps now generate LoAA-specific resources
  • I have added three map scripts to LoAA: Two PerfectWorld variants, and "SandBar" which is an extensively hacked PerfectWorld for making a random map in roughly the same general style as LoAA's official scenario map.

With three map scripts included with LoAA, the patch is getting a little too big to include as an attachment, so let me give people a couple of URLs that point to the patch:

http://samiam.org/Civ4/Arabia.html

http://civ4.vk.tj

- Sam

[1] This could be made simpler by just having LoAA's desert tribes and use random maps. There are some tricky balancing issues between the Romans/Persians/Assyrians and the Arab tribes in the scenario map; I don't even try to make a random map with anyone besides the desert tribes.
 
I have updated the SandBar map script to no longer try (and fail) to make "quick and dirty" maps; in addition, there is now an option to make maps without Tribal Goody huts, since Legends of Ancient Arabia's (LoAA) scenario map doesn't have huts.

Speaking of scenario maps, I have added an arid version of the map in my avatar as a map for LoAA.

Download and installation instructions are here:

http://samiam.org/Civ4/Arabia.html

- Sam

Update I have made two bug fix patches since this update:

patch4: One-line bugfix to map scripts so they work with multiplayer

patch5: Update to scenario map so we don't get snowy palm trees next to the desert.
 
I have discovered another bug in the mod:

With Legends of Ancient Arabia (LoAA), it's possible to, starting in the early midgame, build a great merchant every 2-3 turns. While I don't regularly play and win at Deity level, this appears to be a game breaker.

So, I've fixed the code to limit the total number of great merchants a player can make in the entire game to three. While the 1800 gold boost (at marathon speed; 600 at quick speed) is important at this point in the game since Gordon's mod nerfs income (By, among other things, removing missionaries, making cottages a midgame instead of opening tech, and making currency a late-midgame tech), it unbalances the game to be able to continuously build great merchants, since, among other things, the AI doesn't know this trick.

I chose the number three because this is the number Gordon chose when placing a limit on this very powerful unit; I assume Gordon meant for only three to be built in the entire game, instead of merely limiting it to three merchants at a time.

While the player can request another great merchant to be built after the third one, subsequent units are built then immediately removed from play. While this is a little clunky, it's done this way to minimize the performance hit.

For modders, here is how I changed onUnitBuilt to have this limit:

Spoiler :

This is in CvEventManager.py:

Code:
	def onUnitBuilt(self, argsList):
		'Unit Completed'
		city = argsList[0]
		unit = argsList[1]
		player = PyPlayer(city.getOwner())
		# This is a nerf for the too powerful Arabian Merchant unit
		# In the 2007 release of Legends of Ancient Arabia, you're
		# allowed to build as many of these as you want.  Each of
		# these units gives you 600 gold as soon as it lands in 
		# another tribe's city, and you can send as many merchants
		# to the same city as you want.  The limitation is three 
		# units, but only three units alive at one time.  Once a 
		# given merchant gives us 600 gold, we can make another one
		# and be earning 600 gold every couple of turns.
		# This is a game-breaking mechanic, so I'm nerfing it by
		# only allowing three merchants to ever be built for 
		# each player.
		if unit.getName() == "Arabian Merchant":
			# You're allowed to store a single string per
			# player.  Normally, one uses pickle 
			# to convert this in to hierarchial data, but since 
			# this is a hack to make up for Civ4's lack of 
			# CyPlayer.getUnitClassCreatedCount() (it only
			# has that on a global game level, not for each
			# player), I'm keeing this simple
			amb = gc.getPlayer(city.getOwner()).getScriptData()
			try:
				amb = int(amb)
			except:
				amb = 0
			#print "amb is " + str(amb) ##DEBUG
			amb += 1
			if(amb > 3):
				# Hack; too slow for cannotTrain()
				# We just have the game report a new 
				# merchant has been built but immediately
				# remove the merchant from play
				unit.kill(False, unit.getOwner())
			gc.getPlayer(city.getOwner()).setScriptData(str(amb))

People may notice that I'm using getScriptData() and setScriptData() without trying to pickle the data (oh, if Civ4's python had json.loads and json.dumps); this is OK since this is the only place we're setting the per-user data. My goal is performance: That's why I don't have any hooks in the far more frequently called cannotTrain(); getScriptData/setScriptData are just too slow to be called there.

Life would have been much easier if Civ4 would have had CyPlayer.getUnitClassCreatedCount()


Anyway, I hope other people feel nerfing great merchants on demand is reasonable; I do not think Gordon's intention was ever to have the game breaking strategy of building a great merchant every two turns or so and sending it to the same foreign city over and over again to eliminate all economic problems.

Anyway, the download is at http://samiam.org/Civ4/Arabia.html Enjoy!

Update Not worth a thread bump, but I have updated the code to add messages to the event log when the final Arabian merchant is built, and whenever the player tries to build one after their game-long quota has been exceeded. Code looks like this:

Spoiler :

Code:
				CyInterface().addMessage(amp,True,5,
	        "No more Arabian merchants can be built; unit disbanded",
				"",0,
		gc.getUnitInfo(unit.getUnitType()).getButton(), 
		0, unit.getX(), unit.getY(), False, False)
Since it is in parenthesis, we can ignore Python indentation rules.


As always: http://civ4.vk.tj/

Hopefully final update I have verified in the Python console that the AI doesn't know the "build lots of Arabian merchants" trick because, on the last turn of a game played with my new scenario map for LoAA, at Warlord difficulty and with a Domination victory about to happen (marathon speed), the AI never built a single Arabian merchant. So, yeah, gimping them is needed to get any semblance of balance with the AI.

It may be true that with Gordon's old scenario map, this gimmick to eliminate economic problems is necessary; I haven't tested it. Since that map is meant to be played at "quick" speed in 300 turns, 3 merchants should be enough to balance things against the non-playable AI players. I have sent Gordon an email about it and never heard back from him so it's my judgment call at this point.
 
Heya Sam -

I'm actually lurking this thread so I'm up to date on your work! Fyi, it's been 5 days since you emailed me; I live a way super busy life in NYC and that's why I havent gotten back to you yet :)

Regardless, I'm delighted and flattered that LoAA has attracted your attention, and that you've put in so much work to iron out some its problems. Most mods are built by teams, and I dont know what insanity to possessed me to do this solo but boy was it a bear. I'm glad you've caught some of my oversights!!

LoAA was a total labor of love for me and I'd be very interested in helping you out, if you want to keep tweaking it. For me, I havent played the damn thing in a couple years so right now I'm loading it up on my new comp and trying to reacquaint myself with it.
 
Hey, I'm really glad you are back and I must say: I am very impressed with the level of work and detail you put in this mod.

It has everything: New units that you drew, a completely new technology tree (indeed, it's two tech trees, one for the Arabian tribes and another for non-playable civs), a fleshed out scenario map, well-written Civlopedia entries, and so on. I can understand why you had a case of burn-out after all of that work.

You popping up back here has really inspired me to make this excellent mod even better. My goal is to flesh out the mod; make it work with multiplayer (done) and random maps (done; I've even modified PerfectWorld to give it its own random map generator), and work on some of its lingering issues:

  • "Custom Scenario" crashes; the workaround is to always use "Play Scenario".
  • Leonard Nimoy's voice says the wrong tech names in multiplayer games.
  • Not all Civlopedia entries are finished. Here, the Wikipedia is our friend (Copy, paste, give credit and all is good as per http://wikimediafoundation.org/wiki/Terms_of_Use )
  • Can we find colors for the tribes with even more contrast against each other?

I have a question about the Palmyran Empire. (Scratch that. You obviously made them Greco-Roman because they were very Romanized) I noticed that you gave them a different art style; while all of the other playable Arab tribes in the mod have a "Middle east" art style, the Palmyrans had a "Greco-Roman" art style. Now, while the Wiki is sometimes really inaccurate, over at http://en.wikipedia.org/wiki/Palmyra it states that "In the mid 1st century AD, Palmyra, a wealthy and elegant city located along the caravan routes linking Persia with the Mediterranean ports of Roman Syria and Phoenicia, came under Roman control. A period of great prosperity followed." and that Zenobia (the leader you chose for the Palmyrans) "was a 3rd-century Queen of the Palmyrene Empire in Roman Syria", but, then again, Zenobia ended up being an enemy of the Romans and ultimately was defeated by them.

Do you think it's more appropriate for the Palmyran empire to use a middle eastern or Greco-Roman art style? I'm leaning towards returning it to a Greco-Roman style because its pictures on the Wiki are very Greek/Roman looking.

Thank you for your feedback and thanks so much for this fantastic mod!

- Sam

Edit: Wikipedia entries to use for the Civs in LoAA

Lakhmid Kingdom - http://en.wikipedia.org/wiki/Lakhmids

Ghassanid Kingdom - http://en.wikipedia.org/wiki/Ghassanids

Bahrayni Sheikdom - http://en.wikipedia.org/wiki/Bahrain#Pre-Islamic_period

Sabaean Kingdom - http://en.wikipedia.org/wiki/Sabaeans

Palmyran Empire - http://en.wikipedia.org/wiki/Palmyra and http://en.wikipedia.org/wiki/Zenobia

Qataban Kingdom - http://en.wikipedia.org/wiki/Qataban

Hijazi Kingdom - Appears to be http://en.wikipedia.org/wiki/Hejaz but that article is a little light on their ancient history Update This is who they are (their initial city is Mecca). We probably have enough copy there to make a Civlopedia entry.

Omani Emirate - http://en.wikipedia.org/wiki/Oman

Hadhramawti Kingdom - http://en.wikipedia.org/wiki/Hadhramaut and http://en.wikipedia.org/wiki/Hadhrami_people

Looking at this, I think we can lift background history for everyone but the Bahrayni Sheikdom. Gordon: I would love to have some more information on the Bahrayni Sheikdom so we can make a proper Civlopedia entry for them.

Also, we should probably give the aquifier a proper write-up in the Civlopedia; Wiki has this info: http://en.wikipedia.org/wiki/Aquifier

Update I have lifted 100-150 word Civlopedia summaries from the Wikipedia for 4 of the players: http://samiam.org/Civ4/Civlopedia/
 
Between a busy work schedule and a cold which left me bedridden all weekend, I have not had much of a chance to work on it. I did get a chance to make an updated version of the map script which has more of a chance to make islands to explore with Dhows in the midgame; this is described in great detail here:

http://samiam.org/Civ4/SandBar.html

In addition, I am looking at how to change the colors and short names for the tribes so there is less confusion while playing the game. There is too little contrast between the tribes of the nine playable tribes (we have two shades of red and three shades of purple), so I have made one of the purple tribes (the Qatabans) have Greece's cyan color, and one of the red tribes (the Ghassanids) have the Elamite's dark green.

I have also fixed up CivShortDesc to have an appropriate name for the tribe (yes, they are all Arabian, but this makes it easier to distinguish which tribe is which).

It would appear that it was Gordon's original intention, after all, to give the Palmyrans Arabian style town art, since that is what they have in the scenario map. There is a compelling historical argument to give them a Greco-Roman style instead, but I think having just one playable tribe have different town art would stick out a little too much.

I have also updated the Flag Decals to use Gordon's Scimitar art instead of the default Arabian symbol.

These updates have only been done with a scenario map I have added to LoAA, which can be looked at here:

http://samiam.org/Civ4/Arabia/DEV/

Look at the file "ArabianCaulixtla.CivWarlordsWBSave"; the diff file shows how it changes since the patch7 version of this file.

I hope to have time to update the XML; maybe in a week or two.
 
Update (July 7, 2012)

I have updated CIV4CivilizationInfos.xml so that:

  • There is more contrast between the colors for the playable civs on random maps
  • The nine Arabian tribes now have a name for the tribe instead of "Arabia" pop up when mousing over the tribe's name on a random map
  • I have corrected the adjectives for the Hijazi Kingdom and the Hadhramawti Kingdom on random maps

The updated file can be looked at by going to http://samiam.org/Civ4/Arabia/DEV/ ; there is both the updated .xml file and a diff file with the changes compared to the patch7 version of this file.

I will probably release Patch 8 for Legends of Ancient Arabia in a few days. I will bump this thread when that is done.
 
For Friday the 13th, I have updated my patch file for Legends of Ancient Arabia to use Patch8. Compared to patch7:

  • Yet another PerfectWorld variant map script: SandBarMoreIslands which is SandBar
    with, well, more islands.
  • CIV4CivilizationInfos.xml updated to give civs proper names in random maps, as well as better contrast between the colors for playable civs.
  • ArabianCaulixtla map updated to give civs proper names, different colors, as well as Gordon's Scimitar logo on flags.
  • Spoilers for ArabianCaulixtla map included in "Spoilers" folder (images of full map, both with and without player starts, as well as a printable image of the Hijazi tribe's starting area)

Look here for download:

http://samiam.org/Civ4/Arabia.html

- Sam
 
Looking at the included ArabianCaulixtla (a fantasy map I have added to the Scenarios one can play in Legends of Ancient Arabia) map, I realized why the rivers weren't right: I did not correctly account for rivers when flipping the original Totestra-generated map upside-down.

After some effort, I figured out how to correct rivers when flipping the map (it's non-intuitive for me: You have to move East-West rivers north one square, move north-south rivers west one square, and, naturally, change the flow direction of the rivers).

Once I corrected the ArabianCaulixtla map, I then had to remake the detailed printable map showing the Hijazi tribe's starting location, which took a few hours. I did a better job this time: The map is twice as big and covers more area.

The files can be looked at here:

http://samiam.org/Civ4/Arabia/LoAA-patch9/

Scripts for flipping and cropping maps:

http://samiam.org/Civ4/Caulixtla/

I will probably release an updated LoAA patch with these fixes in a week or two.
 
It's time for me to put closure on my LoAA patches.

Today's LoAA-patch9.zip release updates the ArabianCaulixtla map to have correct rivers, and likewise updates the Hijazi_Start.jpg map included in the "Spoilers" folder/directory.

The file can be seen here:

http://samiam.org/Civ4/Arabia.html

This is my last planned release of a patch for LoAA. The patch still has useful files, even for people who have no interest in playing this particular mod: It also includes a couple of heavily modified PerfectWorld variant map scripts for making maps with sandy islands.

Since there is always the chance my web page could do down, in addition to having the files on my web page, I am including my patch for LoAA as an attachment here. I have no plans to remove these files from my web page, and my web page has been around longer than CivFanatics, but a backup is always a good idea.

As an aside, while "Custom scenario" is broken with the "Ancient Arabia" map included with LoAA, as it turns out, it is possible to play a Custom Scenario with my ArabianCaulixtla map.

- Sam
 

Attachments

  • LoAA-patch9.zip
    1.3 MB · Views: 426
For 2013, I have made a minor update to Legends of Ancient Arabia. Change log:

  • I have added another spoiler map, and updated two of the spoiler maps
  • What incomplete work I did adding Civlopedia entries is now included
  • Instead of being a patch file, the file I attach is now a standalone playable mod. That said, in order to save room, there are no sounds; people who wish to have the full Arabian experience may download Gordon's original file at the beginning of this thread and add the folder Assets/Sounds from that file to this file.
  • In order to make the file under 10 megs in size, I am using 7-zip to compress the archive.
  • I have no plans to port this mod to BtS! People who wish a BtS LoAA mod are free to do the work themselves or hire someone to do the work. TANSTAAFL
 

Attachments

  • Ancient Arabia pl10.7z
    9.8 MB · Views: 576
Since I still play this mod form time to time (I am possibly the only person on the planet who plays this mod, but it's still a good mod), and since no screenshots of the game in progress were ever posted, I am posting three

In the first screenshot, we can see a city invasion in the late midgame being planned. In the second, we see a city invasion showing some of the units Gordon drew for this mod. In the third screenshot, we stop barbarians from invading one of our cities in the desert. Observe the irrigated Oasis; this mod compensates for the large amount of desert in several ways, one of which is allowing oases to be irrigated, causing them to give out four food to nearby Arabian cities.
 

Attachments

  • LoAA-1.JPG
    LoAA-1.JPG
    231.3 KB · Views: 487
  • LoAA-2.JPG
    LoAA-2.JPG
    232.4 KB · Views: 513
  • LoAA-3.JPG
    LoAA-3.JPG
    181.9 KB · Views: 502
For 2014, in addition to submitting three screenshots of this mod being played, I am also contributing a huge image of the ArabianCaulixtla map included with my version of Legends of Ancient Arabia. This map has the entire mainland (but not the islands you can find in the midgame) in incredible detail, showing resources, terrain, huts, and player starts in a map big enough to be printed as a poster to put on the wall.

Making this map has been a huge undertaking; I took hundreds of screenshots of the game, edited the screenshots to have a top-down perspective, then stitched the maps together using Microsoft ICE. This project has been over a year in the making; I started it in January of 2013 and finally have something to show everyone.

Even so, the map is not perfect, with the occasional subtle visual artifact where two sections of the map did not merge together perfectly; this is particularly visible in the sea. But, even so, the map is good enough to use as a guide while playing that scenario, helping one visualize the big picture better, or even as a playing board for a Civ4-like board game.

The attached .zip file contains a huge 6849x5082 (!!) jpeg file with this map.

To the extent of my knowledge, this is the first time someone has made a Civ4 map of this size with this level of detail.

Edit When I printed the map as a poster at a local Staples, I could not even see the merging artifacts, and the guy who printed it could not even tell I merged over 100 images together to make the map.

I also now include the map; while made for Legends of Ancient Arabia, it can be played in generic Civ4 (I changed the extension to do so), Warlords, BTS (note: BTS moves the huts around), and should work with any mod which accepts generic maps. Just put the map in your PublicMaps/ folder (C:/{Program Files (x86) or Program Files}/2K Games/Civilization IV Complete/Sid Meier's Civilization 4 Complete/{Warlords, BTS, or this directory}/PublicMaps on my system, but your mileage may vary), go to "Play a scenario", then select "ArabianCaulixtla".
 

Attachments

  • ArabianCaulixtlaMap.zip
    6.3 MB · Views: 425
  • ArabianCaulixtla.CivWarlordsWBSave
    350.3 KB · Views: 174
  • ArabianCaulixtla.Civ4WorldBuilderSave
    350.3 KB · Views: 181
2015 update: The original download is now gone; a lot of Civ4 downloads went to la-la land when AtomicGamer went offline.

This mod is still online right here in this thread:

http://forums.civfanatics.com/showpost.php?p=12124577&postcount=92

The only files not available are the sound files, which I will list below:

Spoiler :

188 Assets/Sounds/Buildings/Colossus.mp3
2980 Assets/Sounds/Diplomacy/Brennus_Early.mp3
3324 Assets/Sounds/Diplomacy/Brennus_Late.mp3
3324 Assets/Sounds/Diplomacy/Elizabeth_Early.mp3
2980 Assets/Sounds/Diplomacy/Elizabeth_Late.mp3
3324 Assets/Sounds/Diplomacy/Gandhi_Early_Intro.mp3
2980 Assets/Sounds/Diplomacy/Gandhi_Early_Lp.mp3
2980 Assets/Sounds/Diplomacy/GenghisKahn_Early_Lp.mp3
3324 Assets/Sounds/Diplomacy/GenghisKhan_Early_Intro.mp3
3324 Assets/Sounds/Diplomacy/Isabella_Early_Intro.mp3
2980 Assets/Sounds/Diplomacy/Isabella_Early_Lp.mp3
3324 Assets/Sounds/Diplomacy/Napoleon_Early.mp3
2980 Assets/Sounds/Diplomacy/Napoleon_Late.mp3
3324 Assets/Sounds/Diplomacy/Peter_Early_Intro.mp3
2980 Assets/Sounds/Diplomacy/Peter_Early_Lp.mp3
3324 Assets/Sounds/Diplomacy/Saladin_Early_Intro.mp3
2980 Assets/Sounds/Diplomacy/Saladin_Early_Lp.mp3
6112 Assets/Sounds/soundtrack/Classical/AncientSoundtrack1.mp3
2784 Assets/Sounds/soundtrack/Classical/AncientSoundtrack2.mp3
8820 Assets/Sounds/soundtrack/Classical/AncientSoundtrack3.mp3
8184 Assets/Sounds/soundtrack/Classical/AncientSoundtrack4.mp3
3284 Assets/Sounds/soundtrack/Medieval/AnonymousAySantaMaria.mp3
3160 Assets/Sounds/soundtrack/Medieval/AnonymousLaGamba.mp3
3496 Assets/Sounds/soundtrack/Medieval/DesprezLament.mp3
4168 Assets/Sounds/soundtrack/Medieval/OckeghemIntemerata.mp3
3324 Assets/Sounds/soundtrack/Medieval/OckeghemKyrie.mp3
2864 Assets/Sounds/soundtrack/Medieval/OrtizRecercada.mp3
2784 Assets/Sounds/soundtrack/OpeningMenu.mp3
3596 Assets/Sounds/soundtrack/Renaissance/BachAllegro.mp3
3892 Assets/Sounds/soundtrack/Renaissance/BachAllegroAssai.mp3
6484 Assets/Sounds/soundtrack/Renaissance/BachAllemande.mp3
1780 Assets/Sounds/soundtrack/Renaissance/BachBouree.mp3
3592 Assets/Sounds/soundtrack/Renaissance/BachBrandenburg2 3.mp3
3876 Assets/Sounds/soundtrack/Renaissance/BachBrandenburg3 1.mp3
5416 Assets/Sounds/soundtrack/Renaissance/BachBrandenburg4 1.mp3
184 Assets/Sounds/Tech/Tech_Mysticism.mp3


A more Arabian experience can be probably made by finding creative commons or other open licensed Arabian music, and giving it the above file names.

Public service announcement: If you’re using an ad-blocker, please make sure to whitelist civfanatics.com and any site you download a Civ4 mod from. Hosting gaming files is expensive, and I am sure the main reason AtomicGamer went offline is because they were not getting enough ad revenue to pay their expenses. See also: http://www.moddb.com/news/the-challenge-of-adblock
 
Do you happen to have the original soundtrack for the mod?
 
I was never really happy with the “only three Arabian Merchants for the entire game” gimp I made, so I’m playtesting a different gimp of the Arabian Merchant: It’s possible to have unlimited merchants again, but the merchant now only gives out 10% of the gold it gave before. Yes, the Merchant gives the player a tremendous advantage over the AI, but it’s not a game breaking advantage, since the productivity given up making merchants costs almost as much as the now limited gold they give the player.

The merchants are really needed in the midgame when the player is starting to expand by conquering his neighbors but faces an economic implosion, since the usual technologies for handling economic problems during that part of the game (cottages; courthouses; having cities build wealth) are not available until the late midgame or endgame in this mod.

See attached for my patch with this rule change.
 

Attachments

  • AncientArabia-2017patch.zip
    26.8 KB · Views: 348
I think that's a good call.
The AI still didn't use any of them?

EDIT: took a quick look into the code, and it seems at first glance that it's not yet properly coded for Warlords, even Great Merchants won't work properly!
So UNITAI_MERCHANT for those units is actually pointless...
In BtS it is a way updated function.
So this would be another reason for a BtS port.
Not to mention to way too long turn times from the midgame. Those would definitely go away in BtS.
 
You know, I think there’s a certain charm in having a Warlords mod out there. We have a lot of BTS mods (TAM; Dune Wars; Final Frontier Plus; Caveman2Cosmos; MongoosMod; etc. etc. etc.) but not that many Warlords mods — so it’s a nice change to have one.

If anyone feels differently, the game (except for the music files, which were lost) is available for download and can be modified by anyone, to be a BTS, “Vanilla” Civ4 — or even a Civ5 or Civ6 mod. Maybe someone will come forward and start the hard work of making a BTS port of this mod; anything is possible on the Internet.
 
Top Bottom