FLEECING the AI for gold!

This reminds me of the disconnect - reconnect trick in CIV3, although I think in CIV3 this was much more gamebreaking than in CIV4. I was once had 750 gpt (no population limiting gpt) coming from me from one AI alone. One thing to note though is that this was on Sid or Deity level, this trick was of no use below those levels, as I asume still holds true for CIV4 since
an emperor AI will almost never reach a population of 100 any games the player is going for domination or conquest.

Therefore, if you supply the AI with 200 gpt, the same turn or the turn after it will still say they only have 5 gpt for trade, because they can't trade away more than 10% of their population. At least in my world builder tests it couldn't- please correct me if I'm wrong. I guess you could let a vassal get pretty big and extort money from him in a late game space race to uppen your tech speed, but I prefer the good ol' cavalry wars.

Also, if you're already winning your games, why start using this?
 
It's actually very easy to explain. Set your sliders to 0%, trade away a lone resource plus your max GPT. The AI will then have the GPT you are giving them available for trade, which you take in return for whatever else you can trade them. Then you pillage the resource in the original trade, automatically cancelling the GPT you were giving them.

So the AI is now paying for the trade and has a large deficit every turn, which they would never otherwise have because they will only trade away surplus GPT. Cripple their research and nearly double yours. If you are able to do this with every AI, you've basically turned down the difficulty several levels.

Problem: If you give away the max possible GPT, the AI may reset its sliders and the gold you gave away may not be available to trade.
 
The exploit has been attempted to be fixed. The AI readjusts its gold target in the player's (!) turn - that includes sliders (culture/espionage too), worked tiles and so on, if any trade includes gold/turn.

While it works in some cases, it totally stops when the AI has enough gold surplus. The tactic is increasingly cheap and requires only currency tech and spare resources.

To add salt to the would even if the AI was actually smart to cancel deals and not go into unfavorable ones - it'd be impossible to cancel the deal where it buys the goods. While the human is "smart enough" to know it's possible to pillage a resource to prematurely end the trade.

What really makes it an exploit in my understanding is the failed attempt (but made) to be addressed, YES it has been attempted to be addressed.
 
Problem: If you give away the max possible GPT, the AI may reset its sliders and the gold you gave away may not be available to trade.

Yeah, unless you give enough and there is surplus then on w/ each decreasing trade the AI readjusts targets and it ends in the starting position w/ all the "donation" emptied & one click away from 'pillage'
 
Instead, what is happening in this strategy is that the AI is failing to recognise a dependency between the trades in steps 1 and 2 above – something that is explicitly recognised by the human – and the AI isn't cancelling the trade(s) in step 2 when the human triggers the cancellation of the trade in step 1. IMHO, that is a very different issue

There is no actual dependency. The AI made (according to its perception) two fair-value trades. If it runs out of money the deals would be canceled I'm pretty sure, since it is unable to pay the gold/turn (similar to losing a resource). The subsidy only became necessary as a result of arbitrary logic in cutoffs of how much is offered at any one point in trade; however this is far from the only deal where the AI can be made to do something harmful to itself in trades, and the true difference in end-result is negligible. An argument that utterly screwing the AI one way in trades is different from another using no cheats and only in-game inputs in both cases is strictly semantics. You are abusing the AI either way.

If we were consistent, all exploits should be allowed.

Indeed.

What really makes it an exploit in my understanding is the failed attempt (but made) to be addressed, YES it has been attempted to be addressed.

No putting words in other people's mouths. As far as we know, this is exactly what they intended. Heck, one of the few times they publicly admitted a mistake (overflow bug in 3.19) they didn't even fix it. Dev intent guesses when they're willing to tell us that defending ourselves militarily is AI abuse? That's not going to hold a lot of weight I'm afraid.

Problem: If you give away the max possible GPT, the AI may reset its sliders and the gold you gave away may not be available to trade.

On difficulties where the AI actually can field a decent amount of gold/turn available, it pays sufficiently little in maintenance that it probably wouldn't be all that hard to subsidize it over 100%.
 
TMIT, I can read the code. I do that pretty much for living. The code is quite obvious, you can even call it lame but still obvious. There is that added line to recalculate gold target. Just, the fix doesn't deliver.

Just to make sure I am not pulling stuff out of my... (sources below - w/ diff )
Valinalla:

Code:
void CvPlayer::changeGoldPerTurnByPlayer(PlayerTypes eIndex, int iChange)
{
	FAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");
	FAssertMsg(eIndex < MAX_PLAYERS, "eIndex is expected to be within maximum bounds (invalid Index)");

	if (iChange != 0)
	{
		m_iGoldPerTurn = (m_iGoldPerTurn + iChange);
		m_aiGoldPerTurnByPlayer[eIndex] = (m_aiGoldPerTurnByPlayer[eIndex] + iChange);

		if (getID() == GC.getGameINLINE().getActivePlayer())
		{
			gDLL->getInterfaceIFace()->setDirty(GameData_DIRTY_BIT, true);
		}
	}
}

Beyond the sword
Code:
void CvPlayer::changeGoldPerTurnByPlayer(PlayerTypes eIndex, int iChange)
{
	FAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");
	FAssertMsg(eIndex < MAX_PLAYERS, "eIndex is expected to be within maximum bounds (invalid Index)");

	if (iChange != 0)
	{
		m_iGoldPerTurn = (m_iGoldPerTurn + iChange);
		m_aiGoldPerTurnByPlayer[eIndex] = (m_aiGoldPerTurnByPlayer[eIndex] + iChange);

		if (getID() == GC.getGameINLINE().getActivePlayer())
		{
			gDLL->getInterfaceIFace()->setDirty(GameData_DIRTY_BIT, true);
		}
[b]
		if (!isHuman())
		{
			AI_doCommerce();
		}[/b]
	}
}
 
TMIT, I can read the code. I do that pretty much for living. The code is quite obvious, you can even call it lame but still obvious.

There's no indication the code isn't working exactly as intended (in fact, in absence of word otherwise it's a bit silly to assume it isn't!). This "abuse" is more difficult to do than before and the AI changes its offerings.

#WorkingAsIntended :D
 
@bestsss

I think the problem here is that you first give them enough money so they don't have to touch sliders and then just take the gold with pillaging your own resource which was given together with the gold subsidy.

Much safer solution, if the intent was to cap the amount of gpt player can get, is to count the amount of gpt another team already gets in trades and just don't give more even if you have money.

The code puts a cap, but cap on /trade basis, not /trades basis.
 
@bestsss

Where did you find Vanilla SDK? I want it, I want it! I didn't find it anywhere in my folders.
Many stuff I want to resolve like war weariness as a prime example.
 
@Tachywaxon

You can get it online in few locations, for instance (Search function is your best friend):
http://civ4betterai.svn.sourceforge.net/viewvc/civ4betterai/firaxis/
https://civ4-wfb.googlecode.com

@vranasm
Well, the proper way would be subtracting the pure gold received by the other side negotiating.
As far as I am concerned TMIT (and the original exploit) used to use the technique by giving small amounts and the applied fix may actually work in such cases.
I knew about the fix, hence the circumvent. Giving large lumps don't matter even if the AI is in financial trouble and doesn't wish to buy stuff, so unless there is a way to revoke the trade there is some risk involved, they just didn't think of the forcible resource pillage (or other way to cancel the trade). You can not (would not?) just give away all your gold and put cities to build wealth (if need be) - there is risk.
I believe exploits, security flaws should be made public. So, they can not be addressed instead taken benefit from - that includes serious software as well.

With the ability to cancel the freebie trade at close to zero cost -- it's an exploit as there is absolutely no risk at all for potentially substantial reward.
 
you welcome; next time try "Vanilla CvPlayer.cpp" - generally use some of the names of the files if you look for source, works every time.
 
There is no actual dependency. The AI made (according to its perception) two fair-value trades. If it runs out of money the deals would be canceled I'm pretty sure, since it is unable to pay the gold/turn (similar to losing a resource).

Of course there's a dependency! :lol: You give the AI x GPT in stage 1 and then perform a series of trades in stage 2 - in which the sole objective is to sell it resources to take back from the AI the very same x GPT you gave it in step 1. If you can't - or choose not to - see however, that the ability of the AI to enter into trades which give you GPT in step 2 is influenced by the fact that you have given the AI GPT in step 1, then I'm sorry, I can't help you. :lol:

However, as you point out in your very own post, the issue is that the AI doesn't see this dependency. It merely thinks it has entered into two separate trades. When you cancel one trade by then pillaging your lone resource, the AI simply doesn't understand that the only reason it was able to enter into the trades in step 2 in the first place was because you gave it the GPT in step 1. Instead of responding to the pillage by therefore cancelling the second trade, it instead tries to adapt, to find the GPT from other sources, or sees its pot of gold gradually diminish.

And the fact that the AI might eventually cancel these second stage trades when its gold eventually reaches zero is absolutely no defence whatsoever. Assuming the AI does indeed cancel the second trade at that point, all it's done is prevent itself from going into bankruptcy. What about all the gold however that the AI's lost to the human player prior to getting to that point - or are you ignoring that particular wealth transfer? :lol::lol::lol:
 
I think it could be addressed by simply remove from player ability to pillage resource required for trade. Does BUFFY includes better AI? If yes, such fix could be included in next version.
 
@GKey, you pillage the road instead, it's more efficient and takes only 2 worker turns.
Like I've told: The proper change would be to subtract the gold received by the negotiating party.
And BUFFY does not include better AI (i.e. no AI alternations).
 
About pillaging roads inside our own culture: wasn't this blocked since CivIII because of cancelling trades abuses before the counter ends?
 
I feel like if TMIT hadn't posted this phrased as flame-bait it would be a total nothingburger. This is a trick that people have been talking about on this forum for a while. Yes, it exploits loopholes in the AI, but so do a lot of things, and that's fine. Honestly with the advantages the AI has a high levels you kind of have to exploit to win.

I don't do this, but I also don't do a lot of things (really sophisticated tech brokering, worker stealing, low-level city micromanagement, etc.) that would help me win. This is because I prefer playing sloppily on Immortal and winning sometimes to playing on Deity, and I am a sloppy enough player that I would totally forget to rebuilt the resource. If you are super-good about worker management, city micro, tech brokering, etc you should definitely also be using this trick. If you don't care, or enjoy the game more if you don't use the trick, don't use it.

The only place where this matters is competitions: the HOF. And the HOF is so heavily exploited by mapfinder that it's hard to complain about a relatively minor trick.
 
It is but you can use roads that are outside the culture. Indeed, more inconvenient but quite still possible. Also you can use resources traded to you that you're able to cancel and so on. There are ways to revoke trades and pillage the resource in question comes as the most brutally obvious.
 
Tested it in IU 90. Underwhelming.

The problem is that there just aren't very many unique copies of resources AI doesn't have, and while there are generally a few, the AI doesn't have enough pop to be worth more than 5-7 gold early on most of the time. The larger the AI, the more potential gold (more pop) but then the more resources it has also, limiting the actual #trades you can pull off.

You're looking at 6-12 extra :gold: than you'd otherwise have from trades early game, tops, unless you rush out a huge tract of land and gain lots of resources people don't have.

Somewhat comically, if you rush out "too much" land before applying this you won't have enough gold to subsidize :lol:! This "exploit" has a ton of very real limitations after all.
 
This isn't as bad as the super early Currency selling of crap like Myst on deity for 200+ gold in the early BCs, and when you do this to every single AI that you can netting 1500+ gold over a couple turns it's a bit abusive.
 
Top Bottom