Talk:LeveledItem

From the CreationKit Wiki
Jump to navigation Jump to search

Special Loot formula

Any idea what this is?

Only info I could find on this is from UESP's page on Dungeons. Special Loot is like boss loot so it's meant to be at a higher level than you would normally receive with the leveled loot formula - probably it does something like calculate as if you are 150% your current level. --Dragonsong (talk) 2013-03-02T22:36:07 (EST)
I tried using the "preview calculated result" button and tested a bunch of lists that use the "Special Loot" flag, but it doesn't ever generate anything higher than the player's level, and thus the option appears to do nothing. Of course, this may simply be a problem with the "preview calculated result" button not working right for Special Loot.
The other thing I noticed, though, is that every list I found with the Special Loot flag ticked also differed from similar lists by NOT having the "calculate from all levels <= PC's level" flag ticked. Thus, these lists always generate the highest level item at or below the PC's level, instead of any item randomly. Of course, this doesn't require the Special Loot flag to work--but this setup is at least fairly consistent in the vanilla lists from what I have observed. If anyone gets a chance to test this option in game, let us know how it goes. -- Egocarib (talk) 2013-09-14T10:35:14 (EDT)
I dug through the 32-bit Creation Kit in a disassembler and found the code that computes leveled list results. I couldn't see any reference to the "Special Loot" flag at all anywhere in that code. DavidJCobb (talk) 17:57, 2 July 2024 (EDT)
Turns out, Bethesda only compiled the Special Loot formula into TESV.exe and not CreationKit.exe. Strange. I'm working on reverse-engineering the math now. DavidJCobb (talk) 21:19, 15 July 2024 (EDT)

Okay, I've got the formula. All game settings used by it have names beginning with fSpecialLoot; for brevity, these prefixes have been shortened to "gs".

The "Encounter Level" is based on multiple factors:

  • If the leveled list is being used to generate an inventory item, then...
    • If the inventory in question is an Actor's inventory, then we use the level of the actor.
    • If the inventory in question is a non-Actor ObjectReference's inventory, then we use the level of its encounter zone.
      • If it's not in an encounter zone (i.e. there is no encounter zone associated with the immediate containing cell or the containing worldspace, or if there is a containing encounter zone but it's the hardcoded NoZoneZone zone), then we use the player's level.
    • The level we choose may be further modified based on two game settings, iCalcLevelAdjustUp and iCalcLevelAdjustDown. The game keeps a persistent counter in memory and every time a ref's "encounter level" is queried, the counter is increased by one. If the counter's value after being incremented exceeds iCalcLevelAdjustUp, then the counter is overwritten with -iCalcLevelAdjustDown. Once all this is done and the counter's value is fully updated, that value is added to our chosen encounter level. The default values for both settings are 1, which means that whenever a reference's encounter is queried, there is a variance of ±1.
    • The encounter level in this scenario is clamped to always be at least 1.
  • If the leveled list is being used to generate a leveled actor, then...
    • TBD
  • If the leveled list is being used to generate a leveled spell, then...
    • TBD

DavidJCobb (talk) 21:48, 15 July 2024 (EDT)

Leveled Item Health

The user LBGSHI Added the notes, "For weapons and armor, 100 or less equals normal, 110 Fine, 120 Superior, 130 Exquisite, 140 Flawless, 150 Epic, and 160-200 Legendary. ". Looks like a nice contribution. Can anyone else verify? Scrivener07 (talk) 2018-03-05T05:50:22 (EST)

"You could always take a look at my PS4 mod, Smithed Equipment in Loot & Shops: https://bethesda.net/en/mods/skyrim/mod-detail/4054897 :) " LBGSHI
I found a comparable list that matches your findings on GetItemHealthPercent - ObjectReference. The only difference is that Rasikko's finding are described as floats (decimal) in papyrus. Id say thats verified enough. Thanks for the contribution. Scrivener07 (talk) 2018-03-05T18:09:21 (EST)
That function will not return 100.0, 110.0, etc, but 1.xx instead, his values for the levelitem form are still acceptable by the game, since those fields are designed like that. It would have been less confusing, if such fields were instead worded as weapon/armor tempering level. --Rasikko (talk) 2018-03-08T08:41:18 (EST)