Wish List

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search

Use this page to list additions or enhancements that you would like to see. Keep in mind that flaming the devs in a list of changes we want them to consider is probably a Bad Idea(tm). Keep it civil and keep discussion to the talk page.

NOTE: Bethesda is no longer developing Oblivion and the Construction Set, so there would seem to be little point in maintaining or adding to this wish list. Requests for new functionality may be better directed to the OBSE Wish List.

General Construction Set Enhancements[edit | edit source]

Making NIF files within the CS[edit | edit source]

Wouldn't it be just brilliant to have NIF files created within the CS? It would mean that you don't have to download extra programs - which all have viruses in them too i might add.

BirthSign Fix[edit | edit source]

The Issue with Custom Birthsign Graphics not displaying in Game.

Except the one specific to the character creation screen Custom Birthsigns do not display in game. A fix on this would be greatly appreciated. The workaround is to override default Birthsigns but then they inherit the Custom Birthsign graphic which is far from ideal.

ShaggyMonster 05:21 17/01/2007


Creating Companions[edit | edit source]

Hey, would it be possible to add a topic on this wiki for instructions on how to make companions, like a small tutorial to explain the simple steps to make a simple compcnion? that would be cool.


Creating new skills[edit | edit source]

I would love the ability to makemy own unique skills, such as climbing (with low angles for lower levels, climing gear providing bonuses and experts able to climb sheer cliffs).

--I'm just going to point out that this would be difficult because the skills are a part of the programming, and would be extremely difficult to throw into the mod. I'm going to try to explain this the best I can for non-tech geeks, so try to bear with me. Oblivion runs off of two things: The program which is made by Bethesda and the files that contain mods or the original game. Skills are made in the program, which for security purposes, isn't freely available to the public. The only way to change the skills effectively is in the program. Email questions to the_legendary_hero_stat with the normal hotmail address (I write it this way to avoid spam, so please, no spam).

Check out the mod AddActorValues by JRoush. http://tesnexus.com/downloads/file.php?id=33248 --Angel 20:55, 5 August 2010 (EDT)

Object preview window[edit | edit source]

A new window with a quick render preview of the currently selected object in the object tree. Ideally for all objects, including landscape textures, particle effects, actors, etc. Currently the only way appears to be to drop an object into the world, which is tedious and messy.--GhanBuriGhan 10:08, 2 August 2006 (EDT)

Extend the land size limit and the level of detail horizon[edit | edit source]

The CS will allow a land of approx 10x10 quads before it crashes and will accept no more. The only way to extend the land is using a 3rd party merging program. Even using this program the Game will only recognise and use level of detail distant land to a maximum of 96x96 cells. I know this is a huge world but as the game works in a smaller area and only loads regions as it enters or nears them it would surely not be too much of a problem. People will rapidly become bored with a world you can ride across in two or three game days. It doesnt feel very realistic living in one large valley.

CS Panes show up in windows Taskbar[edit | edit source]

CS panes should show up as seperate windows in the taskbar - like the various panes of GIMP. Yeah, it can be a pain at times, but not nearly as much of a pain as having to constantly move the panes around to get at ones behind them, or sacrificing valuable screen space so that all your major panes are visible. --Ebeneezersquid 23:00 20 June 2006 (CST)

Or perhaps make a new tab system within the CS itself. --Omzy 01:19, 21 June 2006 (EDT)
Tabs would be very nice. As would be more sorting options in the item trees. LikeGez 06:41, 21 June 2006 (EDT)

The ability to specify nifs for races[edit | edit source]

This would be nice as you could have a bit more variety. It would make it easier to make children without weird proportions, for instance. As well as making more unique looking races.

Actually, specifying nifs in individual npcs wouldn't be bad either. Would add a lot more variety. --Stardaemon 05:43, 18 May 2006 (EDT)

.NIF-exporter for 3ds max 7+[edit | edit source]

A good working .NIF-exporter for 3ds max 7+ with collision detection whould be nice.

Dialog without voice acting[edit | edit source]

An ability to change the preset filename of a response. Or to have the variable fAIDefaultSpeechMult actually take effect. Either way would fix the problem of text during a conversation between the NPC and the player flying by in about two seconds flat.Manargo

Find Text[edit | edit source]

An ability to double-click or press a button and jump directly from a search result to the reference would be great. (i.e. Search for "AddItem", get results from scripts, double-click on single result and the script editor opens up to that script) Mrflippy

Script Editor Font[edit | edit source]

A way to change the font in the script editor would be nice. Specifically, a monospace font would be nice. --Mrflippy

I found what I assume is a bug that lets you select any font for the script editor.

Click on my name for details. Decoup 00:59, 7 June 2006 (EDT)

Script Syntax Highlighting[edit | edit source]

A number of people have mentioned that they would like syntax highlighting. --Mrflippy

Selecting Model/Sound/Icon[edit | edit source]

It would be nice to be able to choose an objects model or icon graphic without extracting hundreds of megs of data. Mrflippy

Add UI Option Elements[edit | edit source]

It would be great if there would be a way to add UI elements to tweak the configuration of a mod. For example, have a "Slow Levelling" mod which would add a "slowdown" slider (possibly in the same page as the game difficulty slider) to allow the user to choose, dynamically, what level of slowdown desired. Callie

(Didn't see this suggestion and I suggested a more comprehensive version of this, so moving it here.) There should be some way to create new GUI menus. This would involve the creation of an XML file using the same syntax as other menu XML files. In the CS, there should be some "menu linker" dialog. This dialog will contain the list of custom menus. Selecting a menu results in a list of "linker" pairs, each pair linking the <user*> tags in the XML to some variable. That variable can be a script's variable, a value from a function call (e.g. player.getav health), or a global variable. Ideally, custom menus can be added via an esp file, but that's not a necessity. --Maian 06:37, 14 April 2006 (EDT)

In-game dialogs[edit | edit source]

The MessageBox function to be extended with customizable font/button size. If it was possible to specify different font size for the inital message, and the buttons, it would be even better.

Enchantment Settings[edit | edit source]

Add a setting for the number of constant effects that can be added via in game item creation (only one effect is just NOT enough). Add a setting that enables bound items to be used in constant effect enchantments, and remove what ever is preventing that from working and/or fix the bugs with it - even bound item enchantment effects created in the CS do not work, this must be resolved. --MegaBurn 03:28, 13 April 2006 (EDT)

I second the constant effects suggestion, I don't see why you shouldn't be able to add more than one constant effect to wearable items. I wouldn't have a problem needing to use a separate soulgem per constant effect, but I would like to beable to make "Legendary" items like you see already in game, take the Conjurer's Robes for instance, they give you bonuses to all kinds of stats. Enchanting as it is, is already extremely expensive so that balances the game some. You could even, to balance the game further have NPC enchanters for hire, so the warriors and stealth types could make enchanted items for themselves. --Leviathan62089 23:33, 31 August 2007 (EDT)-
I know the reason why Bethesda decided to make Enchanting items incapable of making Legendary items. They want the game to be more practical in the sense that some legendary enchanter who put his whole life into creating an enchanted item is going to be better than someone who's been playing the game for a couple of days, months, or years (whatever your dedication level to this game is). I agree that they should make somewhat more capable enchanting, but it also has the problem of making the game too easy. They should try for some sort of balance between what they have and what Leviathan wants.

"Hide master file stuff" option[edit | edit source]

An option to show/hide all the objects, scripts, dialog, quests, etc. that belong to the master file, i.e. oblivion.esm. Of course, everything will still render. It's just a pain having to find stuff that pertains only to mods. --Maian 06:24, 14 April 2006 (EDT)

Click on the minimized FormID-Tab to sort by FormID. All the FormIDs in your mod are above 0100000, so you'll end up with all objects from your mod neatly arranged.
--JOG 19:15, 14 April 2006 (EDT)
Thanks for the tip, but there's no way to do that for scripts. --Maian 23:20, 14 April 2006 (EDT)
The common way of doing this in Morrowind was just to append 1moddername or _moddername onto all your creations. It's a little ugly, but since noone ever sees the ids... Talkie Toaster 14:39, 25 May 2006 (EDT)
The problem with that, in Morrowind, was that it (reportedly) could mess up scripts using those objects, and we do not know whether or not this true for Oblivion. Plus, as you said, it looks ugly. Also, apparently, Oblivion ignores underscores entirely (very frustrating). --DragoonWraith 00:27, 26 May 2006 (EDT)

New Animation Groups[edit | edit source]

We should be able to create new animation groups. Currently, this is hardcoded. This would allow the usage of new animation files via the LoopGroup script function. --Maian 06:41, 14 April 2006 (EDT)

I've just thought of a nifty workaround, but I'm not sure if it'll work. Although new animation groups can't be created, new animations can be directly linked to animation files in the Idle Animations menu. Create a new .kf file and make sure the animation group it belongs to is an existing idle group (this is specified within the file). Put it in the idleanims folder. In the CS idle animation menu, create a new animation, put it somewhere before the default idle animations, and link it to the file you just created. Add a condition that can only be met by a custom script (maybe a global variable check). In the script that will fire off the animation, make sure the condition is satisfied in the script, then call PickIdle. I haven't tested this idea out yet, but I'll get around to it eventually... --Maian 06:40, 20 April 2006 (EDT)
Just thought I'd mention that the above solution (with some tweaking) kinda works. The biggest problem is that the added animation apparently also affects your viewpoint. I've noticed that some idle animations have a "Camera" branch that might be responsible for viewpoint stuff. (Perhaps someone could experiment on that - I'm working on NifSkope atm.)
I also posted all I know on .kf files at the Animation Tab page.
--Maian 05:21, 4 May 2006 (EDT)

Mod compatibility[edit | edit source]

I'm pretty sure you already know the details on this, since one of you developers replied to Wyre earlier, but I'll mention it here since it's a really important topic. I don't know all the details, but apparently it's impossible for mods to communicate to each other, and fixing this with mod mergers is hard and not ideal. I think one of you developers responded by saying this would require some architectural changes. --Maian 13:04, 17 April 2006 (EDT)

This is another change that would require changing the way Oblivion behaved. TES4Gecko allows you to set ESPs as master files, allowing you (theoretically) to communicate with undefined mods. --Angel 21:01, 5 August 2010 (EDT)

Additional music categories[edit | edit source]

It would be great if support could be added for detecting additional directories in the 'Music' directory to use as additional 'types' of music other than the normal Explore/Public/Dungeon trio. I know I'd immediately use this to allow different music between Ayleid ruins, forts, and caves. Would it really be -that- hard to add extra options to the 'music' dropdown for an area? It would also allow modders to add their own music to the areas they create. --GorunNova 00:48, 25 April 2006 (EDT)

Please please please please pretty pretty please. Since there is apparently no way to stream music as in Morrowind, this would be the next best (possibly even better) option. --efin 19:09, 28 April 2006 (EDT)

I'd also like the ability to set custom battle music for a worldspace as well, and the ability to set the music type to none. I'd also like script commands to stream music (with a parameters that determine whether the current song should fade out or not, and to determine how fast it fades out), and to change the music playlists (for both exploration and battle) with the same music fading parameters as the stream music command. --Arklon 20:06, 1 May 2006 (EDT) Updated 1:23, 2 May 2006 (EDT)

Another vote for more in-depth music settings in the CS. In addition to those mentioned above, it'd be great if options were added for looping and returning to where the world music left off after leaving a battle. --Psychobaka 01:12, 4 May 2006 (EDT)

Ok, there IS a working StreamMusic function, but this request is for additional music categories. --Arklon 21:32, 7 May 2006 (EDT)

Yes, I'm glad to see it. :) But still, I'm begging for this additional option! The ability to make more categories would be tremendously useful. --efin 19:46, 11 May 2006 (EDT)

Yes, creating new music types would be much appreciated. It would allow regional music styles, for example.

Self cast spells with an area[edit | edit source]

Instead of making hacks for such an extremely common spell type in other rpgs, it would be great if the PC could cast a spell on themself that would damage everyone but themselves in the area of effect. --Akkuma

This is possible with 2 simple scripts: You first need to move an activator to an unused cell or create a new one and open the reference window of your activator. Check Persistent Reference and Initially Disabled. Change the Reference Editor ID on top op the Reference Window to Ref1. Now you can use the activator in a scripted spell that moves the activator right above the player and casts an area spell on the player. The first spell has this spell script and is cast on the player self:

Scn 000YourSpellScript
Ref Ref1
Ref me

Begin ScriptEffectStart

Set me to getself
Ref1.moveto me 0, 0, 250 ; place the activator above the player
Ref1.cast YourAreaSpell me

End

The last script is also used in a spell and is cast by the activator on the player. This script should have an area effect to be able to affect other NPC's. This means the player is also affected by the spell but I used a function to detect if the target is the player or not:

scn 000YourAreaSpellScript
ref me

Begin ScriptEffectStart

Set me to getself
If me != player ;if the target isn't the player 
	;your function (Example: player.pushactoraway me 100)
Endif

End

This script doesn't use OBSE so anybody could use these scripts. You should also try out the example. (if someone has questions or if the script isn't working, feel free to post me about it.) Darkness X 17:20, 15 August 2009 (EDT)

Sortable Mod list[edit | edit source]

I'm getting quite a few plugins in my directory, and when I go to File->Data... there doesn't seem to be a way to sort them. I would like to be able to sort them alphabetically at least. (This would be good in the plugin list in the actual game as well) --Mrflippy 02:02, 26 April 2006 (EDT)

Actually that would mess up the load order. Certain mods need to load before/after others to work. So if you sort them like that it would screw up those mods. Unless you mean just for viewing... KyleWollaston 22:52, 25 November 2008 (EST)

Download BOSS (Better Oblivion Sorting Software) by Random007 http://tesnexus.com/downloads/file.php?id=20516 --Angel 21:03, 5 August 2010 (EDT)

Ability to change intro movie in CS[edit | edit source]

One thing that is quite irritating for anyone who is making a total conversion is the fact that to change the opening movie to the game you either have to rename files in the data files directory, or change the .ini settings. It would be very nice if we could have some sort of option to have a different opening movie loaded when a certain mod is loaded. --eddwills 13:50, 30 April 2006 (EDT)

You think they could put something in the script commands for movie files.
Answered my own question...there is the playbink script...

Objects that act like water[edit | edit source]

There should be the option to make objects act like water. You should be able to select whether you want it to act like the world space's water type, or a different specified water type. You should also have the ability to change whether or not you want it to be textured with the water type's surface texture. --Arklon 19:56, 3 May 2006 (EDT)

Object Duplicating on Context Menu[edit | edit source]

This would be very helpful. It sucks having to make every object from scratch.--Snake 20:21, 4 May 2006 (EDT)

You can already duplicate objects by editing an one and giving it a different editor id. It will bring up a prompt asking you if you want to create a new object. A context menu item would be nice though. --Maian 06:34, 6 May 2006 (EDT)

Enable "Merge To Master" Feature[edit | edit source]

I'm pretty sure the setting's there; I found the string "WhoCanMerge" in the CS EXE using a hex editor, but following the steps for Morrowind's CS to enable Merge to Master doesn't work. That means either the syntax is different, or the feature is disabled in the public CS release.

The purpose of this is pretty simple: total conversions without jumping through a ton of hoops to create an ESM file. --Gblues 21:42, 4 May 2006 (EDT)

Allow Scripted Items in Leveled Item Lists[edit | edit source]

Not sure why this doesn't work, but it's a lovely annoyance that has completely screwed up another of my mods.--Snake 06:20, 6 May 2006 (EDT)

Allow any item to be a light source[edit | edit source]

There seems to be no way to make items not belonging to light group to emit light. I'd like to be able to do this. And I've seen lots of attempts to make it happen, but none of them have worked. Adding flames work ok in most places, but where's the light? Sure I can make any mesh emit, but the object using the mesh has to belong to the light group, thus, all it'll do is emit light. I'm not sure can this be achieved by scripts in other items, but I'm strugling with arrows, and they cannot be scripted. --Arttuli 14:56, 9 May 2006 (EDT)

Custom Magic Effects[edit | edit source]

It would be excellent to be able to add custom Magic Effects to the list, for a more robust implementation of the HasMagicEffect function and scripted spell system, among other things. --Phinix 02:52, 10 May 2006 (PST)

Failing that, the possibility to give custom icons to the Scripted Spell effect... Burden is getting really tiresome.
I would like to be able to use ScriptEffectStart, ScriptEffectUpdate, and ScriptEffectFinish when enchanting apparel items.
I would like to be able to use ScriptEffectStart, ScriptEffectUpdate, and ScriptEffectFinish when enchanting apparel items. --DruidJP585 14:38, 15 July 2007 (EDT)
Download Oblivion Magic Extender by JRoush. http://tesnexus.com/downloads/file.php?id=31981 --Angel 21:05, 5 August 2010 (EDT)

Allow global variables for effect magnitude[edit | edit source]

Allow use of global short variables when assigning the magnitude value to custom spell effects, enchantments, etc. in the CS. This would allow for the magnitude to be adjusted in real-time by scripted routines that would modify this global variable, based on conditions set forth by the mod. --Phinix 07:11, 13 May 2006 (PST)

Alternatively, allow scripts to create spells dynamically.--DragoonWraith 22:16, 13 May 2006 (EDT)

Custom materials for objects[edit | edit source]

All we have are the predefined materials for Havok sounds. It'd be nice to have the ability to add more with custom impact/walk/whatever sounds. --Arklon 19:39, 18 May 2006 (EDT)

Custom moons[edit | edit source]

Rather than being forced to use Masser and Secunda's textures, it'd be nice to be able to use custom moon textures. --Arklon 17:09, 19 May 2006 (EDT)

Couldn't use just replace Masser and Secunda's textures? Or do you want to add moons to the sky? --DragoonWraith 17:32, 19 May 2006 (EDT)
Replacing the stock moon textures would affect everything, and I don't want that. I just want custom moon textures for a specific sky. (You can already set custom sun textures.) Like making "moons" in Oblivion that are torn-apart celestial bodies. --Arklon 23:02, 22 May 2006 (EDT)
Ah, I see. OK then. --DragoonWraith 00:45, 23 May 2006 (EDT)

Custom Magic Icons[edit | edit source]

It'd be nice to choose a DDS file we want for a custom spell. --KaylaKaze

Dragoon Wraith TALK 13:12, 1 June 2006 (EDT): It'd be nicer to simply have true custom effects, rather than only the scripted effect (not saying I don't like the scripted effect, the scripted effect is great).

Update distant object data for only one cell[edit | edit source]

You can regenerate distant land textures for invidivual cells and regions, but not distant object data (distant buildings and trees). It'd be nice to be able to update the distant object for only one cell/region rather than having to update it for the entire world space. --Arklon 16:45, 7 June 2006 (EDT)

Worldobject groups[edit | edit source]

This request is to make modding with heavily versatile tilesets more convienient. Say, you have a building constructed out of 10 statics and a door or two. You want to use it as a generic building. Rather than building or copying and pasting it over and over, you could select all the tiles that compose the building and save them as a worldobject group. Then, you could click-and-drag worldobject groups from the object pane, then you could make a few minor tweaks to the placed, for example, building. --Arklon 22:51, 18 June 2006 (EDT)

I won't lie, this is a truly awesome request. --Omzy 23:15, 18 June 2006 (EDT)

Creating new mapicons[edit | edit source]

Map markers have a limited set of icons -- ayleid ruin, ruined fort, cave, mine, landmark, stable, hamlet, city gates, oblivion gate, that's it. It would be great if instead of radio buttons we had a combobox, and the possibility to add more marker types. Mods that are fleshing out the other provinces could greatly benefit if they could add icons for dwemer ruins, barrows, ancestral tombs, chimer fortresses, and so on. And of course, the unique dungeons of Arena would need their own unique icons. Gez 06:41, 21 June 2006 (EDT)

BSA Browsing & Making[edit | edit source]

Making an activator/container/etc. version of an existing static item (for example) is bothersome. I'm reduced to creating "dummy" files in the directory structures, with the same name, selecting them as the art file, then deleting them. Alternatively, the context menu could get the options "Copy to Activator", "Copy to Container", and "Copy to Static", like spell effects have a Copy to Enchanting.

Furthermore, the possibility to automatically create a bsa file of the same name as the esp file, which would include all the new resources, would be invaluable.Gez 06:41, 21 June 2006 (EDT)

Search & Replace of missing references[edit | edit source]

If an esp depends on an esm, and that esm has a new version which changed some IDs (for example, to prevent conflicts with another mod), then it would be very useful to be able to replace in the esp the old, disappeared name with the new one. It's something the Enchanted Editor allowed for Morrowind mods. In a general way, I'm used to the extra functions brought by TESAME, Enchanted Editor, TESFile, MWEdit, and GenMod. These softwares are usually open source, so integrating these features in the TESCS wouldn't be too much of a hassle.Gez 06:41, 21 June 2006 (EDT)

Distant LOD In-Game For All Quads[edit | edit source]

Right now, only 6*6 quads' (I think from -3,-3 to 3,3) distant LOD are displayed in game. I'd be nice to get that extended to the entire worldspace area, from -8,-8 to 8,8. --Arklon 16:06, 17 September 2006 (EDT)

Only two problems with that. Many computers can't even handle Distant LOD at all. Secondly, the RAM and video requirements would be huge. Either that, or they'd have to change the programming so it would render at an even crappier level for the most distant stuff. Furthermore, with RAM requirements above 2GB, most OS systems can't handle the memory fast enough to render it without lagging. They will eventually keep increasing the LOD size (because its what gaming companies do).

Scripting Hyperlinks in Books[edit | edit source]

Ability to add a <SCR> (script) function tags to books as hyperlinks, so that clicking will run an associated command. An example would be having a journal of teleportation where you can click places you have visited and found (or set) return points. --Phinix 01:02, 21 October 2006 (PST)

Properties or options window for multiple objects in render window[edit | edit source]

I would like to have something like this: Select multiple items in render, click on button properties (or edit>properties):

Position:

x: *varies*

y: *varies*

z: *varies*


Rotation:

x: 0

y: 0

z: 0


Scale: 1

Ownership: none

Parent: none


Something similar to properties in AutoCad. A window in which you can set coordinates, ownership, scale and enable parent to multiple selected items instead of clicking on one and loosing will to do it after third. Martinb 12:25, 11 October 2007 (EDT)

Scripting Enhancements[edit | edit source]

The Morrowind Functions We Lost![edit | edit source]

I would be quite happy if we got things like GetSoundPlaying, GetArmorType, While, CellChanged, Companion Share (ok, not really a function, still want it), StartScript (I guess that would require global scripts like their used to be, so might be impossible - but don't tell me that StartQuest does the same thing, that is a lie), and whatever other functions I haven't thought of off the top of my head. --DragoonWraith 10:00, 23 May 2006 (EDT)

Companion Share is incredibly easy to add in. Check out Companion Share.Talkie Toaster 14:43, 25 May 2006 (EDT)
Thanks, that's a really great mod you've made there! And quite a bit better than Companion Share was. Though, to be fair, it's not as "incredibly easy" as simply setting Companion to 1, or whatever the syntax was. We still need the other functions though, especially GetSoundPlaying and CellChanged (at least, in my opinion, these are the most important). --DragoonWraith 00:33, 26 May 2006 (EDT)
StartQuest does do the same thing, except as far as the Targeted Scripts go, which was an unintentional feature. ;-) It would be nice to get some kind of special new AttachScript function which would allow you to stick a new Object Script onto any reference, though. By that I mean attaching an additional script as well as keeping the old one, not just replacing the existing script that is attached to that reference (duplicating the targeted script functionality and all). --JT 17:14, 27 May 2006 (EDT)
Yes, well, that's what I meant. A SetReference function would also be excellent (for setting the default reference of a script to the player, for example, you could test things like Begin OnHit for the player... --DragoonWraith 18:04, 27 May 2006 (EDT)

---

I would also prefer a "StartScript" function, or maybe even a whole new script launcher menu within the CS based on it, one that would allow for the starting of scripts on user defined criteria (GameTime, global, cellchanged, ScriptRunning <script>, ItemUsed <Item>, WeaponUsed <weapon>, ItemHeld, WeaponEquipped, OnHitBy <weapon> etc).

So basically being able to start a script by using any function within the CS as starting criteria..

The ItemUsed/ItemHeld, and WeaponUsed/WeaponHeld function would be the best, as such a system could allow us to attach scripts to objects without overwriting the default scripts attached to these items(if any exist), not to mention it would allow multiple user made scripts to affect the same item or weapon as if the script were directly attached to it by an object script..

ScriptRunning would also be an invaluable way to start scripts, as it would allow you to "piggy back" other scripts, without interfering with them. So if you wanted a script to run at the same time as the vampirism scripts, you could easily do this...

This would work in a similar fashion the current dialog criteria, where you could add several criteria for the script to run..

Example..

BPCustStart

ScriptRunning <some script> == 1 && ItemHeld <Some Item> == 1 && GameTime <Hour Min>

Execute MyScript


Something else that I really want back is Morrowinds enchantment system, more of a in-game feature than anything, but would require some of the boundaries in the CS to be removed, in fact I think almost all the enchantment boundaries need removed.. -Smoke

Apply physics on Objects/Characters[edit | edit source]

I would like to be able to apply a velocity to an object or character during script start / end or possibly even during update. --Kharmak 18:38, 21 May 2006 (EDT)Kharmak

DragoonWraith 11:55, 18 May 2006 (EDT): Seconding this!
Thirding this. There are many good, practical, entertaining, and downright evil situations where this could be used. --JT 17:17, 27 May 2006 (EDT)

player.setanimationset[edit | edit source]

It would be nice to be able to take the animations a NPC uses and have the PC (or another NPC) use them. This would let modders make dummy NPCs that just hold info on what animations to use and make spells and items to change what animations a character uses. --Farmer bobathan 08:54, 27 July 2008 (EDT)

Math on References[edit | edit source]

I would like to be able to check

if (RefOne == RefTwo + 1)

and also assign references in that way. Being able to print them out would also be fantastic. I can't help but think it is an unreleased Message formatting flag. --Tegid 23:57, 27 April 2006 (EDT)

Please clarify for me how exactly one does math with references; an explanation of potential uses would be nice, too. Thanks. Grundulum 02:39, 28 April 2006 (EDT)
Since a reference is externally Hexidecimal number (01000ee9) for instance, I want to be able to look for my current reference + 1 (01000ee9 + 1) = (01000eea) or + 2 etc. Since references seem to be allocated sequentially, if I created a block of items all at once, I could iterate through them by starting at the primary reference and then just increasing my reference variable by 1 each frame and then I'd have access to the next guy in the list. There would be problems to overcome, but that is the basic gist of why this would be nice.--Tegid 09:16, 28 April 2006 (EDT)

I should add that you can actually assigned a value to a reference variable, and the math works. But if you have an actual reference, it either doesn't, or I need to figure out the correct amount to be adding/subtracting. IE

  ref first
  set first to 00000001
  ref second
  set second to 00000002
  ref third
  set third to 00000003
  if (first + second == third)
    Message "This works",1
  endif

Will hit the message. But if I subtract two real references from each other, I do not get any valid amount to test. --Tegid 11:02, 28 April 2006 (EDT)

I'd rather see a GetNext function than have reference arithmetic. You can't count on refs being in sequential order - what happens if you decide to remove a ref, and later re-add it? --Maian 05:00, 4 May 2006 (EDT)
This won't work anyway. A reference isn't just a number, it's a pointer to the object's structure, and changes everytime you add a new plugin. The number you get when you read a reference-variable is the current FormID of the structure the reference-variable points to. You can't set a reference-variable to a numeric value and then access the object with that FormID. You always need to use a function to set a reference-variable.--JOG 10:19, 14 May 2006 (EDT)
I don't see the point of such reference math, either. What we could use instead would be a few iterators - say, one for iterating over all the items in an inventory/container (see wish list item below), one for iterating over all livings in a cell and so on. It would allow Tegid to do all he wants to do, while at the same time being safe to use. --Khadir 05:13, 20 June 2006 (EDT)

Determine an object's inventory[edit | edit source]

I would like a way to retrieve references to objects in an object's inventory from a script. --Mrflippy

Determine attacker or caster[edit | edit source]

I would like a way to determine what actor or object initiated an attack or cast from within a script. For example, a targeted spell's script runs on the target. I would like this script to know who initially cast the spell. --Mrflippy

I haven't looked too indepthly at the spell creation window, but wouldn't it be possible to have two Script Effects, one with range Target and the other with range Self? Then just have the Self one report who self is to the other script, or to another script.--DragoonWraith 11:27, 10 May 2006 (EDT)
I have now looked into this, and it is definitely possible. Just create a spell with two script effects, one on Target and the other on Self.--DragoonWraith 22:20, 13 May 2006 (EDT)

Data Structures[edit | edit source]

Lists or arrays would be wonderful --Mrflippy 18:10, 12 April 2006 (EDT)

Seconded. --Grey 12:37, 10 May 2006 (EDT)

Loops[edit | edit source]

Loops to go with the above suggestion. They were in Morrowind. Would be awesome here (along with ways to get lists of inventory, spells, etc.) 'nuff said. --Maian 06:50, 14 April 2006 (EDT)

I also second this request. Ppl, this is the basics of most languages ... --Grey 12:39, 10 May 2006 (EDT)

Accessing dynamic script variables[edit | edit source]

It would be awesome to be able to access variables in scripts attached to dynamically created objects. Currently this only works on persistant objects.

For example:

PlaceAtMe scriptObject, 1, 0, 0
set scriptObject.data to 5

This produces a script error on compile, even if scriptObject has an attached script that contains a variable named data. --Mrflippy 18:11, 12 April 2006 (EDT)

I second that request! --MegaBurn 20:30, 27 April 2006 (EDT)
Seconded. One of the most needed features. --Grey 12:42, 10 May 2006 (EDT)
--Kkuhlmann 08:30, 13 April 2006 (EDT): Your snippet of code is failing for a different reason -- "scriptObject" is a base object. You can't call set on a base object, only a reference. It may be that your point is that this won't work:
ref myScriptObject
set myScriptObject to PlaceAtMe scriptObject, 1
set myScriptObject.data to 5
This won't work because myScriptObject, as a reference variable, could be ANY reference -- when the script is compiled, it can't know what value will be contained in myScriptObject -- whether it will have a script, or what script it will be.
I'm really not sure how you would expect what you're asking for to work.
--Mrflippy 11:45, 13 April 2006 (EDT) Err, yeah, sorry, I messed up on the initial example and the second is what I actually meant. In any case, the functionality I would like is the ability to access variables in reference variables. Now that I think about it, I suppose some sort of casting system or similar solution would be necessary to make this work. This ability would be very helpful for scripting.
--Grey: I think something like
if myScriptObject.GetVar data
set myScriptObject.data to 5
endif
should be enough to work with those dynamic variables.
--JOG 10:39, 14 May 2006 (EDT)The problem is most likely that once the script is compiled, the variables no longer have verbose names but numbers, "set myscriptobject.data to 5" is translated to "set variable number X of FormID Y to 5". Funnily, this one compiles, but still doesn't work:
ref myScriptObject
short data
set myScriptObject to PlaceAtMe scriptObject, 1
set myScriptObject.data to 5

I've dealt with this problem by creating a persistent reference... Just one... with all the vars the PlaceAtMe child object will need... The parent script sets the vars in the Persistent reference to what the child will require. Spawns the child, and the child has a doOnce in the OnLoad Block of its script... It grabs the vars from the persistence ref, then resets persistent ref's vars back to null as needed. --Dejunai 07:44, 15 September 2006 (EDT)

Horse Functions[edit | edit source]

Please add functions to force NPC's to mount and dismount a horse regardless of their AI package or combat state. (rewrite, see history) --MegaBurn 21:13, 27 April 2006 (EDT)

I have added an article to the solutions area titled 'NPCs, Horses, and you...' that explains how to get an NPC/Companion to mount when you mount and dismount when you dismount. --Breave 4:18, 22 April 2006 (EDT)
A pseudo force can be done by capturing the NPC's active AI package (with the "Use Horse" flag set) and then applying the OBSE command SetPackageUseHorse against it, followed by an EvaluatePackage command. --Noabody 13:02, 25 February 2011 (EST)

Text Box Menu[edit | edit source]

I saw an XML file for a simple text box but no function to trigger it. This would be useful in naming pets, including horses, or in more complex scripted stuff like scroll writing with runic phrases. --MegaBurn 03:28, 13 April 2006 (EDT)

Companion Share Menu[edit | edit source]

Just a container menu with the NPC's encumbrance. This would resolve the various problems with using hacked dummy containers to access a NPC's inventory. (Why do I get the feeling this is already planned for an expansion pack?) --MegaBurn 03:28, 13 April 2006 (EDT)

Item Selection Function[edit | edit source]

A function that asks the PC to select an item from their inventory. Must include filters for item types. (example snipped, see history) --MegaBurn 21:20, 27 April 2006 (EDT)

Apparatus Selection Menu[edit | edit source]

Basically a totally scripted and dynamic version of the alchemy menu. Used for stuff like crafting items (e.g. armor, weapons, arrows, etc), cooking (e.g. “simplified alchemy”, creates new dynamic alchemy ingredients), refining alchemy ingredients (e.g. creates new dynamic alchemy ingredients), scroll making (e.g. select different ink wells for different effect modifiers), etc... Much of this can be done with on-activate scripts but adding a new dynamic menu is a much better solution. --MegaBurn 03:28, 13 April 2006 (EDT)

Here's a little more conceptual groundwork. You'd need a few slots into which you place apparati (spelling?) that will be used and retained, a few other slots into which to place ingredients/materials that will be consumed, a variable accessed by the menu that governs success, and a function for determining generated items. This could range from as simple as "You have tongs, a daedra heart, and an iron shield, so have this Daedric shield instead" to a complexity of "You used high-quality ink with a middle-quality pen, combined with an Inscription skill of 69 and a Restoration of 90. Factoring in luck, you get a level 5 Heal Self scroll." All of the slots and variables could be chosen from a "Menu menu", allowing the modder to create several menus for as many different skills as desired. By the way, consider this idea seconded. Grundulum 02:52, 25 April 2006 (EDT)

Text Variables in Books[edit | edit source]

Being able to use global variables in book/scroll text, like PC name, PC class, PC race, etc... Being able to use script variables in text would be very cool too. --MegaBurn 03:28, 13 April 2006 (EDT)

Seconded. Elementary as a quest-device to drive the player into paranoia "We should keep a close eye on ^PCName. If ^SheHe continues to cross our paths we might have to dispose of ^HimHer."--JOG 10:44, 14 May 2006 (EDT)

Save Book Text[edit | edit source]

Being able to create and edit books and scrolls during game play that any character can read, and saving that text in their normal save game without having to maintain a persistent script variable. Or rather this function would produce a persistent book item that contained script defined text. This is just the logical next step in having free form text input along with using text variables in books. The script would define the font but it would allow players to take notes, keep a real journal, and with more complex scripts issue specific orders to NPC's. Being able to export that text to a text file in their save game folder would be nice too. --MegaBurn 03:28, 13 April 2006 (EDT)

Select Location Input Function[edit | edit source]

Prompts the PC to select a known location from their map. Needs to include specific cell references, not just world map references (e.g. selecting Chorrol Fighters Guild, not just Chorrol). A menu to select connected interior cells would be nice too (e.g. being able to select the Chorrol Fighters Guild Basement specifically). This would return the selected cell so the script could set it as a variable. Would be useful in more complex companion scripts. --MegaBurn 03:28, 13 April 2006 (EDT)

Create Quest[edit | edit source]

Support for dynamically creating quests via scripts, could also be called a quest generator. In short it creates a simple quest to go to a certain location and complete a certain action. Function arguments should include a geneal location type (e.g. cave, fort, etc), level of difficulty (maybe PC level offset), travel range/target region, and the reward. This will likely require increased meta data on all cells organized in a simple database. (examples snipped for length, details added, see history) --MegaBurn 21:02, 27 April 2006 (EDT)

Item, Spell, and object accessor/setter functions[edit | edit source]

It would be quite useful to be able to dynamically change things about items, weapons and armor. For example, to change a weapon's damage, you have to replace it with a completely new weapon. Want to recharge a weapon enchantment via a script? New weapon. Something like ModItemValue, SetItemValue, for example. --MaXiMiUS 11:28, 13 April 2006 (EDT)

I second this request. In fact, I'll go further and say this should apply to all objects, i.e. all the attributes listed in reference windows should have corresponding accessor/setter functions. --Maian 06:19, 14 April 2006 (EDT)

Imho that only makes sense if references are capable of having those attributes. That is (or should be) a request for itself. This is would be particularly useful in smithing/crafting mods. Same Object(ID) but quality (or equivalent) differs.
Alternatively, allow crafting of new Editor_IDs with properties (using some ID as template).--Grey 20:37, 16 April 2006 (EDT)
You make a good point regarding setting properties on references, but there's no reason not have getters for every single property on references or objects. --Maian 21:36, 16 April 2006 (EDT)
That's correct. Didn't sound like that, but was intended. Sorry. Accessors in any case -- Grey 03:24, 17 April 2006 (EDT)
I'd like to see a way to modify references data (like map markers) --xebeth 01:18, 28 April 2006 (EDT)

Expanding this to include spells - GetMagicEffectMagnitude FIDG (just HOW MUCH Fire Damage?), GetMagicEffectDuration ZZOM (how much longer is that Zombie going to be there?), GetSpellMag, GetSpellDur. Maybe something to get the name of the spell causing a given effect? And dynamic, scripted spells: SetSpell [name] [effect] [magnitude] [duration] (multiples of these, at least 5, preferably more like 9) would be awesome. Used as an argument for AddSpell or Cast functions. Like this:

joeMage.Cast ( SetSpell "Elemental" FIDG 75 2 FRDG 5 30 SHDG 150 1 )

Would make things much easier. If you could have it for enchantments, too, even better. --DragoonWraith 23:38, 7 May 2006 (EDT)

I think the obvious problem with this is whether or not the item's new values can be saved. Support for that may not exist fully, plus it would create some huge save files if everyone started modding item values ingame. Still, it would make for some awesome scripts.--Snake 20:04, 12 June 2006 (EDT)
Dragoon Wraith TALK 20:34, 13 June 2006 (EDT): Why should they have to be saved? I would be quite pleased if the spell was entirely temporary, lasting only as long as its duration, and then removed from memory entirely until cast again by a script.

Block Messages[edit | edit source]

Blocking, or disabling default messages from showing up (ie: BlockNextMessage or something), would be quite useful for my mod. After all, the player doesn't need to know that they just got a new weapon and that my mod equipped it on them, right? --MaXiMiUS 23:06, 13 April 2006 (EDT)

Yep this is also #1 on my personal list. Those messages caused by addspell, additem are fair enough when the player should know what happened, but when you want to use it for more creative things (like removing one item and adding another to create the illusion that the item changed) they're just annoying.--JOG 08:54, 22 July 2006 (EDT)

OnAnim block, IsAnimPlaying AnimationID, GetCurrentAnim[edit | edit source]

Syntax would be "Begin OnAnim AnimationGroup". This block would run whenever AnimationGroup plays. For example, if you had "Begin OnAnim CastSelf", that block would run whenever you cast a spell on yourself.

Also, IsAnimPlaying should accept an optional parameter specifying the animation group. Going with the above example, IsAnimPlaying CastSelf should return true when you're casting a spell on yourself. --Maian 06:58, 14 April 2006 (EDT)

I second this; I don't know why it wasn't there to start. There is GetCurrentAIProcedure. Why not GetCurrentAnim too?--Omzy 18:24, 13 June 2006 (EDT)

Math functions[edit | edit source]

A small math library would be really nice: sin, cos, tan, asin, acos, atan (accepts ratio or dx/dy pair), pi, sqrt, pow, exp, abs, log, log10, mod (as in modulus), floor, ceil, abs. Most of those function names are from the standard C math library btw. --Maian 07:02, 14 April 2006 (EDT)

You can do Modulus operations. Use the % symbol. Only one I know that works.Fraktyl 14:52, 16 April 2006 (EDT)
This would be extremely useful for getting the X,Y offset values for use with MoveTo, for example to be certain a conjured creature (or any object spawned through PlaceAtMe) actually appears in front of the player.Phinix 13:53, 7 May 2006 (PST)
sin, cos, tan, arcsin, arccos, arctan, SqRt, and (natural) log. Abs:
if ( var < 0 )
  set var to ( -1 * var )
endif
and Mod is in the game (use %). Pi is a number, just input as many decimal places as you need (I think the limit for a float is seven anyway), so just look that up. Log10 (or any other log) could conceivably be done with a Change-Of-Base formula and the Natural Log, but that's a pain. I'm sure there're expansions for log10, though. Not sure what the difference between pow and exp are (I assume they're "power" and "exponent" respectively), but those are generally minor issues (I can remember exactly one person who wanted one for Morrowind). I don't know what "floor" and "ceil" could mean in mathematics, so I can't help you there.--DragoonWraith 11:22, 10 May 2006 (EDT)
Floor = round down to nearest integer; ceil = round up to nearest integer. Some of the functions I listed are mainly there for convenience. Pi is obviously not necessary, but it would still be nice to have if you don't remember enough digits of pi (which I don't). --Maian 08:33, 11 May 2006 (EDT)
OK, floor and ceiling:
float num
short roundednum
short ceil
short floor

set roundednum to num
;I forget if this will round or truncate, so I'll code for either
if ( roundednum < num )
  set ceil to ( roundednum + 1 )
  set floor to roundednum
elseif ( roundednum > num )
  set ceil to roundednum
  set floor to ( roundednum - 1 )
else ;if roundednum == num, if num is an integer
  set ceil to num
  set floor to num
endif
If shorts set to floats simply truncate, you can have an even simpler code, since roundednum could not be higher than num.

More generic Onload block[edit | edit source]

This would be a generic run-once block. Although this could already be done with a gamemode block and a "doOnce" variable, not only is it inconvenient, but it still produces a bit of overhead. --Maian 19:00, 14 April 2006 (EDT)

Are you looking for the functionality that onLoad already provides? JBurgess 13:26, 15 April 2006 (EDT)

That only works for objects. I was thinking this could also be used for quest/global scripts. On second thought, a better idea would be to just overload OnLoad so that it also works for quest scripts. --Maian 14:19, 15 April 2006 (EDT)

The biggest problem with OnLoad is its dependence on cache that makes it unfunctional in many situations. There's a thread that discusses this issue and even offers possible solutions to the problem, but none of them seems flawless. I assume there was a good reason to make OnLoad behave as it does, but I would love to see an alternative to this function (RunOnce ?) that works more accurately. --Max 10:43, 19 May 2006 (EDT)

OnLoad not working all the time

GetStandingActor / GetStandingPC[edit | edit source]

Function name is self-explanatory. Grundulum 13:20, 19 April 2006 (EDT)

Can't you just check GetSitting and if it returns 0, your actor is standing? --Tegid 18:24, 19 April 2006 (EDT)
You'd probably have to check for swimming and whether they are sleeping or knocked down as well --Mrflippy 21:50, 19 April 2006 (EDT)

Apparently function name is not self-explanatory. Serves me right, making assumptions like that. GetStandingActor in Morrowind returned 1 if an actor was standing on the scripted object. As it was explained to me on the official forums, all of the dungeon traps use GetDistance and then trigger once the player is within a certain distance of the object. This seems silly to me, as it has allowed me to cheat the system by walking on the corners of the "drive you into the spiked ceiling" traps. (GetStandingPC, of course, does the same thing for the player character that GetStandingActor did in general.) Grundulum 22:55, 19 April 2006 (EDT)

I'm not sure GetStanding would help with those traps. The script just needs to be more complex. Something like, five get distance checks would work. One main check centered on the trap that "if includes" the other four checks, then the others would be placed on the corners of the lift platform with a radius equal to the width of the platform. If an actor trips any 3 of the 4 radius checks then the platform shoots up/down. That should prevent cheating. Being able to define a grid instead of a radius would also do it. --MegaBurn 09:12, 20 April 2006 (EDT)
Using the block type OnTrigger would work. When an actor touches the object this block is attached to it will cause the OnTrigger block to fire. --Reznod 02:39, 5 May 2006 (EDT)

Get/Mod/SetWaterLevel[edit | edit source]

Usable only in interiors, but would be ever so handy in designing interesting traps. Grundulum 13:20, 19 April 2006 (EDT)

I second this request. --MegaBurn 19:50, 27 April 2006 (EDT)
I request that for exteriors, as they have a variable water level, too now. This will be fun with hole rivers drying out. So seconded. --Grey 12:45, 10 May 2006 (EDT)
I'll second (or rather fourth) this request. It would be nice to be able to create a scenario similar to the Black Dart Gang finale in Morrowind, Tribunal. The Imperial Dragon 20:40, 14 June 2006 (EDT)

--Harushimo 17:24, 23 December 2009 (EST)Found it! OBSE thank you! From OBSE doc: SetCellWaterHeight - changes the water height of the specified cell. In order for the command to take full effect, the cell must be reloaded (con_PurgeCellBuffers can be used to forcibly unload it if it is still in memory). If used to alter the water height in a loaded cell, the water shader will reflect the new height and actors will switch between swimming and walking animations appropriately. However, floating physics and the water surface will not be updated until the cell is reloaded. This command has no effect in exteriors or in cells which have no water.

    (waterHeightChanged:bool) SetCellWaterHeight cellref newHeightfloat

GetEquippedItem ItemType[edit | edit source]

Returns the ObjectId of the item type equipped on an Actor. Could be useful to recover the ObjectId of equipped items. This can help in scripting new or alternate versions of Bound Spells.--Lord Yig

Well, you get the skill of equipped weapon, but still, it's not all that much. A Tribumal-like function to get types of all equipped armor and weapons types would be so much better. --Balor 08:45, 25 April 2006 (EDT)
Seconded. Tribunal-like GetArmorType + GetWeaponType = GetItemType would be extremely useful.

String variable type[edit | edit source]

Many people want string variables and ways to use them. For example:

  • Ability to rename a horse or custom summoned creature based on player name or user input
  • Use user input in later dialog boxes

--Mrflippy 11:38, 20 April 2006 (EDT)

Modify Enchantments[edit | edit source]

It would be nice to be able to programatically modify enchantments on objects. --Mrflippy 11:38, 20 April 2006 (EDT)

Modify Character Class[edit | edit source]

It would be nice to adjust character class on the fly - ie: swap specialization if the player decides halfway through the game that he wants to play a mage instead of a thief. The same goes for major skills, an AssignMajorSkill(int) function that replaces the major skill in slots 1-8 would be very slick - you could then track the character's highest skills and make character class dynamic based on how the player is playing. --Halo112358 20:59, 22 April 2006 (EDT)

Pause/Unpause in all modes (incl. MenuMode)[edit | edit source]

While I can't think of any examples of the top of my head, a pair of Pause and Unpause functions that work in any modes, including MenuMode, would be nice.

Also, since pausing would now possible outside MenuMode, references should contain a "Can be interacted with when paused" flag, which is pretty self-explanatory. Only those references with this flag can be activated or grab/dragged by the player when the game is paused. --Maian 01:58, 21 April 2006 (EDT)

An example:
Begin MenuMode 1026
;reading book

  Unpause

End
Reading to pass the time!

Export character informations and statistics[edit | edit source]

A script function that export all character informations, statistics and spells to a file to the gamedir. For ingame equip and start the script. So this where very nice. Or only a simpel function that save variables from the script in to a file, when I equip a ring or any other.

Message to Console[edit | edit source]

The ability to write messages to the console would be a great aid to debugging. As it is, MessageBox gets wacked out if you send enough messages to it, and regular Message takes a long time to cycle through, and then sometimes it will whip through a bunch of messages. If I could see all the debug messages I output, I could more easily figure out what is going on with my script. I suppose a full CS-integrated debugger would be too much to ask... ;-) --Mrflippy 21:08, 21 April 2006 (EDT)

Dragoon Wraith TALK 20:40, 13 June 2006 (EDT): That would be great, I would love that. Also, could the Console not have a line limit? ShowQuests is pretty useless, since not every quest fits on the list, and I only get the latter however many, which never includes my scripts (which always start with DW)
Dragoon Wraith TALK 00:27, 20 July 2006 (EDT): The new Oblivion Script Extender has this functionality (not certain how extensive it is yet, since ObSE is currently in alpha stage, little more than a proof of concept).
Dragoon Wraith TALK 16:25, 9 August 2006 (EDT): See OBSE's PrintToConsole.

Modify Leveled Lists via Script[edit | edit source]

I'd like functions to add items into the leveled lists on the fly. It seems like Oblivion took a step back from Morrowind here: we're back to merging leveled lists with external programs. --Halo112358 06:00, 23 April 2006 (EDT)

Second that. It's the hell of a lot more diffcult to keep mods compatible now anyways ... --Grey 12:51, 10 May 2006 (EDT)

Longer MAX_SCRIPT_SIZE![edit | edit source]

My 24KB script officially hit the MAX_SCRIPT_SIZE as I was further expanding Lilarcor's responses. I would really appreciate it if the limit was raised (or even removed), as it is limiting the growth of my wonderful talking sword! :( --MaXiMiUS 21:37, 24 April 2006 (EDT)

You realize that we have quest scripts usable in just such cases, as well as the ability to start and stop them whenever needed? Grundulum 21:41, 24 April 2006 (EDT)
That's redundant, because when I try to use a quest script, I end up having to move all relevant data over to the script, which makes the quest script itself massive, only avoiding the size limit by a few KB at best. Oh, and it ends up making my code confusing as hell to understand. This is an artificial limitation, and this is a wish list, is it not? I wish upon a star, that somebody nice remove this size limit, so I don't have to have half a dozen scripts for one silly weapon :) --MaXiMiUS 22:35, 24 April 2006 (EDT)
I would argue it isn't non-sensical. Remember every script is being interpreted in real-time during game execution. Keeping the scripts down below a certain size makes sense in a lot of ways. It allows you to cache your loads easily and parse through the scripts quickly while running. --Tegid 01:07, 25 April 2006 (EDT)
Not when the script only runs every 5 seconds, assuming you have the weapon, and only does anything every minute, assuming certain conditions are met. The only reason the script is large is so that Lilarcor can talk about EVERYTHING possible. Why would it get interpreted every time anyways? There isn't even more than 10MB of scripts in the entire game, couldn't they just be interpreted once and then loaded into the memory? --MaXiMiUS 15:21, 25 April 2006 (EDT)
The problem is that they don't know what people will do with scripts, and at the time they start processing your script, the script parser doesn't know if it's going to have to run the whole script or just one line. Any it really can't know ahead of time. I'm sure they do something to make the scripts run as fast as possible, but the fact is that in order for them to work correctly, they have to run them during the game and since they don't compile to machinecode, they have to have some subsystem that runs them. That subsystem has to be able to go through 10MB of scripts (sometimes the same script on lots of objects) every frame. By setting an arbitrary (and reasonably large) script size, they can keep the maximum lines processed per script down per frame. YOUR script may not process data that often, but someone elses might, and they can't have THAT 40k script processing every frame.--Tegid 16:19, 25 April 2006 (EDT)
The flaw in your logic there, is that NONE of the scripts are 40k in size. I haven't even seen a 10k size script in vanilla Oblivion, so this is purely a limitation to custom modifications.. --MaXiMiUS 18:49, 25 April 2006 (EDT)
I don't see how that's a flaw. None of their scripts are at the scripting limit, but that doesn't mean they didn't precompute a max script size that made sense for intraframe processing an set it, thereby allowing us to write scripts longer than theirs. They didn't want anyone including themselves to write 40k scripts due to having to process them all between frames. --Tegid 19:58, 25 April 2006 (EDT)
I've found a way to split up my script and avoid the limit, but it still seems inefficient. So what if it has to "process it every frame"? 99% of the time it'll read 5 lines of code and then meet a 'return' command anyways. Being forced to reference other scripts just means MORE work for the scripting engine, not less. Increasing the MAX_SCRIPT_SIZE limit would actually make my script MORE efficient, in that it wouldn't have to start a quest, and have that quest run through loops. I don't see where this "process them all between frames" logic is coming from. Not everything runs in a GameMode block, and the player isn't always in "GameMode" anyways. If I wanted to have a massive event occur when a certain NPC died, I should be able to do that, and without having to reference an external script because I hit an artificial script size limit. --MaXiMiUS 10:25, 26 April 2006 (EDT)
I have to agree with MaX; why impose an artificial limit? If a scripter writes something that is both long and intensive, and it kills end-user performance, then it's not going to be a very popular mod. Not to mention, what happens in two years when Oblivion is still a raging success and every /pre>

This produces a script error on compile, even if scriptObject has an attached script that contains a variable named data. --Mrflippy 18:11, 12 April 2006 (EDT)

I second that request! --MegaBurn 20:30, 27 April 2006 (EDT)
Seconded. One of the most needed features. --Grey 12:42, 10 May 2006 (EDT)
--Kkuhlmann 08:30, 13 April 2006 (EDT): Your snippet of code is failing for a different reason -- "scriptObject" is a base object. You can't call set on a base object, only a reference. It may be that your point is that this won't work:

/pre> This produces a script error on compile, even if scriptObject has an attached script that contains a variable named data. --Mrflippy 18:11, 12 April 2006 (EDT)

I second that request! --MegaBurn 20:30, 27 April 2006 (EDT)
Seconded. One of the most needed features. --Grey 12:42, 10 May 2006 (EDT)
--Kkuhlmann 08:30, 13 April 2006 (EDT): Your snippet of code is failing for a different reason -- "scriptObject" is a base object. You can't call set on a base object, only a reference. It may be that your point is that this won't work:

user has Dual Core AMD 9GHz chips? The arbitrary limit then becomes even more arbitrary. The system is *already* self-limiting -- users will not use mods with poor performance. An additional artificial governor on top of this is not needed. It's not up to Bethesda to try and keep scripters from shooting themselves in the foot; that's an impossible task anyway, as we'll always be able to find a new way to shoot ourselves in the foot. -- Nezroy 16:55, 5 May 2006 (EDT)

OnPCDeath[edit | edit source]

If scripts were run for a single frame after the player's demise, then a new block called OnPCDeath could be added to take advantage of this. The possibilities are numerous: player resurrection in ghost mode (pardon the reference) a la World of Warcraft and the need to find the body before continuing, joining a new Undead faction after being found and raised by some advanced Lich, or just a good old fashioned "fairy-in-a-bottle" Zelda type mod. These are just what I came up with off the top of my head, and a community of thousands could likely do much better given the chance. Grundulum 21:41, 24 April 2006 (EDT)

I second this, the ability to run a script onPCDeath would open up a whole world of possibilities, ranging from corpse finding as Grundulum mentioned, to ideas of my own such as a part of a mod where the player gets trapped, and has no choice but to let themself die, making them panick etc etc. Once they die however, they would wake up a day later in a mysterious tomb or something and have to find their way out, get revenge etc, I don't know, but this really would open up so many possiblities for us all. --eddwills 22:20, 24 April 2006 (EDT)
I'm pretty sure I found a way to do this. It's possible to make the player essential, then you can use the onKnockedOut you can use (The only downside is how the display works out...probably). I haven't actually tested this, or tested to see if the onDeath function can be used on the player actor, but once I will check soon to confirm.

Check out this page: Resurrecting the Player: This page should answer all your questions about resurrecting the player. And the script doesn't use "essential" or "knocked out" functions either. Darkness X 11:11, 5 August 2009 (EDT)

Mobile camera, independent of PC[edit | edit source]

So long as this is a wish list, I might as well mention something else that would be pretty darn cool. If we could get a mobile camera for cutscenes, think about how much mod stories could be improved! Or, even cooler, the camera fly-by over and around the Imperial City in the opening sequence could be run real-time rather than in a video sequence.

If this camera thing became a reality, though, we'd need a few different commands. First, a FixCameraView command that fixes the camera on a point in 2- or 3-D space (if you use "FixCameraView, x, y, z, 2435, 5609, 23958" it fixes on that point in x-y-z space, but if you use "FixCameraView, x, y, 509, 58" it fixes on that point in x-y space and maintains a steady pitch relative to that plane). Next, a StartCamera command, which moves the screen from the PC's eyes to the camera. Last would be StopCamera, which returns control to the player. The camera could be moved with the Move command like any other object; making full use of the FixCameraView command would require a little bit of trigonometry in the script, but would be relatively easily accomplished. Grundulum 02:41, 25 April 2006 (EDT)

Seconded. This is one of the big differences between typical Japanese RPGs and typical Western RPGs: cut-scenes. Cut-scenes can be used to make truly deep stories, character development, and cinematic effects. Oblivion has stories involving the PC and a few NPCs which say a few lines, make happy or sad faces, and that's all. It's alright for this kind of game, but we could use Oblivion for so much more.--Wiseman 18:11, 9 September 2006 (EDT)

GetItemValue[edit | edit source]

It's funny how there's a SetItemValue, but no GetItemValue or stat for item value to use with GetActorValue. This one function is keeping my script from working. --Slserpent

Seconded --Grey 12:58, 10 May 2006 (EDT)

SetIgnoreCombat[edit | edit source]

It would be wonderful to have a new function switch that causes an actor to ignore combat.

A useful example would be to enable a companion NPC to follow the PC retreating from combat. Without this ability, it's pointless having a companion who will always enter into a no-win battle.

A scripter can approximately implement conditional tests such as:

If player.getDistance >= 1500
   setIgnoreCombat True
else player.getDistance <= 200
   SetIgnoreCombat False.

(note: there's probably better conditions to test)

Currently combat mode overides or conflict with all other attempt to break the NPC away. Even using methods involving ForceFlee, Flee packages(PC as target), StopCombat or altering confidence values will not produce the desired effect when the NPC is targetted by an adversary.

I feel that companions add such a great element to a already wonderful game, and deserve more support. I hope the forthcoming patch will provide a much needed function like this. My instincts say you will, but for now I'll keep my fingers crossed. Jorne 07:27, 29 April 2006 (EDT)

Fullscreen Shaders[edit | edit source]

It would be nice to have the ability to create custom fullscreen shaders and have a script function that displays them. Parameters that affect them could have fixed names (param1, param2, etc.) inside the shader, that are set by the script command (ShowShader SHADER PARAM1 PARAM2 PARAM3 [...]). Arklon 11:04, 29 April 2006 (EDT)

Seconding this one. If Timeslip could pull this off for Morrowind in his spare time, you'd think Bethesda could do it.--DragoonWraith 11:08, 10 May 2006 (EDT)

TransformRace[edit | edit source]

I know the lich mod people would want this, among other people. What this function would do... well, is (hopefully) self-explanatory. The function could have this syntax:

TransformRace RACE <0/1/2/3>

The last parameter affects how the transformation is handled in the way of FaceGen values:

0: Transforms actor to race with base face mesh

1: Transforms actor to race with actor's FaceGen values

2: Transforms actor to race, displays a FaceGen menu, cannot change selected race in menu

3: Transforms actor to race, displays a FaceGen menu, can change selected race in menu; should work for any actors, not just the player


There would be another script function to accompany it that reverses the effects of this function.

Arklon 11:15, 29 April 2006 (EDT)

I would love someone forever if they pulled this off!--DragoonWraith 11:08, 10 May 2006 (EDT)
This would be extremely useful for a Werewolf mod :) --MaXiMiUS 17:06, 20 May 2006 (EDT)
How about dynamic access to facial data? That would solve the problem and give you incredible control. I'd love a mod that allows you to go around with people thinking you were someone else(in fact, I tried to do it, but found you can't access facial data). Then you could murder someone, and the other person would take the fall. Muwahahaha! This mod would also require finding the spells caster if NPC's were to use it. --CrazyHorse 5:57:, 26 November 2006 (EDT)

Reference Globals[edit | edit source]

It would be extremely useful for me to be able to set references as globals, so that other scripts can use them. IE: Object script get's it's container's ID, sets reference global, other script that couldn't figure out the container ID on it's own does some stuff to the reference, etc. --MaXiMiUS 14:40, 1 May 2006 (EDT)

That's what persistent references are for (they are global References). But I agree it would be nice to have global variable that ACTS like a persistent reference. Any reference variable that points to a persistent reference cannot operate on it's contents, even though it is a reference. Looking at it from a compilation/runtime standpoint, I can see why it is a problem. Maybe a pref type that can only point to a persistent reference? --Tegid 15:51, 1 May 2006 (EDT)
Problem is, I don't know if it's persistant or not, I don't even know WHAT I'm referencing. I'm adding support for companion mods, and I obviously cannot find every single one of them and add their ID's to my mod. Hell, I don't think that's even possible. That is why I use GetContainer, and that is why it would be useful to have global references. --MaXiMiUS 16:28, 1 May 2006 (EDT)
So you use a Dynamic Array of Activators with a single persistent reference as the head and pull them out of the list as you need them. Or you make a persistent reference that has a CompanionRef as a member variable and you access it by PersistentRefName.CompanionRef.
I've read that before, and I fail to see how it helps. I'll look into activators, but seriously: I don't need an array. I need for ONE script to be able to set a reference, and have ALL the other scripts use it. --MaXiMiUS 17:48, 1 May 2006 (EDT)
If you create a persistant reference activator (or a quest script would work as well) you can set up a reference variable in a script attached to the persistant reference and access that reference from any script. (take a look at the last sentence of Tegid's reply above) --Mrflippy 18:00, 1 May 2006 (EDT)
Thanks Mrflippy, I think I got it working with the quest script thing :) --MaXiMiUS 18:38, 1 May 2006 (EDT)
I'm considering deleting this section, as reference variables on quest scripts would seem to fulfill exactly what you're talking about. Enlighten me if I'm missing something, otherwise this seems like a non-issue. --Kkuhlmann 10:24, 9 May 2006 (EDT)
You can't do myquest.myref.setpos or whatever. it would be possible to create a new local ref var and set it to myquest.myref , but you CAN'T do this in a quest stage, since vars defined in a quest stage always stay 0. (another thing for the whishlist ;) ) --JustTim 11:19, 9 May 2006 (EDT)
Unless I'm misunderstanding what you want to do, try the following: Set up ref variables in a quest script. While it's true you can't do things like myQuest.RefVariable.functionThatRunsOnReferences you just need to get a little creative... for example, in your quest script where RefVariable lives, you can wrap the RefVariable.functionThatRunsOnReference inside a if myShortVar == 1 / ;do my thing to my reference varaibe / endif (in the gameMode block), then in the external script you set myQuest.myShortVar to 1, and as soon as the quest script fires you'll get you're desired behavior. OR, you can "import" the reference variable from your quest script into your external script by Set myRefVariableInOtherScript to MyQuest.RefVariable. Then you can use myRefVariableInOtherScript EXACTLY as if it was MyQuest.RefVariable. I think those two approaches should meet your needs (unless I'm misunderstanding) Jduvall 15:42, 9 July 2007 (EDT)
First off, this page is pretty much dead. It's huge, unweildy, and Bethesda never considered adding any of these. I don't think anyone has posted here in months. So there's not really very much point in correcting things here. You're correcting a user who posted over a year ago, and hasn't been here in nearly as long.
Anyway, as to your suggestion, that is not sufficient to handle every instance. Most notably, it does not happen in-line, but later (perhaps even the next frame completely), and it makes code very difficult to follow because things are so fractured.
Dragoon Wraith TALK 16:50, 9 July 2007 (EDT)

SetHitBy[edit | edit source]

I'd like a function

Reference.SetHitBy ActorID Damage

it would allow us to add aggro to another Actor like we had just hit them with a weapon. This would solve the no aggro from activators issue, as well as allowing distraction spells (making one NPC think another NPC hit them). It should probably activate any OnHit block as well. It would basically be the equivalent of Activate, but basically for assigning aggro. By definition it would be a hostile action. --Tegid 14:11, 2 May 2006 (EDT)

Make Dead Actors affected by Script Effects[edit | edit source]

I really would like more control over the Reanimate Dead spell, but being able to apply a script effect to a dead actor would work just as well...basically wanting to replace a actor with a diff actor and then use the reanimate effect (animation, effect, etc) on that new dead actor (replace NPC with dead zombie, then reanimate) I'm sure it would be useful for other things too! SeiGGy 22:09, 24 April 2006 (EDT)

Uhm... I'm pretty sure it does. Actually, Scripted Effects seem to affect an awful lot of things. Pretty sure the guy who did the Petrify spell found out that it affected the 'floor'. I know that the Danger Sense mod has shaders that run on corpses, and he uses a Scripted Magic Effect to get them there (unless I am very much mistaken, which would be problematic since I am rewriting his scripts assuming this to be true).--DragoonWraith 11:14, 10 May 2006 (EDT)
They already are. The Cone of Cold (I think that's the name, anyway) spell from PJ's Spell Compendium freezes dead NPC's and creatures nicely. --Arklon 15:52, 5 August 2006 (EDT)

Allow scripts on ammo[edit | edit source]

I'd like to be able to create scripts for ammo -type objects. Currently there is not much that I can do with arrows. Scripted enchantments on arrow is not enough, because I'd like to run scripts on the arrow, not the target.

A workaround could be a scripted spell on a "dummy real arrow" that makes it disappear when used and replaces it with a "non-dummy non-arrow" item with the useful script, for instance this dynamite stick with the five second fuse...
No, scripted enchantment effects are ran in the target, not the arrow. And even if it was ran on arrow, on-impact scripts are not enough for my purposes. I need scipting for in-flight arrow manipulation. So let's not accept workarounds! We want the real deal :) --arttuli

PlaceAtMe and Leveled Lists[edit | edit source]

It would be nice if PlaceAtMe worked with leveled lists. --Mrflippy 12:02, 4 May 2006 (EDT)

PlaceAtMe does work with leveled lists -- creature lists, at least. Are you talking about object lists? --Kkuhlmann 10:25, 9 May 2006 (EDT)

SetGameSetting[edit | edit source]

I couldn't find a prior discussion on this, so unless there's a technical limitation (settings must be set at load time?), then I think being able to change game settings dynamically from scripts would be very handy. -- Nezroy 17:00, 5 May 2006 (EDT)

I second that. There is a GetGameSetting, so why not ModGameSetting or SetGameSetting? Of course, it only would work if the Oblivion code it set up flexibly enough. But I can hope and pray, since this would be really handy. While you are at it, some way to change gravity would be nice. I'm not sure if there is a game setting for that though.--Evrae 15:45, 23 May 2006 (EDT)

OnHit for Equiped Items[edit | edit source]

Currently, OnHit only fires when the actor is hit. It'd be twice as useful if it fired when a weapon or armor is hit, like how the effect is for disintegrate spells. It would add possibilities like enchantments that paralyze attackers when they hit your cuirass.--Snake 02:46, 6 May 2006 (EDT)

The game doesn't have location-based effects, so adding this would be a pretty substantial change to their architecture... (they'd have to start tracking hit location in the first place before they could add a function that would report it). I don't think it's too likely, though it would be nice. --JT 17:10, 27 May 2006 (EDT)


Also, in the same vein, how about apparel having the spell range of Touch instead of just Self. When the item is hit by an NPC, the spell is cast on them. I also noticed how scripted magic effects as enchantments don't work on apparel.--Snake 06:47, 6 May 2006 (EDT)

OnEnter[edit | edit source]

It would be really nice if we could have an OnEnter event that fired for scripts when the player first enters the cell. OnLoad doesn't cover this because it does not fire for cached cells, so many exterior/interior transitions and other cases don't cause it to load. It also doesn't seem to fire when first loading a saved game. More indepth discussion here and here. Alternatively (or in addition to), an OnExit would cover the same need, for the most part. -- Nezroy 13:35, 9 May 2006 (EDT)

This is easy enough to accomplish by either adding a marker near the door which runs a script when PC comes into range, or even more simply adding an OnActivate script to the door which links to the area. However, the latter requires creating a new base object for the door (as you don't want every door of the kind to run the script), which when editing an already existing doors may cause conflicts with other mods that do the same. --Negative_Creep 19:40, 9 October 2006 (EDT)

DisableGravity[edit | edit source]

It'd be nice to have a script function that disables gravity for a particular reference. Just disables gravity, but doesn't disable clipping. -- Arklon 20:22, 16 May 2006 (EDT)

SetRagDoll/GetRagDoll[edit | edit source]

I know this page is pretty full now and doubt anything here will be realised, but having a SetRagDoll function would certainly spice up a lot of mods. --eddwills 14:27, 18 May 2006 (EDT)

I'm not sure if this is what you mean, but you can make an actor go limp by setting their paralysis actor value to 1.--Snake 22:25, 12 June 2006 (EDT)

OnDisable[edit | edit source]

A destructor trigger of some sort would be an extremely helpful addition to the scripting process. Its exact opposite, OnLoad, while being semi-functional sometimes, is still a very useful constructor blocktype, and I'm sure that OnDisable would help to provide scripters with new possibilities and reduce redundancies from the process. --Max 17:37, 20 May 2006 (EDT)

Some way of detecting weapon swings[edit | edit source]

A function that returns 1 after the player swings his weapon would have so many applications. In MW, we could use getSoundPlaying to detect this, in Oblivion we're limited to detecting power attacks only, and this doesn't work for marksman, hand to hand, or sneak attacks. Combined with a function to get a reference to the last actor hit by the player, this would be even more useful. Half of the fun of scripting in OB is finding clever workarounds for these sorts of problems, but in cases like this a workaround doesn't seem possible. Scruggs 22:56, 28 May 2006 (EDT)

Dragoon Wraith TALK 00:00, 29 May 2006 (EDT): Enthusiastic seconding!

Improved Inventory Detection[edit | edit source]

A method to detect what item is being worn in a given slot (head, upper body, lower body, etc.)

Also, a method to detect item properties (value, weight, health, as well as flags like the quest and "hide rings" flags on armour). -- Diablerie 20:12, 30 May 2006 (EDT)

Dragoon Wraith TALK 20:27, 30 May 2006 (EDT): Amen! Definitely want both of those things. It boggles the mind why script can't have access (at least Get functions) to all the stats of an item...

Usage of Script Blocks Functions as Conditions[edit | edit source]

Allow use of script block functions like onHit, onActivate, etc, as condition functions, in the way that menuMode can currently be used (and the way these types of functions worked in Morrowind). The ability to specify a reference as an infix for these functions, i.e. "if ( myNPCRef.onHit == 1 )" or "begin myNPCRef.onHit", would be invaluable. At the very least, allowing these script blocks to process within a magic effect script, in the way that onActivate will, would provide some way of detecting the status of references dynamically without attaching a script in the editor. Scruggs 22:58, 2 June 2006 (EDT)

(Hopefully) fixed the formatting of this request. -- Arklon 18:22, 11 June 2006 (EDT)
Dragoon Wraith TALK 20:48, 13 June 2006 (EDT): Enthusiastic agreement!

RemoveMagicEffect[edit | edit source]

Since there's a HasMagicEffect function, it's only natural that there should be a RemoveMagicEffect function. You can use Dispel, but then you have to remove every spell with that effect...what a pain.--Snake 20:12, 12 June 2006 (EDT)

GetHK_STATE[edit | edit source]

In the bone/animation debug text option (SetDebugText 1), the HK_STATE is shown as whatever action the player is taking. (Eg. Action-> Block HK_STATE ->OnGround. Script functions to return or check which type of action or state the player is in would greatly expand mod possibilities. I've already been limited by this specific issue a number of times.--Omzy 21:32, 14 June 2006 (EDT)

Functions for both getting and setting properties for items[edit | edit source]

I'd like to see functions for eg. getting the charges left on a sword or other item and hopefully also a function for setting it to some value. I've posted and asked on several pages for this and I have a feeling there are more people out there than just me who's waiting for these functions. --Brainz 20:52, 18 June 2006 (EDT)

switch (x), case, default[edit | edit source]

I'd like to see support for the switch in C++ (or, something similar to that anyway). I know it can be done with if/elseif/else, but it could be a lot more efficient with constant integers - especially when there are lot of choices.

switch (integer)
case 1: ...
break
case 2: ...
break
case n:
break
default:

--Csimbi 23:35, 20 January 2007 (EDT)

Purge[edit | edit source]

A "purge" command that delete an instance of an object so it doesnt remain in the cell and by extention, in the savegame. Currently all savegames become bloated by mods that make frequent use of the "PlaceAtMe" command.

Ichinin 2007 Feb 08, 20:05

Time Setting Functions[edit | edit source]

Maybe I'm blind or ignorant, but there seems to be no way to set or pass game time. I really want the game to change the time to night at a certain point in a quest, but that seems to be impossible, even though the game passes time when the player fast travels or waits.... Pulsemeat 17:01, 20 August 2007 (EDT)

Just change the GameHour global variable. It's a float, so you can also set the minute with it.
Arklon 20:17, 11 October 2007 (EDT)

Others[edit | edit source]

Ruby or Python API[edit | edit source]

In light of the limitations of the existing scripting language and the extensive modifications wanted by mod-designers, bolt an already existing and powerful scripting language onto Oblivion.

I propose ruby for a number of reasons.

  • Easy Oblivion-like syntax: actor.function, self.property, similar to Player.additem, etc
  • Easy module inclusion into classes, ideal for AI packages, etc
  • Interfaces easily to C/C++ (Easily added)

I think this would be fairly easily accomplished through the use of something similar to the MWSE, essentially running the game in a debugger. Rather than merely add functionality to the language though, the attempt would be to totally expose all data structures to the scripting language.

Finally, here's a sample of what ruby looks like, and how it could be used...

 # Get a list of all the heavy swords in the game
 heavy_swords = GameState.find { |item| item.type == :Sword && item.weight > 50 }
 # Unequips stolen items
 actor.items.each { |item| item.unequip if item.stolen? }

--Wnight 06:18, 28 April 2006 (EDT)

I'll suggest Python instead. It's much faster (and even faster if you use CPython and Psyco), and has a similar set of features. Both Ruby and Python are serious, powerful, modern, multi-paradigm programming languages. Ruby has better closures (blocks), and Python has a cleaner syntax.
Python is famous for being easily embedded and it has been used in a number of high-profile commercial software such as Paint Shop Pro X or Civilization IV.
It's all up to the object model exported by the host application: the more properties, methods and functions you export, the more powerful scripting gets - for almost free. You won't need to care for implementing basic functions, a way to do x or y, string manipulation, modders' requests, etc.
On top of that, Python's extensive standard library and third party libraries would be of great help. Think about making a book that connects to some RSS feed and shows dynamically updated news for Oblivion from the Internet, or perhaps a camera item that grabs a screenshot via the Win32 API, processes it with ImageMagik to reduce it and add a grainy look to it, saves it as a DDS file using nVidia tools, creates a new NIF file from a template for a painting using that texture, copies the files to your data directory, and adds the newly created painting to your inventory, all in the fly.
Here are Python examples of the above Ruby examples, plus idiomatic Python translations and more traditional implementations which would be easier to read for programmers using more traditional languages.
 #Get a list of all the heavy swords in the game
 #Functional style, as in the example above
 heavy_swords = filter(lambda x: x.type == 'Sword' and x.weight > 50, GameState)
 #Idiomatic Python, lazily evaluated generator
 heavy_swords = (i for i in GameState if i.type == 'Sword' and i.weight > 50)
 #OO/traditional style
 heavy_swords = list()
 for i in GameState:
     if i.type == 'Sword' and i.weight > 50:
         heavy_swords.append(i)


 #Unequips stolen items
 #Functional style, as in the example above
 map(lambda x: x.unequip(), filter(lambda i: i.stolen, actor.items))
 #Idiomatic Python
 [i.unequip() for i in actor.items if i.stolen)]
 #OO/traditional style
 for i in actor.items:
     if i.stolen:
         i.unequip()
--Wiseman 14:22, 26 August 2006 (CET)
Ruby doesn't compile to bytecode and is therefore completely useless for time critical applications. Personally, I can't stand Python's syntax. You could use Java (which is very similar to C++, and is one of the first languages many programming classes teach), just not using Sun's bloatware VM.
--Arklon 20:20, 11 October 2007 (EDT)

Commercial Version of Construction Set[edit | edit source]

In the vein of the endeavor of Bethesta with mini expansions, I would suggest that the company at least considers the viability of producing enhanced commercial version of Oblivion Construction Set. Many of the enhancements and additions that modders ask for in wish lists like this one would allow them to produce better mods are something that would allow them greater freedom to express themselves and that alone may justify some budget pricing. The massive amount of modders would possibly give Bethesta a sizable amount of money to support the modding aspect of the game, something no other company had offered. This unsigned comment attributed to RaynerApe

I second this request! --MegaBurn 19:46, 27 April 2006 (EDT)
As do I. This is a great request to justify a lot of these wishes. I'd buy the thing! -- Ventaur
Me too, I'd pay as much or more for this as I did for the game! -- Yushatak

Release Oblivion Source Code[edit | edit source]

I request that Bethsoft release all Oblivion engine and Construction Set source code that they are legally permitted to release. The third party middleware can be readily left in closed sourced linked libraries. The source code release can include a license that clearly grants contributed IP ownership to Bethsoft. This should be done in conjunction with creating a developers network program for the entire modding community to work on future Bethsoft products. Effectively there is nothing to lose and this is already paid for, by us, your customers. If done correctly this can become a major "win win" move for Bethsoft, allowing the community to do far more with Oblivion while at the same time giving Bethsoft free access to a significant amount of man power. (please see the discussion page for more information, comments posted here will be moved) --MegaBurn 19:45, 27 April 2006 (EDT)

What an excellent idea! The only major issue I foresee is that with an international community working to continually improve all aspect of a game including the graphics engine, incentive to purchase future titles in the series might be somewhat lessened. Then again with intelligent marketing the opposite might also prove true, and Bethesda could release future Elder Scrolls titles as massive expansions to existing architecture, providing the corporate muscle to empower the community forward even faster towards push-projection VR... --Phinix 19:46, 27 April 2006 (EDT)
Bethesda has repeatedly stated that it will never do this for any of its games. Just so you know. --DragoonWraith 22:43, 13 May 2006 (EDT)

PS Plugin for Making "Official" Loading Screens[edit | edit source]

It's not an enhancement to the CS but it would be useful to know how the images for the loading screen backgrounds were created. Perhaps a PS plugin to apply the same filters, frame etc. to a user screenshot so that they can make location specific loading screens which match the original game screens. --sykotik 19:55, 26 April 2006

Yeah I'd like this too. Maybe not a plugin as such but a tutorial or something, just so we can make our locations feel that little bit better finished off. --eddwills 14:33, 18 May 2006 (EDT)

Applet for Logitech G15 keyboard[edit | edit source]

It would be great to have an official applet that could utilise the LCD screen of this keyboard. Some ideas include of what to display include: Game time & date; level and progress to next level; encumberance; current quest title; gold amount; armor rating etc.... For a thread of owners and more discussion/ideas see Part 1 and Part 2--Elessar VPR 10:09, 10 May 2006 (EDT)

EnchantedItem Blocks[edit | edit source]

No matter how hard I try, I cannot seem to apply a script as a constant effect on a apparel item. Maybe a Begin EnchantedItemEquipped...End and Begin EnchantedItemWorn...End and Begin EnchantedItemUnequipped...End blocks for Magic Effect scripts that are placed in apparel enchants. Within that block we could place code that would activate every frame the the item holding the enchant is worn (for EnchantedItemWorn), each time the item holding the enchant is equipped (for EnchantedItemEquipped), and each time the item holding the enchant is unequipped (for EnchantedItemUnequipped). This w/font>]] 00:00, 29 May 2006 (EDT): Enthusiastic seconding!

Improved Inventory Detection[edit | edit source]

A method to detect what item is being worn in a given slot (head, upper body, lower body, etc.)

Also, a method to detect item properties (value, weight, health, as well as flags like the quest and "hide rings" flags on armour). -- Diablerie 20:12, 30 May 2006 (EDT)

[[User:DragoonWraith|ould be very useful for me, since I want to make a sigil stone that adds a enchant that I can put conditions into. For example, as long as the person is wearing the item holding the enchant, they would gain an ability/power.--DruidJP585 14:56, 15 July 2007 (EDT)

Complex Collision Meshes (Skin Tight)[edit | edit source]

I just read through this article From 3dsmax to Oblivion CS, one part of the tutorial piqued my interest to say, "Could we make more Skin-Tight collision models (as in more poly's for the collision) to make Oblivion models more like real objects and people?" It would at least be less like your being pushed out of the way by a sphere or box, you could also thus have bigger (and/or smaller) creatures, statics, activators, etc. w/o havin' to be "pushed" by an invisible force, and you can also have bigger space in the world spaces. Probably the downside is that it would be more cluttered and would require more CPU power... at least it would be like Morrowind again... more cluttered and not so lonely, and have more graphics to it. I would also guess that we could also have the BhkBoxes in Oblivion and NifSkope to be more conformed to the model itself instead of the regular boxes, to make the clutter to fit more tightly... in tight spaces... maybe... --MW2366 00:24, 24 July 2008 (EDT)

Technically, you could have collision more accurate than the actual model, but more polys = slower performance. Different types of collision are used for different things, but stuff like statues, and buildings I would definitely agree that the collision could be much better. And also, the boss at the end has crappy collision. This could be a future project of mine.
morerunes 22:35, 13 August 2008 (EDT)

Nested Begin Blocks?[edit | edit source]

I just encountered this with my new script... I wanted to nest a Begin OnEquip block for my armor/clothing and wanted to include another script into it, which also had different Begin blocks for firing it off... I wonder... would it be possible to make a sort of "If" Block to include other blocks and using an "Endif" block at the end of it? I could think of a few scripts that could use this as a... well, I guess, "Master" block that controls all of the other blocks under it. Though I would have to think that it would probably take a lot of loading power to fire off all of the variables and functions within the subordinate blocks when the master block becomes true/false. I guess you can think of it as a cover of a book, once opened, you read on... but considered that it would take milliseconds sooner (thanks to computers) when you finish it. Heh, at least you could benefit from it as a "puppet master" and only deal with one script instead of many. --MW2366 01:30, 30 July 2008 (EDT)