thread starter pensoftware Apr 27 2009
+ PM | QUOTE | PERMALINK | REPORT
| Thesis Did you know that when you trade mesos you're being cheated? Yes, that's right! I can't believe it either! I might not be on purpose that Nexon has a little trouble with their mathematics. Background Information When you pay sales tax you multiple the base price by the tax + 1. So if you were paying for a $10.00 container of Propel, in Kansas the tax rate is about 7%, you would multiply 10 by 1.07. The ending result of that calculation is $10.70. By knowing a little algebra, you can get back to the original price with $10.70 by dividing by 1.07 (I'll explain the bolding later). And indeed, $10.70 divided by 1.07 is 10 or $10.00. Experimentation Now if you were to trade mesos in MapleGlobal (you can even try this yourself: WARNING: You will lose mesos from tax ) the method I used above won't work. Say you put up 200,000,000 mesos to pay for a Stormcaster Glove from a friend, and your friend wants EXACTLY 200,000,000 and you're nice and am willing to pay the tax. By doing the above formula you should need to pay 200,000,000 * 1.06 (6% tax on 100m+ and the * means multiply). The ending calculation for that is 212,000,000 mesos . Now here's the problem. After you press that trade button, the other player will only get 199,280,000 mesos . Not only does that make you and your friend unhappy that he's short by 720,000 mesos , but it also makes me unhappy. Why? Because Nexon implemented the calculations wrong! Instead of dividing by 1.06 , Nexon multiplied by 0.94 . So if you wanted your friend to actually get 200m using the current system, you will need to trade 212,765,957.4468 mesos , which not only is based on a flawed formula but it's also cheating you out of your mesos! You should, using proper math, only need to trade 212m, not 212m and 765k extra! Conclusion Nexon needs to fix this bug. I will even be nice to explain how to fix this in the coding. In the trade function it looks something like this (psuedo-code): Trade(items p1items[], int p1mesos, items p2items[], int p2mesos, player p1, player p2) { for (i=0; i<p1items.length(); i++) { p2.giveItem(); } p1.giveMesos(Tax_Trade(p2mesos)); for (i=0; i<p1items.length(); i++) { p2.giveItem(); } p2.giveMesos(Tax_Trade(p1mesos)); } Tax_Trade(int mesos) { ... // stuff concerning mesos amounts below 100m if (mesos >= 100000000) { return mesos*0.94; } } To fix the problem, Nexon needs to change the bolded part above to: return mesos/1.06; Final Statements I hope this gets fixed soon as people are being cheated out by a flawed formula EVERY day! Edit #1 People are saying that 0.94 and 1.06 are the same thing, it's not. Try it yourself. Edit #2 People are saying that I'm not including the 12m I just added, but I am. I am dividing 212,000,000 BY 1.06 to get what it would be after it's taxed. Edit #3 Here is someone intelligent!: MESSIAA2003 said: "Really, the math depends on how you view the tax. Because the TS is comparing the system to how tax works in the real world, he is taking 200m, the original |