• We are currently performing site maintenance, parts of civfanatics are currently offline, but will come back online in the coming days (this includes any time you see the message "account suspended"). For more updates please see here.

Zero-Tax Strategy Suggestion

Freddy K

Chieftain
Joined
Oct 5, 2008
Messages
49
Update: This strategy works brilliantly, but it is a kind of an exploit, since warehouse expansion sales don't count towards tax increases, even though they are subject to tax as well es trade embargos. /Update

Currently there are many rumours ghosting around regarding tax-increases, the King's volatile mood and the strange smell of his pinkie.

So to find out whether or not tax raises are tied to trading volume, the number of trades or cash flow I will take the liberty to suggest the following strategy.

Goal: Not buy or sell anything from the home country (other than units) and see how fast tax increases (or whether or not it increases at all).

Strategy: Build and fill up Cathedrals, produce tools, arms and horses to trade with the natives or other nations. Donate treasures to natives (is it even possible?).

Alternative 1: Build warehouse extensions, to sell goods for half the price and see if it triggers tax increases.

Alternative 2: Protest every tax increase (should they crop up eventually) and see if warehouse extensions can still sell those goods. (Nope they can't.)

Alternative 3: Donate all your goods to natives once they run out of gold for trade, and see if you can persuade them into attacking other nations.

It is a fun sandbox strategy, which may not be very competitive, but it could confirm or disprove some of the existing rumours.
Will this work? Does anyone care to try?
 
Actually it's easier to find out by just looking into the SDK:

Spoiler :
//do tax rate change
if (!isInRevolution())
{
PlayerTypes eParent = getParent();
if (eParent != NO_PLAYER)
{
if (getHighestTradedYield() != NO_YIELD)
{
int iTotalTraded = 0;
for (int i = 0; i < NUM_YIELD_TYPES; i++)
{
iTotalTraded += getYieldTradedTotal((YieldTypes) i);
}

//modify the traded threshold
int iMultiplier = 100;
for (int iTrait = 0; iTrait < GC.getNumTraitInfos(); ++iTrait)
{
TraitTypes eTrait = (TraitTypes) iTrait;
CvTraitInfo& kTrait = GC.getTraitInfo(eTrait);
if (hasTrait(eTrait))
{
iMultiplier += kTrait.getTaxRateThresholdModifier();
}
}
iMultiplier += getTaxRate() * GC.getDefineINT("TAX_TRADE_THRESHOLD_TAX_RATE_PERCENT") / 100;
iMultiplier += GET_PLAYER(eParent).AI_getAttitudeVal(getID()) * GC.getDefineINT("TAX_TRADE_THRESHOLD_ATTITUDE_PERCENT");

//compare total traded with trade threshold
if (iTotalTraded * 10000 > GC.getDefineINT("TAX_TRADE_THRESHOLD") * std::max(100, iMultiplier) * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getGrowthPercent())
{
//random chance to raise tax rate
if(GC.getGameINLINE().getSorenRandNum(100, "Tax rate increase") < GC.getDefineINT("TAX_INCREASE_CHANCE"))
{
int iOldTaxRate = getTaxRate();
int iNewTaxRate = std::min(99, iOldTaxRate + 1 + GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("TAX_RATE_MAX_INCREASE"), "Tax Rate Increase"));
int iChange = iNewTaxRate - iOldTaxRate;

if (isHuman())
{
CvDiploParameters* pDiplo = new CvDiploParameters(eParent);
pDiplo->setDiploComment((DiploCommentTypes)GC.getInfoTypeForString("AI_DIPLOCOMMENT_KISS_PINKY"));
pDiplo->addDiploCommentVariable(iOldTaxRate);
pDiplo->addDiploCommentVariable(iNewTaxRate);
pDiplo->setData(iChange);
pDiplo->setAIContact(true);
gDLL->beginDiplomacy(pDiplo, getID());
}
else
{
changeTaxRate(iChange);
}
}
}
}
}
}


If I understood it correctly, this takes into account only the total trade volume times 10000. If it exceeds a certain threshold - which I'm too lazy to really calculate it right now, it's a basic amount defined in the global defines xml modified by the current tax rate and such - there's a chance that the king will raise your taxes which is also defined in the same xml. This counts both buying and selling, and it looks only at the trade volume, not the value.

What you can deduce from this is that you want to sell high-value goods (duh!) and you might not actually want to buy much stuff like tools or guns from Europe because it counts towards your trade total (horses are another issue I'd say, they're so much of a fuss to create by yourself that it still makes sense to buy them). Try not to sell raw materials, either.

Small note of sloppy programming: stuff sold through the warehouse expansion doesn't seem to count towards your trade total, so if you want to get rid of excess raw materials, you may want to use that instead (only gives you half the money though).
 
This is the kind of hands-on reply I was hoping for. Thank you. Though I have trouble making sense of the code jibberish.

Mood as well as chance seem to factor in somehow. Which means keep the king happy and don't stockpile your gold ducats?

It may be interesting to sell via warehouse (to local smugglers) , for a de facto "50% tax" and no price deflation still.
 
Not having looked at the code I can't really say but if selling via the warehouse expansion is exempt from the tax raise code, wouldn't it be fair to assume that price fluctuation is also exempt from the warehouse expansion?

My point being that only selling silver through the warehouse expansion = keeping the price at 19/20 indefinitely(although with a 50% penalty, but still).

Of course, that's assuming that it works that way, I'm too lazy to start up a game to try it and too incompetent to check the files...
 
This is the relevant code snippet here (from CvCity::doYields())
Spoiler :
changeYieldStored(eYield, aiYields[eYield]);

if (GC.getYieldInfo(eYield).isCargo())
{
int iExcess = getYieldStored(eYield) - iMaxCapacity;
if (iExcess > 0)
{
int iLoss = std::max(GC.getDefineINT("CITY_YIELD_DECAY_PERCENT") * iExcess / 100, GC.getDefineINT("MIN_CITY_YIELD_DECAY"));
iLoss = std::min(iLoss, iExcess);
changeYieldStored(eYield, -iLoss);

int iProfit = getOverflowYieldSellPercent() * GET_PLAYER(getOwnerINLINE()).getSellToEuropeProfit(eYield, iLoss) / 100;
if (iProfit > 0)
{
GET_PLAYER(getOwnerINLINE()).changeGold(iProfit);

CvWString szBuffer = gDLL->getText("TXT_KEY_GOODS_LOST_SOLD", iLoss, GC.getYieldInfo(eYield).getChar(), getNameKey(), iProfit);
gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_BUILD_BANK", MESSAGE_TYPE_MINOR_EVENT, GC.getYieldInfo(eYield).getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), getX_INLINE(), getY_INLINE(), true, true);
}
else
{
CvWString szBuffer = gDLL->getText("TXT_KEY_GOODS_LOST", iLoss, GC.getYieldInfo(eYield).getChar(), getNameKey());
gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_DEAL_CANCELLED", MESSAGE_TYPE_MINOR_EVENT, GC.getYieldInfo(eYield).getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), getX_INLINE(), getY_INLINE(), true, true);
}
}

if (aiYields[eYield] > 0)
{
for (int i = 0; i < GC.getNumFatherPointInfos(); ++i)
{
FatherPointTypes ePointType = (FatherPointTypes) i;
GET_PLAYER(getOwnerINLINE()).changeFatherPoints(ePointType, aiYields[eYield] * GC.getFatherPointInfo(ePointType).getYieldPoints(eYield));
}

gDLL->getEventReporterIFace()->yieldProduced(getOwnerINLINE(), getID(), eYield);
}
}


So, no, it simply deducts the wares and gives the player the gold. It does, however, take into account any tax rate you might have in Europe when calculating the price, so if you have 50% tax you'll actually sell for 25% of the price.

Besides, the warehouse always sells 10% of the excess stuff with a minimum of 5 so if you produce something like 10 silver per turn you'll need 1300 silver in it to hit an equilibrium. Not sure if always selling silver via the expansion makes sense because of that but it's definitely an interesting idea.
 
Near the end game do taxes quite always get higher then 50%, so wouldn't it be a good long term startegy to sell all your goods throught the warehouse and keep tax at 0%. In the end shall you make more money by selling throught the warehouse then with europe(which can easily have 50%+ taxes).
 
Actually there are some nice FF who can convert your tax-rate into production ...

Lord Baltimore : crosses
La Fayette : muskets
Samuel Adams : bells
Thomas Paine : hammer

So once you switch from peace-time-economy to war-economy, a high tax-rate of 50-99% with the right FF can be very usefull.
 
Near the end game do taxes quite always get higher then 50%, so wouldn't it be a good long term startegy to sell all your goods throught the warehouse and keep tax at 0%. In the end shall you make more money by selling throught the warehouse then with europe(which can easily have 50%+ taxes).

Well the early phase of this game isn't as important as in Civ what with no techs and much less land-grabbing, but I think that leaving so many wares at home when you're still struggling to build up any significant economy hurts you more than paying 70% tax towards the end-game.
 
I tried it out on Marathon / Western Hemisphere Huge. It's a great strategy and probably the biggest exploit in the game so far. Here are a few things I noticed while employing this strategy:
- It's the only way to get an exponential economical growth as the prices drop quite quickly (add to that the king's taxes and after a few thousands tons sold of any given transformed product (cigars, rum, etc.) it may actually become more interesting to sell raw stuff (resp. tobacco, sugar, etc.))
- It helps you limit the number of ships you need to build for transferring goods
- It forces you to trade with Indians to generate Commerce Points (for commerce FFs) and even to build some in your cities
- It actually makes the raw material production bonuses FF a bit harder to get but actually interesting (in all my other games, by the time I could get +50% cotton or sugar, the prices were already so low it was the least of my care)
 
I tried it out on Marathon / Western Hemisphere Huge. It's a great strategy and probably the biggest exploit in the game so far. Here are a few things I noticed while employing this strategy:
- It's the only way to get an exponential economical growth as the prices drop quite quickly (add to that the king's taxes and after a few thousands tons sold of any given transformed product (cigars, rum, etc.) it may actually become more interesting to sell raw stuff (resp. tobacco, sugar, etc.))
- It helps you limit the number of ships you need to build for transferring goods
- It forces you to trade with Indians to generate Commerce Points (for commerce FFs) and even to build some in your cities
- It actually makes the raw material production bonuses FF a bit harder to get but actually interesting (in all my other games, by the time I could get +50% cotton or sugar, the prices were already so low it was the least of my care)
Hmm. Another thing you could try is whether the selling via the warehouse still works after declaring independence with democracy
 
In reply to Benfp,

I'm glad you tested it. All very interesting observations. Inspired by your refinements I started a game myself (marathon/huge/governor/Stuyvesant). I wanted 0% Tax, but couldn't resist buying guns at the beginning, and thus had to dump food/horses/tools/wood into the sea, before the king finally stopped asking and went about his business. He was furious :). Without lumber I couldn't even rush production any more, and it took a long time, to get the gun industry going, in order to be able to cater to the natives.
I also decided to let a lumber mill produce political points (25% stuyvesant bonus), which also slowed down comerce.
Cross production was a bit disappointing (no luck with preachers).
I combined this with the strategy of building many small towns (selling raw materials directly), as well as not occupying or buying any land from the natives. (At this point I suspect that they are wealthier this way.)

This probably is an exploit indeed, though it takes sacrifice and turn-time to really make it work.
 
Hmm. Another thing you could try is whether the selling via the warehouse still works after declaring independence with democracy

Selling via warehouse doesn't work after the DoI & democracy, nor does it work with goods banned from trade in general.

Losing all ships will result in a tax increase, which cannot be protested with a Tea Party.
 
Back
Top Bottom