incremental patch discussion

@ koma, what do you think about this bug, along with the offworld trade change and the minor gui comments which I gave above in DA61? I have a bunch of other changes ready to go.

I will release a patch later that day. Offworld trade is now needed to access homeworld units. I also created a building tag (currently set to 'NO_BUILDING') that set the building required to send offworld units to a city.
Most of issues your reported in DA61 are only relevant for first time players. I know this is about interface philosophy but I strongly detaste obeying to that group of people. :)
But I will have a close look in DA61 and maybe...

CvTechChooser has no attribute 'sTechTabid

I can't see how this error is related to mercenaryutil.py. But having a python error with sTechTabid sound awful familar to me, I think it's not the first we had this problem.

Here: http://forums.civfanatics.com/showpost.php?p=8143537&postcount=221 :D

Two other bugs I would like to see fixed before 1.5:

- I really like cephalo's arrakis map, but calculating starting positions often fails
- when I quit a game to main menu and start a new one I sometimes get a python exception about smart map. Next when I try to generate a map (doesn't matter which one) the game ctd
 
Most of issues your reported in DA61 are only relevant for first time players. I know this is about interface philosophy but I strongly detaste obeying to that group of people. :) But I will have a close look in DA61 and maybe...

I won't argue about it, but part of my job for +10 years is designing UIs which people can use correctly the first time. I agree some suggestions like (f) are probably more trouble to implement than they may be worth. But in particular (b,c) will really help people to figure out the screen and they should be very easy.

But having a python error with sTechTabid sound awful familar to me, I think it's not the first we had this problem.

I agree we have had the problem many times, when python gets reloaded during the game. There is something wrong with the bug tech chooser. Both Ahriman and I were having this problem at the start of the game, without reloading python, which is new. Anyway, I am no longer having this problem.

Two other bugs I would like to see fixed before 1.5:

- I really like cephalo's arrakis map, but calculating starting positions often fails
- when I quit a game to main menu and start a new one I sometimes get a python exception about smart map. Next when I try to generate a map (doesn't matter which one) the game ctd

I agree with both of these problems. Cephalo seems to have dropped off and his code is quite complex, so the first problem may be hard to fix. The second problem has been there for a long time and I have a similar problem with other mods, so I am not sure where to go to track this down.

Do you feel that either of these existing problems is severe enough to prevent a release?
 
Both Ahriman and I were having this problem at the start of the game, without reloading python, which is new. Anyway, I am no longer having this problem.

With the above changes installed, I am also no longer having this problem, I think the removal of the mercenary AI for the human fixed it.
 
Playing as Atreides, I'm getting a ton of free units. Either there is still something messed up with the off-world mercenaries, or the old free-unit mechanic (which I thought we turned off, since its very unbalanced and not very flavorful) has been reactivated. This should be turned off.
I'm guessing the latter, since they don't have the "homeworld" promotion.
 
Playing as Atreides, I'm getting a ton of free units. Either there is still something messed up with the off-world mercenaries, or the old free-unit mechanic (which I thought we turned off, since its very unbalanced and not very flavorful) has been reactivated. This should be turned off.
I'm guessing the latter, since they don't have the "homeworld" promotion.

I turned down the spawn rate but I left it in place. Perhaps we have reached a plateau of stability, where the civilization unique abilities can now be balanced. Previously, a number of things were keeping us from even reaching this point. I am sure that the various UA are unbalanced with respect to each other, but now maybe we can concentrate on this balancing.
 
I turned down the spawn rate but I left it in place.

As I suggested before, this free units really doesn't make sense for Atreides. Atreides are a diplomatic faction, with good propaganda, and a *small* but well-trained military. They should not be getting a bunch of extra free units with no xp or promotions; this mechanic makes them into a militaristic swarm faction, which is totally out of character.

And the rate isn't "low". In the game I tried, I got probably 6 free rocket infantry across 3 cities in the space of around 15 turns.

Free low-grade units would make much more sense for Harkonnen if anyone; they seem to be more likely to use a ww2 Soviet style swarm army. Atreides should be more like WW2 Britain, relying on air power and troop quality.

So I don't think its just a matter of balancing.

* * *

My thought for Atreides would be:
1. A permanent +3 diplomacy modifier with all factions except Harkonnen, where they get a -3.
2. Reduce the base aircraft limit to 3 per city for all civs, with 2 more from the desert airfield, and give Atreides an extra +1 (or put it on an Atriedes UB).
3. Atreides UB that gives a +free xp for newly created cities, but a small military production penalty.
4. Superior Atreides air unit UUs.
 
Perhaps a Pilot Academy UB that gives a Atreides Pilot unique promotion.
 
I'm ok with keeping Atreides heir for now anyway, I haven't really tested it yet. Just make sure that its actually an Atreides UU though :-)
 
Here is a new patch. It is an All-In-One patch and has all stuff included I released in the last few days.

Features:

1) newest offworld screen

- Offworld trade tech is needed for access
- slightly increased unit pool spawning chance (8%)
- improved unit type spawning chance selection (no new obsolete units)
- improved interface
- AI fix for human player

2) new CvGameCoreDll

- AI settler fix
- disabled 'globe circumnavigated' message and bonus
- disabled foot step sound for 'The enemy has been spotted near...' message
- source files included

Requirements:
DW 1.4.8 + deliverator's latest art and sound patch

Link:
http://www.mediafire.com/download.php?zm2tmnnmiwm
 
Ok. I think the disappearing Landing Stage is probably the last bug that people should worry about before a 1.5 release, and if you can't go ahead and see a fix then release a 1.5 without it.

You might also want to change the name of the Mod, so its back to DuneWars rather than DuneReduced.
 
Here is a new patch.

I've merged it. Looks great, thanks for adding the explanatory text to the homeworld window. Unfortunately I am again getting the situation where the python modules are reloaded multiple times at startup, resulting in the tech chooser throwing many alerts. This makes the game pretty much unplayable, so we will have to figure out why the multiple reloads are happening.
 
Unfortunately I am again getting the situation where the python modules are reloaded multiple times at startup, resulting in the tech chooser throwing many alerts. This makes the game pretty much unplayable, so we will have to figure out why the multiple reloads are happening.

I spent a few hours to track this down but no luck yet. I can make it stop, but only by disabling the homeworld screen. Here are the steps I followed.

1. Invoke the game normally. I get five "Reloading python modules", see screenshot. Exit the game since the tech chooser is unusable due to alerts.

2. Edit DuneWars.py and screens/CvHomeworldAdvisor.py; comment out the lines "import MercenaryUtils" and "objMercenaryUtils = ..." at the start of the file.

3. Remove MercenaryUtils.py (move it somewhere else) so it does not get autoloaded

4. Invoke the game again; no "Reloading" messages and tech chooser is fine. Exit.

5. Put back MercenaryUtils.py

6. Invoke the game again. Now I get only two "Reloading" messages instead of five, but it is enough to make the tech chooser alerts appear and render the game unplayable.

I do not understand why it temporarily stopped happening for me, or why it does not happen for koma. I also do not understand how autoloading MercenaryUtils.py causes all of the python modules to be reloaded. The code of MercenaryUtils.py is not very large; the only module it uses which I do not normally use is SdTookKit. I guess this is so that the pool contents can be saved when the user saves a game.
 
Hmm.. very strange indeed.

Sdtoolskit is for managing scriptdata. I use it to store units in pool.

In CvMainInterface.py line 206 mercenaryUtils is loaded too, try replacing it with:

OFFWORLD_TECH = "TECH_OFFWORLD_TRADE"

But this is no solution in general. Problem is I can't test it because for me it works fine (no reloading). Maybe Vista?
If you want to test if sdTools is responsible for reloading, reinstall my patch and try changing mercenaryUtils.py to:

Code:
def __init__(self):
	# Setup the mercenary data structure if it hasn't been setup yet.
	[B]
        #if(SdToolKit.sdEntityExists("Mercenaries Mod","MercenaryData") == False):
	#	self.setupMercenaryData()
        [/B]
		
	global g_iSpawningChance
	global g_dHireCostModifier
	global g_iFirstChanceForPromotion
	global g_PromotionList
	global g_iStartingUnits
	global g_bMercenaryDebug
		
def doHomeworld(self):
	[B]			
	#if SdToolKit.sdEntityExists("Mercenaries Mod","MercenaryData") == False:
	#	self.setupMercenaryData()
	[/B]
	
	for iPlayer in range(gc.getMAX_PLAYERS()):
		player = gc.getPlayer(iPlayer)
			
		if player.isBarbarian():
			continue
		
		if not player.isAlive():
			continue
			
		team = gc.getTeam(player.getTeam())
		if not team.isHasTech(gc.getInfoTypeForString(OFFWORLD_TECH)):
			continue

                [B]
                if SdToolKit.sdEntityExists("Mercenaries Mod","MercenaryData") == False:
		        self.setupMercenaryData()
                [/B]

This should delay sdtools initialization until a player discovers the offworld trade tech.

Maybe you can give it a try. :)
 
I am using Vista, if that helps diagnose the problem.
[Well, I'm also using Vista even if that *doesn't* help diagnose the problem :-)]
 
Hmm.. very strange indeed. [...] In CvMainInterface.py line 206 mercenaryUtils is loaded too, try replacing it with:

I had made that particular change also but I forgot to mention it.

I have good news and bad news about this. The good news is, today I am no longer seeing this problem, despite no changes on my side. The bad news is, today I am no longer seeing this problem. I can give myself offworld trade and buy units, and the tech chooser never throws alerts.

A problem which comes and goes, and never happens for the original developer, is very frustrating.

One thing different I notice today. In my screenshot a couple of posts back, you see a line, "Mod Data Initialized Mercenaries Mod True". Today I do not see that. I wonder if there is some timestamp related thing. If some file is missing or old, then some initialization is done (causing the python reload) but if the file is up to date, then no initialization is done.

I will try "touch" ing some files to make them new, to see if the message re-appears.

FWIW, I am using Win-XP SP2, not Vista. Although we may like to, this problem cannot be blamed on vista.
 
One thing different I notice today. In my screenshot a couple of posts back, you see a line, "Mod Data Initialized Mercenaries Mod True". Today I do not see that.

This message is caused by:
Code:
SdToolKit.sdEntityInit( "Mercenaries Mod", "MercenaryData", { AVAILABLE_MERCENARIES : {} , UNIQUE_ID : 0 })
which is part of MercenaryUtils.setupMercenaryData().

There are only two situations when setupMercenaryData can be called.

1) When MercenaryUtils is initialized during game start (MercenaryUtils.__init__)
or
2) When MercenaryUtils.doHomeworld() is called in 'onEndGameTurn' in DuneWars at the end of the first turn

I remember reading the sd data sometimes result in a "sd data not exist" error, which is the reason I added setupMercenaryData to doHomeworld().
It is strange, but it seems that MercenaryUtils.__init__ isn't called always and if called, it causes that reloading and tech chooser problem.
 
Ok. I think the disappearing Landing Stage is probably the last bug that people should worry about before a 1.5 release, and if you can't go ahead and see a fix then release a 1.5 without it.

I investigated a little further and you can reproduce the problem in a tiny standalone mod. It seems that national limit buildings have a bug; the game lets you put N into your build queue, but you can only actually have N-1 of them at a time. See this thread, where I hope somebody will suggest a fix.

In other news, I removed all the mapscripts except archipelago and arrakis, and set the ini file variable PublicMaps to zero. This prevents any of the other mapscripts from being selected. I believe this will prevent the error message and crash pointed out by koma when you start a second game. At least, with these settings, I cannot get that error/crash to happen anymore.

I have merged deliverator's art patches. I also changed a couple of building buttons to remove duplicates, but I didn't add any; I just picked up some unused ones which did not look too bad, from the existing dunebuildingatlas files.

I am going to take another crack at getting unit art swapping to work so we can put in the worm rider graphic, but so far no luck; see this thread.

I will release a 1.5 today. If many people have the transient problem of the tech chooser, I am not sure what we will do.
 
I investigated a little further and you can reproduce the problem in a tiny standalone mod. It seems that national limit buildings have a bug; the game lets you put N into your build queue, but you can only actually have N-1 of them at a time. See this thread, where I hope somebody will suggest a fix.

Interesting. I'm guessing that increasing the national limit from 2 to 3 just has the same effect if you built a 4th.

A messy workaround would be to actually have 2 landing stage buildings; landing stage 1 and landing stage 2.
Both buildings are identical, and have a national limit of 1, and both can give a contract, and look at the same shared pool of available contracts.

And then for Ecaz you could make a Landing Stage 3.
 
Please put feedback for 1.5 onto the new modpacks thread, to get more publicity for the mod.

Please download from the new download page.

Here is the detailed release note with changes compared to 1.4.8.

Merges
* Deliverator's art patch from September 6 and 13 (details in the art thread)
* koma13's Homeworld Reinforcements patch from September 12 (details at this post).

Unit changes
* Fixed a bug where AI settlers would often fail to settle (fix by koma13) (AH96)
* Heavy Trooper no longer upgrades to Ginaz Swordsman (AH92)
* Removed Sardaukar Noukker +25% bonus vs guardsman (AH97)
* House Corrino, only, was accidentally allowed to build Atreides Heir and Reverend Mother (AH98)
* Several houses (BT, Harkonnen, Corrino) started with Hawk Thopter, now start with Scout Thopter (AH83, AH99)
* Firefly now requires liquid fuel AND air power (AH106)
* Changed Quad to strength 5, 30% withdraw (was 8, 20) (AH85)
* Minor changes to all terrain vehicles: use up all movement points when *transport unload* button is used (AH94); prevent settler founding city when loaded; display odds when all terrain vehicle attacks across domain (DA60)
* Made one pass through promotions to delete a few and change a few to more logical unitcombats. In particular, many promotions were swapped between thopters and hornets.

Tech tree, civics changes
* Reduced "scope" of happiness bonus for catchbasin from +1 on same continent to +1 in city only. Reduced Reservoir of Liet from +1 global to +1 city only. Should make Arrakis Paradise super-cities harder.
* Polar and Polar Coast terrains now allow connecting resources (DV01)
* Mercantilism civic now requires Protected Trade instead of Solaris Economy (AH102)
* Added another 15 tech quotes

Terrain, improvement, building changes
* Decreased water yield of windtrap, shallow well, deep well, aquabore from 2,3,5,7 to 1,2,3,4. We hope to slow down early city expansion, which will slow down commerce growth, which will slow down tech tree progression. (AH84, AH86, AH104)
* Archipelago mapscript was not changing terrain *altitudes*. This led to leftover freshwater lakes (AH101) and weird patterns of cultural border spreading around polar terrain (AH70)
* Fixed a bug where only one landing stage per civ was allowed (CvCity.cpp, function popOrder) (AH75)
* Reduced greenhouse and water refinery from +25% water yield to +10% (AH90)
* Reduced Deathstill water bonus to +1; Fremen civs usually had the highest score
* Removed robotic factory, added computerized research center (DV6)
* Computerized research center gives another +25% beakers with thinking machines (power); added new XML tag PowerCommerceModifiers to buildings.
* Area unhappiness was not displayed correctly in the pedia; changed CvGameTextMgr.cpp
* Renamed Spice Factory to Factory, Spice Complex to Industrial Complex (DV7)
* Doubled time to remove salt pan (AH103)
* New build buttons for harvester, wind trap, turbine. Turbine button is better than previous vanilla watermill button, but not much.
* Changed a few building icons to remove duplicates.

Miscellaneous changes
* Removed "world is round" bonus (fix by koma13) (AH23)
* Changed four Revolutions game options to default "off", and changed the main initialization file to ignore it if the user ini file turns them on.
* Removed other mapscripts from distribution and disallowed public maps (DA47)
* Reduced Atreides automatic draft rate by 4x
* Changed a few leaders who had a hated civic, but not a favorite civic (AH105)
* Move back vanilla gamespeed and culturelevel files (AH93)
* Internally changed IMPROVEMENT_OUTPOST to IMPROVEMENT_FORT (AH95)

The current bug list is attached.

(EDIT: the cvgamecoredll.dll which I produced is "bad" somehow, leading to assertion messages whenever you right click to move a unit on desert. I dropped back to koma13's dll from Sept 12, which does not contain the fixes in orange color.)
 
Back
Top Bottom