As of 7.20,
We can observe our lovely mte shows wrong value as much as mostly wrong number.
EDIT: Great apology if I putted this in wrong section.... I thought I was making this on suggestion forums
I recalled story from Starsiege: Tribes and Bovidi's TVT (epic mod), if I recall it good, that game also used 16bit to communicate.
And... on that mod it happened if You had very much of items, the game showed "power to" (eg. 5,12531e+5). The creator of mod fixed it clientside making small script to tell game to change those settings.
So heres my small tip (or even useless, Im not a programmer). When mte reaches its peak of 16bit value, when going on minus, a client-side script would check if power on mte is larger than max value (32k), and on yes, do proper math things to show client-side correct number. Or even, a simpler, if received value <0 just to change bug value to correct one via math equation. and of this 3k output, I think its just incorrect number on MTE properties?
I've experienced MSFU is bugged too, but instead of standard bug like above, it resets its output to 0 when reached another limitation (this time from negative value).
This would require server-side patch to add additional 30/50/60k count. And except the standard EU storage, it would send (player-invisible) count showing how many times it gone back to 0 EU and started over fill itself (for client-side). The client-side script would catch that value, multiply it back by 30/50 or 60k and add the rest which didnt fit (and changing if needed negative value to positive).
I think that would prove good work-around on those choke'y 16bit. Since I think no one understands me, I allow myself to pseudo-script.
MTE: " going to -32768 EU once it reaches 32768 EU" // -5536 = 60000
Client receiving >=0 EU form MTE => Do nothing/Show that number.
Client receiving <0 EU from MTE => Do this equation: ( 2*32768 )+(recived negative value) => Show result as EU count. //Tadah! 2*32768-5536 gives 60000. Hoorah!
MSFU:
Example: it have 1845500 EU. Server additionally (not instead of standard, to not brake EU sending things). will calculate it as:
X/30k = 61.516667 => 61X + 15500.01 EU (where X is 30000 but server should operate on X) and send 2 values: 15500.01 and 61.
Client requested EU value in MSFU. instead of getting looped 16bit values. It would revice that numbers above.
And transform it back: 61X + 15500.01 -> transform X back to 30k -> 61*30k + 15500.01 => 1845500.01 => MAGNIFICENT!
Much simpler thing: If 16 bit can handle such numbers: let it change EU to "power of" ive told You on beggining: make this 1845500 = 1,845500 * 10^6.
PC language: 1,8455+e6. Number of power should be sent as X, and client reciving this would get 2 numbers: 1,8455 and 6, making 1,8455 *10^6 => guess what? :>
I am pretty sure You guys are smarter than me but I just wanted to suggest a little work on code, efficent fix. The side effects are probably little more lag (sending 2 values instead of 1 and on MSFU it have to hold and calculate additional value X and its rest). But I think this could work. I would fix MTE myself if I'd have required Java knowlegde...
Hope this will help a bit... If not, damn...