A Question About Experience

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Miley
    Rookie
    • Aug 2008
    • 12

    A Question About Experience

    Hi,

    My question is: is there a way to figure out how many experience points corresponds to what level? I mainly play gnome mages and I know that while playing a character (3.06 specifically), the game tells you how many experience points are needed for the next level. I would like to know how many experience points are needed for each level - again, specifically for gnome mages. Is there a list that spells it out somewhere? Thank you.

    Anyway, what made me ask this is I was playing a character and I had maybe 5000 experience points, having gone no deeper than 500 feet, when lo and behold I found a potion of experience. My first instinct was to quaff it on the spot. But knowing that it would only take me to 7500 experience, I waited. Anyway it was then that I began wondering when the "best" time to quaff the potion would be - specifically to give me the biggest level boost. In the end, I quaffed the potion when I was at level 24 and it took me to level 26, which gave me some nice spells.

    Anyway I hope this makes sense. Thanks.
  • Derakon
    Prophet
    • Dec 2009
    • 9022

    #2
    In modern Vanilla, potions of Experience always give you 100k points, even if you're only level 1. I don't know when that change went through though.

    From tables.c, here's the base experience requirements for each level. Multiply this by your experience modifier to find out how much experience you'll need to get.
    Code:
    const s32b player_exp[PY_MAX_LEVEL] =
    {
        10,
        25,
        45,
        70,
        100,
        140,
        200,
        280,
        380,
        500,
        650,
        850,
        1100,
        1400,
        1800,
        2300,
        2900,
        3600,
        4400,
        5400,
        6800,
        8400,
        10200,
        12500,
        17500,
        25000,
        35000L,
        50000L,
        75000L,
        100000L,
        150000L,
        200000L,
        275000L,
        350000L,
        450000L,
        550000L,
        700000L,
        850000L,
        1000000L,
        1250000L,
        1500000L,
        1800000L,
        2100000L,
        2400000L,
        2700000L,
        3000000L,
        3500000L,
        4000000L,
        4500000L,
        5000000L
    };

    Comment

    • dos350
      Knight
      • Sep 2010
      • 546

      #3
      i just found my first ever pot of exp at clvl 31 it took me to 32!~ nice!
      ~eek

      Reality hits you -more-

      S+++++++++++++++++++

      Comment

      • Starhawk
        Adept
        • Sep 2010
        • 246

        #4
        I found a !EXP on DL2 the other day, took the character from level 1 to level 31.

        Unfortunately Mughash the Kobold Lord and his archer cronies didn't care much, and I hadn't returned to town to buy upgraded spellbooks.... sigh. RNG, thou art a cruel master.

        Comment

        • Timo Pietilä
          Prophet
          • Apr 2007
          • 4096

          #5
          Originally posted by Starhawk
          I found a !EXP on DL2 the other day, took the character from level 1 to level 31.

          Unfortunately Mughash the Kobold Lord and his archer cronies didn't care much, and I hadn't returned to town to buy upgraded spellbooks.... sigh. RNG, thou art a cruel master.
          Uh, what happened? You died to Mughash and his escorts with clvl 31 char?

          This is like the recurring joke getting BoS +10 at dlvl1 just to die to white icky thing at dlvl2.

          Comment

          • topazg
            Scout
            • Nov 2010
            • 32

            #6
            10200
            12500
            17500
            25000
            35000
            50000
            75000
            100000
            150000

            Does anyone find the upwards curve in this bit just a tad too exponential? I know it always feels that way in game ...

            Comment

            • Timo Pietilä
              Prophet
              • Apr 2007
              • 4096

              #7
              Originally posted by topazg
              10200
              12500
              17500
              25000
              35000
              50000
              75000
              100000
              150000

              Does anyone find the upwards curve in this bit just a tad too exponential? I know it always feels that way in game ...
              What are you talking about? XP/clvl limits? Something else?

              Comment

              • topazg
                Scout
                • Nov 2010
                • 32

                #8
                Originally posted by Timo Pietilä
                What are you talking about? XP/clvl limits? Something else?
                I mean the comparative increase required per level (i.e. comparing the amount require from L28->L29 to L29->L30)

                This figure, with a rolling average over the previous 3 levels, stays at just under 30% for the entire journey up to level 40 where it drops to about 20%.

                However, the rolling average percentage increases from L25 to L33 (so taking increases from L23 to L33 and averaging) go: 53,65,67,44,50,39,56,33,50

                As that's also just a bit before stat-gain (at least, for me), it means that suddenly levelling up takes a huge amount longer than it did for the previous levels.

                Not a biggie, but it's something I've always noticed it in gameplay and gone "Oh, it's this grindy bit again" :P

                Comment

                • Derakon
                  Prophet
                  • Dec 2009
                  • 9022

                  #9
                  I've never really noticed a huge hump in gameplay, myself. Right around stat gain is when the really lucrative (XP-wise) enemies start showing up, too: zephyr hounds, trolls, and dragons all give huge experience returns for relatively little risk.

                  Comment

                  • Therem Harth
                    Knight
                    • Jan 2008
                    • 926

                    #10
                    Have to agree with topazg, I usually end up being level 30ish for quite a while.

                    (WIth unusual room generation forced anyway. WIthout that, I usually make it to level 10 or so and then quit due to boredom.)

                    Comment

                    • Foehammer
                      Rookie
                      • Jun 2010
                      • 5

                      #11
                      Woot!

                      I just discovered my first potion of experience in modern vanilla - while character level 16.

                      Found on dlevel 17 ish, with a feeling that 'superb' treasures existed (thank goodness, or I may have sold the pot)

                      Took it, and suddenly I was clvl 29!! (Hobbit Ranger) I was so happy.

                      Thanks for fixing this ticket!! (Have no idea who opened it or if anyone actually 'approved' the change! http://trac.rephial.org/ticket/781#comment:1

                      Comment

                      • Magnate
                        Angband Devteam member
                        • May 2007
                        • 5110

                        #12
                        Originally posted by Foehammer
                        I just discovered my first potion of experience in modern vanilla - while character level 16.

                        Found on dlevel 17 ish, with a feeling that 'superb' treasures existed (thank goodness, or I may have sold the pot)

                        Took it, and suddenly I was clvl 29!! (Hobbit Ranger) I was so happy.

                        Thanks for fixing this ticket!! (Have no idea who opened it or if anyone actually 'approved' the change! http://trac.rephial.org/ticket/781#comment:1
                        It's one of the many, many changes suggested by Eddie and implemented by takkaria. A great deal of 3.1.x's and 3.2's changes were made on a similar basis, which is why it's so ironic that Eddie hates them.
                        "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

                        Comment

                        • wobbly
                          Prophet
                          • May 2012
                          • 2633

                          #13
                          Found 1 on dungeon level 10, taking me from cl12 to 29. Perhaps they appear a little too early?

                          Comment

                          • CliffStamp
                            Apprentice
                            • Apr 2012
                            • 64

                            #14
                            Is there some kind of roll over for this as I wanted to play a half troll paladin with 3X exp for the paladin and 2X exp for the half troll but when I adjusted the txt files it had the opposite effect and it reduced the exp. I then cut it back down and it would work but I could only get slightly more than double the exp required or it seemed to roll over.

                            Comment

                            • Derakon
                              Prophet
                              • Dec 2009
                              • 9022

                              #15
                              Looking in the code, the "expfactor" variable appears to be what determines experience needed to level up, and it's stored as a byte, as is the racial (but not the class-based) modifiers it derives from. So yes, there's a strong possibility of rollover. As best I can tell, the experience needed for the next level is given as the experience needed for the previous level multiplied by expfactor and divided by 100; thus, at worst you can make a character that levels up 2.55 times slower than the base rate.

                              I can't think why we couldn't just replace these values with ints, but I'm rather bad at thinking of ways that code could break. Still, if you're willing to try compiling the code yourself it would be a simple thing to try. I haven't tested this in the slightest (not even compiled), but it seems like it should do the trick:
                              Code:
                              diff --git a/src/load.c b/src/load.c
                              index eefa788..4debc93 100644
                              --- a/src/load.c
                              +++ b/src/load.c
                              @@ -1336,7 +1336,7 @@ int rd_player(void)
                              
                                  /* Special Race/Class info */
                                  rd_byte(&p_ptr->hitdie);
                              -   rd_byte(&p_ptr->expfact);
                              +   rd_u16b(&p_ptr->expfact);
                              
                                  /* Age/Height/Weight */
                                  rd_s16b(&p_ptr->age);
                              diff --git a/src/player/types.h b/src/player/types.h
                              index 7de08e8..3e58ee2 100644
                              --- a/src/player/types.h
                              +++ b/src/player/types.h
                              @@ -71,7 +71,7 @@ typedef struct player
                                  const struct player_class *class;
                              
                                  byte hitdie;        /* Hit dice (sides) */
                              -   byte expfact;       /* Experience factor */
                              +   u16b expfact;       /* Experience factor */
                              
                                  s16b age;           /* Characters age */
                                  s16b ht;            /* Height */
                              @@ -241,7 +241,7 @@ typedef struct player_race
                                  s16b r_skills[SKILL_MAX];   /* racial skills */
                              
                                  byte r_mhp;         /* Race hit-dice modifier */
                              -   byte r_exp;         /* Race experience factor */
                              +   u16b r_exp;         /* Race experience factor */
                              
                                  byte b_age;         /* base age */
                                  byte m_age;         /* mod age */
                              diff --git a/src/save.c b/src/save.c
                              index 4f256dd..c4b2529 100644
                              --- a/src/save.c
                              +++ b/src/save.c
                              @@ -346,7 +346,7 @@ void wr_player(void)
                                  wr_byte(op_ptr->name_suffix);
                              
                                  wr_byte(p_ptr->hitdie);
                              -   wr_byte(p_ptr->expfact);
                              +   wr_u16b(p_ptr->expfact);
                              
                                  wr_s16b(p_ptr->age);
                                  wr_s16b(p_ptr->ht);

                              Comment

                              Working...
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎