Talk:OBSE Wish List

From the Oblivion ConstructionSet Wiki
Revision as of 11:31, 26 December 2007 by imported>Haama (Removed Cell Scan discussion - it's been fulfilled and no real extra info in the discussion)
Jump to navigation Jump to search

Disputed Changes

If you think something should have stayed on the list or if you think a change in one of the items misinterpreted what was meant, please let us know.

Dejaside's Binary Examples

these Is______ functions suggested by Dejaside (unless noted otherwise)

  • IsEmpty - checks if container is empty. - Available - If GetNumItems returns 0.
  • IsBook - checks if item is a book - DONE
  • IsSkillBook - checks if book teaches a skill
  • IsWeapon - checks if item is a weapon - DONE
    • IsMelee - checks if weapon is melee. - Available - combination of IsWeapon and GetObjectValue 103 (weapon type). All types but 4 (Bow) are Melee.
    • IsRanged - checks if weapon is ranged - Avalilable - combination of IsWeapon and GetObjectValue 103 (weapon type). If type is 4 it is ranged.
    • IsStaff - checks if weapon is a staff - Available - combination of IsWeapon and GetObjectValue 103 (weapon type). If type is 5 it is a staff.
  • IsAmmo - checks if weapon is ammo - DONE
  • IsEdible - checks if item is edible (note: the ai uses 'restore fatigue' to determine edibility) - Available - GetObjectValue 210 (food) returns true if the ingredient is edible.
  • IsIngredient - checks if item can be used in a potion - DONE
  • IsActivator - checks if object is an activator - DONE
  • IsDoor - checks if object is a door - DONE
  • IsLoadDoor - checks if door loads a new cell
  • IsContainer - checks if object is a container - DONE
  • IsAnimated - checks whether object has an animation (?)
  • IsApparel - checks if item can be worn Available - combination of IsClothing and IsArmor.
  • IsArmor - checks if item has armor rating - DONE
  • IsRing - checks if item is a ring - Available - If GetObjectValue 3 (equipment slot) returns 6 or 7 it is a ring.
  • IsAmulet - checks if item is an amulet - Available - If GetObjectValue 3 (equipment slot) returns 8 it is an amulet.
  • IsKey - checks if item is a key - DONE
  • IsApparatus - checks if item can be used to make potions - DONE
  • IsMisc - checks if item has no value beyond its value in gold


Just wondered if consolidating some suggested functions might make things easier to read. i.e., for the various isMisc, isClothing functions, wouldn't they be better served by a single getObjectType function? Don't want the list to become overwhelming, that's all. Scruggs 22:26, 1 August 2006 (EDT)
Dragoon Wraith TALK 09:35, 2 August 2006 (EDT): Yes, as mentioned in the thread, I'm going to in charge of keeping this clean. That project comes as soon as I finally finish Danger Sense for Addiktive (tonight, probably). It'll be cleaned up by the weekend.
Dragoon Wraith TALK 12:07, 2 August 2006 (EDT): See, it's cleaned up now! And it's only Wednesday!
Anyway, Dejaside's idea was that these functions would be very easy to create for the OBSE developers, and combinations of them could be more useful than a simple GetObjectType function - for example, an ingredient with Restore Health is both edible and an ingredient - GetObjectType would only return one of these pieces of information, while having these binary tests would allow you to determine both.
  • How About a "WillRespawn()" function... Save me from duplicating a great many scriptsDejunai 10:25, 1 September 2006 (EDT)

Regarding this particular wish...

Set/ModObjectValue [value] [number] - ability to manipulate the stats of objects, such as changing the damage done by a weapon. (finding and changing the current enchantment [i.e. recharge a weapon over time] was specifically requested) I think it's very good that this particular feature is listed as 'number one'. I'd really like to hear if it's possible to mod it... and it's not just about damage - damage is fine... the weapon speed is what really needs to be fixed! I mean dynamically adjusting your attack speed (like in Daggerfall) based on your strength, agility and skill with weapons would be simply GREAT - huge realism and gameplay boost. I swear to myself that once something like that will be possible, I'll be off making a mod that does exactly that. ... Btw, is it even theoretically possible? I'd very much to hear that before I'll get all hopeful. --Balor 14:29, 7 September 2006 (EDT)

Dragoon Wraith TALK 15:20, 7 September 2006 (EDT): They're working on it. As noted, it's their top priority, and they're getting there. Unsure how close they actually are (they don't like talking about development because they don't want to disappoint, but since they develop so rapidly no one minds), but it will happen. Weapon speed, in fact all the values found here will be adjustable, most likely.

Semi-Fulfilled Wishes?

Several of the requests on the wish list haven't been given their own specific functions but can be partially or completely solved using existing OBSE functions. I haven't deleted them from the wishlist, but maybe they should be moved down in priority? Scruggs 20:57, 17 October 2006 (EDT)

  • isBowDrawn - A boolean function to return if player has nocked an arrow. It should be usefull to give the possibility to "unnock", but even an unnock function all by itself should be very usefull. It'd be best to be able to know also if the arrow has been fully nocked or not. I'm thinking about greater powers to be used only once a day on a single thrown arrow, without having to create a new one to simulate this effect (so without giving any possibility to stock them every day).
You can do this by checking for the length of time the attack button has been held down while a bow and arrow are equipped.
  • DisablePlayerControls2 - Disables ALL controls including mouse movements for the player, but still make the TapKey, HammerKey etc. functions work as usual. --Mandrill 06:38, 14 August 2006 (EDT) - This could be done by using DisableKey on all the keys on the keyboard, as TapKey and IsKeyPressed should still work (needs testing) - An easier way to do this is to call disableplayercontrols, disable mouse, and disablekey on the console. - Dragoon Wraith TALK: IsKeyPressed does work, I haven't tried TapKey.
  • OnJump - trigger the script when the object jumps
Considering that only the player is actually capable of jumping, this can be done by detecting when the Jump key is pressed.
I've witnessed NPCs jumping in Oblivion several times, usually when trapped behind a low object. One time I even witnessed an Imperial Legion Horseman jumping his horse (or trying, anyway) over a signpost. --JT 20:03, 25 April 2007 (EDT)
  • GetStandingActor - returns ref variable for the last actor to step onto the object. Would be hugely useful for traps.
This can be done with trigger zones placed either separately from the object or incorporated into the .nif.
  • GetCellChanged request: I dont believe changing of cells actually goes on over what OB considers a single frame. Additionally what is meant by cell changes is different if you are in/crossing an interior or exterior cells. All this aside, this method is NOT necesary. A simple quest script that tracks the player position using an Xmarker can detect this easiliy with player.GetInSameCell MyXmarker and MyXmarker.MoveTo player, coupled with player.IsInInterior commands.
Dragoon Wraith TALK: See the example at GetParentCell for a script that should emulate CellChanged from Morrowind... JOG also said that it was no good, but I didn't understand why. Perhaps you could explain it? Of course, you could do it without OBSE using an Activator and GetInSameCell/MoveTo (why do you need GetInInterior?), that also works (but is less convenient, methinks).
I dont think GetParentCell gives you what you would expect [in this script]. IsInInterior is very important if you consider that you are changing cells all the time when outside and typically it isn't your intention to detect these types of cell changes.
I think JOG's gripe with GetParentCell is that, in Morrowind, CellChanged returned true when the player entered the cell containing the scripted object. It was closer to something like an OnPlayerEntry function. While that was often more annoying than useful, I can see his point (if that is in fact his point ;)), although GetParentCell along with GetInSameCell are enough for a (somewhat clunky) workaround. :shrug: Scruggs 23:24, 25 October 2006 (EDT)
Actually you can scrub my comment on GetParentCell. Without the CS in front of me I confused this with something else and didn't realize it was an OBSE command. My method does work perfectly as a non-OBSE solution. In LTC I actually track last inside and outside locations so I can have Chaotic Intervention to teleport you to the front door of a dungeon.) GuidoBot 00:08, 26 October 2006 (EDT)

Arrays

I noticed that there is an "Arrays" wish in the language enhancements. I think a possible (and easy to use) workaround would be using a Get/SetNthVariable function on a script, where there are variables listed as elements of the array. E.g. if I create a quest with the name arrayscript, and declare 20 variables in it, then I could determine whether the 20 variables are in decreasing order or not, with using a Label+Goto loop, to check if GetNthVariable LoopCount arrayscript == GetNthVariable LoopCount+1 arrayscript in another script. Tibixe 13:05, 5 January 2007 (EST)

That could be one way, although it would be extremely tedious to write out individual variables for each element of a sizable array; and multi-dimensional arrays would require some math on the scripter's part to figure out the index required for the variable.
For what it's worth, there's a thread on the CS forum in which we've figured out how to implement linkless lists and vectors (extensible arrays) using inventories; a vector could also be used as the basis for a linked list. Discussion here: http://www.elderscrolls.com/forums/index.php?showtopic=614540 Scruggs 22:53, 5 January 2007 (EST)

Custom Shaders

I'm looking for a means to add new shaders to the PC camera for new nighteye-style imaging effects, psychedelic effects (drugs/spells), and reactionary effects (variants of TriggerHitShader). This would start with scripting new imaging spells for each of the effects in Heat Vision Shader for Nighteye, Nighteye Shaders, and Nighteye Shader Replacement. Then maybe expand it to supplement custom imaging for Khajiits, werewolves, vampires, liches, and various goggles (e.g. color enhanced thermal). Adding something for skooma and maybe some poisons (mushrooms) might be good too. EDIT: All natural effects would include a key binding for toggling it on/off, unnatural would use a spell. --MegaBurn 00:25, 3 July 2007 (EDT)

You're going to want to keep an eye on Timeslip's Oblivion Graphics Extender plug-in for OBSE. I believe you can find the thread on the ESF.
Dragoon Wraith TALK 09:52, 3 July 2007 (EDT)
Thanks, I replied to the OGE thread, seems like it hasn't been updated in a while though. It really sounds good, any idea when OBSE will get plug-in support? --MegaBurn 16:32, 3 July 2007 (EDT)
OBSE sort of has plug-in support. It's disabled, but you can enable it pretty easily. A couple of OBSE plug-ins have been released (a G15 keyboard plugin, an EAX plugin) with downloads of a modified version of OBSE v0011. In v0012, presumably, they will 'officially' turn on plug-in support, so that won't be necessary. As for Timeslip, I believe his style has always been to work on things for a while, checking the thread for suggestions but not commenting, and then releasing. Not one for a lot of hyping or whatever.
Dragoon Wraith TALK 03:30, 4 July 2007 (EDT)

Questions about some "Wishes Fulfilled"

I assume that the 'GetObjectFullName' and 'GetRefFullName' were supposed to be fulfilled by Tibixe's String Function Collection, but does it really work? On TESNexus those functions are labeled as "planned".

For 'CompareNames' TSFC comes closer than OBSE's 'CompareName', but still doesn't do everything I want and may have a bug.

Finally, I didn't see anything specific to leveled lists on the function list, or has that always been possible anyway (how would you get another mod's leveled list reference)?

Sorry for all that trouble, I'm not so good at maintaining a documentation. StrGetName was one of the first functions to be implemented, see the SVN repository. I'll remove that section from the TESNexus description, the doumentation on the Wiki is much clearer and eaiser to maintain. Changes before Aug 12 2007 are in the newest binary version (at TESNexus)
That bug with StrCompare was fixed long ago. I'll remove that note so it won't be confusing.
Feel free to PM me at the Bethsoft Forums.
PS:My name is Tibixe
Tibixe 15:40, 8 November 2007 (EST)
Thanks for clearing that up. Good to see you haven't disappeared completely, Tibixe.
--Haama 15:50, 8 November 2007 (EST)
Sorry, haama. If I've removed anything that's not completely fulfilled let me know (either via PM or here on this page) what needs to be done, and I'll look into them. The leveled lists functions will be in the next beta of v0013. I'll mark v0013 as "forthcoming" to avoid confusion. Scruggs 19:00, 8 November 2007 (EST)
No worries, easy enough to edit back. I was just trying to put some type of sign onto 'CompareNames', as it's the third time someone's moved it to the Fulfilled section.
Ah, those leveled list functions will be incredibly useful. Good to know.
--Haama 20:26, 8 November 2007 (EST)
Okay, I went ahead and implemented CompareNames, so this time it really can move over to Wishes Fulfilled. Scruggs 21:53, 8 November 2007 (EST)

Valid requests for fulfilled wishes

I've read this list again and found some requests that could be done with TSFC, but could be implemented in OBSE, such as ModNthEffectItemScriptName.

Who requested it should know that it is possible, but the OBSE team should know that someone requested that feature.

What should we do about those?

Tibixe 09:47, 26 December 2007 (EST)

I think they're also working on message stuff, so it might be best to leave it. But really, the best place to ask that question would be on the OBSE thread or via PM. They check those much more frequently.--Haama 11:27, 26 December 2007 (EST)