2010-06-10, 01:24 PM (This post was last modified: 2010-06-12, 09:34 PM by Fiel.)
The Bag Conundrum
Many CBs and Shadowers tout, "The amount of damage done is not based upon total mesos, but upon bags. You get a bonus per bag." This is only partway true, assuming the formula is correct.
Here's how ME works in a nutshell, assume ME level 30:
1. You press the skill button
2. Maplestory looks at the hitbox for Meso Explosion. It then counts the number of bags you have dropped until it reaches 20 bags of mesos
3. Maplestory then attacks the enemy X amount of times, where X is equal to the number of bags. The number of attacks cannot be more than 15.
4. The damage of each attack is calculated by using the meso in each exploded bag (up to the 15th bag of mesos). So yes, the other 5 bags are wasted.
Another thing to notice is that dropping fewer mesos is far more efficient than dropping higher level of mesos. So because 5 bags of 10k easily outdamages 1 bag of 50k does not mean that there is a hidden bag bonus. Just that the calculation greatly disfavors 50k bags of mesos. As a matter of fact, the most efficient amount of mesos to drop for Meso Explosion is 1k bags.
The Formula
First of all, I want to give credit to ZakumSlayers for the formula which was discovered in the BMS data. Thank you for sharing this with the forum.
And max damage would be double this, assuming perfect results, so the damage range for 10 mesos at level 1 ME is 85 ~ 170
Now let's assume we drop 10 mesos at level 30 ME. The ratio variable would be the same. The only thing that would change here is the SkillData->nX value, which is 1000 at level 30:
[spoiler=What's the most efficient amount of mesos to drop?]
I'll be very simple about it. The answer is a 1k bag of mesos is the most meso-efficient drop. Anything more than this, and your mesos are not being used as efficiently as possible. Allow me to explain.
Let's assume you have level 30 ME. Here's how much damage you'd do at each amount of mesos considering you only drop one bag:
Mesos
Minimum Damage
Difference
100
518.87
200
905.66
386.79
300
1292.45
386.79
400
1679.25
386.79
500
2066.04
386.79
600
2452.83
386.79
700
2839.62
386.79
800
3226.42
386.79
900
3613.21
386.79
1000
4000.00
386.79
1100
4330.71
330.71
1200
4651.16
320.45
So, looking at this table above, we have to calculate how much of an advantage we receive for each additional 100 mesos. This difference is located in the "Difference" column above. You'll notice that the amount of damage you do is perfectly proportional to the mesos put in all the way up until you reach 1k mesos. Anything after that, and you start to lose damage/meso drastically. The reason for this is the formula given in the other spoiler. In the formula, there is a different formula used if the amount of mesos dropped is below 1k and a different formula for above 1k. The purpose of using different formulas for each of these ranges is so each additional meso put in the pile after 1k gives you a decreasing amount of damage/meso to prevent 50k bags of mesos from being too strong. It becomes self-evident that 1k bags of mesos is the most meso-efficient.
Graphing out this formula yields the following (note the following is MINIMUM damage/bag). Also note that this is ONLY CALCULATING ONE BAG OF MESOS.
Still needs to be tested though. No one has tested this formula yet, though I'm pretty sure it's accurate given the source. Also, while I'm fairly sure the formula is right, I still may be using it wrong, so it needs further testing.
If this formula's true, the optimum meso/damage is pretty easy:
10 mesos times 15 is the most efficient use of your mesos. (106 damage per meso, maxed)
You get 15 hits of just over 1k each for 150 mesos. It's not that practical though.
You can fool with the level/number of bags in column E, A is the total number of mesos (automatically filled in) and G tells you how many mesos per bag.
B & C are per-hit damage, F is the average over all hits.
Bags of 2800 will give you 90% of the damage you get from bags of 50,000... 1300 will give you 80%.
If you're dropping bags, 15 makes more sense, since total damage is based on # of mesos, and 15 takes less time than 20.
Thanks a lot Fiel, as always .
It'll help out lots of Shadowers/CDit out there, also on my progress of server sidded physical attack handling.
Twilight Wrote:BMS...unlocking all of MS's secrets.
The secret can be unlocked via an unpacked MapleStory.exe since the damage is also handled by the client for show then calculated by server for anti cheat purposes.
I don't think the part about the meso total is correct. Each bag deals a different amount of damage that is not tied only to the total amount of mesos dropped. If my memory serves me correctly, damage from Pickpocket coins is very noticeably less than damage from dropped bags, even if you explode them in the same attack. When training, there's usually have a lot of Pickpocket coins lying around, with a few meso bags from the monsters you were killing. Whenever I used ME, I saw a lot of little numbers from the Pickpocket coins, but there would always be a couple of numbers in the thousands from the bags.
The pointer to anMoneyAmount is incremented at the same time as the attack number.
So it's looking through an array of meso values, not using a single one for all 15 hits.
This code should be sufficient for 1 hit, 1 bag though. And I don't know how the meso array is populated.
Paraphrasing, slightly
dwDropFlag tells it which of the 15 drops (probably first x, for number of bags under 15) are valid.
I'll assume it's a boolean array of 15 bits, ie dwDropFlag[i] is ok pseudocode (easier than (1<<i)&dwDropFlag, imo)
Code:
for (int i=0,i<15,i++) {
if (dwDropFlag[i]) {
do Fiel's code on anMoneyAmount[i] and store to damage[i];
numberOfHits++;
}
}
Result being that some fraction of the 15 hits are populated with damage amounts.
There is one oddity I saw in the code...
It initializes 7 32-bit random variables.
It then loops through these to provide the damage random function.
So hit #1, #8 and #15 are gonna do the same damage. And so forth.
Anyway, the method for filling *anMoneyAmount needs to be clarified to have a full understanding of the skill. If it's taking into account 20 meso bags, it shouldn't just be the quantities of the first 15, and why would they repeat the total 15 times? (maybe it blows the last 5 just to be a plantain to people who drop hundreds of bags at once?)
The good part about this function is that it's only called from one other place. The problem is that I don't have the stuff filled out as well as ZakumSlayers, so it's harder for me to see struct/variable names like he does (though I can see class/method names).
Apologize for the double post, but I think this warranted it.
I calculated the following scenario, "Assuming you drop 20 bags of 10k or 50k and explode them all, which level of ME would give the greatest amount of damage for your meso?"
This is calculating the damage bag by bag and adding up the damage. The values displayed are the minimum amount of damage. The maximum damage is exactly double the value listed.
#
10k bags
50k bags
1
163,934
226,244
2
170,491
235.294
3
177,049
244,343
4
183,606
253,393
5
190,163
262,443
6
196,721
271,493
7
203,278
280,542
8
209,836
289,592
9
216,393
298,642
10
222,950
307,692
11
229,508
316,742
12
236,065
325,791
13
242,622
334,841
14
249,180
343,891
15
255,737
352,941
16
249,180
343,891
17
255,409
352,488
18
261,639
361,085
19
267,868
369,683
20
274,098
378,280
21
250,819
346,153
22
256,393
353,846
23
259,180
357,692
24
261,967
361,538
25
264,754
365,384
26
236,065
325,791
27
238,524
329,185
28
240,983
332,579
29
243,442
335,972
30
245,901
339,366
The answer is level 20 ME. That is the most cost efficient level for mesos. However, it might not be the most DPS efficient. Everything up to level 25 takes two explosions to fully wipe out all 20 bags. Level 26 and beyond only takes one explosion. So if you want to calculate by DPS, Maxing ME is your best bet since you only have to explode once and not twice. But level 20 is easily the meso efficiency champion.
10 mesos per bag nets the maximum 34.2 damage/meso. However, this is only 342 damage per bag, which isn't very exciting. It turns out that the damage/meso very quickly drops out to around 10, and then levels out to 8 as you approach 1000 mesos. Going past 1000, it starts to dip more rapidly again.
Spoiler
Mesos
Damage/Meso
10
34.150943396226
20
20.943396226415
30
16.540880503145
40
14.339622641509
50
13.018867924528
60
12.138364779874
70
11.509433962264
80
11.037735849057
90
10.670859538784
100
10.377358490566
200
9.0566037735849
300
8.6163522012579
400
8.3962264150943
500
8.2641509433962
600
8.1761006289308
700
8.1132075471698
800
8.0660377358491
900
8.0293501048218
1000
8.
1100
7.8740157480315
1200
7.7519379844961
1300
7.6335877862595
1400
7.5187969924812
1500
7.4074074074074
1600
7.2992700729927
1700
7.1942446043165
1800
7.0921985815603
1900
6.993006993007
2000
6.8965517241379
3000
6.0606060606061
4000
5.4054054054054
5000
4.8780487804878
10000
3.2786885245902
15000
2.4691358024691
20000
1.980198019802
25000
1.6528925619835
30000
1.4184397163121
35000
1.2422360248447
40000
1.1049723756906
45000
0.99502487562189
50000
0.90497737556561
Clearly the most reasonable amount is the turning point of 1000 mesos per bag. This produces 4000~8000 damage per bag, and there is virtually no reason to drop any less than that unless you don't need very much damage.
However, if you need to deal damage more quickly, it may be sensible to drop more than 1000 per bag, at a higher expense. For example, 10000 mesos per bag deals approximately 16400~32800 damage, which is 4 times more, at 10 times the cost.
Fiel, I don't understand. Why does exploding fewer bags at once make it more efficient?
I have never seen a ME formula before now. A few questions on that formula.
Is SkillData->nX the mastery written in the description times 10?
You said that mastery is always 0.5. That means randNum is always a pretty small number compared to 20 mil? Idk how aRandom works, but if you modulo 10mil a number, it seems to me that the result could be up to 9,999,999, which would give an end mastery of [0.5,1.0[
randNum = aRandom[nIdx++ % 7] % 10,000,000;
mastery = (double)randNum / 20,000,000 + 0.5;
You said it might be better in dps to get ME to 30 to boom all 20 bags. But what if you dropped 320 bags, which is an exact number of bags for both lvl 20 and lvl 30? Assuming 50k per bag, you would get 378k/boom over 20 booms with lvl 20, but only 339k/boom over 16 booms for lvl 30? It seems to me that it would cost 25% more time to drop the meso and yield lower damage over time to have max ME if you take the number of bags dropped to infinity.
I had a few damages gathered from blowing pap 2nd body and griffeys, by measuring the hp bars. I got
783646
901192
763850
809897
669045
total damage with max ME and 20*20k bags,
796354
total damage with max ME and 20*50k bags.
Those are much higher than your formula. Taken in March 2009, in case formula changed since then.
Is there a formula that would give how the numbers are displayed on the monsters? They don't agree with the damage done nor your formula.
Long post and lots of questions. I hope I have the concept right.
For the x variable, go [jobid=422]here[/jobid] and look at the ME values. You'll see the X variables listed there.
Quote:You said that mastery is always 0.5. That means randNum is always a pretty small number compared to 20 mil? Idk how aRandom works, but if you modulo 10mil a number, it seems to me that the result could be up to 9,999,999, which would give an end mastery of [0.5,1.0]
Mastery is not a range. The mastery of a skill represents the absolute lowest damage that a skill can perform. Here, it is impossible for the damage to be lower than 50% of its maximum, so it's said that ME's mastery is 50%.
Quote:You said it might be better in dps to get ME to 30 to boom all 20 bags. But what if you dropped 320 bags, which is an exact number of bags for both lvl 20 and lvl 30? Assuming 50k per bag, you would get 378k/boom over 20 booms with lvl 20, but only 339k/boom over 16 booms for lvl 30? It seems to me that it would cost 25% more time to drop the meso and yield lower damage over time to have max ME if you take the number of bags dropped to infinity.
You are confusing meso efficiency with damage efficiency. Assuming each boom takes 1 second and that your numbers are exact, you would have dealt 339k over 16 seconds versus 378k over 20 seconds.
So since the amount of time taken for dropping bags is the same across both sets of booms, you will always deal more damage over time with level 30 versus level 20. But you will pay more mesos to do the same amount of damage. The real question is this - With the time saved by going to level 30, can you make up 39k damage? So, if you can deal more than 39k damage in 4 seconds you should max it. If you can't, go with ME 20.
So at level 30, you emphasize damage per second whereas with level 20 you emphasize meso savings.
Also, for the damage, you calculate it PER BAG not for the collection of bags.
So calculate the damage for 1 bag, then multiply by X number of bags exploded (up to 15) to get your damage calculated for all of ME.
Hmmm why did I just totally missed this thread while it was made? o.0
Anyway, you have to factor in other things regarding meso explosion and dropping bags:
Meso Explosion is ONLY usefull when it does zOMFG damage / sec, so dropping 1k bags may be the most effecient, but won't be usefull compared to normal attack DPS.
You have to factor in meso costs, since the last 5 bags do bonus damage in numbers, but their -amount of mesos- doesn't matter, mass dropping low amounts of mesos would be better again, but it cuts into DPS.
Since you have to mass drop meso bags, dropping 15 x 10k bags, followed by 5x 10 meso coins (which would do the same damage as 20x 10k bags) is not good for DPS, even though that it might be a good meso saver.
The sweetspot of Meso Saving / More DPS was always between 4k bags up to 10k bags, just depending on how fast the boss needed to be killed.
The new part about Meso Explosion is that ANYONE in the whole map can drop mesos now, even non-party members, a lot of people still don't know this, while this is the case for more then half a year already.
Conclusion:
If you want to have ME fun @ squad bosses, -EVERYONE- in the map (30 ppl) MASS drop 10k bags, it may be a bit Meso Ineffecient, but it'll do about 500k dmg /Meso Explosion, and since EVERYONE is contributing (30 ppl), the meso costs are still acceptible...
Still, after the Big Bang / Potential Scrolls, Meso Explosion is laughable... Even Bishops with 2000k NX can do 300k dmg / attack... for only 25 mesos (MP) per attack...
So yeah... I guess ME exploding is a part of history... :'(