Oblivion Mod:Split Infinity
Contents
- 1 Split Infinity Mod
- 2 Mod Goals
- 3 Mod Features
- 4 Project Status
- 5 Mod Screenshots
- 6 Development & Testing Teams
- 7 Development Notes
- 7.1 General Lists
- 7.2 BaseItem.dat
- 7.3 Effects.dat
- 7.4 Uniques.dat
- 7.5 LevelLists.dat
- 7.6 ProjectFile.obri
- 7.7 DisplayFilters.dat
- 7.8 Item Value Calculation
- 7.9 Item Name Generation
- 7.10 ObRandItem To-Do List
- 7.11 Questions
- 7.12 Version History
- 7.12.1 v0.10 - 23 April 2006
- 7.12.2 v0.20 - 28 April 2006
- 7.12.3 v0.25 - 5 May 2006
- 7.12.4 v0.26 - 6 May 2006
- 7.12.5 v0.30 - 9 May 2006
- 7.12.6 v0.31 - 10 May 2006
- 7.12.7 v0.32 - 10 May 2006
- 7.12.8 v0.35 - 12 May 2006
- 7.12.9 v0.36 - 13 May 2006
- 7.12.10 v0.37 - 14 May 2006
- 7.12.11 v0.40 - 24 May 2006
- 7.12.12 v0.41 - 29 May 2006
- 7.12.13 v0.42 - 2 June 2006
- 7.12.14 v0.43 - 5 June 2007
- 7.12.15 v0.44 - 9 June 2006
- 7.12.16 v0.45 - 10 June 2006
- 7.12.17 v0.46 - 13 June 2006
- 7.12.18 v0.50 - 19 June 2006
- 7.12.19 v0.51 - 20 June 2006
- 7.12.20 v0.52 - 21 June 2006
- 7.12.21 v0.53 - 25 June 2006
- 7.12.22 v0.54 - 27 June 2006
- 7.12.23 v0.55 - 27 June 2006
- 7.12.24 v0.56 - 28 June 2006
- 7.12.25 v0.57 - 29 June 2006
- 7.13 Completed and Needs Testing
- 7.14 Completed and Tested
- 8 Using ObRandItem
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.
-
Official WIP thread on the Bethesda Oblivion Modding ForumsAnother thread (the upper one is dead)Broken link as of 17 March, 2008Thread with some explanationLink broken, unfortunately.
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]
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.
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.
|
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.
|
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:
|
Attributes[edit]
|
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:
-
- Any attribute (Attributes)
- Any skill (Skills)
or one of the following values:
|
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:
|
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:
Multiple values can be specified separated by the "|" character, for example:
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:
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:
If the EnchantMask is omitted a default value will be used:
|
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:
|
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:
|
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.
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:
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:
|
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:
|
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:
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:
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:
|
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:
|
---|---|
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
|
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 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:
|
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:
|
|
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:
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:
|
|
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:
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:
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:
|
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:
Numbers can also be used to zero-pad the values, for example:
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.
|
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.
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:
|
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:
|
|
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:
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:
-
- Material name removed
- Prefix2 name removed
- 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 hardcoded 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.
-
- Start up ObRandItem (or choose File-New Project to clear the current settings)
- Select the base items data file to use
- Select the effects data file to use
- Optionally select the level list data file and the merged ESP file
- Choose the output ESP/ESM file (typically your Oblivion\Data folder)
- Set the initial options (the default options are good enough to start with)
- Save the project file for later use
- Generate a small test set of items (100-1000 depending on the size of the base data files you are using)
- Move to the 'Item View' tab to preview the created items (double-click on a record in the list to view its properties)
- Adjust options as needed and perform more test generations (the output ESP will be overwritten as needed)
- Perform the final item generation
- Save the project file
- Load the output file in the Construction Set for further editing as needed
- 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.