Oblivion Mod:Split Infinity

The UESPWiki – Your source for The Elder Scrolls since 1995
Jump to: navigation, search

Contents

Split Infinity Mod[edit]

A major work-in-progress mod for TES4:Oblivion, Split Infinity aims to add several hundred thousand unique and fully randomized items to the Oblivion leveled loot lists. The best description of the results can be given as loot similar to Diablo II items. Ex: "Champion's Katana", or "Glass Cuirass of Four Winds". Items will be found in chests and other loot containers, from random NPCs, and as loot discovered on slain monsters.

The backend for this project is a new version of Dave Humphrey's RandItem program, which was originally developed for TES3:Morrowind, and can be found at the old UESP.net pages. The new version of RandItem is being converted/written by Dave Humphrey for Oblivion use, and the SI mod in general is being managed by Jaga Telesin.

Mod Goals[edit]

The goal of Split Infinity is to add a new dimension to in-game loot. No longer will you find standard gear on every single creature, or in every chest. Now you have a chance of finding altered gear with unique names, and possibly unique enchantments.

Most Split Infinity gear will be lower in value than normal Oblivion items - we are trying to make this gear you will use in adventuring, not as a basis for building up your character's wealth. The difference in value won't be so much as to make the loot valueless, so it can still be considered a worthy find.

The frequency of Split Infinity items will be adjusted according to mob and character levels, and the custom mods it is eventually integrated with. The end result will be a good chance of finding lower-level SI items in many containers and on many mobs, and lower chances of finding better higher-level SI items as the character and mobs gain levels. It will result in a balanced mix of unique and interesting items that shouldn't overpower the character, but will enhance their gameplay significantly.

Lastly, we are engineering Split Infinity to add a new dimension of interest in keeping the player hunting for new gear. SI items and effects/enchantments are scaled all the way up to level 52 (the theoretical maximum level of an Oblivion character). Most of the high-end effects and enchantments can be found at or over level 40-45. A good example of the scaling being implemented here would be new effects/enchants at levels: 1,2,4,6,8,10,13,16,19,22,25,28,31,34,37,40,45. This will continually give new items the chance of being found as the character (or NPC/Mob) grows in level.


Mod Features[edit]

At this time, there are over 100 Prefixes and 350 Suffixes that can be combined with nearly 250 base Oblivion items. The result is nearly 6.5 million possible items (6,500,000+). Suffixes and Prefixes can be either positive or negative in nature, and cover everything from altering the item's base weight, value, speed, reach, damage, armor rating, and a ton of magical effects ranging from simple cast on strikes, to multiple constant effects.

Planned item types include:
  • Attribute-adjusted gear. (weapons, armor, staves, clothing, jewelry)
  • Magically enhanced gear. (all types)
  • Combinations of attribute and magic enhanced gear of all types.
  • Possibility for negative alterations to items. (ex: a slow claymore or low AR shield)
  • Lore Items that add special spells to user's spellbook when equipped and remove when unequipped.
  • Lore Scrolls, that add special spells permanently to the reader's spellbook.
  • Inclusion of community-created models & textures (weapons/armor/etc) for some of the end-result items.
Current List of possible Effects on Items
  • Mundane: Weapon Damage, weapon speed, weapon reach, item value, item weight, armor level.
  • Magical: Virtually every conceivable type of magic enhancement available in Oblivion, appropriate to gear type. (eg, armor would not have 'cast on strikes' effects, and weapons would not have 'constant effect' effects)
  • Lore: Special "Lore" type effects will be implemented, adding new spells to the user's spellbook when their item is equipped, and removing said spells when unequipped. Some very special Lore scrolls will add their spell permanently to the user's list. All Lore spells are either variations on standard Oblivion spells, or completely new spells.
Planned Mod Compatibility
  • The original release of the Mod for TES4:Oblivion will be compatible with the stock 'out of the box' game.
  • We are also planning on compatibility addon mods (mini esp's) to maintain compatibility with the most popular game-balancing and loot modification mods. These will be released as added and as time permits.
Unique Mod Items
  • We are going to be implementing custom item models and textures as they become available and approved for use by the modding public. Some have already been requested from the great modders on the official Oblivion modding forums.
  • If you have made custom meshes/models/textures for Oblivion items, please consider contacting the team here so your work can be considered for inclusion in Split Infinity.


Project Status[edit]

The project is currently in a pre-Alpha status, as the ESP format is still being built, and the effects spreadsheet is being given a major face lift. The project is expected to take between two and six months to develop, and team members will be recruited shortly to help Beta test the initial results and balance items/effects/enchantments.

  • 17 April 2005 (Daveh): All (or most) of the relevant mod format needed to develop the random item program is complete and in code form (Oblivion Mod:Mod File Format). Current work is to create and perform tests of the low level ESP/ESM file input/output code to ensure it functions correctly (currently 1/3 done). Once this is complete work can begin on converting the old MWRandItem to ObRandItem.

Mod Screenshots[edit]

  • Screen from Morrowind version of RandItem program:
SI for Morrowind - Randomizer View


  • Split Infinity Effects Control Sheet for Oblivion (sample):
SI-effects-tracker.png

Development & Testing Teams[edit]

Development Team
  • Jaga Telesin - Mod Manager. Responsible for front-end mod development: effects, combinations, leveled lists, and final package.
  • Dave Humphrey - Creator of RandItem. Responsible for SI's backend engine (OBRandItem),and integration with base data.


Alpha Test Team


Currently Recruiting for Beta 1, contact Jaga Telesin for more information.

Development Notes[edit]

General Lists[edit]

The following are general lists which are used in various places in the data files.


Item Types[edit]

Item types are used to specify an item type as well as to which items an effect can apply to.

  • All = Only valid in effect item masks or project options
  • Armor
  • Apparel = Any armor or clothing
  • Clothing
  • Light
  • Misc
  • Scroll
  • Sigil
  • Staff = Staffs are separated from weapons due to the differences in enchanting
  • Weapon = Does not include staffs

Item types can only take one value. Effect and option masks, however, can take multiple item types separated by the "|" character.

Biped Flags[edit]

Biped flags are used in clothing and armor to specify what body parts the item and its assigned model applies to.

  • Head
  • Hair
  • Upper Body
  • Lower Body
  • Hand
  • Foot
  • Right Ring
  • Left Ring
  • Amulet
  • Weapon
  • Back Weapon
  • Side Weapon
  • Quiver
  • Shield
  • Torch
  • Tail

These flags are additive: you specify one or more parts that apply to the item separated by the "|" character (most items will only use one body part). For example:

Bracer: Hand
Cuirass: Upper Body
Robe: Upper Body | Lower Body
Hood: Hair

Skills[edit]

The following is a list of valid Oblivion skills:

  • Armorer
  • Athletics
  • Blade
  • Block
  • Blunt
  • Hand-to-Hand
  • Heavy Armor
  • Alchemy
  • Alteration
  • Conjuration
  • Destruction
  • Illusion
  • Mysticism
  • Restoration
  • Acrobatics
  • Light Armor
  • Marksman
  • Mercantile
  • Security
  • Sneak
  • Speechcraft
  • None (only valid in some cases, like a book teaches skill)

Attributes[edit]

  • Strength
  • Intelligence
  • Willpower
  • Agility
  • Speed
  • Endurance
  • Personality
  • Luck

Actor Values[edit]

Actor values are used in effects that apply to a specific attribute, such as Drain Attribute or Restore Attribute. Valid actor values include:

or one of the following values:

  • Health
  • Magicka
  • Fatigue
  • Encumbrance


Magic Effects[edit]

The following is a list of the predefined magic effect IDs.

ID Description ID Description ID Description ID Description
ABAT Absorb Attribute ABFA Absorb Fatigue ABHE Absorb Health ABSK Absorb Skill
ABSP Absorb Magicka BABO Bound Boots BACU Bound Cuirass BAGA Bound Gauntlets
BAGR Bound Greaves BAHE Bound Helmet BASH Bound Shield BRDN Burden
BWAX Bound Axe BWBO Bound Bow BWDA Bound Dagger BWMA Bound Mace
BWSW Bound Sword CALM Calm CHML Chameleon CHRM Charm
COCR Command Creature COHU Command Humanoid CUDI Cure Disease CUPA Cure Paralysis
CUPO Cure Poison DEMO Demoralize DGAT Damage Attribute DGFA Damage Fatigue
DGHE Damage Health DGSP Damage Magicka DIAR Disintegrate Armor DIWE Disintegrate Weapon
DRAT Drain Attribute DRFA Drain Fatigue DRHE Drain Health DRSK Drain Skill
DRSP Drain Magicka DSPL Dispel DTCT Detect Life FIDG Fire Damage
FISH Fire Shield FOAT Fortify Attribute FOFA Fortify Fatigue FOHE Fortify Health
FOMM Fortify Magicka Multiplier FOSK Fortify Skill FOSP Fortify Magicka FRDG Frost Damage
FRNZ Frenzy FRSH Frost Shield FTHR Feather INVI Invisibility
LGHT Light LISH Shock Shield NEYE Night-Eye OPEN Open
PARA Paralyze RALY Rally REAN Reanimate REAT Restore Attribute
REDG Reflect Damage REFA Restore Fatigue REHE Restore Health RESP Restore Magicka
RFLC Reflect Spell RSDI Resist Disease RSFI Resist Fire RSFR Resist Frost
RSMA Resist Magic RSNW Resist Normal Weapons RSPA Resist Paralysis RSPO Resist Poison
RSSH Resist Shock RSWD Resist Water Damage SABS Spell Absorption SEFF Script Effect (not currently supported)
SHDG Shock Damage SHLD Shield SLNC Silence STMA Stunted Magicka
STRP Soul Trap SUDG Sun Damage TELE Telekinesis TURN Turn Undead
VAMP Vampirism WABR Water Breathing WAWA Water Walking WKDI Weakness to Disease
WKFI Weakness to Fire WKFR Weakness to Frost WKMA Weakness to Magic WKNW Weakness to Normal Weapons
WKPO Weakness to Poison WKSH Weakness to Shock Z002 Summon Ancestor Guardian Z003 Summon Spiderling
Z005 Summon Bear ZCLA Summon Clannfear ZDAE Summon Daedroth ZDRE Summon Dremora
ZDRL Summon Dremora Lord ZFIA Summon Flame Atronach ZFRA Summon Frost Atronach ZGHO Summon Ghost
ZHDZ Summon Headless Zombie ZLIC Summon Lich ZSCA Summon Scamp ZSKA Summon Skeleton Guardian
ZSKC Summon Skeleton Champion ZSKE Summon Skeleton ZSKH Summon Skeleton Hero ZSPD Summon Spider Daedra
ZSTA Summon Storm Atronach ZWRA Summon Faded Wraith ZWRL Summon Gloom Wraith ZXIV Summon Xivilai
ZZOM Summon Zombie

Spell Schools[edit]

The following is a list of the six spell schools:

  • Alteration
  • Conjuration
  • Destruction
  • Illusion
  • Mysticism
  • Restoration

BaseItem.dat[edit]

The BASEITEMS.DAT file contains base item definitions which will be used to generate the random items. The basic format of the file is:

  # Comment, anything after the '#' character on a line is ignored
  item
      Field = Value     # Item data (see below)
      ....
  end
  ....  # more item definitions...


General Fields[edit]

The general item data fields are listed in the below table. If a value is not specified its default value will generally be 0 (or a suitably reasonable value).

ItemType The type of item which should be the first line the item (see ItemTypes)
Name The full item name
Material This is used when generating the item name.
Icon Icon filename (male icon for armor and clothing)
Model Model filename (male biped model for armor and clothing)
BasePrice The base item value used in the calculation to compute its final cost
Weight Item weight (floating point)
ItemLevel Assigned item level which is used in the leveled list calculations
CustomType A string value which is used to group items for level list generation.
EffectMask Specifies which effects can apply this to object. Valid values are:
  • None (specifies the item is allowed to exist without any effects applied to it)
  • Enchant
  • Weight
  • Damage
  • Reach
  • Speed
  • Health
  • Armor
  • EnchantCharge
  • Script
  • Value (does not use the MinEffect and MaxEffect values)
  • All (item can take any effect)

Multiple values can be specified separated by the "|" character, for example:

EffectMask = Enchant | Weight | Reach

Invalid flags will be ignored (such as specifying a Damage effect for a piece of armor).

If the EffectMask is omitted the default value of "All" will be used.

EnchantMask Specifies which enchantments can be applied to the item:
  • Cast Strikes
  • Cast Once
  • Constant Effect
  • Cast at Target
  • Cast When Used (no longer used?)
  • All (all of the above)

It is also important to note that the way item enchantments function has changed significantly from Morrowind. Item types now will only take a specific type of magical enchantment:

  • Armor = Constant Effect
  • Clothing = Constant Effect
  • Scroll = Cast Once
  • Staff = Cast at Target
  • Weapon = Cast on Strike

If the EnchantMask is omitted a default value will be used:

  • Armor = None | Constant Effect
  • Clothing = None | Constant Effect
  • Misc = None
  • Scroll = Cast Once
  • Staff = None | Cast at Target
  • Weapon = None | Cast on Strike
MinEffectLevel
MaxEffectLevel
Specifies the valid effect levels that can be applied to this item. Default level range is 0 to 1000.
Frequency Default value of 1. Any value larger than 1 will result in that many copies of the base item being duplicated when the item file is loaded. This can help in making certain base item types more common.

Armor Item Fields[edit]

MBModel Female biped model filename
FBModel Female biped model filename
MWModel Male world model filename
FWModel Female world model filename
MIcon Male icon filename
FIcon Female icon filename
BipedParts Used for armor and clothing items this specifies one or more body parts that the item covers (see the Biped Parts). More than one part can be specified by using the "|" character:
BipedParts = Head | Hair
Health Armor health (dword)
Armor Armor class value (word). This value will be 100x the actual in-game value. For example, a value of 550 here will be an armor value of 5.50 in-game.
ArmorType Specifies whether armor is a heavy or light class:
  • Light
  • Heavy
HideAmulet (boolean, true/false)
HideRings (boolean, true/false)

Clothing Item Fields[edit]

MBModel Female biped model filename
FBModel Female biped model filename
MWModel Male world model filename
FWModel Female world model filename
MIcon Male icon filename
FIcon Female icon filename
BipedParts Used for armor and clothing items this specifies one or more body parts that the item cover (see Biped Parts). Use the "|" in between parts to specify more than one.
HideAmulet (boolean, true/false)
HideRings (boolean, true/false)


Light Item Fields[edit]

Color The light color in hexadecimal form: RRBBGG.
000000 = Black
FFFFFF = White
FF0000 = Red
00FF00 = Green
0000FF = Blue

Default value is black.

Falloff Light falloff (float). Default value of 0.0.
FOV Light field of view (float). Default value of 90.0.
Fade Light fade(float). Default value of 1.0.
Time Light duration (long). Default value of -1 (infinite).
Radius Light radius in game units (dword). Default value of 100.
Type Type of light. Valid values are:
Flicker
Flicker Slow
Pulse
Pulse Slow
None

Default value is None.

Dynamic Boolean value (true/false) specifying if the light is dynamic. Default value of false.
Negative Boolean value (true/false) specifying if the light is a negative source. Default value of false.
DefaultOff Boolean value (true/false) specifying if the light is initially off. Default value of false.
SpotLight Boolean value (true/false). Default value of false.
SpotShadow Boolean value (true/false). Default value of false.
Carried Boolean value (true/false). Default value of true.
Sound Specifies the editor ID of the sound for the light. The sound must either exist in the merged ESP file or must be one of the sounds found in Oblivion.esm. Sound editor and form IDs from Oblivion.esm are matched using the data in the SOUNDS.CSV file.

Misc Item Fields[edit]

There are no fields for misc items.

Scroll Item Fields[edit]

Teaches Specifies the skill the scroll/book teaches (see Skills). Default value is none.
IsScroll (boolean, true/false)


Sigil Stone Item Fields[edit]

Uses Number of uses for the stone.. Default value is 1.

Weapon Item Fields[edit]

Reach Weapon reach (float)
Speed Weapon speed (float)
Damage Weapon damage (word, maximum value of 65535)
Health Weapon health (dword)
EnchantCharge Enchantment charge available to the weapon (note: maximum value of 65535)
Type Type of weapon:
  • Blade One Hand
  • Blade Two Hand
  • Blunt One Hand
  • Blunt Two Hand
  • Staff
  • Bow
IgnoreResist Ignore normal weapon resistance (boolean, true/false)

Example Item Entry[edit]

Item
        ItemType = Armor
        Name = "Test Cuirass"
        Material = "Chitin"
        MIcon = "a\TX_Chitin_curaiss.tga"
        FIcon = "a\TX_Chitin_curaiss2.tga"
        BasePrice = 25
        BasePrice1 = 25
        ItemLevel = 1
        Weight = 6
        EnchantPts = 100
        Armor = 10
        BipedParts = Upper Body | Lower Body
        Health = 300
        MBModel = "a\A_M_Chitin_Cuirass_GND.nif"
        MWModel = "a_m_chitin_chest2"
        FBModel = "a_m_chitin_chest3"
        FWModel = "a_m_chitin_chest4"
        EffectMask = Enchant | None | Armor
        HideAmulet = false
        HideRings = true
        ArmorType = Light
End

Effects.dat[edit]

The effects.dat file defines all the suffix and prefix effects can be applied to the base items. The overall format is:

  # Comment
  
  suffix
      EffectType = Scroll    # effect data (see below)
      ....
  end
   
  prefix
        # Same fields as a suffix
  end 
  ....  # more prefix and suffix definitions...


General Fields[edit]

The following fields are valid in any suffix/prefix.

Name The effect name used in the item name. If this field is omitted or is an empty string the effect name will not be used in the final item name.
NameID The effect name used to reference the effect from unique records (and possibly elsewhere). This name must be unique if you wish to reference it in a unique record. If omitted the NameID will be the same as the Name field.
EffectType The type of effect to apply to the item. Can be one of:
  • Enchant = Use a normal enchantment
  • Weight = Modify the item's weight by some %
  • Damage = Modify the weapon's damage by some %
  • Script = Attach a custom script to the item
  • EnchantCharge = Modify the weapon's enchantment charge by some %
  • Reach = Modify the weapon's reach by some %
  • Speed = Modify the weapon's speed by some %
  • Health = Modify the item's condition by some %
  • Armor = Modify the armor's rating (AR) by some %
  • Value = Modify the item's value by some %
EffectLevel The level of the effect (1 to 50). Higher level effects will be rarer and only encountered by players of higher levels.
ItemMask Indicates which item types the effect is valid for (see Item Types)
NameMask If specified the effect will only match items that include the given name. For example, "Ball" will match items with a name of "Crystal Ball", "Ball of Wax", etc.... Multiple values can be specified by separating them with the '|' character, for example:
NameMask = Mace | Warhammer | War Axe

For multiple name masks the effect will be applied to the item if its name matches any one of the masks.

CustomTypes If specified the effect will only match items that have the given custom type. Multiple values can be specified by separating them with the '|' character, for example:
CustomTypes = Mace | Warhammer | War Axe

For multiple types the effect will be applied to the item if it matches any one of the value.

Script The script editor ID to use for a script effect. The script must exist in one of the external ESP files merged into the random items and be an object script.
MinQuality
MaxQuality
An integer value which is used to calculate the item's value. Higher numbers will result in items with higher values and negative values will reduce the item value.
MinEffect
MaxEffect
Only required if the effect type is not an enchantment. The value depends on the effect type ('EffectType' above).

For Percent Values:

100.0 = Increase parameter by 100% (double)
0.0 = No change
-50.0 = Decrease parameter by 50%
Multiplier Another value (-10 to 50) used to calculate the item's value

Enchantment Data[edit]

For any prefix or suffix with an 'EffectType' of 'Enchant' there will need to be an enchantment section in that record:

    prefix
        EffectType = Enchant
        ....
        Enchant
           ...  # Enchant data (see below)
        end
    end


EnchantType Type of Oblivion enchantment. Can be one of the following:
  • Apparel
  • Scroll
  • Staff
  • Weapon
MinCharge
MaxCharge
Range of charges for the item (not required if item is autocalc or constant effect)
MinCost
MaxCost
Range of costs for the item (only required for a weapon if not autocalc)
AutoCalc Boolean value 'true' or 'false' indicating whether the enchantment costs are automatically computed. This is recommended unless you want to override the default costs.


Enchantment Effect Data[edit]

For every 'Enchant' section there can be 1 to 10 (?) different enchantment effects defined within it:

    Enchant
         ...
         effect
               # Effect data (see below)
         end
         .... # More effects
    End
EffectID The enchantment effect identifier (see Magic Effects).
ActorValue Required only if the EffectID is an enchantment effect that needs an attribute (see Actor Values).
RangeType Enchantment effect range
  • Self = Self only, duration and constant effect
  • Touch = On touch or when strikes
  • Target = Aimed over a distance
MinArea
MaxArea
The enchantment effect area
MinDuration
MaxDuration
The enchantment effect duration (0 for constant effect)
MinMagnitude
MinMagnitude
The enchantment effect magnitude
Script For SEFF effects this is the script editor ID to use (must exist in one of the merged ESP files and be the a magic effect script).
School The spell school the SEFF effect uses (see Spell Schools).
Hostile A boolean value (true/false) that specifies whether the SEFF effect is considered hostile or not.
VisualEffectID The effect identifier to use as the visual for a SEFF effect (see Magic Effects).
EffectName The custom effect name for a SEFF effect.

Example Effect Entry[edit]

Suffix
        Name = Warmth
        EffectType = Enchant
        Cursed = false
        ItemLevel = 5
        ItemMask = W
        MinQuality = 50
        MaxQuality = 100
        Multiplier = 1
 
        Enchant
                EnchantType = "Scroll"
                Charge1 = 100
                Charge2 = 200
                EnchantCost1 = 1
                EnchantCost2 = 3
                AutoCalc = false
 
                Effect  
                        EffectID = FIDG
                        RangeType = Target
                        Area1 = 0
                        Area2 = 0
                        Duration1 = 1
                        Duration2 = 1
                        Magnitude1 = 1
                        Magnitude2 = 1
                End
        End
End


Uniques.dat[edit]

The uniques.dat file contains special 'artifact' type items that can be generated and inserted rarely into the set of generated items.

    unique
        Name = "Unique Item"
        ...     # See below
    end
    ... # More unique records

Valid fields in a unique data file are:

Name The unique item name/suffix/prefix, depending on the name type.
NameType The type of name generation:
  • Suffix = Name is added to the base item name as a suffix.
  • Prefix = Name is added to the base item name as a prefix.
  • Exact = Name is copied exactly, base item name is not used (default).
ItemLevel The item level of the unique (1 to 50). Higher level uniques will be rarer and only encountered by high level players.
ItemMask Indicates which item types the effect is valid for (see Item Types)
Effect Each unique item can have up to 6 different effects. These effects are the NameID of an existing prefix or suffix effect as defined in the effects data file. Only the first 10 enchantments from the effects are added to the item (if it has that many).

Example Uniques Entry[edit]

Unique
        Name = "Instrument of Decay"
        NameType = Exact
        ItemLevel = 25
        ItemMask = W
        Effect = Fire
        Effect = Vicious
End

LevelLists.dat[edit]

This file defines all the level lists which will be filled by the randomly generated items. The level list structure allows a list hierarchy to be defined, with lists at the bottom level containing items and those lists belong to various parent lists. Each generated item can be added to multiple leveled lists. This allows a large variety of lists to be easily created.

LevelList Starts a level list definition
Name The unique name of the level list which is also used as the prefix for its editor ID. For example, a list with a name of "weap" will result in lists with IDs of "weap1", "weap2", etc.... This name is referred to by the "Parent" field in other lists so needs to be unique. Lists with duplicated names will be ignored.
Parent Specifies the parent list this list should belong to. If this is omitted the list is placed at the top level (is not added to any other level lists). Multiple parents can be specified by using more than one parent definition (no limit on number of parents a list can have).
Empty A value of "true" specifies that this list doesn't contain any regular items (it can contain other level list records). Default value of "false" if omitted.
ResetLevels A value of "true" specifies that all items and other lists added will be set to a level of 1. Default value of "false" if omitted.
ChanceNone The chance the list has of returning no items when used in the game. Default of 0 is used if omitted.
CalculateEach A value of "true" or "false" giving the list parameter of "Calculate for Each Item in List". Default value of true is used if omitted.
CalculateAll A value of "true" or "false" giving the list parameter of "Calculate for All Levels < PC". Default value of true is used if omitted.
MaxRecords The number of records that can be added to a list before a new list is created. A default value of 100 is used if omitted. There is no known limit to the number of records that can be contained in a leveled list, however most lists used in Oblivion contain less than 100 items with a maximum of 104.
MinLevel
MaxLevel
If these are present the list will only include items within the given level range. You can specify the Min, the Max, or both. For example:
  • "MinLevel=10" -- The list will only contain items with a level of 10 or higher.
  • "MaxLevel=23" -- The list will only contain items with a level of 23 or lower.
  • "MinLevel=10" and "MaxLevel=23" -- The list will only contain items with a level between 10 and 23 (inclusive).
ItemType If this is present the list will only include items of the given types (see Item Types). Multiple item types can be specified by separating them with the "|" character.
ItemName If this is present the filter will only include items that contain with the specified string. For example, a value of "Imperial" would match items "Imperial Helmet", "Amulet of Imperial Force", etc....
ArmorTypes If this is present the list will only include items of the given armor type:
  • Light
  • Heavy

Multiple types can be specified by separating them with the "|" character (maximum of 8 types allowed).

WeaponTypes If this is present the filter will only include items of the given weapon type (see Weapon Item Fields for details). Multiple types can be specified by separating them with the "|" character (maximum of 8 types allowed).. For example:
One Hand Blunt | One Hand Blade
BipedParts If this is present the filter will only include items with the given biped parts (see Biped Flags for details). Multiple parts can be used separated by the "|" character.
BipedCompare Specifies the type of biped part comparison to perform:
  • OR = Matches one or more of the specified flags
  • AND = Matches all of the specified flags
  • EQUAL = Matches only items with identical flags

If omitted the default value of EQUAL is used.

CustomTypes If this is present the filter will only include items that have the given custom type values. Multiple values can be specified by separating them with the "|" character.
ItemEffects If this is present the filter will only include items with specific effect types:
  • None = Only include items without any effects
  • Suffix = Include any item with a suffix effect
  • Prefix = Include any item with a prefix effect
  • OnlySuffix = Include any item with just a suffix effect
  • OnlyPrefix = Include any item with just a prefix effect
  • Any = Include any item

Multiple types can be specified by separating them with the "|" character.

End Ends a level list definition
Insertion Starts an item insertion definition. This is used to add items contained in the merged ESP files to be added to the level lists.
EditorID The editor ID of the item to add. If the given ID is not found in the merged ESP files it will not be added to the lists.
Parent Specifies the name of the list to add the item to. Multiple lists can be specified with multiple parent definitions.
Level The item level to use when adding it to the list. A default value of 1 is used if omitted.
Count The item count to be used when adding to the level lists. A default value of 1 is used if omitted.
End Ends an Insertion definition


Example[edit]

The following example shows a very simple structure with 3 lists. There are two main lists, one for all weapons and one for all armors, which will contain the items. The weapon and armor lists, in turn, will all be added to one top level list.

  LevelList
        Name = TopLevelList
        Parent = NULL
        Empty = true
        MaxRecords = 100
        ChanceNone = 1
        CalculateAll = false
        CalculateEach = false
  End
  LevelList
        Name = TopTest
        Empty = true
        MaxRecords = 100
  End
  LevelList
        Name = Weapons
        Parent = TopLevelList
        MaxRecords = 90
        ChanceNone = 2
        CalculateAll = true
        CalculateEach = false
        ItemType = Weapon
  End
  LevelList
        Name = Armor
        Parent = TopLevelList
        Parent = TopTest
        MaxRecords = 80
        ChanceNone = 3
        CalculateAll = false
        CalculateEach = true
        ItemType = Armor
  End
  Insertion
        EditorID = siFireBall1
        Parent = TopLevelList
        Level = 11
        Count = 2
  End

ProjectFile.obri[edit]

These type of files are loaded and saved from ObRandItem and contain all the options and session variables used to generate random item sets. While you don't (or shouldn't) need to edit these by hand the valid fields for the file are listed below:

BaseItems Specifies a file containing the base item data
Effects Specifies a file containing the suffix and prefix effect data
Uniques Specifies a file containing the unique item data
EspFile Specifies an ESP/ESM file to be loaded and merged with the random items. You can specify multiple files but currently only the first one will be loaded.
Options Starts an options section (must finish with an "End" line)


Options Section[edit]

The following are valid option fields found in between an "Options" and "End" lines in a OBRI file.

IDPrefix The prefix is used in Editor ID generation. Depending the type of ID the prefix length will be limited to 4, 24 or 28 bytes (extra characters will be ignored). Valid characters include letters and numbers (special characters like underscore and dashes are not permitted due to inherent restrictions in Oblivion and the CS).
IDType Specifies the type of Editor ID generation for all record types:
  • Long = A 32 byte ID using a combination of current time, hard drive serial number, counter, and 4 byte prefix (default)
  • Short8 = Combines a prefix along with 8 bytes (00000000 to FFFFFFFF) of counter data: "someprefix00005678"
  • Short6 = Combines a prefix along with 6 bytes (000000 to FFFFFF) of counter data: "someprefix000456"
  • Short4 = Combines a prefix along with 4 bytes (0000 to FFFF) of counter data: "someprefix0034"
  • Short = Combines a prefix along with a variable counter with no padded zeros: "someprefix123"
  • Extended = Uses the extended ID value to create the ID.
ExtendedID This value is used if the IDType is set to 'Extended'. It allows IDs to be created with the ID and item level inserted in a custom order and format using special '%' character codes. Valid codes are:
  • %i = Insert consecutive ID number.
  • %x = Insert consecutive ID number in hexdecimal format.
  • %l = Insert the current item's level.

Numbers can also be used to zero-pad the values, for example:

  • %04i = Pad left side to make a width of 4 characters: 0001, 0002, etc...

Any invalid characters are ignored (anything not alpha-numeric). The program does some checks to ensure a valid extended ID but it is entirely possible to enter an invalid value. For example, the extended ID of "test" would try and give all items the same ID which, of course, is not valid. In such a case the program will revert to using the 'short' regular ID type.


Typical examples:

  • test%04i = Zero pad a short ID with integer index: test0317
  • si%02lid%X = IDs that contain a level and hexadecimal index of the form: si10id2FC
MaxNameLength Specifies the maximum desired item name length. If an item has an initial name longer than this value parts of will be removed until it is short enough. Specifying a too small of a value may result in items being output with no name modifiers at all (just the base item name). Default value of 32 if omitted.
NameDelimiter When this is not empty the given string will be added to front and end of the item name for all items. For example, if its value is "+" all items names will have the format "+Item Name+".
HidePrefix2 When set to "true" the second prefix name will never be output. Default value is "true" it omitted.
MinLevel
MaxLevel
Range of items levels to generate
NumItems Number of items to generate
UseBell When this is set the random number generator will use the RandomBell value to shift generated item levels up or down.
RandomBell A value representing how much to shift item levels when UseBell is true.
  • 0 = More lower level items
  • 50 = Normal level distribution
  • 100 = More higher level items
  • 150 = Many more higher level items

The actual result of RandomBell depends on the level distribution of the items and all effects. The best method is to try several values, see how the distribution has changed, and choose the one which best matches your requirements. Note that higher values may increase the generation time due to an increased number of failed item creations. This depends on the level distribution of the base items and effects.

RemoveDuplicates When this is set any duplicate items generated will be deleted. A duplicate item is defined as one that has the same base item and identical suffixes/prefixes. Note that this slows down item generation.
ItemMask The types of items to create (see Item Types)
PrefixChance Chance of an item having a prefix (percent value, default = 25.0)
SuffixChance Chance of an item having a suffix (percent value, default = 50.0)
UniqueChance Chance an item being unique if it has both a Prefix and Suffix (percent value, default = 25.0)
MaterialChance Chance an item name has of including the material (percent value, default = 75.0)
LevelFactor Used to adjust item levels with effects on them (percent value, default = 10.0)
OfString Specifies the string used when creating items with a suffix. This can be used to localize the item name generation for other languages. Default value of " of ".
CreateLevelLists If set to true the level lists defined in the list data file will be created. Default value is true.
DistributeLists If set to true the contents of the level lists will be distributed to try and make the same number of items in each list instance. Default value is true.
CreateListParents If set to true the any level lists defined with "Empty=true" will be created before any items are generated. Default value is true.
FirstItemFormID Sets the initial form ID to use when generating items. Default value 0x01001000. Note that the top 8 bits are ignored (always reset to 01). Valid formats are:
  • 0x01001234 = Hexadecimal (base-16)
  • 01001234 = Octal (base-8)
  • 1001234 = Base 10
FirstListFormID Sets the initial form ID to use when generating lists. Default value 0x01E00000. Note that the top 8 bits are ignored (always reset to 01). Accepts the same formats as FirstItemFormID.

DisplayFilters.dat[edit]

This file is used to create the display groups in the tree control of the item view tab. You can modify it to select the exact types of display filters you wish to use. Modifications to the file will not take effect until the program has been restarted. It has a similar format to the other .DAT files used in ObRandItem with the following data fields:

DisplayFilter Starts a filter section
ID The name that is used to reference this filter as a parent. If omitted the DisplayName is used. This value should be unique.
DisplayName The name that is displayed in the tree control. If omitted the ID value is used.
ParentName Specifies the parent filter this filter should belong to (refers to the ID of another record). If this is omitted or has the value of "NULL" the filter is placed at the top level.
RecName The 4-character record name to filter records with. This should be a included in all filters.
IsEmpty A value of "true" specifies that this filter won't show any records. Default value of "false" if omitted.
ItemName If this is present the filter will only include items that begin with the specified string. For example, a value of "Imperial" here results in only item names starting with "Imperial" to be displayed.
Material If this is present the filter will only include items that contain the specified string in their name or model. For example, a value of "Daedric" here results in only items containing the word "Daedric" in their name/model to be displayed.
ArmorType If this is present the filter will only include items of the given armor type:
  • Light
  • Heavy
WeaponType If this is present the filter will only include items of the given weapon type (see Weapon Item Fields for details).
BipedParts If this is present the filter will only include items with the given biped parts (see Biped Flags for details). Multiple parts can be used separated by the "|" character.
BipedCompare Specifies the type of biped part comparison to perform:
  • OR = Matches one or more of the specified flags
  • AND = Matches all of the specified flags
  • EQUAL = Matches only items with identical flags

If omitted the default value of EQUAL is used.

SpellType If this is present the filter will only include spells of the given type.
SpellLevel If this is present the filter will only include spells of the given level.
EnchantType If this is present the filter will only include enchantments of the given type.
ScriptType If this is present the filter will only include scripts of the given type.
End Ends a filter section

Item Value Calculation[edit]

Here is how item values are calculated. The value is affected by 3 parameters:

  • Base Item Price
  • Multipler of item and all effects on the item
  • MinQuality and MaxQuality of item and all effects on the item

When creating an item its quality is chosen randomly from a value of 0.0 (lowest) to 1.0 (highest). Quality and multiplier values for the item and all effects are then computed. The overall calculation is:

  Quality = Random(0.0, 1.0)  

  QualitySum   = (MaxItemQuality - MinItemQuality) * Quality + MinItemQuality
  MultiplerSum = ItemMultipler

  For (All Effects in Item)
       QualitySum   += (MaxEffectQuality - MinEffectQuality) * Quality + MinEffectQuality
       MultiplerSum += EffectMultipler
  Next

  if (MultiplierSum < 0)
       Value = abs(QualitySum + BaseItemPrice / MultiplierSum)
  else
       Value = QualitySum + BaseItemPrice * MultiplierSum


Item Name Generation[edit]

In general the item name is generated in the following format:

[Prefix1] [Prefix2] [Material] [Base Name] of [Suffix]

Any missing fields are ignored, for example if the item doesn't have a Prefix2 or if the Material name is empty. If the final item name is longer than 32 characters, the name is regenerated in the following order:

  1. Material name removed
  2. Prefix2 name removed
  3. Suffix name removed

Thus, the shortest name an item can have will be [Prefix1] [Base Name].

Unique names are slightly different depending on the type of name generation specified in the unique record:

  • Prefix: [Unique Name] [Base Name]
  • Suffix: [Base Name] of [Unique Name]
  • Exact: [Unique Name]

ObRandItem To-Do List[edit]

Features, items, and ideas that need to be added to the program.

Item Generation[edit]

  • Implement the "Remove Duplicates" setting. Decide exactly what duplicates we wish to detect and what to do with them. Duplicate items can be removed and references to them in level lists replaced with the remaining item. Similarly, duplicate enchantments, scripts, and spells can be removed and replaced with the original.
  • Load and merge multiple ESP files.
  • The "EnchantCharge" effect should be correctly applied to weapons with enchantments.

User Interface[edit]

  • Random seed value to project options
  • Use a relative path for the data filenames where possible instead of an absolute path (relative to the project file)
  • Add output capabilities to the base item, effect, and unique classes. This is in preparation of possibly editing these file directly in the program.
  • Allow reloading of the display filters file.
  • Possibly save generation data for the last set of items. This would allow the user to review what base item, effects, and other settings were used to generate a particular item (viewed by right-clicking an item in the list and choosing a 'View Generate Data' menu for instance). Information that would need to be stored:
  • Item FormID
  • Base item
  • All effects (prefix, suffix, unique)
  • Ratio used
  • Level lists the item was added to
  • Add simple dialogue for editing or viewing records
  • Icons for records in the list and tree controls
  • Let the generation process be interruptable (change the "Generate" button to "Cancel" when creating items)
  • Some form of caching for enchantment/script (and other related) editor IDs used in other records.
  • Proper sorting of enchantment/scripts used in records (currently sorts by form ID rather than the displayed editor ID).
  • Allow proper renaming of a record list field at runtime. Currently the "User Data" field is hard coded in the list initializers to display "Level" for use in ObRandItem. When the record list class is reused in other projects this will need to be changed.
  • Fields for the mod author/summary.

Low Level[edit]

  • Figure out a good method of signaling the tree control to changes in record counts. A custom Windows message is a likely solution
  • Save record list format/options to a file which is then reloaded when the program is next started. This will allow changes in list column width, sort fields, etc... to be kept between sessions.
  • Complete ESP merging ability. Need the ability to correct a duplicate editor/form ID.

Questions[edit]

These are various development questions mainly targeted at Jaga. To be removed when answered or when I e-mail him directly.

Version History[edit]

v0.10 - 23 April 2006[edit]

First release, no UI, only basic functionality.


v0.20 - 28 April 2006[edit]

Added the user interface and completed the basic functions.


v0.25 - 5 May 2006[edit]

Added various features and fixed bugs.

  • Added item count for level lists and effect count for enchantments in the record list.
  • Supports empty name fields for effects.
  • Item name maximum length changed from 64 to 32 characters.
  • Fixed a bug with weapon enchant charge not being correctly set.
  • Added completely new level list support through "levellists.dat".
  • The "NameMask" field was added to effects to apply effects only to items with specific names.
  • Added the "NameID" field to effects to uniquely identify an effect for use in unique records.
  • Added the "CustomType" field to base items and the "CustomTypes" field to effects. This is used to apply effects based on a custom defined type.

v0.26 - 6 May 2006[edit]

Mainly bug fixes and minor feature additions.

  • Fixed level list records having a level of 0 in level lists.
  • The output ESP filename is no longer limited to 64 characters.
  • Data files are now reset when loaded.
  • Leveled lists that are defined as empty (Empty = true) will not have a number appended to their first instance. Extra instances created once the first list is filled will have the counter number appended as usual.
  • Enchantments are set to the effect level defined in the data file (should not affect anything).
  • Item levels are now set to the maximum level of the base item and any effects on it.
  • Bows will no longer accept a reach type effect.
  • The "ResetLevels" field was added to the level lists data file.
  • Random numbers generated with the bell option are now properly limited to the correct range.
  • The RandomBell value can exceed the original limits of 0 to 100 to allow more variety in item level distributions.
  • Added controls for the random bell options to the UI.
  • Reverted to the item level distribution used in MwRandItem. It shouldn't have a noticeable effect unless the RandomBell option is used in which case it will help in generating more lower or higher level items as desired.
  • Added the chance of adding a second prefix to an item. The chance of having a second prefix is the same as having one prefix. If the prefix chance is 25% the chance of having two prefixes will be 6% (0.25 * 0.25 = 0.06).

v0.30 - 9 May 2006[edit]

  • Now properly checks the suffix against the prefix2 effect to ensure a valid combination.
  • Added FormID and EditorID duplication checks. The program will not use an ID that currently exists in the ESP file. These checks only add an additional ~10% to the overall generation time.
  • Improved the item level distribution method. Instead of just taking the maximum level we modify that level by a percentage (10%) of levels from other effects. This creates a smoother and more natural level progression.
  • Slightly improved random number generation of the upper bound number. Previously the maximum value would only occur 1 in 32767 times.
  • Changed the item level distribution to less favor lower level items.
  • Each time you generate a set of items the file "levelcounts.csv" will be created. The first column is levels (0 to 100) and the second column is the count of items created with that level. This lets you easily view the level distribution if needed.
  • Added simple merging of a single ESP file before item generation.
  • Added the script effect implementation.
  • Output plugin filenames that end in ".ESM" are automatically saved as master files.
  • Changed the item name generation for non-uniques. Now takes into account the effect level when determining which parts to remove first.
  • Added the "MaxNameLength" option to the project file to allow specifying a custom maximum length for item names.
  • Added level list count to generate tab.
  • Added single merged ESP file controls to generate tab.
  • Added the necessary fields and implementation for supporting the SEFF (script) effect type for enchantments.
  • Added spell type, spell level, enchantment type, and script type fields to the DisplayFilters.dat file.
  • Added the "RemoveNormalItems" option to the project file and the user interface. When selected it prevents items with no effects from being created.
  • Changed how the total number of items requested is used. The program now tries to continue to create the requested amount even if some attempts fail. This might result in some generations taking longer but will almost always create the desired number. Item generation is aborted if too many failed attempts occur to prevent an infinite loop. The number of "No valid base item" error messages that are reported have been reduced and a report of the total number of failed generation attempts is reported.
  • Speed, reach, and weight fields are now rounded to 2 decimal places.
  • Added basic modal dialog for viewing leveled item records (double-click on a record in the list). If a leveled list contains another list that list can be opened by double-clicking it as well.
  • Added similar dialogue for enchantments and weapons (more will be added in the next release).
  • Added the "HidePrefix2" option to the project file. Is set to true by default to hide the second prefix name.
  • Effects can now have multiple NameMasks.
  • The actor value "Hand-to-Hand" is now a valid value in addition to the old "Hand to Hand".


v0.31 - 10 May 2006[edit]

  • Added the "LevelFactor" to the item file. Adjust this percent value to increase the level of items with higher level effects.
  • NOTE: Changed the format of the SuffixChance, PrefixChance, and UniqueChance in the project file to match how every other percent value is stored. Ensure the correct values for these chances are used in project files saved in previous versions.
  • Item levels should be decreased slightly now if any effects are negative and have a significant level (a negative effect of level 1 would only reduce the level by 0.1 with the default LevelFactor). An negative is defined as one that has a Multiplier value of less than zero.
  • Added the "MinEffectLevel" and "MaxEffectLevel" in the BaseItems.dat file. Effects now check these levels to see if they can be applied to the item. If omitted the item can have effects of any level.


v0.32 - 10 May 2006[edit]

  • Fixed a bug in the Suffix/Prefix/Unique chance loading.
  • Added leveled list distribution (currently defaults to on using the "DistributeLists" parameter in the config file).


v0.35 - 12 May 2006[edit]

  • Removed the limit of the number of items in the "NameMask" field on an effect and the "CustomTypes" field of a leveled list.
  • The level of a item is now adjusted downwards if it has any negative effects. The amount is equal to the level of the negative effect. For example, if the negative effect has a level of "1" the final item level will be reduced by 1. A negative effect is one with a negative multiplier value.
  • Added the "CustomTypes" field to the effect record. As the name implies, it allows effects to only apply to items with a matching CustomType field.
  • Window is maximized by default on startup.
  • Added the form ID to the enchantment, weapon, and leveled list dialogs.
  • Added the option to create a specific number of each item type in addition to the previous method of creating a total number of items. To activate this new form of item creation uncheck the "Num Items" checkbox and enter the desired number for each of the desired item types.
  • Added the "MaterialChance" field to the options file. Modify this to change the chance the material has of being included in the item name (default value of 75%).
  • Added the "NameDelimiter" field to the options file. Set this to a character you want added to the beginning and end of all item names.
  • Added dialogs for armor, book, clothing, misc and script records.
  • Added a "level" field on the relevant record dialogs.


v0.36 - 13 May 2006[edit]

  • Changed to the most generous base item level distribution.


v0.37 - 14 May 2006[edit]

  • Only effects between the selected min/max levels will used.
  • Added the "ForceMinLevel" option in the project file. When this is true the level distribution will be shifted to favor higher level items more.


v0.40 - 24 May 2006[edit]

  • Added the "light" item type.
  • Added the "sigil" item type.
  • Added the extended options dialog.
  • Moved some lesser used options on the generation tab to the extended options dialog.
  • The "Remove Duplicates" option will now remove duplicate enchantments. Selecting this option can significantly slow down item generation when creating a large number of enchantments.


v0.41 - 29 May 2006[edit]

  • Default sigil stone data was changed to only allow script and enchant effects. By removing the "None" effect type it also prevents unenchanted sigil stones from being created.
  • Duplicate enchantment checking now has no noticeable effect on the generation time.
  • Added the "Check Duplicates" option. When this is true (and Remove Duplicates is false) any duplicate enchantments will be output to the log but not removed. This allows for testing of the remove duplicate function to ensure the displayed enchantments are truly identical.
  • Added basic duplicate checking for items. Has little to no effect on the generation time.
  • Note that the current implementation of duplicate checking is relatively simple and while it can eliminate most duplicate items and enchantments, it will not catch them all. Current accuracy for matching effects is set at 1%. This value can be increased/decreased as needed to obtain the required balance.
  • Added the "Generate More Items" button. Using this button will create a set of items and add it to the existing items. This allows an ESP file to be created in several stages.


v0.42 - 2 June 2006[edit]

  • Blank lines in a batch project file list are ignored.
  • Duplicate items with no effects are properly removed.
  • Item using reused enchantments are have the enchantment and charge correctly set now.


v0.43 - 5 June 2007[edit]

  • Changed how item duplicates are checked. This should reduce the small number of duplicates left over by the previous method. May not work correctly on sigil stones (needs to be tested). Duplicate items are now checked across sessions in a batch build.
  • Added the missing "Fade" parameter to light items. Default value is 1.0 if omitted.
  • Added a "Run Batch" command to the file menu. Choosing this will clear the current project settings so ensure to save any changes (you'll be prompted if needed). The creation process will run normally with each project in the batch being loaded and run one at a time. At the end the last project used will remain loaded and you'll be able to view all items and other records created during the batch run.


(Hmmmmm... 2007? Okaaay. In addition to engine development, how did y'all find the extra resources to finally solve Einstein's problem, and get around those pesky physics equations surrounding time travel?!?)

Hey, I'm already a year ahead of schedule! How about a raise...;) -- DaveH 22:08, 9 June 2006 (EDT)

v0.44 - 9 June 2006[edit]

  • Fixed bug where header contained incorrect number of records when "remove duplicates" was performed.
  • Fixed bug where displayed "Average Level" was incorrect for batch runs.
  • Fixed incorrect enchantment count when doing multiple generations.
  • Added "light" type to level list definitions.
  • Improved the duplicate enchantment matching. Should now merge more enchantments that are the same (needs testing).
  • Level lists can now have multiple parents (specify multiple "Parent=..." lines, one for each parent).
  • Added the "Insertion" type to the level list data file. This is used to add items predefined in the merged ESP files to the level lists.
  • Changed the method of random number generation used when the "Random Bell" option is selected. A Gaussian distribution is used which allows more flexibility, especially when trying to increase the average level by using a large bell value. Note that using a very large bell value (+200) will likely result in much slower item generation due an increased number of failed generations (depending on the effect and item data used). The new method is much more sensitive to large bell values. Using values larger than ~200 will result in generation slow downs and larger values will result in eventual generation failure do to a large number of failed items. This new method allows the random bell option to work more effectively to increase the average level (ex: a random bell value of 100 increases the average level from 23 to 27 with the 1HEdged weapons data).
  • Changed the generation process to be enchantment centered rather than item centered (as per Jaga's suggestion). This seems to help increase the average item level some (ex: 1HEdged weapons went from an average level of 18 in the previous method to a level of 23 in the new method).

v0.45 - 10 June 2006[edit]

  • The item model name is now compared when removing or checking duplicates. This prevents misc items that are identical except for their model name from being merged.


v0.46 - 13 June 2006[edit]

  • Added the extended ID


v0.50 - 19 June 2006[edit]

  • Added the "ItemEffects" field in the level list data file.
  • Changed to 'beta' releases.
  • Added the "Carried" field to light data in the base items data file.


v0.51 - 20 June 2006[edit]

  • Fixed the omission of the 'Any' value for the ItemEffects field.


v0.52 - 21 June 2006[edit]

  • List 'parents' are now created before any item to ensure fixed form IDs.


v0.53 - 25 June 2006[edit]

  • Added support for sounds in lights using the "Sound" parameter in the base items data file which specifies the sound's editor ID. In order for the sound to correctly be applied the sound must either exist in the merged ESP file or must be one of the default sounds in Oblivion.ESM. Any sound which is not found will be ignored.
  • Added the "OfString" parameter to the project file to allow item names to be localized.
  • Fixed bug in string handling which would omit a character at the end of a string when loading from a text file in certain situations.
  • Fixed bug in string/file handling which would incorrectly whitespace trim a string value enclosed in quotes.

v0.54 - 27 June 2006[edit]

  • Added the "OnlySuffix" and "OnlyPrefix" ItemEffects types.
  • Fixed the operation of the "Any" ItemEffects type.
  • Fixed bug where leveled list parents would not be created if no merged ESP file was used.
  • Added the "CreateListParents" field to the project file.
  • The "material" display filter now also checks the item's model for a matching string.
  • Added the "Frequency" field in the base items data file.
  • Multiple "ItemEffects" in level lists are inclusive. For example, "None | OnlyPrefix" will include any mundane item as well as items with just prefixes.


v0.55 - 27 June 2006[edit]

  • "Frequency" now duplicates the base item record when the item file is loaded. The weight of duplicate items is increase by 0.01 to avoid duplicate detection.


v0.56 - 28 June 2006[edit]

  • Fixed a bug where "Frequency" was creating one extra item instance when it was more than 1.
  • Added extra option to the extended options dialog.
  • Changed how the material is chosen to be output in the item name. This makes it much more likely to include the material when it fits.


v0.57 - 29 June 2006[edit]

  • Added the "FirstItemFormID" and "FirstListFormID" fields to the options section in the project file.
  • Level lists now use a separate form ID counter starting at "FirstListFormID" (defaults to 0x01E00000).

Completed and Needs Testing[edit]

The following items have been completed but need testing and verification to ensure they are working correctly. They are organized by the version the change was introduced.

v0.25 - 5 May 2006[edit]

  • Test if unenchanted weapons have the correct enchantment charge when enchanted in the game (i.e., at an altar or with a sigil stone). This applies to both base weapons with no effects (make sure they have a charge) and weapons with an enchantment charge effect (make sure they have the modified charge value).
  • Check if the "EnchantCharge" effect correctly modifies a weapon's charge when enchanted. This is likely broken as it depends on the order the effects are applied. Assuming the EnchantCharge effect is a prefix it will be applied first. If the weapon is then given an enchantment effect its charge will be overwritten by the charge on the enchantment.

v0.30 - 9 May 2006[edit]

  • Ensure items of the maximum level are properly being generated in the correct amounts.
  • Ensure the item level distribution tweaks are fine. The file "itemlevels.csv" is created with each generation to aid in viewing the level distribution.
  • The script effect seems to work but has not been tested in-game.
  • Check that output plugin filenames that end in ".ESM" are properly saved as master files.
  • Check that the new item name generation works as desired.
  • The merged ESP file seems to work fine but actual in-game tests are needed to ensure the merged and the new items work properly together.
  • SEFF type effects on enchantments seem to work fine but should be tested in game if we are going to use them.
  • Ensure the change in how the total number of items is created works fine and has the desired outcome.


v0.40 - NYR[edit]

  • The new light type needs to be tested in game.
  • The new sigil stone type needs to be tested in game.

Completed and Tested[edit]

v0.25 - 5 May 2006[edit]

  • Enchantment EditorIDs are correctly showing in the record list.
  • Item count for LVLI records correctly being displayed.
  • Effect count for ENCH/SPEL/INGR/SGST records correctly being displayed.
  • Item level column added to record list correctly displays and sorts the item level.
  • "CustomType" (formally suggested as "ItemMask") field has been added to the "BaseItems.dat" file for use in the level list definitions. Working as designed.
  • Weapon charges are properly set using the enchantment charge value.
  • Changed the value effect type to use the Min/MaxEffect parameters to modify the base items price a set percentage. For example, a value prefix with an effect range of 50 to 200 will result in an item's base price being increased from 50 to 200%. A value prefix with an effect range of -75 to -50 will result in the item's base price being reduced by 75 to 50%. Quality and Multiplier parameters are still used to modify the final item's price for a value effect. Note: for a strict percentage change only, use MinQuality/MaxQuality/Multiplier all set to "1".
  • Level list generation has been completely redone and uses the "levellists.dat" file for the list definitions. Basic functionality is worked and verified through hand-created CS container items.
  • Added the "NameMask" field to effects.
  • Item name generation should properly ignore any effects with an empty name field as well as limit the item name length to 32 bytes. Working as expected.
  • Uniques in general have been tested, working as expected (even a unique's reach effect is thrown out correctly on bows - v0.26 test addition).
  • NameID addition to effects is used properly in Unique records.
  • Item count sorting for LVLI records (list sorts by item count properly).

v0.26 - 6 May 2006[edit]

  • Fixed level list records having a level of 0 in level lists.
  • The output ESP filename is no longer limited to 64 characters.
  • Data files are now reset when loaded.
  • Leveled lists that are defined as empty (Empty = true) will not have a number appended to their first instance. Extra instances created once the first list is filled will have the counter number appended as usual.
  • Bows will no longer accept a reach type effect.
  • The random bell option appears to work with a variety of values from -50 to 150 with appropriate results.
  • The second prefix seems to be working correctly in general. Invalid double prefixes are not being created. Second prefix effects being correctly applied.
  • Item levels are now set to the maximum level of the base item and any effects on it.
  • The "ResetLevels" field was added to the level lists data file.


v0.30 - 9 May 2006[edit]

  • Editor and Form ID duplication checks appear to be working correctly.
  • The "MaxNameLength" option seems to be working as expected.
  • The new spell type, spell level, enchantment type, and script type filters seem to work fine.
  • "RemoveNormalItems" option works fine although it may increase generation time slightly.
  • Speed, reach, and weight fields are now rounded to 2 decimal places.
  • Basic functionality of the new enchantment, leveled item, and weapon dialogs is working fine.
  • "HidePrefix2" option seems to work fine.
  • Script IDs are properly shown in the record list.
  • Effect count sorting for effect (ENCH) records works correctly.
  • Basic functionality of multiple NameMasks on an effect is working correctly.


v0.31 - 10 May 2006[edit]

  • Basic functionality of the modified item level calculations works correctly.


v0.35 - NYR[edit]

  • Changes to removing limits on NameMask and CustomTypes fields seem to work fine.
  • The new "CustomTypes" field on effects seems to work as expected.
  • Basic functionality of reducing item level with negative effects works.
  • The new mode of item creation seems to work correctly.
  • The "MaterialChance" field appears to work fine.
  • The "NameDelimiter" field works as expected.


Using ObRandItem[edit]

ObRandItem is a Windows program that can create a large number of randomized items (weapons, armor, lights, clothing, sigil stones, enchantments) from a much smaller set of base item and effects and save that to a new Oblivion ESP or ESM file. Its basic use is relatively simple but there are a large amount of options that can be used to fine tune the random item output.

Features[edit]

ObRandItem Can

  • Create a large number of randomized items from a smaller set of item and effect data (text files).
  • Save to Oblivion ESP (plug-ins) or ESM (master) files.
  • Create weapons, armor, clothing, misc items, sigil stones, lights and scrolls.
  • Create items with the randomized effects of: weight, value, reach, damage, script, enchantment, enchant charge, armor, health, and speed.
  • Automatically create leveled lists holding the random items as simple or as complex as needed.
  • Preview properties of created items and other records quickly and easily.
  • Merge new items with an external ESP file.
  • Use a variety of methods to create the editor ID of new items.
  • Generate an item name based on the item and applied effects.
  • Ensure no duplicate editor or form IDs are used.
  • Save settings in project files for later use.
  • Batch process multiple project files in order to create exactly the random item distribution you want.
  • Prevent duplicate random items from being created.
  • Typically make 100,000 items in under a minute of generation time (depends on CPU, data, and options used).
  • Run on most versions of Windows (95 and above).


ObRandItem Cannot

  • Generate items or effects other than those contained in the base data files.
  • Edit individual item properties after generation.
  • Merge more than one ESP file with the random items.
  • Create random items and sets like those found in the Diablo series.

Quick Starting Guide[edit]

This is a quick list of steps performed in a typical item generation to get you started. A more detailed explanation of the various steps can be found below.

  1. Start up ObRandItem (or choose File-New Project to clear the current settings)
  2. Select the base items data file to use
  3. Select the effects data file to use
  4. Optionally select the level list data file and the merged ESP file
  5. Choose the output ESP/ESM file (typically your Oblivion\Data folder)
  6. Set the initial options (the default options are good enough to start with)
  7. Save the project file for later use
  8. Generate a small test set of items (100-1000 depending on the size of the base data files you are using)
  9. Move to the 'Item View' tab to preview the created items (double-click on a record in the list to view its properties)
  10. Adjust options as needed and perform more test generations (the output ESP will be overwritten as needed)
  11. Perform the final item generation
  12. Save the project file
  13. Load the output file in the Construction Set for further editing as needed
  14. Install the new mod and try it out


How It Works[edit]

The method used to generate the random items is a simple once you understand it yet it can produce a very large number of possible items from a small set of data. The basic idea is that we begin with an unmodified base item and optionally add one or more effects to it. Each item has the potential to have 3 different effects applied to it: two prefixes and one suffix.

[Prefix1] [Prefix2] Base Item [Suffix]

The base items are held in single text data file and all effects, suffixes and prefixes, are held in another. The chance that an item has a prefix/suffix can be specified in the program with the defaults of the prefix chance is 25% and the suffix chance is 50%. This means that generally one half of the items created will have a suffix, one half will have one prefix, one quarter will have a prefix and a suffix, 1 in 16 will have two prefixes, and 1 in 32 will have two prefixes and a suffix.

For each random item that is created the program first picks one base item. It then checks if the item should have any prefixes or suffixes applied to it or not. If it does it finds all the effects which are valid for that base item (ex: you cannot have a 'damage' effect applied to a piece of armor). For items with multiple effects it also checks to make sure the various effects do not conflict with each other (ex: adding two 'damage' effects is not allowed nor is adding two different types of enchantments).

If this form of item generation seems familiar it probably is. It is very close to the system used by the Diablo series but that is the only similarity. There is no current support for adding other Diablo-like item features like item sets or socketed items.

The item generation method used by ObRandItem basically means that your quality, variety, and number of random items output will depend on the quality, variety, and size of the base item and effect data files. The data files included with ObRandItem are only a basic set of items and effects and the potential output is mostly limited by your imagination and effort in preparing these data files.


Possible Combinations[edit]

As an example to demonstrate the large number of possible random items consider a set of just 10 base items, 5 prefixes, and 5 suffixes. Since not all prefixes/suffixes will be compatible with each other or each item we'll assume that on average 3 of the 5 prefixes and suffixes can be applied to each item.

With this set the possible number of random items produces is about 370.

  • 10 Base Items with no effects
  • 30 = (3 * 10) Items with one prefix
  • 30 = (10 * 3) Items with one suffix
  • 60 = (3 * 2 * 10) Items with two prefixes
  • 90 = (3 * 10 * 3) Items with one prefix and one suffix
  • 180 = (3 * 2 * 10 * 3) Items with two prefixes and one suffix
  • 370 Total

It is also possible for each suffix/prefix to have a small amount of variability. For example, a single prefix that increase the item's value could have its effect range from 25 to 50%. Even considering a small amount of individual variability increases the total number of possible items quickly. In the above example if each prefix/suffix had only 3 possible values the total number of different random items increases from 370 to 6400.

  • 10 Base Items with no effects
  • 90 = ((3 * 10) * 3) Items with one prefix
  • 90 = ((10 * 3) * 3) Items with one suffix
  • 540 = ((3 * 2 * 10) * 3 * 3) Items with two prefixes
  • 810 = ((3 * 10 * 3) * 3 * 3) Items with one prefix and one suffix
  • 4860 = ((3 * 2 * 10 * 3) * 3 * 3 * 3) Items with two prefixes and one suffix
  • 6400 Total

One can easily see that with dozens, or even hundreds, of base items and effects the possible number of items quickly grows into millions, billions, and beyond.

Editing Data Files[edit]

The data files used by ObRandItem are the most important part of creating randomized items and effects. Data files are simple text files and are edited outside of ObRandItem by any text editor (Notepad for example). The description and explanation of the data files used by the program are listed below and include links to their complete format. Of those listed only the base items and the effect files are absolutely necessary.


Base Items[edit]

The base items data file contains the definition for all the base items available for generation. The final items created will be these items combined with one or more randomized effects. This file contains multiple item definitions that look like the following:

        Item
                ItemType = Armor
                Name = "Cuirass"
                Material = "Chitin"
                BasePrice = 25
                ItemLevel = 1
                Weight = 6
                EnchantPts = 100
                Armor = 10
                BipedParts = Upper Body | Lower Body
                Health = 300
                MBModel = "a\A_M_Chitin_Cuirass_GND.nif"
                MWModel = "a_m_chitin_chest2"
                FBModel = "a_m_chitin_chest3"
                FWModel = "a_m_chitin_chest4"
                MIcon = "a\TX_Chitin_curaiss.tga"
                FIcon = "a\TX_Chitin_curaiss2.tga"
                EffectMask = Enchant | None | Armor
                HideAmulet = false
                HideRings = true
                ArmorType = Light
        End

The explanation of the fields are as follows:

  • Item and End: These begin and end an item definition record.
  • ItemType: This specifies the type of item and should be the first line in an item definition. Valid item types include Armor, Clothing, Light, Misc, Scroll, Sigil, Staff, and Weapon. Note that staffs are separated from weapons due to their differences in enchanting.
  • Name: The base item name used to generate the final name for the randomized item.
  • Material: The item material for the item, if any. This is separate from the item name so that very long names can be more easily shortened by removing the material.
  • Base Price: The base price of the item in gold pieces (or septims). The final value of the random item will increase and decrease as effects are added to it.
  • Item Level: The rough level of the item. Assign lower levels to things like iron and steel and higher levels to better materials like ebony and daedric. This is used to create leveled lists and when trying to achieve a specific level distribution.
  • Weight, Health, and EnchantPts: More basic item properties.
  • Armor: To match the value used in the construction set, divide this value by 100 to get the in-game armor rating. For example, the value of '10' here would be a rating of 0.1 in-game.
  • BipedParts: Specifies the body parts the piece of armor covers. This field is special as it can take multiple values separated by the '|' character.
  • MBModel and MWModel: The male biped and world model files. Look at the existing armor pieces in the construction set to reuse game models or specify custom models.
  • FBModel and FWModel: Similarly, female biped and world world files.
  • MIcon and FIcon: The male and female inventory icons files.
  • EffectMask: This optional field can be used to specify exactly what type of effects you want applied to the item. In this case the item can accept an enchantment, can exist without any effects, and can accept an effect raising or lowering its armor rating. No other effects will be applied to this item. If this field is omitted items will accept any valid effect by default.

See the Complete Base Item Format for more details on the fields and the values they can take.