[MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Post Reply
User avatar
Matterom
Posts: 397
Joined: Thu, 20. Aug 09, 08:17
x4

[MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by Matterom » Sat, 23. Feb 19, 06:04

This is a small taste of a fairly large work in progress mod. Many features are not implemented or even coded. This is the framework step for a lot of work and should be treated as such
Simply put this is a featureset for Sector Administration, Taxation and Automation. Set it up and forget it.
This release is intended to Test and Acquire feedback on the rates and balancing of the taxation feature ONLY.

DISCLAIMER: THIS IS HEAVY WORK IN PROGRESS AND SHOULD NOT BE USED ON A PRIMARY SAVE AND SERVES ONLY AS A PROOF OF CONCEPT, BUGS AND LACK OF FEATURES SHOULD BE EXPECTED AND IN THE CASE OF THE FORMER REPORTED HERE

Getting Started
Talk to a manager on a station that has an Administration module in a sector that you own
Select the "Sector Administration Option"
and then select the option "Assign 'This NPC' as Sector Administrator"
You will then be moved to a menu that lets you set your tax options or unassign the administrator.

NOTE: This mod uses a modified version of my Station Manager Credit Transfer, So if you have that mod you can remove it. Additionally this mod disables the default credit transfer ( well both do ) Options for this are within the Budget options tab when speaking to a manager, Credits will be automatically Transferred to the "Sector Administrator" if within a sector with one.

Features Implemented:
  • Station's with managers will be forced to pay a tax periodically
  • This Tax Varies based on faction
  • Mods that add custom factions may setup their own taxing logic using global variables
TODO Features:
  • Immediate plans for a 1.0:
    • Perks/Flags [Require sugjestions]
    • Resistance values, Overtaxing Penalties and Not Paying Tax Penalties.
    • Balancing based on feedback
    • Sector Administrators
    • Tax Breaks based on factors including but not limited to, Newly constructed Station, Ships Patrolling Sector, Killing Hostiles of the parent faction.
  • Future
    • Flesh Out Sales Tax (Note, May ruin current compatibility with trade mods. will see what i can do.)
    • Replace Destroyed Ships assigned to station
    • Sector Mine layers
    • Support for Faction Funds
    • "Civilian Faction" that builds stations to be taxed. [ Optional Addon ]
    • Player Perks/Flags (Player empire skill tree as it were.)
Known Bugs:
  • There is many placeholder text for future features.
  • Not all stations are recognized for taxes
  • Unmanned stations are not taxed.
Compatibility/Modding Notes:
This system is intended to be flexible enough to be put into any redesign, rework, re-balance, whatever you want to call it. I heavily change only 1 vanilla file (trade.station) and tack on a bit to manager conversations.
If someone was wishing to rebalance this mod, all they would need to do is perform the following check a little after loading the game and it will overwrite my default setup.
Spoiler
Show

Code: Select all

<do_if value="global.taxesInitialized">
	<set_value name="global.$taxtable" exact="table[
		{faction.player} = table[{'$flags'} = [], {'$prop'} = 0.005, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.alliance} = table[{'$flags'} = [], {'$prop'} = 0.005, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.antigone} = table[{'$flags'} = [], {'$prop'} = 0.004, {'$sales'} = 0.006, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.argon} = table[{'$flags'} = [], {'$prop'} = 0.007, {'$sales'} = 0.006, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.civilian} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.criminal} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.hatikvah} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.holyorder} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.khaak} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.ministry} = table[{'$flags'} = [], {'$prop'} = 0.003, {'$sales'} = 0.002, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.ownerless} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.paranid} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.01, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.scaleplate} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.smuggler} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.teladi} = table[{'$flags'} = [], {'$prop'} = 0.003, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.visitor} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.xenon} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]]
	]"/>	
</do_if>
For mods that add new factions, you can simply add the following cue to your mod to initialize a new faction if you wish to support this mod.
Spoiler
Show

Code: Select all

<cue name="FactionTaxInitSample">
	<conditions>
		<check_any>
			<event_object_signalled object="player.galaxy" param="'TaxInit'"/>
			<check_all>
				<event_game_loaded/>
				<check_value value="global.$TaxesInitialized?"/>
			</check_all>
		</check_any>
	</conditions>
	<actions>
		<!--Define a flag to be added-->
		<set_value name="global.$flagtable.{'$FlagName'}" exact="table[
			 {'$type'} = 'prop_mod',
			 {'$mod'} = -0.1
		]"/>
		
		<!--Define a Faction NOTE: Flags/Sales partially implemented, Resist/Tariffs/Wares Not Implemented at all yet-->
		<set_value name="global.$taxtable.{faction.YOURFACTION}" exact="table[
			{'$flags'} = ['$FlagName'],
			{'$prop'} = 0.00,
			{'$sales'} = 0.00,
			{'$resist'} = 1, 
			{'$tariffs'} = table[], 
			{'$wares'} = table[]   
			]"/>
	</actions>
</cue>
And now some explanation as to what each variable does, or should do, as not all of this is in/finished/working.

$flags: Flags are intended to be a special modifier on certain NPC/AI Features. Some working concepts include 'Tithes' which increase local hostility against the station that was unable to pay it's tax. 'shrewd' which pays 10% less in sales taxes. 'Democratic' where the exponential curve for being overtaxed is doubled. partially implemented

$prop: ex 0.005 or 0.5% of a station's value per Hour. This cash is transferred to the local owning faction's Sector Administrator.

$sales: ex 0.005 or 0.5% of a transaction's profits. Why profits? Because it represented the best possible temporary solution to test the feature. In the future when i can apply this to the search for trade logic i may change this to total... and actually sales price. As for now it's simply a test. pending implementation

$resist: ex ( a value between 0 and 1) The Resist Value denotes the Highest allowed rate of tax that a given faction will allow. Higher Over this is an exponential increase in "Hostility". This is mitigated by doing your job as a land lord and supplying enough ships or defenses to defending the sector against hostiles, Xenon ect. Unimplemented

$tariffs: ex {faction.argon} =( a value between 0 and 2) . This represents the relational aspect between 2 factions. A faction with a tariff rating of 2 will charge 200% the normal tax rate to ships trading at their stations Whereas a value of 0.5 will denote half the base rate.Unimplemented

$wares: Basically, Tarrifs but on wares.. Very Unimplemented until i can find a decent solution to set it up for the player


Change Log:
Spoiler
Show
v0.01 Initial testing Release
Some feedback that i am looking for:
  • How fair is the taxes, Should they be raised or lowered
  • How do you feel the tax rates for each of the factions are
  • What would be some good "flags" i can assign to the different factions.
  • If taxing actually works.. hard to test myself because i'm bad at the game and build small, i'm basically outsourcing some testing with this.
  • Suggestions, i've hit a creative wall. this took nearly 2 months to figure out and i rewrote it about 5 times.
All the debug text is enabled for now if you want to look at that mess and notify me if something is amiss

DISCLAIMER: THIS IS HEAVY WORK IN PROGRESS AND SHOULD NOT BE USED ON A PRIMARY SAVE
THE CURRENT RATES MAY BE TO SMALL OR TOO LARGE FOR CERTAIN STATION TYPES, THERE IS NO CONSEQUENCE YET BUT CASH WILL BE REMOVED FROM A STATION
Downloads: Download from Google Drive
Report Issues to: Github
My Mods:
Sector Administration: A Tax Mod
Standalone Station Manager Credit Transfer: A vanilla alternative and replacement
1.6 Simple Order Fixes: Small fixes for version 1.6 AI
Simple Carrier Repair: Small Carrier Repair

nickolaiproblem
Posts: 214
Joined: Tue, 6. Nov 18, 00:12
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by nickolaiproblem » Sun, 24. Feb 19, 02:39

Matterom wrote:
Sat, 23. Feb 19, 06:04
This is a small taste of a fairly large work in progress mod. Many features are not implemented or even coded. This is the framework step for a lot of work and should be treated as such
Simply put this is a featureset for Sector Administration, Taxation and Automation. Set it up and forget it.
This release is intended to Test and Acquire feedback on the rates and balancing of the taxation feature ONLY.

DISCLAIMER: THIS IS HEAVY WORK IN PROGRESS AND SHOULD NOT BE USED ON A PRIMARY SAVE AND SERVES ONLY AS A PROOF OF CONCEPT, BUGS AND LACK OF FEATURES SHOULD BE EXPECTED AND IN THE CASE OF THE FORMER REPORTED HERE

Getting Started
Talk to a manager on a station that has an Administration module in a sector that you own
Select the "Sector Administration Option"
and then select the option "Assign 'This NPC' as Sector Administrator"
You will then be moved to a menu that lets you set your tax options or unassign the administrator.

NOTE: This mod uses a modified version of my Station Manager Credit Transfer, So if you have that mod you can remove it. Additionally this mod disables the default credit transfer ( well both do ) Options for this are within the Budget options tab when speaking to a manager, Credits will be automatically Transferred to the "Sector Administrator" if within a sector with one.

Features Implemented:
  • Station's with managers will be forced to pay a tax periodically
  • This Tax Varies based on faction
  • Mods that add custom factions may setup their own taxing logic using global variables
TODO Features:
  • Immediate plans for a 1.0:
    • Perks/Flags [Require sugjestions]
    • Resistance values, Overtaxing Penalties and Not Paying Tax Penalties.
    • Balancing based on feedback
    • Sector Administrators
    • Tax Breaks based on factors including but not limited to, Newly constructed Station, Ships Patrolling Sector, Killing Hostiles of the parent faction.
  • Future
    • Flesh Out Sales Tax (Note, May ruin current compatibility with trade mods. will see what i can do.)
    • Replace Destroyed Ships assigned to station
    • Sector Mine layers
    • Support for Faction Funds
    • "Civilian Faction" that builds stations to be taxed. [ Optional Addon ]
    • Player Perks/Flags (Player empire skill tree as it were.)
Known Bugs:
  • There is many placeholder text for future features.
  • Not all stations are recognized for taxes
  • Unmanned stations are not taxed.
Compatibility/Modding Notes:
This system is intended to be flexible enough to be put into any redesign, rework, re-balance, whatever you want to call it. I heavily change only 1 vanilla file (trade.station) and tack on a bit to manager conversations.
If someone was wishing to rebalance this mod, all they would need to do is perform the following check a little after loading the game and it will overwrite my default setup.
Spoiler
Show

Code: Select all

<do_if value="global.taxesInitialized">
	<set_value name="global.$taxtable" exact="table[
		{faction.player} = table[{'$flags'} = [], {'$prop'} = 0.005, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.alliance} = table[{'$flags'} = [], {'$prop'} = 0.005, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.antigone} = table[{'$flags'} = [], {'$prop'} = 0.004, {'$sales'} = 0.006, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.argon} = table[{'$flags'} = [], {'$prop'} = 0.007, {'$sales'} = 0.006, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.civilian} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.criminal} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.hatikvah} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.holyorder} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.khaak} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.ministry} = table[{'$flags'} = [], {'$prop'} = 0.003, {'$sales'} = 0.002, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.ownerless} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.paranid} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.01, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.scaleplate} = table[{'$flags'} = [], {'$prop'} = 0.001, {'$sales'} = 0.001, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.smuggler} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.teladi} = table[{'$flags'} = [], {'$prop'} = 0.003, {'$sales'} = 0.003, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.visitor} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]],
		{faction.xenon} = table[{'$flags'} = [], {'$prop'} = 0.000, {'$sales'} = 0.000, {'$resist'} = 1, {'$tariffs'} = table[], {'$wares'} = table[]]
	]"/>	
</do_if>
For mods that add new factions, you can simply add the following cue to your mod to initialize a new faction if you wish to support this mod.
Spoiler
Show

Code: Select all

<cue name="FactionTaxInitSample">
	<conditions>
		<check_any>
			<event_object_signalled object="player.galaxy" param="'TaxInit'"/>
			<check_all>
				<event_game_loaded/>
				<check_value value="global.$TaxesInitialized?"/>
			</check_all>
		</check_any>
	</conditions>
	<actions>
		<!--Define a flag to be added-->
		<set_value name="global.$flagtable.{'$FlagName'}" exact="table[
			 {'$type'} = 'prop_mod',
			 {'$mod'} = -0.1
		]"/>
		
		<!--Define a Faction NOTE: Flags/Sales partially implemented, Resist/Tariffs/Wares Not Implemented at all yet-->
		<set_value name="global.$taxtable.{faction.YOURFACTION}" exact="table[
			{'$flags'} = ['$FlagName'],
			{'$prop'} = 0.00,
			{'$sales'} = 0.00,
			{'$resist'} = 1, 
			{'$tariffs'} = table[], 
			{'$wares'} = table[]   
			]"/>
	</actions>
</cue>
And now some explanation as to what each variable does, or should do, as not all of this is in/finished/working.

$flags: Flags are intended to be a special modifier on certain NPC/AI Features. Some working concepts include 'Tithes' which increase local hostility against the station that was unable to pay it's tax. 'shrewd' which pays 10% less in sales taxes. 'Democratic' where the exponential curve for being overtaxed is doubled. partially implemented

$prop: ex 0.005 or 0.5% of a station's value per Hour. This cash is transferred to the local owning faction's Sector Administrator.

$sales: ex 0.005 or 0.5% of a transaction's profits. Why profits? Because it represented the best possible temporary solution to test the feature. In the future when i can apply this to the search for trade logic i may change this to total... and actually sales price. As for now it's simply a test. pending implementation

$resist: ex ( a value between 0 and 1) The Resist Value denotes the Highest allowed rate of tax that a given faction will allow. Higher Over this is an exponential increase in "Hostility". This is mitigated by doing your job as a land lord and supplying enough ships or defenses to defending the sector against hostiles, Xenon ect. Unimplemented

$tariffs: ex {faction.argon} =( a value between 0 and 2) . This represents the relational aspect between 2 factions. A faction with a tariff rating of 2 will charge 200% the normal tax rate to ships trading at their stations Whereas a value of 0.5 will denote half the base rate.Unimplemented

$wares: Basically, Tarrifs but on wares.. Very Unimplemented until i can find a decent solution to set it up for the player


Change Log:
Spoiler
Show
v0.01 Initial testing Release
Some feedback that i am looking for:
  • How fair is the taxes, Should they be raised or lowered
  • How do you feel the tax rates for each of the factions are
  • What would be some good "flags" i can assign to the different factions.
  • If taxing actually works.. hard to test myself because i'm bad at the game and build small, i'm basically outsourcing some testing with this.
  • Suggestions, i've hit a creative wall. this took nearly 2 months to figure out and i rewrote it about 5 times.
All the debug text is enabled for now if you want to look at that mess and notify me if something is amiss

DISCLAIMER: THIS IS HEAVY WORK IN PROGRESS AND SHOULD NOT BE USED ON A PRIMARY SAVE
THE CURRENT RATES MAY BE TO SMALL OR TOO LARGE FOR CERTAIN STATION TYPES, THERE IS NO CONSEQUENCE YET BUT CASH WILL BE REMOVED FROM A STATION
Downloads: Download from Google Drive
Report Issues to: Github
Can I set the what faction my sector affliated with. For example if I am with HOP the paranid will attack me or if I am with ant or argon I will be attacked by HOP

User avatar
Matterom
Posts: 397
Joined: Thu, 20. Aug 09, 08:17
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by Matterom » Sun, 24. Feb 19, 02:48

nickolaiproblem wrote:
Sun, 24. Feb 19, 02:39
Can I set the what faction my sector affliated with. For example if I am with HOP the paranid will attack me or if I am with ant or argon I will be attacked by HOP
No, but i'll consider that as an optional feature after this is in a more complete state...

Also did you have to quote the entire post...?
My Mods:
Sector Administration: A Tax Mod
Standalone Station Manager Credit Transfer: A vanilla alternative and replacement
1.6 Simple Order Fixes: Small fixes for version 1.6 AI
Simple Carrier Repair: Small Carrier Repair

Falcrack
Posts: 1965
Joined: Wed, 29. Jul 09, 00:46
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by Falcrack » Thu, 11. Apr 19, 13:16

Sector Administration Department. So this is otherwise known as the SAD mod? :)

Just kidding, I like the idea of it. Good luck with this!

User avatar
ledhead900
Posts: 253
Joined: Mon, 15. Mar 04, 09:07
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by ledhead900 » Fri, 12. Apr 19, 11:47

I like the concept of tax, you may as well add the effects of a similar mod which taxs the player by paying wages to your staff/crew and station crew.

I do have a slight suggestion.
You say station managers pay tax, I believe this is not realistic and perhaps only stations which have habitat modules and the habitat modules give you taxable income.
Why charge a station with nobody living on it a tax, or implement both but habitats create a revenue stream from the tax.
*modified*
I lost my Hans to be flying Solo.
Image

Falcrack
Posts: 1965
Joined: Wed, 29. Jul 09, 00:46
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by Falcrack » Fri, 12. Apr 19, 15:32

There are many types of taxes that could be implemented.

-Property tax, which taxes the station owner based on the size of the plot. Or, the tax could be based on the number of modules (I prefer this).
-Tax the workforce on stations. So, the station owner would not necessarily feel the effects of such a tax. The workers would pay it, but they would not go bankrupt as workers and civilian would have "infinite" credits.
-General income tax for the not simulated but generalized sector population. Larger populations (such as around planets) would generate a higher income. Some sectors would thus be far more profitable to control.
-Sales tax. Each time someone buys something in a sector, they pay a sales tax on top of the purchase price. This should not apply to businesses that are simply moving goods between their own factories.

In all cases, the sector owner would be the recipient of such taxes. Factions would use this money to buy materials to build their ships and fight wars. It would make sense that with such a system of taxes, the stations in the various sectors are owned by private NPC corporations, rather than the faction itself (ie Argon, Teladi, etc). If the faction itself owns both the sectors, and all the stations too, then there would not really be much point to credits, since it would just be trading wares among itself.

repatomonor
Posts: 1280
Joined: Wed, 12. Sep 07, 19:01
x4

Re: [MOD][WIP] Sector Administration Department v0.01 Taxation Without Representation

Post by repatomonor » Fri, 12. Apr 19, 15:40

Don't forget the dreaded Jump Gate tax that the Teladi have put in place around their core systems :roll:
Image

Post Reply

Return to “X4: Foundations - Scripts and Modding”