Вы находитесь на странице: 1из 9

Name: Blockhead

Version: 10.2
Date: 5/12/15
Category: Miscellaneous
Required: Patch 1.2.0416, Oblivion Script Extender, NPC Tex Tweak
(Recommended)
Author(s): shadeMe
Source: http://oblivion.nexusmods.com/mods/43752
Forum: http://forums.bethsoft.com/topic/1068205-shademes-flyspeck-
creations/

Description
=======

Blockhead is an OBSE plugin in its late forties that has had enough of the Oblivion engine’s limitations.
Born in a robber button and brought up by a Dachshund named Colin, it learnt the harsh facts of reality
early. Only to laugh at its face, tweak its nose and drop ice cubes down its vestments.

Over the course of its unnecessarily long and insipid life, it has achieved a great many things, such as:
 The compulsory serving of asparagus at breakfast.
 Unrestricted camera movement in the race edit menu.
 The ability to override the inventory menu’s idle animations.
 The induction of the word ‘contrafibularities’ in the Oxford English dictionary.
 The ability to override head and body assets of NPCs on a per-NPC/per-Race basis.
 The ability to override animations of NPCs on a per-NPC/per-Race basis.
 Tidyman’s carpets.

Fine Print
======

The camera in the race/sex menu can be controlled with the directional keys (arrow keys and WSAD) and
the mouse (while holding down the Shift key). It can be reset to its original position by clicking on the left
mouse button and dragging. Movement and rotation speeds can be configured in the plugin’s INI file.

Inventory idle animation overriding allows custom idle animations to be applied on the inventory menu’s
3D player model without resorting to replacing existing assets. There are 8 available overrides, from which
one is automatically selected by the engine depending upon the player character’s equipped weapon. The
override values in the INI file should be set to the filename+extension of a valid KF file placed inside the
Meshes\Characters\_Male directory.
Blockhead implements a 3-tier override tool for customizing NPC body/head textures and meshes:
 Tier 1 (Script) – Applied by using script commands. Refer to the command list below.

 Tier 2 (Per-NPC) – Applied by placing assets (textures/models) in the following folder:


<Textures\Meshes>\Characters\<Body\Head>AssetOverrides\PerNPC\<ModFileName.ext>.

Asset naming convention: 00XXXXXX_<PartName>.<ext>, where XXXXXX – FormID of the NPC


(without the mod index).

Auxiliary files such as normal maps, TRI, EGM, EGT files, etc. need to be similarly named, i.e,
<FileNameAsAbove>_n.dds.

 Tier 3 (Per-Race) –
Body: Applied by placing assets in the following folder:
<Textures\Meshes>\Characters\BodyAssetOverrides\PerRace\<M\F> (where M\F corresponds to
the gender of the NPC).

Asset naming convention: XXX_<BodyPartName>.<ext>, where XXX – Name (not the editorID) of
the race.

Head: Head part asset overrides work differently. Since all head part related paths are defined, by
default, at the Race level, overrides are only used to support gender variance. The override file
paths are automatically derived from the originals defined in the Race record.

Asset naming convention: <Original Path\Filename>_<M\F>.<ext>, where M/F – Gender.

As with Tier 2, auxiliary files need to be renamed appropriately.

Valid BodyPart Names:


 UpperBody
 LowerBody
 Hand
 Foot
 Tail

Valid HeadPart Names:


 Head
 EarsMale
 EarsFemale
 Mouth
 TeethLower
 TeethUpper
 Tongue
 EyesLeft (Model override only)
 EyesRight (Model override only)

Order of precedence: Tier 1 > Tier 2 > Tier 3 > Default Asset.

Tier 1 overrides do not persist between game sessions and therefore need to be reapplied on loading a
save game.

Body/Head parts without a pre-assigned asset can also be overridden, i.e., parts that do not have a valid
model/texture path assigned in the editor. Tier 3 overrides for such head parts, however, must be placed
in the following directory:
<Textures\Meshes>\Characters\HeadAssetOverrides\PerRace\<M\F> (where M\F corresponds to the
gender of the NPC)
…with the following naming convention: XXX_<HeadPartName>.<ext>

Body EGT file overrides work in the same way as body mesh overrides.

In addition to the aforementioned head parts, Blockhead adds limited overriding support for the
following:
 Hair – Hair assets can be assigned gender-specific files by adding a ‘-M’ or ‘-F’ suffix to
their filenames.
 Age Overlays – Age textures can be overridden on a per-NPC basis through script
commands or custom assets placed in the following folder:
Textures\Characters\AgeTextureOverrides\<ModFileName.ext>.

File naming convention: 00XXXXXX_YY.dds, where XXXXXX – FormID of the NPC (without the mod
index), and YY – Age. Script overrides supersede the latter but do not persist b’ween game
sessions.

NPC animations can be overridden on a per-NPC/per-Race basis too. Animation overrides are
implemented as special animations internally. All animation files need to be placed in the following
directory: Meshes\Characters\_Male\SpecialAnims.
 Per-NPC – Override files must use the following naming convention:
<Filename>_BLKD_PERNPC_XXX_00YYYYYY.kf, where XXX – Name of the mod file name +
extension, YYYYYY – FormID of the NPC record, without the mod index.
 Per-Race – Override files must use the following naming convention:
<Filename>_BLKD_PERRACE_XXX_Y.kf, where XXX – Name (not editorID) of the race, Y – Gender
(M/F).

The first part of the filename must follow the same naming convention as the vanilla game’s, e.g.,
BowIdle_PERRACE_Impossibly-Endowed Marshmallow Elf_M.

An NPC can be affected by more than one override at the same time – The engine has the final say on
which animation file gets used (the actual mechanics of the picking logic is yet to be
discovered/understood).

The plugin’s INI file is generated after first run (in the same folder as the DLL file) and contains options to
toggle its features.

It is recommended that Blockhead be used in tandem with the NPC Tex Tweak plugin, which offers users
more avenues to customize NPC textures.

Command List
=========
SetBodyAssetOverride – Applies a body asset (script) override to the calling ref’s NPC form. Returns true if
successful. The texture path must be relative to the Data\<Textures\Meshes> folder and must point to a
valid asset file.
(success:bool) ref.SetBodyAssetOverride
overridePathFormatString:string var1 var2 ... var20 bodyPart:int assetType:int
(opt)baseNPC:ref

GetBodyAssetOverride – Returns the (script) override asset path of a body part. Returns an empty string
when no override is found.
(path:string) ref.GetBodyAssetOverride bodyPart:int assetType:int
(opt)baseNPC:ref

ResetBodyAssetOverride – Removes a body part’s (script) override asset.


(nothing) ref.ResetBodyAssetOverride bodyPart:int assetType:int
(opt)baseNPC:ref

SetHeadAssetOverride – Applies a head asset (script) override to the calling ref’s NPC form. Returns true if
successful. The texture path must be relative to the Data\<Textures\Meshes> folder and must point to a
valid asset file.
(success:bool) ref.SetHeadAssetOverride
overridePathFormatString:string var1 var2 ... var20 headPart:int assetType:int
(opt)baseNPC:ref

GetHeadAssetOverride – Returns the (script) override asset path of a head part. Returns an empty string
when no override is found.
(path:string) ref.GetBodyAssetOverride headPart:int assetType:int
(opt)baseNPC:ref

ResetHeadAssetOverride – Removes a head part’s (script) override asset.


(nothing) ref.ResetHeadAssetOverride headPart:int assetType:int
(opt)baseNPC:ref

GetFaceGenAge – Returns the age of the calling ref’s NPC form.


(age:float) ref.GetFaceGenAge (opt)baseNPC:ref

SetFaceGenAge – Sets the NPC’s age. Age values must lie between 15 and 65.
(nothing) ref.GetFaceGenAge age:int (opt)baseNPC:ref

RefreshAnimData – Refreshes the calling reference’s animation state.


(nothing) ref.RefreshAnimData

SetAgeTextureOverride – Overrides the age texture base path for the calling ref’s NPC form. Returns true
if successful. The path must be relative to the Data\Textures folder and the corresponding textures must
use the following naming convention: <BasePath><Age>.dds
(nothing) ref.SetAgeTextureOverride overridePathFormatString:string
var1 var2 ... var20 (opt)baseNPC:ref

ResetAgeTextureOverride – Removes the NPC’s age texture base path override.


(nothing) ref.ResetAgeTextureOverride (opt)baseNPC:ref

ToggleAnimOverride – Enables/Disables Blockhead’s animation overrides on the NPC. RefreshAnimData


needs to be called for immediate effect.
(nothing) ref.ToggleAnimOverride state:bool (opt)baseNPC:ref

Valid Body Parts:


UpperBody – 2
LowerBody – 3
Hand - 4
Foot - 5
Tail - 15

Valid Head Parts:


Head – 0
EarsMale – 1
EarsFemale - 2
Mouth - 3
TeethLower - 4
TeethUpper - 5
Tongue - 6
EyesLeft - 7
EyesRight - 8

Valid Asset Types:


Texture – 1
Model – 2
Body EGT - 3

Asset related changes will not take effect until the reference’s 3D is reloaded.

Install
====
1. Extract this archive to any folder and then copy the contents to Oblivion's Data folder. Delete the
plugin’s INI when upgrading to a new version.
2. Launch the game with the OBSE launcher.

Uninstall
======
1. Delete the following files/folders:
Data\OBSE\Plugins\Blockhead.dll
Data\OBSE\Plugins\Blockhead.ini

Compatibility
========
This plugin is compatible with every other OBSE plugin there is. Should you find a discrepancy, please
report it through the contact avenues as stated below.

Animation overrides will not work on NPCs that use non-standard file paths for their skeletons, i.e.,
skeleton meshes must be placed in the Meshes\Characters\_Male directory. Special animations added
using OBSE’s ToggleSpecialAnim script command may be superseded by Blockhead’s overrides
occasionally. Overrides for some animation groups (such as Cast) may not work consistently.

Known Issues
=========
 The player’s body model may no update correctly when loading a save game with a
player character of a different sex. Equipping/unequipping wearable items fixes this issue.
 Gender-variant hair models may not show up correctly in the race selection menu.
Changing the player’s eye models fixes this issue by refreshing the 3D data.

Contact
=====
Do send in your suggestions and ideas to improve the plugin - I’ll be more than happy to add it in
whenever necessary. Also, if you find any bugs, please report them.

For anything about the modification, PM me at


Bethsoft Forums: shadeMe

Credits
=====
Special thanks to:
Ian Patterson, Stephen Abel and Paul Connelly (The OBSE Team) - For keeping up the Oblivion
Modding spirit and providing the modding community with Oblivion’s Elixir of Immortality. And for the
API.
LHammonds - For his readme generator.
nuska – For keeping me occupied on a Sunday.
scanti – For the NPC Tex Tweak plugin and his pioneering work in the field of engine extension.
The Rest of the Modding Community - For the inspiration I needed to start modding and all the
wonderful mods which I use.
Bethesda - For providing a rather malleable game.

Tools Used
=======
7-Zip - http://www.tesnexus.com/downloads/file.php?id=15579
Oblivion Mod Manager - http://www.tesnexus.com/downloads/file.php?id=2097
Oblivion Script Extender (OBSE) - http://obse.silverlock.org
Microsoft Visual Studio 2012 - http://www.microsoft.com/
IDA Pro - http://hex-rays.com
Readme Generator - http://lhammonds.game-host.org/obmm/tools_readme_generator1.asp
Rum - http://en.wikipedia.org/wiki/Rum
Fish - http://en.wikipedia.org/wiki/Fish
foobar2000 - http://www.foobar2000.org

Usage
====
License: WML 1.0 Modify and Redistribute, Share Alike - ish
• You are free to redistribute this work in an unmodified/modified form, so long as you: 1) obtain
permission from the author(s), 2) give the author(s) credit proportional to their contribution to the final
work, 3) distribute the final work under the same terms, and 4) make artistic resources included with the
final work available under the same terms as below.

• Artistic resources (meshes, textures, sounds, etc.) included with this work may be included in unmodified
form with modified versions of this work, so long as their authors are given credit proportional to their
contribution to the final work. Note that artistic resources may not be modified, or extracted from this
work, unless permission is given elsewhere.

If you use the assets of a mod which was not created by you, please give due credit to its creator.
They deserve it.

Legal
====
This mod is provided as "is". The author is not responsible for any damage done to your save game, game
installation or even your computer (though such an event happening is highly unlikely). Use at your own
risk.

Change Log
========
10.3 – Fix body override script commands
10.2 – Fix hotfix, change override file naming convention for gender variant hair assets
10.1 – Hotfix for missing body parts and clothes
10.0 – Add support for body EGT overrides, fix CTD on save game load, fix gender variant hair texture
overrides, fix ResetAgeTextureOverride script command
9.2 – Bug fixes
9.1 – Changed anim override file naming convention, added a script command to toggle anim overrides,
bug fixes
9.0 – Allowed overrides for body/head parts without default assets, added age texture and hair overriding,
bug fixes
8.1 – Fixed various bugs, removed the unused (and buggy) ‘Idle’ inventory idle override
8.0 – Upgraded to VS 2012 C++ runtimes, added tier-based overriding for head assets, added animation
overriding, bug fixes
7.0 – Added support for body model overrides, updated script commands, implemented 3-tier system
6.0 – Added support for scripted body texture overrides, FaceGen age getter/setter commands, removed
pre-generated face texture related patches (the NPC Tex Tweak provides a more complete solution to the
issue)
5.1 – Fixed a body texture override related CTD
5.0 – Implemented per-NPC body texture overriding
4.0 – Implemented inventory idle overriding
3.1 – Fixed age texture pathing
3.0 – Added RaceSexMenu camera poser
2.0 – Added editor support
1.0 – Initial Release