Difference between revisions of "User talk:Lisselli"
Jump to navigation
Jump to search
imported>Lisselli |
imported>Lisselli m |
||
Line 1: | Line 1: | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
Function SetActorValueCap(Actor akActor, String asValueName, Float afValueCap = 100.0) | |||
; Store the base and current value. | |||
Float BaseValue = akActor.GetBaseActorValue(asValueName) | |||
Float CurrentValue = akActor.GetActorValue(asValueName) | |||
; Cap default is 100. If checking for attributes, adjust the desired cap accordingly. | |||
; Check if the current value is over the cap. | |||
if (BaseValue <= afValueCap && CurrentValue > afValueCap) | |||
;Unless the base is also over the cap, we\ll assume it\s not. | |||
akActor.ForceActorValue(asValueName, afValueCap) | |||
elseif BaseValue > afValueCap && CurrentValue > BaseValue | |||
; bring the base and current back down to the cap. | |||
BaseValue = BaseValue - (BaseValue - afValueCap) | |||
akActor.SetActorValue(asValueName, BaseValue) | |||
akActor.ForceActorValue(asValueName, afValueCap) | |||
else | |||
return | |||
endif | |||
EndFunction | |||
EndFunction | |||
</source> | </source> |
Revision as of 02:44, 11 May 2017
Function SetActorValueCap(Actor akActor, String asValueName, Float afValueCap = 100.0)
; Store the base and current value.
Float BaseValue = akActor.GetBaseActorValue(asValueName)
Float CurrentValue = akActor.GetActorValue(asValueName)
; Cap default is 100. If checking for attributes, adjust the desired cap accordingly.
; Check if the current value is over the cap.
if (BaseValue <= afValueCap && CurrentValue > afValueCap)
;Unless the base is also over the cap, we\ll assume it\s not.
akActor.ForceActorValue(asValueName, afValueCap)
elseif BaseValue > afValueCap && CurrentValue > BaseValue
; bring the base and current back down to the cap.
BaseValue = BaseValue - (BaseValue - afValueCap)
akActor.SetActorValue(asValueName, BaseValue)
akActor.ForceActorValue(asValueName, afValueCap)
else
return
endif
EndFunction