Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Pre-BB] MapleStory Formula Compilation
You have some competition, Russt. http://www.sleepywood.net/forum/showthre...?t=1542809 XD

No, not really. Sleepywood's mods do a really good job of playing Big Brother, don't they?
Reply
Has a meso explosion/pick pocket formula been thought up yet? I remember some experimenting back in the day but nothing really came out of it, but that was before Pservers were readily available. I'd be useful for when the updates come to GMS. See if the ME damage increase from PP is significant and all that cool stuff.
Reply
^ It's been looked into in the past, just not extensively.

Dusk Wrote:You have some competition, Russt. http://www.sleepywood.net/forum/showthre...?t=1542809 XD

No, not really. Sleepywood's mods do a really good job of playing Big Brother, don't they?
That they do.

Unspeak of doubleplusbanished one.
Reply
B> ME/PP formulas@@@@@@
Reply
Pickpocket is handled on the server. I believe I recall reading a formula that someone had attempted to use to describe Pickpocket's coins, but I don't believe it was terribly accurate. Meso Explosion, on the other hand, is calculated by the client.

The only way you can find out the formula for Pickpocket would be extensive testing with lots of different test cases. I think somebody had a project for collecting data going, but I don't recall where or what happened to it.
Reply
Anyone want to figure out the Energy Charge decay formula? Does the energy loss decrease at the same rate at level 1 as it decays at level 40, or does the energy decay at a slower rate at max level?

Dusk Wrote:You have some competition, Russt. http://www.sleepywood.net/forum/showthre...?t=1542809 XD

No, not really. Sleepywood's mods do a really good job of playing Big Brother, don't they?

lolAdura. He really doesn't want people to know about SP, does he?
Reply
Decay formula...?
Reply
Russt Wrote:Decay formula...?

Until Energy Charge gets charged up to 100%, the energy slowly decreases over time until the bar reaches 0 or gets filled 100%. In WoW warriors get a rage bar that fills up whenever they hit or get hit, and maxes out at 100. Whenever they are not in battle their rage bar slowly decreases, or "decays" until it reaches 0 or the warrior gets in combat again. Both are pretty similar in mechanics: As long as the character isn't doing anything, the Energy/Rage bar decays in value, and when actually fighting it builds up.
Reply
Mm.

Well, that's something that'll need some investigation. Time how long it takes to deplete.
Reply
Russt Wrote:Mm.

Well, that's something that'll need some investigation. Time how long it takes to deplete.

Good idea. I can test the level 40 charge, but someone needs to test the level 1-39 charge, probably level 1 is best. If there is a significant difference in Energy Charge decay, then the rate of decay is probably linear to some extent, which will be a pain to calculate, but doable. If the rate is the same at level 1 as it is at 40, then the decay rate is constant, which will require less headaches.
Reply
I can already tell you it's completely fixed at all levels. Getting to level 21 charge, i've had a lot of time to figure that out. You just have to time how long it takes at 40 and that's how long it takes at all levels.

I'd rather test the energy gathering formula, lol.
Reply
^

Also, does it decay slowly + constantly even while you're fighting, or does hitting something stop it for a time? If it's the former, knowing the decay rate may help with the charge rate, because then we can subtract out any error caused by it.
Reply
IllegallySane Wrote:Anyone want to figure out the Energy Charge decay formula? Does the energy loss decrease at the same rate at level 1 as it decays at level 40, or does the energy decay at a slower rate at max level?
Takebacker Wrote:I can already tell you it's completely fixed at all levels. Getting to level 21 charge, i've had a lot of time to figure that out. You just have to time how long it takes at 40 and that's how long it takes at all levels.

I'd rather test the energy gathering formula, lol.
The charge level increases by the X value for the level of your skill each target you hit (I'm not sure how misses factor at the moment), up to a constant maximum of 10000 units. This is the same for all levels. As long as you're not increasing the bar (hitting targets), it will deplete at a constant rate of 200 units every 12 seconds.

I played around with this a lot for my implementation. Those are the raw numbers it uses.

That is:

Number of targets * x value = increase.
12 seconds after the last hit = 200 unit decrease.
10000 = the bubbleman.
Reply
I calculated all of the multipliers for regular Combo according to the calculations for each orb in the first post. I'll probably do Advanced combo next. You can see the results in the image below:

Here's the code in Python I used to generate these values:

Code:
class ComboAttack:
    def __init__(self):
        self.ComboAttackLevels = [[100, 0, 3], [104, 0, 3],
                                  [105, 0, 3], [106, 0, 3],
                                  [107, 0, 3], [108, 0, 3],
                                  [109, 0, 3], [110, 0, 3],
                                  [111, 0, 3], [111, 0, 3],
                                  [112, 0, 4], [112, 0, 4],
                                  [113, 0, 4], [113, 0, 4],
                                  [114, 0, 4], [114, 0, 4],
                                  [115, 0, 4], [115, 0, 4],
                                  [116, 0, 4], [116, 0, 4],
                                  [117, 0, 5], [117, 0, 5],
                                  [117, 0, 5], [118, 0, 5],
                                  [118, 0, 5], [118, 0, 5],
                                  [119, 0, 5], [119, 0, 5],
                                  [119, 0, 5], [120, 0, 5]]

    def ComboAttack(self, Level):
        if Level <= 0:
            raise Exception("Level cannot be less than or equal to 0!")
        if Level > 30:
            raise Exception("Level cannot be greater than 30!")
        ComboPercentage, AComboPercentage, TotalOrbs = self.ComboAttackLevels[Level-1]
        print("Level: %d" % (Level))
        for EachOrb in range(TotalOrbs):
            Multiplier = ComboPercentage + AComboPercentage + (EachOrb * (Level / 6))
            print("  ORB %d: %d" % (EachOrb + 1, int(Multiplier)))
        print("")

MyClass = ComboAttack()
for Level in range(1, 31):
    MyClass.ComboAttack(Level)

[Image: regularcombo.png]
Reply
Fiel Wrote:I'll probably do Advanced combo next.

here
 Spoiler

it aint a pretty picture like yours but its screenshottable.... maybe even table-able.
Reply
I don't think I'd want to go through the mess of trying to [noparse]
[/noparse] that.
Furthermore, I had a hell of a time trying to figure out the formula to match your results. I finally cracked it, though.
This is the code that worked for me; I had a hard time with Russt's formula:
Code:
class AComboAttack:
    def __init__(self):
        self.AComboAttackLevels = [[121, 6], [122, 6],
                                   [123, 6], [124, 6],
                                   [125, 6], [126, 6],
                                   [127, 7], [128, 7],
                                   [129, 7], [130, 7],
                                   [131, 7], [132, 7],
                                   [133, 8], [134, 8],
                                   [135, 8], [136, 8],
                                   [137, 8], [138, 8],
                                   [139, 9], [140, 9],
                                   [141, 9], [142, 9],
                                   [143, 9], [144, 9],
                                   [145, 10], [146, 10],
                                   [147, 10], [148, 10],
                                   [149, 10], [150, 10]]

    def AComboAttack(self, Level):
        if Level <= 0:
            raise Exception("Level cannot be less than or equal to 0!")
        if Level > 30:
            raise Exception("Level cannot be greater than 30!")
        AComboPercentage, TotalOrbs = self.AComboAttackLevels[Level-1]
        print("Level: %d" % (Level))
        for EachOrb in range(TotalOrbs):
            #This gets orbs 0, 1, 2, 3, 4
            if(EachOrb < 5):
                Multiplier = AComboPercentage + (EachOrb * (Level / 6))
            #Orbs 5, 6, 7, 8, 9
            else:
                Multiplier = AComboPercentage + 20 + (EachOrb - 4) * 4
            print("  ORB %d: %d" % (EachOrb + 1, int(Multiplier)))
        print("")



MyClass = AComboAttack()
for Level in range(1, 31):
    MyClass.AComboAttack(Level)
Reply
LazyBui Wrote:The charge level increases by the X value for the level of your skill each target you hit (I'm not sure how misses factor at the moment), up to a constant maximum of 10000 units. This is the same for all levels. As long as you're not increasing the bar (hitting targets), it will deplete at a constant rate of 200 units every 12 seconds.

I played around with this a lot for my implementation. Those are the raw numbers it uses.

That is:

Number of targets * x value = increase.
12 seconds after the last hit = 200 unit decrease.
10000 = the bubbleman.

Ooooooooooo. That means Energy Decay only occurs when not attacking, and isn't persistant when attacking. Does that mean every 12 seconds the energy bar decreases a bit, or is that a nice round number you decided to use? I know it decays sooner, around 5 seconds (6?) or so after not attacking anything.

*Decay appears to start happening after 9-10 seconds and decays at that rate, not the 12 seconds that you found. Either I'm counting my seconds wrong, or something is up.
Reply
IllegallySane Wrote:Ooooooooooo. That means Energy Decay only occurs when not attacking, and isn't persistant when attacking. Does that mean every 12 seconds the energy bar decreases a bit, or is that a nice round number you decided to use? I know it decays sooner, around 5 seconds (6?) or so after not attacking anything.

*Decay appears to start happening after 9-10 seconds and decays at that rate, not the 12 seconds that you found. Either I'm counting my seconds wrong, or something is up.

Decay constantly happens. After 12 seconds, 200 units have decayed. I think that's what he meant.
Reply
Fiel Wrote:I don't think I'd want to go through the mess of trying to [noparse]
[/noparse] that.
Furthermore, I had a hell of a time trying to figure out the formula to match your results. I finally cracked it, though.
This is the code that worked for me; I had a hard time with Russt's formula:
Code:
class AComboAttack:
    def __init__(self):
        self.AComboAttackLevels = [[121, 6], [122, 6],
                                   [123, 6], [124, 6],
                                   [125, 6], [126, 6],
                                   [127, 7], [128, 7],
                                   [129, 7], [130, 7],
                                   [131, 7], [132, 7],
                                   [133, 8], [134, 8],
                                   [135, 8], [136, 8],
                                   [137, 8], [138, 8],
                                   [139, 9], [140, 9],
                                   [141, 9], [142, 9],
                                   [143, 9], [144, 9],
                                   [145, 10], [146, 10],
                                   [147, 10], [148, 10],
                                   [149, 10], [150, 10]]

    def AComboAttack(self, Level):
        if Level <= 0:
            raise Exception("Level cannot be less than or equal to 0!")
        if Level > 30:
            raise Exception("Level cannot be greater than 30!")
        AComboPercentage, TotalOrbs = self.AComboAttackLevels[Level-1]
        print("Level: %d" % (Level))
        for EachOrb in range(TotalOrbs):
            #This gets orbs 0, 1, 2, 3, 4
            if(EachOrb < 5):
                Multiplier = AComboPercentage + (EachOrb * (Level / 6))
            #Orbs 5, 6, 7, 8, 9
            else:
                Multiplier = AComboPercentage + 20 + (EachOrb - 4) * 4
            print("  ORB %d: %d" % (EachOrb + 1, int(Multiplier)))
        print("")



MyClass = AComboAttack()
for Level in range(1, 31):
    MyClass.AComboAttack(Level)
I've not tested it, but this should work?:
Code:
def adv_combo(orbs, lvl):
  if lvl < 0:
    raise Exception("Level cannot be less than 0!")
  if lvl > 29:
    raise Exception("Level cannot be greater than 29!")
  
  orbs = limit_orbs(orbs, lvl)
  if (orbs == 0)
    return 100
  elif (orbs < 6)
    return 116 + lvl + (5 * orbs)
  elif
    return 141 + lvl + (4 * (orbs - 5))

def limit_orbs(orbs, lvl):
  return min(orbs, 5 + lvl // 6)

def print_table():
  print("[table]")
  for lvl in range(30):
    for orbs in range(11):
      print(adv_combo(orbs, lvl) + "|")
    print("\n")
  print("[\table]")
lvl is zero-indexed.
Reply
IllegallySane Wrote:*Decay appears to start happening after 9-10 seconds and decays at that rate, not the 12 seconds that you found. Either I'm counting my seconds wrong, or something is up.
I didn't count my seconds. They were digitally produced. Seems you are right, though. Last time I tried, the only number I came up with was 12.

This time, my trials were between 10 and 14 - with the vast majority being 10 or 11. It may very well just be latency on the server end. I only ended up with 5-10% inside the upper bound of 12-14.

Attacking during the time resets the timer. I'm 100% positive of this. I attacked 9 seconds in and didn't lose 200 units for another 10. If you sit there and don't attack, the minimum amount of time it will take is 10 seconds. Decay happens 200 units at once after this time period is over, not like 16-17 units per second or anything like that.
Reply


Forum Jump:


Users browsing this thread: 9 Guest(s)