Difference between revisions of "GetEffectiveSkill"
Jump to navigation
Jump to search
imported>Low Post (Added OBSE_Elys_Uncapper removing the cap at 100) |
imported>Low Post m (added a required Eval) |
||
Line 31: | Line 31: | ||
if value < 0 | if value < 0 | ||
let callerSkill := 0 | let callerSkill := 0 | ||
elseif value > 100 && !IsPluginInstalled "OBSE_Elys_Uncapper" | elseif Eval value > 100 && !IsPluginInstalled "OBSE_Elys_Uncapper" | ||
if callerSkill < 100 | if callerSkill < 100 | ||
let callerSkill := 100 | let callerSkill := 100 |
Revision as of 12:40, 20 March 2011
A User Function for use with Oblivion Script Extender
Syntax:
(effectiveSkill:short) reference.Call GetEffectiveSkill skillAVC:short
Returns the current effective value, adjusted by Luck, of the requested skill on the calling actor. The skill is passed as an Actor Value Code; see GetActorValueC.
Notes
- This function must be called on a reference (Ref.call <function>)
- Luck cannot increase a skill above 100. However, skills can exceed 100 for other reasons. This is correctly handled.
- If the value given for SkillAVCode does not correspond to a skill, this function returns -1. Skills cannot be negative, so this is a recognizable error flag.
Code
ScN GetEffectiveSkill short skillAVC ; Passed from calling script ref caller ; The calling reference short callerSkill ; Skill as reported by GetAVC float value ; Temporary working variable begin Function {skillAVC} if (skillAVC < 12) || (skillAVC > 32) SetFunctionValue -1 else let caller := GetSelf let callerSkill := caller.GetAVC skillAVC let value := caller.GetAV Luck let value *= GetGameSetting iActorLuckSkillMult let value += GetGameSetting iActorLuckSkillBase let value += callerSkill if value < 0 let callerSkill := 0 elseif Eval value > 100 && !IsPluginInstalled "OBSE_Elys_Uncapper" if callerSkill < 100 let callerSkill := 100 endif ; Note: if the unmodified skill is over 100, it remains unmodified! else let callerSkill := floor value endif SetFunctionValue callerSkill endif end
See Also