Difference between revisions of "SKSE Wish List"

From the CreationKit Wiki
Jump to navigation Jump to search
imported>DavidJCobb
imported>HomoPuerRobustus
(→‎Location: Added GetParentLocation() request)
 
(28 intermediate revisions by 8 users not shown)
Line 53: Line 53:


==Forms==
==Forms==
===Base Object Types===
===Base Object Types===
====Form====
====Form====
*'''GetMagicEffectDescription, SetMagicEffectDescription''' - Returns the magic item description of the magic effect, sets the magic item description of the magic effect.
*'''GetEditorID''' - Returns the editor id of a form as a string.


====Armor====
====Armor====
Line 63: Line 64:
====ObjectReference====
====ObjectReference====
*'''GetGoldValue''' - Returns value of a specific object, including increased value due to smithing or enchantment. Form.GetGoldValue returns only the value of unenhanced base forms.
*'''GetGoldValue''' - Returns value of a specific object, including increased value due to smithing or enchantment. Form.GetGoldValue returns only the value of unenhanced base forms.
*'''GetMotionType''' - Returns the havok motion type int of an object. Counterpart to the existing SetMotionType function. A GetAllowActivate function might also be useful to see if the user can interact with the object (or would that be redundant with the IsActivationBlocked function?)
*'''GetStackedItemCount''' - If the ObjectReference is a single dropped item, returns 1. If the ObjectReference is several of an item "clumped"/"stacked" into one world object, returns the number of items. If the ObjectReference isn't an item, returns 0.
*'''OnItemDropped''' - Fires when the item is dropped from a player's inventory and can be safely operated on, but not when it is removed from the inventory through some other means.
** If you only need to detect dropping and not container transfers, then this would be safer than OnContainerChanged, which can cause stack dumping when applied to many objects. It would also be more reliable than OnLoad, which doesn't always fire when it should for newly-dropped items. The only other safe alternative is OnLoad, which for unknown reasons is highly unreliable when dealing with dropped items.
*'''GetLightFade''', '''SetLightFade''' - Modify the Fade value of a Light ObjectReference. Useful for Lights that have been spawned at run-time.
*'''GetLightRadius''', '''SetLightRadius''' - Modify the radius value of a Light ObjectReference. Useful for Lights that have been spawned at run-time.


====Perk====
====Perk====
====Furniture====
*'''GetMarkerCount''' - Returns the number of furniture markers on this Furniture.
*'''GetNthMarkerType''' - Returns the type of the Furniture's ''n''th furniture marker.
**0 = Doesn't exist
**1 = Sit
**2 = Sleep
**3 = Lean
*'''GetNthMarkerPosition''' - Returns, as a Float array, the X, Y, and Z coordinates of the Furniture's ''n''th furniture marker.
*'''GetNthMarkerHeading''' - Returns, in degrees, the yaw angle (heading) of the Furniture's ''n''th furniture marker. (Note that in the NIF, these values are radians.)
*'''GetNthMarkerEntryPoints''' - Returns, as a bitmask, the enabled entry points of the Furniture's ''n''th furniture marker (or zero if no entry points are enabled).


====Door====
====Door====
Line 70: Line 88:


====Cell====
====Cell====
* '''GetNorthAngle''', which would return (in degrees) the Z-rotation of any North Marker in the cell, or 0 if there is no North Marker.


====Location====
====Location====
*'''GetCells''' - Access to cells belonging to a location. Return either as an array or with the GenNum../GetNth.. iteration pattern.
*'''GetCells''' - Access to cells belonging to a location. Return either as an array or with the GenNum../GetNth.. iteration pattern.
*'''GetParentLocation''' - Return a location's parent location, not just whether two locations share a parent (without returning what that parent is).


====Faction====
====Faction====
Line 78: Line 98:
====Ammo====
====Ammo====
*'''IsBolt''' - Returns true if the ammo is a crossbow bolt
*'''IsBolt''' - Returns true if the ammo is a crossbow bolt
**Added to SKSE 1.7.01
====Class====
*'''GetWeight(String actorValue)''' - Return the weight applied to the provided actor value (skill or attribute) for the given class.


====Misc====
====Misc====
'''GetNavmeshPosition/Angle''', '''SetNavmeshPosition/Angle''', '''PlaceNavmeshAtMe''' - manipulate navmesh refs as if they were static objects


==ObjectReferences==
==ObjectReferences==
Line 86: Line 111:
*'''GetEquippedAmmo''' - Checks to see what ammo the actor has equipped for a bow or crossbow. Aim of function is to be used as an object reference.
*'''GetEquippedAmmo''' - Checks to see what ammo the actor has equipped for a bow or crossbow. Aim of function is to be used as an object reference.
*'''IsAmmoEquipped''' - Checks if the actor has equipped an ammunition of some sort for a projectile weapon.
*'''IsAmmoEquipped''' - Checks if the actor has equipped an ammunition of some sort for a projectile weapon.
*'''CanPathTo''' - Checks if the actor can build a path to the desired destination. Similarily to how [[PathToReference - Actor]] returns false in case it isn't able, but without actually making the actor go anywhere.
===Misc===
*'''GetEffectShader()''' - Returns the shader attached to the reference.


==Aliases==
==Aliases==
Line 101: Line 131:
===Game===
===Game===
*'''GetFavorites''' - A means to iterate through favorited items/spells. Return specific ObjectReference rather than Form when possible. Return either as an array or with GenNum../GetNth.. iteration pattern.
*'''GetFavorites''' - A means to iterate through favorited items/spells. Return specific ObjectReference rather than Form when possible. Return either as an array or with GenNum../GetNth.. iteration pattern.
*'''IsLoading''' - Return true when the game is going through a loading screen. Essentially, a Papyrus version of [[IsPlayerMovingIntoNewSpace]] that can be used anywhere else than in package fragments.
:*In fact, an '''OnLoadingScreen''' event would probably be a much handier addition.
*'''ReleasePlayerGrabbedRef''' - Forcibly drops the ObjectReference that a player has grabbed (Z-keyed).


===Math===
===Math===


===StringUtils===
===StringUtils===
*'''StringReplace ''' - Replace characters/substrings in an existing string.
*'''StringReplace''' - Replace characters/substrings in an existing string.
  StringReplace (String sOriginal, String sOldSubstr, String sNewSubstr, int Flags)
:<source lang="papyrus">StringReplace(String sOriginal, String sOldSubstr, String sNewSubstr, int Flags)</source>
:Flags for case sensitivity, etc.
:*Flags for case sensitivity, etc.
:Easy enough to do this in Papyrus, but could be more efficient in C++.
:*Easy enough to do this in Papyrus, but could be more efficient in C++.


===Misc===
===Misc===
Line 117: Line 152:
   Float Function IIfFloat (bool bTestExpr, Float fValIfTrue, Float fValIfFalse)
   Float Function IIfFloat (bool bTestExpr, Float fValIfTrue, Float fValIfFalse)
:This may implement better as a language enhancement.
:This may implement better as a language enhancement.
*A '''MoverTask''' counterpart to '''SpawnerTask''', which would move existing objects instead of spawning new ones.


==Questionable Requests==
==Questionable Requests==

Latest revision as of 00:25, 26 November 2015


Note : Function requests are better made in the current SKSE discussion thread. Search for Skyrim Script Extender (SKSE) at the BGS forums to find the latest one.


This wish list is a place to put ideas for inclusion in SKSE. It will be kept organized, consistent, and clean as possible. That means your contribution may be edited or deleted in order to keep this list manageable. Contributions will only be deleted if they are redundant - either because Skyrim came with a function for this, or because the function has already been requested. Contributions may be edited for a large variety of reasons, from consistency to aesthetics. Please do not take this personally.

Care will be taken to include a name with any requested function if that request is signed. If you don't care about having your name attached, please do not sign your request, since it will keep the list neater.

If, for any reason, you disagree with a change or deletion from this list, please discuss this in the Talk page - we are not infallible, it is entirely possible that we misunderstood the need or use of a given function, and we need that explained so that the contribution can be reverted into its original form and/or be changed into something more appropriate.

To keep the list more manageable, requests have been broken down into categories according to the type of function and, in some cases, the probable ease of implementation. Requested functions which can be accomplished with existing functions appear in a separate section at the bottom of the list.

To avoid requesting a feature which is already available, first consult the SKSE documentation and the list of SKSE Wishes Fulfilled.

Modifications of Existing Functions[edit | edit source]

Tweaks to functions already present in the scripting language:

  • Game.IsObjectFavorited - Override to allow an ObjectReference as input and provide a definitive response. As presently implemented the function is ambiguous. If 2 different items exist, each with identical base forms, and one is favorited but the other is not, the function incorrectly returns true for both.

Modifications/Extensions of SKSE Functions[edit | edit source]

Language Enhancements[edit | edit source]

Audio Functions[edit | edit source]

Functions dealing with music and sound:

AI Functions[edit | edit source]

Functions dealing with combat, crime, detection, and AI:

Animation and Graphics Functions[edit | edit source]

Functions dealing with animations or game rendering:

Functions Returning a Reference[edit | edit source]

Functions that return a reference:

Forms[edit | edit source]

Base Object Types[edit | edit source]

Form[edit | edit source]

  • GetMagicEffectDescription, SetMagicEffectDescription - Returns the magic item description of the magic effect, sets the magic item description of the magic effect.
  • GetEditorID - Returns the editor id of a form as a string.

Armor[edit | edit source]

Weapon[edit | edit source]

ObjectReference[edit | edit source]

  • GetGoldValue - Returns value of a specific object, including increased value due to smithing or enchantment. Form.GetGoldValue returns only the value of unenhanced base forms.
  • GetMotionType - Returns the havok motion type int of an object. Counterpart to the existing SetMotionType function. A GetAllowActivate function might also be useful to see if the user can interact with the object (or would that be redundant with the IsActivationBlocked function?)
  • GetStackedItemCount - If the ObjectReference is a single dropped item, returns 1. If the ObjectReference is several of an item "clumped"/"stacked" into one world object, returns the number of items. If the ObjectReference isn't an item, returns 0.
  • OnItemDropped - Fires when the item is dropped from a player's inventory and can be safely operated on, but not when it is removed from the inventory through some other means.
    • If you only need to detect dropping and not container transfers, then this would be safer than OnContainerChanged, which can cause stack dumping when applied to many objects. It would also be more reliable than OnLoad, which doesn't always fire when it should for newly-dropped items. The only other safe alternative is OnLoad, which for unknown reasons is highly unreliable when dealing with dropped items.
  • GetLightFade, SetLightFade - Modify the Fade value of a Light ObjectReference. Useful for Lights that have been spawned at run-time.
  • GetLightRadius, SetLightRadius - Modify the radius value of a Light ObjectReference. Useful for Lights that have been spawned at run-time.

Perk[edit | edit source]

Furniture[edit | edit source]

  • GetMarkerCount - Returns the number of furniture markers on this Furniture.
  • GetNthMarkerType - Returns the type of the Furniture's nth furniture marker.
    • 0 = Doesn't exist
    • 1 = Sit
    • 2 = Sleep
    • 3 = Lean
  • GetNthMarkerPosition - Returns, as a Float array, the X, Y, and Z coordinates of the Furniture's nth furniture marker.
  • GetNthMarkerHeading - Returns, in degrees, the yaw angle (heading) of the Furniture's nth furniture marker. (Note that in the NIF, these values are radians.)
  • GetNthMarkerEntryPoints - Returns, as a bitmask, the enabled entry points of the Furniture's nth furniture marker (or zero if no entry points are enabled).

Door[edit | edit source]

  • GetTeleportMarkerPosition, GetTeleportMarkerAngles, SetTeleportMarkerPosition, SetTeleportMarkerAngles -- Functions to work with doors' teleport markers

Cell[edit | edit source]

  • GetNorthAngle, which would return (in degrees) the Z-rotation of any North Marker in the cell, or 0 if there is no North Marker.

Location[edit | edit source]

  • GetCells - Access to cells belonging to a location. Return either as an array or with the GenNum../GetNth.. iteration pattern.
  • GetParentLocation - Return a location's parent location, not just whether two locations share a parent (without returning what that parent is).

Faction[edit | edit source]

Ammo[edit | edit source]

  • IsBolt - Returns true if the ammo is a crossbow bolt
    • Added to SKSE 1.7.01

Class[edit | edit source]

  • GetWeight(String actorValue) - Return the weight applied to the provided actor value (skill or attribute) for the given class.

Misc[edit | edit source]

GetNavmeshPosition/Angle, SetNavmeshPosition/Angle, PlaceNavmeshAtMe - manipulate navmesh refs as if they were static objects

ObjectReferences[edit | edit source]

Actors[edit | edit source]

  • GetEquippedAmmo - Checks to see what ammo the actor has equipped for a bow or crossbow. Aim of function is to be used as an object reference.
  • IsAmmoEquipped - Checks if the actor has equipped an ammunition of some sort for a projectile weapon.
  • CanPathTo - Checks if the actor can build a path to the desired destination. Similarily to how PathToReference - Actor returns false in case it isn't able, but without actually making the actor go anywhere.

Misc[edit | edit source]

  • GetEffectShader() - Returns the shader attached to the reference.

Aliases[edit | edit source]

ReferenceAliases[edit | edit source]

LocationAliases[edit | edit source]

UI Functions[edit | edit source]

Other Functions[edit | edit source]

Functions which don't fit into other categories:

Game[edit | edit source]

  • GetFavorites - A means to iterate through favorited items/spells. Return specific ObjectReference rather than Form when possible. Return either as an array or with GenNum../GetNth.. iteration pattern.
  • IsLoading - Return true when the game is going through a loading screen. Essentially, a Papyrus version of IsPlayerMovingIntoNewSpace that can be used anywhere else than in package fragments.
  • In fact, an OnLoadingScreen event would probably be a much handier addition.
  • ReleasePlayerGrabbedRef - Forcibly drops the ObjectReference that a player has grabbed (Z-keyed).

Math[edit | edit source]

StringUtils[edit | edit source]

  • StringReplace - Replace characters/substrings in an existing string.
StringReplace(String sOriginal, String sOldSubstr, String sNewSubstr, int Flags)
  • Flags for case sensitivity, etc.
  • Easy enough to do this in Papyrus, but could be more efficient in C++.

Misc[edit | edit source]

  • IIf - Simple in-line If statement. A concise way to replace 5 lines of code with one statement.
 IIf (expr, truepart, falsepart)
May have to implement as IffString, IffFloat, etc. since Papyrus has no overloading.
 String Function IIfString (bool bTestExpr, String sValIfTrue, String sValIfFalse)
 Float Function IIfFloat (bool bTestExpr, Float fValIfTrue, Float fValIfFalse)
This may implement better as a language enhancement.
  • A MoverTask counterpart to SpawnerTask, which would move existing objects instead of spawning new ones.

Questionable Requests[edit | edit source]

"Questionable" is not meant to be demeaning. These requests may be unclear, or it may be possible to implement them using existing functions, thus they receive lower priority. If you disagree with a function's classification here, discuss it on the TALK page:

Requests that can be implemented with current functions[edit | edit source]

Unclear requests[edit | edit source]

Highly Unlikely Requests[edit | edit source]

  • Form.Add/RemoveKeyword() - Would involve writing own code to edit the size of the keyword refs on the object, and would be a big project with the possibility of bugs creeping into the code. Could be replaced with a function that substitutes one keyword or more for another one (ReplaceKeyword(Form theFormToChange, Keyword toRemove, Keyword toAdd)) from the mod DienesTools http://www.nexusmods.com/skyrim/mods/54325/? or possibly create a function to set all of a Form's keywords to those of another Form.