GetEffectiveSkill
Jump to navigation
Jump to search
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[edit | edit source]
- 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[edit | edit source]
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 fActorLuckSkillMult 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[edit | edit source]