FfH2 Bug Thread

So, in reading through the three threads, I do think the blight is working properly, that is, as specified

I'm sure I've seen stuff like 50 unhealth just from blight in a size 20ish city, and other people are reporting that too... for instance, read Sarisin's posts at the end of the thread in the S&T forum.
 
Kael, sorry, but I was wrong in my last post, Monkeyfinger is right. I'm almost positive now I was right the first time. I've attached two saves. The first is two turns before the blight hit, when I went into the worldbuilder and got myself a bunch of AV priests. The second is after the blight.

The fact that the blight health hit is FAR greater than population + rand (1-15) is clear. Some examples: in my first save, Khazak, my capital, has a population of 27, Rylad has a population of 19, and Celo, for instance, has a popualtion of 13. The blight effects for them are 67! (just from blight), 19, and 31; therefore, it is logical to conclude that we are getting hit with double the population impact or something on the same order of magnitude. The other cities appear to have similar impacts.

Note that the total unhealth in Khazak is now 96; despite people's protestations to the contrary, this is an absolute game killer, I will have a popualtion of 1 for a VERY long time in my capital.

Best wishes,

Breunor
 

Attachments

  • blight_test.CivBeyondSwordSave
    422.3 KB · Views: 47
  • blight test+1.CivBeyondSwordSave
    433.4 KB · Views: 68
Very suspicious. I've been playing on my end too.

Screenshot 1 is my city before blight.

Screenshot 2 is the world during blight. I had it put a popup on every city it was blighting.

Screenshot 3 is my city after blight.

The good news it that it does truely apply the blight effect to every city in the game. But just as you have said it applied 27 points of blight to a city with 7 population. that should be impossible with the code as it is. This is the current blight code:

Code:
def doArmageddonBlight(argsList):
	kTriggeredData = argsList[0]
	iPlayer = argsList[1]
	pPlayer = gc.getPlayer(iPlayer)
	py = PyPlayer(iPlayer)
	if pPlayer.getCivilizationType() != gc.getInfoTypeForString('CIVILIZATION_INFERNAL'):
		for pyCity in py.getCityList():
			pCity = pyCity.GetCy()
			i = CyGame().getSorenRandNum(15, "Blight")
			i += pCity.getPopulation() / 2
			i -= pCity.totalGoodBuildingHealth()
			if i > 0:
				pCity.changeEspionageHealthCounter(i)
	for pUnit in py.getUnitList():
		if pUnit.isAlive():
			pUnit.doDamageNoCaster(25, 100, gc.getInfoTypeForString('DAMAGE_DEATH'), false)

Notice that this is even with the "e" change to halve the blight effect from population. Im working on figuring out where the extra unhealthiness is coming from.
 

Attachments

  • blight1.jpg
    blight1.jpg
    195.3 KB · Views: 124
  • blight2.jpg
    blight2.jpg
    209.4 KB · Views: 142
  • blight3.jpg
    blight3.jpg
    193.5 KB · Views: 131
Yeah, Im just at a loss to figure out how. But I'll keep noodling on it. Thanks to you guys for being persistent enough to make sure I noticed it. We will get it fixed.
 
Yeah, Im just at a loss to figure out how. But I'll keep noodling on it. Thanks to you guys for being persistent enough to make sure I noticed it. We will get it fixed.

Awesome, at least we have some progress. Hopefully something will get figured out soon.
 
In the EventtriggerData from Blight I set bGlobal to 0 and it seems to work fine now.
 
Haven't checked this thread for some time.. as an Elohim player.. I am so waiting for patch e
 
In the EventtriggerData from Blight I set bGlobal to 0 and it seems to work fine now.

Turning off global means it will only trigger for one player. Are you sure it triggered at all for any player except player 0?
 
Sephi, was that the only change you made? If that change alone reduced the amount of Blight suffered by player 0 by causing Blight to only trigger for player 0, then that implies that Blight as currently implemented must be triggering more than once for player 0.

Kael, the code you posted looks fine but does not include the logic for selecting which player(s) Blight affects. doArmageddonBlight appears to be passed a player as its second argument, so I think it is called once per player it affects. The logic surrounding the call to doArmageddonBlight must select and pass players, and based on the result of Sephi's change I wonder whether it might be bugged to pass some players more than once.

(I've never worked with Python so I may be reading the code wrong, but I thought I'd offer the suggestion just in case I've gotten lucky.)
 
Turning off global means it will only trigger for one player. Are you sure it triggered at all for any player except player 0?
All cities on a 20 civs map had a blight effect all their units had a bit of damage after blight hit, so yeah I am pretty sure it works that way
 
When you say that your change makes it "work fine", are you talking about a significant reduction in Blight? (Significant, meaning greater than can be explained by random variance.) If it is causing a significant reduction then the current implementation might still contain a bug causing it to trigger more than once for some players.
 
"work fine" means that all health penalty values can now be explained by the calculation in doArmageddonBlight
 
I looked through everything I can find and I don't know why it would trigger exactly twice on player 0. But removing it as a global spell definitly fixed the problem so Im going to go with that. Thanks Sephi!
 
Is there anything other than the barb trait or a bug that would allow barbs to walk into a garrisoned fortification and become part of the stack for one turn? See thumbnail. Next turn, TumTum and his pal wandered off. Maybe they just wanted a couple of pints of ale. :crazyeye:
 

Attachments

  • 8-1-2009 3-10-03 PM.jpg
    8-1-2009 3-10-03 PM.jpg
    234.2 KB · Views: 92
You have the Nox Noctis. Use the reveal spell to allow units to become visible but it will cause the invisibility of the Nox Noctis to never work on that unit again.
 
You have the Nox Noctis. Use the reveal spell to allow units to become visible but it will cause the invisibility of the Nox Noctis to never work on that unit again.

Ha! I hate it when I set up a choke point garrison like that and forget to reveal my units.
 
You have the Nox Noctis. Use the reveal spell to allow units to become visible but it will cause the invisibility of the Nox Noctis to never work on that unit again.

Oh good. I was hoping it was me. Thanks for the explanation and sorry for the unnecessary post.
 
Top Bottom