Mesoamerica Mod

Welll I gave a little look at the python ( I'm quite unskilled on it, but the training from other languages + the programmer comments help a lot ) and have some awnsers and questions....

First of all the disease mechanism: from what I understood the mechanism is working right as planned ( Spanish are carriers and never get sick, mesoamericans can get disease and spread it to both cities and units ( to avoid cheesy exploits ) ), but.....
Code:
# Constants
				self.MAX_CITY_INFECTED_TURNS = 10
				self.MAX_UNIT_INFECTED_TURNS = 10
				self.INFECTION_FROM_INFECTED_PROBABILITY = 20
				self.INFECTION_FROM_CARRIER_PROBABILITY = 15
				#self.INFECTION_FROM_CARRIER_PROBABILITY = 100
				#self.INFECTION_FROM_INFECTED_PROBABILITY = 100
The names are self explanatory....


EDIT Forget what I written before... I read the commented out part :hammer2: Instead I would try to reduce the Max_ _Infected turns to maybe half or less. Given that the infection spread is called every turn, 10 turns will make a high prob ( P.S Calculated it and the prob is of more than 89% of catching the disease if the 2 units/city to stay in the same tile for 10 turns, pretty high considering that there is no imunity ( natural or adquired ) to the disease ) of the unit/city to recatch the disease from the city/garrison even with 20% prob of catching the disease, unless you put the units away from the cities in quarantine ( maybe it was the intended idea? )

Seen this we can pass to the spawning mechanics....

First of all, the python is coded for this map in here... Using this mod as it is for other maps can give problems because the Spanish have defined spawning and landing spots ( written in map coordinates that I'll not give :p ) and I simply don't know what happens if you try to spawn a galleon on land or if you can't land in the defined spot.

First the spawn will only happen during a certain interval of time:
Code:
if (turn == 50 or turn == 70 or turn == 100 or turn == 130):
#if (turn == 3 or turn == 12 or turn == 24 or turn == 36):
					self.__spawnSpanish()
Don't worry with the 2nd line... it is commented out and it should had been used for testing. This means that the spawns will happen only at turn 50, 70, 100 or 130 . IMHO this far early... some ideas in here, pls?

More, the game has defined more than a spawn for the Spanish:
Code:
def __spawnSpanish(self):
				'Spawns a wave of spanish units'

				spanishPlayer = PyPlayer(SPANISH_PLAYER)

				if (self.wave == 0):
						print("Spawing wave 0")
							
						spawnPlot = self.spawnPlots[0]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						unitIDs = []
						
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
				elif (self.wave == 1):
						print("Spawning wave 1")
						
						spawnPlot = self.spawnPlots[0]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SPANISH_CONQUISTADOR'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
				elif (self.wave == 2):
						print("Spawning wave 2")
						
						spawnPlot = self.spawnPlots[0]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SPANISH_CONQUISTADOR'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SPANISH_CONQUISTADOR'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						spawnPlot = self.spawnPlots[1]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						spawnPlot = self.spawnPlots[2]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
						
				elif (self.wave == 3):
						print("Spawning wave 3")

						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SPANISH_CONQUISTADOR'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						spawnPlot = self.spawnPlots[1]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SPANISH_CONQUISTADOR'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						spawnPlot = self.spawnPlots[1]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)
						
						unitIDs = []
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_GALLEON'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_EXPLORER'), UnitAITypes.NO_UNITAI])
						unitIDs.append([CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_SETTLER'), UnitAITypes.NO_UNITAI])
						
						spawnPlot = self.spawnPlots[2]
						landingPlot = self.landingPlots[randomNumber(0, len(self.landingPlots) - 1) ]
						
						self.__spawnWave(unitIDs, spawnPlot, landingPlot)

				self.wave = self.wave + 1
A big piece of code, but needed... every time that a spawn date isreached a wave is formed. We can only have 4 waves as defined before and this piece of code defines the composition. For those that aren't in the will of reading code ( most of you ;) ):

1st spawn: 1 galleon with 2 explorers and a settler ( to be killed ASAP and spread disease? )

2nd spawn: 1 galleon with a explorer. a Conquistador and a settler

3rd and 4th spawn ( each one ): 1 galleon with 2 explorers and a settler and 2 galleons with a explorer. a Conquistador and a settler

My opinion is that the spawns are in completely wrong dates ( can someone say to me in each dates it is? ) and that the waves needs a redraw ( IMO the first waves should be more military and less settlers and the last ones the other way around... what is the point on sending settlers unescorted to a place were everyone is in war with you? ). Like I said before IMHO Spain should not start in war with everyone as well....

Well , I would like some discussion in this.... I'm not sure if modding this mod would bring legal issues ( after all it is copywrited material ) ,but atleast Firaxis could use some "encouragement" to change this ;), given that the mod is not that bad ( clearly needs fine tuning, but the core mechanics are OK )

P.S All of the above code is part of CvMesoamericaEvents.py file in MesoAmerica mod for Beyond The Sword, copywrited material from Firaxis, credited to Will Miller ( BTW nice coding ;) )
 
New Unique Units, perhaps?

Slingers, Aztec Missonaries, Jaguar Warriors, Panther Warriors, Javelin Throwers?

With some basic research, one could discover many things.
 
At last the native American civs have been represented in a mod, and not just as gun fodder for some highly overpowered European civs. It is however, HIGHLY flawed and needs some work. Some new, more unique units for the natives would be a good start as well as allowing Diplomacy with the Spanish so you can trade/ steal horses. Some more mesoAmerican inspired wonders would be nice too, a new map is also needed, i'm sure i saw one somewhere which i thought would be suitable. Finally, the Sioux faction on Vanilla BTS needs to be represented, maybe by including the Apaches, Comanches, Navajo or such.
 
The BTS Mod isn't anything like the Civ III scenario, sadly. It would be cool to have that one converted, with its quests/sacrifices.
 
yeh i wish a modder would pick this up. I would if i knew how to work with civ4(its alot more complex) but i've only lightly modded civ3 & civ2. :(
 
This scenario is certainly disappointing as is, but I think before anyone attempts to mod it I think they need to read up on their Mesoamerican history as well as on the Conquest of Mexico. I'd never consider myself knowledgeable on the subject, but I see a lot of common misconceptions cropping up. Plenty of good ideas though, too.

The biggest problem is getting over the concept Spaniards are "gods" (a sort of fear factor?). I'm not sure how to make that work since it's an all or nothing situation -- the natives attack in mass, or not at all... Units would have to be "defend only" until the time a native civ "decides" Spaniards aren't "gods".

The idea that the Aztecs or their neighbors ever thought that the Spaniards were gods has been widely disputed, and I think most scholars of the Conquest view it as untrue or at least inaccurate. Spanish accounts say that they were viewed as gods, possibly because they were trying to validate their conquest in the Aztec cosmology, but if you look at how the Aztecs (and others) reacted to Cortez and his men you'll find that they were treated as foreign emissaries at best and invaders at worst. Edit: Also, the Aztecs bathed twice a day, whereas I don't think that Europeans of the time were in the habit of bathing much at all. In light of even just that, the idea that the Aztecs would view a bunch of smelly soldiers as gods seems a bit hard to swallow.

Alliances between native civs might also play a crucial role in being able to overthrow the conquistadores.

Agreed. Historically, if the Mesoamericans hadn't been so caught up in their own rivalries and internecine warfare they probably could have beaten back the Spanish, though I'm pretty sure that small pox was still the deciding factor.

there were some natives that allied with the spanish to overthrow the aztec's,and later even allied with the spanish against tribes in parts of what is now the U.S. Maybe there should be a diplomacy option with spain would make things more interesting like trade and converting to christanity.

Yes to this. Getting guns from the Spaniards would be awesome. Horses, meh, not so useful in the jungle and rugged terrain of Central America, as the Spaniards themselves discovered.

Yeah, that's called "becoming a vassal." ;)

No, they were definitely allies. The Tlaxcaltecs had the Spaniards on the ropes and nearly killed them, but saw an opportunity to ally with them and take down the Aztecs, their hated enemies who dominated the region. That's how Cortez was able to defeat the Aztecs with less than 300 Spaniards -- he had something like 40,000 Tlaxcaltec soldiers as his allies.

EDIT: Although now that I think about it, vassalage should definitely play a role in the scenario. The Aztecs basically subjugated their empire through forcing other nations into a form of tributary vassalage. And the Maya had a feudal society before Europe did.

As to what to do to make the current mod better, here's a few things off the top of my head that I don't think anyone else has mentioned.
- Starting year 500 AD is WAY early. The Aztecs didn't even found Tenochtitlan until around 1325. I'd set the starting year to 1300, 1 year per turn, lasting until, say, 1600. That preserves the 300 turns for a game.
- The tech tree should be completely overhauled. Right now it's basically the regular CIV tech tree with some stuff missing. However, CIV's tech tree is heavily modeled on Old World (and especially European) tech advancement, which Mesoamerican civs did not follow. European technology focused much more on metalworking, while Mesoamerican technology focused much more on things like weaving and textiles. (The cotton armor worn by Aztec soldiers was much more effective in the climate than the Spaniards metal armor; in fact, they switched to using native armor. :p )

If I didn't have so many other projects going on, I'd mess around with this myself, but such is life.

PS - Long post is long.
 
This mod blows chunks we all know. But I think there might be some useful code I can grab from it. As I was reading through it, I realized the smallpox mechanic is very similar to something I want to do in my RIFTs mod with the juicer unit. They die off after a certain number of years. So I may be able to snatch some useful ideas from this. Does anyone have any idea where to find the coding for the small pox stuff?
 
The idea that the Aztecs or their neighbors ever thought that the Spaniards were gods has been widely disputed, and I think most scholars of the Conquest view it as untrue or at least inaccurate. Spanish accounts say that they were viewed as gods, possibly because they were trying to validate their conquest in the Aztec cosmology, but if you look at how the Aztecs (and others) reacted to Cortez and his men you'll find that they were treated as foreign emissaries at best and invaders at worst. Edit: Also, the Aztecs bathed twice a day, whereas I don't think that Europeans of the time were in the habit of bathing much at all. In light of even just that, the idea that the Aztecs would view a bunch of smelly soldiers as gods seems a bit hard to swallow.

Haha! And they said a History degree was worthless. I just so happened to learn something in my Mesoamerican History class. The entire idea of Mezoamericans belief in the Spaniards as gods is based purely on an Aztec myth and Cortez's initial meeting with Moctezuma. The Aztecs were a warlike people who stole all their good ideas about religion and culture from their conquered neighbors (a lot like the Romans). They imported the myth of Queztalcouatl from the conquered Toltec people (whom Cortez eventually turned against the Aztecs to conquer them; he didn't do it with a handful of Spaniards!). According to revisionist Aztec myth Queztalcouatl was said to have been defeated by another god and he was reborn as the god of Venus and took the form of a white-winged serpent. The Aztecs turned him into an almost Christ-like figure and he was said to return one day to lead his people to glory and on and on. Well when the Spaniards showed up on the shore, guess what the Aztec people saw them display? A coat of arms showing a winged serpent!

I got this from my professor directly. It wasn't in our textbook so I cannot validate the veracity of her claim, but her specialty was Mesoamerica, and the Aztecs in particular, whom she insisted on calling the Mehica. Anyway, this is the only case in which the Spaniards were ever welcomed to such an extent. But a lot of what transpired between Cortez and Moctezuma was probably lost in translation as there weren't exactly a lot of good Spanish/Nahuatl translators in that day and a lot of the story about Moctezuma offering his throne symbolically to Cortez has been hotly debated by Spanish historians. In the case of the Maya, they were long gone by the time the Spaniards got there. With the Inca, the Spaniards basically went in guns-ablazing and plundered Chichen Itza.

But yea, small pox was the thing that really did them in.
 
Well, i already gave my opinion on this a while ago, but definitely the thing that irks me more in this mod is the fact that the disease does not have any natural or adquired immunity ( except if you're spanish, as if the inhabitants of Spain didn't died of smallpox at the time ). The same unit can catch the disease over and over again and as neither the AI or the humans will naturally take their units to quarantine in the jungles ( :lol: ), that would be a obvious suicide in military terms as well, this means that the plague will last virtually forever....

I already ranted about the stupidness of the Spain player and about the tech tree issue ( and also the horses ) some pages ago and my opinion have not changed...
 
Well, i already gave my opinion on this a while ago, but definitely the thing that irks me more in this mod is the fact that the disease does not have any natural or adquired immunity ( except if you're spanish, as if the inhabitants of Spain didn't died of smallpox at the time ). The same unit can catch the disease over and over again and as neither the AI or the humans will naturally take their units to quarantine in the jungles ( :lol: ), that would be a obvious suicide in military terms as well, this means that the plague will last virtually forever....

I already ranted about the stupidness of the Spain player and about the tech tree issue ( and also the horses ) some pages ago and my opinion have not changed...
I played unaware of a problem, and really the plague lasts forever, and you can't really heal. not even with a woodsman 3 and medic in the stack.
War is hard this way.
And the only spanish I met where explorers.
The only way I see to win this game is to sacrifice all your poxed units (is there a sign or something? didn't see anything) and build new ones all the time. Not too hard, but a bit useless.
 
This is a good example of what incomplete playtesting does. The mod maker most likely tested the 10 turn disease period, tested the infection between units, but most likely forgot to test what happened it in a real play situation, where the last thing you want to do is to scatter your units around ( and where the AI will also not do it ). Same thing for the Spanish waves.... very nice to put a hemi-historical touch of first putting explorers, but combining this with being in war with everyone is stupid and anyone would had noticed that with a complete game.
 
I've been having the scenario hang in a "waiting for other civilizations" loop frequently. Anyone else? Anyone know when this might be fixed or when there may be another patch?
 
It seems the best thing is to simply bury this mod as insalvageable.
 
I'm going to assume that I can bring back this thread, seeing as how it can go several months without an update...

Anyway, yes, the first wave of Spaniards always gets captured, which sucked for me because the orange civ that captured it was right next to me and happened to be at war with me, and now he had 3 cities to pump Jaguars out of. But what really sucked is that he infected my cities, giving all the Jaguars I has a staggering, permanent TWO STRENGTH:mad:. So then, when the first Conquistador finally showed, the lone unit proceeded to, over the coarse of 7 turns, take over my three cities basically unopposed, and boot me from the game with 3 shiny new cities.

Lovely.:(
 
yeh this mod has been broken since it came out, if i knew some xml i would probably try to fix/dress this mod up with the attention it deserves :)
 
Top Bottom