Author Topic: Maximum character level  (Read 231 times)

Malachor

  • Developer
  • Great Eye / First
  • ****
  • Posts: 2051
  • Karma: 25
Maximum character level
« on: Apr 07, 2019; 09:34 AM »
A maximum character level of 127 is perfectly fine.
128 and above has issues.
Namely collecting items, whether they be the capacitors from the holborn techsmith quest Break on through, or joey's new leg.
At 127 they work exactly as you'd expect them to, but at 128, they don't.
With Joey's leg, when you kill Tantorus, you can pick the leg up, and you can hand it in, but if you log out and back in before handing the quest in, then the leg disappears. Joey will display both the text that you haven't completed the quest and also the section where you get his old leg. And if you click ok, then the quest is completed. So that does work, but Break on through doesn't, if you log out and back in after getting the last capacitor and before handing the quest in. All items gained within that map, including the capacitors, will be removed from your inventory, and the techsmith will display the quest incomplete dialogue. Which means that the quest must be abandoned and retaken. While that's a little bit annoying and not completely gamebreaking, it's also not the intended behaviour.
Do all of that at a maximum level of 127, and relogging makes no difference, the items aren't removed so the quests can be completed.
So why 127, it's not a particularly round value, but it is the maximum value a signed byte can have(the minimum value is -127). An unsigned byte ranges from 0 to 255. I don't know why they chose a signed byte over unsigned(they probably chose a byte to save on memory), unless it's to do with comparing levels; is the character level higher/lower than monster/item level. While there is a file called levelscaling, it's more monster level versus character level, so it may be comparing character level to item level.

The files I changed are:
AFFIXES:
maxLevel while most have a max level of 100, there are some that are less, most of these are armorset affixes. They specify colorsets that can be applied to armour pieces(they provide no bonuses).
itemLevel for those armorset affixes because they set the level of the armour piece to the value in this column, which means that you may see lower level armour with higher level armour. This column isn't used on affixes that apply to weapons.

Files that were changed:
Since there's no way to add extra rows to a table in reanimator, item_levels, level_scaling, monlevel, petlevel, and playerlevels must be exported first so that the additional lines can be added to the files.

ITEM_LEVELS:
Add the extra rows(I generally copy and paste already existing rows), then adjust the column values to the same progression.

ITEMS:
Probably the most complicated file to modify. Most of the miscellaneous items don't have a maxLevel value, but armour and weapons do(obviously because their stats change based on their level), but they also have fixedLevel which is a different value to their maxLevel. Consumable items like health injectors do have a value in the level column. (maxLevel and fixedLevel are close to each while level is near minMonsterExperienceLevel, I don't know why).
I think fixedLevel is the level the item spawns at, while level and maxLevel are the monster level range where the item can drop.Maybe.
maxLevel probably also limits the number of times the item can be upgraded by the nanoforge.
So if the fixedLevel value was to be removed, and the maxLevel was increased, then I think the item could drop at different levels.

LEVEL:
In this file, monsterLevel and monsterLevelNightmare could be changed to more suit the increased maximum level. The tricky part is determining what to change those values to. Alternatively, setting the monsterLevelFromActivator checkbox to true(or changing the column's value to 1) means that the monsters level equals the players level when the player first spawns in the map. If you set that to true and your level is 5 then the monster level is also 5, however if you gain a level within the map, the monsters level won't change. But the next map will have monsters equal to your current level. Obviously logging out and back in will change the monster level.

LEVEL_SCALING:
Add the extra rows(I generally copy and paste already existing rows), then adjust the column values to the same progression.
Make sure that you add the negative rows as well, so -127 to 127, not just -100 to 127.

MONLEVEL:
Add the extra rows(I generally copy and paste already existing rows), then adjust the column values to the same progression.

PETLEVEL:
Add the extra rows(I generally copy and paste already existing rows), then adjust the column values to the same progression.

PLAYERLEVELS:
Add the extra rows(I generally copy and paste already existing rows), then adjust the column values to the same progression.
Be aware that you need to add additional rows for each of the three factions.

PLAYERS
change maxLevel up to 127, and you're done.

I think that covers everything.
Oh yeah,  MONSTERS doesn't need to be changed, since they have a maxLevel of 0 and no fixedLevel values anywhere.