XP Scaling for Level >10

Discussion in 'General Modification' started by Gaear, Jul 25, 2013.

Remove all ads!
  1. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    Much of the NC is sandboxey this way - you can choose to do it whenever you want, pretty much. I think that's generally good, as you're not force fed so much, even if you do risk leveling out of the sweet spot. :shrug:
     
  2. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,622
    Likes Received:
    538
    Re: Co8 New Content: Moathouse Respawn

    Perhaps the mod should feature a recommendation for an appropriate level cap? (e.g. 13-14 for average party size)

    Part of the rationale is that the XP table caps at level 10, thus giving inappropriately large XP rewards for CL > 10.

    I wouldn't force it or make it the default, though. E.g. solo players would probably need the higher levels.
     
  3. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    Re: Co8 New Content: Moathouse Respawn

    That would be sensible, although much of the joy of ToEE comes in leveling, I suspect. :shrug:

    One thing I'd like to do, if possible, is drop the XP rewards significantly upon starting the Co8/Verbo phase. Maybe even cut it in half. Battles with hordes of level 10+ opponents (like in WotGS and soon to be HB) jumps you up real fast.
     
  4. BenWH

    BenWH BGPHughes

    Joined:
    Jun 12, 2013
    Messages:
    179
    Likes Received:
    1
    Re: Co8 New Content: Moathouse Respawn

    personally I'd love to see this change. I think a lot of great content is getting trivialised by the overpowered PCs you quickly end up with. Of course, you'd have to make those avatars a bit easier too - I think to a certain extent their massive difficulty encourages bloated characters in order to take them on, and that reduces the challenge on the way there. I'd be really excited to see this change.
     
  5. gazra_1971

    gazra_1971 Knights of Legend

    Joined:
    Aug 3, 2010
    Messages:
    818
    Likes Received:
    2
    Re: Co8 New Content: Moathouse Respawn

    I really hope that you do reduce the XP reward for all of the post-Zuggtmoy Co8 new content, because, as Sitra Achara stated, the player is currently cheating by receiving more XP than the player is supposed to receive when the player's characters are above character level 10, so it would make the game more balanced and challenging (which are both good things). I will go to my grave pleading that Scather and Fragarach be either significantly nerfed or removed from the game because those 2 weapons are the main cause of imbalance in this computer game as it currently stands.
     
    Last edited: Aug 7, 2013
  6. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,622
    Likes Received:
    538
    Re: Co8 New Content: Moathouse Respawn

    Here's another idea - to simulate the effect of the XP reduction that should have been due to CL>10, one can reduce the creature's CR via script. A rough rule of thumb is that for every CL above 10, you should reduce the creature's CR by 0.7.

    To see accurate XP rewards, use this:
    http://www.d20srd.org/extras/d20encountercalculator/

    The proposed method would be as such:

    1. Insert a script into monsters' san_start_combat
    2. The script checks for average party level
    3. Script modifies the creature's CR (obj_f_npc_challenge_rating) accordingly

    Example:
    A Hextorite Assassin is a 15th level Rogue, currently with a -2 CR adjustment, i.e. total CR = 13.
    Currently, any party whose level is >= 10 would receive a total of 9000 XP (before XP modifier, and dividing by group size) for killing the Assassin, no matter how much higher level they are.

    What SHOULD be earned is:
    Level 11: 6600
    Level 12: 5400
    Level 13: 3900
    Level 14: 2800
    Level 15: 2250
    Level 16: 1600

    So, instead, we modify the CR based on the party's level until we get close to the expected value:
    Level 11: CR -> 12 ; 6000 XP (should be 6600)
    Level 12: CR -> 12 ; 6000 XP (should be 5400)
    Level 13: CR -> 11 ; 4500 XP (should be 3900)
    Level 14: CR -> 10 ; 3000 XP (should be 2800)
    Level 15: CR -> 9 ; 2000 XP (should be 2250)
    Level 16: CR -> 9 ; 2000 XP (should be 1600)

    You can see that there's a small inaccuracy in this method (usually about 10%), but it will largely get averaged out (sometimes you get more, sometimes less).

    To counter tricking out the system by carrying along a couple of low level minions, I'd calculate party level according to the highest 50% or so. If someone is hellbent on tricking that out too, let them. The system should cover at least 90% of normal playthroughs.

    In short, it's slightly ham-fisted, but unless someone manages a proper DLL hack, I think it's the best we got.

    I can write the script and test it if there's interest.
     
  7. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    Re: Co8 New Content: Moathouse Respawn

    ^ For sure.

    (Moving to Modding forum ...)
     
  8. WinstonShnozwick

    WinstonShnozwick Established Member

    Joined:
    Mar 2, 2011
    Messages:
    628
    Likes Received:
    23
    I'm all for more difficulty, but as a cleric enthusiast, I enjoy access to my highest level spells and feats, which I might not be able to get if the xp is shoved down so much that we can't reach level 20 by the end of the game.
     
  9. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,622
    Likes Received:
    538
    Progress update:
    1. Verified that you can alter NPCs' CR modifier and that it properly affects XP given at the end of combat.
      *san_dying seems to be a good place for it. (it works even when NPC gets knocked unconscious and auto-dies when the fight ends)
    2. Coded and tested average party level calculation that takes into account the top 50%
    3. Coded and tested the math-y part that calculates which new CR is appropriate for a given party level and unaffected CR.

    So basically what's left now is the book keeping part. i.e. how do you determine the unaffected CR.
    Two options here:
    1. Manually: Assign it for every NPC, be it explicitly through the function call argument, or some hand-coded lookup table.
    2. Automatically: By calculating the CR according to NPC's CL + original CR modifier.
      This would necessitate using an internal flag to mark that the CR modifier has been altered. Alternately, you can rely on placing the script inside san_dying, given that usually you only die once (usually :))
    I'm leaning towards 2, jut wanted to hear if you think otherwise.
     
  10. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    I like the sound of that - there are a ton of san_start_combat scripts in use now, would be kind of a pain to append an additional script to them all.

    What's the basic issue here - we need to know which mobs should not have their CR adjusted? And we can do that by making a table that gets consulted through some in-game function or by making another script that does it? Whatever you think is best, I suppose. (e.g. less dirty hack, more normal operation.)

    I think this would be more an issue of reaching level 20 by half way through Verbobonc (or avoiding that). Also, the current XP rewards for >10 are just plain wrong. We'd rather they be right(ish). :)
     
  11. Daryk

    Daryk Veteran Member

    Joined:
    Jan 14, 2012
    Messages:
    1,177
    Likes Received:
    34
    If you make them right, I think you're going to need a ton of new content to make sure there's enough XP to get a party of 8 to 20th level (without the obvious cheats at any rate).
     
  12. BenWH

    BenWH BGPHughes

    Joined:
    Jun 12, 2013
    Messages:
    179
    Likes Received:
    1
    Sounds good to me :)
     
  13. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    The fun is in the journey though. I'd rather we never quite got to 20 than we got there halfway through the Verbobonc chapter and have nowhere else to go.

    You might be surprised at the amount of potential XP coming in the finished Co8 stuff. HB alone will expand dramatically in that regard, and then there's always WotGS, where traditionally everyone has leveled up like 10 times. ;)
     
  14. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,622
    Likes Received:
    538
    Attached is the script (in combat_standard_routines.py) and example usage (in hextor_invader.py, plugged inside san_dying).

    Note - script uses npc_set internal flag # 32.
     

    Attached Files:

  15. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,622
    Likes Received:
    538
    So, being naturally wary of ToEE's vagaries, I decided to test it in a "real" scenario by applying it to the Drow. Of course it didn't work at first, but I found out why (after about an hour of hair pulling debugging)

    It turns out that the py00381Drow.py script uses 4 spaces for indentation instead of Tab. When I inserted my Tab indented code, it refused to work at all (e.g. the drow death count didn't go up either). When I changed my script addition to 4 space indentation, it worked fine (new CR modification included)

    I recommend that we conform to the Tab indentation style, because:
    1. That's what Troika was using in the original scripts
    2. Mixing the two styles breaks scripts, apparently.
    3. It's less keystrokes...
     
Our Host!