240 lines
8.1 KiB
Plaintext
240 lines
8.1 KiB
Plaintext
Scriptname _00E_Class_PerkScript extends ObjectReference
|
|
|
|
Import Game
|
|
|
|
;=====================================================================================
|
|
; EVENTS
|
|
;=====================================================================================
|
|
|
|
Event onActivate(ObjectReference akActionRef)
|
|
|
|
int iButton
|
|
|
|
iButton = __Config_DisplayMessage.Show()
|
|
If __Config_MultipleLevelsConfirm
|
|
__Config_MultipleLevels=true
|
|
EndIf
|
|
If (__Config_MultipleLevels) && !(__Config_MultipleLevelsTwoLevels)
|
|
If iButton < 3
|
|
If (__Config_TeachesTalent)
|
|
TeachTalent()
|
|
Elseif !(__Config_TeachesTalent)
|
|
TeachPerk()
|
|
EndIf
|
|
TalentPoints.SetValue(TalentPoints.GetValueInt() - 1)
|
|
PlayerREF.SetAV("dragonsouls", TalentPoints.GetValueInt())
|
|
PlayVisuals()
|
|
EndIf
|
|
|
|
ElseIf (__Config_MultipleLevels) && (__Config_MultipleLevelsTwoLevels)
|
|
If iButton < 2
|
|
TeachPerk()
|
|
TalentPoints.SetValue(TalentPoints.GetValueInt() - 1)
|
|
PlayerREF.SetAV("dragonsouls", TalentPoints.GetValueInt())
|
|
PlayVisuals()
|
|
EndIf
|
|
|
|
Elseif !__Config_MultipleLevels
|
|
If iButton == 0
|
|
PlayerREF.AddPerk(__Config_PerkToTeach1)
|
|
If __Config_QuestToStart != None
|
|
__Config_QuestToStart.Start()
|
|
EndIf
|
|
If ( AdditionalPerk )
|
|
PlayerREF.AddPerk(AdditionalPerk)
|
|
EndIf
|
|
If sendModEventOnUnlock
|
|
SendModEvent(modEventName)
|
|
Endif
|
|
|
|
TalentPoints.SetValue(TalentPoints.GetValueInt() - 1)
|
|
PlayerREF.SetAV("dragonsouls", TalentPoints.GetValueInt())
|
|
PlayVisuals()
|
|
EndIf
|
|
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
Function TeachPerk()
|
|
|
|
if !(PlayerREF.HasPerk(__Config_PerkToTeach1))
|
|
PlayerREF.AddPerk(__Config_PerkToTeach1)
|
|
If __Config_QuestToStart != None
|
|
__Config_QuestToStart.start()
|
|
EndIf
|
|
if sendModEventOnUnlock
|
|
SendModEvent(modEventName)
|
|
Endif
|
|
if ( AdditionalPerk )
|
|
PlayerREF.AddPerk(AdditionalPerk)
|
|
endif
|
|
elseif (PlayerREF.HasPerk(__Config_PerkToTeach1)) && !(PlayerREF.HasPerk(__Config_PerkToTeach2))
|
|
PlayerREF.AddPerk(__Config_PerkToTeach2)
|
|
else
|
|
PlayerREF.AddPerk(__Config_PerkToTeach3)
|
|
endif
|
|
EndFunction
|
|
|
|
Function TeachTalent()
|
|
|
|
if !(Game.IsWordUnlocked(__Config_WordToTeach1))
|
|
PlayerREF.AddShout(__Config_TalentToTeach)
|
|
WordToTeach = __Config_WordToTeach1
|
|
PlayerREF.AddPerk(__Config_PerkToTeach1)
|
|
If __Config_QuestToStart != None
|
|
__Config_QuestToStart.start()
|
|
EndIf
|
|
if sendModEventOnUnlock
|
|
SendModEvent(modEventName)
|
|
Endif
|
|
elseif (Game.IsWordUnlocked(__Config_WordToTeach1)) && !(Game.IsWordUnlocked(__Config_WordToTeach2))
|
|
WordToTeach = __Config_WordToTeach2
|
|
PlayerREF.AddPerk(__Config_PerkToTeach2)
|
|
else
|
|
WordToTeach = __Config_WordToTeach3
|
|
PlayerREF.AddPerk(__Config_PerkToTeach3)
|
|
endif
|
|
Game.UnlockWord(WordToTeach)
|
|
Game.TeachWord(WordToTeach)
|
|
SetRecoveryTime(WordToTeach)
|
|
|
|
EndFunction
|
|
|
|
Function SetRecoveryTime(WordOfPower WordToTeach)
|
|
{This function handles the issue of cooldowns not depending on the value in the CK but on the duration the player presses the [Shout] key on his keyboard.}
|
|
|
|
If WordToTeach == __Config_WordToTeach2
|
|
__Config_TalentToTeach.SetNthRecoveryTime(0, fRecoveryTime02)
|
|
__Config_TalentToTeach.SetNthRecoveryTime(1, fRecoveryTime02)
|
|
ElseIf WordToTeach == __Config_WordToTeach3
|
|
__Config_TalentToTeach.SetNthRecoveryTime(0, fRecoveryTime03)
|
|
__Config_TalentToTeach.SetNthRecoveryTime(1, fRecoveryTime03)
|
|
__Config_TalentToTeach.SetNthRecoveryTime(2, fRecoveryTime03)
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function PlayVisuals()
|
|
|
|
;Fix for ERB-1355, somehow _00E_TalentpointsRemaining was not filled in that save game on all perk activators
|
|
If _00E_TalentpointsRemaining == None
|
|
_00E_TalentpointsRemaining = Game.GetFormFromFile(0x000431FB, "Skyrim.esm") as Message
|
|
EndIf
|
|
|
|
_00E_TalentpointsRemaining.Show(TalentPoints.GetValueInt() as Int)
|
|
|
|
ObjectReference MemoryPoint = Self.GetLinkedRef()
|
|
MAGConjureImpact.Play(PlayerREF)
|
|
MemoryPoint.PlayAnimation("PlayAnim02")
|
|
if( MemoryPoint.GetLinkedRef(TestLine) )
|
|
MemoryPoint.GetLinkedRef(TestLine).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine01) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine01).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine02) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine02).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine03) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine03).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine04) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine04).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine05) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine05).PlayAnimation("Unlock")
|
|
endif
|
|
if( MemoryPoint.GetLinkedRef(__PerkLine06) )
|
|
MemoryPoint.GetLinkedRef(__PerkLine06).PlayAnimation("Unlock")
|
|
endif
|
|
|
|
Sound unlockSound = Game.GetForm(0x0003A1E7) as Sound
|
|
|
|
unlockSound.Play(PlayerREF)
|
|
|
|
MAGDragonPowerAbsorbManEffect.Play(PlayerREF, 8 , MemoryPoint)
|
|
_00E_UnlockClassIMOD.Apply()
|
|
Utility.Wait(0.1)
|
|
_00E_Class_MemoryAbsorbFXS.Play(playerREF)
|
|
Utility.Wait(3)
|
|
_00E_Class_MemoryAbsorbFXS.Stop(playerREF)
|
|
Utility.Wait(2)
|
|
MAGDragonPowerAbsorbManEffect.Stop(PlayerREF)
|
|
|
|
EndFunction
|
|
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
bool Property __Config_bValue01 = False Auto
|
|
{Whether the talent this perk teaches needs one value (for example, magnitude). Usually true.}
|
|
|
|
bool Property __Config_bValue02 = False Auto
|
|
{Whether the talent this perk teaches needs a second value (for example, duration).}
|
|
|
|
bool Property __Config_bValue03 = False Auto
|
|
{Whether the talent this perk teaches needs third value (for example, distance).}
|
|
|
|
bool Property sendModEventOnUnlock = False Auto
|
|
String Property modEventName = "" Auto
|
|
|
|
bool Property __Config_MultipleLevels Auto
|
|
{Does this perk have multiple levels to teach? ALWAYS true for Talents! Max: 3}
|
|
bool Property __Config_MultipleLevelsTwoLevels Auto
|
|
{Does this multiple level perk only have two two ranks?}
|
|
bool Property __Config_TeachesTalent Auto
|
|
{Does this perk/memory teach a talent?}
|
|
float Property fRecoveryTime02 Auto
|
|
{Set this to the cooldown of the second talent.}
|
|
float Property fRecoveryTime03 Auto
|
|
{Set this to the cooldown of the third talent.}
|
|
Message Property __Config_DisplayMessage Auto
|
|
{The corresponding MessageBox to display when this perk is selected}
|
|
Perk Property __Config_PerkToTeach1 Auto
|
|
{Perk/First rank perk this memory teaches. Always fill!}
|
|
Perk Property __Config_PerkToTeach2 Auto
|
|
{Second rank of the perk this memory star teaches}
|
|
Perk Property __Config_PerkToTeach3 Auto
|
|
{Third rank of the perk this memory star teaches}
|
|
Perk Property AdditionalPerk Auto
|
|
Shout Property __Config_TalentToTeach Auto
|
|
{Talent this perk teaches. Leave empty if this perk doesn't teach a talent.}
|
|
Quest Property __Config_QuestToStart = None Auto
|
|
{When the first perk is added to the player, this quest is started, too}
|
|
|
|
WordOfPower Property __Config_WordToTeach1 Auto
|
|
{1st level of Talent this perk/memory teaches. Leave empty if this perk doesn't teach a talent.}
|
|
WordOfPower Property __Config_WordToTeach2 Auto
|
|
{2nd level of Talent this perk/memory teaches. Leave empty if this perk doesn't teach a talent.}
|
|
WordOfPower Property __Config_WordToTeach3 Auto
|
|
{3rd of Talent this perk/memory teaches. Leave empty if this perk doesn't teach a talent.}
|
|
WordOfPower Property WordToTeach Auto Hidden
|
|
|
|
Keyword Property TestLine Auto
|
|
Keyword Property __PerkLine01 Auto
|
|
Keyword Property __PerkLine02 Auto
|
|
Keyword Property __PerkLine03 Auto
|
|
Keyword Property __PerkLine04 Auto
|
|
Keyword Property __PerkLine05 Auto
|
|
Keyword Property __PerkLine06 Auto
|
|
|
|
Message Property _00E_TalentpointsRemaining Auto
|
|
|
|
GlobalVariable Property TalentPoints Auto
|
|
VisualEffect Property MAGDragonPowerAbsorbManEffect Auto
|
|
EffectShader Property _00E_Class_MemoryAbsorbFXS Auto
|
|
|
|
ImagespaceModifier Property _00E_UnlockClassIMOD Auto
|
|
|
|
Sound Property MAGConjureImpact Auto
|
|
|
|
Actor Property PlayerREF Auto
|
|
|
|
bool Property __Config_MultipleLevelsConfirm Auto |